@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.
Files changed (109) hide show
  1. package/dist/_virtual/index.cjs22.js +1 -1
  2. package/dist/_virtual/index.cjs23.js +1 -1
  3. package/dist/_virtual/index.cjs24.js +1 -1
  4. package/dist/_virtual/index.cjs7.js +1 -1
  5. package/dist/_virtual/index.cjs9.js +1 -1
  6. package/dist/_virtual/index.es22.js +3 -3
  7. package/dist/_virtual/index.es23.js +5 -5
  8. package/dist/_virtual/index.es24.js +5 -5
  9. package/dist/_virtual/index.es7.js +2 -5
  10. package/dist/_virtual/index.es7.js.map +1 -1
  11. package/dist/_virtual/index.es9.js +5 -2
  12. package/dist/_virtual/index.es9.js.map +1 -1
  13. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  14. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  15. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  16. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  17. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  18. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  19. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  20. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  21. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  22. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  23. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  24. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  25. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  26. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  27. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  28. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  29. package/dist/shared/src/api/generated/graphql.cjs.js +2 -2
  30. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  31. package/dist/shared/src/api/generated/graphql.es.js +2 -2
  32. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  33. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  34. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  35. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  36. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  37. package/dist/shared/src/containers/Feed/Feed.es.js +97 -98
  38. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  39. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  40. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  41. package/dist/shared/src/containers/Feed/components/ActivityDate.cjs.js +3 -3
  42. package/dist/shared/src/containers/Feed/components/ActivityDate.cjs.js.map +1 -1
  43. package/dist/shared/src/containers/Feed/components/ActivityDate.es.js +37 -35
  44. package/dist/shared/src/containers/Feed/components/ActivityDate.es.js.map +1 -1
  45. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js +1 -1
  46. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js.map +1 -1
  47. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js +14 -13
  48. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js.map +1 -1
  49. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  50. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  51. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +39 -39
  52. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  53. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js +13 -4
  54. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js.map +1 -1
  55. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.es.js +17 -8
  56. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.es.js.map +1 -1
  57. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  58. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  59. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +207 -233
  60. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  61. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js +7 -10
  62. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js.map +1 -1
  63. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js +10 -13
  64. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js.map +1 -1
  65. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js +1 -1
  66. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
  67. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js +16 -22
  68. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
  69. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +2 -0
  70. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -0
  71. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +18 -0
  72. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -0
  73. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  74. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  75. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js +1 -1
  76. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  77. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +8 -8
  78. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  79. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  80. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  81. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +67 -64
  82. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  83. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  84. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  85. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +13 -11
  86. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  87. package/dist/types/api/generated/graphql.d.ts +4 -3
  88. package/dist/types/api/generated/graphqlLinks.d.ts +2 -1
  89. package/dist/types/api/queries/activities/getActivities.d.ts +77 -77
  90. package/dist/types/api/queries/activities/updateActivities.d.ts +4 -4
  91. package/dist/types/api/queries/entities/getEntity.d.ts +1 -1
  92. package/dist/types/api/queries/entities/getEntityPanel.d.ts +1 -1
  93. package/dist/types/api/queries/entities/updateEntity.d.ts +1 -1
  94. package/dist/types/api/queries/entityLists/getLists.d.ts +1 -1
  95. package/dist/types/api/queries/overview/getOverview.d.ts +1 -1
  96. package/dist/types/api/queries/project/getProject.d.ts +1 -1
  97. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +1 -1
  98. package/dist/types/api/queries/users/getUsers.d.ts +1 -1
  99. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +2 -2
  100. package/dist/types/containers/Feed/components/ActivityDate.d.ts +2 -1
  101. package/dist/types/containers/Feed/components/ActivityItem.d.ts +1 -0
  102. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +2 -1
  103. package/dist/types/containers/Feed/components/CommentInput/CommentInput.d.ts +1 -16
  104. package/dist/types/containers/Feed/components/CommentInput/VersionReviewPill.d.ts +1 -2
  105. package/dist/types/containers/Feed/components/CommentInput/index.d.ts +2 -0
  106. package/dist/types/containers/Feed/components/CommentInput/types.d.ts +16 -0
  107. package/dist/types/containers/Feed/hooks/useCommentMutations.d.ts +1 -1
  108. package/dist/types/containers/Feed/hooks/useGetFeedActivitiesData.d.ts +3 -3
  109. 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":"8zOA4BaA,GAAiB,GAExBC,GAAoC,CACxC,CACE,GAAI,WACJ,QAAS,WACT,KAAM,MAAA,EAER,CACE,GAAI,aACJ,QAAS,aACT,KAAM,WAAA,EAER,CACE,GAAI,WACJ,QAAS,qBACT,KAAM,QAAA,EAER,CACE,GAAI,UACJ,QAAS,iBACT,KAAM,oBAAA,CAEV,EAWaC,GAAO,CAAC,CACnB,SAAAC,EACA,SAAAC,EACA,SAAAC,EAAW,CAAA,EACX,aAAAC,EACA,WAAAC,EACA,cAAAC,EAAgB,EAClB,IAAiB,CACf,KAAM,CACJ,YAAAC,EACA,SAAAC,EACA,WAAAC,EACA,UAAAC,EACA,YAAAC,EACA,aAAAC,EACA,SAAAC,EACA,eAAAC,EACA,aAAAC,EACA,kBAAAC,EACA,aAAAC,EACA,YAAAC,EACA,MAAAC,EACA,WAAAC,EACA,cAAAC,EACA,QAAAC,CAAA,EACEC,iBAAA,EAEE,CACJ,aAAAC,EACA,sBAAAC,EACA,yBAAAC,EACA,YAAAC,EACA,mBAAAC,EACA,KAAAC,CAAA,EACEC,0BAAA,EAEEC,EAAmBX,EAAW,YAAY,KAC7CY,GAAM,QAASA,GAAKA,EAAE,MAAQ,YAAcA,EAAE,QAAU,EAAA,EAErDC,GAAmBb,EAAW,YAAY,KAC7CY,GACC,QAASA,GACT,CAAC,WAAY,aAAc,WAAY,SAAS,EAAE,SAASA,EAAE,GAAG,GAChEA,EAAE,QAAU,EAAA,EAEVE,EAAuBd,EAAW,YAAY,KACjDY,GAAM,QAASA,IAAMA,EAAE,MAAQ,YAAcA,EAAE,MAAQ,eAAiBA,EAAE,QAAU,EAAA,EAIjF,CAAE,KAAMG,EAAoB,UAAWC,IAC3CC,mCAAgC,CAAE,YAAA9B,CAAA,EAAe,CAAE,KAAM,CAACA,EAAa,EASnE+B,GAPJ,CAACT,EAAK,MAAM,WACZ,CAACA,EAAK,MAAM,SACZ,CAACO,IACDD,GAAoB,YAAY,SAChC,CAACA,GAAoB,YAAY,YAAY,SAAS,SAAS,GAGhBF,IAAoB,CAACC,EAEhEK,EAAkCC,EAAAA,QACtC,IAAMC,GAA2B3B,CAAc,EAC/C,CAACA,CAAc,CAAA,EAGjB4B,EAAAA,UAAU,IAAM,CACTH,EAAgC,QACnCX,EAAmB,CAAA,CAAE,EAGvB,MAAMe,EAAcJ,EACjB,IAAKK,GACJA,EAAS,cAAc,aAAa,IAAKC,IAAgC,CACvE,GAAGA,EACH,WAAYD,EAAS,UAAA,EACrB,CAAA,EAEH,OAAO,OAAO,EACd,KAAA,EAEHhB,EAAmBe,CAAW,CAChC,EAAG,CAACJ,CAA+B,CAAC,EAMpC,MAAMO,EAA4BC,GAAAA,QAEhCR,EACApB,EACAR,EACAF,EACAI,EACAO,CAAA,EAII4B,EAAUC,EAAAA,OAAO,IAAI,EAI3BC,GAAqB,CAAE,QAAAF,EAAS,YAAatC,IAAcyC,mBAAkB,OAAQ,GAAI,EAGzFC,GAAiB,CACf,SAAA5C,EACA,QAAAwC,EACA,OAAQ5B,EACR,SAAU,CAAC,CAACK,EAAsB,OAClC,UAAWV,CAAA,CACZ,EAEDsC,GAAuB,CACrB,QAAAL,EACA,YAAavB,EACb,UAAWV,GAAgBC,EAC3B,aAAAC,EACA,YAAa,CAAC,CAACA,EACf,WAAYH,CAAA,CACb,EAGD,KAAM,CACJ,cAAewC,EACf,cAAAC,EACA,cAAAC,GACA,aAAcC,EACd,SAAAC,EAAA,EACEC,GAAoB,CACtB,YAAApD,EACA,WAAAE,EACA,SAAAD,EACA,OAAQY,EACR,aAAAhB,CAAA,CACD,EAGKwD,GAAgBC,EAAAA,YACpB,MAAOC,EAAeC,EAAe,GAAIC,EAAY,CAAA,IAAO,CAC1D,MAAMV,EAAsBQ,EAAOC,EAAOC,CAAI,EAE1ChB,EAAQ,SACRA,EAAQ,QAAgB,SAAS,CAAE,IAAK,EAAG,CAEjD,EACA,CAACM,EAAuBN,CAAO,CAAA,EAG3BiB,GAAeJ,EAAAA,YACnB,MAAOK,GAAoC,CACzC,MAAMT,EAAqBS,CAAQ,CACrC,EACA,CAACT,CAAoB,CAAA,EAKjBU,GAAuB,CAAC,EAAwCvB,IAAuB,CAC3F,MAAMwB,EAAS,GAAG,OAClB,GAAI,CAACA,GAAU,CAACxB,EAAU,OAAO,QAAQ,IAAI,uBAAuB,EAGpE,MAAMyB,EAAmBD,EAAO,QAC1BE,EAA0BD,EAAU,MAAQ,MAC5CE,GAAsBF,EAAU,MAAQ,MAExC,CAAE,KAAAG,GAAS5B,EAIX6B,EAAoB,MAAM,KAC9BL,EAAO,QAAQ,eAAe,GAAG,iBAAiB,iBAAiB,GAAK,CAAA,CAAC,EACzE,UAAWM,GAAgBA,IAAON,EAAO,QAAQ,IAAI,CAAC,EAExD,IAAIO,EAAuBF,GAGID,EAAK,MAAM,QAAQ,GAAK,CAAA,GAE1C,QAAQ,CAACI,EAAkBC,KAAkB,CAEpDD,IAAaN,GAAmBO,GAAQJ,GAAWE,GACzD,CAAC,EAGD,MAAMG,EAA2C,CAAA,EACjD,IAAID,EAAgB,GACpB,MAAQA,EAAQL,EAAK,QAAQF,EAAiBO,EAAQ,CAAC,GAAK,IAC1DC,EAA+B,KAAKD,CAAK,EAG3C,MAAME,EAA2CD,EAA+BH,CAAY,EAC5F,GAAII,IAAyB,OAAW,OAExC,MAAMC,GAA0BD,EAAuBT,EAAgB,OAGjEW,EACJT,EAAK,MAAM,EAAGO,CAAoB,EAAIR,GAAcC,EAAK,MAAMQ,EAAe,EAE3EC,GAEL1B,EAAcX,EAAUqC,EAASrC,EAAS,KAAK,CACjD,EAEMsC,GAAkBC,GAIlB,CACJ,KAAM,CAAE,SAAAC,EAAU,WAAA3E,EAAY,WAAA4E,GAAeF,EAG7C,GAAI,CAAC1E,GAAc,CAFI,CAAC,UAAW,OAAQ,QAAQ,EAEhB,SAASA,CAAU,EACpD,OAAO,QAAQ,IAAI,+BAA+B,EAEpD,GAAI,CAAC2E,GAAY,CAAC3E,GAAc,CAACF,EAAa,OAAO,QAAQ,IAAI,4BAA4B,EAG7FiB,EAAa,CAAE,SAAA4D,EAAU,WAAA3E,EAAY,YAAAF,EAAa,EAElDmB,EAAyB,CAAC2D,CAAU,CAAC,CACvC,EAEMC,GAAmB,CAAC,CAAE,MAAAT,EAAO,WAAAQ,KAAwD,CACzF,MAAME,EAAmB,OAAO,OAAOzC,CAAyB,EAC7D,UACA,OAAQD,GAAMA,EAAE,cAAgB,SAAS,EACzC,IAAKA,IAAO,CACX,GAAIA,EAAE,WACN,MAAOA,EAAE,MAAM,OAAQ2C,GAAcC,GAAAA,kBAAkBD,EAAK,KAAMA,EAAK,GAAG,CAAC,CAAA,EAC3E,EACD,OAAQ3C,GAAMA,EAAE,MAAM,OAAS,CAAC,EAGnClB,IAAc,CAAE,MAAO4D,EAAkB,WAAAF,EAAY,MAAAR,EAAO,YAAAtE,EAAa,CAC3E,EAEMmF,GAAsBlD,EAAAA,QAAQ,IAAMmD,GAAAA,uBAAuB,EAAE,EAAG,CAAA,CAAE,EAElEC,GAAoBC,GAAAA,qBAAqB,CAC7C,YAAAtF,EACA,QAASD,EACT,UAAWE,EAAS,IAAK,GAAM,EAAE,EAAE,EACnC,WAAYsC,EACZ,kBAAmB/B,EACnB,SAAAF,CAAA,CACD,EAID,6DAEI,SAAAiF,EAAAA,kBAAAA,KAACC,EAAAA,cAAA,CAAqB,UAAU,OAC7B,SAAA,CALH,OAWEC,EAAAA,kBAAAA,IAACC,GAAA,CACC,MAAM,gBACN,QAASlG,GACT,cAAeqB,EACf,eAAgBC,EAChB,UAAWN,CAAA,CAAA,EAEb+E,EAAAA,kBAAAA,KAACI,EAAAA,YAAA,CAAmB,IAAKlD,EAAS,UAAWmD,GAAK,CAAE,QAASpF,CAAA,EAAgB,YAAY,EACtF,SAAA,CAAAA,EACG2E,GACA5C,EAA0B,IAAKF,GAC7BoD,EAAAA,kBAAAA,IAACI,GAAA,CAEC,SAAAxD,EACA,cAAeuB,GACf,SAAUX,GACV,SAAU,MAAOM,EAAOC,EAAOsC,EAAOrC,IACpC,MAAMT,EAAcX,EAAUkB,EAAOC,EAAOC,CAAI,EAElD,YAAArD,EACA,YAAAJ,EACA,WAAAE,EACA,iBAAkByE,GAClB,WAAY1E,EAAS,IAAK8F,GAAMA,EAAE,SAAS,EAC3C,aAAchB,GACd,WAAY9E,EAAS,OAAS,EAC9B,OAAQY,EACR,UAAW,CACT,YAAAb,EACA,SAAAC,EACA,WAAAC,CAAA,EAEF,cAAegB,EAAsB,SAASmB,EAAS,UAAU,EACjE,SAAA1C,EACA,SAAAC,EACA,WAAAE,EACA,QAAAiB,CAAA,EAxBKsB,EAAS,UAAA,CA0BjB,EAEJE,EAA0B,SAAW,GACpCf,GACA,CAACG,GACD,CAACnB,GAAgBiF,EAAAA,kBAAAA,IAACO,GAAAA,iBAAA,CAAiB,QAAQ,4BAA4B,KAAK,QAAA,CAAS,EACtFrF,GAAeD,GACd+E,EAAAA,kBAAAA,IAACQ,GAAAA,OAAA,CACC,KAAMxD,EAAQ,QACd,SAAWyD,GAAWA,GAAUxF,EAAA,EAChC,WAAY,oBAEZ,SAAA+E,EAAAA,kBAAAA,IAACU,EAAAA,SAAA,CAAgB,MAAO,CAAE,OAAQ,CAAA,EAAK,QAAS,IAAMzF,EAAA,EACnD,SAAAD,EAAoB,kBAAoB,oBAAA,CAC3C,CAAA,CAAA,CACF,EAEJ,EACC,CAACsB,IACA0D,EAAAA,kBAAAA,IAACW,GAAA,CACC,UAAW,KACX,SAAU/C,GACV,OAAQlD,IAAcyC,EAAAA,iBACtB,QAAS,IAAMvC,EAAa,IAAI,EAChC,OAAQ,IAAMA,EAAauC,kBAAgB,EAC3C,SAAAlD,EACA,UAAWc,GAAgB,CAACP,EAAS,QAAUkD,GAC/C,cAAApD,EACA,qBAAsBsF,GACtB,SAAU3B,EAAA,CAAA,CACZ,CAAA,CAEJ,CAAA,CACF,CAEJ"}
