@corva/ui 3.77.0-9 → 3.77.0-rc.1

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 (195) hide show
  1. package/MCP_README.md +9 -6
  2. package/README.md +6 -0
  3. package/cjs-bundle/components/AssetEditorV2/components/MultipleAssetsToggle.js.map +1 -1
  4. package/cjs-bundle/components/AssetEditorV2/components/PrimaryAssetSelect.js +1 -1
  5. package/cjs-bundle/components/AssetEditorV2/components/PrimaryAssetSelect.js.map +1 -1
  6. package/cjs-bundle/components/AssetEditorV2/components/PrimaryAssetSelectV2.js +1 -1
  7. package/cjs-bundle/components/AssetEditorV2/components/PrimaryAssetSelectV2.js.map +1 -1
  8. package/cjs-bundle/components/AssetEditorV2/components/SecondaryAssetSelect.js +1 -1
  9. package/cjs-bundle/components/AssetEditorV2/components/SecondaryAssetSelect.js.map +1 -1
  10. package/cjs-bundle/components/AssetEditorV2/components/SelectItem.js +1 -1
  11. package/cjs-bundle/components/AssetEditorV2/components/SelectItem.js.map +1 -1
  12. package/cjs-bundle/components/AssetEditorV2/constants.js.map +1 -1
  13. package/cjs-bundle/components/AssetEditorV2/effects/assetResponse.js +2 -0
  14. package/cjs-bundle/components/AssetEditorV2/effects/assetResponse.js.map +1 -0
  15. package/cjs-bundle/components/AssetEditorV2/effects/index.js +1 -1
  16. package/cjs-bundle/components/AssetEditorV2/effects/index.js.map +1 -1
  17. package/cjs-bundle/components/AssetEditorV2/effects/usePrimaryAssetSelectData.js +1 -1
  18. package/cjs-bundle/components/AssetEditorV2/effects/usePrimaryAssetSelectData.js.map +1 -1
  19. package/cjs-bundle/components/AssetEditorV2/index.js +1 -1
  20. package/cjs-bundle/components/AssetEditorV2/index.js.map +1 -1
  21. package/cjs-bundle/components/AssetEditorV2/utils/index.js +1 -1
  22. package/cjs-bundle/components/AssetEditorV2/utils/index.js.map +1 -1
  23. package/cjs-bundle/components/AttachmentLightbox/AttachmentDocument.js +1 -1
  24. package/cjs-bundle/components/AttachmentLightbox/AttachmentDocument.js.map +1 -1
  25. package/cjs-bundle/components/CommentComposer/useAttachmentUpload.js +1 -1
  26. package/cjs-bundle/components/CommentComposer/useAttachmentUpload.js.map +1 -1
  27. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js +1 -1
  28. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js.map +1 -1
  29. package/cjs-bundle/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.js +1 -1
  30. package/cjs-bundle/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.js.map +1 -1
  31. package/cjs-bundle/components/OffsetWellPickerV5/components/Filter/components/PeriodFilterSelect/PeriodFilterSelect.js.map +1 -1
  32. package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.js +1 -1
  33. package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.js.map +1 -1
  34. package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.js +1 -1
  35. package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.js.map +1 -1
  36. package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.module.css.js +1 -1
  37. package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableRow/OffsetWellsTableRow.js +1 -1
  38. package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableRow/OffsetWellsTableRow.js.map +1 -1
  39. package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.js +1 -1
  40. package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.js.map +1 -1
  41. package/cjs-bundle/components/OffsetWellPickerV5/constants.js +1 -1
  42. package/cjs-bundle/components/OffsetWellPickerV5/constants.js.map +1 -1
  43. package/cjs-bundle/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.js +1 -1
  44. package/cjs-bundle/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.js.map +1 -1
  45. package/cjs-bundle/components/OffsetWellPickerV5/stores/filter-store/types.js.map +1 -1
  46. package/cjs-bundle/components/OffsetWellPickerV5/utils/getTimestampByPeriod.js +1 -1
  47. package/cjs-bundle/components/OffsetWellPickerV5/utils/getTimestampByPeriod.js.map +1 -1
  48. package/cjs-bundle/components/Search/Search.js.map +1 -1
  49. package/cjs-bundle/config/mapbox/index.js +1 -1
  50. package/cjs-bundle/config/mapbox/index.js.map +1 -1
  51. package/cjs-bundle/hocs/withAssetEditorLockHOC.js +1 -1
  52. package/cjs-bundle/hocs/withAssetEditorLockHOC.js.map +1 -1
  53. package/cjs-bundle/permissions/constants/index.js +1 -1
  54. package/cjs-bundle/permissions/constants/index.js.map +1 -1
  55. package/components/AssetEditorV2/__tests__/AssetEditorV2.test.d.ts +2 -0
  56. package/components/AssetEditorV2/__tests__/AssetEditorV2.test.d.ts.map +1 -0
  57. package/components/AssetEditorV2/__tests__/consumerTypes.test.d.ts +2 -0
  58. package/components/AssetEditorV2/__tests__/consumerTypes.test.d.ts.map +1 -0
  59. package/components/AssetEditorV2/components/MultipleAssetsToggle.d.ts +17 -6
  60. package/components/AssetEditorV2/components/MultipleAssetsToggle.d.ts.map +1 -1
  61. package/components/AssetEditorV2/components/MultipleAssetsToggle.js.map +1 -1
  62. package/components/AssetEditorV2/components/PrimaryAssetSelect.d.ts +30 -39
  63. package/components/AssetEditorV2/components/PrimaryAssetSelect.d.ts.map +1 -1
  64. package/components/AssetEditorV2/components/PrimaryAssetSelect.js +1 -1
  65. package/components/AssetEditorV2/components/PrimaryAssetSelect.js.map +1 -1
  66. package/components/AssetEditorV2/components/PrimaryAssetSelectV2.d.ts +4 -41
  67. package/components/AssetEditorV2/components/PrimaryAssetSelectV2.d.ts.map +1 -1
  68. package/components/AssetEditorV2/components/PrimaryAssetSelectV2.js +1 -1
  69. package/components/AssetEditorV2/components/PrimaryAssetSelectV2.js.map +1 -1
  70. package/components/AssetEditorV2/components/SecondaryAssetSelect.d.ts +22 -18
  71. package/components/AssetEditorV2/components/SecondaryAssetSelect.d.ts.map +1 -1
  72. package/components/AssetEditorV2/components/SecondaryAssetSelect.js +1 -1
  73. package/components/AssetEditorV2/components/SecondaryAssetSelect.js.map +1 -1
  74. package/components/AssetEditorV2/components/SelectItem.d.ts +10 -1
  75. package/components/AssetEditorV2/components/SelectItem.d.ts.map +1 -1
  76. package/components/AssetEditorV2/components/SelectItem.js +1 -1
  77. package/components/AssetEditorV2/components/SelectItem.js.map +1 -1
  78. package/components/AssetEditorV2/components/__tests__/AssetSelectors.test.d.ts +2 -0
  79. package/components/AssetEditorV2/components/__tests__/AssetSelectors.test.d.ts.map +1 -0
  80. package/components/AssetEditorV2/components/__tests__/MultipleAssetsToggle.test.d.ts.map +1 -1
  81. package/components/AssetEditorV2/components/__tests__/SelectItem.test.d.ts.map +1 -1
  82. package/components/AssetEditorV2/components/index.d.ts.map +1 -1
  83. package/components/AssetEditorV2/constants.d.ts +2 -9
  84. package/components/AssetEditorV2/constants.d.ts.map +1 -1
  85. package/components/AssetEditorV2/constants.js.map +1 -1
  86. package/components/AssetEditorV2/effects/__tests__/assetResponse.test.d.ts +2 -0
  87. package/components/AssetEditorV2/effects/__tests__/assetResponse.test.d.ts.map +1 -0
  88. package/components/AssetEditorV2/effects/__tests__/useLegacyPrimaryAssetSelectData.test.d.ts +2 -0
  89. package/components/AssetEditorV2/effects/__tests__/useLegacyPrimaryAssetSelectData.test.d.ts.map +1 -0
  90. package/components/AssetEditorV2/effects/__tests__/usePrimaryAssetSelectData.test.d.ts +2 -0
  91. package/components/AssetEditorV2/effects/__tests__/usePrimaryAssetSelectData.test.d.ts.map +1 -0
  92. package/components/AssetEditorV2/effects/assetResponse.d.ts +4 -0
  93. package/components/AssetEditorV2/effects/assetResponse.d.ts.map +1 -0
  94. package/components/AssetEditorV2/effects/assetResponse.js +2 -0
  95. package/components/AssetEditorV2/effects/assetResponse.js.map +1 -0
  96. package/components/AssetEditorV2/effects/index.d.ts +34 -28
  97. package/components/AssetEditorV2/effects/index.d.ts.map +1 -1
  98. package/components/AssetEditorV2/effects/index.js +1 -1
  99. package/components/AssetEditorV2/effects/index.js.map +1 -1
  100. package/components/AssetEditorV2/effects/usePrimaryAssetSelectData.d.ts +21 -17
  101. package/components/AssetEditorV2/effects/usePrimaryAssetSelectData.d.ts.map +1 -1
  102. package/components/AssetEditorV2/effects/usePrimaryAssetSelectData.js +1 -1
  103. package/components/AssetEditorV2/effects/usePrimaryAssetSelectData.js.map +1 -1
  104. package/components/AssetEditorV2/index.d.ts +36 -67
  105. package/components/AssetEditorV2/index.d.ts.map +1 -1
  106. package/components/AssetEditorV2/index.js +1 -1
  107. package/components/AssetEditorV2/index.js.map +1 -1
  108. package/components/AssetEditorV2/types.d.ts +82 -0
  109. package/components/AssetEditorV2/types.d.ts.map +1 -0
  110. package/components/AssetEditorV2/utils/__tests__/utils.test.d.ts.map +1 -1
  111. package/components/AssetEditorV2/utils/index.d.ts +23 -19
  112. package/components/AssetEditorV2/utils/index.d.ts.map +1 -1
  113. package/components/AssetEditorV2/utils/index.js +1 -1
  114. package/components/AssetEditorV2/utils/index.js.map +1 -1
  115. package/components/AttachmentLightbox/AttachmentDocument.d.ts.map +1 -1
  116. package/components/AttachmentLightbox/AttachmentDocument.js +1 -1
  117. package/components/AttachmentLightbox/AttachmentDocument.js.map +1 -1
  118. package/components/CommentComposer/__tests__/useAttachmentUpload.local.test.d.ts +2 -0
  119. package/components/CommentComposer/__tests__/useAttachmentUpload.local.test.d.ts.map +1 -0
  120. package/components/CommentComposer/useAttachmentUpload.d.ts.map +1 -1
  121. package/components/CommentComposer/useAttachmentUpload.js +1 -1
  122. package/components/CommentComposer/useAttachmentUpload.js.map +1 -1
  123. package/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.d.ts.map +1 -1
  124. package/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js +1 -1
  125. package/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js.map +1 -1
  126. package/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.d.ts.map +1 -1
  127. package/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.js +1 -1
  128. package/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.js.map +1 -1
  129. package/components/Drillstring/BHAComponentDetail/constants.d.ts +2 -2
  130. package/components/OffsetWellPickerV4/effects/__tests__/useCompanyMetricKey.test.d.ts +2 -0
  131. package/components/OffsetWellPickerV4/effects/__tests__/useCompanyMetricKey.test.d.ts.map +1 -0
  132. package/components/OffsetWellPickerV4/effects/useCompanyMetricKey.d.ts.map +1 -1
  133. package/components/OffsetWellPickerV5/__tests__/constants.test.d.ts +2 -0
  134. package/components/OffsetWellPickerV5/__tests__/constants.test.d.ts.map +1 -0
  135. package/components/OffsetWellPickerV5/components/Filter/components/PeriodFilterSelect/PeriodFilterSelect.js.map +1 -1
  136. package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.d.ts +2 -1
  137. package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.d.ts.map +1 -1
  138. package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.js +1 -1
  139. package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.js.map +1 -1
  140. package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.d.ts +3 -1
  141. package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.d.ts.map +1 -1
  142. package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.js +1 -1
  143. package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.js.map +1 -1
  144. package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.module.css.js +1 -1
  145. package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/__tests__/MetricCell.test.d.ts +2 -0
  146. package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/__tests__/MetricCell.test.d.ts.map +1 -0
  147. package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableRow/OffsetWellsTableRow.d.ts.map +1 -1
  148. package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableRow/OffsetWellsTableRow.js +1 -1
  149. package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableRow/OffsetWellsTableRow.js.map +1 -1
  150. package/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.d.ts +0 -1
  151. package/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.d.ts.map +1 -1
  152. package/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.js +1 -1
  153. package/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.js.map +1 -1
  154. package/components/OffsetWellPickerV5/constants.d.ts +26 -3
  155. package/components/OffsetWellPickerV5/constants.d.ts.map +1 -1
  156. package/components/OffsetWellPickerV5/constants.js +1 -1
  157. package/components/OffsetWellPickerV5/constants.js.map +1 -1
  158. package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/__tests__/useAdvancedWells.test.d.ts +2 -0
  159. package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/__tests__/useAdvancedWells.test.d.ts.map +1 -0
  160. package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/__tests__/useCompanyMetricKey.test.d.ts +2 -0
  161. package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/__tests__/useCompanyMetricKey.test.d.ts.map +1 -0
  162. package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.d.ts.map +1 -1
  163. package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.js +1 -1
  164. package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.js.map +1 -1
  165. package/components/OffsetWellPickerV5/stores/filter-store/types.d.ts +2 -1
  166. package/components/OffsetWellPickerV5/stores/filter-store/types.d.ts.map +1 -1
  167. package/components/OffsetWellPickerV5/stores/filter-store/types.js.map +1 -1
  168. package/components/OffsetWellPickerV5/utils/__tests__/getTimestampByPeriod.test.d.ts +2 -0
  169. package/components/OffsetWellPickerV5/utils/__tests__/getTimestampByPeriod.test.d.ts.map +1 -0
  170. package/components/OffsetWellPickerV5/utils/getTimestampByPeriod.d.ts +4 -0
  171. package/components/OffsetWellPickerV5/utils/getTimestampByPeriod.d.ts.map +1 -1
  172. package/components/OffsetWellPickerV5/utils/getTimestampByPeriod.js +1 -1
  173. package/components/OffsetWellPickerV5/utils/getTimestampByPeriod.js.map +1 -1
  174. package/components/Search/Search.d.ts +6 -3
  175. package/components/Search/Search.d.ts.map +1 -1
  176. package/components/Search/Search.js.map +1 -1
  177. package/components/index.d.ts +1 -0
  178. package/components/index.d.ts.map +1 -1
  179. package/config/mapbox/index.d.ts.map +1 -1
  180. package/config/mapbox/index.js +1 -1
  181. package/config/mapbox/index.js.map +1 -1
  182. package/hocs/__tests__/withAssetEditorLockHOC.test.d.ts +2 -0
  183. package/hocs/__tests__/withAssetEditorLockHOC.test.d.ts.map +1 -0
  184. package/hocs/withAssetEditorLockHOC.d.ts +11 -1
  185. package/hocs/withAssetEditorLockHOC.d.ts.map +1 -1
  186. package/hocs/withAssetEditorLockHOC.js +1 -1
  187. package/hocs/withAssetEditorLockHOC.js.map +1 -1
  188. package/mcp-server/server.mjs +312 -73
  189. package/mcp-server/setup.mjs +129 -44
  190. package/package.json +3 -2
  191. package/permissions/constants/index.d.ts +1 -0
  192. package/permissions/constants/index.d.ts.map +1 -1
  193. package/permissions/constants/index.js +1 -1
  194. package/permissions/constants/index.js.map +1 -1
  195. package/tsconfig.tsbuildinfo +1 -1
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/toConsumableArray";import s from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/slicedToArray";import{useState as a,useRef as r,useEffect as n}from"react";import i from"prop-types";import{get as l,isEmpty as o,noop as p}from"lodash";import c from"classnames";import{makeStyles as d}from"@material-ui/core";import u from"./components/PrimaryAssetSelect.js";import m from"./components/SecondaryAssetSelect.js";import"./components/SelectItem.js";import y from"./components/MultipleAssetsToggle.js";import f from"./components/PrimaryAssetSelectV2.js";import{ACTIVE_ASSETS_ID as g,ACTIVE_ASSET_ID as A}from"./constants.js";import{getPrimaryAssetFields as b}from"./utils/index.js";import"../../constants/goals.js";import{PAD_GROUP as v,FRAC_FLEET_GROUP as h}from"../../constants/segment.js";import"../../constants/alerts.js";import"../../constants/apps.js";import"../../constants/drillstring.js";import"../../constants/completion.js";import"../../constants/appPackages.js";import"../../constants/notifications.js";import"../../constants/feed.js";import"../../constants/bha.js";import{ASSET_TYPES as j}from"../../constants/assetTypes.js";import"../../constants/corvaCompanyId.js";import"../GradientManager/configuration/constants.js";import{jsxs as I,jsx as S}from"react/jsx-runtime";function T(e,s){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);s&&(a=a.filter((function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable}))),t.push.apply(t,a)}return t}function O(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?T(Object(a),!0).forEach((function(t){s(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):T(Object(a)).forEach((function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(a,s))}))}return e}var C=d({title:{fontWeight:400,fontSize:20,margin:"24px 0 16px"}}),P=function(i){var p=i.appKey,d=i.appType,T=i.className,P=i.company,N=i.defaultValue,D=i.secondaryDefaultValue,V=i.disabled,F=i.isHiddenTitle,w=i.isNullable,x=i.label,R=i.onSettingsChange,_=i.primaryAssetFields,q=i.secondaryAssetFields,E=i.isExtendedSelect,H=i.isRequiredAssetId,K=i.settings,L=i.isVisibleMultipleAssetsToggle,M=i.assetsLimit,G=i.isDisabledSecondaryAssetSelect,W=i.isDrillingPlatformApp,k=i.secondaryAssetHelpText,z=i.onChange,B=i.elementsClassNames,J=l(d,["primaryAsset","assetType","type"]),Q=l(d,["primaryAsset","assetType","id"]),U=l(d,["primaryAsset","assetType","label"]),X=l(d,["primaryAsset","groups"]),Y=l(d,["secondaryAsset"],!1),Z=l(d,["secondaryAsset","assetType","type"]),$=l(d,["secondaryAsset","assetType","id"]),ee=l(d,["secondaryAsset","assetType","label"]),se=l(K,Q),te=se?Number(se):null,ae=l(K,$)?Number(l(K,$)):D||null,re=a({id:te||N}),ne=t(re,2),ie=ne[0],le=ne[1],oe=a(ae),pe=t(oe,2),ce=pe[0],de=pe[1],ue=a(!1),me=t(ue,2),ye=me[0],fe=me[1],ge=a(),Ae=t(ge,2),be=Ae[0],ve=Ae[1],he=a(!1),je=t(he,2),Ie=je[0],Se=je[1],Te=r(!1),Oe=function(){for(var e=arguments.length,s=new Array(e),t=0;t<e;t++)s[t]=arguments[t];R.apply(void 0,s.concat([Te.current]))},Ce=C(),Pe=J===j.rig.type||J===j.intervention_unit.type?f:u,Ne=W&&null!=ie&&ie.assetId?null==ie?void 0:ie.assetId:null==ie?void 0:ie.id,De=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};le(t),de(null),fe(!1);var a=(s(e={},Q,null),s(e,$,null),s(e,"assets",null),e);Oe(a)},Ve=Y&&(Ie?Boolean(ie.length)&&!ye:(null==ie?void 0:ie.id)&&!ye);return n((function(){o(K)&&De(Ie&&[])}),[K]),I("div",{className:c(Ce.main,T),children:[!F&&S("div",{className:c(Ce.title,B.title),children:"Asset"}),L&&S(y,{onChange:function(e){Te.current=!!e,Se(e),De(e&&[])},className:B.multiAssetSwitch,checked:Ie}),S("div",{className:B.primaryAssetSelect,children:S(Pe,{appKey:p,assetType:J,company:P,currentOption:ie,currentValue:null==ie?void 0:ie.id,"data-testid":"".concat("DC_AppSettingsAssetEditor","_primaryAssetEditorAutocomplete"),isSecondaryAssetPresent:Y,defaultValue:N,disableClearable:!w,disabled:V,isNullable:w,isRequiredAssetId:H,label:x,multiple:Ie,onChange:function(t){if(z({primary:t}),Ie)!function(t){var a,r;if(!(t.length>M)){var n=(null===(a=t[0])||void 0===a?void 0:a.group)===v.name,i=(null===(r=t[0])||void 0===r?void 0:r.group)===h.name,l=1===t.length&&n,o=1===t.length&&i;if(l?(fe(!0),ve(v)):o&&ve(h),n){le(t);var p=null==t?void 0:t.reduce((function(s,t){var a=t.parentFracFleetId,r=t.id,n={fracFleetId:a,padId:r};return E&&(n.assetId=a,n.replacedPadId=r),a?[].concat(e(s),[n]):s}),[]);Oe({assets:p})}else{le(t);var c=t.reduce((function(t,a){var r=s({},"".concat(a.type,"Id"),a.id);return H&&(r.assetId=a.assetId),E&&(r.assetId=a.assetId||a.id),[].concat(e(t),[r])}),[]);Oe({assets:c})}}}(t);else{var a=t.id,r=t.type,n=t.parentFracFleetId;if(a)if(r!==j.pad.type){le(t),de(null);var i=s({},Q,a);H&&(i.assetId=t.assetId),$&&(i[$]=null),Oe(i),fe(!1)}else{var l;le(t),fe(!0),de(a);var o=(s(l={},j.frac_fleet.id,Number(n)),s(l,j.pad.id,a),l);Oe(o)}}},setCurrentOption:le,selectedGroup:be,onGroupChange:function(e){ve(e),De(Ie&&[])},onGroupReset:function(){ve(null),De(Ie&&[])},groups:X,onInputReset:De,onActiveAssetIdChange:function(e){le((function(s){return O(O({},s),{},{activeWellId:e})}))},isDrillingPlatformApp:W,assetFields:b(J,_,W)})}),Ve&&I("div",{className:B.secondaryAssetSelect,children:[k,S(m,{assetFields:Z===j.pad.type?[].concat(e(q),["pad.active","pad.current"]):q,activeWellId:null==ie?void 0:ie.activeWellId,appKey:p,assetType:Z,company:P,currentValue:ce,"data-testid":"".concat("DC_AppSettingsAssetEditor","_secondaryAutoComplete"),defaultValue:Ie?g:A,disabled:Ie||G||V,isDrillingPlatformApp:W,isNullable:w,isRequiredAssetId:H,onChange:function(e){var t=e.id,a=e.assetId,r=e.name;z({secondary:{name:r}}),de(t);var n=t===A?null:t,i=s({},$,n);H&&Z===j.well.type?Oe(O(O({},i),{},{replacedAssetId:W?n:a})):Oe(i)},parentAssetId:Ne,parentAssetType:W?"parent_asset_id":J,primaryAssetLabel:U,secondaryAssetLabel:ee})]})]})};P.defaultProps={assetsLimit:null,label:"Choose An Asset",isNullable:!1,defaultValue:void 0,secondaryDefaultValue:void 0,isHiddenTitle:!1,appKey:null,isVisibleMultipleAssetsToggle:!1,isDisabledSecondaryAssetSelect:!1,primaryAssetFields:[],secondaryAssetFields:[],secondaryAssetHelpText:null,onChange:p,elementsClassNames:{}},P.propTypes={assetsLimit:i.number,settings:i.shape({}).isRequired,appType:i.shape({}).isRequired,defaultValue:i.any,secondaryDefaultValue:i.any,onSettingsChange:i.func.isRequired,label:i.string,isNullable:i.bool,isHiddenTitle:i.bool,appKey:i.string,isVisibleMultipleAssetsToggle:i.bool,isDisabledSecondaryAssetSelect:i.bool,primaryAssetFields:i.arrayOf(i.shape({})),secondaryAssetFields:i.arrayOf(i.shape({})),secondaryAssetHelpText:i.oneOfType([i.element,i.string]),onChange:i.func,elementsClassNames:i.shape({title:i.string,multiAssetSwitch:i.string,primaryAssetSelect:i.string,secondaryAssetSelect:i.string})};export{P as default};
1
+ import e from"@babel/runtime/helpers/toConsumableArray";import t from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import{useState as r,useRef as n,useEffect as i}from"react";import{isEmpty as a,noop as l}from"lodash";import o from"classnames";import{makeStyles as d}from"@material-ui/core";import"../../constants/goals.js";import{PAD_GROUP as p,FRAC_FLEET_GROUP as c}from"../../constants/segment.js";import"../../constants/alerts.js";import"../../constants/apps.js";import"../../constants/drillstring.js";import"../../constants/completion.js";import"../../constants/appPackages.js";import"../../constants/notifications.js";import"../../constants/feed.js";import"../../constants/bha.js";import{ASSET_TYPES as u}from"../../constants/assetTypes.js";import"../../constants/corvaCompanyId.js";import"../GradientManager/configuration/constants.js";import m from"./components/PrimaryAssetSelect.js";import y from"./components/SecondaryAssetSelect.js";import"./components/SelectItem.js";import f from"./components/MultipleAssetsToggle.js";import v from"./components/PrimaryAssetSelectV2.js";import{ACTIVE_ASSETS_ID as A,ACTIVE_ASSET_ID as g}from"./constants.js";import{getPrimaryAssetFields as b}from"./utils/index.js";import{jsxs as j,jsx as h}from"react/jsx-runtime";function I(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,r)}return s}function O(e){for(var s=1;s<arguments.length;s++){var r=null!=arguments[s]?arguments[s]:{};s%2?I(Object(r),!0).forEach((function(s){t(e,s,r[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var P=d({title:{fontWeight:400,fontSize:20,margin:"24px 0 16px"}}),S=[],C={},N=function(d){var I,N=d.appKey,T=void 0===N?null:N,D=d.appType,F=d.className,w=d.company,V=d.defaultValue,_=void 0===V?null:V,x=d.secondaryDefaultValue,E=void 0===x?null:x,R=d.disabled,G=d.isHiddenTitle,W=void 0!==G&&G,k=d.isNullable,q=void 0!==k&&k,K=d.label,L=void 0===K?"Choose An Asset":K,M=d.onSettingsChange,H=d.primaryAssetFields,z=void 0===H?S:H,B=d.secondaryAssetFields,J=void 0===B?S:B,Q=d.isExtendedSelect,U=d.isRequiredAssetId,X=d.settings,Y=d.isVisibleMultipleAssetsToggle,Z=void 0!==Y&&Y,$=d.assetsLimit,ee=void 0===$?null:$,te=d.isDisabledSecondaryAssetSelect,se=void 0!==te&&te,re=d.isDrillingPlatformApp,ne=d.secondaryAssetHelpText,ie=void 0===ne?null:ne,ae=d.onChange,le=void 0===ae?l:ae,oe=d.elementsClassNames,de=void 0===oe?C:oe,pe=D.primaryAsset.assetType,ce=null===(I=D.secondaryAsset)||void 0===I?void 0:I.assetType,ue=null==pe?void 0:pe.type,me=null==pe?void 0:pe.id,ye=null==pe?void 0:pe.label,fe=D.primaryAsset.groups,ve=!!ce,Ae=null==ce?void 0:ce.type,ge=null==ce?void 0:ce.id,be=null==ce?void 0:ce.label,je=me?X[me]:null,he=ge?X[ge]:null,Ie=je?Number(je):null,Oe=he?Number(he):E||null,Pe=r({id:Ie||_}),Se=s(Pe,2),Ce=Se[0],Ne=Se[1],Te=r(Oe),De=s(Te,2),Fe=De[0],we=De[1],Ve=r(!1),_e=s(Ve,2),xe=_e[0],Ee=_e[1],Re=r(null),Ge=s(Re,2),We=Ge[0],ke=Ge[1],qe=r(!1),Ke=s(qe,2),Le=Ke[0],Me=Ke[1],He=n(!1),ze=function(e){M(e,He.current)},Be=P(),Je=ue===u.rig.type||ue===u.intervention_unit.type?v:m,Qe=Array.isArray(Ce)?null:Ce,Ue=re&&null!=Qe&&Qe.assetId?Qe.assetId:null==Qe?void 0:Qe.id,Xe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:He.current;Ne(e?[]:null),we(null),Ee(!1);var t={assets:null};me&&(t[me]=null),ge&&(t[ge]=null),ze(t)},Ye=ve&&(Le?Array.isArray(Ce)&&!!Ce.length&&!xe:(null==Qe?void 0:Qe.id)&&!xe);return i((function(){a(X)&&Xe()}),[X]),j("div",{className:F,children:[!W&&h("div",{className:o(Be.title,de.title),children:"Asset"}),Z&&h(f,{onChange:function(e){He.current=!!e,Me(e),Xe(e)},className:de.multiAssetSwitch,checked:Le}),h("div",{className:de.primaryAssetSelect,children:h(Je,{appKey:T,assetType:ue,company:w,currentOption:Ce,currentValue:null==Qe?void 0:Qe.id,"data-testid":"".concat("DC_AppSettingsAssetEditor","_primaryAssetEditorAutocomplete"),isSecondaryAssetPresent:ve,defaultValue:_,disableClearable:!q,disabled:R,isNullable:q,isRequiredAssetId:U,label:L,multiple:Le,onChange:function(s){if(le({primary:s}),Le)Array.isArray(s)&&function(s){var r,n;if(!(s.length>Number(ee))){var i=(null===(r=s[0])||void 0===r?void 0:r.group)===p.name,a=(null===(n=s[0])||void 0===n?void 0:n.group)===c.name,l=1===s.length&&i,o=1===s.length&&a;if(l?(Ee(!0),ke(p)):o&&ke(c),i){Ne(s);var d=s.reduce((function(t,s){var r=s.parentFracFleetId,n=s.id,i={fracFleetId:r,padId:n};return Q&&(i.assetId=r,i.replacedPadId=n),r?[].concat(e(t),[i]):t}),[]);ze({assets:d})}else{Ne(s);var u=s.reduce((function(s,r){var n=t({},"".concat(r.type,"Id"),r.id);return U&&(n.assetId=r.assetId),Q&&(n.assetId=r.assetId||r.id),[].concat(e(s),[n])}),[]);ze({assets:u})}}}(s);else if(s&&!Array.isArray(s)&&me){var r=s.id,n=s.type,i=s.parentFracFleetId;if(r)if(n!==u.pad.type){Ne(s),we(null);var a=t({},me,r);U&&(a.assetId=s.assetId),ge&&(a[ge]=null),ze(a),Ee(!1)}else{var l;Ne(s),Ee(!0),we(r);var o=(t(l={},u.frac_fleet.id,Number(i)),t(l,u.pad.id,r),l);ze(o)}}},setCurrentOption:Ne,selectedGroup:We,onGroupChange:function(e){ke(e),Xe()},onGroupReset:function(){ke(null),Xe()},groups:fe,onInputReset:Xe,onActiveAssetIdChange:function(e){Ne((function(t){return Array.isArray(t)?t:O(O({},t),{},{activeWellId:e})}))},isDrillingPlatformApp:re,assetFields:b({primaryAssetType:ue,assetFields:z,isDrillingPlatformApp:re})})}),Ye&&j("div",{className:de.secondaryAssetSelect,children:[ie,h(y,{assetFields:Ae===u.pad.type?[].concat(e(J),["pad.active","pad.current"]):J,activeWellId:null==Qe?void 0:Qe.activeWellId,appKey:T,assetType:Ae,company:w,currentValue:Fe,"data-testid":"".concat("DC_AppSettingsAssetEditor","_secondaryAutoComplete"),defaultValue:Le?A:g,disabled:Le||se||R,isDrillingPlatformApp:re,isNullable:q,isRequiredAssetId:U,onChange:function(e){var s=e.id,r=e.assetId,n=e.name;if(ge){le({secondary:{name:n}}),we(s);var i=s===g?null:s,a=t({},ge,i);U&&Ae===u.well.type?ze(O(O({},a),{},{replacedAssetId:re?i:r})):ze(a)}},parentAssetId:Ue,parentAssetType:re?"parent_asset_id":ue,primaryAssetLabel:ye,secondaryAssetLabel:be})]})]})};export{N as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/AssetEditorV2/index.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { get, isEmpty, noop } from 'lodash';\nimport classNames from 'classnames';\nimport { makeStyles } from '@material-ui/core';\n\nimport { PrimaryAssetSelect, PrimaryAssetSelectV2, SecondaryAssetSelect } from './components';\nimport { ACTIVE_ASSET_ID, ACTIVE_ASSETS_ID } from './constants';\nimport MultipleAssetsToggle from './components/MultipleAssetsToggle';\nimport { getPrimaryAssetFields } from './utils';\n\nimport { ASSET_TYPES } from '~/constants';\nimport { FRAC_FLEET_GROUP, PAD_GROUP } from '~/constants/segment';\n\nconst useStyles = makeStyles({\n title: { fontWeight: 400, fontSize: 20, margin: '24px 0 16px' },\n});\n\nconst PAGE_NAME = 'DC_AppSettingsAssetEditor';\nconst PARENT_ASSET_ID = 'parent_asset_id';\n\nconst AppSettingsAssetEditor = ({\n appKey,\n appType,\n className,\n company,\n defaultValue,\n secondaryDefaultValue,\n disabled,\n isHiddenTitle,\n isNullable,\n label,\n onSettingsChange: propsOnSettingsChange,\n primaryAssetFields,\n secondaryAssetFields,\n isExtendedSelect,\n isRequiredAssetId,\n settings,\n isVisibleMultipleAssetsToggle,\n assetsLimit,\n isDisabledSecondaryAssetSelect,\n isDrillingPlatformApp,\n secondaryAssetHelpText,\n onChange,\n elementsClassNames,\n}) => {\n const primaryAssetType = get(appType, ['primaryAsset', 'assetType', 'type']);\n const primaryAssetIdType = get(appType, ['primaryAsset', 'assetType', 'id']);\n const primaryAssetLabel = get(appType, ['primaryAsset', 'assetType', 'label']);\n const primaryAssetSelectGroups = get(appType, ['primaryAsset', 'groups']);\n\n const isSecondaryAssetPresent = get(appType, ['secondaryAsset'], false);\n\n const secondaryAssetType = get(appType, ['secondaryAsset', 'assetType', 'type']);\n const secondaryAssetIdType = get(appType, ['secondaryAsset', 'assetType', 'id']);\n const secondaryAssetLabel = get(appType, ['secondaryAsset', 'assetType', 'label']);\n\n const currentValue = get(settings, primaryAssetIdType);\n const initialPrimaryAssetId = currentValue ? Number(currentValue) : null;\n const initialSecondaryAssetId = get(settings, secondaryAssetIdType)\n ? Number(get(settings, secondaryAssetIdType))\n : secondaryDefaultValue || null;\n const [primaryAsset, setPrimaryAsset] = useState({ id: initialPrimaryAssetId || defaultValue });\n\n const [secondaryAssetId, setSecondaryAssetId] = useState(initialSecondaryAssetId);\n const [isPadSelectedAsPrimaryAsset, setIsPadSelectedAsPrimaryAsset] = useState(false);\n const [selectedGroup, setSelectedGroup] = useState();\n const [isMultipleAssets, setIsMultipleAssets] = useState(false);\n const isMultipleAssetsRef = useRef(false);\n const onSettingsChange = (...args) => {\n propsOnSettingsChange(...args, isMultipleAssetsRef.current);\n };\n\n const styles = useStyles();\n\n const PrimaryAssetSelectComponent =\n primaryAssetType === ASSET_TYPES.rig.type ||\n primaryAssetType === ASSET_TYPES.intervention_unit.type\n ? PrimaryAssetSelectV2\n : PrimaryAssetSelect;\n\n const parentAssetId =\n isDrillingPlatformApp && primaryAsset?.assetId ? primaryAsset?.assetId : primaryAsset?.id;\n\n const onSecondaryAssetChange = ({ id, assetId, name }) => {\n onChange({ secondary: { name } });\n setSecondaryAssetId(id);\n const secondaryAssetId = id === ACTIVE_ASSET_ID ? null : id;\n const assetSettings = { [secondaryAssetIdType]: secondaryAssetId };\n\n if (isRequiredAssetId && secondaryAssetType === ASSET_TYPES.well.type) {\n onSettingsChange({\n ...assetSettings,\n replacedAssetId: isDrillingPlatformApp ? secondaryAssetId : assetId,\n });\n return;\n }\n\n onSettingsChange(assetSettings);\n };\n\n const onMultipleAssetChange = selected => {\n if (selected.length > assetsLimit) return;\n\n const isPadSelected = selected[0]?.group === PAD_GROUP.name;\n const isFracFleetSelected = selected[0]?.group === FRAC_FLEET_GROUP.name;\n const isFirstPadSelected = selected.length === 1 && isPadSelected;\n const isFirstFracFleetSelected = selected.length === 1 && isFracFleetSelected;\n\n if (isFirstPadSelected) {\n setIsPadSelectedAsPrimaryAsset(true);\n setSelectedGroup(PAD_GROUP);\n } else if (isFirstFracFleetSelected) {\n setSelectedGroup(FRAC_FLEET_GROUP);\n }\n\n if (isPadSelected) {\n setPrimaryAsset(selected);\n const assetsSetting = selected?.reduce((acc, { parentFracFleetId, id }) => {\n const settings = {\n fracFleetId: parentFracFleetId,\n padId: id,\n };\n\n if (isExtendedSelect) {\n settings.assetId = parentFracFleetId;\n settings.replacedPadId = id;\n }\n return parentFracFleetId ? [...acc, settings] : acc;\n }, []);\n\n onSettingsChange({\n assets: assetsSetting,\n });\n return;\n }\n\n setPrimaryAsset(selected);\n const assetsSetting = selected.reduce((acc, asset) => {\n const settings = { [`${asset.type}Id`]: asset.id };\n if (isRequiredAssetId) {\n settings.assetId = asset.assetId;\n }\n if (isExtendedSelect) {\n settings.assetId = asset.assetId || asset.id;\n }\n return [...acc, settings];\n }, []);\n onSettingsChange({\n assets: assetsSetting,\n });\n };\n\n const onPrimaryAssetChange = selected => {\n onChange({ primary: selected });\n if (isMultipleAssets) {\n onMultipleAssetChange(selected);\n return;\n }\n const { id, type, parentFracFleetId } = selected;\n if (!id) return;\n if (type === ASSET_TYPES.pad.type) {\n setPrimaryAsset(selected);\n setIsPadSelectedAsPrimaryAsset(true);\n setSecondaryAssetId(id);\n const assetSetting = {\n [ASSET_TYPES.frac_fleet.id]: Number(parentFracFleetId),\n [ASSET_TYPES.pad.id]: id,\n };\n onSettingsChange(assetSetting);\n return;\n }\n\n setPrimaryAsset(selected);\n setSecondaryAssetId(null);\n const assetSetting = { [primaryAssetIdType]: id };\n if (isRequiredAssetId) assetSetting.assetId = selected.assetId;\n if (secondaryAssetIdType) assetSetting[secondaryAssetIdType] = null;\n onSettingsChange(assetSetting);\n setIsPadSelectedAsPrimaryAsset(false);\n };\n\n const handlePrimaryAssetReset = (defaultValue = {}) => {\n setPrimaryAsset(defaultValue);\n setSecondaryAssetId(null);\n\n setIsPadSelectedAsPrimaryAsset(false);\n const assetSetting = {\n [primaryAssetIdType]: null,\n [secondaryAssetIdType]: null,\n assets: null,\n };\n onSettingsChange(assetSetting);\n };\n\n const handleMultipleAssetsChange = checked => {\n isMultipleAssetsRef.current = !!checked;\n setIsMultipleAssets(checked);\n handlePrimaryAssetReset(checked && []);\n };\n\n const handleGroupChange = newGroup => {\n setSelectedGroup(newGroup);\n handlePrimaryAssetReset(isMultipleAssets && []);\n };\n\n const handleGroupReset = () => {\n setSelectedGroup(null);\n handlePrimaryAssetReset(isMultipleAssets && []);\n };\n\n const secondaryAssetSelectIsVisible =\n isSecondaryAssetPresent &&\n (isMultipleAssets\n ? Boolean(primaryAsset.length) && !isPadSelectedAsPrimaryAsset\n : primaryAsset?.id && !isPadSelectedAsPrimaryAsset);\n\n useEffect(() => {\n if (isEmpty(settings)) {\n handlePrimaryAssetReset(isMultipleAssets && []);\n }\n }, [settings]);\n\n return (\n <div className={classNames(styles.main, className)}>\n {!isHiddenTitle && (\n <div className={classNames(styles.title, elementsClassNames.title)}>Asset</div>\n )}\n {isVisibleMultipleAssetsToggle && (\n <MultipleAssetsToggle\n onChange={handleMultipleAssetsChange}\n className={elementsClassNames.multiAssetSwitch}\n checked={isMultipleAssets}\n />\n )}\n <div className={elementsClassNames.primaryAssetSelect}>\n <PrimaryAssetSelectComponent\n appKey={appKey}\n assetType={primaryAssetType}\n company={company}\n currentOption={primaryAsset}\n currentValue={primaryAsset?.id}\n data-testid={`${PAGE_NAME}_primaryAssetEditorAutocomplete`}\n isSecondaryAssetPresent={isSecondaryAssetPresent}\n defaultValue={defaultValue}\n disableClearable={!isNullable}\n disabled={disabled}\n isNullable={isNullable}\n isRequiredAssetId={isRequiredAssetId}\n label={label}\n multiple={isMultipleAssets}\n onChange={onPrimaryAssetChange}\n setCurrentOption={setPrimaryAsset}\n selectedGroup={selectedGroup}\n onGroupChange={handleGroupChange}\n onGroupReset={handleGroupReset}\n groups={primaryAssetSelectGroups}\n onInputReset={handlePrimaryAssetReset}\n onActiveAssetIdChange={activeAssetId => {\n setPrimaryAsset(primaryAsset => ({ ...primaryAsset, activeWellId: activeAssetId }));\n }}\n isDrillingPlatformApp={isDrillingPlatformApp}\n assetFields={getPrimaryAssetFields(\n primaryAssetType,\n primaryAssetFields,\n isDrillingPlatformApp\n )}\n />\n </div>\n {secondaryAssetSelectIsVisible && (\n <div className={elementsClassNames.secondaryAssetSelect}>\n {secondaryAssetHelpText}\n <SecondaryAssetSelect\n assetFields={\n secondaryAssetType === ASSET_TYPES.pad.type\n ? [...secondaryAssetFields, 'pad.active', 'pad.current']\n : secondaryAssetFields\n }\n activeWellId={primaryAsset?.activeWellId}\n appKey={appKey}\n assetType={secondaryAssetType}\n company={company}\n currentValue={secondaryAssetId}\n data-testid={`${PAGE_NAME}_secondaryAutoComplete`}\n defaultValue={isMultipleAssets ? ACTIVE_ASSETS_ID : ACTIVE_ASSET_ID}\n disabled={isMultipleAssets || isDisabledSecondaryAssetSelect || disabled}\n isDrillingPlatformApp={isDrillingPlatformApp}\n isNullable={isNullable}\n isRequiredAssetId={isRequiredAssetId}\n onChange={onSecondaryAssetChange}\n parentAssetId={parentAssetId}\n parentAssetType={isDrillingPlatformApp ? PARENT_ASSET_ID : primaryAssetType}\n primaryAssetLabel={primaryAssetLabel}\n secondaryAssetLabel={secondaryAssetLabel}\n />\n </div>\n )}\n </div>\n );\n};\n\nAppSettingsAssetEditor.defaultProps = {\n assetsLimit: null,\n label: 'Choose An Asset',\n isNullable: false,\n defaultValue: undefined,\n secondaryDefaultValue: undefined,\n isHiddenTitle: false,\n appKey: null,\n isVisibleMultipleAssetsToggle: false,\n isDisabledSecondaryAssetSelect: false,\n primaryAssetFields: [],\n secondaryAssetFields: [],\n secondaryAssetHelpText: null,\n onChange: noop,\n elementsClassNames: {},\n};\n\nAppSettingsAssetEditor.propTypes = {\n assetsLimit: PropTypes.number,\n settings: PropTypes.shape({}).isRequired,\n appType: PropTypes.shape({}).isRequired,\n defaultValue: PropTypes.any, // eslint-disable-line react/forbid-prop-types\n secondaryDefaultValue: PropTypes.any, // eslint-disable-line react/forbid-prop-types\n onSettingsChange: PropTypes.func.isRequired,\n label: PropTypes.string,\n isNullable: PropTypes.bool,\n isHiddenTitle: PropTypes.bool,\n appKey: PropTypes.string,\n isVisibleMultipleAssetsToggle: PropTypes.bool,\n isDisabledSecondaryAssetSelect: PropTypes.bool,\n primaryAssetFields: PropTypes.arrayOf(PropTypes.shape({})),\n secondaryAssetFields: PropTypes.arrayOf(PropTypes.shape({})),\n secondaryAssetHelpText: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n onChange: PropTypes.func,\n elementsClassNames: PropTypes.shape({\n title: PropTypes.string,\n multiAssetSwitch: PropTypes.string,\n primaryAssetSelect: PropTypes.string,\n secondaryAssetSelect: PropTypes.string,\n }),\n};\n\nexport default AppSettingsAssetEditor;\n"],"names":["useStyles","makeStyles","title","fontWeight","fontSize","margin","AppSettingsAssetEditor","_ref","appKey","appType","className","company","defaultValue","secondaryDefaultValue","disabled","isHiddenTitle","isNullable","label","propsOnSettingsChange","onSettingsChange","primaryAssetFields","secondaryAssetFields","isExtendedSelect","isRequiredAssetId","settings","isVisibleMultipleAssetsToggle","assetsLimit","isDisabledSecondaryAssetSelect","isDrillingPlatformApp","secondaryAssetHelpText","onChange","elementsClassNames","primaryAssetType","get","primaryAssetIdType","primaryAssetLabel","primaryAssetSelectGroups","isSecondaryAssetPresent","secondaryAssetType","secondaryAssetIdType","secondaryAssetLabel","currentValue","initialPrimaryAssetId","Number","initialSecondaryAssetId","_useState","useState","id","_useState2","_slicedToArray","primaryAsset","setPrimaryAsset","_useState4","_useState3","secondaryAssetId","setSecondaryAssetId","_useState6","_useState5","isPadSelectedAsPrimaryAsset","setIsPadSelectedAsPrimaryAsset","_useState7","_useState8","selectedGroup","setSelectedGroup","_useState10","_useState9","isMultipleAssets","setIsMultipleAssets","isMultipleAssetsRef","useRef","_len","arguments","length","args","Array","_key","concat","current","styles","PrimaryAssetSelectComponent","ASSET_TYPES","rig","type","intervention_unit","PrimaryAssetSelectV2","PrimaryAssetSelect","parentAssetId","assetId","handlePrimaryAssetReset","_assetSetting4","undefined","assetSetting","_defineProperty","secondaryAssetSelectIsVisible","Boolean","useEffect","isEmpty","_jsxs","classNames","main","children","_jsx","MultipleAssetsToggle","checked","multiAssetSwitch","primaryAssetSelect","assetType","currentOption","disableClearable","multiple","selected","primary","_selected$","_selected$2","isPadSelected","group","PAD_GROUP","name","isFracFleetSelected","FRAC_FLEET_GROUP","isFirstPadSelected","isFirstFracFleetSelected","assetsSetting","reduce","acc","_ref3","parentFracFleetId","fracFleetId","padId","replacedPadId","assets","asset","onMultipleAssetChange","pad","_assetSetting2","frac_fleet","setCurrentOption","onGroupChange","newGroup","onGroupReset","groups","onInputReset","onActiveAssetIdChange","activeAssetId","_objectSpread","activeWellId","assetFields","getPrimaryAssetFields","secondaryAssetSelect","SecondaryAssetSelect","_toConsumableArray","ACTIVE_ASSETS_ID","ACTIVE_ASSET_ID","_ref2","secondary","assetSettings","well","replacedAssetId","parentAssetType","defaultProps","noop","propTypes","PropTypes","number","shape","isRequired","any","func","string","bool","arrayOf","oneOfType","element"],"mappings":"83DAcA,IAAMA,EAAYC,EAAW,CAC3BC,MAAO,CAAEC,WAAY,IAAKC,SAAU,GAAIC,OAAQ,iBAM5CC,EAAyB,SAwBzBC,GAAA,IAvBJC,IAAAA,OACAC,IAAAA,QACAC,IAAAA,UACAC,IAAAA,QACAC,IAAAA,aACAC,IAAAA,sBACAC,IAAAA,SACAC,IAAAA,cACAC,IAAAA,WACAC,IAAAA,MACkBC,IAAlBC,iBACAC,IAAAA,mBACAC,IAAAA,qBACAC,IAAAA,iBACAC,IAAAA,kBACAC,IAAAA,SACAC,IAAAA,8BACAC,IAAAA,YACAC,IAAAA,+BACAC,IAAAA,sBACAC,IAAAA,uBACAC,IAAAA,SACAC,IAAAA,mBAEMC,EAAmBC,EAAIxB,EAAS,CAAC,eAAgB,YAAa,SAC9DyB,EAAqBD,EAAIxB,EAAS,CAAC,eAAgB,YAAa,OAChE0B,EAAoBF,EAAIxB,EAAS,CAAC,eAAgB,YAAa,UAC/D2B,EAA2BH,EAAIxB,EAAS,CAAC,eAAgB,WAEzD4B,EAA0BJ,EAAIxB,EAAS,CAAC,mBAAmB,GAE3D6B,EAAqBL,EAAIxB,EAAS,CAAC,iBAAkB,YAAa,SAClE8B,EAAuBN,EAAIxB,EAAS,CAAC,iBAAkB,YAAa,OACpE+B,GAAsBP,EAAIxB,EAAS,CAAC,iBAAkB,YAAa,UAEnEgC,GAAeR,EAAIT,EAAUU,GAC7BQ,GAAwBD,GAAeE,OAAOF,IAAgB,KAC9DG,GAA0BX,EAAIT,EAAUe,GAC1CI,OAAOV,EAAIT,EAAUe,IACrB1B,GAAyB,KAC7BgC,GAAwCC,EAAS,CAAEC,GAAIL,IAAyB9B,IAAeoC,GAAAC,EAAAJ,GAAA,GAAxFK,GAAYF,GAAA,GAAEG,GAAeH,GAAA,GAEYF,GAAAA,EAASF,IAAwBQ,GAAAH,EAAAI,GAAA,GAA1EC,GAAgBF,GAAA,GAAEG,GAAmBH,GAAA,GAC0BN,GAAAA,GAAS,GAAMU,GAAAP,EAAAQ,GAAA,GAA9EC,GAA2BF,GAAA,GAAEG,GAA8BH,GAAA,GAClEI,GAA0Cd,IAAUe,GAAAZ,EAAAW,GAAA,GAA7CE,GAAaD,GAAA,GAAEE,GAAgBF,GAAA,GACUf,GAAAA,GAAS,GAAMkB,GAAAf,EAAAgB,GAAA,GAAxDC,GAAgBF,GAAA,GAAEG,GAAmBH,GAAA,GACtCI,GAAsBC,GAAO,GAC7BlD,GAAmB,WAAa,IAAA,IAAAmD,EAAAC,UAAAC,OAATC,EAAI,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,GAAAJ,UAAAI,GAC/BzD,eAAyBuD,EAAIG,OAAA,CAAER,GAAoBS,YAG/CC,GAAS9E,IAET+E,GACJ/C,IAAqBgD,EAAYC,IAAIC,MACrClD,IAAqBgD,EAAYG,kBAAkBD,KAC/CE,EACAC,EAEAC,GACJ1D,SAAyBsB,IAAAA,GAAcqC,QAAUrC,cAAY,EAAZA,GAAcqC,QAAUrC,cAAY,EAAZA,GAAcH,GAoGnFyC,GAA0B,WAAuB,IAAAC,EAAtB7E,EAAe2D,UAAAC,OAAA,QAAAkB,IAAAnB,UAAA,GAAAA,UAAA,GAAA,CAAA,EAC9CpB,GAAgBvC,GAChB2C,GAAoB,MAEpBI,IAA+B,GAC/B,IAAMgC,GACHzD,EAAAA,EAAAA,GAAAA,EAAqB,MACrBK,EAAAA,EAAAA,EAAuB,MAChBqD,EAAAH,EAAA,SAAA,MACTA,GACDtE,GAAiBwE,IAmBbE,GACJxD,IACC6B,GACG4B,QAAQ5C,GAAasB,UAAYd,IACjCR,cAAY,EAAZA,GAAcH,MAAOW,IAQ3B,OANAqC,GAAU,WACJC,EAAQxE,IACVgE,GAAwBtB,IAAoB,GAEhD,GAAG,CAAC1C,IAGFyE,EAAA,MAAA,CAAKvF,UAAWwF,EAAWpB,GAAOqB,KAAMzF,GAAW0F,SAChD,EAACrF,GACAsF,EAAA,MAAA,CAAK3F,UAAWwF,EAAWpB,GAAO5E,MAAO6B,EAAmB7B,OAAOkG,SAAA,UAEpE3E,GACC4E,EAACC,EAAoB,CACnBxE,SAnC2B,SAAAyE,GACjCnC,GAAoBS,UAAY0B,EAChCpC,GAAoBoC,GACpBf,GAAwBe,GAAW,KAiC7B7F,UAAWqB,EAAmByE,iBAC9BD,QAASrC,KAGbmC,EAAA,MAAA,CAAK3F,UAAWqB,EAAmB0E,mBAAmBL,SACpDC,EAACtB,GAA2B,CAC1BvE,OAAQA,EACRkG,UAAW1E,EACXrB,QAASA,EACTgG,cAAezD,GACfT,aAAcS,cAAAA,EAAAA,GAAcH,GAC5B,cAAA,GAAA6B,OAhOQ,4BAgOmD,mCAC3DvC,wBAAyBA,EACzBzB,aAAcA,EACdgG,kBAAmB5F,EACnBF,SAAUA,EACVE,WAAYA,EACZO,kBAAmBA,EACnBN,MAAOA,EACP4F,SAAU3C,GACVpC,SAlGqB,SAAAgF,GAE3B,GADAhF,EAAS,CAAEiF,QAASD,IAChB5C,IAtDwB,SAAA4C,GAAY,IAAAE,EAAAC,EACxC,KAAIH,EAAStC,OAAS9C,GAAtB,CAEA,IAAMwF,GAA2B,QAAXJ,EAAAA,EAAS,UAAE,IAAAE,OAAA,EAAXA,EAAaG,SAAUC,EAAUC,KACjDC,GAAiC,QAAXR,EAAAA,EAAS,UAAE,IAAAG,OAAA,EAAXA,EAAaE,SAAUI,EAAiBF,KAC9DG,EAAyC,IAApBV,EAAStC,QAAgB0C,EAC9CO,EAA+C,IAApBX,EAAStC,QAAgB8C,EAS1D,GAPIE,GACF7D,IAA+B,GAC/BI,GAAiBqD,IACRK,GACT1D,GAAiBwD,GAGfL,EAAJ,CACE/D,GAAgB2D,GAChB,IAAMY,EAAgBZ,aAAQ,EAARA,EAAUa,QAAO,SAACC,EAAmCC,GAAA,IAA5BC,IAAAA,kBAAmB/E,IAAAA,GAC1DvB,EAAW,CACfuG,YAAaD,EACbE,MAAOjF,GAOT,OAJIzB,IACFE,EAAS+D,QAAUuC,EACnBtG,EAASyG,cAAgBlF,GAEpB+E,EAAwBF,GAAAA,OAAAA,EAAAA,GAAKpG,CAAAA,IAAYoG,CACjD,GAAE,IAEHzG,GAAiB,CACf+G,OAAQR,GAGZ,KAnBA,CAqBAvE,GAAgB2D,GAChB,IAAMY,EAAgBZ,EAASa,QAAO,SAACC,EAAKO,GAC1C,IAAM3G,iBAAiB2G,EAAMjD,KAAWiD,MAAAA,EAAMpF,IAO9C,OANIxB,IACFC,EAAS+D,QAAU4C,EAAM5C,SAEvBjE,IACFE,EAAS+D,QAAU4C,EAAM5C,SAAW4C,EAAMpF,IAEjC6E,GAAAA,OAAAA,EAAAA,IAAKpG,GACjB,GAAE,IACHL,GAAiB,CACf+G,OAAQR,GAdV,CAjCmC,EAsDjCU,CAAsBtB,OADxB,CAIA,IAAQ/D,EAAgC+D,EAAhC/D,GAAImC,EAA4B4B,EAA5B5B,KAAM4C,EAAsBhB,EAAtBgB,kBAClB,GAAK/E,EACL,GAAImC,IAASF,EAAYqD,IAAInD,KAA7B,CAYA/B,GAAgB2D,GAChBvD,GAAoB,MACpB,IAAMoC,EAAYC,EAAA,CAAA,EAAM1D,EAAqBa,GACzCxB,IAAmBoE,EAAaJ,QAAUuB,EAASvB,SACnDhD,IAAsBoD,EAAapD,GAAwB,MAC/DpB,GAAiBwE,GACjBhC,IAA+B,EAR/B,KAVA,CAAmC,IAAA2E,EACjCnF,GAAgB2D,GAChBnD,IAA+B,GAC/BJ,GAAoBR,GACpB,IAAM4C,UACHX,EAAYuD,WAAWxF,GAAKJ,OAAOmF,IAAkBlC,EAAA0C,EACrDtD,EAAYqD,IAAItF,GAAKA,GACvBuF,GACDnH,GAAiBwE,EAEnB,CAbA,GA8FM6C,iBAAkBrF,GAClBW,cAAeA,GACf2E,cArDkB,SAAAC,GACxB3E,GAAiB2E,GACjBlD,GAAwBtB,IAAoB,KAoDtCyE,aAjDiB,WACvB5E,GAAiB,MACjByB,GAAwBtB,IAAoB,KAgDtC0E,OAAQxG,EACRyG,aAAcrD,GACdsD,sBAAuB,SAAAC,GACrB5F,IAAgB,SAAAD,GAAY,OAAA8F,EAAAA,EAAA,CAAA,EAAU9F,GAAY,CAAA,EAAA,CAAE+F,aAAcF,GAAa,GAC/E,EACFnH,sBAAuBA,EACvBsH,YAAaC,EACXnH,EACAZ,EACAQ,OAILiE,IACCI,EAAA,MAAA,CAAKvF,UAAWqB,EAAmBqH,qBAAqBhD,SACrDvE,CAAAA,EACDwE,EAACgD,EAAoB,CACnBH,YACE5G,IAAuB0C,EAAYqD,IAAInD,KAAI,GAAAN,OAAA0E,EACnCjI,GAAsB,CAAA,aAAc,gBACxCA,EAEN4H,aAAc/F,cAAAA,EAAAA,GAAc+F,aAC5BzI,OAAQA,EACRkG,UAAWpE,EACX3B,QAASA,EACT8B,aAAca,GACd,cAAA,GAAAsB,OAzQM,4BAyQ4C,0BAClDhE,aAAcsD,GAAmBqF,EAAmBC,EACpD1I,SAAUoD,IAAoBvC,GAAkCb,EAChEc,sBAAuBA,EACvBZ,WAAYA,EACZO,kBAAmBA,EACnBO,SA7MqB,SAA2B2H,GAAA,IAAxB1G,IAAAA,GAAIwC,IAAAA,QAAS8B,IAAAA,KAC7CvF,EAAS,CAAE4H,UAAW,CAAErC,KAAAA,KACxB9D,GAAoBR,GACpB,IAAMO,EAAmBP,IAAOyG,EAAkB,KAAOzG,EACnD4G,EAAa/D,EAAA,CAAA,EAAMrD,EAAuBe,GAE5C/B,GAAqBe,IAAuB0C,EAAY4E,KAAK1E,KAC/D/D,UACKwI,GAAa,CAAA,EAAA,CAChBE,gBAAiBjI,EAAwB0B,EAAmBiC,KAKhEpE,GAAiBwI,IAgMTrE,cAAeA,GACfwE,gBAAiBlI,EAhRL,kBAgR+CI,EAC3DG,kBAAmBA,EACnBK,oBAAqBA,UAMjC,EAEAlC,EAAuByJ,aAAe,CACpCrI,YAAa,KACbT,MAAO,kBACPD,YAAY,EACZJ,kBAAc8E,EACd7E,2BAAuB6E,EACvB3E,eAAe,EACfP,OAAQ,KACRiB,+BAA+B,EAC/BE,gCAAgC,EAChCP,mBAAoB,GACpBC,qBAAsB,GACtBQ,uBAAwB,KACxBC,SAAUkI,EACVjI,mBAAoB,CAAC,GAGvBzB,EAAuB2J,UAAY,CACjCvI,YAAawI,EAAUC,OACvB3I,SAAU0I,EAAUE,MAAM,CAAA,GAAIC,WAC9B5J,QAASyJ,EAAUE,MAAM,CAAA,GAAIC,WAC7BzJ,aAAcsJ,EAAUI,IACxBzJ,sBAAuBqJ,EAAUI,IACjCnJ,iBAAkB+I,EAAUK,KAAKF,WACjCpJ,MAAOiJ,EAAUM,OACjBxJ,WAAYkJ,EAAUO,KACtB1J,cAAemJ,EAAUO,KACzBjK,OAAQ0J,EAAUM,OAClB/I,8BAA+ByI,EAAUO,KACzC9I,+BAAgCuI,EAAUO,KAC1CrJ,mBAAoB8I,EAAUQ,QAAQR,EAAUE,MAAM,CAAE,IACxD/I,qBAAsB6I,EAAUQ,QAAQR,EAAUE,MAAM,CAAE,IAC1DvI,uBAAwBqI,EAAUS,UAAU,CAACT,EAAUU,QAASV,EAAUM,SAC1E1I,SAAUoI,EAAUK,KACpBxI,mBAAoBmI,EAAUE,MAAM,CAClClK,MAAOgK,EAAUM,OACjBhE,iBAAkB0D,EAAUM,OAC5B/D,mBAAoByD,EAAUM,OAC9BpB,qBAAsBc,EAAUM"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/AssetEditorV2/index.tsx"],"sourcesContent":["import { FC, ReactNode, useEffect, useRef, useState } from 'react';\nimport { isEmpty, noop } from 'lodash';\nimport classNames from 'classnames';\nimport { makeStyles } from '@material-ui/core';\n\nimport { ASSET_TYPES } from '~/constants';\nimport { FRAC_FLEET_GROUP, PAD_GROUP } from '~/constants/segment';\n\nimport { PrimaryAssetSelect, PrimaryAssetSelectV2, SecondaryAssetSelect } from './components';\nimport { ACTIVE_ASSET_ID, ACTIVE_ASSETS_ID } from './constants';\nimport MultipleAssetsToggle from './components/MultipleAssetsToggle';\nimport { getPrimaryAssetFields } from './utils';\nimport {\n AssetEditorAppType,\n AssetEditorChange,\n AssetGroup,\n AssetId,\n AssetOption,\n AssetSelection,\n AssetSelectionSettings,\n AssetSettings,\n AssetSettingsChangeHandler,\n AssetSettingsPatch,\n PrimaryAssetChange,\n SecondaryAssetChange,\n} from './types';\n\nexport type {\n AssetEditorAppType,\n AssetEditorChange,\n AssetSettings,\n AssetSettingsChangeHandler,\n AssetSettingsPatch,\n} from './types';\n\ntype AppSettingsAssetEditorProps = {\n appType: AssetEditorAppType;\n settings: AssetSettings;\n onSettingsChange: AssetSettingsChangeHandler;\n appKey?: string | null;\n className?: string;\n company?: AssetId | null;\n defaultValue?: AssetId | null;\n secondaryDefaultValue?: AssetId | null;\n disabled?: boolean;\n isHiddenTitle?: boolean;\n isNullable?: boolean;\n label?: string;\n primaryAssetFields?: string[];\n secondaryAssetFields?: string[];\n isExtendedSelect?: boolean;\n isRequiredAssetId?: boolean;\n isVisibleMultipleAssetsToggle?: boolean;\n assetsLimit?: number | null;\n isDisabledSecondaryAssetSelect?: boolean;\n isDrillingPlatformApp?: boolean;\n secondaryAssetHelpText?: ReactNode;\n onChange?: (change: AssetEditorChange) => void;\n elementsClassNames?: {\n title?: string;\n multiAssetSwitch?: string;\n primaryAssetSelect?: string;\n secondaryAssetSelect?: string;\n };\n /** @deprecated Retained for WorkflowEditRow compatibility; has no effect. */\n isWorkflowsEditModal?: boolean;\n};\n\nexport type AppSettingsAssetEditorV2Props = AppSettingsAssetEditorProps;\n\nconst useStyles = makeStyles({\n title: { fontWeight: 400, fontSize: 20, margin: '24px 0 16px' },\n});\n\nconst PAGE_NAME = 'DC_AppSettingsAssetEditor';\nconst PARENT_ASSET_ID = 'parent_asset_id';\nconst DEFAULT_ASSET_FIELDS: string[] = [];\nconst DEFAULT_ELEMENT_CLASS_NAMES: NonNullable<AppSettingsAssetEditorProps['elementsClassNames']> =\n {};\n\nconst AppSettingsAssetEditor: FC<AppSettingsAssetEditorProps> = ({\n appKey = null,\n appType,\n className,\n company,\n defaultValue = null,\n secondaryDefaultValue = null,\n disabled,\n isHiddenTitle = false,\n isNullable = false,\n label = 'Choose An Asset',\n onSettingsChange: propsOnSettingsChange,\n primaryAssetFields = DEFAULT_ASSET_FIELDS,\n secondaryAssetFields = DEFAULT_ASSET_FIELDS,\n isExtendedSelect,\n isRequiredAssetId,\n settings,\n isVisibleMultipleAssetsToggle = false,\n assetsLimit = null,\n isDisabledSecondaryAssetSelect = false,\n isDrillingPlatformApp,\n secondaryAssetHelpText = null,\n onChange = noop,\n elementsClassNames = DEFAULT_ELEMENT_CLASS_NAMES,\n}) => {\n const primaryDescriptor = appType.primaryAsset.assetType;\n const secondaryDescriptor = appType.secondaryAsset?.assetType;\n const primaryAssetType = primaryDescriptor?.type;\n const primaryAssetIdType = primaryDescriptor?.id;\n const primaryAssetLabel = primaryDescriptor?.label;\n const primaryAssetSelectGroups = appType.primaryAsset.groups;\n const isSecondaryAssetPresent = !!secondaryDescriptor;\n const secondaryAssetType = secondaryDescriptor?.type;\n const secondaryAssetIdType = secondaryDescriptor?.id;\n const secondaryAssetLabel = secondaryDescriptor?.label;\n\n const currentValue = primaryAssetIdType ? settings[primaryAssetIdType] : null;\n const currentSecondaryValue = secondaryAssetIdType ? settings[secondaryAssetIdType] : null;\n const initialPrimaryAssetId = currentValue ? Number(currentValue) : null;\n const initialSecondaryAssetId = currentSecondaryValue\n ? Number(currentSecondaryValue)\n : secondaryDefaultValue || null;\n const [primaryAsset, setPrimaryAsset] = useState<AssetSelection>({\n id: initialPrimaryAssetId || defaultValue,\n });\n const [secondaryAssetId, setSecondaryAssetId] = useState<AssetId | null>(initialSecondaryAssetId);\n const [isPadSelectedAsPrimaryAsset, setIsPadSelectedAsPrimaryAsset] = useState(false);\n const [selectedGroup, setSelectedGroup] = useState<AssetGroup | null>(null);\n const [isMultipleAssets, setIsMultipleAssets] = useState(false);\n const isMultipleAssetsRef = useRef(false);\n\n const onSettingsChange = (settingsPatch: AssetSettingsPatch) => {\n propsOnSettingsChange(settingsPatch, isMultipleAssetsRef.current);\n };\n\n const styles = useStyles();\n\n const PrimaryAssetSelectComponent =\n primaryAssetType === ASSET_TYPES.rig.type ||\n primaryAssetType === ASSET_TYPES.intervention_unit.type\n ? PrimaryAssetSelectV2\n : PrimaryAssetSelect;\n\n const primaryOption = Array.isArray(primaryAsset) ? null : primaryAsset;\n const parentAssetId =\n isDrillingPlatformApp && primaryOption?.assetId ? primaryOption.assetId : primaryOption?.id;\n\n const onSecondaryAssetChange = ({ id, assetId, name }: SecondaryAssetChange) => {\n if (!secondaryAssetIdType) return;\n\n onChange({ secondary: { name } });\n setSecondaryAssetId(id);\n const selectedAssetId = id === ACTIVE_ASSET_ID ? null : id;\n const assetSettings = { [secondaryAssetIdType]: selectedAssetId };\n\n if (isRequiredAssetId && secondaryAssetType === ASSET_TYPES.well.type) {\n onSettingsChange({\n ...assetSettings,\n replacedAssetId: isDrillingPlatformApp ? selectedAssetId : assetId,\n });\n return;\n }\n\n onSettingsChange(assetSettings);\n };\n\n const onMultipleAssetChange = (selected: AssetOption[]) => {\n // The legacy null limit allows no selections; explicit limits opt into multiple assets.\n if (selected.length > Number(assetsLimit)) return;\n\n const isPadSelected = selected[0]?.group === PAD_GROUP.name;\n const isFracFleetSelected = selected[0]?.group === FRAC_FLEET_GROUP.name;\n const isFirstPadSelected = selected.length === 1 && isPadSelected;\n const isFirstFracFleetSelected = selected.length === 1 && isFracFleetSelected;\n\n if (isFirstPadSelected) {\n setIsPadSelectedAsPrimaryAsset(true);\n setSelectedGroup(PAD_GROUP);\n } else if (isFirstFracFleetSelected) {\n setSelectedGroup(FRAC_FLEET_GROUP);\n }\n\n if (isPadSelected) {\n setPrimaryAsset(selected);\n const assetsSetting = selected.reduce<AssetSelectionSettings[]>(\n (acc, { parentFracFleetId, id }) => {\n const assetSettings: AssetSelectionSettings = {\n fracFleetId: parentFracFleetId,\n padId: id,\n };\n\n if (isExtendedSelect) {\n assetSettings.assetId = parentFracFleetId;\n assetSettings.replacedPadId = id;\n }\n return parentFracFleetId ? [...acc, assetSettings] : acc;\n },\n []\n );\n\n onSettingsChange({\n assets: assetsSetting,\n });\n return;\n }\n\n setPrimaryAsset(selected);\n const assetsSetting = selected.reduce<AssetSelectionSettings[]>((acc, asset) => {\n const assetSettings: AssetSelectionSettings = { [`${asset.type}Id`]: asset.id };\n if (isRequiredAssetId) {\n assetSettings.assetId = asset.assetId;\n }\n if (isExtendedSelect) {\n assetSettings.assetId = asset.assetId || asset.id;\n }\n return [...acc, assetSettings];\n }, []);\n onSettingsChange({\n assets: assetsSetting,\n });\n };\n\n const onPrimaryAssetChange = (selected: PrimaryAssetChange) => {\n onChange({ primary: selected });\n if (isMultipleAssets) {\n if (Array.isArray(selected)) onMultipleAssetChange(selected);\n return;\n }\n\n if (!selected || Array.isArray(selected) || !primaryAssetIdType) return;\n\n const { id, type, parentFracFleetId } = selected;\n if (!id) return;\n if (type === ASSET_TYPES.pad.type) {\n setPrimaryAsset(selected);\n setIsPadSelectedAsPrimaryAsset(true);\n setSecondaryAssetId(id);\n const assetSetting = {\n [ASSET_TYPES.frac_fleet.id]: Number(parentFracFleetId),\n [ASSET_TYPES.pad.id]: id,\n };\n onSettingsChange(assetSetting);\n return;\n }\n\n setPrimaryAsset(selected);\n setSecondaryAssetId(null);\n const assetSetting: AssetSettingsPatch = { [primaryAssetIdType]: id };\n if (isRequiredAssetId) assetSetting.assetId = selected.assetId;\n if (secondaryAssetIdType) assetSetting[secondaryAssetIdType] = null;\n onSettingsChange(assetSetting);\n setIsPadSelectedAsPrimaryAsset(false);\n };\n\n const handlePrimaryAssetReset = (isMultiple = isMultipleAssetsRef.current) => {\n setPrimaryAsset(isMultiple ? [] : null);\n setSecondaryAssetId(null);\n\n setIsPadSelectedAsPrimaryAsset(false);\n const assetSetting: AssetSettingsPatch = { assets: null };\n if (primaryAssetIdType) assetSetting[primaryAssetIdType] = null;\n if (secondaryAssetIdType) assetSetting[secondaryAssetIdType] = null;\n onSettingsChange(assetSetting);\n };\n\n const handleMultipleAssetsChange = (checked: boolean) => {\n isMultipleAssetsRef.current = !!checked;\n setIsMultipleAssets(checked);\n handlePrimaryAssetReset(checked);\n };\n\n const handleGroupChange = (newGroup: AssetGroup | null) => {\n setSelectedGroup(newGroup);\n handlePrimaryAssetReset();\n };\n\n const handleGroupReset = () => {\n setSelectedGroup(null);\n handlePrimaryAssetReset();\n };\n\n const secondaryAssetSelectIsVisible =\n isSecondaryAssetPresent &&\n (isMultipleAssets\n ? Array.isArray(primaryAsset) && !!primaryAsset.length && !isPadSelectedAsPrimaryAsset\n : primaryOption?.id && !isPadSelectedAsPrimaryAsset);\n\n useEffect(() => {\n if (isEmpty(settings)) {\n handlePrimaryAssetReset();\n }\n }, [settings]);\n\n return (\n <div className={className}>\n {!isHiddenTitle && (\n <div className={classNames(styles.title, elementsClassNames.title)}>Asset</div>\n )}\n {isVisibleMultipleAssetsToggle && (\n <MultipleAssetsToggle\n onChange={handleMultipleAssetsChange}\n className={elementsClassNames.multiAssetSwitch}\n checked={isMultipleAssets}\n />\n )}\n <div className={elementsClassNames.primaryAssetSelect}>\n <PrimaryAssetSelectComponent\n appKey={appKey}\n assetType={primaryAssetType}\n company={company}\n currentOption={primaryAsset}\n currentValue={primaryOption?.id}\n data-testid={`${PAGE_NAME}_primaryAssetEditorAutocomplete`}\n isSecondaryAssetPresent={isSecondaryAssetPresent}\n defaultValue={defaultValue}\n disableClearable={!isNullable}\n disabled={disabled}\n isNullable={isNullable}\n isRequiredAssetId={isRequiredAssetId}\n label={label}\n multiple={isMultipleAssets}\n onChange={onPrimaryAssetChange}\n setCurrentOption={setPrimaryAsset}\n selectedGroup={selectedGroup}\n onGroupChange={handleGroupChange}\n onGroupReset={handleGroupReset}\n groups={primaryAssetSelectGroups}\n onInputReset={handlePrimaryAssetReset}\n onActiveAssetIdChange={activeAssetId => {\n setPrimaryAsset(current =>\n Array.isArray(current) ? current : { ...current, activeWellId: activeAssetId }\n );\n }}\n isDrillingPlatformApp={isDrillingPlatformApp}\n assetFields={getPrimaryAssetFields({\n primaryAssetType,\n assetFields: primaryAssetFields,\n isDrillingPlatformApp,\n })}\n />\n </div>\n {secondaryAssetSelectIsVisible && (\n <div className={elementsClassNames.secondaryAssetSelect}>\n {secondaryAssetHelpText}\n <SecondaryAssetSelect\n assetFields={\n secondaryAssetType === ASSET_TYPES.pad.type\n ? [...secondaryAssetFields, 'pad.active', 'pad.current']\n : secondaryAssetFields\n }\n activeWellId={primaryOption?.activeWellId}\n appKey={appKey}\n assetType={secondaryAssetType}\n company={company}\n currentValue={secondaryAssetId}\n data-testid={`${PAGE_NAME}_secondaryAutoComplete`}\n defaultValue={isMultipleAssets ? ACTIVE_ASSETS_ID : ACTIVE_ASSET_ID}\n disabled={isMultipleAssets || isDisabledSecondaryAssetSelect || disabled}\n isDrillingPlatformApp={isDrillingPlatformApp}\n isNullable={isNullable}\n isRequiredAssetId={isRequiredAssetId}\n onChange={onSecondaryAssetChange}\n parentAssetId={parentAssetId}\n parentAssetType={isDrillingPlatformApp ? PARENT_ASSET_ID : primaryAssetType}\n primaryAssetLabel={primaryAssetLabel}\n secondaryAssetLabel={secondaryAssetLabel}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default AppSettingsAssetEditor;\n"],"names":["useStyles","makeStyles","title","fontWeight","fontSize","margin","DEFAULT_ASSET_FIELDS","DEFAULT_ELEMENT_CLASS_NAMES","AppSettingsAssetEditor","_ref","_appType$secondaryAss","_ref$appKey","appKey","appType","className","company","_ref$defaultValue","defaultValue","_ref$secondaryDefault","secondaryDefaultValue","disabled","_ref$isHiddenTitle","isHiddenTitle","_ref$isNullable","isNullable","_ref$label","label","propsOnSettingsChange","onSettingsChange","_ref$primaryAssetFiel","primaryAssetFields","_ref$secondaryAssetFi","secondaryAssetFields","isExtendedSelect","isRequiredAssetId","settings","_ref$isVisibleMultipl","isVisibleMultipleAssetsToggle","_ref$assetsLimit","assetsLimit","_ref$isDisabledSecond","isDisabledSecondaryAssetSelect","isDrillingPlatformApp","_ref$secondaryAssetHe","secondaryAssetHelpText","_ref$onChange","onChange","noop","_ref$elementsClassNam","elementsClassNames","primaryDescriptor","primaryAsset","assetType","secondaryDescriptor","secondaryAsset","primaryAssetType","type","primaryAssetIdType","id","primaryAssetLabel","primaryAssetSelectGroups","groups","isSecondaryAssetPresent","secondaryAssetType","secondaryAssetIdType","secondaryAssetLabel","currentValue","currentSecondaryValue","initialPrimaryAssetId","Number","initialSecondaryAssetId","_useState","useState","_useState2","_slicedToArray","setPrimaryAsset","_useState4","_useState3","secondaryAssetId","setSecondaryAssetId","_useState6","_useState5","isPadSelectedAsPrimaryAsset","setIsPadSelectedAsPrimaryAsset","_useState8","_useState7","selectedGroup","setSelectedGroup","_useState10","_useState9","isMultipleAssets","setIsMultipleAssets","isMultipleAssetsRef","useRef","settingsPatch","current","styles","PrimaryAssetSelectComponent","ASSET_TYPES","rig","intervention_unit","PrimaryAssetSelectV2","PrimaryAssetSelect","primaryOption","Array","isArray","parentAssetId","assetId","handlePrimaryAssetReset","isMultiple","arguments","length","undefined","assetSetting","assets","secondaryAssetSelectIsVisible","useEffect","isEmpty","_jsxs","children","_jsx","classNames","MultipleAssetsToggle","checked","multiAssetSwitch","primaryAssetSelect","currentOption","concat","disableClearable","multiple","selected","primary","_selected$","_selected$2","isPadSelected","group","PAD_GROUP","name","isFracFleetSelected","FRAC_FLEET_GROUP","isFirstPadSelected","isFirstFracFleetSelected","assetsSetting","reduce","acc","_ref3","parentFracFleetId","assetSettings","fracFleetId","padId","replacedPadId","asset","onMultipleAssetChange","pad","_defineProperty","_assetSetting2","frac_fleet","setCurrentOption","onGroupChange","newGroup","onGroupReset","onInputReset","onActiveAssetIdChange","activeAssetId","_objectSpread","activeWellId","assetFields","getPrimaryAssetFields","secondaryAssetSelect","SecondaryAssetSelect","_toConsumableArray","ACTIVE_ASSETS_ID","ACTIVE_ASSET_ID","_ref2","secondary","selectedAssetId","well","replacedAssetId","parentAssetType"],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /** Both persisted string IDs and numeric API IDs are accepted at input boundaries. */
2
+ export type AssetId = number | string;
3
+ export type AssetGroup = {
4
+ id: string;
5
+ name: string;
6
+ type: string;
7
+ };
8
+ export type AssetDescriptor = {
9
+ id: string;
10
+ type: string;
11
+ label: string;
12
+ };
13
+ export type AssetEditorAppType = {
14
+ primaryAsset: {
15
+ assetType: AssetDescriptor | null;
16
+ groups?: AssetGroup[];
17
+ };
18
+ secondaryAsset?: {
19
+ assetType: AssetDescriptor | null;
20
+ } | null;
21
+ };
22
+ /** Normalized option returned by the asset selectors. */
23
+ export type AssetOption = {
24
+ id: number;
25
+ name?: string;
26
+ type?: string;
27
+ assetId?: number;
28
+ group?: string;
29
+ status?: string | null;
30
+ activeWellId?: number | null;
31
+ parentFracFleetId?: AssetId | null;
32
+ };
33
+ /** A persisted/default selection may not have its option data loaded yet. */
34
+ export type AssetOptionState = Omit<Partial<AssetOption>, 'id'> & {
35
+ id?: AssetId | null;
36
+ };
37
+ export type AssetSelection = AssetOptionState | AssetOption[] | null;
38
+ export type PrimaryAssetChange = AssetOption | AssetOption[] | null;
39
+ export type SecondaryAssetChange = {
40
+ id: AssetId;
41
+ name?: string;
42
+ assetId?: number;
43
+ };
44
+ export type AssetSelectionSettings = {
45
+ [field: string]: AssetId | null | undefined;
46
+ };
47
+ /** The editor receives complete app settings but emits only the fields it changes. */
48
+ export type AssetSettings = {
49
+ rigId?: AssetId | null;
50
+ wellId?: AssetId | null;
51
+ fracFleetId?: AssetId | null;
52
+ padId?: AssetId | null;
53
+ interventionUnitId?: AssetId | null;
54
+ drilloutUnitId?: AssetId | null;
55
+ assetId?: AssetId | null;
56
+ replacedAssetId?: AssetId | null;
57
+ replacedPadId?: AssetId | null;
58
+ assets?: AssetSelectionSettings[] | null;
59
+ } & Record<string, unknown>;
60
+ export type AssetSettingsPatch = {
61
+ rigId?: AssetId | null;
62
+ wellId?: AssetId | null;
63
+ fracFleetId?: AssetId | null;
64
+ padId?: AssetId | null;
65
+ interventionUnitId?: AssetId | null;
66
+ drilloutUnitId?: AssetId | null;
67
+ assetId?: AssetId | null;
68
+ replacedAssetId?: AssetId | null;
69
+ replacedPadId?: AssetId | null;
70
+ assets?: AssetSelectionSettings[] | null;
71
+ } & Record<string, AssetId | AssetSelectionSettings[] | null | undefined>;
72
+ export type AssetEditorChange = {
73
+ primary: PrimaryAssetChange;
74
+ secondary?: never;
75
+ } | {
76
+ secondary: {
77
+ name?: string;
78
+ };
79
+ primary?: never;
80
+ };
81
+ export type AssetSettingsChangeHandler = (settings: AssetSettingsPatch, isMultipleAssets: boolean) => void;
82
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/AssetEditorV2/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/AssetEditorV2/utils/__tests__/utils.test.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/AssetEditorV2/utils/__tests__/utils.test.ts"],"names":[],"mappings":""}
@@ -1,23 +1,27 @@
1
- export declare const mapAssetIdPath: (assetType: any) => string[];
2
- export declare const getPadFracFleetId: (fracFleets?: any[]) => any;
3
- export declare const getRequestOptions: (assetType: any, assetFields?: any[]) => {
1
+ import { AssetId, AssetOption } from '../types';
2
+ type FormatAssetParams = {
3
+ asset: unknown;
4
+ group?: string | null;
5
+ activeWellId?: AssetId | null;
6
+ isRequiredAssetId?: boolean;
7
+ isPrimaryAsset?: boolean;
8
+ isDrillingPlatformApp?: boolean;
9
+ };
10
+ type GetPrimaryAssetFieldsParams = {
11
+ primaryAssetType?: string | null;
12
+ assetFields: string[];
13
+ isDrillingPlatformApp?: boolean;
14
+ };
15
+ export declare const mapAssetIdPath: (assetType: string) => string[];
16
+ export declare const getRequestOptions: (assetType: string, assetFields?: string[]) => {
4
17
  sort: string;
5
18
  order: string;
6
- fields: any[];
19
+ fields: string[];
7
20
  };
8
- export declare const formatAsset: ({ asset, group, activeWellId, isRequiredAssetId, isPrimaryAsset, isDrillingPlatformApp, }: {
9
- activeWellId?: null | undefined;
10
- asset: any;
11
- group?: null | undefined;
12
- isDrillingPlatformApp: any;
13
- isPrimaryAsset: any;
14
- isRequiredAssetId: any;
15
- }) => {
16
- id: number;
17
- type: any;
18
- name: any;
19
- } | null;
20
- export declare const sortAsset: (curr: any) => -1 | 1;
21
- export declare const getPrimaryAssetFields: (primaryAssetType: any, assetFields: any, isDrillingPlatformApp: any) => any[];
22
- export declare const getSearchPlaceholder: (assetType: any, isSecondaryAssetPresent?: boolean) => string;
21
+ export declare const formatAsset: ({ asset, group, activeWellId, isRequiredAssetId, isPrimaryAsset, isDrillingPlatformApp, }: FormatAssetParams) => AssetOption | null;
22
+ export declare const isAssetOption: (asset: AssetOption | null) => asset is AssetOption;
23
+ export declare const sortAsset: (asset: AssetOption) => number;
24
+ export declare const getPrimaryAssetFields: ({ primaryAssetType, assetFields, isDrillingPlatformApp, }: GetPrimaryAssetFieldsParams) => string[];
25
+ export declare const getSearchPlaceholder: (assetType?: string | null, isSecondaryAssetPresent?: boolean) => string;
26
+ export {};
23
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/AssetEditorV2/utils/index.js"],"names":[],"mappings":"AAWA,eAAO,MAAM,cAAc,8BAU1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,6BAU7B,CAAC;AAEF,eAAO,MAAM,iBAAiB;IAC5B,IAAI;IACJ,KAAK;IACL,MAAM;CACN,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;QA+CvB,CAAC;AAEF,eAAO,MAAM,SAAS,uBAAmD,CAAC;AAE1E,eAAO,MAAM,qBAAqB,gFAYjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,+DAKhC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/AssetEditorV2/utils/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIhD,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAoBF,eAAO,MAAM,cAAc,cAAe,MAAM,KAAG,MAAM,EAUxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,cAAe,MAAM,gBAAe,MAAM,EAAE;IACxE,IAAI;IACJ,KAAK;IACL,MAAM;CACN,CAAC;AAEH,eAAO,MAAM,WAAW,8FAOrB,iBAAiB,KAAG,WAAW,GAAG,IA8CpC,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW,WAAW,GAAG,IAAI,KAAG,KAAK,IAAI,WAA6B,CAAC;AAEjG,eAAO,MAAM,SAAS,UAAW,WAAW,KAAG,MAAmD,CAAC;AAEnG,eAAO,MAAM,qBAAqB,8DAI/B,2BAA2B,KAAG,MAAM,EAatC,CAAC;AAEF,eAAO,MAAM,oBAAoB,eACnB,MAAM,GAAG,IAAI,wCAExB,MAMF,CAAC"}
@@ -1,2 +1,2 @@
1
- import t from"@babel/runtime/helpers/toConsumableArray";import"lodash";import{DEFAULT_ASSET_TYPE as n,ACTIVE_STATUS as e,ASSET_TYPE_SEARCH_PLACEHOLDERS as s,ASSET_TYPE_SEARCH_PLACEHOLDERS_NO_SECONDARY as a}from"../constants.js";import"../../../constants/goals.js";import"../../../constants/segment.js";import"../../../constants/alerts.js";import"../../../constants/apps.js";import"../../../constants/drillstring.js";import"../../../constants/completion.js";import"../../../constants/appPackages.js";import"../../../constants/notifications.js";import"../../../constants/feed.js";import"../../../constants/bha.js";import{ASSET_TYPES as i}from"../../../constants/assetTypes.js";import"../../../constants/corvaCompanyId.js";import"../../GradientManager/configuration/constants.js";var r=function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return{sort:"name",order:"asc",fields:["".concat(n,".name"),"".concat(n,".status")].concat(t(e))}},o=function(t){var s=t.asset,a=t.group,r=void 0===a?null:a,o=t.activeWellId,l=void 0===o?null:o,c=t.isRequiredAssetId,p=t.isPrimaryAsset,u=t.isDrillingPlatformApp;if(!s)return null;var d,m,v,y={id:+s.assetId||+s.id,type:s.type,name:s.name};(c&&(y.id=+s.id,y.assetId=+s.assetId),r&&(y.group=r),s.type===i.rig.type)&&(y.activeWellId=Number(null===(d=s.activeWell)||void 0===d?void 0:d.id)||null,u&&(y.activeWellId=Number(null===(m=s.activeWell)||void 0===m?void 0:m.assetId)||null));"interventionUnit"===s.type&&(y.activeWellId=Number(null===(v=s.activeWell)||void 0===v?void 0:v.id)||null);return s.type!==i.well.type&&s.type!==n||(y.status=Number(s.id)===l?e:null),s.type===i.pad.type&&(y.parentFracFleetId=s.parentFracFleetId,y.status=s.active&&s.current?e:null,p&&!s.parentFracFleetId&&(y.status=null)),y},l=function(t){return t.status===e?-1:1},c=function(n,e,s){var a=t(e);return n!==i.rig.type&&n!==i.intervention_unit.type||a.push("".concat(n,".active_well")),s?[].concat(t(a),["rig.active_child"]):a},p=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],e=n?s:a;return e[t]||"Search..."};export{o as formatAsset,c as getPrimaryAssetFields,r as getRequestOptions,p as getSearchPlaceholder,l as sortAsset};
1
+ import t from"@babel/runtime/helpers/toConsumableArray";import n from"@babel/runtime/helpers/typeof";import{ASSET_TYPE_SEARCH_PLACEHOLDERS as r,ASSET_TYPE_SEARCH_PLACEHOLDERS_NO_SECONDARY as e,DEFAULT_ASSET_TYPE as s,ACTIVE_STATUS as i}from"../constants.js";import"../../../constants/goals.js";import"../../../constants/segment.js";import"../../../constants/alerts.js";import"../../../constants/apps.js";import"../../../constants/drillstring.js";import"../../../constants/completion.js";import"../../../constants/appPackages.js";import"../../../constants/notifications.js";import"../../../constants/feed.js";import"../../../constants/bha.js";import{ASSET_TYPES as a}from"../../../constants/assetTypes.js";import"../../../constants/corvaCompanyId.js";import"lodash";import"../../GradientManager/configuration/constants.js";var o=function(t){return"object"===n(t)&&null!==t&&!Array.isArray(t)},l=function(t){return"string"==typeof t?t:void 0},u=function(t,n){var r=t.activeWell;return o(r)?r[n]:void 0},c=function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return{sort:"name",order:"asc",fields:["".concat(n,".name"),"".concat(n,".status")].concat(t(r))}},p=function(t){var n=t.asset,r=t.group,e=void 0===r?null:r,c=t.activeWellId,p=void 0===c?null:c,m=t.isRequiredAssetId,d=t.isPrimaryAsset,f=t.isDrillingPlatformApp;if(!o(n))return null;var v=l(n.type),y={id:Number(n.assetId)||Number(n.id),type:v,name:l(n.name)};return m&&(y.id=Number(n.id),y.assetId=Number(n.assetId)),e&&(y.group=e),v===a.rig.type&&(y.activeWellId=Number(u(n,"id"))||null,f&&(y.activeWellId=Number(u(n,"assetId"))||null)),"interventionUnit"===v&&(y.activeWellId=Number(u(n,"id"))||null),v!==a.well.type&&v!==s||(y.status=Number(n.id)===p?i:null),v===a.pad.type&&(y.parentFracFleetId=function(t){if("number"==typeof t||"string"==typeof t||null===t)return t}(n.parentFracFleetId),y.status=n.active&&n.current?i:null,d&&!n.parentFracFleetId&&(y.status=null)),y},m=function(t){return Boolean(t)},d=function(t){return t.status===i?-1:1},f=function(n){var r=n.primaryAssetType,e=n.assetFields,s=n.isDrillingPlatformApp,i=t(e);return r!==a.rig.type&&r!==a.intervention_unit.type||i.push("".concat(r,".active_well")),s?[].concat(t(i),["rig.active_child"]):i},v=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],s=n?r:e;return t&&s[t]||"Search..."};export{p as formatAsset,f as getPrimaryAssetFields,c as getRequestOptions,v as getSearchPlaceholder,m as isAssetOption,d as sortAsset};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/AssetEditorV2/utils/index.js"],"sourcesContent":["import { isEmpty } from 'lodash';\n\nimport {\n ACTIVE_STATUS,\n ASSET_TYPE_SEARCH_PLACEHOLDERS,\n ASSET_TYPE_SEARCH_PLACEHOLDERS_NO_SECONDARY,\n DEFAULT_ASSET_TYPE,\n} from '../constants';\n\nimport { ASSET_TYPES } from '~/constants';\n\nexport const mapAssetIdPath = assetType => {\n switch (assetType) {\n case 'rig':\n case 'well':\n return ['attributes', 'asset_id'];\n case 'frac_fleet':\n case 'pad':\n default:\n return ['id'];\n }\n};\n\nexport const getPadFracFleetId = (fracFleets = []) => {\n const currentFracFleet = fracFleets.find(fracFleet => fracFleet === fracFleet.current)?.id;\n const lastCurrentFracFleet = fracFleets.reduce((a, b) => {\n return new Date(a.lastCurrentAt) > new Date(b.lastCurrentAt) ? a : b;\n }, {});\n\n if (!isEmpty(currentFracFleet)) {\n return currentFracFleet.fracFleet?.id;\n }\n return lastCurrentFracFleet.fracFleet?.id;\n};\n\nexport const getRequestOptions = (assetType, assetFields = []) => ({\n sort: 'name',\n order: 'asc',\n fields: [`${assetType}.name`, `${assetType}.status`, ...assetFields],\n});\n\nexport const formatAsset = ({\n asset,\n group = null,\n activeWellId = null,\n isRequiredAssetId,\n isPrimaryAsset,\n isDrillingPlatformApp,\n}) => {\n if (!asset) return null;\n\n const formattedAsset = {\n id: +asset.assetId || +asset.id,\n type: asset.type,\n name: asset.name,\n };\n\n if (isRequiredAssetId) {\n formattedAsset.id = +asset.id;\n formattedAsset.assetId = +asset.assetId;\n }\n\n if (group) {\n formattedAsset.group = group;\n }\n if (asset.type === ASSET_TYPES.rig.type) {\n formattedAsset.activeWellId = Number(asset.activeWell?.id) || null;\n if (isDrillingPlatformApp) {\n formattedAsset.activeWellId = Number(asset.activeWell?.assetId) || null;\n }\n }\n // NOTE: we use deserializer which transform keys and values to camelCase\n if (asset.type === 'interventionUnit') {\n formattedAsset.activeWellId = Number(asset.activeWell?.id) || null;\n }\n if (asset.type === ASSET_TYPES.well.type || asset.type === DEFAULT_ASSET_TYPE) {\n formattedAsset.status = Number(asset.id) === activeWellId ? ACTIVE_STATUS : null;\n }\n if (asset.type === ASSET_TYPES.pad.type) {\n formattedAsset.parentFracFleetId = asset.parentFracFleetId;\n\n formattedAsset.status = asset.active && asset.current ? ACTIVE_STATUS : null;\n\n if (isPrimaryAsset && !asset.parentFracFleetId) {\n formattedAsset.status = null;\n }\n }\n return formattedAsset;\n};\n\nexport const sortAsset = curr => (curr.status === ACTIVE_STATUS ? -1 : 1);\n\nexport const getPrimaryAssetFields = (primaryAssetType, assetFields, isDrillingPlatformApp) => {\n const customAssetFields = [...assetFields];\n if (\n primaryAssetType === ASSET_TYPES.rig.type ||\n primaryAssetType === ASSET_TYPES.intervention_unit.type\n ) {\n customAssetFields.push(`${primaryAssetType}.active_well`);\n }\n\n if (isDrillingPlatformApp) return [...customAssetFields, 'rig.active_child'];\n\n return customAssetFields;\n};\n\nexport const getSearchPlaceholder = (assetType, isSecondaryAssetPresent = true) => {\n const assetPlacehoders = isSecondaryAssetPresent\n ? ASSET_TYPE_SEARCH_PLACEHOLDERS\n : ASSET_TYPE_SEARCH_PLACEHOLDERS_NO_SECONDARY;\n return assetPlacehoders[assetType] || 'Search...';\n};\n"],"names":["getRequestOptions","assetType","assetFields","sort","order","fields","formatAsset","_ref","asset","_ref$group","group","_ref$activeWellId","activeWellId","isRequiredAssetId","isPrimaryAsset","isDrillingPlatformApp","_asset$activeWell","_asset$activeWell2","_asset$activeWell3","formattedAsset","id","assetId","type","name","ASSET_TYPES","rig","Number","activeWell","well","DEFAULT_ASSET_TYPE","status","ACTIVE_STATUS","pad","parentFracFleetId","active","current","sortAsset","curr","getPrimaryAssetFields","primaryAssetType","customAssetFields","intervention_unit","push","getSearchPlaceholder","isSecondaryAssetPresent","assetPlacehoders","ASSET_TYPE_SEARCH_PLACEHOLDERS","ASSET_TYPE_SEARCH_PLACEHOLDERS_NO_SECONDARY"],"mappings":"6wBAmCaA,EAAoB,SAACC,GAAS,IAAEC,yDAAc,GAAE,MAAM,CACjEC,KAAM,OACNC,MAAO,MACPC,OAAYJ,CAAAA,GAAAA,OAAAA,EAAqBA,SAAAA,GAAAA,OAAAA,uBAAuBC,IACzD,EAEYI,EAAc,SAOrBC,GAAA,IANJC,IAAAA,MAAKC,EAAAF,EACLG,MAAAA,aAAQ,KAAID,EAAAE,EAAAJ,EACZK,aAAAA,aAAe,KAAID,EACnBE,IAAAA,kBACAC,IAAAA,eACAC,IAAAA,sBAEA,IAAKP,EAAO,OAAO,KAEnB,IAcyCQ,EAEZC,EAKUC,EArBjCC,EAAiB,CACrBC,IAAKZ,EAAMa,UAAYb,EAAMY,GAC7BE,KAAMd,EAAMc,KACZC,KAAMf,EAAMe,OAGVV,IACFM,EAAeC,IAAMZ,EAAMY,GAC3BD,EAAeE,SAAWb,EAAMa,SAG9BX,IACFS,EAAeT,MAAQA,GAErBF,EAAMc,OAASE,EAAYC,IAAIH,QACjCH,EAAeP,aAAec,OAAO,QAAAlB,EAAAA,EAAMmB,kBAAN,IAAAX,OAAA,EAAAA,EAAkBI,KAAO,KAC1DL,IACFI,EAAeP,aAAec,OAAO,QAAAlB,EAAAA,EAAMmB,kBAAN,IAAAV,OAAA,EAAAA,EAAkBI,UAAY,OAIpD,qBAAfb,EAAMc,OACRH,EAAeP,aAAec,OAAO,QAAAlB,EAAAA,EAAMmB,kBAAN,IAAAT,OAAA,EAAAA,EAAkBE,KAAO,MAchE,OAZIZ,EAAMc,OAASE,EAAYI,KAAKN,MAAQd,EAAMc,OAASO,IACzDV,EAAeW,OAASJ,OAAOlB,EAAMY,MAAQR,EAAemB,EAAgB,MAE1EvB,EAAMc,OAASE,EAAYQ,IAAIV,OACjCH,EAAec,kBAAoBzB,EAAMyB,kBAEzCd,EAAeW,OAAStB,EAAM0B,QAAU1B,EAAM2B,QAAUJ,EAAgB,KAEpEjB,IAAmBN,EAAMyB,oBAC3Bd,EAAeW,OAAS,OAGrBX,CACT,EAEaiB,EAAY,SAAAC,GAAI,OAAKA,EAAKP,SAAWC,GAAiB,EAAI,CAAC,EAE3DO,EAAwB,SAACC,EAAkBrC,EAAaa,GACnE,IAAMyB,EAAwBtC,EAAAA,GAQ9B,OANEqC,IAAqBf,EAAYC,IAAIH,MACrCiB,IAAqBf,EAAYiB,kBAAkBnB,MAEnDkB,EAAkBE,KAAQH,GAAAA,OAAAA,EAA+B,iBAGvDxB,EAAkCyB,GAAAA,OAAAA,EAAAA,IAAmB,qBAElDA,CACT,EAEaG,EAAuB,SAAC1C,GAA8C,IAAnC2C,6DACxCC,EAAmBD,EACrBE,EACAC,EACJ,OAAOF,EAAiB5C,IAAc,WACxC"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/AssetEditorV2/utils/index.ts"],"sourcesContent":["import {\n ACTIVE_STATUS,\n ASSET_TYPE_SEARCH_PLACEHOLDERS,\n ASSET_TYPE_SEARCH_PLACEHOLDERS_NO_SECONDARY,\n DEFAULT_ASSET_TYPE,\n} from '../constants';\nimport { AssetId, AssetOption } from '../types';\n\nimport { ASSET_TYPES } from '~/constants';\n\ntype FormatAssetParams = {\n asset: unknown;\n group?: string | null;\n activeWellId?: AssetId | null;\n isRequiredAssetId?: boolean;\n isPrimaryAsset?: boolean;\n isDrillingPlatformApp?: boolean;\n};\n\ntype GetPrimaryAssetFieldsParams = {\n primaryAssetType?: string | null;\n assetFields: string[];\n isDrillingPlatformApp?: boolean;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst getString = (value: unknown): string | undefined =>\n typeof value === 'string' ? value : undefined;\n\nconst getAssetId = (value: unknown): AssetId | null | undefined => {\n if (typeof value === 'number' || typeof value === 'string' || value === null) return value;\n\n return undefined;\n};\n\nconst getActiveWellValue = (asset: Record<string, unknown>, key: string): unknown => {\n const activeWell = asset.activeWell;\n\n return isRecord(activeWell) ? activeWell[key] : undefined;\n};\n\nexport const mapAssetIdPath = (assetType: string): string[] => {\n switch (assetType) {\n case 'rig':\n case 'well':\n return ['attributes', 'asset_id'];\n case 'frac_fleet':\n case 'pad':\n default:\n return ['id'];\n }\n};\n\nexport const getRequestOptions = (assetType: string, assetFields: string[] = []) => ({\n sort: 'name',\n order: 'asc',\n fields: [`${assetType}.name`, `${assetType}.status`, ...assetFields],\n});\n\nexport const formatAsset = ({\n asset,\n group = null,\n activeWellId = null,\n isRequiredAssetId,\n isPrimaryAsset,\n isDrillingPlatformApp,\n}: FormatAssetParams): AssetOption | null => {\n if (!isRecord(asset)) return null;\n\n const type = getString(asset.type);\n const formattedAsset: AssetOption = {\n id: Number(asset.assetId) || Number(asset.id),\n type,\n name: getString(asset.name),\n };\n\n if (isRequiredAssetId) {\n formattedAsset.id = Number(asset.id);\n formattedAsset.assetId = Number(asset.assetId);\n }\n\n if (group) {\n formattedAsset.group = group;\n }\n\n if (type === ASSET_TYPES.rig.type) {\n formattedAsset.activeWellId = Number(getActiveWellValue(asset, 'id')) || null;\n\n if (isDrillingPlatformApp) {\n formattedAsset.activeWellId = Number(getActiveWellValue(asset, 'assetId')) || null;\n }\n }\n\n // The deserializer transforms keys and values to camelCase.\n if (type === 'interventionUnit') {\n formattedAsset.activeWellId = Number(getActiveWellValue(asset, 'id')) || null;\n }\n\n if (type === ASSET_TYPES.well.type || type === DEFAULT_ASSET_TYPE) {\n formattedAsset.status = Number(asset.id) === activeWellId ? ACTIVE_STATUS : null;\n }\n\n if (type === ASSET_TYPES.pad.type) {\n formattedAsset.parentFracFleetId = getAssetId(asset.parentFracFleetId);\n formattedAsset.status = asset.active && asset.current ? ACTIVE_STATUS : null;\n\n if (isPrimaryAsset && !asset.parentFracFleetId) {\n formattedAsset.status = null;\n }\n }\n\n return formattedAsset;\n};\n\nexport const isAssetOption = (asset: AssetOption | null): asset is AssetOption => Boolean(asset);\n\nexport const sortAsset = (asset: AssetOption): number => (asset.status === ACTIVE_STATUS ? -1 : 1);\n\nexport const getPrimaryAssetFields = ({\n primaryAssetType,\n assetFields,\n isDrillingPlatformApp,\n}: GetPrimaryAssetFieldsParams): string[] => {\n const customAssetFields = [...assetFields];\n\n if (\n primaryAssetType === ASSET_TYPES.rig.type ||\n primaryAssetType === ASSET_TYPES.intervention_unit.type\n ) {\n customAssetFields.push(`${primaryAssetType}.active_well`);\n }\n\n if (isDrillingPlatformApp) return [...customAssetFields, 'rig.active_child'];\n\n return customAssetFields;\n};\n\nexport const getSearchPlaceholder = (\n assetType?: string | null,\n isSecondaryAssetPresent = true\n): string => {\n const assetPlaceholders = isSecondaryAssetPresent\n ? ASSET_TYPE_SEARCH_PLACEHOLDERS\n : ASSET_TYPE_SEARCH_PLACEHOLDERS_NO_SECONDARY;\n\n return (assetType && assetPlaceholders[assetType]) || 'Search...';\n};\n"],"names":["isRecord","value","_typeof","Array","isArray","getString","undefined","getActiveWellValue","asset","key","activeWell","getRequestOptions","assetType","assetFields","sort","order","fields","formatAsset","_ref","_ref$group","group","_ref$activeWellId","activeWellId","isRequiredAssetId","isPrimaryAsset","isDrillingPlatformApp","type","formattedAsset","id","Number","assetId","name","ASSET_TYPES","rig","well","DEFAULT_ASSET_TYPE","status","ACTIVE_STATUS","pad","parentFracFleetId","getAssetId","active","current","isAssetOption","Boolean","sortAsset","getPrimaryAssetFields","_ref2","primaryAssetType","customAssetFields","intervention_unit","push","getSearchPlaceholder","isSecondaryAssetPresent","assetPlaceholders","ASSET_TYPE_SEARCH_PLACEHOLDERS","ASSET_TYPE_SEARCH_PLACEHOLDERS_NO_SECONDARY"],"mappings":"szBAyBA,IAAMA,EAAW,SAACC,GAAc,MACb,WAAjBC,EAAOD,IAAgC,OAAVA,IAAmBE,MAAMC,QAAQH,EAAM,EAEhEI,EAAY,SAACJ,GAAc,MACd,iBAAVA,EAAqBA,OAAQK,CAAS,EAQzCC,EAAqB,SAACC,EAAgCC,GAC1D,IAAMC,EAAaF,EAAME,WAEzB,OAAOV,EAASU,GAAcA,EAAWD,QAAOH,CAClD,EAcaK,EAAoB,SAACC,GAAiB,IAAEC,yDAAwB,GAAE,MAAM,CACnFC,KAAM,OACNC,MAAO,MACPC,OAAYJ,CAAAA,GAAAA,OAAAA,EAAqBA,SAAAA,GAAAA,OAAAA,uBAAuBC,IACzD,EAEYI,EAAc,SAOkBC,GAAA,IAN3CV,IAAAA,MAAKW,EAAAD,EACLE,MAAAA,aAAQ,KAAID,EAAAE,EAAAH,EACZI,aAAAA,aAAe,KAAID,EACnBE,IAAAA,kBACAC,IAAAA,eACAC,IAAAA,sBAEA,IAAKzB,EAASQ,GAAQ,OAAO,KAE7B,IAAMkB,EAAOrB,EAAUG,EAAMkB,MACvBC,EAA8B,CAClCC,GAAIC,OAAOrB,EAAMsB,UAAYD,OAAOrB,EAAMoB,IAC1CF,KAAAA,EACAK,KAAM1B,EAAUG,EAAMuB,OAsCxB,OAnCIR,IACFI,EAAeC,GAAKC,OAAOrB,EAAMoB,IACjCD,EAAeG,QAAUD,OAAOrB,EAAMsB,UAGpCV,IACFO,EAAeP,MAAQA,GAGrBM,IAASM,EAAYC,IAAIP,OAC3BC,EAAeL,aAAeO,OAAOtB,EAAmBC,EAAO,QAAU,KAErEiB,IACFE,EAAeL,aAAeO,OAAOtB,EAAmBC,EAAO,aAAe,OAKrE,qBAATkB,IACFC,EAAeL,aAAeO,OAAOtB,EAAmBC,EAAO,QAAU,MAGvEkB,IAASM,EAAYE,KAAKR,MAAQA,IAASS,IAC7CR,EAAeS,OAASP,OAAOrB,EAAMoB,MAAQN,EAAee,EAAgB,MAG1EX,IAASM,EAAYM,IAAIZ,OAC3BC,EAAeY,kBA1EA,SAACtC,GAClB,GAAqB,iBAAVA,GAAuC,iBAAVA,GAAgC,OAAVA,EAAgB,OAAOA,CAGvF,CAsEuCuC,CAAWhC,EAAM+B,mBACpDZ,EAAeS,OAAS5B,EAAMiC,QAAUjC,EAAMkC,QAAUL,EAAgB,KAEpEb,IAAmBhB,EAAM+B,oBAC3BZ,EAAeS,OAAS,OAIrBT,CACT,EAEagB,EAAgB,SAACnC,GAAyB,OAA2BoC,QAAQpC,EAAM,EAEnFqC,EAAY,SAACrC,GAAkB,OAAcA,EAAM4B,SAAWC,GAAiB,EAAI,CAAC,EAEpFS,EAAwB,SAIQC,GAAA,IAH3CC,IAAAA,iBACAnC,IAAAA,YACAY,IAAAA,sBAEMwB,EAAwBpC,EAAAA,GAS9B,OANEmC,IAAqBhB,EAAYC,IAAIP,MACrCsB,IAAqBhB,EAAYkB,kBAAkBxB,MAEnDuB,EAAkBE,KAAQH,GAAAA,OAAAA,EAA+B,iBAGvDvB,EAAkCwB,GAAAA,OAAAA,EAAAA,IAAmB,qBAElDA,CACT,EAEaG,EAAuB,SAClCxC,GAEW,IADXyC,6DAEMC,EAAoBD,EACtBE,EACAC,EAEJ,OAAQ5C,GAAa0C,EAAkB1C,IAAe,WACxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentDocument.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentLightbox/AttachmentDocument.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AA2G1F,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,qBAAqB,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,aAAc,uBAAuB,4CA2EnE,CAAC"}
1
+ {"version":3,"file":"AttachmentDocument.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentLightbox/AttachmentDocument.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAwH1F,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,qBAAqB,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,aAAc,uBAAuB,4CA2EnE,CAAC"}
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/toArray";import n from"@babel/runtime/regenerator";import{useState as a,useEffect as o}from"react";import{FileIcon as i}from"../../componentsV2/FileIcon/FileIcon.js";import{Button as c}from"../../componentsV2/Button/Button.js";import{LoaderCircular as s}from"../../componentsV2/LoaderCircular/LoaderCircular.js";import{TextViewer as l}from"../NewDocumentViewer/components/TextViewer.js";import{CsvViewer as m}from"../NewDocumentViewer/components/CsvViewer.js";import{PdfViewer as d}from"../NewDocumentViewer/components/PdfViewer.js";import{getTextData as u,getXlsxData as f,getCsvData as p}from"../NewDocumentViewer/utils.js";import{openAttachmentInNewTab as b,downloadAttachment as h}from"./downloadAttachment.js";import v from"./AttachmentLightbox.scss.js";import{fetchAttachment as w}from"../../utils/fetchAttachment.js";import{getFileExtension as x}from"../../utils/fileExtension.js";import j from"../../utils/main.js";import{jsx as k,jsxs as N}from"react/jsx-runtime";var L={pdf:"pdf",csv:"table",xlsx:"table",txt:"text",json:"text"},g=function(e){var t=r(e),n=t[0],a=void 0===n?[]:n,o=t.slice(1),i=function(e){var t=new Map;return e.map((function(e,r){var n,a=e||"Column ".concat(r+1),o=null!==(n=t.get(a))&&void 0!==n?n:0;return t.set(a,o+1),o?"".concat(a," (").concat(o+1,")"):a}))}(a);return o.map((function(e){return Object.fromEntries(i.map((function(t,r){var n;return[t,null!==(n=e[r])&&void 0!==n?n:""]})))}))},F=function(){var e=t(n.mark((function e(t,r){var a,o;return n.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("pdf"!==r){e.next=7;break}return e.next=3,w(t);case 3:return e.next=5,e.sent.blob();case 5:return o=e.sent,e.abrupt("return",URL.createObjectURL(o.type?o:new Blob([o],{type:"application/pdf"})));case 7:if("csv"!==r){e.next=9;break}return e.abrupt("return",p(t));case 9:if("xlsx"!==r){e.next=24;break}return e.t0=g,e.next=13,f(t);case 13:if(e.t2=a=e.sent,e.t1=null!==e.t2,!e.t1){e.next=17;break}e.t1=void 0!==a;case 17:if(!e.t1){e.next=21;break}e.t3=a,e.next=22;break;case 21:e.t3=[];case 22:return e.t4=e.t3,e.abrupt("return",(0,e.t0)(e.t4));case 24:return e.abrupt("return",u(t));case 25:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),U=["pdf","text","table"],y=function(r){var u=r.item,f=j.getFileNameWithExtensionFromPath(u.name),p=x(f),w=u.src||u.downloadUrl||"",g=L[p],y=function(t,r,n){var i=a((function(){return{data:"",isLoading:!!t&&U.includes(n),hasFailed:!1}})),c=e(i,2),s=c[0],l=c[1];return o((function(){if(t&&U.includes(n)){var e=!0;l({data:"",isLoading:!0,hasFailed:!1});var a="";return F(t,r).then((function(t){"pdf"===n&&(a=t),e?l({data:t,isLoading:!1,hasFailed:!1}):a&&URL.revokeObjectURL(a)})).catch((function(r){console.error('Failed to read attachment "'.concat(t,'"'),r),e&&l({data:"",isLoading:!1,hasFailed:!0})})),function(){e=!1,a&&URL.revokeObjectURL(a)}}l({data:"",isLoading:!1,hasFailed:!1})}),[t,r,n]),s}(w,p,g),D=y.data,V=y.isLoading,R=y.hasFailed;if(V)return k("div",{className:v.documentState,"data-testid":"attachment-preview-loading",children:k(s,{size:"medium"})});var T=!!w&&!R;if(T&&"pdf"===g)return k("div",{className:v.documentFrame,children:k(d,{fileUrl:D,fileName:f})});if(T&&"table"===g)return k("div",{className:v.documentTable,children:k(m,{fileData:D})});if(T&&"text"===g)return k("div",{className:v.documentText,children:k(l,{fileData:D})});var A=R||!w&&!!g;return N("div",{className:v.documentState,"data-testid":"attachment-preview-fallback",children:[k(i,{name:f,size:48}),k("div",{className:v.fallbackName,children:f}),k("div",{className:v.fallbackHint,children:A?"This file could not be opened.":"No preview available for this file type."}),!(!u.downloadUrl&&!u.src)&&!u.hideDownload&&k("a",{href:u.downloadUrl||u.src,download:f,target:"_blank",rel:"noopener noreferrer",className:v.fallbackDownload,"data-testid":"attachment-preview-fallback-download",onClick:function(){var e=t(n.mark((function e(t){var r;return n.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=u.downloadUrl||u.src||"",t.preventDefault(),e.next=4,h(r,f);case 4:if(e.sent){e.next=6;break}b(r);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),children:k(c,{type:"secondary",size:"medium",children:"Download"})})]})};export{y as AttachmentDocument};
1
+ import e from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/toArray";import n from"@babel/runtime/regenerator";import{useState as a,useEffect as o}from"react";import{FileIcon as i}from"../../componentsV2/FileIcon/FileIcon.js";import{Button as c}from"../../componentsV2/Button/Button.js";import{LoaderCircular as s}from"../../componentsV2/LoaderCircular/LoaderCircular.js";import{TextViewer as l}from"../NewDocumentViewer/components/TextViewer.js";import{CsvViewer as d}from"../NewDocumentViewer/components/CsvViewer.js";import{PdfViewer as m}from"../NewDocumentViewer/components/PdfViewer.js";import{getTextData as u,getXlsxData as f,getCsvData as p}from"../NewDocumentViewer/utils.js";import{openAttachmentInNewTab as b,downloadAttachment as h}from"./downloadAttachment.js";import v from"./AttachmentLightbox.scss.js";import{fetchAttachment as w}from"../../utils/fetchAttachment.js";import{getFileExtension as x}from"../../utils/fileExtension.js";import k from"../../utils/main.js";import{jsx as j,jsxs as N}from"react/jsx-runtime";var L={pdf:"pdf",csv:"table",xlsx:"table",txt:"text",json:"text"},g=function(e){var t=r(e),n=t[0],a=void 0===n?[]:n,o=t.slice(1),i=function(e){var t=new Map;return e.map((function(e,r){var n,a=e||"Column ".concat(r+1),o=null!==(n=t.get(a))&&void 0!==n?n:0;return t.set(a,o+1),o?"".concat(a," (").concat(o+1,")"):a}))}(a);return o.map((function(e){return Object.fromEntries(i.map((function(t,r){var n;return[t,null!==(n=e[r])&&void 0!==n?n:""]})))}))},F=function(){var e=t(n.mark((function e(t,r){var a,o,i;return n.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("pdf"!==r){e.next=10;break}return e.next=3,w(t);case 3:if((o=e.sent).ok){e.next=6;break}throw new Error("Could not read the file (".concat(o.status,")"));case 6:return e.next=8,o.blob();case 8:return i=e.sent,e.abrupt("return",URL.createObjectURL("application/pdf"===i.type?i:new Blob([i],{type:"application/pdf"})));case 10:if("csv"!==r){e.next=12;break}return e.abrupt("return",p(t));case 12:if("xlsx"!==r){e.next=27;break}return e.t0=g,e.next=16,f(t);case 16:if(e.t2=a=e.sent,e.t1=null!==e.t2,!e.t1){e.next=20;break}e.t1=void 0!==a;case 20:if(!e.t1){e.next=24;break}e.t3=a,e.next=25;break;case 24:e.t3=[];case 25:return e.t4=e.t3,e.abrupt("return",(0,e.t0)(e.t4));case 27:return e.abrupt("return",u(t));case 28:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),U=["pdf","text","table"],y=function(r){var u=r.item,f=k.getFileNameWithExtensionFromPath(u.name),p=x(f),w=u.src||u.downloadUrl||"",g=L[p],y=function(t,r,n){var i=a((function(){return{data:"",isLoading:!!t&&U.includes(n),hasFailed:!1}})),c=e(i,2),s=c[0],l=c[1];return o((function(){if(t&&U.includes(n)){var e=!0;l({data:"",isLoading:!0,hasFailed:!1});var a="";return F(t,r).then((function(t){"pdf"===n&&(a=t),e?l({data:t,isLoading:!1,hasFailed:!1}):a&&URL.revokeObjectURL(a)})).catch((function(r){console.error('Failed to read attachment "'.concat(t,'"'),r),e&&l({data:"",isLoading:!1,hasFailed:!0})})),function(){e=!1,a&&URL.revokeObjectURL(a)}}l({data:"",isLoading:!1,hasFailed:!1})}),[t,r,n]),s}(w,p,g),D=y.data,V=y.isLoading,C=y.hasFailed;if(V)return j("div",{className:v.documentState,"data-testid":"attachment-preview-loading",children:j(s,{size:"medium"})});var R=!!w&&!C;if(R&&"pdf"===g)return j("div",{className:v.documentFrame,children:j(m,{fileUrl:D,fileName:f})});if(R&&"table"===g)return j("div",{className:v.documentTable,children:j(d,{fileData:D})});if(R&&"text"===g)return j("div",{className:v.documentText,children:j(l,{fileData:D})});var T=C||!w&&!!g;return N("div",{className:v.documentState,"data-testid":"attachment-preview-fallback",children:[j(i,{name:f,size:48}),j("div",{className:v.fallbackName,children:f}),j("div",{className:v.fallbackHint,children:T?"This file could not be opened.":"No preview available for this file type."}),!(!u.downloadUrl&&!u.src)&&!u.hideDownload&&j("a",{href:u.downloadUrl||u.src,download:f,target:"_blank",rel:"noopener noreferrer",className:v.fallbackDownload,"data-testid":"attachment-preview-fallback-download",onClick:function(){var e=t(n.mark((function e(t){var r;return n.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=u.downloadUrl||u.src||"",t.preventDefault(),e.next=4,h(r,f);case 4:if(e.sent){e.next=6;break}b(r);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),children:j(c,{type:"secondary",size:"medium",children:"Download"})})]})};export{y as AttachmentDocument};
2
2
  //# sourceMappingURL=AttachmentDocument.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentDocument.js","sources":["../../../src/components/AttachmentLightbox/AttachmentDocument.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { FileIcon } from '../../componentsV2/FileIcon';\nimport { Button } from '../../componentsV2/Button';\nimport { LoaderCircular } from '../../componentsV2/LoaderCircular';\nimport { CsvViewer, PdfViewer, TextViewer } from '../NewDocumentViewer/components';\nimport { getCsvData, getTextData, getXlsxData } from '../NewDocumentViewer/utils';\nimport type { AttachmentPreviewItem } from '../AttachmentPreview/AttachmentPreview.types';\n\nimport { downloadAttachment, openAttachmentInNewTab } from './downloadAttachment';\n\nimport styles from './AttachmentLightbox.scss';\n\nimport { fetchAttachment } from '~/utils/fetchAttachment';\nimport { getFileExtension } from '~/utils/fileExtension';\nimport utils from '~/utils/main';\n\nconst RENDERERS = {\n pdf: 'pdf',\n csv: 'table',\n xlsx: 'table',\n txt: 'text',\n json: 'text',\n} as const;\n\ntype Renderer = typeof RENDERERS[keyof typeof RENDERERS];\n\ntype TableRow = Record<string, unknown>;\n\n/** The table viewer keys cells off the first row, so every column needs its own name. */\nconst toColumnNames = (header: string[]): string[] => {\n const seen = new Map<string, number>();\n\n return header.map((column, index) => {\n const name = column || `Column ${index + 1}`;\n const taken = seen.get(name) ?? 0;\n\n seen.set(name, taken + 1);\n\n return taken ? `${name} (${taken + 1})` : name;\n });\n};\n\nconst toTableRows = (rows: string[][]): TableRow[] => {\n const [header = [], ...body] = rows;\n const columns = toColumnNames(header);\n\n return body.map(row =>\n Object.fromEntries(columns.map((column, index) => [column, row[index] ?? '']))\n );\n};\n\nconst fetchData = async (src: string, extension: string) => {\n if (extension === 'pdf') {\n // The host serves this as a download, which navigates a frame to `about:blank` and shows\n // nothing. Holding the bytes ourselves lets the viewer render them whatever it was sent as.\n const blob = await (await fetchAttachment(src)).blob();\n\n return URL.createObjectURL(blob.type ? blob : new Blob([blob], { type: 'application/pdf' }));\n }\n if (extension === 'csv') return getCsvData(src);\n if (extension === 'xlsx') return toTableRows((await getXlsxData(src)) ?? []);\n\n return getTextData(src);\n};\n\nconst NEEDS_DATA: Renderer[] = ['pdf', 'text', 'table'];\nconst useDocumentData = (src: string, extension: string, renderer?: Renderer) => {\n const [state, setState] = useState<{\n data: string | TableRow[];\n isLoading: boolean;\n hasFailed: boolean;\n }>(() => ({\n data: '',\n isLoading: !!src && NEEDS_DATA.includes(renderer as Renderer),\n hasFailed: false,\n }));\n\n useEffect(() => {\n if (!src || !NEEDS_DATA.includes(renderer as Renderer)) {\n setState({ data: '', isLoading: false, hasFailed: false });\n\n return undefined;\n }\n\n let isActive = true;\n setState({ data: '', isLoading: true, hasFailed: false });\n\n let objectUrl = '';\n\n fetchData(src, extension)\n .then(data => {\n if (renderer === 'pdf') objectUrl = data as string;\n\n if (isActive) {\n setState({ data: data as string | TableRow[], isLoading: false, hasFailed: false });\n } else if (objectUrl) {\n URL.revokeObjectURL(objectUrl);\n }\n })\n .catch(error => {\n console.error(`Failed to read attachment \"${src}\"`, error);\n if (isActive) setState({ data: '', isLoading: false, hasFailed: true });\n });\n\n return () => {\n isActive = false;\n if (objectUrl) URL.revokeObjectURL(objectUrl);\n };\n }, [src, extension, renderer]);\n\n return state;\n};\n\nexport type AttachmentDocumentProps = {\n item: AttachmentPreviewItem;\n};\n\nexport const AttachmentDocument = ({ item }: AttachmentDocumentProps) => {\n const fileName = utils.getFileNameWithExtensionFromPath(item.name);\n const extension = getFileExtension(fileName);\n const src = item.src || item.downloadUrl || '';\n const renderer: Renderer | undefined = RENDERERS[extension as keyof typeof RENDERERS];\n\n const { data, isLoading, hasFailed } = useDocumentData(src, extension, renderer);\n\n if (isLoading) {\n return (\n <div className={styles.documentState} data-testid=\"attachment-preview-loading\">\n <LoaderCircular size=\"medium\" />\n </div>\n );\n }\n\n const isRenderable = !!src && !hasFailed;\n\n if (isRenderable && renderer === 'pdf') {\n return (\n <div className={styles.documentFrame}>\n <PdfViewer fileUrl={data as string} fileName={fileName} />\n </div>\n );\n }\n\n if (isRenderable && renderer === 'table') {\n return (\n <div className={styles.documentTable}>\n <CsvViewer fileData={data as TableRow[]} />\n </div>\n );\n }\n\n if (isRenderable && renderer === 'text') {\n return (\n <div className={styles.documentText}>\n <TextViewer fileData={data as string} />\n </div>\n );\n }\n\n const isUnopenable = hasFailed || (!src && !!renderer);\n\n return (\n <div className={styles.documentState} data-testid=\"attachment-preview-fallback\">\n <FileIcon name={fileName} size={48} />\n <div className={styles.fallbackName}>{fileName}</div>\n <div className={styles.fallbackHint}>\n {isUnopenable\n ? 'This file could not be opened.'\n : 'No preview available for this file type.'}\n </div>\n {!!(item.downloadUrl || item.src) && !item.hideDownload && (\n <a\n href={item.downloadUrl || item.src}\n download={fileName}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.fallbackDownload}\n data-testid=\"attachment-preview-fallback-download\"\n onClick={async event => {\n const url = item.downloadUrl || item.src || '';\n event.preventDefault();\n\n if (!(await downloadAttachment(url, fileName))) openAttachmentInNewTab(url);\n }}\n >\n <Button type=\"secondary\" size=\"medium\">\n Download\n </Button>\n </a>\n )}\n </div>\n );\n};\n"],"names":["RENDERERS","pdf","csv","xlsx","txt","json","toTableRows","rows","_rows","_toArray","_rows$","header","body","slice","columns","seen","Map","map","column","index","_seen$get","name","taken","get","set","concat","toColumnNames","row","Object","fromEntries","_row$index","fetchData","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","src","extension","_yield$getXlsxData","blob","wrap","_context","prev","next","fetchAttachment","sent","abrupt","URL","createObjectURL","type","Blob","getCsvData","t0","getXlsxData","t2","t1","t3","t4","getTextData","stop","_x","_x2","apply","this","arguments","NEEDS_DATA","AttachmentDocument","_ref2","item","fileName","utils","getFileNameWithExtensionFromPath","getFileExtension","downloadUrl","renderer","_useDocumentData","_useState","useState","data","isLoading","includes","hasFailed","_useState2","_slicedToArray","state","setState","useEffect","isActive","objectUrl","then","revokeObjectURL","catch","error","console","useDocumentData","_jsx","className","styles","documentState","children","LoaderCircular","size","isRenderable","documentFrame","PdfViewer","fileUrl","documentTable","CsvViewer","fileData","documentText","TextViewer","isUnopenable","_jsxs","FileIcon","fallbackName","fallbackHint","hideDownload","href","download","target","rel","fallbackDownload","onClick","_ref3","event","url","_context2","preventDefault","downloadAttachment","openAttachmentInNewTab","_callee2","_x3","Button"],"mappings":"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"}
1
+ {"version":3,"file":"AttachmentDocument.js","sources":["../../../src/components/AttachmentLightbox/AttachmentDocument.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { FileIcon } from '../../componentsV2/FileIcon';\nimport { Button } from '../../componentsV2/Button';\nimport { LoaderCircular } from '../../componentsV2/LoaderCircular';\nimport { CsvViewer, PdfViewer, TextViewer } from '../NewDocumentViewer/components';\nimport { getCsvData, getTextData, getXlsxData } from '../NewDocumentViewer/utils';\nimport type { AttachmentPreviewItem } from '../AttachmentPreview/AttachmentPreview.types';\n\nimport { downloadAttachment, openAttachmentInNewTab } from './downloadAttachment';\n\nimport styles from './AttachmentLightbox.scss';\n\nimport { fetchAttachment } from '~/utils/fetchAttachment';\nimport { getFileExtension } from '~/utils/fileExtension';\nimport utils from '~/utils/main';\n\nconst RENDERERS = {\n pdf: 'pdf',\n csv: 'table',\n xlsx: 'table',\n txt: 'text',\n json: 'text',\n} as const;\n\ntype Renderer = typeof RENDERERS[keyof typeof RENDERERS];\n\ntype TableRow = Record<string, unknown>;\n\n/** The table viewer keys cells off the first row, so every column needs its own name. */\nconst toColumnNames = (header: string[]): string[] => {\n const seen = new Map<string, number>();\n\n return header.map((column, index) => {\n const name = column || `Column ${index + 1}`;\n const taken = seen.get(name) ?? 0;\n\n seen.set(name, taken + 1);\n\n return taken ? `${name} (${taken + 1})` : name;\n });\n};\n\nconst toTableRows = (rows: string[][]): TableRow[] => {\n const [header = [], ...body] = rows;\n const columns = toColumnNames(header);\n\n return body.map(row =>\n Object.fromEntries(columns.map((column, index) => [column, row[index] ?? '']))\n );\n};\n\nconst PDF_MIME_TYPE = 'application/pdf';\n\nconst fetchData = async (src: string, extension: string) => {\n if (extension === 'pdf') {\n // The host serves this as a download, which navigates a frame to `about:blank` and shows\n // nothing. Holding the bytes ourselves lets the viewer render them whatever it was sent as.\n const response = await fetchAttachment(src);\n\n // A refused read answers with an XML error page; retyped below it would reach the viewer as\n // a \"pdf\" instead of the failure fallback.\n if (!response.ok) throw new Error(`Could not read the file (${response.status})`);\n\n const blob = await response.blob();\n\n // The frame renders a blob by its type alone: pipeline uploads (stage reports, PJRs) sit in\n // S3 as `application/octet-stream`, which the frame downloads instead of showing — so the\n // extension decides, not the header.\n return URL.createObjectURL(\n blob.type === PDF_MIME_TYPE ? blob : new Blob([blob], { type: PDF_MIME_TYPE })\n );\n }\n if (extension === 'csv') return getCsvData(src);\n if (extension === 'xlsx') return toTableRows((await getXlsxData(src)) ?? []);\n\n return getTextData(src);\n};\n\nconst NEEDS_DATA: Renderer[] = ['pdf', 'text', 'table'];\nconst useDocumentData = (src: string, extension: string, renderer?: Renderer) => {\n const [state, setState] = useState<{\n data: string | TableRow[];\n isLoading: boolean;\n hasFailed: boolean;\n }>(() => ({\n data: '',\n isLoading: !!src && NEEDS_DATA.includes(renderer as Renderer),\n hasFailed: false,\n }));\n\n useEffect(() => {\n if (!src || !NEEDS_DATA.includes(renderer as Renderer)) {\n setState({ data: '', isLoading: false, hasFailed: false });\n\n return undefined;\n }\n\n let isActive = true;\n setState({ data: '', isLoading: true, hasFailed: false });\n\n let objectUrl = '';\n\n fetchData(src, extension)\n .then(data => {\n if (renderer === 'pdf') objectUrl = data as string;\n\n if (isActive) {\n setState({ data: data as string | TableRow[], isLoading: false, hasFailed: false });\n } else if (objectUrl) {\n URL.revokeObjectURL(objectUrl);\n }\n })\n .catch(error => {\n console.error(`Failed to read attachment \"${src}\"`, error);\n if (isActive) setState({ data: '', isLoading: false, hasFailed: true });\n });\n\n return () => {\n isActive = false;\n if (objectUrl) URL.revokeObjectURL(objectUrl);\n };\n }, [src, extension, renderer]);\n\n return state;\n};\n\nexport type AttachmentDocumentProps = {\n item: AttachmentPreviewItem;\n};\n\nexport const AttachmentDocument = ({ item }: AttachmentDocumentProps) => {\n const fileName = utils.getFileNameWithExtensionFromPath(item.name);\n const extension = getFileExtension(fileName);\n const src = item.src || item.downloadUrl || '';\n const renderer: Renderer | undefined = RENDERERS[extension as keyof typeof RENDERERS];\n\n const { data, isLoading, hasFailed } = useDocumentData(src, extension, renderer);\n\n if (isLoading) {\n return (\n <div className={styles.documentState} data-testid=\"attachment-preview-loading\">\n <LoaderCircular size=\"medium\" />\n </div>\n );\n }\n\n const isRenderable = !!src && !hasFailed;\n\n if (isRenderable && renderer === 'pdf') {\n return (\n <div className={styles.documentFrame}>\n <PdfViewer fileUrl={data as string} fileName={fileName} />\n </div>\n );\n }\n\n if (isRenderable && renderer === 'table') {\n return (\n <div className={styles.documentTable}>\n <CsvViewer fileData={data as TableRow[]} />\n </div>\n );\n }\n\n if (isRenderable && renderer === 'text') {\n return (\n <div className={styles.documentText}>\n <TextViewer fileData={data as string} />\n </div>\n );\n }\n\n const isUnopenable = hasFailed || (!src && !!renderer);\n\n return (\n <div className={styles.documentState} data-testid=\"attachment-preview-fallback\">\n <FileIcon name={fileName} size={48} />\n <div className={styles.fallbackName}>{fileName}</div>\n <div className={styles.fallbackHint}>\n {isUnopenable\n ? 'This file could not be opened.'\n : 'No preview available for this file type.'}\n </div>\n {!!(item.downloadUrl || item.src) && !item.hideDownload && (\n <a\n href={item.downloadUrl || item.src}\n download={fileName}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.fallbackDownload}\n data-testid=\"attachment-preview-fallback-download\"\n onClick={async event => {\n const url = item.downloadUrl || item.src || '';\n event.preventDefault();\n\n if (!(await downloadAttachment(url, fileName))) openAttachmentInNewTab(url);\n }}\n >\n <Button type=\"secondary\" size=\"medium\">\n Download\n </Button>\n </a>\n )}\n </div>\n );\n};\n"],"names":["RENDERERS","pdf","csv","xlsx","txt","json","toTableRows","rows","_rows","_toArray","_rows$","header","body","slice","columns","seen","Map","map","column","index","_seen$get","name","taken","get","set","concat","toColumnNames","row","Object","fromEntries","_row$index","fetchData","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","src","extension","_yield$getXlsxData","response","blob","wrap","_context","prev","next","fetchAttachment","sent","ok","Error","status","abrupt","URL","createObjectURL","type","Blob","getCsvData","t0","getXlsxData","t2","t1","t3","t4","getTextData","stop","_x","_x2","apply","this","arguments","NEEDS_DATA","AttachmentDocument","_ref2","item","fileName","utils","getFileNameWithExtensionFromPath","getFileExtension","downloadUrl","renderer","_useDocumentData","_useState","useState","data","isLoading","includes","hasFailed","_useState2","_slicedToArray","state","setState","useEffect","isActive","objectUrl","then","revokeObjectURL","catch","error","console","useDocumentData","_jsx","className","styles","documentState","children","LoaderCircular","size","isRenderable","documentFrame","PdfViewer","fileUrl","documentTable","CsvViewer","fileData","documentText","TextViewer","isUnopenable","_jsxs","FileIcon","fallbackName","fallbackHint","hideDownload","href","download","target","rel","fallbackDownload","onClick","_ref3","event","url","_context2","preventDefault","downloadAttachment","openAttachmentInNewTab","_callee2","_x3","Button"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useAttachmentUpload.local.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAttachmentUpload.local.test.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentComposer/__tests__/useAttachmentUpload.local.test.tsx"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"useAttachmentUpload.d.ts","sourceRoot":"","sources":["../../../src/components/CommentComposer/useAttachmentUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA4C,MAAM,OAAO,CAAC;AAG9E,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,8CAA8C,CAAC;AAQtD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAcF,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAkD1C,eAAO,MAAM,mBAAmB,kEAO7B,0BAA0B;;;;8BA8PjB,WAAW,CAAC,gBAAgB,CAAC;sBApD7B,IAAI,EAAE;0BAnFR,MAAM;4BA8BE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE;2BAqH9C,qBAAqB,CAAC,IAAI,CAAC;sBAW3B,qBAAqB,CAAC,IAAI,CAAC;qCAcnB,qBAAqB,CAAC,IAAI,CAAC,EAAE;;;;;;;CA2H7C,CAAC"}
1
+ {"version":3,"file":"useAttachmentUpload.d.ts","sourceRoot":"","sources":["../../../src/components/CommentComposer/useAttachmentUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA4C,MAAM,OAAO,CAAC;AAG9E,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,8CAA8C,CAAC;AAQtD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAcF,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAkD1C,eAAO,MAAM,mBAAmB,kEAO7B,0BAA0B;;;;8BAgQjB,WAAW,CAAC,gBAAgB,CAAC;sBAtD7B,IAAI,EAAE;0BAnFR,MAAM;4BA8BE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE;2BAuH9C,qBAAqB,CAAC,IAAI,CAAC;sBAW3B,qBAAqB,CAAC,IAAI,CAAC;qCAcnB,qBAAqB,CAAC,IAAI,CAAC,EAAE;;;;;;;CA2H7C,CAAC"}
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/toConsumableArray";import e from"@babel/runtime/helpers/asyncToGenerator";import n from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/slicedToArray";import i from"@babel/runtime/regenerator";import{useState as u,useRef as o,useCallback as l,useEffect as c}from"react";import a from"react-s3-uploader/s3upload";import{getAttachmentKind as f}from"../AttachmentPreview/getAttachmentKind.js";import{ACCEPTED_ATTACHMENT_TYPES as s}from"../AttachFileButton/AttachFileButton.js";import{getS3SignedUrl as d}from"../../clients/jsonApi/index.js";import{getUrlFileName as p}from"../../utils/links.js";import{getSignedLink as v,peekSignedLink as m}from"../../utils/signedLinkCache.js";function h(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.push.apply(n,t)}return n}function g(r){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?h(Object(t),!0).forEach((function(e){n(r,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):h(Object(t)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(t,e))}))}return r}var b=10,w=function(r){return r.type.startsWith("image/")?"image":r.type.startsWith("video/")?"video":"file"},U=function(r){return(r/1048576).toFixed(1)},y=function(r){return{id:r.url,name:r.name,file:null,previewUrl:"",isUploading:!1,error:null,uploaded:r}},j=0,O=function(){return"attachment-".concat(j+=1)},x=function(n){var h,b,j=n.value,x=n.onChange,k=n.onError,F=n.maxSizeBytes,L=n.maxFiles,P=void 0===L?10:L,z=n.accept,S=void 0===z?s:z,A=u([]),E=t(A,2),R=E[0],B=E[1],C=o(null),D=o(new Map),M=o(new Map),W=o([]),N=o(x),Y=o(k);N.current=x,Y.current=k;var I=o([]),T=l((function(r){var e=r(W.current);W.current=e,B(e),I.current=function(r){return r.map((function(r){return r.uploaded})).filter(Boolean)}(e),N.current(I.current)}),[]),_=l((function(r,e){return T((function(n){return n.map((function(n){return n.id===r?g(g({},n),e):n}))}))}),[T]),G=l((function(r){var e,n;null===(e=D.current.get(r))||void 0===e||e.abortUpload(),D.current.delete(r),M.current.set(r,(null!==(n=M.current.get(r))&&void 0!==n?n:0)+1)}),[]),K=l((function(r){null!=r&&r.previewUrl&&URL.revokeObjectURL(r.previewUrl)}),[]),q=l((function(){var r,e,n;null===(r=Y.current)||void 0===r||r.call(Y,null!==(e=null===(n=W.current.find((function(r){return r.error})))||void 0===n?void 0:n.error)&&void 0!==e?e:null)}),[]);c((function(){return function(){D.current.forEach((function(r){return r.abortUpload()})),D.current.clear(),W.current.forEach((function(r){r.previewUrl&&URL.revokeObjectURL(r.previewUrl)}))}}),[]);var H=l((function(r,n){var t,u=(null!==(t=M.current.get(r))&&void 0!==t?t:0)+1;M.current.set(r,u);var o,l,c=function(){return M.current.get(r)===u},f=function(e){var n;c()&&(_(r,{isUploading:!1,error:e}),null===(n=Y.current)||void 0===n||n.call(Y,e))},s="",p=new a({files:[n],preprocess:function(r,e){return e(r)},onProgress:function(){},getSignedUrl:(l=e(i.mark((function r(e,n){var t;return i.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,d(e.name,e.type);case 3:t=r.sent,s=t.file_name,n(g(g({},t),{},{signedUrl:t.signed_url})),r.next=11;break;case 8:r.prev=8,r.t0=r.catch(0),f((null===r.t0||void 0===r.t0?void 0:r.t0.message)||"Failed to upload the file");case 11:case"end":return r.stop()}}),r,null,[[0,8]])}))),function(r,e){return l.apply(this,arguments)}),onFinishS3Put:(o=e(i.mark((function e(){var t;return i.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v(s);case 3:if(t=e.sent,c()){e.next=6;break}return e.abrupt("return");case 6:D.current.delete(r),_(r,{isUploading:!1,error:null,uploaded:{url:t,name:s,size:n.size}}),q(),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(0),f((null===e.t0||void 0===e.t0?void 0:e.t0.message)||"Failed to upload the file");case 14:case"end":return e.stop()}}),e,null,[[0,11]])}))),function(){return o.apply(this,arguments)}),onError:function(r){return f(r||"Failed to upload the file")}});D.current.set(r,p)}),[_,q]),J=l((function(e){var n,t=p(e);t&&(W.current.length>=P?null===(n=Y.current)||void 0===n||n.call(Y,"You can attach up to ".concat(P," files.")):W.current.some((function(r){var n;return(null===(n=r.uploaded)||void 0===n?void 0:n.url)===e}))||T((function(n){return[].concat(r(n),[{id:O(),name:t,file:null,previewUrl:e,isUploading:!1,error:null,uploaded:{url:e,name:t}}])})))}),[T,P]),Q=l(function(){var n=e(i.mark((function e(n){var t,u,o,l,c,a,f,s,d,p,m;return i.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((o=n.filter((function(r,e,n){return!W.current.some((function(e){var n;return(null===(n=e.uploaded)||void 0===n?void 0:n.name)===r.fileName}))&&n.findIndex((function(e){return e.fileName===r.fileName}))===e}))).length){e.next=3;break}return e.abrupt("return");case 3:if(!((l=P-W.current.length)<=0)){e.next=7;break}return null===(c=Y.current)||void 0===c||c.call(Y,"You can attach up to ".concat(P," files.")),e.abrupt("return");case 7:return a=o.slice(0,l),e.next=10,Promise.all(a.map((function(r){return v(r.fileName).then((function(e){return{url:e,name:r.fileName,size:r.size}})).catch((function(){return null}))})));case 10:f=e.sent,s=f.filter(Boolean),d=0,s.length&&T((function(e){var n=s.slice(0,Math.max(P-e.length,0));return d=n.length,[].concat(r(e),r(n.map((function(r){return g(g({},y(r)),{},{id:O()})}))))})),p=f.length-s.length,m=o.length>a.length||d<s.length,null===(t=Y.current)||void 0===t||t.call(Y,p&&"Could not attach ".concat(1===p?"a file":"".concat(p," files")," from Wellhub.")||m&&"You can attach up to ".concat(P," files.")||(null===(u=W.current.find((function(r){return r.error})))||void 0===u?void 0:u.error)||null);case 17:case"end":return e.stop()}}),e)})));return function(r){return n.apply(this,arguments)}}(),[T,P]),V=l((function(e){var n,t,i,u,o=e.filter((function(r){return function(r,e){return e.split(",").map((function(r){return r.trim().toLowerCase()})).filter(Boolean).some((function(e){if(e.startsWith("."))return r.name.toLowerCase().endsWith(e);if(e.endsWith("/*")){var n=r.type.toLowerCase();return n?n.startsWith(e.slice(0,-1)):f({name:r.name})===e.slice(0,-1)}return r.type.toLowerCase()===e}))}(r,S)})),l=o.length<e.length?1===e.length?"That file type is not supported.":"Some files were skipped — unsupported file type.":null,c="You can attach up to ".concat(P," files."),a=P-W.current.length;if(!o.length||a<=0){var s;null===(s=Y.current)||void 0===s||s.call(Y,o.length?c:l)}else{var d=o.slice(0,a),p=d.map((function(r){var e=w(r),n=!!F&&r.size>F;return{id:O(),name:r.name,file:r,previewUrl:"file"===e?"":URL.createObjectURL(r),isUploading:!n,error:n?"File is too large (".concat(U(r.size)," MB). Maximum size is ").concat(U(F)," MB."):null,uploaded:null}}));T((function(e){return[].concat(r(e),r(p))}));var v=o.length>d.length?c:null;null===(n=Y.current)||void 0===n||n.call(Y,null!==(t=null!==(i=null===(u=W.current.find((function(r){return r.error})))||void 0===u?void 0:u.error)&&void 0!==i?i:l)&&void 0!==t?t:v),p.filter((function(r){return!r.error})).forEach((function(r){return H(r.id,r.file)}))}}),[T,P,F,H,S]),X=l((function(r){var e,n=Array.from(null!==(e=r.target.files)&&void 0!==e?e:[]);C.current&&(C.current.value=""),n.length&&V(n)}),[V]),Z=l((function(){var r;return null===(r=C.current)||void 0===r?void 0:r.click()}),[]),$=l((function(r){var e=String(r);G(e),K(W.current.find((function(r){return r.id===e}))),T((function(r){return r.filter((function(r){return r.id!==e}))})),q()}),[G,K,T,q]),rr=l((function(r){var e=String(r),n=W.current.find((function(r){return r.id===e}));null!=n&&n.file&&(G(e),_(e,{isUploading:!0,error:null}),q(),H(e,n.file))}),[G,_,H,q]),er=l((function(e){return T((function(n){var t=new Map(n.map((function(r){return[r.id,r]}))),i=e.map((function(r){return t.get(String(r))})).filter(Boolean),u=n.filter((function(r){return!e.some((function(e){return String(e)===r.id}))}));return[].concat(r(i),r(u))}))}),[T]),nr=l((function(){var r;W.current.forEach((function(r){G(r.id),K(r)})),T((function(){return[]})),null===(r=Y.current)||void 0===r||r.call(Y,null)}),[G,T,K]);c((function(){var r,e,n;(e=I.current,n=j,e.length===n.length&&e.every((function(r,e){return r.url===n[e].url})))||(W.current.forEach((function(r){G(r.id),r.previewUrl&&URL.revokeObjectURL(r.previewUrl)})),W.current=j.map(y),I.current=j,B(W.current),null===(r=Y.current)||void 0===r||r.call(Y,null))}),[j,G]);var tr=u((function(){return j.reduce((function(r,e){var n=m(e.name,"inline");return n&&(r[e.name]=n),r}),{})})),ir=t(tr,2),ur=ir[0],or=ir[1],lr=o(ur);lr.current=ur;var cr=R.filter((function(r){return!r.file&&!r.previewUrl&&r.uploaded})).map((function(r){return r.uploaded.name})).join("|");return c((function(){var r=cr.split("|").filter((function(r){return r&&!(r in lr.current)}));if(r.length){var e=!0;return Promise.all(r.map((function(r){return v(r,"inline").then((function(e){return[r,e]})).catch((function(e){return console.error('Failed to sign stored attachment "'.concat(r,'"'),e),[r,""]}))}))).then((function(r){e&&or((function(e){return g(g({},e),Object.fromEntries(r))}))})),function(){e=!1}}}),[cr]),{items:R.reduce((function(r,e){var n;if(e.file)return r.push({id:e.id,name:e.name,src:e.previewUrl,kind:w(e.file),size:e.file.size,isUploading:e.isUploading,hideDownload:!0,error:null!==(n=e.error)&&void 0!==n?n:void 0}),r;var t=e.uploaded,i=f(t),u=e.previewUrl||ur[t.name];return"file"===i||u?(r.push({id:e.id,name:t.name,src:u,kind:i,size:t.size,hideDownload:!0}),r):r}),[]),fileInputRef:C,openFileDialog:Z,handleFileSelect:X,addFiles:V,addLinkedImage:J,addStoredFiles:Q,removeAttachment:$,handleRetry:rr,reorderAttachments:er,clearAttachments:nr,isUploading:R.some((function(r){return r.isUploading})),error:null!==(h=null===(b=R.find((function(r){return r.error})))||void 0===b?void 0:b.error)&&void 0!==h?h:null,count:R.length,isFull:R.length>=P,maxFiles:P}};export{b as DEFAULT_MAX_ATTACHMENTS,x as useAttachmentUpload};
1
+ import r from"@babel/runtime/helpers/toConsumableArray";import e from"@babel/runtime/helpers/asyncToGenerator";import n from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/slicedToArray";import i from"@babel/runtime/regenerator";import{useState as u,useRef as o,useCallback as l,useEffect as c}from"react";import a from"react-s3-uploader/s3upload";import{getAttachmentKind as f}from"../AttachmentPreview/getAttachmentKind.js";import{ACCEPTED_ATTACHMENT_TYPES as s}from"../AttachFileButton/AttachFileButton.js";import{getS3SignedUrl as d}from"../../clients/jsonApi/index.js";import{getUrlFileName as p}from"../../utils/links.js";import{getSignedLink as v,peekSignedLink as m}from"../../utils/signedLinkCache.js";function h(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.push.apply(n,t)}return n}function g(r){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?h(Object(t),!0).forEach((function(e){n(r,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):h(Object(t)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(t,e))}))}return r}var b=10,w=function(r){return(r/1048576).toFixed(1)},U=function(r){return{id:r.url,name:r.name,file:null,previewUrl:"",isUploading:!1,error:null,uploaded:r}},y=0,j=function(){return"attachment-".concat(y+=1)},O=function(n){var h,b,y=n.value,O=n.onChange,x=n.onError,k=n.maxSizeBytes,F=n.maxFiles,L=void 0===F?10:F,P=n.accept,z=void 0===P?s:P,S=u([]),A=t(S,2),E=A[0],R=A[1],B=o(null),C=o(new Map),D=o(new Map),M=o([]),W=o(O),N=o(x);W.current=O,N.current=x;var Y=o([]),I=l((function(r){var e=r(M.current);M.current=e,R(e),Y.current=function(r){return r.map((function(r){return r.uploaded})).filter(Boolean)}(e),W.current(Y.current)}),[]),T=l((function(r,e){return I((function(n){return n.map((function(n){return n.id===r?g(g({},n),e):n}))}))}),[I]),_=l((function(r){var e,n;null===(e=C.current.get(r))||void 0===e||e.abortUpload(),C.current.delete(r),D.current.set(r,(null!==(n=D.current.get(r))&&void 0!==n?n:0)+1)}),[]),G=l((function(r){null!=r&&r.previewUrl&&URL.revokeObjectURL(r.previewUrl)}),[]),K=l((function(){var r,e,n;null===(r=N.current)||void 0===r||r.call(N,null!==(e=null===(n=M.current.find((function(r){return r.error})))||void 0===n?void 0:n.error)&&void 0!==e?e:null)}),[]);c((function(){return function(){C.current.forEach((function(r){return r.abortUpload()})),C.current.clear(),M.current.forEach((function(r){r.previewUrl&&URL.revokeObjectURL(r.previewUrl)}))}}),[]);var q=l((function(r,n){var t,u=(null!==(t=D.current.get(r))&&void 0!==t?t:0)+1;D.current.set(r,u);var o,l,c=function(){return D.current.get(r)===u},f=function(e){var n;c()&&(T(r,{isUploading:!1,error:e}),null===(n=N.current)||void 0===n||n.call(N,e))},s="",p=new a({files:[n],preprocess:function(r,e){return e(r)},onProgress:function(){},getSignedUrl:(l=e(i.mark((function r(e,n){var t;return i.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,d(e.name,e.type);case 3:t=r.sent,s=t.file_name,n(g(g({},t),{},{signedUrl:t.signed_url})),r.next=11;break;case 8:r.prev=8,r.t0=r.catch(0),f((null===r.t0||void 0===r.t0?void 0:r.t0.message)||"Failed to upload the file");case 11:case"end":return r.stop()}}),r,null,[[0,8]])}))),function(r,e){return l.apply(this,arguments)}),onFinishS3Put:(o=e(i.mark((function e(){var t;return i.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v(s);case 3:if(t=e.sent,c()){e.next=6;break}return e.abrupt("return");case 6:C.current.delete(r),T(r,{isUploading:!1,error:null,uploaded:{url:t,name:s,size:n.size}}),K(),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(0),f((null===e.t0||void 0===e.t0?void 0:e.t0.message)||"Failed to upload the file");case 14:case"end":return e.stop()}}),e,null,[[0,11]])}))),function(){return o.apply(this,arguments)}),onError:function(r){return f(r||"Failed to upload the file")}});C.current.set(r,p)}),[T,K]),H=l((function(e){var n,t=p(e);t&&(M.current.length>=L?null===(n=N.current)||void 0===n||n.call(N,"You can attach up to ".concat(L," files.")):M.current.some((function(r){var n;return(null===(n=r.uploaded)||void 0===n?void 0:n.url)===e}))||I((function(n){return[].concat(r(n),[{id:j(),name:t,file:null,previewUrl:e,isUploading:!1,error:null,uploaded:{url:e,name:t}}])})))}),[I,L]),J=l(function(){var n=e(i.mark((function e(n){var t,u,o,l,c,a,f,s,d,p,m;return i.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((o=n.filter((function(r,e,n){return!M.current.some((function(e){var n;return(null===(n=e.uploaded)||void 0===n?void 0:n.name)===r.fileName}))&&n.findIndex((function(e){return e.fileName===r.fileName}))===e}))).length){e.next=3;break}return e.abrupt("return");case 3:if(!((l=L-M.current.length)<=0)){e.next=7;break}return null===(c=N.current)||void 0===c||c.call(N,"You can attach up to ".concat(L," files.")),e.abrupt("return");case 7:return a=o.slice(0,l),e.next=10,Promise.all(a.map((function(r){return v(r.fileName).then((function(e){return{url:e,name:r.fileName,size:r.size}})).catch((function(){return null}))})));case 10:f=e.sent,s=f.filter(Boolean),d=0,s.length&&I((function(e){var n=s.slice(0,Math.max(L-e.length,0));return d=n.length,[].concat(r(e),r(n.map((function(r){return g(g({},U(r)),{},{id:j()})}))))})),p=f.length-s.length,m=o.length>a.length||d<s.length,null===(t=N.current)||void 0===t||t.call(N,p&&"Could not attach ".concat(1===p?"a file":"".concat(p," files")," from Wellhub.")||m&&"You can attach up to ".concat(L," files.")||(null===(u=M.current.find((function(r){return r.error})))||void 0===u?void 0:u.error)||null);case 17:case"end":return e.stop()}}),e)})));return function(r){return n.apply(this,arguments)}}(),[I,L]),Q=l((function(e){var n,t,i,u,o=e.filter((function(r){return function(r,e){return e.split(",").map((function(r){return r.trim().toLowerCase()})).filter(Boolean).some((function(e){if(e.startsWith("."))return r.name.toLowerCase().endsWith(e);if(e.endsWith("/*")){var n=r.type.toLowerCase();return n?n.startsWith(e.slice(0,-1)):f({name:r.name})===e.slice(0,-1)}return r.type.toLowerCase()===e}))}(r,z)})),l=o.length<e.length?1===e.length?"That file type is not supported.":"Some files were skipped — unsupported file type.":null,c="You can attach up to ".concat(L," files."),a=L-M.current.length;if(!o.length||a<=0){var s;null===(s=N.current)||void 0===s||s.call(N,o.length?c:l)}else{var d=o.slice(0,a),p=d.map((function(r){var e=!!k&&r.size>k;return{id:j(),name:r.name,file:r,previewUrl:URL.createObjectURL(r),isUploading:!e,error:e?"File is too large (".concat(w(r.size)," MB). Maximum size is ").concat(w(k)," MB."):null,uploaded:null}}));I((function(e){return[].concat(r(e),r(p))}));var v=o.length>d.length?c:null;null===(n=N.current)||void 0===n||n.call(N,null!==(t=null!==(i=null===(u=M.current.find((function(r){return r.error})))||void 0===u?void 0:u.error)&&void 0!==i?i:l)&&void 0!==t?t:v),p.filter((function(r){return!r.error})).forEach((function(r){return q(r.id,r.file)}))}}),[I,L,k,q,z]),V=l((function(r){var e,n=Array.from(null!==(e=r.target.files)&&void 0!==e?e:[]);B.current&&(B.current.value=""),n.length&&Q(n)}),[Q]),X=l((function(){var r;return null===(r=B.current)||void 0===r?void 0:r.click()}),[]),Z=l((function(r){var e=String(r);_(e),G(M.current.find((function(r){return r.id===e}))),I((function(r){return r.filter((function(r){return r.id!==e}))})),K()}),[_,G,I,K]),$=l((function(r){var e=String(r),n=M.current.find((function(r){return r.id===e}));null!=n&&n.file&&(_(e),T(e,{isUploading:!0,error:null}),K(),q(e,n.file))}),[_,T,q,K]),rr=l((function(e){return I((function(n){var t=new Map(n.map((function(r){return[r.id,r]}))),i=e.map((function(r){return t.get(String(r))})).filter(Boolean),u=n.filter((function(r){return!e.some((function(e){return String(e)===r.id}))}));return[].concat(r(i),r(u))}))}),[I]),er=l((function(){var r;M.current.forEach((function(r){_(r.id),G(r)})),I((function(){return[]})),null===(r=N.current)||void 0===r||r.call(N,null)}),[_,I,G]);c((function(){var r,e,n;(e=Y.current,n=y,e.length===n.length&&e.every((function(r,e){return r.url===n[e].url})))||(M.current.forEach((function(r){_(r.id),r.previewUrl&&URL.revokeObjectURL(r.previewUrl)})),M.current=y.map(U),Y.current=y,R(M.current),null===(r=N.current)||void 0===r||r.call(N,null))}),[y,_]);var nr=u((function(){return y.reduce((function(r,e){var n=m(e.name,"inline");return n&&(r[e.name]=n),r}),{})})),tr=t(nr,2),ir=tr[0],ur=tr[1],or=o(ir);or.current=ir;var lr=E.filter((function(r){return!r.file&&!r.previewUrl&&r.uploaded})).map((function(r){return r.uploaded.name})).join("|");return c((function(){var r=lr.split("|").filter((function(r){return r&&!(r in or.current)}));if(r.length){var e=!0;return Promise.all(r.map((function(r){return v(r,"inline").then((function(e){return[r,e]})).catch((function(e){return console.error('Failed to sign stored attachment "'.concat(r,'"'),e),[r,""]}))}))).then((function(r){e&&ur((function(e){return g(g({},e),Object.fromEntries(r))}))})),function(){e=!1}}}),[lr]),{items:E.reduce((function(r,e){var n,t;if(e.file)return r.push({id:e.id,name:e.name,src:e.previewUrl,kind:(t=e.file,t.type.startsWith("image/")?"image":t.type.startsWith("video/")?"video":"file"),size:e.file.size,isUploading:e.isUploading,hideDownload:!0,error:null!==(n=e.error)&&void 0!==n?n:void 0}),r;var i=e.uploaded,u=f(i),o=e.previewUrl||ir[i.name];return"file"===u||o?(r.push({id:e.id,name:i.name,src:o,kind:u,size:i.size,hideDownload:!0}),r):r}),[]),fileInputRef:B,openFileDialog:X,handleFileSelect:V,addFiles:Q,addLinkedImage:H,addStoredFiles:J,removeAttachment:Z,handleRetry:$,reorderAttachments:rr,clearAttachments:er,isUploading:E.some((function(r){return r.isUploading})),error:null!==(h=null===(b=E.find((function(r){return r.error})))||void 0===b?void 0:b.error)&&void 0!==h?h:null,count:E.length,isFull:E.length>=L,maxFiles:L}};export{b as DEFAULT_MAX_ATTACHMENTS,O as useAttachmentUpload};
2
2
  //# sourceMappingURL=useAttachmentUpload.js.map