@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,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),q=require("react"),pe=require("./components/ActivityItem.cjs.js"),ge=require("./components/CommentInput/CommentInput.cjs.js"),E=require("./Feed.styled.cjs.js"),he=require("./hooks/useCommentMutations.cjs.js"),xe=require("./hooks/useTransformActivities.cjs.js"),ye=require("../../../../node_modules/react-intersection-observer/dist/index.cjs.js"),fe=require("./hooks/useSaveScrollPos.cjs.js"),ve=require("./hooks/useScrollOnInputOpen.cjs.js"),Ce=require("./feedHelpers.cjs.js");require("@ynput/ayon-react-components");const ke=require("clsx"),Ee=require("./hooks/useScrollToHighlighted.cjs.js"),we=require("./components/FileUploadPreview/FileUploadPreview.cjs.js"),Fe=require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const x=require("./context/FeedContext.cjs.js");require("../../context/RemoteModulesContext.cjs.js");const Re=require("../../context/DetailsPanelContext.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");const je=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("lodash");require("react-toastify");require("react-redux");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("uuid");require("../../util/pubsub.cjs.js");require("../../context/PowerpackContextInstance.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");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");const Ie=require("./helpers/mergeAnnotationAttachments.cjs.js"),Me=require("../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js"),be=require("./hooks/useLastVersionReview.cjs.js"),Pe=30,Ae=[{id:"comments",tooltip:"Comments",icon:"chat"},{id:"checklists",tooltip:"Checklists",icon:"checklist"},{id:"versions",tooltip:"Published versions",icon:"layers"},{id:"updates",tooltip:"Entity updates",icon:"arrow_circle_right"}],Ne=({disabled:H,readOnly:B,statuses:W=[],entityListId:U,isSlideOut:G,versionReview:w=!1})=>{const{projectName:n,entities:l,entityType:m,editingId:F,projectInfo:R,setEditingId:j,userName:I,activitiesData:y,isLoadingNew:u,isLoadingNextPage:M,loadNextPage:d,hasNextPage:Q,users:z,feedFilter:a,setFeedFilter:J}=x.useFeedContext(),{openSlideOut:K,highlightedActivities:f,setHighlightedActivities:X,onOpenImage:Y,setFeedAnnotations:b,user:P}=Re.useDetailsPanelContext(),Z=a.conditions?.some(e=>"key"in e&&e.key==="versions"&&e.value===!0),$=a.conditions?.some(e=>"key"in e&&["comments","checklists","versions","updates"].includes(e.key)&&e.value===!0),A=a.conditions?.some(e=>"key"in e&&(e.key==="comments"||e.key==="checklists")&&e.value===!0),{data:N,isLoading:ee}=je.useGetMyProjectPermissionsQuery({projectName:n},{skip:!n}),re=!P.data?.isManager&&!P.data?.isAdmin&&!ee&&N?.activities?.enabled&&!N?.activities?.activities?.includes("comment")||$&&!A,p=q.useMemo(()=>Ie(y),[y]);q.useEffect(()=>{p.length||b([]);const e=p.map(r=>r.activityData?.annotations?.map(i=>({...i,activityId:r.activityId}))).filter(Boolean).flat();b(e)},[p]);const g=xe.default(p,z,R,m,I,a),c=q.useRef(null);ve({feedRef:c,isInputOpen:F===x.FEED_NEW_COMMENT,height:93}),fe({entities:l,feedRef:c,filter:a,disabled:!!f.length,isLoading:u}),Ee({feedRef:c,highlighted:f,isLoading:u||M,loadNextPage:d,hasNextPage:!!d,activities:y});const{submitComment:L,updateComment:O,deleteComment:ie,submitReview:T,isSaving:te}=he({projectName:n,entityType:m,entities:l,filter:a,entityListId:U}),se=q.useCallback(async(e,r=[],i={})=>{await L(e,r,i),c.current&&c.current.scrollTo({top:0})},[L,c]),ne=q.useCallback(async e=>{await T(e)},[T]),oe=(e,r)=>{const i=e?.target;if(!i||!r)return console.log("no target or activity");const t=i.checked,o=t?"[ ]":"[x]",qe=t?"[x]":"[ ]",{body:h}=r,S=Array.from(i.closest(".comment-body")?.querySelectorAll(".task-list-item")||[]).findIndex(k=>k===i.closest("li"));let _=S;(h.match(/\[.\]/g)||[]).forEach((k,me)=>{k!==o&&me<S&&_--});const D=[];let v=-1;for(;(v=h.indexOf(o,v+1))>-1;)D.push(v);const C=D[_];if(C===void 0)return;const de=C+o.length,V=h.slice(0,C)+qe+h.slice(de);V&&O(r,V,r.files)},ue=e=>{const{entityId:r,entityType:i,activityId:t}=e;if(!i||!["version","task","folder"].includes(i))return console.log("Entity type not supported yet");if(!r||!i||!n)return console.log("No entity id or type found");K({entityId:r,entityType:i,projectName:n}),X([t])},ae=({index:e,activityId:r})=>{const i=Object.values(g).reverse().filter(t=>t.activityType=="comment").map(t=>({id:t.activityId,files:t.files.filter(o=>we.isFilePreviewable(o.mime,o.ext))})).filter(t=>t.files.length>0);Y?.({files:i,activityId:r,index:e,projectName:n})},ce=q.useMemo(()=>Ce.getLoadingPlaceholders(10),[]),le=be.useLastVersionReview({projectName:n,enabled:w,entityIds:l.map(e=>e.id),activities:g,loadingActivities:u,userName:I});return s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:s.jsxRuntimeExports.jsxs(E.FeedContainer,{className:"feed",children:[void 0,s.jsxRuntimeExports.jsx(Me,{label:"Activity Feed",filters:Ae,currentFilter:a,onFilterChange:J,isLoading:u}),s.jsxRuntimeExports.jsxs(E.FeedContent,{ref:c,className:ke({loading:u},"no-shimmer"),children:[u?ce:g.map(e=>s.jsxRuntimeExports.jsx(pe,{activity:e,onCheckChange:oe,onDelete:ie,onUpdate:async(r,i,t,o)=>await O(e,r,i,o),projectInfo:R,projectName:n,entityType:m,onReferenceClick:ue,createdAts:l.map(r=>r.createdAt),onFileExpand:ae,showOrigin:l.length>1,filter:a,editProps:{projectName:n,entities:l,entityType:m},isHighlighted:f.includes(e.activityId),readOnly:B,statuses:W,isSlideOut:G},e.activityId)),g.length===0&&Z&&!A&&!u&&s.jsxRuntimeExports.jsx(Fe.EmptyPlaceholder,{message:"No versions published yet",icon:"layers"}),Q&&d&&s.jsxRuntimeExports.jsx(ye.InView,{root:c.current,onChange:e=>e&&d(),rootMargin:"400px 0px 0px 0px",children:s.jsxRuntimeExports.jsx(E.LoadMore,{style:{height:0},onClick:()=>d(),children:M?"Loading more...":"Click to load more"})})]}),!re&&s.jsxRuntimeExports.jsx(ge.default,{initValue:null,onSubmit:se,isOpen:F===x.FEED_NEW_COMMENT,onClose:()=>j(null),onOpen:()=>j(x.FEED_NEW_COMMENT),disabled:H,isLoading:u||!l.length||te,versionReview:w,lastOwnVersionReview:le,onReview:ne})]})})};exports.Feed=Ne;exports.activitiesLast=Pe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),q=require("react"),ge=require("./components/ActivityItem.cjs.js"),he=require("./components/CommentInput/CommentInput.cjs.js"),E=require("./Feed.styled.cjs.js"),xe=require("./hooks/useCommentMutations.cjs.js"),ye=require("./hooks/useTransformActivities.cjs.js"),fe=require("../../../../node_modules/react-intersection-observer/dist/index.cjs.js"),ve=require("./hooks/useSaveScrollPos.cjs.js"),Ce=require("./hooks/useScrollOnInputOpen.cjs.js"),ke=require("./feedHelpers.cjs.js");require("@ynput/ayon-react-components");const Ee=require("clsx"),we=require("./hooks/useScrollToHighlighted.cjs.js"),Fe=require("./components/FileUploadPreview/FileUploadPreview.cjs.js"),Re=require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const x=require("./context/FeedContext.cjs.js");require("../../context/RemoteModulesContext.cjs.js");const je=require("../../context/DetailsPanelContext.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");const Ie=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("lodash");require("react-toastify");require("react-redux");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("uuid");require("../../util/pubsub.cjs.js");require("../../context/PowerpackContextInstance.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");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");const Me=require("./helpers/mergeAnnotationAttachments.cjs.js"),be=require("../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js"),Pe=require("./hooks/useLastVersionReview.cjs.js"),Ae=30,Ne=[{id:"comments",tooltip:"Comments",icon:"chat"},{id:"checklists",tooltip:"Checklists",icon:"checklist"},{id:"versions",tooltip:"Published versions",icon:"layers"},{id:"updates",tooltip:"Entity updates",icon:"arrow_circle_right"}],Le=({disabled:H,readOnly:B,statuses:W=[],entityListId:G,isSlideOut:U,versionReview:w=!1})=>{const{projectName:n,entities:l,entityType:m,editingId:F,projectInfo:R,setEditingId:j,userName:I,activitiesData:y,isLoadingNew:u,isLoadingNextPage:M,loadNextPage:d,hasNextPage:Q,users:z,feedFilter:a,setFeedFilter:J,isGuest:K}=x.useFeedContext(),{openSlideOut:X,highlightedActivities:f,setHighlightedActivities:Y,onOpenImage:Z,setFeedAnnotations:b,user:P}=je.useDetailsPanelContext(),$=a.conditions?.some(e=>"key"in e&&e.key==="versions"&&e.value===!0),ee=a.conditions?.some(e=>"key"in e&&["comments","checklists","versions","updates"].includes(e.key)&&e.value===!0),A=a.conditions?.some(e=>"key"in e&&(e.key==="comments"||e.key==="checklists")&&e.value===!0),{data:N,isLoading:re}=Ie.useGetMyProjectPermissionsQuery({projectName:n},{skip:!n}),ie=!P.data?.isManager&&!P.data?.isAdmin&&!re&&N?.activities?.enabled&&!N?.activities?.activities?.includes("comment")||ee&&!A,p=q.useMemo(()=>Me(y),[y]);q.useEffect(()=>{p.length||b([]);const e=p.map(r=>r.activityData?.annotations?.map(i=>({...i,activityId:r.activityId}))).filter(Boolean).flat();b(e)},[p]);const g=ye.default(p,z,R,m,I,a),c=q.useRef(null);Ce({feedRef:c,isInputOpen:F===x.FEED_NEW_COMMENT,height:93}),ve({entities:l,feedRef:c,filter:a,disabled:!!f.length,isLoading:u}),we({feedRef:c,highlighted:f,isLoading:u||M,loadNextPage:d,hasNextPage:!!d,activities:y});const{submitComment:L,updateComment:O,deleteComment:te,submitReview:T,isSaving:se}=xe({projectName:n,entityType:m,entities:l,filter:a,entityListId:G}),ne=q.useCallback(async(e,r=[],i={})=>{await L(e,r,i),c.current&&c.current.scrollTo({top:0})},[L,c]),oe=q.useCallback(async e=>{await T(e)},[T]),ue=(e,r)=>{const i=e?.target;if(!i||!r)return console.log("no target or activity");const t=i.checked,o=t?"[ ]":"[x]",de=t?"[x]":"[ ]",{body:h}=r,S=Array.from(i.closest(".comment-body")?.querySelectorAll(".task-list-item")||[]).findIndex(k=>k===i.closest("li"));let _=S;(h.match(/\[.\]/g)||[]).forEach((k,pe)=>{k!==o&&pe<S&&_--});const D=[];let v=-1;for(;(v=h.indexOf(o,v+1))>-1;)D.push(v);const C=D[_];if(C===void 0)return;const me=C+o.length,V=h.slice(0,C)+de+h.slice(me);V&&O(r,V,r.files)},ae=e=>{const{entityId:r,entityType:i,activityId:t}=e;if(!i||!["version","task","folder"].includes(i))return console.log("Entity type not supported yet");if(!r||!i||!n)return console.log("No entity id or type found");X({entityId:r,entityType:i,projectName:n}),Y([t])},ce=({index:e,activityId:r})=>{const i=Object.values(g).reverse().filter(t=>t.activityType=="comment").map(t=>({id:t.activityId,files:t.files.filter(o=>Fe.isFilePreviewable(o.mime,o.ext))})).filter(t=>t.files.length>0);Z?.({files:i,activityId:r,index:e,projectName:n})},le=q.useMemo(()=>ke.getLoadingPlaceholders(10),[]),qe=Pe.useLastVersionReview({projectName:n,enabled:w,entityIds:l.map(e=>e.id),activities:g,loadingActivities:u,userName:I});return s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:s.jsxRuntimeExports.jsxs(E.FeedContainer,{className:"feed",children:[void 0,s.jsxRuntimeExports.jsx(be,{label:"Activity Feed",filters:Ne,currentFilter:a,onFilterChange:J,isLoading:u}),s.jsxRuntimeExports.jsxs(E.FeedContent,{ref:c,className:Ee({loading:u},"no-shimmer"),children:[u?le:g.map(e=>s.jsxRuntimeExports.jsx(ge,{activity:e,onCheckChange:ue,onDelete:te,onUpdate:async(r,i,t,o)=>await O(e,r,i,o),projectInfo:R,projectName:n,entityType:m,onReferenceClick:ae,createdAts:l.map(r=>r.createdAt),onFileExpand:ce,showOrigin:l.length>1,filter:a,editProps:{projectName:n,entities:l,entityType:m},isHighlighted:f.includes(e.activityId),readOnly:B,statuses:W,isSlideOut:U,isGuest:K},e.activityId)),g.length===0&&$&&!A&&!u&&s.jsxRuntimeExports.jsx(Re.EmptyPlaceholder,{message:"No versions published yet",icon:"layers"}),Q&&d&&s.jsxRuntimeExports.jsx(fe.InView,{root:c.current,onChange:e=>e&&d(),rootMargin:"400px 0px 0px 0px",children:s.jsxRuntimeExports.jsx(E.LoadMore,{style:{height:0},onClick:()=>d(),children:M?"Loading more...":"Click to load more"})})]}),!ie&&s.jsxRuntimeExports.jsx(he,{initValue:null,onSubmit:ne,isOpen:F===x.FEED_NEW_COMMENT,onClose:()=>j(null),onOpen:()=>j(x.FEED_NEW_COMMENT),disabled:H,isLoading:u||!l.length||se,versionReview:w,lastOwnVersionReview:qe,onReview:oe})]})})};exports.Feed=Le;exports.activitiesLast=Ae;
|
|
2
2
|
//# sourceMappingURL=Feed.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Feed.cjs.js","sources":["../../../../../src/containers/Feed/Feed.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from 'react'\nimport ActivityItem from './components/ActivityItem'\nimport CommentInput, { VersionReviewFeedback } from './components/CommentInput/CommentInput'\nimport * as Styled from './Feed.styled'\nimport useCommentMutations, { Activity } from './hooks/useCommentMutations'\nimport useTransformActivities from './hooks/useTransformActivities'\nimport { InView } from 'react-intersection-observer'\nimport useSaveScrollPos from './hooks/useSaveScrollPos'\nimport useScrollOnInputOpen from './hooks/useScrollOnInputOpen'\nimport { getLoadingPlaceholders } from './feedHelpers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport useScrollToHighlighted from './hooks/useScrollToHighlighted'\nimport { isFilePreviewable } from './components/FileUploadPreview/FileUploadPreview'\nimport EmptyPlaceholder from '@shared/components/EmptyPlaceholder'\nimport { useFeedContext, FEED_NEW_COMMENT } from './context/FeedContext'\nimport { Status } from '../ProjectTreeTable/types/project'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { DetailsPanelEntityType, useGetMyProjectPermissionsQuery } from '@shared/api'\nimport mergeAnnotationAttachments from './helpers/mergeAnnotationAttachments'\nimport { SavedAnnotationMetadata } from '.'\nimport TabHeaderAndFilters, {\n FilterItem,\n} from '../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters'\nimport { useLastVersionReview } from './hooks/useLastVersionReview'\n\n// number of activities to get\nexport const activitiesLast = 30\n\nconst feedFilters: FilterItem<string>[] = [\n {\n id: 'comments',\n tooltip: 'Comments',\n icon: 'chat',\n },\n {\n id: 'checklists',\n tooltip: 'Checklists',\n icon: 'checklist',\n },\n {\n id: 'versions',\n tooltip: 'Published versions',\n icon: 'layers',\n },\n {\n id: 'updates',\n tooltip: 'Entity updates',\n icon: 'arrow_circle_right',\n },\n]\n\nexport type FeedProps = {\n disabled?: boolean\n readOnly: boolean\n statuses: Status[]\n entityListId?: string | undefined\n isSlideOut?: boolean\n versionReview?: boolean\n}\n\nexport const Feed = ({\n disabled,\n readOnly,\n statuses = [],\n entityListId,\n isSlideOut,\n versionReview = false,\n}: FeedProps) => {\n const {\n projectName,\n entities,\n entityType,\n editingId,\n projectInfo,\n setEditingId,\n userName,\n activitiesData,\n isLoadingNew,\n isLoadingNextPage,\n loadNextPage,\n hasNextPage,\n users,\n feedFilter,\n setFeedFilter,\n } = useFeedContext()\n\n const {\n openSlideOut,\n highlightedActivities,\n setHighlightedActivities,\n onOpenImage,\n setFeedAnnotations,\n user,\n } = useDetailsPanelContext()\n\n const isVersionsFilter = feedFilter.conditions?.some(\n (c) => 'key' in c && c.key === 'versions' && c.value === true,\n )\n const hasActiveFilters = feedFilter.conditions?.some(\n (c) => 'key' in c && ['comments', 'checklists', 'versions', 'updates'].includes(c.key) && c.value === true,\n )\n const hasCommentLikeFilter = feedFilter.conditions?.some(\n (c) => 'key' in c && (c.key === 'comments' || c.key === 'checklists') && c.value === true,\n )\n\n // check activities permission for commenting\n const {\n data: projectPermissions,\n isLoading: isLoadingPermissions,\n } = useGetMyProjectPermissionsQuery(\n { projectName },\n { skip: !projectName },\n )\n const isCommentRestricted =\n !user.data?.isManager &&\n !user.data?.isAdmin &&\n !isLoadingPermissions &&\n projectPermissions?.activities?.enabled &&\n !projectPermissions?.activities?.activities?.includes('comment')\n\n // hide comment input for specific filters or when restricted by permissions\n const hideCommentInput = isCommentRestricted || (hasActiveFilters && !hasCommentLikeFilter)\n\n const activitiesWithMergedAnnotations = useMemo(\n () => mergeAnnotationAttachments(activitiesData),\n [activitiesData],\n )\n\n useEffect(() => {\n if (!activitiesWithMergedAnnotations.length) {\n setFeedAnnotations([])\n }\n\n const annotations = activitiesWithMergedAnnotations\n .map((activity) =>\n activity.activityData?.annotations?.map((a: SavedAnnotationMetadata) => ({\n ...a,\n activityId: activity.activityId,\n })),\n )\n .filter(Boolean)\n .flat()\n\n setFeedAnnotations(annotations)\n }, [activitiesWithMergedAnnotations])\n\n // do any transformation on activities data\n // 1. status change activities, attach status data based on projectName\n // 2. reverse the order\n // 3. is this activity from the current user?\n const transformedActivitiesData = useTransformActivities(\n // @ts-ignore\n activitiesWithMergedAnnotations,\n users,\n projectInfo,\n entityType,\n userName,\n feedFilter,\n ) as any[]\n\n // REFS\n const feedRef = useRef(null)\n // const commentInputRef = useRef(null)\n\n // scroll by height of comment input when it opens or closes\n useScrollOnInputOpen({ feedRef, isInputOpen: editingId === FEED_NEW_COMMENT, height: 93 })\n\n // save scroll position of a feed\n useSaveScrollPos({\n entities,\n feedRef,\n filter: feedFilter,\n disabled: !!highlightedActivities.length,\n isLoading: isLoadingNew,\n })\n // try and scroll to highlightedActivities activity\n useScrollToHighlighted({\n feedRef,\n highlighted: highlightedActivities,\n isLoading: isLoadingNew || isLoadingNextPage,\n loadNextPage,\n hasNextPage: !!loadNextPage,\n activities: activitiesData,\n })\n\n // comment mutations here!\n const {\n submitComment: submitCommentMutation,\n updateComment,\n deleteComment,\n submitReview: submitReviewMutation,\n isSaving,\n } = useCommentMutations({\n projectName,\n entityType: entityType,\n entities,\n filter: feedFilter,\n entityListId,\n })\n\n // wrap submitComment to scroll to bottom\n const submitComment = useCallback(\n async (value: string, files: any[] = [], data: any = {}) => {\n await submitCommentMutation(value, files, data)\n // scroll to bottom (scrollTop 0 is bottom because of column-reverse)\n if (feedRef.current) {\n ;(feedRef.current as any).scrollTo({ top: 0 })\n }\n },\n [submitCommentMutation, feedRef],\n )\n\n const submitReview = useCallback(async (feedback: VersionReviewFeedback) => {\n await submitReviewMutation(feedback)\n }, [submitReviewMutation])\n\n // When a checkbox is clicked, update the body to add/remove \"x\" in [ ] markdown\n // Then update comment with new body\n const handleCommentChecked = (e: React.ChangeEvent<HTMLInputElement>, activity: Activity) => {\n const target = e?.target\n if (!target || !activity) return console.log('no target or activity')\n\n // the value that it's changing to\n const checked: boolean = target.checked\n const currentMarkdown: string = checked ? '[ ]' : '[x]'\n const newMarkdown: string = checked ? '[x]' : '[ ]'\n\n const { body } = activity\n\n // based on all li elements in the whole className 'comment-body' with className 'task-list-item'\n // find the index of the task that was checked\n const taskIndex: number = Array.from(\n target.closest('.comment-body')?.querySelectorAll('.task-list-item') || [],\n ).findIndex((li: Element) => li === target.closest('li'))\n\n let replaceIndex: number = taskIndex\n\n // count the number of current markdowns in the body\n const allMarkdowns: string[] = body.match(/\\[.\\]/g) || []\n\n allMarkdowns.forEach((markdown: string, index: number) => {\n // does it match the current markdown?\n if (markdown !== currentMarkdown && index < taskIndex) replaceIndex--\n })\n\n // now find the indexes of the current markdown to replace\n const indexesOfCurrentMarkdownInBody: number[] = []\n let index: number = -1\n while ((index = body.indexOf(currentMarkdown, index + 1)) > -1) {\n indexesOfCurrentMarkdownInBody.push(index)\n }\n\n const indexToReplaceInBody: number | undefined = indexesOfCurrentMarkdownInBody[replaceIndex]\n if (indexToReplaceInBody === undefined) return\n\n const endReplaceIndex: number = indexToReplaceInBody + currentMarkdown.length\n\n // replace the current markdown with the new markdown\n const newBody: string =\n body.slice(0, indexToReplaceInBody) + newMarkdown + body.slice(endReplaceIndex)\n\n if (!newBody) return\n\n updateComment(activity, newBody, activity.files)\n }\n\n const handleRefClick = (ref: {\n entityId: string\n entityType: DetailsPanelEntityType\n activityId: string\n }) => {\n const { entityId, entityType, activityId } = ref\n const supportedTypes = ['version', 'task', 'folder']\n\n if (!entityType || !supportedTypes.includes(entityType))\n return console.log('Entity type not supported yet')\n\n if (!entityId || !entityType || !projectName) return console.log('No entity id or type found')\n\n // open the slide out\n openSlideOut({ entityId, entityType, projectName })\n // set highlighted activity\n setHighlightedActivities([activityId])\n }\n\n const handleFileExpand = ({ index, activityId }: { index: number; activityId: string }) => {\n const previewableFiles = Object.values(transformedActivitiesData)\n .reverse()\n .filter((a) => a.activityType == 'comment')\n .map((a) => ({\n id: a.activityId,\n files: a.files.filter((file: any) => isFilePreviewable(file.mime, file.ext)),\n }))\n .filter((a) => a.files.length > 0)\n\n // open image callback\n onOpenImage?.({ files: previewableFiles, activityId, index, projectName })\n }\n\n const loadingPlaceholders = useMemo(() => getLoadingPlaceholders(10), [])\n\n const lastVersionReview = useLastVersionReview({\n projectName,\n enabled: versionReview,\n entityIds: entities.map(e => e.id),\n activities: transformedActivitiesData,\n loadingActivities: isLoadingNew,\n userName,\n })\n\n let warningMessage\n\n return (\n <>\n <Styled.FeedContainer className=\"feed\">\n {warningMessage && (\n <Styled.Warning>\n <Icon icon=\"info\" />\n {warningMessage}\n </Styled.Warning>\n )}\n <TabHeaderAndFilters\n label=\"Activity Feed\"\n filters={feedFilters}\n currentFilter={feedFilter}\n onFilterChange={setFeedFilter}\n isLoading={isLoadingNew}\n />\n <Styled.FeedContent ref={feedRef} className={clsx({ loading: isLoadingNew }, 'no-shimmer')}>\n {isLoadingNew\n ? loadingPlaceholders\n : transformedActivitiesData.map((activity) => (\n <ActivityItem\n key={activity.activityId}\n activity={activity}\n onCheckChange={handleCommentChecked}\n onDelete={deleteComment}\n onUpdate={async (value, files, _refs, data) =>\n await updateComment(activity, value, files, data)\n }\n projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={handleRefClick}\n createdAts={entities.map((e) => e.createdAt)}\n onFileExpand={handleFileExpand}\n showOrigin={entities.length > 1}\n filter={feedFilter}\n editProps={{\n projectName,\n entities: entities,\n entityType,\n }}\n isHighlighted={highlightedActivities.includes(activity.activityId)}\n readOnly={readOnly}\n statuses={statuses}\n isSlideOut={isSlideOut}\n />\n ))}\n {/* message when no versions published */}\n {transformedActivitiesData.length === 0 &&\n isVersionsFilter &&\n !hasCommentLikeFilter &&\n !isLoadingNew && (\n <EmptyPlaceholder message=\"No versions published yet\" icon=\"layers\" />\n )}\n {hasNextPage && loadNextPage && (\n <InView\n root={feedRef.current}\n onChange={(inView) => inView && loadNextPage()}\n rootMargin={'400px 0px 0px 0px'}\n >\n <Styled.LoadMore style={{ height: 0 }} onClick={() => loadNextPage()}>\n {isLoadingNextPage ? 'Loading more...' : 'Click to load more'}\n </Styled.LoadMore>\n </InView>\n )}\n </Styled.FeedContent>\n {!hideCommentInput && (\n <CommentInput\n initValue={null}\n onSubmit={submitComment}\n isOpen={editingId === FEED_NEW_COMMENT}\n onClose={() => setEditingId(null)}\n onOpen={() => setEditingId(FEED_NEW_COMMENT)}\n disabled={disabled}\n isLoading={isLoadingNew || !entities.length || isSaving}\n versionReview={versionReview}\n lastOwnVersionReview={lastVersionReview}\n onReview={submitReview}\n />\n )}\n </Styled.FeedContainer>\n </>\n )\n}\n"],"names":["activitiesLast","feedFilters","Feed","disabled","readOnly","statuses","entityListId","isSlideOut","versionReview","projectName","entities","entityType","editingId","projectInfo","setEditingId","userName","activitiesData","isLoadingNew","isLoadingNextPage","loadNextPage","hasNextPage","users","feedFilter","setFeedFilter","useFeedContext","openSlideOut","highlightedActivities","setHighlightedActivities","onOpenImage","setFeedAnnotations","user","useDetailsPanelContext","isVersionsFilter","c","hasActiveFilters","hasCommentLikeFilter","projectPermissions","isLoadingPermissions","useGetMyProjectPermissionsQuery","hideCommentInput","activitiesWithMergedAnnotations","useMemo","mergeAnnotationAttachments","useEffect","annotations","activity","a","transformedActivitiesData","useTransformActivities","feedRef","useRef","useScrollOnInputOpen","FEED_NEW_COMMENT","useSaveScrollPos","useScrollToHighlighted","submitCommentMutation","updateComment","deleteComment","submitReviewMutation","isSaving","useCommentMutations","submitComment","useCallback","value","files","data","submitReview","feedback","handleCommentChecked","target","checked","currentMarkdown","newMarkdown","body","taskIndex","li","replaceIndex","markdown","index","indexesOfCurrentMarkdownInBody","indexToReplaceInBody","endReplaceIndex","newBody","handleRefClick","ref","entityId","activityId","handleFileExpand","previewableFiles","file","isFilePreviewable","loadingPlaceholders","getLoadingPlaceholders","lastVersionReview","useLastVersionReview","jsxs","Styled.FeedContainer","jsx","TabHeaderAndFilters","Styled.FeedContent","clsx","ActivityItem","_refs","e","EmptyPlaceholder","InView","inView","Styled.LoadMore","CommentInput"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Feed.cjs.js","sources":["../../../../../src/containers/Feed/Feed.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from 'react'\nimport ActivityItem from './components/ActivityItem'\nimport CommentInput from './components/CommentInput/CommentInput'\nimport { VersionReviewFeedback } from './components/CommentInput/types'\nimport * as Styled from './Feed.styled'\nimport useCommentMutations, { Activity } from './hooks/useCommentMutations'\nimport useTransformActivities from './hooks/useTransformActivities'\nimport { InView } from 'react-intersection-observer'\nimport useSaveScrollPos from './hooks/useSaveScrollPos'\nimport useScrollOnInputOpen from './hooks/useScrollOnInputOpen'\nimport { getLoadingPlaceholders } from './feedHelpers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport useScrollToHighlighted from './hooks/useScrollToHighlighted'\nimport { isFilePreviewable } from './components/FileUploadPreview/FileUploadPreview'\nimport EmptyPlaceholder from '@shared/components/EmptyPlaceholder'\nimport { useFeedContext, FEED_NEW_COMMENT } from './context/FeedContext'\nimport { Status } from '../ProjectTreeTable/types/project'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { DetailsPanelEntityType, useGetMyProjectPermissionsQuery } from '@shared/api'\nimport mergeAnnotationAttachments from './helpers/mergeAnnotationAttachments'\nimport { SavedAnnotationMetadata } from '.'\nimport TabHeaderAndFilters, {\n FilterItem,\n} from '../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters'\nimport { useLastVersionReview } from './hooks/useLastVersionReview'\n\n// number of activities to get\nexport const activitiesLast = 30\n\nconst feedFilters: FilterItem<string>[] = [\n {\n id: 'comments',\n tooltip: 'Comments',\n icon: 'chat',\n },\n {\n id: 'checklists',\n tooltip: 'Checklists',\n icon: 'checklist',\n },\n {\n id: 'versions',\n tooltip: 'Published versions',\n icon: 'layers',\n },\n {\n id: 'updates',\n tooltip: 'Entity updates',\n icon: 'arrow_circle_right',\n },\n]\n\nexport type FeedProps = {\n disabled?: boolean\n readOnly: boolean\n statuses: Status[]\n entityListId?: string | undefined\n isSlideOut?: boolean\n versionReview?: boolean\n}\n\nexport const Feed = ({\n disabled,\n readOnly,\n statuses = [],\n entityListId,\n isSlideOut,\n versionReview = false,\n}: FeedProps) => {\n const {\n projectName,\n entities,\n entityType,\n editingId,\n projectInfo,\n setEditingId,\n userName,\n activitiesData,\n isLoadingNew,\n isLoadingNextPage,\n loadNextPage,\n hasNextPage,\n users,\n feedFilter,\n setFeedFilter,\n isGuest,\n } = useFeedContext()\n\n const {\n openSlideOut,\n highlightedActivities,\n setHighlightedActivities,\n onOpenImage,\n setFeedAnnotations,\n user,\n } = useDetailsPanelContext()\n\n const isVersionsFilter = feedFilter.conditions?.some(\n (c) => 'key' in c && c.key === 'versions' && c.value === true,\n )\n const hasActiveFilters = feedFilter.conditions?.some(\n (c) =>\n 'key' in c &&\n ['comments', 'checklists', 'versions', 'updates'].includes(c.key) &&\n c.value === true,\n )\n const hasCommentLikeFilter = feedFilter.conditions?.some(\n (c) => 'key' in c && (c.key === 'comments' || c.key === 'checklists') && c.value === true,\n )\n\n // check activities permission for commenting\n const { data: projectPermissions, isLoading: isLoadingPermissions } =\n useGetMyProjectPermissionsQuery({ projectName }, { skip: !projectName })\n const isCommentRestricted =\n !user.data?.isManager &&\n !user.data?.isAdmin &&\n !isLoadingPermissions &&\n projectPermissions?.activities?.enabled &&\n !projectPermissions?.activities?.activities?.includes('comment')\n\n // hide comment input for specific filters or when restricted by permissions\n const hideCommentInput = isCommentRestricted || (hasActiveFilters && !hasCommentLikeFilter)\n\n const activitiesWithMergedAnnotations = useMemo(\n () => mergeAnnotationAttachments(activitiesData),\n [activitiesData],\n )\n\n useEffect(() => {\n if (!activitiesWithMergedAnnotations.length) {\n setFeedAnnotations([])\n }\n\n const annotations = activitiesWithMergedAnnotations\n .map((activity) =>\n activity.activityData?.annotations?.map((a: SavedAnnotationMetadata) => ({\n ...a,\n activityId: activity.activityId,\n })),\n )\n .filter(Boolean)\n .flat()\n\n setFeedAnnotations(annotations)\n }, [activitiesWithMergedAnnotations])\n\n // do any transformation on activities data\n // 1. status change activities, attach status data based on projectName\n // 2. reverse the order\n // 3. is this activity from the current user?\n const transformedActivitiesData = useTransformActivities(\n // @ts-ignore\n activitiesWithMergedAnnotations,\n users,\n projectInfo,\n entityType,\n userName,\n feedFilter,\n ) as any[]\n\n // REFS\n const feedRef = useRef(null)\n // const commentInputRef = useRef(null)\n\n // scroll by height of comment input when it opens or closes\n useScrollOnInputOpen({ feedRef, isInputOpen: editingId === FEED_NEW_COMMENT, height: 93 })\n\n // save scroll position of a feed\n useSaveScrollPos({\n entities,\n feedRef,\n filter: feedFilter,\n disabled: !!highlightedActivities.length,\n isLoading: isLoadingNew,\n })\n // try and scroll to highlightedActivities activity\n useScrollToHighlighted({\n feedRef,\n highlighted: highlightedActivities,\n isLoading: isLoadingNew || isLoadingNextPage,\n loadNextPage,\n hasNextPage: !!loadNextPage,\n activities: activitiesData,\n })\n\n // comment mutations here!\n const {\n submitComment: submitCommentMutation,\n updateComment,\n deleteComment,\n submitReview: submitReviewMutation,\n isSaving,\n } = useCommentMutations({\n projectName,\n entityType: entityType,\n entities,\n filter: feedFilter,\n entityListId,\n })\n\n // wrap submitComment to scroll to bottom\n const submitComment = useCallback(\n async (value: string, files: any[] = [], data: any = {}) => {\n await submitCommentMutation(value, files, data)\n // scroll to bottom (scrollTop 0 is bottom because of column-reverse)\n if (feedRef.current) {\n ;(feedRef.current as any).scrollTo({ top: 0 })\n }\n },\n [submitCommentMutation, feedRef],\n )\n\n const submitReview = useCallback(\n async (feedback: VersionReviewFeedback) => {\n await submitReviewMutation(feedback)\n },\n [submitReviewMutation],\n )\n\n // When a checkbox is clicked, update the body to add/remove \"x\" in [ ] markdown\n // Then update comment with new body\n const handleCommentChecked = (e: React.ChangeEvent<HTMLInputElement>, activity: Activity) => {\n const target = e?.target\n if (!target || !activity) return console.log('no target or activity')\n\n // the value that it's changing to\n const checked: boolean = target.checked\n const currentMarkdown: string = checked ? '[ ]' : '[x]'\n const newMarkdown: string = checked ? '[x]' : '[ ]'\n\n const { body } = activity\n\n // based on all li elements in the whole className 'comment-body' with className 'task-list-item'\n // find the index of the task that was checked\n const taskIndex: number = Array.from(\n target.closest('.comment-body')?.querySelectorAll('.task-list-item') || [],\n ).findIndex((li: Element) => li === target.closest('li'))\n\n let replaceIndex: number = taskIndex\n\n // count the number of current markdowns in the body\n const allMarkdowns: string[] = body.match(/\\[.\\]/g) || []\n\n allMarkdowns.forEach((markdown: string, index: number) => {\n // does it match the current markdown?\n if (markdown !== currentMarkdown && index < taskIndex) replaceIndex--\n })\n\n // now find the indexes of the current markdown to replace\n const indexesOfCurrentMarkdownInBody: number[] = []\n let index: number = -1\n while ((index = body.indexOf(currentMarkdown, index + 1)) > -1) {\n indexesOfCurrentMarkdownInBody.push(index)\n }\n\n const indexToReplaceInBody: number | undefined = indexesOfCurrentMarkdownInBody[replaceIndex]\n if (indexToReplaceInBody === undefined) return\n\n const endReplaceIndex: number = indexToReplaceInBody + currentMarkdown.length\n\n // replace the current markdown with the new markdown\n const newBody: string =\n body.slice(0, indexToReplaceInBody) + newMarkdown + body.slice(endReplaceIndex)\n\n if (!newBody) return\n\n updateComment(activity, newBody, activity.files)\n }\n\n const handleRefClick = (ref: {\n entityId: string\n entityType: DetailsPanelEntityType\n activityId: string\n }) => {\n const { entityId, entityType, activityId } = ref\n const supportedTypes = ['version', 'task', 'folder']\n\n if (!entityType || !supportedTypes.includes(entityType))\n return console.log('Entity type not supported yet')\n\n if (!entityId || !entityType || !projectName) return console.log('No entity id or type found')\n\n // open the slide out\n openSlideOut({ entityId, entityType, projectName })\n // set highlighted activity\n setHighlightedActivities([activityId])\n }\n\n const handleFileExpand = ({ index, activityId }: { index: number; activityId: string }) => {\n const previewableFiles = Object.values(transformedActivitiesData)\n .reverse()\n .filter((a) => a.activityType == 'comment')\n .map((a) => ({\n id: a.activityId,\n files: a.files.filter((file: any) => isFilePreviewable(file.mime, file.ext)),\n }))\n .filter((a) => a.files.length > 0)\n\n // open image callback\n onOpenImage?.({ files: previewableFiles, activityId, index, projectName })\n }\n\n const loadingPlaceholders = useMemo(() => getLoadingPlaceholders(10), [])\n\n const lastVersionReview = useLastVersionReview({\n projectName,\n enabled: versionReview,\n entityIds: entities.map((e) => e.id),\n activities: transformedActivitiesData,\n loadingActivities: isLoadingNew,\n userName,\n })\n\n let warningMessage\n\n return (\n <>\n <Styled.FeedContainer className=\"feed\">\n {warningMessage && (\n <Styled.Warning>\n <Icon icon=\"info\" />\n {warningMessage}\n </Styled.Warning>\n )}\n <TabHeaderAndFilters\n label=\"Activity Feed\"\n filters={feedFilters}\n currentFilter={feedFilter}\n onFilterChange={setFeedFilter}\n isLoading={isLoadingNew}\n />\n <Styled.FeedContent ref={feedRef} className={clsx({ loading: isLoadingNew }, 'no-shimmer')}>\n {isLoadingNew\n ? loadingPlaceholders\n : transformedActivitiesData.map((activity) => (\n <ActivityItem\n key={activity.activityId}\n activity={activity}\n onCheckChange={handleCommentChecked}\n onDelete={deleteComment}\n onUpdate={async (value, files, _refs, data) =>\n await updateComment(activity, value, files, data)\n }\n projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={handleRefClick}\n createdAts={entities.map((e) => e.createdAt)}\n onFileExpand={handleFileExpand}\n showOrigin={entities.length > 1}\n filter={feedFilter}\n editProps={{\n projectName,\n entities: entities,\n entityType,\n }}\n isHighlighted={highlightedActivities.includes(activity.activityId)}\n readOnly={readOnly}\n statuses={statuses}\n isSlideOut={isSlideOut}\n isGuest={isGuest}\n />\n ))}\n {/* message when no versions published */}\n {transformedActivitiesData.length === 0 &&\n isVersionsFilter &&\n !hasCommentLikeFilter &&\n !isLoadingNew && <EmptyPlaceholder message=\"No versions published yet\" icon=\"layers\" />}\n {hasNextPage && loadNextPage && (\n <InView\n root={feedRef.current}\n onChange={(inView) => inView && loadNextPage()}\n rootMargin={'400px 0px 0px 0px'}\n >\n <Styled.LoadMore style={{ height: 0 }} onClick={() => loadNextPage()}>\n {isLoadingNextPage ? 'Loading more...' : 'Click to load more'}\n </Styled.LoadMore>\n </InView>\n )}\n </Styled.FeedContent>\n {!hideCommentInput && (\n <CommentInput\n initValue={null}\n onSubmit={submitComment}\n isOpen={editingId === FEED_NEW_COMMENT}\n onClose={() => setEditingId(null)}\n onOpen={() => setEditingId(FEED_NEW_COMMENT)}\n disabled={disabled}\n isLoading={isLoadingNew || !entities.length || isSaving}\n versionReview={versionReview}\n lastOwnVersionReview={lastVersionReview}\n onReview={submitReview}\n />\n )}\n </Styled.FeedContainer>\n </>\n )\n}\n"],"names":["activitiesLast","feedFilters","Feed","disabled","readOnly","statuses","entityListId","isSlideOut","versionReview","projectName","entities","entityType","editingId","projectInfo","setEditingId","userName","activitiesData","isLoadingNew","isLoadingNextPage","loadNextPage","hasNextPage","users","feedFilter","setFeedFilter","isGuest","useFeedContext","openSlideOut","highlightedActivities","setHighlightedActivities","onOpenImage","setFeedAnnotations","user","useDetailsPanelContext","isVersionsFilter","c","hasActiveFilters","hasCommentLikeFilter","projectPermissions","isLoadingPermissions","useGetMyProjectPermissionsQuery","hideCommentInput","activitiesWithMergedAnnotations","useMemo","mergeAnnotationAttachments","useEffect","annotations","activity","a","transformedActivitiesData","useTransformActivities","feedRef","useRef","useScrollOnInputOpen","FEED_NEW_COMMENT","useSaveScrollPos","useScrollToHighlighted","submitCommentMutation","updateComment","deleteComment","submitReviewMutation","isSaving","useCommentMutations","submitComment","useCallback","value","files","data","submitReview","feedback","handleCommentChecked","target","checked","currentMarkdown","newMarkdown","body","taskIndex","li","replaceIndex","markdown","index","indexesOfCurrentMarkdownInBody","indexToReplaceInBody","endReplaceIndex","newBody","handleRefClick","ref","entityId","activityId","handleFileExpand","previewableFiles","file","isFilePreviewable","loadingPlaceholders","getLoadingPlaceholders","lastVersionReview","useLastVersionReview","jsxs","Styled.FeedContainer","jsx","TabHeaderAndFilters","Styled.FeedContent","clsx","ActivityItem","_refs","e","EmptyPlaceholder","InView","inView","Styled.LoadMore","CommentInput"],"mappings":"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"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { j as r } from "../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { useMemo as _, useEffect as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { FeedContainer as
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { InView as
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import { getLoadingPlaceholders as
|
|
2
|
+
import { useMemo as _, useEffect as gt, useRef as ht, useCallback as B } from "react";
|
|
3
|
+
import yt from "./components/ActivityItem.es.js";
|
|
4
|
+
import vt from "./components/CommentInput/CommentInput.es.js";
|
|
5
|
+
import { FeedContainer as xt, FeedContent as kt, LoadMore as Ct } from "./Feed.styled.es.js";
|
|
6
|
+
import wt from "./hooks/useCommentMutations.es.js";
|
|
7
|
+
import It from "./hooks/useTransformActivities.es.js";
|
|
8
|
+
import { InView as Ft } from "../../../../node_modules/react-intersection-observer/dist/index.es.js";
|
|
9
|
+
import bt from "./hooks/useSaveScrollPos.es.js";
|
|
10
|
+
import At from "./hooks/useScrollOnInputOpen.es.js";
|
|
11
|
+
import { getLoadingPlaceholders as Mt } from "./feedHelpers.es.js";
|
|
12
12
|
import "@ynput/ayon-react-components";
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import { isFilePreviewable as
|
|
16
|
-
import { EmptyPlaceholder as
|
|
13
|
+
import jt from "clsx";
|
|
14
|
+
import Pt from "./hooks/useScrollToHighlighted.es.js";
|
|
15
|
+
import { isFilePreviewable as Rt } from "./components/FileUploadPreview/FileUploadPreview.es.js";
|
|
16
|
+
import { EmptyPlaceholder as Lt } from "../../components/EmptyPlaceholder/EmptyPlaceholder.es.js";
|
|
17
17
|
import "../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.es.js";
|
|
18
|
-
import { useFeedContext as
|
|
18
|
+
import { useFeedContext as Et, FEED_NEW_COMMENT as C } from "./context/FeedContext.es.js";
|
|
19
19
|
import "../../context/RemoteModulesContext.es.js";
|
|
20
|
-
import { useDetailsPanelContext as
|
|
20
|
+
import { useDetailsPanelContext as Nt } from "../../context/DetailsPanelContext.es.js";
|
|
21
21
|
import "../../../../_virtual/runtime.es.js";
|
|
22
22
|
import "../../../../_virtual/semver.es.js";
|
|
23
23
|
import "../../api/base/client.es.js";
|
|
@@ -93,7 +93,7 @@ import "../../api/queries/folders/getFolderDeleteInfo.es.js";
|
|
|
93
93
|
import "../../api/queries/grouping/getGrouping.es.js";
|
|
94
94
|
import "../../api/queries/links/updateLinks.es.js";
|
|
95
95
|
import "../../api/queries/links/getLinks.es.js";
|
|
96
|
-
import { useGetMyProjectPermissionsQuery as
|
|
96
|
+
import { useGetMyProjectPermissionsQuery as Ot } from "../../api/queries/permissions/getPermissions.es.js";
|
|
97
97
|
import "../../api/queries/products/createProduct.es.js";
|
|
98
98
|
import "../../api/queries/products/getFolderProducts.es.js";
|
|
99
99
|
import "../../api/queries/project/getProject.es.js";
|
|
@@ -138,10 +138,10 @@ import "../../context/GlobalContext.es.js";
|
|
|
138
138
|
import "../../context/ProjectContext.es.js";
|
|
139
139
|
import "../../context/ProjectFoldersContext.es.js";
|
|
140
140
|
import "../../context/UriContext.es.js";
|
|
141
|
-
import
|
|
142
|
-
import
|
|
143
|
-
import { useLastVersionReview as
|
|
144
|
-
const
|
|
141
|
+
import Tt from "./helpers/mergeAnnotationAttachments.es.js";
|
|
142
|
+
import St from "../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.es.js";
|
|
143
|
+
import { useLastVersionReview as Dt } from "./hooks/useLastVersionReview.es.js";
|
|
144
|
+
const Fo = 30, Vt = [
|
|
145
145
|
{
|
|
146
146
|
id: "comments",
|
|
147
147
|
tooltip: "Comments",
|
|
@@ -162,16 +162,16 @@ const Io = 30, Dt = [
|
|
|
162
162
|
tooltip: "Entity updates",
|
|
163
163
|
icon: "arrow_circle_right"
|
|
164
164
|
}
|
|
165
|
-
],
|
|
165
|
+
], bo = ({
|
|
166
166
|
disabled: H,
|
|
167
|
-
readOnly:
|
|
168
|
-
statuses:
|
|
169
|
-
entityListId:
|
|
167
|
+
readOnly: G,
|
|
168
|
+
statuses: W = [],
|
|
169
|
+
entityListId: q,
|
|
170
170
|
isSlideOut: Q,
|
|
171
171
|
versionReview: w = !1
|
|
172
172
|
}) => {
|
|
173
173
|
const {
|
|
174
|
-
projectName:
|
|
174
|
+
projectName: s,
|
|
175
175
|
entities: l,
|
|
176
176
|
entityType: d,
|
|
177
177
|
editingId: I,
|
|
@@ -179,37 +179,32 @@ const Io = 30, Dt = [
|
|
|
179
179
|
setEditingId: b,
|
|
180
180
|
userName: A,
|
|
181
181
|
activitiesData: h,
|
|
182
|
-
isLoadingNew:
|
|
182
|
+
isLoadingNew: m,
|
|
183
183
|
isLoadingNextPage: M,
|
|
184
184
|
loadNextPage: c,
|
|
185
185
|
hasNextPage: U,
|
|
186
186
|
users: z,
|
|
187
187
|
feedFilter: p,
|
|
188
|
-
setFeedFilter: J
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
setFeedFilter: J,
|
|
189
|
+
isGuest: K
|
|
190
|
+
} = Et(), {
|
|
191
|
+
openSlideOut: X,
|
|
191
192
|
highlightedActivities: y,
|
|
192
|
-
setHighlightedActivities:
|
|
193
|
-
onOpenImage:
|
|
193
|
+
setHighlightedActivities: Y,
|
|
194
|
+
onOpenImage: Z,
|
|
194
195
|
setFeedAnnotations: j,
|
|
195
196
|
user: P
|
|
196
|
-
} =
|
|
197
|
+
} = Nt(), $ = p.conditions?.some(
|
|
197
198
|
(t) => "key" in t && t.key === "versions" && t.value === !0
|
|
198
|
-
),
|
|
199
|
+
), tt = p.conditions?.some(
|
|
199
200
|
(t) => "key" in t && ["comments", "checklists", "versions", "updates"].includes(t.key) && t.value === !0
|
|
200
201
|
), R = p.conditions?.some(
|
|
201
202
|
(t) => "key" in t && (t.key === "comments" || t.key === "checklists") && t.value === !0
|
|
202
|
-
), {
|
|
203
|
-
|
|
204
|
-
isLoading: tt
|
|
205
|
-
} = Nt(
|
|
206
|
-
{ projectName: n },
|
|
207
|
-
{ skip: !n }
|
|
208
|
-
), it = !P.data?.isManager && !P.data?.isAdmin && !tt && L?.activities?.enabled && !L?.activities?.activities?.includes("comment") || $ && !R, u = _(
|
|
209
|
-
() => Ot(h),
|
|
203
|
+
), { data: L, isLoading: it } = Ot({ projectName: s }, { skip: !s }), et = !P.data?.isManager && !P.data?.isAdmin && !it && L?.activities?.enabled && !L?.activities?.activities?.includes("comment") || tt && !R, u = _(
|
|
204
|
+
() => Tt(h),
|
|
210
205
|
[h]
|
|
211
206
|
);
|
|
212
|
-
|
|
207
|
+
gt(() => {
|
|
213
208
|
u.length || j([]);
|
|
214
209
|
const t = u.map(
|
|
215
210
|
(i) => i.activityData?.annotations?.map((e) => ({
|
|
@@ -219,7 +214,7 @@ const Io = 30, Dt = [
|
|
|
219
214
|
).filter(Boolean).flat();
|
|
220
215
|
j(t);
|
|
221
216
|
}, [u]);
|
|
222
|
-
const f =
|
|
217
|
+
const f = It(
|
|
223
218
|
// @ts-ignore
|
|
224
219
|
u,
|
|
225
220
|
z,
|
|
@@ -227,17 +222,17 @@ const Io = 30, Dt = [
|
|
|
227
222
|
d,
|
|
228
223
|
A,
|
|
229
224
|
p
|
|
230
|
-
), a =
|
|
231
|
-
|
|
225
|
+
), a = ht(null);
|
|
226
|
+
At({ feedRef: a, isInputOpen: I === C, height: 93 }), bt({
|
|
232
227
|
entities: l,
|
|
233
228
|
feedRef: a,
|
|
234
229
|
filter: p,
|
|
235
230
|
disabled: !!y.length,
|
|
236
|
-
isLoading:
|
|
237
|
-
}),
|
|
231
|
+
isLoading: m
|
|
232
|
+
}), Pt({
|
|
238
233
|
feedRef: a,
|
|
239
234
|
highlighted: y,
|
|
240
|
-
isLoading:
|
|
235
|
+
isLoading: m || M,
|
|
241
236
|
loadNextPage: c,
|
|
242
237
|
hasNextPage: !!c,
|
|
243
238
|
activities: h
|
|
@@ -245,130 +240,134 @@ const Io = 30, Dt = [
|
|
|
245
240
|
const {
|
|
246
241
|
submitComment: E,
|
|
247
242
|
updateComment: N,
|
|
248
|
-
deleteComment:
|
|
243
|
+
deleteComment: ot,
|
|
249
244
|
submitReview: O,
|
|
250
|
-
isSaving:
|
|
251
|
-
} =
|
|
252
|
-
projectName:
|
|
245
|
+
isSaving: rt
|
|
246
|
+
} = wt({
|
|
247
|
+
projectName: s,
|
|
253
248
|
entityType: d,
|
|
254
249
|
entities: l,
|
|
255
250
|
filter: p,
|
|
256
|
-
entityListId:
|
|
257
|
-
}),
|
|
251
|
+
entityListId: q
|
|
252
|
+
}), st = B(
|
|
258
253
|
async (t, i = [], e = {}) => {
|
|
259
254
|
await E(t, i, e), a.current && a.current.scrollTo({ top: 0 });
|
|
260
255
|
},
|
|
261
256
|
[E, a]
|
|
262
|
-
), nt = B(
|
|
263
|
-
|
|
264
|
-
|
|
257
|
+
), nt = B(
|
|
258
|
+
async (t) => {
|
|
259
|
+
await O(t);
|
|
260
|
+
},
|
|
261
|
+
[O]
|
|
262
|
+
), mt = (t, i) => {
|
|
265
263
|
const e = t?.target;
|
|
266
264
|
if (!e || !i) return console.log("no target or activity");
|
|
267
|
-
const o = e.checked,
|
|
265
|
+
const o = e.checked, n = o ? "[ ]" : "[x]", dt = o ? "[x]" : "[ ]", { body: g } = i, T = Array.from(
|
|
268
266
|
e.closest(".comment-body")?.querySelectorAll(".task-list-item") || []
|
|
269
267
|
).findIndex((k) => k === e.closest("li"));
|
|
270
268
|
let S = T;
|
|
271
|
-
(g.match(/\[.\]/g) || []).forEach((k,
|
|
272
|
-
k !==
|
|
269
|
+
(g.match(/\[.\]/g) || []).forEach((k, ft) => {
|
|
270
|
+
k !== n && ft < T && S--;
|
|
273
271
|
});
|
|
274
272
|
const D = [];
|
|
275
273
|
let v = -1;
|
|
276
|
-
for (; (v = g.indexOf(
|
|
274
|
+
for (; (v = g.indexOf(n, v + 1)) > -1; )
|
|
277
275
|
D.push(v);
|
|
278
276
|
const x = D[S];
|
|
279
277
|
if (x === void 0) return;
|
|
280
|
-
const
|
|
278
|
+
const ut = x + n.length, V = g.slice(0, x) + dt + g.slice(ut);
|
|
281
279
|
V && N(i, V, i.files);
|
|
282
|
-
},
|
|
280
|
+
}, pt = (t) => {
|
|
283
281
|
const { entityId: i, entityType: e, activityId: o } = t;
|
|
284
282
|
if (!e || !["version", "task", "folder"].includes(e))
|
|
285
283
|
return console.log("Entity type not supported yet");
|
|
286
|
-
if (!i || !e || !
|
|
287
|
-
|
|
288
|
-
},
|
|
284
|
+
if (!i || !e || !s) return console.log("No entity id or type found");
|
|
285
|
+
X({ entityId: i, entityType: e, projectName: s }), Y([o]);
|
|
286
|
+
}, at = ({ index: t, activityId: i }) => {
|
|
289
287
|
const e = Object.values(f).reverse().filter((o) => o.activityType == "comment").map((o) => ({
|
|
290
288
|
id: o.activityId,
|
|
291
|
-
files: o.files.filter((
|
|
289
|
+
files: o.files.filter((n) => Rt(n.mime, n.ext))
|
|
292
290
|
})).filter((o) => o.files.length > 0);
|
|
293
|
-
|
|
294
|
-
},
|
|
295
|
-
projectName:
|
|
291
|
+
Z?.({ files: e, activityId: i, index: t, projectName: s });
|
|
292
|
+
}, lt = _(() => Mt(10), []), ct = Dt({
|
|
293
|
+
projectName: s,
|
|
296
294
|
enabled: w,
|
|
297
295
|
entityIds: l.map((t) => t.id),
|
|
298
296
|
activities: f,
|
|
299
|
-
loadingActivities:
|
|
297
|
+
loadingActivities: m,
|
|
300
298
|
userName: A
|
|
301
299
|
});
|
|
302
|
-
return /* @__PURE__ */ r.jsx(r.Fragment, { children: /* @__PURE__ */ r.jsxs(
|
|
300
|
+
return /* @__PURE__ */ r.jsx(r.Fragment, { children: /* @__PURE__ */ r.jsxs(xt, { className: "feed", children: [
|
|
303
301
|
void 0,
|
|
304
302
|
/* @__PURE__ */ r.jsx(
|
|
305
|
-
|
|
303
|
+
St,
|
|
306
304
|
{
|
|
307
305
|
label: "Activity Feed",
|
|
308
|
-
filters:
|
|
306
|
+
filters: Vt,
|
|
309
307
|
currentFilter: p,
|
|
310
308
|
onFilterChange: J,
|
|
311
|
-
isLoading:
|
|
309
|
+
isLoading: m
|
|
312
310
|
}
|
|
313
311
|
),
|
|
314
|
-
/* @__PURE__ */ r.jsxs(
|
|
315
|
-
|
|
316
|
-
|
|
312
|
+
/* @__PURE__ */ r.jsxs(kt, { ref: a, className: jt({ loading: m }, "no-shimmer"), children: [
|
|
313
|
+
m ? lt : f.map((t) => /* @__PURE__ */ r.jsx(
|
|
314
|
+
yt,
|
|
317
315
|
{
|
|
318
316
|
activity: t,
|
|
319
317
|
onCheckChange: mt,
|
|
320
|
-
onDelete:
|
|
321
|
-
onUpdate: async (i, e, o,
|
|
318
|
+
onDelete: ot,
|
|
319
|
+
onUpdate: async (i, e, o, n) => await N(t, i, e, n),
|
|
322
320
|
projectInfo: F,
|
|
323
|
-
projectName:
|
|
321
|
+
projectName: s,
|
|
324
322
|
entityType: d,
|
|
325
|
-
onReferenceClick:
|
|
323
|
+
onReferenceClick: pt,
|
|
326
324
|
createdAts: l.map((i) => i.createdAt),
|
|
327
|
-
onFileExpand:
|
|
325
|
+
onFileExpand: at,
|
|
328
326
|
showOrigin: l.length > 1,
|
|
329
327
|
filter: p,
|
|
330
328
|
editProps: {
|
|
331
|
-
projectName:
|
|
329
|
+
projectName: s,
|
|
332
330
|
entities: l,
|
|
333
331
|
entityType: d
|
|
334
332
|
},
|
|
335
333
|
isHighlighted: y.includes(t.activityId),
|
|
336
|
-
readOnly:
|
|
337
|
-
statuses:
|
|
338
|
-
isSlideOut: Q
|
|
334
|
+
readOnly: G,
|
|
335
|
+
statuses: W,
|
|
336
|
+
isSlideOut: Q,
|
|
337
|
+
isGuest: K
|
|
339
338
|
},
|
|
340
339
|
t.activityId
|
|
341
340
|
)),
|
|
342
|
-
f.length === 0 &&
|
|
341
|
+
f.length === 0 && $ && !R && !m && /* @__PURE__ */ r.jsx(Lt, { message: "No versions published yet", icon: "layers" }),
|
|
343
342
|
U && c && /* @__PURE__ */ r.jsx(
|
|
344
|
-
|
|
343
|
+
Ft,
|
|
345
344
|
{
|
|
346
345
|
root: a.current,
|
|
347
346
|
onChange: (t) => t && c(),
|
|
348
347
|
rootMargin: "400px 0px 0px 0px",
|
|
349
|
-
children: /* @__PURE__ */ r.jsx(
|
|
348
|
+
children: /* @__PURE__ */ r.jsx(Ct, { style: { height: 0 }, onClick: () => c(), children: M ? "Loading more..." : "Click to load more" })
|
|
350
349
|
}
|
|
351
350
|
)
|
|
352
351
|
] }),
|
|
353
|
-
!
|
|
354
|
-
|
|
352
|
+
!et && /* @__PURE__ */ r.jsx(
|
|
353
|
+
vt,
|
|
355
354
|
{
|
|
356
355
|
initValue: null,
|
|
357
|
-
onSubmit:
|
|
356
|
+
onSubmit: st,
|
|
358
357
|
isOpen: I === C,
|
|
359
358
|
onClose: () => b(null),
|
|
360
359
|
onOpen: () => b(C),
|
|
361
360
|
disabled: H,
|
|
362
|
-
isLoading:
|
|
361
|
+
isLoading: m || !l.length || rt,
|
|
363
362
|
versionReview: w,
|
|
364
|
-
lastOwnVersionReview:
|
|
363
|
+
lastOwnVersionReview: ct,
|
|
365
364
|
onReview: nt
|
|
366
365
|
}
|
|
367
366
|
)
|
|
368
367
|
] }) });
|
|
369
368
|
};
|
|
370
369
|
export {
|
|
371
|
-
|
|
372
|
-
|
|
370
|
+
bo as Feed,
|
|
371
|
+
Fo as activitiesLast
|
|
373
372
|
};
|
|
374
373
|
//# sourceMappingURL=Feed.es.js.map
|