@@ -1,23 +1,23 @@
1
1
  import { j as r } from "../../../../_virtual/jsx-runtime.es.js";
2
- import { useMemo as _, useEffect as ft, useRef as gt, useCallback as B } from "react";
3
- import ht from "./components/ActivityItem.es.js";
4
- import yt from "./components/CommentInput/CommentInput.es.js";
5
- import { FeedContainer as vt, FeedContent as xt, LoadMore as kt } from "./Feed.styled.es.js";
6
- import Ct from "./hooks/useCommentMutations.es.js";
7
- import wt from "./hooks/useTransformActivities.es.js";
8
- import { InView as It } from "../../../../node_modules/react-intersection-observer/dist/index.es.js";
9
- import Ft from "./hooks/useSaveScrollPos.es.js";
10
- import bt from "./hooks/useScrollOnInputOpen.es.js";
11
- import { getLoadingPlaceholders as At } from "./feedHelpers.es.js";
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 Mt from "clsx";
14
- import jt from "./hooks/useScrollToHighlighted.es.js";
15
- import { isFilePreviewable as Pt } from "./components/FileUploadPreview/FileUploadPreview.es.js";
16
- import { EmptyPlaceholder as Rt } from "../../components/EmptyPlaceholder/EmptyPlaceholder.es.js";
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 Lt, FEED_NEW_COMMENT as C } from "./context/FeedContext.es.js";
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 Et } from "../../context/DetailsPanelContext.es.js";
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 Nt } from "../../api/queries/permissions/getPermissions.es.js";
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 Ot from "./helpers/mergeAnnotationAttachments.es.js";
142
- import Tt from "../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.es.js";
143
- import { useLastVersionReview as St } from "./hooks/useLastVersionReview.es.js";
144
- const Io = 30, Dt = [
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
- ], Fo = ({
165
+ ], bo = ({
166
166
  disabled: H,
167
- readOnly: W,
168
- statuses: q = [],
169
- entityListId: G,
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: n,
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: s,
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
- } = Lt(), {
190
- openSlideOut: K,
188
+ setFeedFilter: J,
189
+ isGuest: K
190
+ } = Et(), {
191
+ openSlideOut: X,
191
192
  highlightedActivities: y,
192
- setHighlightedActivities: X,
193
- onOpenImage: Y,
193
+ setHighlightedActivities: Y,
194
+ onOpenImage: Z,
194
195
  setFeedAnnotations: j,
195
196
  user: P
196
- } = Et(), Z = p.conditions?.some(
197
+ } = Nt(), $ = p.conditions?.some(
197
198
  (t) => "key" in t && t.key === "versions" && t.value === !0
198
- ), $ = p.conditions?.some(
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
- data: L,
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
- ft(() => {
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 = wt(
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 = gt(null);
231
- bt({ feedRef: a, isInputOpen: I === C, height: 93 }), Ft({
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: s
237
- }), jt({
231
+ isLoading: m
232
+ }), Pt({
238
233
  feedRef: a,
239
234
  highlighted: y,
240
- isLoading: s || M,
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: et,
243
+ deleteComment: ot,
249
244
  submitReview: O,
250
- isSaving: ot
251
- } = Ct({
252
- projectName: n,
245
+ isSaving: rt
246
+ } = wt({
247
+ projectName: s,
253
248
  entityType: d,
254
249
  entities: l,
255
250
  filter: p,
256
- entityListId: G
257
- }), rt = B(
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(async (t) => {
263
- await O(t);
264
- }, [O]), mt = (t, i) => {
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, m = o ? "[ ]" : "[x]", ct = o ? "[x]" : "[ ]", { body: g } = i, T = Array.from(
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, ut) => {
272
- k !== m && ut < T && S--;
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(m, v + 1)) > -1; )
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 dt = x + m.length, V = g.slice(0, x) + ct + g.slice(dt);
278
+ const ut = x + n.length, V = g.slice(0, x) + dt + g.slice(ut);
281
279
  V && N(i, V, i.files);
282
- }, st = (t) => {
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 || !n) return console.log("No entity id or type found");
287
- K({ entityId: i, entityType: e, projectName: n }), X([o]);
288
- }, pt = ({ index: t, activityId: i }) => {
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((m) => Pt(m.mime, m.ext))
289
+ files: o.files.filter((n) => Rt(n.mime, n.ext))
292
290
  })).filter((o) => o.files.length > 0);
293
- Y?.({ files: e, activityId: i, index: t, projectName: n });
294
- }, at = _(() => At(10), []), lt = St({
295
- projectName: n,
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: s,
297
+ loadingActivities: m,
300
298
  userName: A
301
299
  });
302
- return /* @__PURE__ */ r.jsx(r.Fragment, { children: /* @__PURE__ */ r.jsxs(vt, { className: "feed", children: [
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
- Tt,
303
+ St,
306
304
  {
307
305
  label: "Activity Feed",
308
- filters: Dt,
306
+ filters: Vt,
309
307
  currentFilter: p,
310
308
  onFilterChange: J,
311
- isLoading: s
309
+ isLoading: m
312
310
  }
313
311
  ),
314
- /* @__PURE__ */ r.jsxs(xt, { ref: a, className: Mt({ loading: s }, "no-shimmer"), children: [
315
- s ? at : f.map((t) => /* @__PURE__ */ r.jsx(
316
- ht,
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: et,
321
- onUpdate: async (i, e, o, m) => await N(t, i, e, m),
318
+ onDelete: ot,
319
+ onUpdate: async (i, e, o, n) => await N(t, i, e, n),
322
320
  projectInfo: F,
323
- projectName: n,
321
+ projectName: s,
324
322
  entityType: d,
325
- onReferenceClick: st,
323
+ onReferenceClick: pt,
326
324
  createdAts: l.map((i) => i.createdAt),
327
- onFileExpand: pt,
325
+ onFileExpand: at,
328
326
  showOrigin: l.length > 1,
329
327
  filter: p,
330
328
  editProps: {
331
- projectName: n,
329
+ projectName: s,
332
330
  entities: l,
333
331
  entityType: d
334
332
  },
335
333
  isHighlighted: y.includes(t.activityId),
336
- readOnly: W,
337
- statuses: q,
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 && Z && !R && !s && /* @__PURE__ */ r.jsx(Rt, { message: "No versions published yet", icon: "layers" }),
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
- It,
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(kt, { style: { height: 0 }, onClick: () => c(), children: M ? "Loading more..." : "Click to load more" })
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
- !it && /* @__PURE__ */ r.jsx(
354
- yt,
352
+ !et && /* @__PURE__ */ r.jsx(
353
+ vt,
355
354
  {
356
355
  initValue: null,
357
- onSubmit: rt,
356
+ onSubmit: st,
358
357
  isOpen: I === C,
359
358
  onClose: () => b(null),
360
359
  onOpen: () => b(C),
361
360
  disabled: H,
362
- isLoading: s || !l.length || ot,
361
+ isLoading: m || !l.length || rt,
363
362
  versionReview: w,
364
- lastOwnVersionReview: lt,
363
+ lastOwnVersionReview: ct,
365
364
  onReview: nt
366
365
  }
367
366
  )
368
367
  ] }) });
369
368
  };
370
369
  export {
371
- Fo as Feed,
372
- Io as activitiesLast
370
+ bo as Feed,
371
+ Fo as activitiesLast
373
372
  };
374
373
  //# sourceMappingURL=Feed.es.js.map