@ynput/ayon-frontend-shared 0.3.55 → 0.4.0

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 (133) hide show
  1. package/dist/_virtual/index.cjs4.js +1 -1
  2. package/dist/_virtual/index.cjs5.js +1 -1
  3. package/dist/_virtual/index.cjs6.js +1 -1
  4. package/dist/_virtual/index.cjs8.js +1 -1
  5. package/dist/_virtual/index.cjs9.js +1 -1
  6. package/dist/_virtual/index.es15.js +2 -2
  7. package/dist/_virtual/index.es4.js +5 -2
  8. package/dist/_virtual/index.es4.js.map +1 -1
  9. package/dist/_virtual/index.es5.js +2 -5
  10. package/dist/_virtual/index.es5.js.map +1 -1
  11. package/dist/_virtual/index.es6.js +2 -2
  12. package/dist/_virtual/index.es8.js +2 -5
  13. package/dist/_virtual/index.es8.js.map +1 -1
  14. package/dist/_virtual/index.es9.js +5 -2
  15. package/dist/_virtual/index.es9.js.map +1 -1
  16. package/dist/api.cjs.js +1 -1
  17. package/dist/api.es.js +193 -192
  18. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  19. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  20. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  21. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  22. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  23. package/dist/node_modules/remove-accents/index.cjs.js.map +1 -1
  24. package/dist/node_modules/remove-accents/index.es.js +1 -1
  25. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  26. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  27. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  28. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  29. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  30. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  31. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  32. package/dist/shared/node_modules/prop-types/index.cjs.js.map +1 -1
  33. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  34. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  35. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  36. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  37. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  38. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  39. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  40. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  41. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  42. package/dist/shared/src/api/generated/graphql.cjs.js +4 -0
  43. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  44. package/dist/shared/src/api/generated/graphql.es.js +4 -0
  45. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  46. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  47. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  48. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -1
  49. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  50. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +17 -16
  51. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  52. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  53. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  54. package/dist/shared/src/api/queries/entityLists/getLists.es.js +47 -47
  55. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  56. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  57. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  58. package/dist/shared/src/api/queries/folders/getFolders.es.js +20 -22
  59. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  60. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  61. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  62. package/dist/shared/src/api/queries/overview/getOverview.es.js +92 -89
  63. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  64. package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -1
  65. package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
  66. package/dist/shared/src/api/queries/project/getProject.es.js +1 -1
  67. package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/users/getUsers.cjs.js +1 -1
  69. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/users/getUsers.es.js +1 -1
  71. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  73. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  74. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +23 -23
  75. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  76. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js +1 -1
  77. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js.map +1 -1
  78. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js +13 -13
  79. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js.map +1 -1
  80. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +3 -3
  81. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  82. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +51 -50
  83. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  84. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  85. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  86. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +26 -24
  87. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  88. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  89. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  90. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +31 -18
  91. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  92. package/dist/shared/src/containers/ListTable/ListTableWidgets.cjs.js +1 -1
  93. package/dist/shared/src/containers/ListTable/ListTableWidgets.cjs.js.map +1 -1
  94. package/dist/shared/src/containers/ListTable/ListTableWidgets.es.js +62 -58
  95. package/dist/shared/src/containers/ListTable/ListTableWidgets.es.js.map +1 -1
  96. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  97. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  98. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +21 -20
  99. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  100. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  101. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  102. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +25 -24
  103. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  104. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  105. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  106. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +20 -19
  107. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  108. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  109. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  110. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +152 -133
  111. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  112. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  113. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  114. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +75 -73
  115. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  116. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +1 -1
  117. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
  118. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +21 -19
  119. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
  120. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.cjs.js +2 -2
  121. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.cjs.js.map +1 -1
  122. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.es.js +58 -43
  123. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.es.js.map +1 -1
  124. package/dist/types/api/generated/graphql.d.ts +5 -0
  125. package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
  126. package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +1 -0
  127. package/dist/types/api/queries/overview/getOverview.d.ts +2 -1
  128. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +25 -1
  129. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +3 -1
  130. package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +1 -0
  131. package/dist/types/containers/ProjectTreeTable/widgets/DateWidget.d.ts +1 -0
  132. package/dist/types/containers/ProjectTreeTable/widgets/DateWidgetInput.d.ts +1 -0
  133. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../links/getEntityLinks.cjs.js");const l=["task","version","folder","representation"],p=({entity:r,entityType:n,projectName:i})=>{switch(n){case"task":const t=r;return{entityType:"task",entitySubType:t.taskType,projectName:i,id:t.id,name:t.name,label:t.label,tags:t.tags,status:t.status,updatedAt:t.updatedAt,createdAt:t.createdAt,thumbnailHash:t.thumbnailHash,attrib:d.parseAllAttribs(t.allAttrib),hasReviewables:t.hasReviewables,thumbnailId:t.thumbnailId,path:(t.folder?.path||"")+"/"+t.name,parents:t.parents,folder:t.folder,task:{id:t.id,name:t.name,label:t.label,assignees:t.assignees,taskType:t.taskType,subtasks:t.subtasks},product:void 0,version:t.versions?.edges?.[0]?.node};case"version":const e=r;return{entityType:"version",entitySubType:void 0,projectName:i,id:e.id,name:e.name,label:void 0,tags:e.tags,status:e.status,updatedAt:e.updatedAt,createdAt:e.createdAt,thumbnailHash:e.thumbnailHash,attrib:d.parseAllAttribs(e.allAttrib),hasReviewables:e.hasReviewables,thumbnailId:e.thumbnailId,path:(e.product?.folder?.path||"")+"/"+e.product.name+"/"+e.name,parents:e.parents,folder:e.product?.folder,task:e.task??void 0,product:{id:e.product?.id,name:e.product?.name,productType:e.product?.productType,latestVersion:e.product.latestVersion},version:{version:e.version,id:e.id,name:e.name,updatedAt:e.updatedAt,createdAt:e.createdAt,productId:e.product.id,author:e.author,thumbnailId:e.thumbnailId},representations:e.representations?.edges?.map(o=>o.node)||[]};case"folder":const a=r;return{entityType:"folder",entitySubType:a.folderType,projectName:i,id:a.id,name:a.name,label:a.label,tags:a.tags,status:a.status,updatedAt:a.updatedAt,createdAt:a.createdAt,thumbnailHash:a.thumbnailHash,attrib:d.parseAllAttribs(a.allAttrib),hasReviewables:a.hasReviewables,thumbnailId:a.thumbnailId,path:a.path||"",parents:a.parents,folder:{id:a.id,name:a.name,label:a.label,folderType:a.folderType,path:a.path},product:void 0,version:void 0,representations:void 0};case"representation":const s=r;return{entityType:"representation",entitySubType:void 0,projectName:i,id:s.id,name:s.name,label:void 0,tags:s.tags,status:s.status,updatedAt:s.updatedAt,createdAt:s.createdAt,thumbnailHash:"not_supported",attrib:d.parseAllAttribs(s.allAttrib),hasReviewables:void 0,thumbnailId:void 0,path:(s.version?.product?.folder?.path||"")+"/"+(s.version?.product?.name||"")+"/"+s.version?.version+"/"+s.name,parents:s.parents,version:s.version,product:s.version.product,task:s.version.task||void 0,folder:s.version.product?.folder,representations:void 0}}};exports.detailsPanelEntityTypes=l;exports.transformDetailsPanelQueriesData=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../links/getEntityLinks.cjs.js");const l=["task","version","folder","representation"],p=({entity:d,entityType:n,projectName:i})=>{switch(n){case"task":const t=d;return{entityType:"task",entitySubType:t.taskType,projectName:i,id:t.id,name:t.name,label:t.label,tags:t.tags,status:t.status,updatedAt:t.updatedAt,createdAt:t.createdAt,thumbnailHash:t.thumbnailHash,attrib:r.parseJSONField(t.allAttrib),hasReviewables:t.hasReviewables,thumbnailId:t.thumbnailId,path:(t.folder?.path||"")+"/"+t.name,parents:t.parents,folder:t.folder,task:{id:t.id,name:t.name,label:t.label,assignees:t.assignees,taskType:t.taskType,subtasks:t.subtasks},product:void 0,version:t.versions?.edges?.[0]?.node,data:r.parseJSONField(t.data)};case"version":const e=d;return{entityType:"version",entitySubType:void 0,projectName:i,id:e.id,name:e.name,label:void 0,tags:e.tags,status:e.status,updatedAt:e.updatedAt,createdAt:e.createdAt,thumbnailHash:e.thumbnailHash,attrib:r.parseJSONField(e.allAttrib),hasReviewables:e.hasReviewables,thumbnailId:e.thumbnailId,path:(e.product?.folder?.path||"")+"/"+e.product.name+"/"+e.name,parents:e.parents,folder:e.product?.folder,task:e.task??void 0,product:{id:e.product?.id,name:e.product?.name,productType:e.product?.productType,latestVersion:e.product.latestVersion},version:{version:e.version,id:e.id,name:e.name,updatedAt:e.updatedAt,createdAt:e.createdAt,productId:e.product.id,author:e.author,thumbnailId:e.thumbnailId},representations:e.representations?.edges?.map(o=>o.node)||[]};case"folder":const a=d;return{entityType:"folder",entitySubType:a.folderType,projectName:i,id:a.id,name:a.name,label:a.label,tags:a.tags,status:a.status,updatedAt:a.updatedAt,createdAt:a.createdAt,thumbnailHash:a.thumbnailHash,attrib:r.parseJSONField(a.allAttrib),hasReviewables:a.hasReviewables,thumbnailId:a.thumbnailId,path:a.path||"",parents:a.parents,folder:{id:a.id,name:a.name,label:a.label,folderType:a.folderType,path:a.path},product:void 0,version:void 0,representations:void 0};case"representation":const s=d;return{entityType:"representation",entitySubType:void 0,projectName:i,id:s.id,name:s.name,label:void 0,tags:s.tags,status:s.status,updatedAt:s.updatedAt,createdAt:s.createdAt,thumbnailHash:"not_supported",attrib:r.parseJSONField(s.allAttrib),hasReviewables:void 0,thumbnailId:void 0,path:(s.version?.product?.folder?.path||"")+"/"+(s.version?.product?.name||"")+"/"+s.version?.version+"/"+s.name,parents:s.parents,version:s.version,product:s.version.product,task:s.version.task||void 0,folder:s.version.product?.folder,representations:void 0}}};exports.detailsPanelEntityTypes=l;exports.transformDetailsPanelQueriesData=p;
