@ynput/ayon-frontend-shared 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/_virtual/index.cjs10.js +1 -1
  2. package/dist/_virtual/index.cjs11.js +1 -1
  3. package/dist/_virtual/index.cjs12.js +1 -1
  4. package/dist/_virtual/index.es10.js +3 -3
  5. package/dist/_virtual/index.es11.js +5 -5
  6. package/dist/_virtual/index.es12.js +5 -5
  7. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  8. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  9. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  10. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  11. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  12. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  13. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +1 -1
  14. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  15. package/dist/shared/src/api/queries/entities/updateEntity.es.js +125 -120
  16. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  17. package/dist/shared/src/api/queries/views/updateViews.cjs.js +1 -1
  18. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  19. package/dist/shared/src/api/queries/views/updateViews.es.js +68 -63
  20. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  21. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  22. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  23. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +30 -28
  24. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  25. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  26. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  27. package/dist/shared/src/components/LinksManager/LinksManager.es.js +74 -56
  28. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  29. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js +2 -1
  30. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -1
  31. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +5 -4
  32. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js.map +1 -1
  33. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  34. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  35. package/dist/shared/src/containers/Feed/Feed.es.js +123 -113
  36. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  37. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +3 -3
  38. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  39. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +178 -172
  40. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  41. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  42. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  43. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +42 -41
  44. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  45. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  46. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  47. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +26 -26
  48. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  49. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  50. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  51. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +53 -51
  52. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  53. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  54. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  55. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +95 -52
  56. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  57. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  58. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  59. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +13 -13
  60. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  61. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  62. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  63. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +38 -37
  64. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  65. package/dist/types/components/LinksManager/LinkManagerItem.d.ts +1 -0
  66. package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
  67. package/dist/types/containers/Views/hooks/useBaseViewMutations.d.ts +5 -2
  68. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useBaseViewMutations.es.js","sources":["../../../../../../src/containers/Views/hooks/useBaseViewMutations.ts"],"sourcesContent":["import { useCallback } from 'react'\nimport {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n viewsQueries,\n} from '@shared/api'\nimport { toast } from 'react-toastify'\nimport { getScopeTag } from '@shared/api/queries/views/getViews'\nimport { BASE_VIEW_ID } from './useBuildViewMenuItems'\nimport { ViewSettings } from '../context/ViewsContext'\n\ntype Props = {\n viewType?: string\n projectName?: string\n workingSettings?: ViewSettings\n dispatch?: any\n}\n\nexport type UseBaseViewMutations = {\n onCreateBaseView: (isStudioScope: boolean) => Promise<void>\n onUpdateBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>\n onDeleteBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>\n}\n\nexport const useBaseViewMutations = ({\n viewType,\n projectName,\n workingSettings,\n dispatch,\n}: Props): UseBaseViewMutations => {\n const [createViewMutation] = useCreateViewMutation()\n const [updateViewMutation] = useUpdateViewMutation()\n const [deleteViewMutation] = useDeleteViewMutation()\n\n const onCreateBaseView = useCallback(\n async (isStudioScope: boolean) => {\n try {\n const settings = workingSettings || {}\n const baseViewPayload = {\n label: BASE_VIEW_ID,\n working: false,\n settings,\n } as any\n\n const result = await createViewMutation({\n payload: baseViewPayload,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n }).unwrap()\n\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: result.id },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view created successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to create ${scope} base view:`, error)\n toast.error(`Failed to create ${scope} base view: ${error?.message || error}`)\n }\n },\n [createViewMutation, viewType, projectName, workingSettings, dispatch],\n )\n\n const onUpdateBaseView = useCallback(\n async (baseViewId: string, isStudioScope: boolean) => {\n try {\n const settings = workingSettings || {}\n await updateViewMutation({\n viewId: baseViewId,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n payload: { settings },\n }).unwrap()\n\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: baseViewId },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view updated successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to update ${scope} base view:`, error)\n toast.error(`Failed to update ${scope} base view: ${error?.message || error}`)\n }\n },\n [updateViewMutation, viewType, projectName, workingSettings, dispatch],\n )\n\n const onDeleteBaseView = useCallback(\n async (baseViewId: string, isStudioScope: boolean) => {\n try {\n await deleteViewMutation({\n viewId: baseViewId,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n }).unwrap()\n\n // Invalidate tags to force refetch - use the same tag format as getBaseView\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: baseViewId },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view removed successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to remove ${scope} base view:`, error)\n toast.error(`Failed to remove ${scope} base view: ${error?.message || error}`)\n }\n },\n [deleteViewMutation, viewType, projectName, dispatch],\n )\n\n return {\n onCreateBaseView,\n onUpdateBaseView,\n onDeleteBaseView,\n }\n}\n"],"names":["useBaseViewMutations","viewType","projectName","workingSettings","dispatch","createViewMutation","useCreateViewMutation","updateViewMutation","useUpdateViewMutation","deleteViewMutation","useDeleteViewMutation","onCreateBaseView","useCallback","isStudioScope","result","BASE_VIEW_ID","viewsQueries","getScopeTag","scope","toast","error","onUpdateBaseView","baseViewId","onDeleteBaseView"],"mappings":"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"}
1
+ {"version":3,"file":"useBaseViewMutations.es.js","sources":["../../../../../../src/containers/Views/hooks/useBaseViewMutations.ts"],"sourcesContent":["import { useCallback } from 'react'\nimport {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n useSetDefaultViewMutation,\n viewsQueries,\n ViewListItemModel,\n} from '@shared/api'\nimport { toast } from 'react-toastify'\nimport { getScopeTag } from '@shared/api/queries/views/getViews'\nimport { BASE_VIEW_ID } from './useBuildViewMenuItems'\nimport { ViewSettings } from '@shared/containers'\n\ntype Props = {\n viewType?: string\n projectName?: string\n workingSettings?: ViewSettings\n workingView?: ViewListItemModel\n dispatch?: any\n}\n\nexport type UseBaseViewMutations = {\n onCreateBaseView: (isStudioScope: boolean) => Promise<void>\n onUpdateBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>\n onDeleteBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>\n onLoadBaseView: (isStudioScope: boolean) => Promise<void>\n}\n\nexport const useBaseViewMutations = ({\n viewType,\n projectName,\n workingSettings,\n workingView,\n dispatch,\n}: Props): UseBaseViewMutations => {\n const [createViewMutation] = useCreateViewMutation()\n const [updateViewMutation] = useUpdateViewMutation()\n const [deleteViewMutation] = useDeleteViewMutation()\n const [setDefaultViewMutation] = useSetDefaultViewMutation()\n\n const onCreateBaseView = useCallback(\n async (isStudioScope: boolean) => {\n try {\n const settings = workingSettings || {}\n const baseViewPayload = {\n label: BASE_VIEW_ID,\n working: false,\n settings,\n } as any\n\n const result = await createViewMutation({\n payload: baseViewPayload,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n }).unwrap()\n\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: result.id },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view created successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to create ${scope} base view:`, error)\n toast.error(`Failed to create ${scope} base view: ${error?.message || error}`)\n }\n },\n [createViewMutation, viewType, projectName, workingSettings, dispatch],\n )\n\n const onUpdateBaseView = useCallback(\n async (baseViewId: string, isStudioScope: boolean) => {\n try {\n const settings = workingSettings || {}\n await updateViewMutation({\n viewId: baseViewId,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n payload: { settings },\n }).unwrap()\n\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: baseViewId },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view updated successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to update ${scope} base view:`, error)\n toast.error(`Failed to update ${scope} base view: ${error?.message || error}`)\n }\n },\n [updateViewMutation, viewType, projectName, workingSettings, dispatch],\n )\n\n const onDeleteBaseView = useCallback(\n async (baseViewId: string, isStudioScope: boolean) => {\n try {\n await deleteViewMutation({\n viewId: baseViewId,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n }).unwrap()\n\n // Invalidate tags to force refetch - use the same tag format as getBaseView\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: baseViewId },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view removed successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to remove ${scope} base view:`, error)\n toast.error(`Failed to remove ${scope} base view: ${error?.message || error}`)\n }\n },\n [deleteViewMutation, viewType, projectName, dispatch],\n )\n\n const onLoadBaseView = useCallback(\n async (isStudioScope: boolean) => {\n try {\n if (!workingView?.id) {\n throw new Error('No working view available to update')\n }\n\n // Fetch the specific base view (project or studio)\n const baseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n {\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n },\n { subscribe: false, forceRefetch: true }\n )\n )\n const baseViewResult = await baseViewPromise\n const baseView = baseViewResult.data\n\n if (!baseView || !baseView.settings) {\n throw new Error('Base view not found or has no settings')\n }\n\n // Update the working view with the base view settings\n await updateViewMutation({\n viewId: workingView.id,\n viewType: viewType as string,\n projectName,\n payload: { settings: baseView.settings },\n }).unwrap()\n\n // Set the working view as the default view\n await setDefaultViewMutation({\n viewType: viewType as string,\n projectName,\n setDefaultViewRequestModel: { viewId: workingView.id },\n }).unwrap()\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`Loaded ${scope} default view to working view`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to load ${scope} base view:`, error)\n toast.error(`Failed to load ${scope} base view: ${error?.message || error}`)\n }\n },\n [\n workingView,\n updateViewMutation,\n setDefaultViewMutation,\n viewType,\n projectName,\n dispatch,\n ],\n )\n\n return {\n onCreateBaseView,\n onUpdateBaseView,\n onDeleteBaseView,\n onLoadBaseView,\n }\n}\n"],"names":["useBaseViewMutations","viewType","projectName","workingSettings","workingView","dispatch","createViewMutation","useCreateViewMutation","updateViewMutation","useUpdateViewMutation","deleteViewMutation","useDeleteViewMutation","setDefaultViewMutation","useSetDefaultViewMutation","onCreateBaseView","useCallback","isStudioScope","result","BASE_VIEW_ID","viewsQueries","getScopeTag","scope","toast","error","onUpdateBaseView","baseViewId","onDeleteBaseView","onLoadBaseView","baseView"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/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/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/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/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");const s=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const g=require("react"),W=require("react-redux"),D=require("../utils/generateWorkingView.cjs.js"),S=require("react-toastify"),E=({viewType:e,projectName:r,viewsList:j,onCreate:f,onDelete:h,onUpdate:b})=>{const o=W.useDispatch(),[q]=s.useCreateViewMutation(),[B]=s.useDeleteViewMutation(),[n]=s.useUpdateViewMutation(),[R]=s.useSetDefaultViewMutation(),p=g.useCallback(async(i,t)=>{if(!e)throw new Error("viewType are required for creating a view");try{await q({viewType:e,projectName:t?void 0:r,payload:i}).unwrap(),f&&f(i)}catch(u){throw console.error("Failed to create view:",u),u}},[q,e,r,f]),y=g.useCallback(async(i,t,u)=>{if(!e)throw new Error("viewType are required for updating a view");try{await n({viewId:i,viewType:e,projectName:u?void 0:r,payload:t}).unwrap(),b&&b({...t,id:i})}catch(a){throw console.error("Failed to update view:",a),a}},[n,e,r,b]),C=g.useCallback(async(i,t)=>{if(!e)throw new Error("viewType are required for deleting a view");try{await B({viewType:e,projectName:t?void 0:r,viewId:i}).unwrap(),h&&h(i)}catch(u){throw console.error("Failed to delete view:",u),u}},[B,e,r,h]),F=g.useCallback(async i=>{const{existingWorkingViewId:t,selectedViewId:u,setSelectedView:a,setSettingsChanged:M,notify:v}=i||{};if(!e)throw new Error("viewType are required for resetting a view");try{o(s.viewsQueries.util.invalidateTags([{type:"Views",id:`base-${e}-${r}`},{type:"Views",id:`base-${e}`}]));const w=(await o(s.viewsQueries.endpoints.getBaseView.initiate({viewType:e,projectName:r},{subscribe:!1,forceRefetch:!0}))).data;let c={},d="default";if(w&&w.settings&&Object.keys(w.settings).length>0)c=w.settings,d="project";else{const V=(await o(s.viewsQueries.endpoints.getBaseView.initiate({viewType:e},{subscribe:!1,forceRefetch:!0}))).data;V&&V.settings&&Object.keys(V.settings).length>0&&(c=V.settings,d="studio")}const l=t??D.generateWorkingView().id;if(t?await n({viewId:t,viewType:e,projectName:r,payload:{settings:c}}).unwrap():await q({viewType:e,projectName:r,payload:{id:l,label:"Working",working:!0,settings:c}}).unwrap(),await R({viewType:e,projectName:r,setDefaultViewRequestModel:{viewId:l}}).unwrap(),a&&a(l),M&&M(!1),v){const P=d==="project"?"View reset to project base view":d==="studio"?"View reset to studio base view":"View reset to default settings";S.toast.success(P)}return l}catch(k){throw console.error("Failed to reset working view:",k),v&&S.toast.error("Failed to reset view to default"),k}},[q,n,R,e,r,o]);return{onCreateView:p,onUpdateView:y,onDeleteView:C,onResetWorkingView:F}};exports.useViewsMutations=E;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/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/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/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/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");const s=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const f=require("react"),W=require("react-redux"),D=require("../utils/generateWorkingView.cjs.js"),S=require("react-toastify"),E=({viewType:e,projectName:r,viewsList:j,onCreate:g,onDelete:h,onUpdate:b})=>{const o=W.useDispatch(),[q]=s.useCreateViewMutation(),[B]=s.useDeleteViewMutation(),[n]=s.useUpdateViewMutation(),[R]=s.useSetDefaultViewMutation(),p=f.useCallback(async(i,t)=>{if(!e)throw new Error("viewType are required for creating a view");try{await q({viewType:e,projectName:t?void 0:r,payload:i}).unwrap(),g&&g(i)}catch(u){throw console.error("Failed to create view:",u),u}},[q,e,r,g]),y=f.useCallback(async(i,t,u)=>{if(!e)throw new Error("viewType are required for updating a view");try{await n({viewId:i,viewType:e,projectName:u?void 0:r,payload:t}).unwrap(),b&&b({...t,id:i})}catch(a){throw console.error("Failed to update view:",a),a}},[n,e,r,b]),C=f.useCallback(async(i,t)=>{if(!e)throw new Error("viewType are required for deleting a view");try{await B({viewType:e,projectName:t?void 0:r,viewId:i}).unwrap(),h&&h(i)}catch(u){throw console.error("Failed to delete view:",u),u}},[B,e,r,h]),F=f.useCallback(async i=>{const{existingWorkingViewId:t,selectedViewId:u,setSelectedView:a,setSettingsChanged:M,notify:v}=i||{};if(!e)throw new Error("viewType are required for resetting a view");try{o(s.viewsQueries.util.invalidateTags([{type:"Views",id:`base-${e}-${r}`},{type:"Views",id:`base-${e}`}]));const w=(await o(s.viewsQueries.endpoints.getBaseView.initiate({viewType:e,projectName:r},{subscribe:!1,forceRefetch:!0}))).data;let c={},d="default";if(w&&w.settings&&Object.keys(w.settings).length>0)c=w.settings,d="project";else{const V=(await o(s.viewsQueries.endpoints.getBaseView.initiate({viewType:e},{subscribe:!1,forceRefetch:!0}))).data;V&&V.settings&&Object.keys(V.settings).length>0&&(c=V.settings,d="studio")}const l=t??D.generateWorkingView().id;if(t?await n({viewId:t,viewType:e,projectName:r,payload:{settings:c}}).unwrap():await q({viewType:e,projectName:r,payload:{id:l,label:"Working",working:!0,settings:c}}).unwrap(),await R({viewType:e,projectName:r,setDefaultViewRequestModel:{viewId:l}}).unwrap(),a&&a(l),M&&M(!1),v){const P=d==="project"?"View reset to project default view":d==="studio"?"View reset to studio default view":"View reset to default settings";S.toast.success(P)}return l}catch(k){throw console.error("Failed to reset working view:",k),v&&S.toast.error("Failed to reset view to default"),k}},[q,n,R,e,r,o]);return{onCreateView:p,onUpdateView:y,onDeleteView:C,onResetWorkingView:F}};exports.useViewsMutations=E;
2
2
  //# sourceMappingURL=useViewsMutations.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useViewsMutations.cjs.js","sources":["../../../../../../src/containers/Views/hooks/useViewsMutations.ts"],"sourcesContent":["import {\n CreateViewApiArg,\n useCreateViewMutation,\n useDeleteViewMutation,\n useUpdateViewMutation,\n useSetDefaultViewMutation,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport { useCallback } from 'react'\nimport { useDispatch } from 'react-redux'\nimport type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\nimport { ViewData } from '../context/ViewsContext'\nimport { generateWorkingView } from '../utils/generateWorkingView'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n viewType?: string\n projectName?: string\n viewsList?: ViewListItemModel[]\n onCreate?: (view: ViewData) => void\n onUpdate?: (view: ViewData) => void\n onDelete?: (viewId: string) => void\n}\n\nexport type UseViewMutations = {\n onCreateView: (payload: CreateViewApiArg['payload'], isStudioScope: boolean) => Promise<void>\n onDeleteView: (viewId: string, isStudioScope: boolean) => Promise<void>\n onUpdateView: (\n viewId: string,\n payload: Partial<ViewData>,\n isStudioScope: boolean,\n ) => Promise<void>\n onResetWorkingView: (args?: {\n existingWorkingViewId?: string\n selectedViewId?: string\n setSelectedView?: (id: string) => void\n setSettingsChanged?: (changed: boolean) => void\n notify?: boolean\n }) => Promise<string>\n}\ntype R = UseViewMutations\n\nexport const useViewsMutations = ({\n viewType,\n projectName,\n viewsList,\n onCreate,\n onDelete,\n onUpdate,\n}: Props): UseViewMutations => {\n // forward mutations to the dialog\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\n const [createView] = useCreateViewMutation()\n const [deleteView] = useDeleteViewMutation()\n const [updateView] = useUpdateViewMutation()\n const [setDefaultView] = useSetDefaultViewMutation()\n\n\n const onCreateView = useCallback<R['onCreateView']>(\n async (payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for creating a view')\n }\n\n try {\n await createView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onCreate) {\n onCreate(payload as ViewData)\n }\n } catch (error) {\n console.error('Failed to create view:', error)\n throw error\n }\n },\n [createView, viewType, projectName, onCreate],\n )\n\n const onUpdateView = useCallback<R['onUpdateView']>(\n async (viewId, payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for updating a view')\n }\n\n try {\n await updateView({\n viewId,\n viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onUpdate) {\n onUpdate({ ...payload, id: viewId } as ViewData)\n }\n } catch (error) {\n console.error('Failed to update view:', error)\n throw error\n }\n },\n [updateView, viewType, projectName, onUpdate],\n )\n\n const onDeleteView = useCallback<R['onDeleteView']>(\n async (viewId, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for deleting a view')\n }\n\n try {\n await deleteView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n viewId,\n }).unwrap()\n\n if (onDelete) {\n onDelete(viewId)\n }\n } catch (error) {\n console.error('Failed to delete view:', error)\n throw error\n }\n },\n [deleteView, viewType, projectName, onDelete],\n )\n\n const onResetWorkingView = useCallback<R['onResetWorkingView']>(\n async (args) => {\n const { existingWorkingViewId, selectedViewId, setSelectedView, setSettingsChanged, notify } =\n args || {}\n if (!viewType) {\n throw new Error('viewType are required for resetting a view')\n }\n\n try {\n // Priority order: project base view → studio base view → default (empty settings)\n\n // Invalidate base view cache to ensure fresh data\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'Views', id: `base-${viewType}-${projectName}` },\n { type: 'Views', id: `base-${viewType}` }\n ])\n )\n\n // 1. Try to fetch project base view first (force fresh fetch, no subscription)\n const projectBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType, projectName },\n { subscribe: false, forceRefetch: true }\n )\n )\n const projectBaseViewResult = await projectBaseViewPromise\n const projectBaseView = projectBaseViewResult.data\n\n let templateSettings = {}\n let baseViewSource = 'default'\n\n // Check if project base view exists and has settings\n if (projectBaseView && projectBaseView.settings && Object.keys(projectBaseView.settings).length > 0) {\n templateSettings = projectBaseView.settings\n baseViewSource = 'project'\n } else {\n // 2. If no project base view, try studio base view (force fresh fetch, no subscription)\n const studioBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType },\n { subscribe: false, forceRefetch: true }\n )\n )\n const studioBaseViewResult = await studioBaseViewPromise\n const studioBaseView = studioBaseViewResult.data\n\n // Check if studio base view exists and has settings\n if (studioBaseView && studioBaseView.settings && Object.keys(studioBaseView.settings).length > 0) {\n templateSettings = studioBaseView.settings\n baseViewSource = 'studio'\n }\n // 3. Otherwise, use default (empty settings) - already initialized above\n }\n\n // Determine the view ID to use - use existing working view ID or generate new one\n const viewId: string = existingWorkingViewId ?? generateWorkingView().id as string\n\n // Prepare the working view payload with base view settings\n const workingViewPayload = {\n id: viewId,\n label: 'Working',\n working: true,\n settings: templateSettings,\n }\n\n // Update existing working view or create a new one\n if (existingWorkingViewId) {\n await updateView({\n viewId: existingWorkingViewId,\n viewType,\n projectName,\n payload: { settings: templateSettings },\n }).unwrap()\n } else {\n await createView({\n viewType,\n projectName,\n payload: workingViewPayload,\n }).unwrap()\n }\n\n // Set this working view as the user's default view\n await setDefaultView({\n viewType,\n projectName,\n setDefaultViewRequestModel: { viewId },\n }).unwrap()\n\n // Always switch to the working view after reset\n if (setSelectedView) {\n setSelectedView(viewId)\n }\n\n // Clear settings changed flag when resetting (don't prompt to save previous view)\n if (setSettingsChanged) {\n setSettingsChanged(false)\n }\n\n if (notify) {\n const message =\n baseViewSource === 'project' ? 'View reset to project base view' :\n baseViewSource === 'studio' ? 'View reset to studio base view' :\n 'View reset to default settings'\n toast.success(message)\n }\n\n return viewId\n } catch (error) {\n console.error('Failed to reset working view:', error)\n if (notify) toast.error('Failed to reset view to default')\n throw error\n }\n },\n [createView, updateView, setDefaultView, viewType, projectName, dispatch],\n )\n\n return {\n onCreateView,\n onUpdateView,\n onDeleteView,\n onResetWorkingView,\n }\n}\n"],"names":["useViewsMutations","viewType","projectName","viewsList","onCreate","onDelete","onUpdate","dispatch","useDispatch","createView","useCreateViewMutation","deleteView","useDeleteViewMutation","updateView","useUpdateViewMutation","setDefaultView","useSetDefaultViewMutation","onCreateView","useCallback","payload","isStudioScope","error","onUpdateView","viewId","onDeleteView","onResetWorkingView","args","existingWorkingViewId","selectedViewId","setSelectedView","setSettingsChanged","notify","viewsQueries","projectBaseView","templateSettings","baseViewSource","studioBaseView","generateWorkingView","message","toast"],"mappings":"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"}
1
+ {"version":3,"file":"useViewsMutations.cjs.js","sources":["../../../../../../src/containers/Views/hooks/useViewsMutations.ts"],"sourcesContent":["import {\n CreateViewApiArg,\n useCreateViewMutation,\n useDeleteViewMutation,\n useUpdateViewMutation,\n useSetDefaultViewMutation,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport { useCallback } from 'react'\nimport { useDispatch } from 'react-redux'\nimport type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\nimport { ViewData } from '../context/ViewsContext'\nimport { generateWorkingView } from '../utils/generateWorkingView'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n viewType?: string\n projectName?: string\n viewsList?: ViewListItemModel[]\n onCreate?: (view: ViewData) => void\n onUpdate?: (view: ViewData) => void\n onDelete?: (viewId: string) => void\n}\n\nexport type UseViewMutations = {\n onCreateView: (payload: CreateViewApiArg['payload'], isStudioScope: boolean) => Promise<void>\n onDeleteView: (viewId: string, isStudioScope: boolean) => Promise<void>\n onUpdateView: (\n viewId: string,\n payload: Partial<ViewData>,\n isStudioScope: boolean,\n ) => Promise<void>\n onResetWorkingView: (args?: {\n existingWorkingViewId?: string\n selectedViewId?: string\n setSelectedView?: (id: string) => void\n setSettingsChanged?: (changed: boolean) => void\n notify?: boolean\n }) => Promise<string>\n}\ntype R = UseViewMutations\n\nexport const useViewsMutations = ({\n viewType,\n projectName,\n viewsList,\n onCreate,\n onDelete,\n onUpdate,\n}: Props): UseViewMutations => {\n // forward mutations to the dialog\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\n const [createView] = useCreateViewMutation()\n const [deleteView] = useDeleteViewMutation()\n const [updateView] = useUpdateViewMutation()\n const [setDefaultView] = useSetDefaultViewMutation()\n\n\n const onCreateView = useCallback<R['onCreateView']>(\n async (payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for creating a view')\n }\n\n try {\n await createView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onCreate) {\n onCreate(payload as ViewData)\n }\n } catch (error) {\n console.error('Failed to create view:', error)\n throw error\n }\n },\n [createView, viewType, projectName, onCreate],\n )\n\n const onUpdateView = useCallback<R['onUpdateView']>(\n async (viewId, payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for updating a view')\n }\n\n try {\n await updateView({\n viewId,\n viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onUpdate) {\n onUpdate({ ...payload, id: viewId } as ViewData)\n }\n } catch (error) {\n console.error('Failed to update view:', error)\n throw error\n }\n },\n [updateView, viewType, projectName, onUpdate],\n )\n\n const onDeleteView = useCallback<R['onDeleteView']>(\n async (viewId, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for deleting a view')\n }\n\n try {\n await deleteView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n viewId,\n }).unwrap()\n\n if (onDelete) {\n onDelete(viewId)\n }\n } catch (error) {\n console.error('Failed to delete view:', error)\n throw error\n }\n },\n [deleteView, viewType, projectName, onDelete],\n )\n\n const onResetWorkingView = useCallback<R['onResetWorkingView']>(\n async (args) => {\n const { existingWorkingViewId, selectedViewId, setSelectedView, setSettingsChanged, notify } =\n args || {}\n if (!viewType) {\n throw new Error('viewType are required for resetting a view')\n }\n\n try {\n // Priority order: project base view → studio base view → default (empty settings)\n\n // Invalidate base view cache to ensure fresh data\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'Views', id: `base-${viewType}-${projectName}` },\n { type: 'Views', id: `base-${viewType}` }\n ])\n )\n\n // 1. Try to fetch project base view first (force fresh fetch, no subscription)\n const projectBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType, projectName },\n { subscribe: false, forceRefetch: true }\n )\n )\n const projectBaseViewResult = await projectBaseViewPromise\n const projectBaseView = projectBaseViewResult.data\n\n let templateSettings = {}\n let baseViewSource = 'default'\n\n // Check if project base view exists and has settings\n if (projectBaseView && projectBaseView.settings && Object.keys(projectBaseView.settings).length > 0) {\n templateSettings = projectBaseView.settings\n baseViewSource = 'project'\n } else {\n // 2. If no project base view, try studio base view (force fresh fetch, no subscription)\n const studioBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType },\n { subscribe: false, forceRefetch: true }\n )\n )\n const studioBaseViewResult = await studioBaseViewPromise\n const studioBaseView = studioBaseViewResult.data\n\n // Check if studio base view exists and has settings\n if (studioBaseView && studioBaseView.settings && Object.keys(studioBaseView.settings).length > 0) {\n templateSettings = studioBaseView.settings\n baseViewSource = 'studio'\n }\n // 3. Otherwise, use default (empty settings) - already initialized above\n }\n\n // Determine the view ID to use - use existing working view ID or generate new one\n const viewId: string = existingWorkingViewId ?? generateWorkingView().id as string\n\n // Prepare the working view payload with base view settings\n const workingViewPayload = {\n id: viewId,\n label: 'Working',\n working: true,\n settings: templateSettings,\n }\n\n // Update existing working view or create a new one\n if (existingWorkingViewId) {\n await updateView({\n viewId: existingWorkingViewId,\n viewType,\n projectName,\n payload: { settings: templateSettings },\n }).unwrap()\n } else {\n await createView({\n viewType,\n projectName,\n payload: workingViewPayload,\n }).unwrap()\n }\n\n // Set this working view as the user's default view\n await setDefaultView({\n viewType,\n projectName,\n setDefaultViewRequestModel: { viewId },\n }).unwrap()\n\n // Always switch to the working view after reset\n if (setSelectedView) {\n setSelectedView(viewId)\n }\n\n // Clear settings changed flag when resetting (don't prompt to save previous view)\n if (setSettingsChanged) {\n setSettingsChanged(false)\n }\n\n if (notify) {\n const message =\n baseViewSource === 'project' ? 'View reset to project default view' :\n baseViewSource === 'studio' ? 'View reset to studio default view' :\n 'View reset to default settings'\n toast.success(message)\n }\n\n return viewId\n } catch (error) {\n console.error('Failed to reset working view:', error)\n if (notify) toast.error('Failed to reset view to default')\n throw error\n }\n },\n [createView, updateView, setDefaultView, viewType, projectName, dispatch],\n )\n\n return {\n onCreateView,\n onUpdateView,\n onDeleteView,\n onResetWorkingView,\n }\n}\n"],"names":["useViewsMutations","viewType","projectName","viewsList","onCreate","onDelete","onUpdate","dispatch","useDispatch","createView","useCreateViewMutation","deleteView","useDeleteViewMutation","updateView","useUpdateViewMutation","setDefaultView","useSetDefaultViewMutation","onCreateView","useCallback","payload","isStudioScope","error","onUpdateView","viewId","onDeleteView","onResetWorkingView","args","existingWorkingViewId","selectedViewId","setSelectedView","setSettingsChanged","notify","viewsQueries","projectBaseView","templateSettings","baseViewSource","studioBaseView","generateWorkingView","message","toast"],"mappings":"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"}
@@ -80,7 +80,7 @@ import "../../../api/queries/users/updateUsers.es.js";
80
80
  import "../../../api/queries/users/guests.es.js";
81
81
  import "../../../api/queries/versions/updateVersions.es.js";
82
82
  import "../../../api/queries/views/getViews.es.js";
83
- import { useCreateViewMutation as E, useDeleteViewMutation as W, useUpdateViewMutation as $, useSetDefaultViewMutation as j, viewsQueries as b } from "../../../api/queries/views/updateViews.es.js";
83
+ import { useCreateViewMutation as E, useDeleteViewMutation as W, useUpdateViewMutation as $, useSetDefaultViewMutation as j, viewsQueries as B } from "../../../api/queries/views/updateViews.es.js";
84
84
  import "../../../api/queries/watchers/getWatchers.es.js";
85
85
  import "../../../api/queries/uris/getUris.es.js";
86
86
  import { useCallback as l } from "react";
@@ -91,11 +91,11 @@ const ki = ({
91
91
  viewType: t,
92
92
  projectName: i,
93
93
  viewsList: C,
94
- onCreate: V,
95
- onDelete: f,
94
+ onCreate: f,
95
+ onDelete: V,
96
96
  onUpdate: g
97
97
  }) => {
98
- const a = x(), [p] = E(), [B] = W(), [m] = $(), [k] = j(), F = l(
98
+ const a = x(), [p] = E(), [b] = W(), [m] = $(), [k] = j(), F = l(
99
99
  async (r, e) => {
100
100
  if (!t)
101
101
  throw new Error("viewType are required for creating a view");
@@ -104,12 +104,12 @@ const ki = ({
104
104
  viewType: t,
105
105
  projectName: e ? void 0 : i,
106
106
  payload: r
107
- }).unwrap(), V && V(r);
107
+ }).unwrap(), f && f(r);
108
108
  } catch (o) {
109
109
  throw console.error("Failed to create view:", o), o;
110
110
  }
111
111
  },
112
- [p, t, i, V]
112
+ [p, t, i, f]
113
113
  ), S = l(
114
114
  async (r, e, o) => {
115
115
  if (!t)
@@ -131,16 +131,16 @@ const ki = ({
131
131
  if (!t)
132
132
  throw new Error("viewType are required for deleting a view");
133
133
  try {
134
- await B({
134
+ await b({
135
135
  viewType: t,
136
136
  projectName: e ? void 0 : i,
137
137
  viewId: r
138
- }).unwrap(), f && f(r);
138
+ }).unwrap(), V && V(r);
139
139
  } catch (o) {
140
140
  throw console.error("Failed to delete view:", o), o;
141
141
  }
142
142
  },
143
- [B, t, i, f]
143
+ [b, t, i, V]
144
144
  ), D = l(
145
145
  async (r) => {
146
146
  const { existingWorkingViewId: e, selectedViewId: o, setSelectedView: s, setSettingsChanged: R, notify: M } = r || {};
@@ -148,13 +148,13 @@ const ki = ({
148
148
  throw new Error("viewType are required for resetting a view");
149
149
  try {
150
150
  a(
151
- b.util.invalidateTags([
151
+ B.util.invalidateTags([
152
152
  { type: "Views", id: `base-${t}-${i}` },
153
153
  { type: "Views", id: `base-${t}` }
154
154
  ])
155
155
  );
156
156
  const n = (await a(
157
- b.endpoints.getBaseView.initiate(
157
+ B.endpoints.getBaseView.initiate(
158
158
  { viewType: t, projectName: i },
159
159
  { subscribe: !1, forceRefetch: !0 }
160
160
  )
@@ -164,7 +164,7 @@ const ki = ({
164
164
  w = n.settings, u = "project";
165
165
  else {
166
166
  const d = (await a(
167
- b.endpoints.getBaseView.initiate(
167
+ B.endpoints.getBaseView.initiate(
168
168
  { viewType: t },
169
169
  { subscribe: !1, forceRefetch: !0 }
170
170
  )
@@ -191,7 +191,7 @@ const ki = ({
191
191
  projectName: i,
192
192
  setDefaultViewRequestModel: { viewId: c }
193
193
  }).unwrap(), s && s(c), R && R(!1), M) {
194
- const P = u === "project" ? "View reset to project base view" : u === "studio" ? "View reset to studio base view" : "View reset to default settings";
194
+ const P = u === "project" ? "View reset to project default view" : u === "studio" ? "View reset to studio default view" : "View reset to default settings";
195
195
  q.success(P);
196
196
  }
197
197
  return c;
@@ -1 +1 @@
1
- {"version":3,"file":"useViewsMutations.es.js","sources":["../../../../../../src/containers/Views/hooks/useViewsMutations.ts"],"sourcesContent":["import {\n CreateViewApiArg,\n useCreateViewMutation,\n useDeleteViewMutation,\n useUpdateViewMutation,\n useSetDefaultViewMutation,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport { useCallback } from 'react'\nimport { useDispatch } from 'react-redux'\nimport type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\nimport { ViewData } from '../context/ViewsContext'\nimport { generateWorkingView } from '../utils/generateWorkingView'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n viewType?: string\n projectName?: string\n viewsList?: ViewListItemModel[]\n onCreate?: (view: ViewData) => void\n onUpdate?: (view: ViewData) => void\n onDelete?: (viewId: string) => void\n}\n\nexport type UseViewMutations = {\n onCreateView: (payload: CreateViewApiArg['payload'], isStudioScope: boolean) => Promise<void>\n onDeleteView: (viewId: string, isStudioScope: boolean) => Promise<void>\n onUpdateView: (\n viewId: string,\n payload: Partial<ViewData>,\n isStudioScope: boolean,\n ) => Promise<void>\n onResetWorkingView: (args?: {\n existingWorkingViewId?: string\n selectedViewId?: string\n setSelectedView?: (id: string) => void\n setSettingsChanged?: (changed: boolean) => void\n notify?: boolean\n }) => Promise<string>\n}\ntype R = UseViewMutations\n\nexport const useViewsMutations = ({\n viewType,\n projectName,\n viewsList,\n onCreate,\n onDelete,\n onUpdate,\n}: Props): UseViewMutations => {\n // forward mutations to the dialog\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\n const [createView] = useCreateViewMutation()\n const [deleteView] = useDeleteViewMutation()\n const [updateView] = useUpdateViewMutation()\n const [setDefaultView] = useSetDefaultViewMutation()\n\n\n const onCreateView = useCallback<R['onCreateView']>(\n async (payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for creating a view')\n }\n\n try {\n await createView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onCreate) {\n onCreate(payload as ViewData)\n }\n } catch (error) {\n console.error('Failed to create view:', error)\n throw error\n }\n },\n [createView, viewType, projectName, onCreate],\n )\n\n const onUpdateView = useCallback<R['onUpdateView']>(\n async (viewId, payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for updating a view')\n }\n\n try {\n await updateView({\n viewId,\n viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onUpdate) {\n onUpdate({ ...payload, id: viewId } as ViewData)\n }\n } catch (error) {\n console.error('Failed to update view:', error)\n throw error\n }\n },\n [updateView, viewType, projectName, onUpdate],\n )\n\n const onDeleteView = useCallback<R['onDeleteView']>(\n async (viewId, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for deleting a view')\n }\n\n try {\n await deleteView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n viewId,\n }).unwrap()\n\n if (onDelete) {\n onDelete(viewId)\n }\n } catch (error) {\n console.error('Failed to delete view:', error)\n throw error\n }\n },\n [deleteView, viewType, projectName, onDelete],\n )\n\n const onResetWorkingView = useCallback<R['onResetWorkingView']>(\n async (args) => {\n const { existingWorkingViewId, selectedViewId, setSelectedView, setSettingsChanged, notify } =\n args || {}\n if (!viewType) {\n throw new Error('viewType are required for resetting a view')\n }\n\n try {\n // Priority order: project base view → studio base view → default (empty settings)\n\n // Invalidate base view cache to ensure fresh data\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'Views', id: `base-${viewType}-${projectName}` },\n { type: 'Views', id: `base-${viewType}` }\n ])\n )\n\n // 1. Try to fetch project base view first (force fresh fetch, no subscription)\n const projectBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType, projectName },\n { subscribe: false, forceRefetch: true }\n )\n )\n const projectBaseViewResult = await projectBaseViewPromise\n const projectBaseView = projectBaseViewResult.data\n\n let templateSettings = {}\n let baseViewSource = 'default'\n\n // Check if project base view exists and has settings\n if (projectBaseView && projectBaseView.settings && Object.keys(projectBaseView.settings).length > 0) {\n templateSettings = projectBaseView.settings\n baseViewSource = 'project'\n } else {\n // 2. If no project base view, try studio base view (force fresh fetch, no subscription)\n const studioBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType },\n { subscribe: false, forceRefetch: true }\n )\n )\n const studioBaseViewResult = await studioBaseViewPromise\n const studioBaseView = studioBaseViewResult.data\n\n // Check if studio base view exists and has settings\n if (studioBaseView && studioBaseView.settings && Object.keys(studioBaseView.settings).length > 0) {\n templateSettings = studioBaseView.settings\n baseViewSource = 'studio'\n }\n // 3. Otherwise, use default (empty settings) - already initialized above\n }\n\n // Determine the view ID to use - use existing working view ID or generate new one\n const viewId: string = existingWorkingViewId ?? generateWorkingView().id as string\n\n // Prepare the working view payload with base view settings\n const workingViewPayload = {\n id: viewId,\n label: 'Working',\n working: true,\n settings: templateSettings,\n }\n\n // Update existing working view or create a new one\n if (existingWorkingViewId) {\n await updateView({\n viewId: existingWorkingViewId,\n viewType,\n projectName,\n payload: { settings: templateSettings },\n }).unwrap()\n } else {\n await createView({\n viewType,\n projectName,\n payload: workingViewPayload,\n }).unwrap()\n }\n\n // Set this working view as the user's default view\n await setDefaultView({\n viewType,\n projectName,\n setDefaultViewRequestModel: { viewId },\n }).unwrap()\n\n // Always switch to the working view after reset\n if (setSelectedView) {\n setSelectedView(viewId)\n }\n\n // Clear settings changed flag when resetting (don't prompt to save previous view)\n if (setSettingsChanged) {\n setSettingsChanged(false)\n }\n\n if (notify) {\n const message =\n baseViewSource === 'project' ? 'View reset to project base view' :\n baseViewSource === 'studio' ? 'View reset to studio base view' :\n 'View reset to default settings'\n toast.success(message)\n }\n\n return viewId\n } catch (error) {\n console.error('Failed to reset working view:', error)\n if (notify) toast.error('Failed to reset view to default')\n throw error\n }\n },\n [createView, updateView, setDefaultView, viewType, projectName, dispatch],\n )\n\n return {\n onCreateView,\n onUpdateView,\n onDeleteView,\n onResetWorkingView,\n }\n}\n"],"names":["useViewsMutations","viewType","projectName","viewsList","onCreate","onDelete","onUpdate","dispatch","useDispatch","createView","useCreateViewMutation","deleteView","useDeleteViewMutation","updateView","useUpdateViewMutation","setDefaultView","useSetDefaultViewMutation","onCreateView","useCallback","payload","isStudioScope","error","onUpdateView","viewId","onDeleteView","onResetWorkingView","args","existingWorkingViewId","selectedViewId","setSelectedView","setSettingsChanged","notify","viewsQueries","projectBaseView","templateSettings","baseViewSource","studioBaseView","generateWorkingView","message","toast"],"mappings":"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"}
1
+ {"version":3,"file":"useViewsMutations.es.js","sources":["../../../../../../src/containers/Views/hooks/useViewsMutations.ts"],"sourcesContent":["import {\n CreateViewApiArg,\n useCreateViewMutation,\n useDeleteViewMutation,\n useUpdateViewMutation,\n useSetDefaultViewMutation,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport { useCallback } from 'react'\nimport { useDispatch } from 'react-redux'\nimport type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\nimport { ViewData } from '../context/ViewsContext'\nimport { generateWorkingView } from '../utils/generateWorkingView'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n viewType?: string\n projectName?: string\n viewsList?: ViewListItemModel[]\n onCreate?: (view: ViewData) => void\n onUpdate?: (view: ViewData) => void\n onDelete?: (viewId: string) => void\n}\n\nexport type UseViewMutations = {\n onCreateView: (payload: CreateViewApiArg['payload'], isStudioScope: boolean) => Promise<void>\n onDeleteView: (viewId: string, isStudioScope: boolean) => Promise<void>\n onUpdateView: (\n viewId: string,\n payload: Partial<ViewData>,\n isStudioScope: boolean,\n ) => Promise<void>\n onResetWorkingView: (args?: {\n existingWorkingViewId?: string\n selectedViewId?: string\n setSelectedView?: (id: string) => void\n setSettingsChanged?: (changed: boolean) => void\n notify?: boolean\n }) => Promise<string>\n}\ntype R = UseViewMutations\n\nexport const useViewsMutations = ({\n viewType,\n projectName,\n viewsList,\n onCreate,\n onDelete,\n onUpdate,\n}: Props): UseViewMutations => {\n // forward mutations to the dialog\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\n const [createView] = useCreateViewMutation()\n const [deleteView] = useDeleteViewMutation()\n const [updateView] = useUpdateViewMutation()\n const [setDefaultView] = useSetDefaultViewMutation()\n\n\n const onCreateView = useCallback<R['onCreateView']>(\n async (payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for creating a view')\n }\n\n try {\n await createView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onCreate) {\n onCreate(payload as ViewData)\n }\n } catch (error) {\n console.error('Failed to create view:', error)\n throw error\n }\n },\n [createView, viewType, projectName, onCreate],\n )\n\n const onUpdateView = useCallback<R['onUpdateView']>(\n async (viewId, payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for updating a view')\n }\n\n try {\n await updateView({\n viewId,\n viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onUpdate) {\n onUpdate({ ...payload, id: viewId } as ViewData)\n }\n } catch (error) {\n console.error('Failed to update view:', error)\n throw error\n }\n },\n [updateView, viewType, projectName, onUpdate],\n )\n\n const onDeleteView = useCallback<R['onDeleteView']>(\n async (viewId, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for deleting a view')\n }\n\n try {\n await deleteView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n viewId,\n }).unwrap()\n\n if (onDelete) {\n onDelete(viewId)\n }\n } catch (error) {\n console.error('Failed to delete view:', error)\n throw error\n }\n },\n [deleteView, viewType, projectName, onDelete],\n )\n\n const onResetWorkingView = useCallback<R['onResetWorkingView']>(\n async (args) => {\n const { existingWorkingViewId, selectedViewId, setSelectedView, setSettingsChanged, notify } =\n args || {}\n if (!viewType) {\n throw new Error('viewType are required for resetting a view')\n }\n\n try {\n // Priority order: project base view → studio base view → default (empty settings)\n\n // Invalidate base view cache to ensure fresh data\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'Views', id: `base-${viewType}-${projectName}` },\n { type: 'Views', id: `base-${viewType}` }\n ])\n )\n\n // 1. Try to fetch project base view first (force fresh fetch, no subscription)\n const projectBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType, projectName },\n { subscribe: false, forceRefetch: true }\n )\n )\n const projectBaseViewResult = await projectBaseViewPromise\n const projectBaseView = projectBaseViewResult.data\n\n let templateSettings = {}\n let baseViewSource = 'default'\n\n // Check if project base view exists and has settings\n if (projectBaseView && projectBaseView.settings && Object.keys(projectBaseView.settings).length > 0) {\n templateSettings = projectBaseView.settings\n baseViewSource = 'project'\n } else {\n // 2. If no project base view, try studio base view (force fresh fetch, no subscription)\n const studioBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType },\n { subscribe: false, forceRefetch: true }\n )\n )\n const studioBaseViewResult = await studioBaseViewPromise\n const studioBaseView = studioBaseViewResult.data\n\n // Check if studio base view exists and has settings\n if (studioBaseView && studioBaseView.settings && Object.keys(studioBaseView.settings).length > 0) {\n templateSettings = studioBaseView.settings\n baseViewSource = 'studio'\n }\n // 3. Otherwise, use default (empty settings) - already initialized above\n }\n\n // Determine the view ID to use - use existing working view ID or generate new one\n const viewId: string = existingWorkingViewId ?? generateWorkingView().id as string\n\n // Prepare the working view payload with base view settings\n const workingViewPayload = {\n id: viewId,\n label: 'Working',\n working: true,\n settings: templateSettings,\n }\n\n // Update existing working view or create a new one\n if (existingWorkingViewId) {\n await updateView({\n viewId: existingWorkingViewId,\n viewType,\n projectName,\n payload: { settings: templateSettings },\n }).unwrap()\n } else {\n await createView({\n viewType,\n projectName,\n payload: workingViewPayload,\n }).unwrap()\n }\n\n // Set this working view as the user's default view\n await setDefaultView({\n viewType,\n projectName,\n setDefaultViewRequestModel: { viewId },\n }).unwrap()\n\n // Always switch to the working view after reset\n if (setSelectedView) {\n setSelectedView(viewId)\n }\n\n // Clear settings changed flag when resetting (don't prompt to save previous view)\n if (setSettingsChanged) {\n setSettingsChanged(false)\n }\n\n if (notify) {\n const message =\n baseViewSource === 'project' ? 'View reset to project default view' :\n baseViewSource === 'studio' ? 'View reset to studio default view' :\n 'View reset to default settings'\n toast.success(message)\n }\n\n return viewId\n } catch (error) {\n console.error('Failed to reset working view:', error)\n if (notify) toast.error('Failed to reset view to default')\n throw error\n }\n },\n [createView, updateView, setDefaultView, viewType, projectName, dispatch],\n )\n\n return {\n onCreateView,\n onUpdateView,\n onDeleteView,\n onResetWorkingView,\n }\n}\n"],"names":["useViewsMutations","viewType","projectName","viewsList","onCreate","onDelete","onUpdate","dispatch","useDispatch","createView","useCreateViewMutation","deleteView","useDeleteViewMutation","updateView","useUpdateViewMutation","setDefaultView","useSetDefaultViewMutation","onCreateView","useCallback","payload","isStudioScope","error","onUpdateView","viewId","onDeleteView","onResetWorkingView","args","existingWorkingViewId","selectedViewId","setSelectedView","setSettingsChanged","notify","viewsQueries","projectBaseView","templateSettings","baseViewSource","studioBaseView","generateWorkingView","message","toast"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/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/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/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/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");const k=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const S=require("./generateWorkingView.cjs.js"),c=require("react-toastify"),w=require("react"),C=require("../context/ViewsContext.cjs.js"),g=async(i,e,u,q={},r,n)=>{try{if(!n)throw"Insufficient arguments provided to updateViewSettings";const{viewSettings:t,viewType:s,projectName:d,selectedView:o,setSelectedView:p,workingView:V,onSettingsChanged:l}=r;if(!s)throw"No view type provided for updating view settings";e(u);const y={...t,...i},a=S.generateWorkingView(y),f=V?.id||a.id,v=n({payload:a,viewType:s,projectName:d});o&&!o.working&&l(!0),p(f),await v,e(null),q.successMessage&&c.toast.success(q.successMessage)}catch(t){e(null),console.error(t);const s=q.errorMessage||`Failed to update view settings: ${t}`;c.toast.error(s)}},M=()=>{const[i]=k.useCreateViewMutation(),e=C.useViewsContext(),u=w.useCallback(async r=>await i(r).unwrap(),[i]);return{updateViewSettings:w.useCallback(async(...r)=>await g(...r,e,u),[e]),onCreateView:u}};exports.updateViewSettings=g;exports.useViewUpdateHelper=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/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/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/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/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");const S=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const M=require("./generateWorkingView.cjs.js"),V=require("react-toastify"),p=require("react"),W=require("../context/ViewsContext.cjs.js"),l=async(u,e,q,t={},r,f)=>{const{viewSettings:y,viewType:o,projectName:k,selectedView:s,setSelectedView:a,workingView:c,onSettingsChanged:w}=r;if(!o)throw new Error("No view type provided for updating view settings");const d=s?.id,g=s?.working;try{e(q);const n={...y,...u},i=M.generateWorkingView(n);c?.id&&(i.id=c.id);const v=i.id,C=f({payload:i,viewType:o,projectName:k});s&&!g&&w(!0),a(v),await C,e(null),t.successMessage&&V.toast.success(t.successMessage)}catch(n){e(null),d&&a(d),s&&!g&&w(!1),console.error(n);const i=t.errorMessage||`Failed to update view settings: ${n}`;V.toast.error(i)}},b=()=>{const[u]=S.useCreateViewMutation(),e=W.useViewsContext(),q=p.useCallback(async r=>await u(r).unwrap(),[u]);return{updateViewSettings:p.useCallback(async(...r)=>await l(...r,e,q),[e]),onCreateView:q}};exports.updateViewSettings=l;exports.useViewUpdateHelper=b;
2
2
  //# sourceMappingURL=viewUpdateHelper.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewUpdateHelper.cjs.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * This helper provides common functionality used by view settings hooks:\n * - Optimistic local state updates for immediate UI response\n * - Background API calls to persist changes\n * - Error handling with state reversion\n * - Working view management\n */\n\nimport { CreateViewApiArg, EntityIdResponse, useCreateViewMutation } from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onCreateView: (payload: CreateViewApiArg) => Promise<EntityIdResponse>,\n): Promise<void> => {\n try {\n // check the correct number of arguments are provided\n if (!onCreateView) {\n throw 'Insufficient arguments provided to updateViewSettings'\n }\n\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n if (!viewType) throw 'No view type provided for updating view settings'\n\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Create settings with updates\n const newSettings = { ...viewSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n // only use the generated ID if there is no working view already\n const newWorkingViewId = workingView?.id || newWorkingView.id\n\n // Make API call in background\n const promise = onCreateView({\n payload: newWorkingView,\n viewType: viewType,\n projectName: projectName,\n })\n\n // if not working: set that the settings have been changed to show the little blue save button\n if (selectedView && !selectedView.working) {\n onSettingsChanged(true)\n }\n // Always switch to the working view after updating anything\n setSelectedView(newWorkingViewId as string)\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n\n const viewContext = useViewsContext()\n\n const onCreateView = useCallback(\n async (payload: CreateViewApiArg) => await createView(payload).unwrap(),\n [createView],\n )\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) => await updateViewSettings(...args, viewContext, onCreateView),\n [viewContext],\n )\n\n return { updateViewSettings: updateViewSettingsHandler, onCreateView }\n}\n"],"names":["updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onCreateView","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","newSettings","newWorkingView","generateWorkingView","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","useViewsContext","useCallback","payload","args"],"mappings":"s2JA4BaA,EAAqB,MAChCC,EACAC,EACAC,EACAC,EAAyB,CAAA,EACzBC,EACAC,IACkB,CAClB,GAAI,CAEF,GAAI,CAACA,EACH,KAAM,wDAGR,KAAM,CACJ,aAAAC,EACA,SAAAC,EACA,YAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,kBAAAC,CAAA,EACER,EACJ,GAAI,CAACG,EAAU,KAAM,mDAGrBN,EAAiBC,CAAa,EAG9B,MAAMW,EAAc,CAAE,GAAGP,EAAc,GAAGN,CAAA,EAGpCc,EAAiBC,EAAAA,oBAAoBF,CAAW,EAEhDG,EAAmBL,GAAa,IAAMG,EAAe,GAGrDG,EAAUZ,EAAa,CAC3B,QAASS,EACT,SAAAP,EACA,YAAAC,CAAA,CACD,EAGGC,GAAgB,CAACA,EAAa,SAChCG,EAAkB,EAAI,EAGxBF,EAAgBM,CAA0B,EAE1C,MAAMC,EAGNhB,EAAiB,IAAI,EAEjBE,EAAQ,gBACVe,QAAM,QAAQf,EAAQ,cAAc,CAExC,OAASgB,EAAO,CAEdlB,EAAiB,IAAI,EACrB,QAAQ,MAAMkB,CAAK,EACnB,MAAMC,EAAWjB,EAAQ,cAAgB,mCAAmCgB,CAAK,GACjFD,EAAAA,MAAM,MAAME,CAAQ,CACtB,CACF,EAEaC,EAAsB,IAAM,CACvC,KAAM,CAACC,CAAU,EAAIC,wBAAA,EAEfnB,EAAcoB,EAAAA,gBAAA,EAEdnB,EAAeoB,EAAAA,YACnB,MAAOC,GAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA,EAC/D,CAACJ,CAAU,CAAA,EAQb,MAAO,CAAE,mBALyBG,EAAAA,YAChC,SAAUE,IAAS,MAAM5B,EAAmB,GAAG4B,EAAMvB,EAAaC,CAAY,EAC9E,CAACD,CAAW,CAAA,EAG0C,aAAAC,CAAA,CAC1D"}
1
+ {"version":3,"file":"viewUpdateHelper.cjs.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * This helper provides common functionality used by view settings hooks:\n * - Optimistic local state updates for immediate UI response\n * - Background API calls to persist changes\n * - Error handling with state reversion\n * - Working view management\n */\n\nimport { CreateViewApiArg, EntityIdResponse, useCreateViewMutation } from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onCreateView: (payload: CreateViewApiArg) => Promise<EntityIdResponse>,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Create settings with updates\n const newSettings = { ...viewSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n if (workingView?.id) {\n newWorkingView.id = workingView.id\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n const promise = onCreateView({\n payload: newWorkingView,\n viewType: viewType,\n projectName: projectName,\n })\n\n // if not working: set that the settings have been changed to show the little blue save button\n if (selectedView && !wasWorking) {\n onSettingsChanged(true)\n }\n // Always switch to the working view after updating anything\n setSelectedView(newWorkingViewId as string)\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n\n const viewContext = useViewsContext()\n\n const onCreateView = useCallback(\n async (payload: CreateViewApiArg) => await createView(payload).unwrap(),\n [createView],\n )\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) => await updateViewSettings(...args, viewContext, onCreateView),\n [viewContext],\n )\n\n return { updateViewSettings: updateViewSettingsHandler, onCreateView }\n}\n"],"names":["updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onCreateView","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","newSettings","newWorkingView","generateWorkingView","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","useViewsContext","useCallback","payload","args"],"mappings":"s2JA4BaA,EAAqB,MAChCC,EACAC,EACAC,EACAC,EAAyB,CAAA,EACzBC,EACAC,IACkB,CAClB,KAAM,CACJ,aAAAC,EACA,SAAAC,EACA,YAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,kBAAAC,CAAA,EACER,EAEJ,GAAI,CAACG,EAAU,MAAM,IAAI,MAAM,kDAAkD,EAEjF,MAAMM,EAAyBJ,GAAc,GACvCK,EAAaL,GAAc,QAEjC,GAAI,CAEFR,EAAiBC,CAAa,EAG9B,MAAMa,EAAc,CAAE,GAAGT,EAAc,GAAGN,CAAA,EAGpCgB,EAAiBC,EAAAA,oBAAoBF,CAAW,EAGlDJ,GAAa,KACfK,EAAe,GAAKL,EAAY,IAElC,MAAMO,EAAmBF,EAAe,GAGlCG,EAAUd,EAAa,CAC3B,QAASW,EACT,SAAAT,EACA,YAAAC,CAAA,CACD,EAGGC,GAAgB,CAACK,GACnBF,EAAkB,EAAI,EAGxBF,EAAgBQ,CAA0B,EAE1C,MAAMC,EAGNlB,EAAiB,IAAI,EAEjBE,EAAQ,gBACViB,QAAM,QAAQjB,EAAQ,cAAc,CAExC,OAASkB,EAAO,CAEdpB,EAAiB,IAAI,EAEjBY,GACFH,EAAgBG,CAAsB,EAGpCJ,GAAgB,CAACK,GACnBF,EAAkB,EAAK,EAGzB,QAAQ,MAAMS,CAAK,EACnB,MAAMC,EAAWnB,EAAQ,cAAgB,mCAAmCkB,CAAK,GACjFD,EAAAA,MAAM,MAAME,CAAQ,CACtB,CACF,EAEaC,EAAsB,IAAM,CACvC,KAAM,CAACC,CAAU,EAAIC,wBAAA,EAEfrB,EAAcsB,EAAAA,gBAAA,EAEdrB,EAAesB,EAAAA,YACnB,MAAOC,GAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA,EAC/D,CAACJ,CAAU,CAAA,EAQb,MAAO,CAAE,mBALyBG,EAAAA,YAChC,SAAUE,IAAS,MAAM9B,EAAmB,GAAG8B,EAAMzB,EAAaC,CAAY,EAC9E,CAACD,CAAW,CAAA,EAG0C,aAAAC,CAAA,CAC1D"}
@@ -80,51 +80,52 @@ import "../../../api/queries/users/updateUsers.es.js";
80
80
  import "../../../api/queries/users/guests.es.js";
81
81
  import "../../../api/queries/versions/updateVersions.es.js";
82
82
  import "../../../api/queries/views/getViews.es.js";
83
- import { useCreateViewMutation as y } from "../../../api/queries/views/updateViews.es.js";
83
+ import { useCreateViewMutation as C } from "../../../api/queries/views/updateViews.es.js";
84
84
  import "../../../api/queries/watchers/getWatchers.es.js";
85
85
  import "../../../api/queries/uris/getUris.es.js";
86
- import { generateWorkingView as k } from "./generateWorkingView.es.js";
87
- import { toast as w } from "react-toastify";
88
- import { useCallback as c } from "react";
89
- import { useViewsContext as C } from "../context/ViewsContext.es.js";
90
- const M = async (r, t, o, p = {}, i, s) => {
86
+ import { generateWorkingView as M } from "./generateWorkingView.es.js";
87
+ import { toast as u } from "react-toastify";
88
+ import { useCallback as V } from "react";
89
+ import { useViewsContext as S } from "../context/ViewsContext.es.js";
90
+ const W = async (o, t, p, m = {}, i, f) => {
91
+ const {
92
+ viewSettings: l,
93
+ viewType: n,
94
+ projectName: v,
95
+ selectedView: e,
96
+ setSelectedView: a,
97
+ workingView: w,
98
+ onSettingsChanged: c
99
+ } = i;
100
+ if (!n) throw new Error("No view type provided for updating view settings");
101
+ const d = e?.id, g = e?.working;
91
102
  try {
92
- if (!s)
93
- throw "Insufficient arguments provided to updateViewSettings";
94
- const {
95
- viewSettings: m,
96
- viewType: e,
97
- projectName: g,
98
- selectedView: n,
99
- setSelectedView: d,
100
- workingView: u,
101
- onSettingsChanged: V
102
- } = i;
103
- if (!e) throw "No view type provided for updating view settings";
104
- t(o);
105
- const f = { ...m, ...r }, a = k(f), l = u?.id || a.id, v = s({
106
- payload: a,
107
- viewType: e,
108
- projectName: g
103
+ t(p);
104
+ const s = { ...l, ...o }, r = M(s);
105
+ w?.id && (r.id = w.id);
106
+ const k = r.id, y = f({
107
+ payload: r,
108
+ viewType: n,
109
+ projectName: v
109
110
  });
110
- n && !n.working && V(!0), d(l), await v, t(null), p.successMessage && w.success(p.successMessage);
111
- } catch (m) {
112
- t(null), console.error(m);
113
- const e = p.errorMessage || `Failed to update view settings: ${m}`;
114
- w.error(e);
111
+ e && !g && c(!0), a(k), await y, t(null), m.successMessage && u.success(m.successMessage);
112
+ } catch (s) {
113
+ t(null), d && a(d), e && !g && c(!1), console.error(s);
114
+ const r = m.errorMessage || `Failed to update view settings: ${s}`;
115
+ u.error(r);
115
116
  }
116
- }, pi = () => {
117
- const [r] = y(), t = C(), o = c(
118
- async (i) => await r(i).unwrap(),
119
- [r]
117
+ }, ei = () => {
118
+ const [o] = C(), t = S(), p = V(
119
+ async (i) => await o(i).unwrap(),
120
+ [o]
120
121
  );
121
- return { updateViewSettings: c(
122
- async (...i) => await M(...i, t, o),
122
+ return { updateViewSettings: V(
123
+ async (...i) => await W(...i, t, p),
123
124
  [t]
124
- ), onCreateView: o };
125
+ ), onCreateView: p };
125
126
  };
126
127
  export {
127
- M as updateViewSettings,
128
- pi as useViewUpdateHelper
128
+ W as updateViewSettings,
129
+ ei as useViewUpdateHelper
129
130
  };
130
131
  //# sourceMappingURL=viewUpdateHelper.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewUpdateHelper.es.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * This helper provides common functionality used by view settings hooks:\n * - Optimistic local state updates for immediate UI response\n * - Background API calls to persist changes\n * - Error handling with state reversion\n * - Working view management\n */\n\nimport { CreateViewApiArg, EntityIdResponse, useCreateViewMutation } from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onCreateView: (payload: CreateViewApiArg) => Promise<EntityIdResponse>,\n): Promise<void> => {\n try {\n // check the correct number of arguments are provided\n if (!onCreateView) {\n throw 'Insufficient arguments provided to updateViewSettings'\n }\n\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n if (!viewType) throw 'No view type provided for updating view settings'\n\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Create settings with updates\n const newSettings = { ...viewSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n // only use the generated ID if there is no working view already\n const newWorkingViewId = workingView?.id || newWorkingView.id\n\n // Make API call in background\n const promise = onCreateView({\n payload: newWorkingView,\n viewType: viewType,\n projectName: projectName,\n })\n\n // if not working: set that the settings have been changed to show the little blue save button\n if (selectedView && !selectedView.working) {\n onSettingsChanged(true)\n }\n // Always switch to the working view after updating anything\n setSelectedView(newWorkingViewId as string)\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n\n const viewContext = useViewsContext()\n\n const onCreateView = useCallback(\n async (payload: CreateViewApiArg) => await createView(payload).unwrap(),\n [createView],\n )\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) => await updateViewSettings(...args, viewContext, onCreateView),\n [viewContext],\n )\n\n return { updateViewSettings: updateViewSettingsHandler, onCreateView }\n}\n"],"names":["updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onCreateView","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","newSettings","newWorkingView","generateWorkingView","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","useViewsContext","useCallback","payload","args"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAMA,IAAqB,OAChCC,GACAC,GACAC,GACAC,IAAyB,CAAA,GACzBC,GACAC,MACkB;AAClB,MAAI;AAEF,QAAI,CAACA;AACH,YAAM;AAGR,UAAM;AAAA,MACJ,cAAAC;AAAA,MACA,UAAAC;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,mBAAAC;AAAA,IAAA,IACER;AACJ,QAAI,CAACG,EAAU,OAAM;AAGrB,IAAAN,EAAiBC,CAAa;AAG9B,UAAMW,IAAc,EAAE,GAAGP,GAAc,GAAGN,EAAA,GAGpCc,IAAiBC,EAAoBF,CAAW,GAEhDG,IAAmBL,GAAa,MAAMG,EAAe,IAGrDG,IAAUZ,EAAa;AAAA,MAC3B,SAASS;AAAA,MACT,UAAAP;AAAA,MACA,aAAAC;AAAA,IAAA,CACD;AAGD,IAAIC,KAAgB,CAACA,EAAa,WAChCG,EAAkB,EAAI,GAGxBF,EAAgBM,CAA0B,GAE1C,MAAMC,GAGNhB,EAAiB,IAAI,GAEjBE,EAAQ,kBACVe,EAAM,QAAQf,EAAQ,cAAc;AAAA,EAExC,SAASgB,GAAO;AAEd,IAAAlB,EAAiB,IAAI,GACrB,QAAQ,MAAMkB,CAAK;AACnB,UAAMC,IAAWjB,EAAQ,gBAAgB,mCAAmCgB,CAAK;AACjF,IAAAD,EAAM,MAAME,CAAQ;AAAA,EACtB;AACF,GAEaC,KAAsB,MAAM;AACvC,QAAM,CAACC,CAAU,IAAIC,EAAA,GAEfnB,IAAcoB,EAAA,GAEdnB,IAAeoB;AAAA,IACnB,OAAOC,MAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA;AAAA,IAC/D,CAACJ,CAAU;AAAA,EAAA;AAQb,SAAO,EAAE,oBALyBG;AAAA,IAChC,UAAUE,MAAS,MAAM5B,EAAmB,GAAG4B,GAAMvB,GAAaC,CAAY;AAAA,IAC9E,CAACD,CAAW;AAAA,EAAA,GAG0C,cAAAC,EAAA;AAC1D;"}
1
+ {"version":3,"file":"viewUpdateHelper.es.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * This helper provides common functionality used by view settings hooks:\n * - Optimistic local state updates for immediate UI response\n * - Background API calls to persist changes\n * - Error handling with state reversion\n * - Working view management\n */\n\nimport { CreateViewApiArg, EntityIdResponse, useCreateViewMutation } from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onCreateView: (payload: CreateViewApiArg) => Promise<EntityIdResponse>,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Create settings with updates\n const newSettings = { ...viewSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n if (workingView?.id) {\n newWorkingView.id = workingView.id\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n const promise = onCreateView({\n payload: newWorkingView,\n viewType: viewType,\n projectName: projectName,\n })\n\n // if not working: set that the settings have been changed to show the little blue save button\n if (selectedView && !wasWorking) {\n onSettingsChanged(true)\n }\n // Always switch to the working view after updating anything\n setSelectedView(newWorkingViewId as string)\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n\n const viewContext = useViewsContext()\n\n const onCreateView = useCallback(\n async (payload: CreateViewApiArg) => await createView(payload).unwrap(),\n [createView],\n )\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) => await updateViewSettings(...args, viewContext, onCreateView),\n [viewContext],\n )\n\n return { updateViewSettings: updateViewSettingsHandler, onCreateView }\n}\n"],"names":["updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onCreateView","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","newSettings","newWorkingView","generateWorkingView","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","useViewsContext","useCallback","payload","args"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAMA,IAAqB,OAChCC,GACAC,GACAC,GACAC,IAAyB,CAAA,GACzBC,GACAC,MACkB;AAClB,QAAM;AAAA,IACJ,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,mBAAAC;AAAA,EAAA,IACER;AAEJ,MAAI,CAACG,EAAU,OAAM,IAAI,MAAM,kDAAkD;AAEjF,QAAMM,IAAyBJ,GAAc,IACvCK,IAAaL,GAAc;AAEjC,MAAI;AAEF,IAAAR,EAAiBC,CAAa;AAG9B,UAAMa,IAAc,EAAE,GAAGT,GAAc,GAAGN,EAAA,GAGpCgB,IAAiBC,EAAoBF,CAAW;AAGtD,IAAIJ,GAAa,OACfK,EAAe,KAAKL,EAAY;AAElC,UAAMO,IAAmBF,EAAe,IAGlCG,IAAUd,EAAa;AAAA,MAC3B,SAASW;AAAA,MACT,UAAAT;AAAA,MACA,aAAAC;AAAA,IAAA,CACD;AAGD,IAAIC,KAAgB,CAACK,KACnBF,EAAkB,EAAI,GAGxBF,EAAgBQ,CAA0B,GAE1C,MAAMC,GAGNlB,EAAiB,IAAI,GAEjBE,EAAQ,kBACViB,EAAM,QAAQjB,EAAQ,cAAc;AAAA,EAExC,SAASkB,GAAO;AAEd,IAAApB,EAAiB,IAAI,GAEjBY,KACFH,EAAgBG,CAAsB,GAGpCJ,KAAgB,CAACK,KACnBF,EAAkB,EAAK,GAGzB,QAAQ,MAAMS,CAAK;AACnB,UAAMC,IAAWnB,EAAQ,gBAAgB,mCAAmCkB,CAAK;AACjF,IAAAD,EAAM,MAAME,CAAQ;AAAA,EACtB;AACF,GAEaC,KAAsB,MAAM;AACvC,QAAM,CAACC,CAAU,IAAIC,EAAA,GAEfrB,IAAcsB,EAAA,GAEdrB,IAAesB;AAAA,IACnB,OAAOC,MAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA;AAAA,IAC/D,CAACJ,CAAU;AAAA,EAAA;AAQb,SAAO,EAAE,oBALyBG;AAAA,IAChC,UAAUE,MAAS,MAAM9B,EAAmB,GAAG8B,GAAMzB,GAAaC,CAAY;AAAA,IAC9E,CAACD,CAAW;AAAA,EAAA,GAG0C,cAAAC,EAAA;AAC1D;"}
@@ -5,5 +5,6 @@ export interface LinkManagerItemProps {
5
5
  isSelected?: boolean;
6
6
  onEntityClick?: (entityId: string, entityType: string) => void;
7
7
  onRemove: (e: React.MouseEvent<HTMLButtonElement>, link: LinkEntity) => void;
8
+ isManager?: boolean;
8
9
  }
9
10
  export declare const LinkManagerItem: FC<LinkManagerItemProps>;
@@ -41,6 +41,7 @@ export interface ViewsContextValue {
41
41
  onCreateBaseView: (isStudioScope: boolean) => Promise<void>;
42
42
  onUpdateBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>;
43
43
  onDeleteBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>;
44
+ onLoadBaseView: (isStudioScope: boolean) => Promise<void>;
44
45
  resetWorkingView: () => Promise<void>;
45
46
  api: typeof viewsQueries;
46
47
  dispatch: any;
@@ -1,14 +1,17 @@
1
- import { ViewSettings } from '../context/ViewsContext';
1
+ import { ViewListItemModel } from '../../../api';
2
+ import { ViewSettings } from '../..';
2
3
  type Props = {
3
4
  viewType?: string;
4
5
  projectName?: string;
5
6
  workingSettings?: ViewSettings;
7
+ workingView?: ViewListItemModel;
6
8
  dispatch?: any;
7
9
  };
8
10
  export type UseBaseViewMutations = {
9
11
  onCreateBaseView: (isStudioScope: boolean) => Promise<void>;
10
12
  onUpdateBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>;
11
13
  onDeleteBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>;
14
+ onLoadBaseView: (isStudioScope: boolean) => Promise<void>;
12
15
  };
13
- export declare const useBaseViewMutations: ({ viewType, projectName, workingSettings, dispatch, }: Props) => UseBaseViewMutations;
16
+ export declare const useBaseViewMutations: ({ viewType, projectName, workingSettings, workingView, dispatch, }: Props) => UseBaseViewMutations;
14
17
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ynput/ayon-frontend-shared",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "Shared React components for AYON frontend",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.es.js",