2
2
  //# sourceMappingURL=transformDetailsPanelData.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformDetailsPanelData.cjs.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAllAttribs } from '../overview'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n thumbnailHash: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n path: string\n parents: string[]\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n // subtasks aren't on the shared fragment (version/rep don't need them); the task entity adds them from its own query\n task?: DetailsPanelTaskFragmentFragment & { subtasks?: DetailsPanelTask['subtasks'] }\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt as string,\n createdAt: task.createdAt as string,\n thumbnailHash: task.thumbnailHash,\n attrib: parseAllAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n path: (task.folder?.path || '') + '/' + task.name,\n parents: task.parents,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n subtasks: task.subtasks,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt as string,\n createdAt: version.createdAt as string,\n thumbnailHash: version.thumbnailHash,\n attrib: parseAllAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n path:\n (version.product?.folder?.path || '') + '/' + version.product.name + '/' + version.name,\n parents: version.parents,\n folder: version.product?.folder,\n task: version.task ?? undefined,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n latestVersion: version.product.latestVersion,\n },\n version: {\n version: version.version,\n id: version.id,\n name: version.name,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n productId: version.product.id,\n author: version.author,\n thumbnailId: version.thumbnailId,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt as string,\n createdAt: folder.createdAt as string,\n thumbnailHash: folder.thumbnailHash,\n attrib: parseAllAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n path: folder.path || '',\n parents: folder.parents,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n path: folder.path,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt as string,\n createdAt: representation.createdAt as string,\n thumbnailHash: 'not_supported',\n attrib: parseAllAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n path:\n (representation.version?.product?.folder?.path || '') +\n '/' +\n (representation.version?.product?.name || '') +\n '/' +\n representation.version?.version +\n '/' +\n representation.name,\n parents: representation.parents,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["detailsPanelEntityTypes","transformDetailsPanelQueriesData","entity","entityType","projectName","task","parseAllAttribs","version","edge","folder","representation"],"mappings":"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"}
1
+ {"version":3,"file":"transformDetailsPanelData.cjs.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseJSONField } from '../overview'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n thumbnailHash: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n path: string\n parents: string[]\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n // subtasks aren't on the shared fragment (version/rep don't need them); the task entity adds them from its own query\n task?: DetailsPanelTaskFragmentFragment & { subtasks?: DetailsPanelTask['subtasks'] }\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n data?: Record<string, any>\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt as string,\n createdAt: task.createdAt as string,\n thumbnailHash: task.thumbnailHash,\n attrib: parseJSONField(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n path: (task.folder?.path || '') + '/' + task.name,\n parents: task.parents,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n subtasks: task.subtasks,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n data: parseJSONField(task.data),\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt as string,\n createdAt: version.createdAt as string,\n thumbnailHash: version.thumbnailHash,\n attrib: parseJSONField(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n path:\n (version.product?.folder?.path || '') + '/' + version.product.name + '/' + version.name,\n parents: version.parents,\n folder: version.product?.folder,\n task: version.task ?? undefined,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n latestVersion: version.product.latestVersion,\n },\n version: {\n version: version.version,\n id: version.id,\n name: version.name,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n productId: version.product.id,\n author: version.author,\n thumbnailId: version.thumbnailId,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt as string,\n createdAt: folder.createdAt as string,\n thumbnailHash: folder.thumbnailHash,\n attrib: parseJSONField(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n path: folder.path || '',\n parents: folder.parents,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n path: folder.path,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt as string,\n createdAt: representation.createdAt as string,\n thumbnailHash: 'not_supported',\n attrib: parseJSONField(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n path:\n (representation.version?.product?.folder?.path || '') +\n '/' +\n (representation.version?.product?.name || '') +\n '/' +\n representation.version?.version +\n '/' +\n representation.name,\n parents: representation.parents,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["detailsPanelEntityTypes","transformDetailsPanelQueriesData","entity","entityType","projectName","task","parseJSONField","version","edge","folder","representation"],"mappings":"2QAoBO,MAAMA,EAA0B,CAAC,OAAQ,UAAW,SAAU,gBAAgB,EAyCxEC,EAAmC,CAAC,CAC/C,OAAAC,EACA,WAAAC,EACA,YAAAC,CACF,IAAuD,CACrD,OAAQD,EAAA,CACN,IAAK,OACH,MAAME,EAAOH,EACb,MAAO,CACL,WAAY,OACZ,cAAeG,EAAK,SACpB,YAAAD,EACA,GAAIC,EAAK,GACT,KAAMA,EAAK,KACX,MAAOA,EAAK,MACZ,KAAMA,EAAK,KACX,OAAQA,EAAK,OACb,UAAWA,EAAK,UAChB,UAAWA,EAAK,UAChB,cAAeA,EAAK,cACpB,OAAQC,EAAAA,eAAeD,EAAK,SAAS,EACrC,eAAgBA,EAAK,eACrB,YAAaA,EAAK,YAClB,MAAOA,EAAK,QAAQ,MAAQ,IAAM,IAAMA,EAAK,KAC7C,QAASA,EAAK,QACd,OAAQA,EAAK,OACb,KAAM,CACJ,GAAIA,EAAK,GACT,KAAMA,EAAK,KACX,MAAOA,EAAK,MACZ,UAAWA,EAAK,UAChB,SAAUA,EAAK,SACf,SAAUA,EAAK,QAAA,EAEjB,QAAS,OACT,QAASA,EAAK,UAAU,QAAQ,CAAC,GAAG,KACpC,KAAMC,EAAAA,eAAeD,EAAK,IAAI,CAAA,EAElC,IAAK,UACH,MAAME,EAAUL,EAChB,MAAO,CACL,WAAY,UACZ,cAAe,OACf,YAAAE,EACA,GAAIG,EAAQ,GACZ,KAAMA,EAAQ,KACd,MAAO,OACP,KAAMA,EAAQ,KACd,OAAQA,EAAQ,OAChB,UAAWA,EAAQ,UACnB,UAAWA,EAAQ,UACnB,cAAeA,EAAQ,cACvB,OAAQD,EAAAA,eAAeC,EAAQ,SAAS,EACxC,eAAgBA,EAAQ,eACxB,YAAaA,EAAQ,YACrB,MACGA,EAAQ,SAAS,QAAQ,MAAQ,IAAM,IAAMA,EAAQ,QAAQ,KAAO,IAAMA,EAAQ,KACrF,QAASA,EAAQ,QACjB,OAAQA,EAAQ,SAAS,OACzB,KAAMA,EAAQ,MAAQ,OACtB,QAAS,CACP,GAAIA,EAAQ,SAAS,GACrB,KAAMA,EAAQ,SAAS,KACvB,YAAaA,EAAQ,SAAS,YAC9B,cAAeA,EAAQ,QAAQ,aAAA,EAEjC,QAAS,CACP,QAASA,EAAQ,QACjB,GAAIA,EAAQ,GACZ,KAAMA,EAAQ,KACd,UAAWA,EAAQ,UACnB,UAAWA,EAAQ,UACnB,UAAWA,EAAQ,QAAQ,GAC3B,OAAQA,EAAQ,OAChB,YAAaA,EAAQ,WAAA,EAEvB,gBAAiBA,EAAQ,iBAAiB,OAAO,IAAKC,GAASA,EAAK,IAAI,GAAK,CAAA,CAAC,EAElF,IAAK,SACH,MAAMC,EAASP,EACf,MAAO,CACL,WAAY,SACZ,cAAeO,EAAO,WACtB,YAAAL,EACA,GAAIK,EAAO,GACX,KAAMA,EAAO,KACb,MAAOA,EAAO,MACd,KAAMA,EAAO,KACb,OAAQA,EAAO,OACf,UAAWA,EAAO,UAClB,UAAWA,EAAO,UAClB,cAAeA,EAAO,cACtB,OAAQH,EAAAA,eAAeG,EAAO,SAAS,EACvC,eAAgBA,EAAO,eACvB,YAAaA,EAAO,YACpB,KAAMA,EAAO,MAAQ,GACrB,QAASA,EAAO,QAChB,OAAQ,CACN,GAAIA,EAAO,GACX,KAAMA,EAAO,KACb,MAAOA,EAAO,MACd,WAAYA,EAAO,WACnB,KAAMA,EAAO,IAAA,EAEf,QAAS,OACT,QAAS,OACT,gBAAiB,MAAA,EAErB,IAAK,iBACH,MAAMC,EAAiBR,EACvB,MAAO,CACL,WAAY,iBACZ,cAAe,OACf,YAAAE,EACA,GAAIM,EAAe,GACnB,KAAMA,EAAe,KACrB,MAAO,OACP,KAAMA,EAAe,KACrB,OAAQA,EAAe,OACvB,UAAWA,EAAe,UAC1B,UAAWA,EAAe,UAC1B,cAAe,gBACf,OAAQJ,EAAAA,eAAeI,EAAe,SAAS,EAC/C,eAAgB,OAChB,YAAa,OACb,MACGA,EAAe,SAAS,SAAS,QAAQ,MAAQ,IAClD,KACCA,EAAe,SAAS,SAAS,MAAQ,IAC1C,IACAA,EAAe,SAAS,QACxB,IACAA,EAAe,KACjB,QAASA,EAAe,QACxB,QAASA,EAAe,QACxB,QAASA,EAAe,QAAQ,QAChC,KAAMA,EAAe,QAAQ,MAAQ,OACrC,OAAQA,EAAe,QAAQ,SAAS,OACxC,gBAAiB,MAAA,CACnB,CAEN"}
@@ -1,19 +1,19 @@
1
- import { parseAllAttribs as i } from "../overview/getOverview.es.js";
1
+ import { parseJSONField as r } from "../overview/getOverview.es.js";
2
2
  import "../overview/updateOverview.es.js";
3
3
  import "../versions/getVersionsProducts.es.js";
4
4
  import "../links/getEntityLinks.es.js";
5
5
  const h = ["task", "version", "folder", "representation"], m = ({
6
- entity: r,
6
+ entity: d,
7
7
  entityType: n,
8
- projectName: d
8
+ projectName: i
9
9
  }) => {
10
10
  switch (n) {
11
11
  case "task":
12
- const e = r;
12
+ const e = d;
13
13
  return {
14
14
  entityType: "task",
15
15
  entitySubType: e.taskType,
16
- projectName: d,
16
+ projectName: i,
17
17
  id: e.id,
18
18
  name: e.name,
19
19
  label: e.label,
@@ -22,7 +22,7 @@ const h = ["task", "version", "folder", "representation"], m = ({
22
22
  updatedAt: e.updatedAt,
23
23
  createdAt: e.createdAt,
24
24
  thumbnailHash: e.thumbnailHash,
25
- attrib: i(e.allAttrib),
25
+ attrib: r(e.allAttrib),
26
26
  hasReviewables: e.hasReviewables,
27
27
  thumbnailId: e.thumbnailId,
28
28
  path: (e.folder?.path || "") + "/" + e.name,
@@ -37,14 +37,15 @@ const h = ["task", "version", "folder", "representation"], m = ({
37
37
  subtasks: e.subtasks
38
38
  },
39
39
  product: void 0,
40
- version: e.versions?.edges?.[0]?.node
40
+ version: e.versions?.edges?.[0]?.node,
41
+ data: r(e.data)
41
42
  };
42
43
  case "version":
43
- const t = r;
44
+ const t = d;
44
45
  return {
45
46
  entityType: "version",
46
47
  entitySubType: void 0,
47
- projectName: d,
48
+ projectName: i,
48
49
  id: t.id,
49
50
  name: t.name,
50
51
  label: void 0,
@@ -53,7 +54,7 @@ const h = ["task", "version", "folder", "representation"], m = ({
53
54
  updatedAt: t.updatedAt,
54
55
  createdAt: t.createdAt,
55
56
  thumbnailHash: t.thumbnailHash,
56
- attrib: i(t.allAttrib),
57
+ attrib: r(t.allAttrib),
57
58
  hasReviewables: t.hasReviewables,
58
59
  thumbnailId: t.thumbnailId,
59
60
  path: (t.product?.folder?.path || "") + "/" + t.product.name + "/" + t.name,
@@ -79,11 +80,11 @@ const h = ["task", "version", "folder", "representation"], m = ({
79
80
  representations: t.representations?.edges?.map((o) => o.node) || []
80
81
  };
81
82
  case "folder":
82
- const a = r;
83
+ const a = d;
83
84
  return {
84
85
  entityType: "folder",
85
86
  entitySubType: a.folderType,
86
- projectName: d,
87
+ projectName: i,
87
88
  id: a.id,
88
89
  name: a.name,
89
90
  label: a.label,
@@ -92,7 +93,7 @@ const h = ["task", "version", "folder", "representation"], m = ({
92
93
  updatedAt: a.updatedAt,
93
94
  createdAt: a.createdAt,
94
95
  thumbnailHash: a.thumbnailHash,
95
- attrib: i(a.allAttrib),
96
+ attrib: r(a.allAttrib),
96
97
  hasReviewables: a.hasReviewables,
97
98
  thumbnailId: a.thumbnailId,
98
99
  path: a.path || "",
@@ -109,11 +110,11 @@ const h = ["task", "version", "folder", "representation"], m = ({
109
110
  representations: void 0
110
111
  };
111
112
  case "representation":
112
- const s = r;
113
+ const s = d;
113
114
  return {
114
115
  entityType: "representation",
115
116
  entitySubType: void 0,
116
- projectName: d,
117
+ projectName: i,
117
118
  id: s.id,
118
119
  name: s.name,
119
120
  label: void 0,
@@ -122,7 +123,7 @@ const h = ["task", "version", "folder", "representation"], m = ({
122
123
  updatedAt: s.updatedAt,
123
124
  createdAt: s.createdAt,
124
125
  thumbnailHash: "not_supported",
125
- attrib: i(s.allAttrib),
126
+ attrib: r(s.allAttrib),
126
127
  hasReviewables: void 0,
127
128
  thumbnailId: void 0,
128
129
  path: (s.version?.product?.folder?.path || "") + "/" + (s.version?.product?.name || "") + "/" + s.version?.version + "/" + s.name,
@@ -1 +1 @@
1
- {"version":3,"file":"transformDetailsPanelData.es.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAllAttribs } from '../overview'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n thumbnailHash: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n path: string\n parents: string[]\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n // subtasks aren't on the shared fragment (version/rep don't need them); the task entity adds them from its own query\n task?: DetailsPanelTaskFragmentFragment & { subtasks?: DetailsPanelTask['subtasks'] }\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt as string,\n createdAt: task.createdAt as string,\n thumbnailHash: task.thumbnailHash,\n attrib: parseAllAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n path: (task.folder?.path || '') + '/' + task.name,\n parents: task.parents,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n subtasks: task.subtasks,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt as string,\n createdAt: version.createdAt as string,\n thumbnailHash: version.thumbnailHash,\n attrib: parseAllAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n path:\n (version.product?.folder?.path || '') + '/' + version.product.name + '/' + version.name,\n parents: version.parents,\n folder: version.product?.folder,\n task: version.task ?? undefined,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n latestVersion: version.product.latestVersion,\n },\n version: {\n version: version.version,\n id: version.id,\n name: version.name,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n productId: version.product.id,\n author: version.author,\n thumbnailId: version.thumbnailId,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt as string,\n createdAt: folder.createdAt as string,\n thumbnailHash: folder.thumbnailHash,\n attrib: parseAllAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n path: folder.path || '',\n parents: folder.parents,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n path: folder.path,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt as string,\n createdAt: representation.createdAt as string,\n thumbnailHash: 'not_supported',\n attrib: parseAllAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n path:\n (representation.version?.product?.folder?.path || '') +\n '/' +\n (representation.version?.product?.name || '') +\n '/' +\n representation.version?.version +\n '/' +\n representation.name,\n parents: representation.parents,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["detailsPanelEntityTypes","transformDetailsPanelQueriesData","entity","entityType","projectName","task","parseAllAttribs","version","edge","folder","representation"],"mappings":"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"}
1
+ {"version":3,"file":"transformDetailsPanelData.es.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseJSONField } from '../overview'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n thumbnailHash: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n path: string\n parents: string[]\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n // subtasks aren't on the shared fragment (version/rep don't need them); the task entity adds them from its own query\n task?: DetailsPanelTaskFragmentFragment & { subtasks?: DetailsPanelTask['subtasks'] }\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n data?: Record<string, any>\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt as string,\n createdAt: task.createdAt as string,\n thumbnailHash: task.thumbnailHash,\n attrib: parseJSONField(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n path: (task.folder?.path || '') + '/' + task.name,\n parents: task.parents,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n subtasks: task.subtasks,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n data: parseJSONField(task.data),\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt as string,\n createdAt: version.createdAt as string,\n thumbnailHash: version.thumbnailHash,\n attrib: parseJSONField(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n path:\n (version.product?.folder?.path || '') + '/' + version.product.name + '/' + version.name,\n parents: version.parents,\n folder: version.product?.folder,\n task: version.task ?? undefined,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n latestVersion: version.product.latestVersion,\n },\n version: {\n version: version.version,\n id: version.id,\n name: version.name,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n productId: version.product.id,\n author: version.author,\n thumbnailId: version.thumbnailId,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt as string,\n createdAt: folder.createdAt as string,\n thumbnailHash: folder.thumbnailHash,\n attrib: parseJSONField(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n path: folder.path || '',\n parents: folder.parents,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n path: folder.path,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt as string,\n createdAt: representation.createdAt as string,\n thumbnailHash: 'not_supported',\n attrib: parseJSONField(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n path:\n (representation.version?.product?.folder?.path || '') +\n '/' +\n (representation.version?.product?.name || '') +\n '/' +\n representation.version?.version +\n '/' +\n representation.name,\n parents: representation.parents,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["detailsPanelEntityTypes","transformDetailsPanelQueriesData","entity","entityType","projectName","task","parseJSONField","version","edge","folder","representation"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("../../base/client.cjs.js");const R=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");const A=require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const Q=require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../links/getEntityLinks.cjs.js");require("lodash");require("react-toastify");require("uuid");const M=require("../../../util/thumbnailWebsocket.cjs.js");require("../actions/getActions.cjs.js");require("../activities/getActivities.cjs.js");require("../activities/updateReaction.cjs.js");require("../activities/getMentions.cjs.js");require("../activities/getCategories.cjs.js");require("../addons/getAddons.cjs.js");require("../addons/updateAddons.cjs.js");require("../attributes/getAttributes.cjs.js");require("../attributes/updateAttributes.cjs.js");require("../authentication/getAuthentication.cjs.js");require("../bundles/getBundles.cjs.js");require("../bundles/updateBundles.cjs.js");require("../cloud/cloud.cjs.js");require("../columnStats/metricTargets.cjs.js");require("../columnStats/groupCounts.cjs.js");require("../config/getConfig.cjs.js");require("../config/updateConfig.cjs.js");require("../entities/getEntity.cjs.js");require("../entities/getEntityPanel.cjs.js");require("../entities/updateEntity.cjs.js");require("./updateLists.cjs.js");require("./getListsAttributes.cjs.js");require("./listItemsColumnStats.cjs.js");require("./updateListsAttributes.cjs.js");require("./listFolders.cjs.js");require("../folders/getFolders.cjs.js");require("../folders/getFolderDeleteInfo.cjs.js");require("../grouping/getGrouping.cjs.js");require("../links/updateLinks.cjs.js");require("../links/getLinks.cjs.js");require("../permissions/getPermissions.cjs.js");require("../products/createProduct.cjs.js");require("../products/getFolderProducts.cjs.js");require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("../projectFolders/projectFolders.cjs.js");require("../review/getReview.cjs.js");require("../review/updateReview.cjs.js");require("../share/share.cjs.js");require("../system/getSystem.cjs.js");require("../tasks/getTasks.cjs.js");require("../tasks/updateTasks.cjs.js");require("../teams/getTeams.cjs.js");require("../userDashboard/getUserDashboard.cjs.js");require("../users/getUsers.cjs.js");require("../users/updateUsers.cjs.js");require("../users/guests.cjs.js");require("../versions/updateVersions.cjs.js");require("../views/getViews.cjs.js");require("../views/updateViews.cjs.js");require("../watchers/getWatchers.cjs.js");require("../uris/getUris.cjs.js");const h=require("../../../util/pubsub.cjs.js"),q=10;function S(s,t,e=5e3){let i=[],r=null;const n=(a,u)=>{i.push({topic:a,message:u}),r||(r=setTimeout(()=>{const o=[...i];i=[],r=null,o.length>0&&s(y=>t(y,o))},e))};return n.clear=()=>{r&&(clearTimeout(r),r=null),i=[]},n}const F=s=>{if(!s)return{};try{return typeof s!="string"?s??{}:JSON.parse(s)}catch(t){return console.warn("Failed to parse entity list data field:",t,s),{}}},v=1e4,P=100,b=R.api.enhanceEndpoints({endpoints:{GetLists:{transformResponse:s=>({lists:s.project.entityLists.edges.map(t=>({...t.node,data:F(t.node.data),attrib:F(t.node.allAttrib)})),pageInfo:s.project.entityLists.pageInfo}),keepUnusedDataFor:q},GetListItems:{transformResponse:s=>{const t=s.project.entityLists.edges[0];if(!t)throw new Error("List does not exist, was it deleted?");return{items:s.project.entityLists.edges.flatMap(e=>e.node.items.edges.map(({node:i,...r})=>({...i,...r,attrib:Q.parseAllAttribs(r.allAttrib)}))),pageInfo:t.node.items.pageInfo}},keepUnusedDataFor:q},GetListsItemsForReviewSession:{transformResponse:s=>({lists:s.project.entityLists.edges.map(t=>t.node),pageInfo:s.project.entityLists.pageInfo}),keepUnusedDataFor:q}}}),G=b.injectEndpoints({endpoints:s=>({getListsInfinite:s.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:""},getNextPageParam:t=>{const{pageInfo:e}=t;if(!(!e.hasNextPage||!e.endCursor))return{cursor:e.endCursor}}},queryFn:async({queryArg:t,pageParam:e},i)=>{try{const{cursor:r}=e,n={...t,first:v,after:r||void 0},a=await i.dispatch(b.endpoints.GetLists.initiate(n,{forceRefetch:!0}));return a.error?{error:a.error}:{data:a.data||{lists:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}}}}catch(r){return console.error("Error in getListsInfinite queryFn:",r),{error:{status:"FETCH_ERROR",error:r.message}}}},providesTags:t=>{const e=t?.pages.flatMap(i=>i.lists)||[];return[{type:"entityList",id:"LIST"},...e.flatMap(i=>[{type:"entityList",id:i.id},{type:"entityList",id:i.entityListType},{type:"entityList",id:i.entityListFolderId||"NO_FOLDER"}])]},async onCacheEntryAdded({projectName:t},{cacheDataLoaded:e,cacheEntryRemoved:i,updateCachedData:r}){const n=["entity_list.changed","entity_list.created","entity_list.deleted"];let a=null;try{await e,a=S(r,(u,o)=>{o.forEach(({topic:y,message:_})=>{const l=_.summary,f=l.id;if(!f)return;const I=c=>({projectName:t,tags:[],data:{},allAttrib:"",attrib:{},createdAt:new Date().toISOString(),updatedAt:"",active:!0,access:"",accessLevel:30,...c||{},id:l.id,label:l.label,entityType:l.entity_type,entityListType:l.entity_list_type,count:l.count});if(y==="entity_list.changed"){const c=u.pages.flatMap(E=>E.lists).find(E=>E.id===f);if(!c)return;const m=I(c);Object.assign(c,m)}else if(y==="entity_list.created"){const c=I();u.pages.length!==0&&u.pages[0].lists.unshift(c)}else y==="entity_list.deleted"&&u.pages.forEach(c=>{c.lists=c.lists.filter(m=>m.id!==f)})})},1e4),n.forEach(u=>h.subscribe(u,a))}catch{}await i,n.forEach(u=>h.unsubscribe(u)),a&&typeof a.clear=="function"&&a.clear()},keepUnusedDataFor:q}),getListItemsInfinite:s.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:""},getNextPageParam:t=>{const{pageInfo:e}=t;if(!(!(e.hasNextPage||e.hasPreviousPage)||!e.endCursor))return{cursor:e.endCursor}}},queryFn:async({queryArg:t,pageParam:e},i)=>{try{const{sortBy:r,desc:n,...a}=t,{cursor:u}=e,o={...a,first:P,after:u||void 0};o.after=u||void 0,o.first=P,r&&(o.sortBy=r,n&&(o.before=u||void 0,o.after=void 0,o.last=P,o.first=void 0));const y=await i.dispatch(b.endpoints.GetListItems.initiate(o,{forceRefetch:!0}));return y.error?{error:y.error}:{data:y.data||{items:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}}}}catch(r){return console.error("Error in getListsInfinite queryFn:",r),{error:{status:"FETCH_ERROR",error:r.message}}}},providesTags:(t,e,{listId:i,projectName:r})=>[{type:"entityListItem",id:"LIST"},{type:"entityListItem",id:i},{type:"entityListItem",id:r},...(t?.pages.flatMap(n=>n.items)||[]).filter(n=>!!n).flatMap(n=>[{type:"entityListItem",id:n.id},{type:"entityListItem",id:n.entityId}])],async onCacheEntryAdded(t,{cacheDataLoaded:e,cacheEntryRemoved:i,dispatch:r,updateCachedData:n}){let a,u,o;try{const f=(await e).data.pages.flatMap(d=>d.items)[0]?.entityType;o=M.subscribeToThumbnailUpdates(d=>{n(g=>{g?.pages&&d.forEach(L=>{g.pages.forEach(p=>{(p.items||[]).forEach(T=>{T.entityId===L.summary.entityId&&T.entityType===L.summary.entityType&&L.summary.thumbnailHash&&(T.thumbnailHash=L.summary.thumbnailHash)})})})})});const I="entity_list.changed",c=`entity.${f}`,m=d=>{r(R.api.util.invalidateTags([{type:"entityListItem",id:d}]))},E=(d,g)=>{if(d!==I)return;const p=g.summary.id;p&&m(p)},C=(d,g)=>{if(!d.startsWith(c))return;const p=g.summary.entityId;p&&m(p)};a=h.subscribe(I,E),f&&(u=h.subscribe(c,C))}catch{}await i,h.unsubscribe(a),h.unsubscribe(u),o&&o()},keepUnusedDataFor:q}),getListsItemsForReviewSession:s.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:""},getNextPageParam:t=>{const{pageInfo:e}=t;if(!(!e.hasNextPage||!e.endCursor))return{cursor:e.endCursor}}},queryFn:async({queryArg:t,pageParam:e},i)=>{try{const{cursor:r}=e,n={...t,first:v,after:r||void 0},a=await i.dispatch(b.endpoints.GetListsItemsForReviewSession.initiate(n,{forceRefetch:!0}));return a.error?{error:a.error}:{data:a.data||{lists:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}}}}catch(r){return console.error("Error in getListsInfinite queryFn:",r),{error:{status:"FETCH_ERROR",error:r.message}}}},providesTags:t=>[{type:"entityList",id:"LIST"},...(t?.pages.flatMap(e=>e.lists)||[]).map(e=>({type:"entityList",id:e.id}))],keepUnusedDataFor:q})})}),w=A.api.enhanceEndpoints({endpoints:{getEntityList:{providesTags:(s,t,{listId:e,projectName:i})=>[{type:"entityList",id:e},{type:"entityList",id:i},...s?[{type:"entityList",id:s.entityListType},{type:"entityList",id:s.entityListFolderId||"NO_FOLDER"}]:[]],keepUnusedDataFor:q}}}),{useGetListsInfiniteInfiniteQuery:O,useGetListItemsInfiniteInfiniteQuery:N,useGetListsItemsForReviewSessionInfiniteQuery:j,useLazyGetListsItemsForReviewSessionQuery:k,useLazyGetListItemsQuery:x}=G,{useGetEntityListQuery:D}=w;exports.LISTS_PER_PAGE=v;exports.LIST_ITEMS_PER_PAGE=P;exports.createBatchedCacheUpdater=S;exports.default=G;exports.getListsApiEnhanced=w;exports.useGetEntityListQuery=D;exports.useGetListItemsInfiniteInfiniteQuery=N;exports.useGetListsInfiniteInfiniteQuery=O;exports.useGetListsItemsForReviewSessionInfiniteQuery=j;exports.useLazyGetListItemsQuery=x;exports.useLazyGetListsItemsForReviewSessionQuery=k;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("../../base/client.cjs.js");const R=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");const Q=require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const M=require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../links/getEntityLinks.cjs.js");require("lodash");require("react-toastify");require("uuid");const O=require("../../../util/thumbnailWebsocket.cjs.js");require("../actions/getActions.cjs.js");require("../activities/getActivities.cjs.js");require("../activities/updateReaction.cjs.js");require("../activities/getMentions.cjs.js");require("../activities/getCategories.cjs.js");require("../addons/getAddons.cjs.js");require("../addons/updateAddons.cjs.js");require("../attributes/getAttributes.cjs.js");require("../attributes/updateAttributes.cjs.js");require("../authentication/getAuthentication.cjs.js");require("../bundles/getBundles.cjs.js");require("../bundles/updateBundles.cjs.js");require("../cloud/cloud.cjs.js");require("../columnStats/metricTargets.cjs.js");require("../columnStats/groupCounts.cjs.js");require("../config/getConfig.cjs.js");require("../config/updateConfig.cjs.js");require("../entities/getEntity.cjs.js");require("../entities/getEntityPanel.cjs.js");require("../entities/updateEntity.cjs.js");require("./updateLists.cjs.js");require("./getListsAttributes.cjs.js");require("./listItemsColumnStats.cjs.js");require("./updateListsAttributes.cjs.js");require("./listFolders.cjs.js");require("../folders/getFolders.cjs.js");require("../folders/getFolderDeleteInfo.cjs.js");require("../grouping/getGrouping.cjs.js");require("../links/updateLinks.cjs.js");require("../links/getLinks.cjs.js");require("../permissions/getPermissions.cjs.js");require("../products/createProduct.cjs.js");require("../products/getFolderProducts.cjs.js");require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("../projectFolders/projectFolders.cjs.js");require("../review/getReview.cjs.js");require("../review/updateReview.cjs.js");require("../share/share.cjs.js");require("../system/getSystem.cjs.js");require("../tasks/getTasks.cjs.js");require("../tasks/updateTasks.cjs.js");require("../teams/getTeams.cjs.js");require("../userDashboard/getUserDashboard.cjs.js");require("../users/getUsers.cjs.js");require("../users/updateUsers.cjs.js");require("../users/guests.cjs.js");require("../versions/updateVersions.cjs.js");require("../views/getViews.cjs.js");require("../views/updateViews.cjs.js");require("../watchers/getWatchers.cjs.js");require("../uris/getUris.cjs.js");const h=require("../../../util/pubsub.cjs.js"),q=10;function S(s,t,e=5e3){let i=[],r=null;const n=(a,u)=>{i.push({topic:a,message:u}),r||(r=setTimeout(()=>{const o=[...i];i=[],r=null,o.length>0&&s(y=>t(y,o))},e))};return n.clear=()=>{r&&(clearTimeout(r),r=null),i=[]},n}const F=s=>{if(!s)return{};try{return typeof s!="string"?s??{}:JSON.parse(s)}catch(t){return console.warn("Failed to parse entity list data field:",t,s),{}}},v=1e4,b=100,P=R.api.enhanceEndpoints({endpoints:{GetLists:{transformResponse:s=>({lists:s.project.entityLists.edges.map(t=>({...t.node,data:F(t.node.data),attrib:F(t.node.allAttrib)})),pageInfo:s.project.entityLists.pageInfo}),keepUnusedDataFor:q},GetListItems:{transformResponse:s=>{const t=s.project.entityLists.edges[0];if(!t)throw new Error("List does not exist, was it deleted?");return{items:s.project.entityLists.edges.flatMap(e=>e.node.items.edges.map(({node:i,...r})=>({...i,...r,attrib:M.parseJSONField(r.allAttrib)}))),pageInfo:t.node.items.pageInfo}},keepUnusedDataFor:q},GetListsItemsForReviewSession:{transformResponse:s=>({lists:s.project.entityLists.edges.map(t=>t.node),pageInfo:s.project.entityLists.pageInfo}),keepUnusedDataFor:q}}}),G=P.injectEndpoints({endpoints:s=>({getListsInfinite:s.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:""},getNextPageParam:t=>{const{pageInfo:e}=t;if(!(!e.hasNextPage||!e.endCursor))return{cursor:e.endCursor}}},queryFn:async({queryArg:t,pageParam:e},i)=>{try{const{cursor:r}=e,n={...t,first:v,after:r||void 0},a=await i.dispatch(P.endpoints.GetLists.initiate(n,{forceRefetch:!0}));return a.error?{error:a.error}:{data:a.data||{lists:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}}}}catch(r){return console.error("Error in getListsInfinite queryFn:",r),{error:{status:"FETCH_ERROR",error:r.message}}}},providesTags:t=>{const e=t?.pages.flatMap(i=>i.lists)||[];return[{type:"entityList",id:"LIST"},...e.flatMap(i=>[{type:"entityList",id:i.id},{type:"entityList",id:i.entityListType},{type:"entityList",id:i.entityListFolderId||"NO_FOLDER"}])]},async onCacheEntryAdded({projectName:t},{cacheDataLoaded:e,cacheEntryRemoved:i,updateCachedData:r}){const n=["entity_list.changed","entity_list.created","entity_list.deleted"];let a=null;try{await e,a=S(r,(u,o)=>{o.forEach(({topic:y,message:_})=>{const p=_.summary,f=p.id;if(!f)return;const I=c=>({projectName:t,tags:[],data:{},allAttrib:"",attrib:{},createdAt:new Date().toISOString(),updatedAt:"",active:!0,access:"",accessLevel:30,...c||{},id:p.id,label:p.label,entityType:p.entity_type,entityListType:p.entity_list_type,count:p.count});if(y==="entity_list.changed"){const c=u.pages.flatMap(E=>E.lists).find(E=>E.id===f);if(!c)return;const m=I(c);Object.assign(c,m)}else if(y==="entity_list.created"){const c=I();u.pages.length!==0&&u.pages[0].lists.unshift(c)}else y==="entity_list.deleted"&&u.pages.forEach(c=>{c.lists=c.lists.filter(m=>m.id!==f)})})},1e4),n.forEach(u=>h.subscribe(u,a))}catch{}await i,n.forEach(u=>h.unsubscribe(u)),a&&typeof a.clear=="function"&&a.clear()},keepUnusedDataFor:q}),getListItemsInfinite:s.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:""},getNextPageParam:t=>{const{pageInfo:e}=t;if(!(!(e.hasNextPage||e.hasPreviousPage)||!e.endCursor))return{cursor:e.endCursor}}},queryFn:async({queryArg:t,pageParam:e},i)=>{try{const{sortBy:r,desc:n,...a}=t,{cursor:u}=e,o={...a,first:b,after:u||void 0};o.after=u||void 0,o.first=b,r&&(o.sortBy=r,n&&(o.before=u||void 0,o.after=void 0,o.last=b,o.first=void 0));const y=await i.dispatch(P.endpoints.GetListItems.initiate(o,{forceRefetch:!0}));return y.error?{error:y.error}:{data:y.data||{items:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}}}}catch(r){return console.error("Error in getListsInfinite queryFn:",r),{error:{status:"FETCH_ERROR",error:r.message}}}},providesTags:(t,e,{listId:i,projectName:r})=>[{type:"entityListItem",id:"LIST"},{type:"entityListItem",id:i},{type:"entityListItem",id:r},...(t?.pages.flatMap(n=>n.items)||[]).filter(n=>!!n).flatMap(n=>[{type:"entityListItem",id:n.id},{type:"entityListItem",id:n.entityId}])],async onCacheEntryAdded(t,{cacheDataLoaded:e,cacheEntryRemoved:i,dispatch:r,updateCachedData:n}){let a,u,o;try{const f=(await e).data.pages.flatMap(d=>d.items)[0]?.entityType;o=O.subscribeToThumbnailUpdates(d=>{n(g=>{g?.pages&&d.forEach(L=>{g.pages.forEach(l=>{(l.items||[]).forEach(T=>{T.entityId===L.summary.entityId&&T.entityType===L.summary.entityType&&L.summary.thumbnailHash&&(T.thumbnailHash=L.summary.thumbnailHash)})})})})});const I="entity_list.changed",c=`entity.${f}`,m=d=>{r(R.api.util.invalidateTags([{type:"entityListItem",id:d}]))},E=(d,g)=>{if(d!==I)return;const l=g.summary.id;l&&m(l)},C=(d,g)=>{if(!d.startsWith(c))return;const l=g.summary.entityId;l&&m(l)};a=h.subscribe(I,E),f&&(u=h.subscribe(c,C))}catch{}await i,h.unsubscribe(a),h.unsubscribe(u),o&&o()},keepUnusedDataFor:q}),getListsItemsForReviewSession:s.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:""},getNextPageParam:t=>{const{pageInfo:e}=t;if(!(!e.hasNextPage||!e.endCursor))return{cursor:e.endCursor}}},queryFn:async({queryArg:t,pageParam:e},i)=>{try{const{cursor:r}=e,n={...t,first:v,after:r||void 0},a=await i.dispatch(P.endpoints.GetListsItemsForReviewSession.initiate(n,{forceRefetch:!0}));return a.error?{error:a.error}:{data:a.data||{lists:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}}}}catch(r){return console.error("Error in getListsInfinite queryFn:",r),{error:{status:"FETCH_ERROR",error:r.message}}}},providesTags:t=>[{type:"entityList",id:"LIST"},...(t?.pages.flatMap(e=>e.lists)||[]).map(e=>({type:"entityList",id:e.id}))],keepUnusedDataFor:q})})}),w=Q.api.enhanceEndpoints({endpoints:{getEntityList:{providesTags:(s,t,{listId:e,projectName:i})=>[{type:"entityList",id:e},{type:"entityList",id:i},...s?[{type:"entityList",id:s.entityListType},{type:"entityList",id:s.entityListFolderId||"NO_FOLDER"}]:[]],keepUnusedDataFor:q}}}),{useGetListsInfiniteInfiniteQuery:A,useGetListItemsInfiniteInfiniteQuery:N,useGetListsItemsForReviewSessionInfiniteQuery:j,useLazyGetListsItemsForReviewSessionQuery:k,useLazyGetListItemsQuery:x}=G,{useGetEntityListQuery:D}=w;exports.LISTS_PER_PAGE=v;exports.LIST_ITEMS_PER_PAGE=b;exports.createBatchedCacheUpdater=S;exports.default=G;exports.getListsApiEnhanced=w;exports.useGetEntityListQuery=D;exports.useGetListItemsInfiniteInfiniteQuery=N;exports.useGetListsInfiniteInfiniteQuery=A;exports.useGetListsItemsForReviewSessionInfiniteQuery=j;exports.useLazyGetListItemsQuery=x;exports.useLazyGetListsItemsForReviewSessionQuery=k;
2
2
  //# sourceMappingURL=getLists.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { entityListsApi, gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n EntityList,\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsItemsForReviewSessionQuery,\n GetListsItemsForReviewSessionResult,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\nconst CACHE_TIME = 10 // seconds\n\n// Helper function to batch pub/sub messages to avoid constant cache updates\nexport function createBatchedCacheUpdater<TMessage, TDraft>(\n updateCachedData: (updater: (draft: TDraft) => void) => void,\n applyBatch: (draft: TDraft, batch: { topic: string; message: TMessage }[]) => void,\n delay = 5000,\n) {\n let queue: { topic: string; message: TMessage }[] = []\n let timeout: ReturnType<typeof setTimeout> | null = null\n\n const handler = (topic: string, message: TMessage) => {\n queue.push({ topic, message })\n if (!timeout) {\n timeout = setTimeout(() => {\n const batch = [...queue]\n queue = []\n timeout = null\n if (batch.length > 0) {\n updateCachedData((draft) => applyBatch(draft, batch))\n }\n }, delay)\n }\n }\n\n handler.clear = () => {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n queue = []\n }\n\n return handler\n}\n\n// Helper function to safely parse entity list data field from JSON string to object\nconst parseJSON = (data: string | null | undefined): Record<string, any> => {\n if (!data) return {}\n\n try {\n if (typeof data !== 'string') {\n return (data as unknown as Record<string, any>) ?? {}\n }\n return JSON.parse(data)\n } catch (e) {\n console.warn('Failed to parse entity list data field:', e, data)\n return {}\n }\n}\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 10000\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n GetListsItemsForReviewSession: OverrideResultType<\n Definitions['GetListsItemsForReviewSession'],\n GetListsItemsForReviewSessionResult\n >\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => ({\n ...edge.node,\n data: parseJSON(edge.node.data),\n attrib: parseJSON(edge.node.allAttrib),\n })),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n keepUnusedDataFor: CACHE_TIME,\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n const firstEdge = response.project.entityLists.edges[0]\n if (!firstEdge) {\n throw new Error('List does not exist, was it deleted?')\n }\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: firstEdge.node.items.pageInfo,\n }\n },\n keepUnusedDataFor: CACHE_TIME,\n },\n GetListsItemsForReviewSession: {\n transformResponse: (\n response: GetListsItemsForReviewSessionQuery,\n ): GetListsItemsForReviewSessionResult => {\n return {\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n keepUnusedDataFor: CACHE_TIME,\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) {\n // Preserve original error (e.g. 403) so the UI can react accordingly\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => {\n const lists = result?.pages.flatMap((page) => page.lists) || []\n return [\n { type: 'entityList', id: 'LIST' },\n ...lists.flatMap((list) => [\n { type: 'entityList' as const, id: list.id },\n { type: 'entityList' as const, id: list.entityListType },\n { type: 'entityList' as const, id: list.entityListFolderId || 'NO_FOLDER' },\n ]),\n ]\n },\n async onCacheEntryAdded(\n { projectName },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData },\n ) {\n const topics = ['entity_list.changed', 'entity_list.created', 'entity_list.deleted']\n let handlePubSub: any = null\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n handlePubSub = createBatchedCacheUpdater<ListItemMessage, any>(\n updateCachedData,\n (draft, batch) => {\n batch.forEach(({ topic, message }) => {\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n const getListFromSummary = (list?: EntityList): EntityList => {\n return {\n // defaults\n projectName: projectName,\n tags: [],\n data: {},\n allAttrib: '',\n attrib: {},\n createdAt: new Date().toISOString(),\n updatedAt: '',\n active: true,\n access: '',\n accessLevel: 30, // default admin\n // existing data\n ...(list || {}),\n // new data\n id: summary.id as string,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n }\n\n if (topic === 'entity_list.changed') {\n // update the data of existing list in cache\n const list = draft.pages\n .flatMap((page: any) => page.lists)\n .find((l: any) => l.id === id)\n if (!list) return\n const newList = getListFromSummary(list)\n\n Object.assign(list, newList)\n } else if (topic === 'entity_list.created') {\n // Add new list to the cache using basic summary\n const newList = getListFromSummary()\n // Insert the new list at the beginning of the first page\n if (draft.pages.length !== 0) {\n draft.pages[0].lists.unshift(newList)\n }\n } else if (topic === 'entity_list.deleted') {\n // delete the list from the cache\n draft.pages.forEach((page: any) => {\n page.lists = page.lists.filter((l: any) => l.id !== id)\n })\n }\n })\n },\n 10000, // 10 seconds debounce/batch window\n )\n\n topics.forEach((topic) => PubSub.subscribe(topic, handlePubSub))\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n topics.forEach((t) => PubSub.unsubscribe(t))\n if (handlePubSub && typeof handlePubSub.clear === 'function') handlePubSub.clear()\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n // ascending paginates via hasNextPage, descending (last/before) via\n // hasPreviousPage — the backend only sets one depending on direction\n const hasMore = pageInfo.hasNextPage || pageInfo.hasPreviousPage\n if (!hasMore || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\n ) {\n let token, token2\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft?.pages) return\n messages.forEach((message) => {\n draft.pages.forEach((page: any) => {\n const pageItems = page.items || []\n pageItems.forEach((item: any) => {\n if (\n item.entityId === message.summary.entityId &&\n item.entityType === message.summary.entityType &&\n message.summary.thumbnailHash\n ) {\n item.thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n })\n })\n },\n )\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(token2)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n getListsItemsForReviewSession: build.infiniteQuery<\n GetListsItemsForReviewSessionResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before' | 'filter'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListsItemsForReviewSession.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n keepUnusedDataFor: CACHE_TIME,\n }),\n }),\n})\n\nexport const getListsApiEnhanced = entityListsApi.enhanceEndpoints({\n endpoints: {\n getEntityList: {\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityList', id: listId },\n { type: 'entityList', id: projectName },\n ...(result\n ? [\n { type: 'entityList', id: result.entityListType },\n {\n type: 'entityList',\n id: result.entityListFolderId || 'NO_FOLDER',\n },\n ]\n : []),\n ],\n keepUnusedDataFor: CACHE_TIME,\n },\n },\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useGetListsItemsForReviewSessionInfiniteQuery,\n useLazyGetListsItemsForReviewSessionQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n\nexport const { useGetEntityListQuery } = getListsApiEnhanced\n"],"names":["CACHE_TIME","createBatchedCacheUpdater","updateCachedData","applyBatch","delay","queue","timeout","handler","topic","message","batch","draft","parseJSON","data","e","LISTS_PER_PAGE","LIST_ITEMS_PER_PAGE","getListsGqlApiEnhanced","gqlApi","response","edge","firstEdge","listEdge","node","parseAllAttribs","getListsGqlApiInjected","build","lastPage","pageInfo","queryArg","pageParam","api","cursor","queryParams","result","lists","page","list","projectName","cacheDataLoaded","cacheEntryRemoved","topics","handlePubSub","summary","id","getListFromSummary","l","newList","PubSub","t","sortBy","desc","rest","_e","listId","i","item","_args","dispatch","token","token2","unsubscribeThumbnails","entityType","subscribeToThumbnailUpdates","messages","listTopic","entityTypeTopic","invalidateListItems","handleListMessage","handleEntityMessage","getListsApiEnhanced","entityListsApi","useGetListsInfiniteInfiniteQuery","useGetListItemsInfiniteInfiniteQuery","useGetListsItemsForReviewSessionInfiniteQuery","useLazyGetListsItemsForReviewSessionQuery","useLazyGetListItemsQuery","useGetEntityListQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { entityListsApi, gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n EntityList,\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsItemsForReviewSessionQuery,\n GetListsItemsForReviewSessionResult,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseJSONField } from '../overview'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\nconst CACHE_TIME = 10 // seconds\n\n// Helper function to batch pub/sub messages to avoid constant cache updates\nexport function createBatchedCacheUpdater<TMessage, TDraft>(\n updateCachedData: (updater: (draft: TDraft) => void) => void,\n applyBatch: (draft: TDraft, batch: { topic: string; message: TMessage }[]) => void,\n delay = 5000,\n) {\n let queue: { topic: string; message: TMessage }[] = []\n let timeout: ReturnType<typeof setTimeout> | null = null\n\n const handler = (topic: string, message: TMessage) => {\n queue.push({ topic, message })\n if (!timeout) {\n timeout = setTimeout(() => {\n const batch = [...queue]\n queue = []\n timeout = null\n if (batch.length > 0) {\n updateCachedData((draft) => applyBatch(draft, batch))\n }\n }, delay)\n }\n }\n\n handler.clear = () => {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n queue = []\n }\n\n return handler\n}\n\n// Helper function to safely parse entity list data field from JSON string to object\nconst parseJSON = (data: string | null | undefined): Record<string, any> => {\n if (!data) return {}\n\n try {\n if (typeof data !== 'string') {\n return (data as unknown as Record<string, any>) ?? {}\n }\n return JSON.parse(data)\n } catch (e) {\n console.warn('Failed to parse entity list data field:', e, data)\n return {}\n }\n}\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 10000\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n GetListsItemsForReviewSession: OverrideResultType<\n Definitions['GetListsItemsForReviewSession'],\n GetListsItemsForReviewSessionResult\n >\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => ({\n ...edge.node,\n data: parseJSON(edge.node.data),\n attrib: parseJSON(edge.node.allAttrib),\n })),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n keepUnusedDataFor: CACHE_TIME,\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n const firstEdge = response.project.entityLists.edges[0]\n if (!firstEdge) {\n throw new Error('List does not exist, was it deleted?')\n }\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseJSONField(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: firstEdge.node.items.pageInfo,\n }\n },\n keepUnusedDataFor: CACHE_TIME,\n },\n GetListsItemsForReviewSession: {\n transformResponse: (\n response: GetListsItemsForReviewSessionQuery,\n ): GetListsItemsForReviewSessionResult => {\n return {\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n keepUnusedDataFor: CACHE_TIME,\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) {\n // Preserve original error (e.g. 403) so the UI can react accordingly\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => {\n const lists = result?.pages.flatMap((page) => page.lists) || []\n return [\n { type: 'entityList', id: 'LIST' },\n ...lists.flatMap((list) => [\n { type: 'entityList' as const, id: list.id },\n { type: 'entityList' as const, id: list.entityListType },\n { type: 'entityList' as const, id: list.entityListFolderId || 'NO_FOLDER' },\n ]),\n ]\n },\n async onCacheEntryAdded(\n { projectName },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData },\n ) {\n const topics = ['entity_list.changed', 'entity_list.created', 'entity_list.deleted']\n let handlePubSub: any = null\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n handlePubSub = createBatchedCacheUpdater<ListItemMessage, any>(\n updateCachedData,\n (draft, batch) => {\n batch.forEach(({ topic, message }) => {\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n const getListFromSummary = (list?: EntityList): EntityList => {\n return {\n // defaults\n projectName: projectName,\n tags: [],\n data: {},\n allAttrib: '',\n attrib: {},\n createdAt: new Date().toISOString(),\n updatedAt: '',\n active: true,\n access: '',\n accessLevel: 30, // default admin\n // existing data\n ...(list || {}),\n // new data\n id: summary.id as string,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n }\n\n if (topic === 'entity_list.changed') {\n // update the data of existing list in cache\n const list = draft.pages\n .flatMap((page: any) => page.lists)\n .find((l: any) => l.id === id)\n if (!list) return\n const newList = getListFromSummary(list)\n\n Object.assign(list, newList)\n } else if (topic === 'entity_list.created') {\n // Add new list to the cache using basic summary\n const newList = getListFromSummary()\n // Insert the new list at the beginning of the first page\n if (draft.pages.length !== 0) {\n draft.pages[0].lists.unshift(newList)\n }\n } else if (topic === 'entity_list.deleted') {\n // delete the list from the cache\n draft.pages.forEach((page: any) => {\n page.lists = page.lists.filter((l: any) => l.id !== id)\n })\n }\n })\n },\n 10000, // 10 seconds debounce/batch window\n )\n\n topics.forEach((topic) => PubSub.subscribe(topic, handlePubSub))\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n topics.forEach((t) => PubSub.unsubscribe(t))\n if (handlePubSub && typeof handlePubSub.clear === 'function') handlePubSub.clear()\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n // ascending paginates via hasNextPage, descending (last/before) via\n // hasPreviousPage — the backend only sets one depending on direction\n const hasMore = pageInfo.hasNextPage || pageInfo.hasPreviousPage\n if (!hasMore || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\n ) {\n let token, token2\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft?.pages) return\n messages.forEach((message) => {\n draft.pages.forEach((page: any) => {\n const pageItems = page.items || []\n pageItems.forEach((item: any) => {\n if (\n item.entityId === message.summary.entityId &&\n item.entityType === message.summary.entityType &&\n message.summary.thumbnailHash\n ) {\n item.thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n })\n })\n },\n )\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(token2)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n getListsItemsForReviewSession: build.infiniteQuery<\n GetListsItemsForReviewSessionResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before' | 'filter'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListsItemsForReviewSession.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n keepUnusedDataFor: CACHE_TIME,\n }),\n }),\n})\n\nexport const getListsApiEnhanced = entityListsApi.enhanceEndpoints({\n endpoints: {\n getEntityList: {\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityList', id: listId },\n { type: 'entityList', id: projectName },\n ...(result\n ? [\n { type: 'entityList', id: result.entityListType },\n {\n type: 'entityList',\n id: result.entityListFolderId || 'NO_FOLDER',\n },\n ]\n : []),\n ],\n keepUnusedDataFor: CACHE_TIME,\n },\n },\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useGetListsItemsForReviewSessionInfiniteQuery,\n useLazyGetListsItemsForReviewSessionQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n\nexport const { useGetEntityListQuery } = getListsApiEnhanced\n"],"names":["CACHE_TIME","createBatchedCacheUpdater","updateCachedData","applyBatch","delay","queue","timeout","handler","topic","message","batch","draft","parseJSON","data","e","LISTS_PER_PAGE","LIST_ITEMS_PER_PAGE","getListsGqlApiEnhanced","gqlApi","response","edge","firstEdge","listEdge","node","parseJSONField","getListsGqlApiInjected","build","lastPage","pageInfo","queryArg","pageParam","api","cursor","queryParams","result","lists","page","list","projectName","cacheDataLoaded","cacheEntryRemoved","topics","handlePubSub","summary","id","getListFromSummary","l","newList","PubSub","t","sortBy","desc","rest","_e","listId","i","item","_args","dispatch","token","token2","unsubscribeThumbnails","entityType","subscribeToThumbnailUpdates","messages","listTopic","entityTypeTopic","invalidateListItems","handleListMessage","handleEntityMessage","getListsApiEnhanced","entityListsApi","useGetListsInfiniteInfiniteQuery","useGetListItemsInfiniteInfiniteQuery","useGetListsItemsForReviewSessionInfiniteQuery","useLazyGetListsItemsForReviewSessionQuery","useLazyGetListItemsQuery","useGetEntityListQuery"],"mappings":"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"}