@shipengine/elements 2.26.5 → 2.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/cjs/assets/xcover/logo.svg.cjs +44 -0
  2. package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/index.cjs +7 -0
  3. package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.cjs +56 -0
  4. package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.cjs +27 -0
  5. package/dist/cjs/components/field/rate-select/rate-card/rate-card.cjs +53 -42
  6. package/dist/cjs/components/field/rate-select/rate-card/rate-card.styles.cjs +4 -0
  7. package/dist/cjs/components/field/rate-select/rate-select.cjs +80 -49
  8. package/dist/cjs/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.cjs +1 -1
  9. package/dist/cjs/components/forms/warehouse-form/warehouse-form.cjs +10 -1
  10. package/dist/cjs/components/service-card/service-card.cjs +3 -2
  11. package/dist/cjs/components/service-card/service-card.styles.cjs +4 -2
  12. package/dist/cjs/data/insurance-provider-metadatas.json.cjs +10 -4
  13. package/dist/cjs/elements/customs-form/customs-form-element.cjs +294 -0
  14. package/dist/cjs/elements/customs-form/customs-form-element.stories.cjs +243 -0
  15. package/dist/cjs/elements/customs-form/customs-form-schema.cjs +59 -0
  16. package/dist/cjs/elements/customs-form/customs-form-types.cjs +63 -0
  17. package/dist/cjs/elements/customs-form/index.cjs +10 -0
  18. package/dist/cjs/elements/index.cjs +5 -0
  19. package/dist/cjs/elements/labels-grid/hooks/use-labels-grid.cjs +2 -2
  20. package/dist/cjs/elements/labels-grid/labels-grid.cjs +29 -9
  21. package/dist/cjs/elements/labels-grid/labels-grid.styles.cjs +5 -0
  22. package/dist/cjs/elements/manage-carriers/manage-carriers.cjs +1 -1
  23. package/dist/cjs/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.cjs +1 -1
  24. package/dist/cjs/elements/purchase-label/components/index.cjs +2 -0
  25. package/dist/cjs/elements/purchase-label/components/rate-form/rate-view.cjs +3 -5
  26. package/dist/cjs/elements/purchase-label/components/shipment-form/shipment-form.cjs +7 -4
  27. package/dist/cjs/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.cjs +35 -11
  28. package/dist/cjs/elements/purchase-label/hooks/use-insurance-provider-options.cjs +2 -2
  29. package/dist/cjs/elements/shipments-grid/hooks/use-shipments-grid.cjs +2 -2
  30. package/dist/cjs/elements/shipments-grid/shipments-grid.cjs +20 -6
  31. package/dist/cjs/elements/shipments-grid/shipments-grid.styles.cjs +5 -0
  32. package/dist/cjs/factories/shipengine/address.cjs +114 -0
  33. package/dist/cjs/factories/shipengine/money.cjs +21 -0
  34. package/dist/cjs/factories/shipengine/order-source.cjs +37 -0
  35. package/dist/cjs/factories/shipengine/package.cjs +41 -0
  36. package/dist/cjs/factories/shipengine/resource.cjs +23 -0
  37. package/dist/cjs/factories/shipengine/shipment.cjs +176 -0
  38. package/dist/cjs/factories/shipengine/weight.cjs +44 -0
  39. package/dist/cjs/factories/utils.cjs +19 -0
  40. package/dist/cjs/features/manage-carriers/hooks/use-list-funding-source-carriers.cjs +4 -6
  41. package/dist/cjs/features/manage-carriers/manage-carriers.cjs +8 -6
  42. package/dist/cjs/features/manage-warehouses/manage-warehouses.cjs +9 -5
  43. package/dist/cjs/hooks/use-configure-shipment.cjs +55 -14
  44. package/dist/cjs/hooks/use-get-funding-source-insurance-provider.cjs +7 -7
  45. package/dist/cjs/hooks/use-get-service-data.cjs +60 -0
  46. package/dist/cjs/hooks/use-import-sales-order.cjs +45 -20
  47. package/dist/cjs/hooks/use-manage-funding-source-insurance.cjs +15 -23
  48. package/dist/cjs/index.cjs +5 -0
  49. package/dist/cjs/locales/en/common.json.cjs +1 -1
  50. package/dist/cjs/locales/en/list-labels.json.cjs +2 -1
  51. package/dist/cjs/locales/en/list-shipments.json.cjs +1 -1
  52. package/dist/cjs/locales/en/manage-warehouses.json.cjs +2 -0
  53. package/dist/cjs/locales/en/purchase-label.json.cjs +9 -1
  54. package/dist/cjs/package.json.cjs +1 -1
  55. package/dist/cjs/utilities/feature-flags/feature-flags.cjs +3 -1
  56. package/dist/cjs/utilities/shipengine/carrier.cjs +4 -0
  57. package/dist/cjs/utilities/shipengine/index.cjs +3 -0
  58. package/dist/cjs/utilities/shipengine/insurance.cjs +63 -0
  59. package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.cjs +9 -9
  60. package/dist/cjs/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.cjs +1 -1
  61. package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs +3 -2
  62. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs +8 -6
  63. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.cjs +4 -19
  64. package/dist/esm/assets/xcover/logo.svg.js +23 -0
  65. package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/index.js +1 -0
  66. package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.js +54 -0
  67. package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.js +25 -0
  68. package/dist/esm/components/field/rate-select/rate-card/rate-card.js +53 -42
  69. package/dist/esm/components/field/rate-select/rate-card/rate-card.styles.js +4 -0
  70. package/dist/esm/components/field/rate-select/rate-select.js +80 -49
  71. package/dist/esm/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.js +1 -1
  72. package/dist/esm/components/forms/warehouse-form/warehouse-form.js +10 -1
  73. package/dist/esm/components/service-card/service-card.js +3 -2
  74. package/dist/esm/components/service-card/service-card.styles.js +4 -2
  75. package/dist/esm/data/insurance-provider-metadatas.json.js +9 -4
  76. package/dist/esm/elements/customs-form/customs-form-element.js +291 -0
  77. package/dist/esm/elements/customs-form/customs-form-element.stories.js +232 -0
  78. package/dist/esm/elements/customs-form/customs-form-schema.js +56 -0
  79. package/dist/esm/elements/customs-form/customs-form-types.js +60 -0
  80. package/dist/esm/elements/customs-form/index.js +3 -0
  81. package/dist/esm/elements/index.js +3 -0
  82. package/dist/esm/elements/labels-grid/hooks/use-labels-grid.js +2 -2
  83. package/dist/esm/elements/labels-grid/labels-grid.js +30 -10
  84. package/dist/esm/elements/labels-grid/labels-grid.styles.js +5 -0
  85. package/dist/esm/elements/manage-carriers/manage-carriers.js +1 -1
  86. package/dist/esm/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.js +1 -1
  87. package/dist/esm/elements/purchase-label/components/index.js +1 -0
  88. package/dist/esm/elements/purchase-label/components/rate-form/rate-view.js +3 -5
  89. package/dist/esm/elements/purchase-label/components/shipment-form/shipment-form.js +7 -4
  90. package/dist/esm/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.js +35 -11
  91. package/dist/esm/elements/purchase-label/hooks/use-insurance-provider-options.js +2 -2
  92. package/dist/esm/elements/shipments-grid/hooks/use-shipments-grid.js +2 -2
  93. package/dist/esm/elements/shipments-grid/shipments-grid.js +21 -7
  94. package/dist/esm/elements/shipments-grid/shipments-grid.styles.js +5 -0
  95. package/dist/esm/elements-provider/elements-context-provider.js +1 -1
  96. package/dist/esm/factories/shipengine/address.js +111 -0
  97. package/dist/esm/factories/shipengine/money.js +19 -0
  98. package/dist/esm/factories/shipengine/order-source.js +34 -0
  99. package/dist/esm/factories/shipengine/package.js +39 -0
  100. package/dist/esm/factories/shipengine/resource.js +21 -0
  101. package/dist/esm/factories/shipengine/shipment.js +168 -0
  102. package/dist/esm/factories/shipengine/weight.js +40 -0
  103. package/dist/esm/factories/utils.js +15 -0
  104. package/dist/esm/features/manage-carriers/hooks/use-list-funding-source-carriers.js +5 -7
  105. package/dist/esm/features/manage-carriers/manage-carriers.js +8 -6
  106. package/dist/esm/features/manage-warehouses/manage-warehouses.js +9 -5
  107. package/dist/esm/hooks/use-configure-shipment.js +55 -14
  108. package/dist/esm/hooks/use-get-funding-source-insurance-provider.js +7 -7
  109. package/dist/esm/hooks/use-get-service-data.js +58 -0
  110. package/dist/esm/hooks/use-import-sales-order.js +47 -22
  111. package/dist/esm/hooks/use-manage-funding-source-insurance.js +15 -23
  112. package/dist/esm/index.js +3 -0
  113. package/dist/esm/locales/en/common.json.js +1 -1
  114. package/dist/esm/locales/en/list-labels.json.js +2 -1
  115. package/dist/esm/locales/en/list-shipments.json.js +1 -1
  116. package/dist/esm/locales/en/manage-warehouses.json.js +2 -0
  117. package/dist/esm/locales/en/purchase-label.json.js +9 -1
  118. package/dist/esm/package.json.js +1 -1
  119. package/dist/esm/utilities/feature-flags/feature-flags.js +3 -1
  120. package/dist/esm/utilities/shipengine/carrier.js +4 -0
  121. package/dist/esm/utilities/shipengine/index.js +1 -1
  122. package/dist/esm/utilities/shipengine/insurance.js +61 -1
  123. package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.js +9 -9
  124. package/dist/esm/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.js +1 -1
  125. package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js +3 -2
  126. package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js +8 -6
  127. package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js +5 -20
  128. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts +2 -0
  129. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts.map +1 -0
  130. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts +8 -0
  131. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts.map +1 -0
  132. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts +22 -0
  133. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts.map +1 -0
  134. package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts +3 -2
  135. package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts.map +1 -1
  136. package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts +4 -0
  137. package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts.map +1 -1
  138. package/dist/types/components/field/rate-select/rate-select.d.ts.map +1 -1
  139. package/dist/types/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.d.ts.map +1 -1
  140. package/dist/types/components/forms/warehouse-form/warehouse-form.d.ts.map +1 -1
  141. package/dist/types/components/service-card/service-card.d.ts +2 -1
  142. package/dist/types/components/service-card/service-card.d.ts.map +1 -1
  143. package/dist/types/components/service-card/service-card.styles.d.ts +2 -1
  144. package/dist/types/components/service-card/service-card.styles.d.ts.map +1 -1
  145. package/dist/types/elements/customs-form/customs-form-element.d.ts +1222 -0
  146. package/dist/types/elements/customs-form/customs-form-element.d.ts.map +1 -0
  147. package/dist/types/elements/customs-form/customs-form-element.stories.d.ts +12 -0
  148. package/dist/types/elements/customs-form/customs-form-element.stories.d.ts.map +1 -0
  149. package/dist/types/elements/customs-form/customs-form-schema.d.ts +398 -0
  150. package/dist/types/elements/customs-form/customs-form-schema.d.ts.map +1 -0
  151. package/dist/types/elements/customs-form/customs-form-types.d.ts +139 -0
  152. package/dist/types/elements/customs-form/customs-form-types.d.ts.map +1 -0
  153. package/dist/types/elements/customs-form/index.d.ts +4 -0
  154. package/dist/types/elements/customs-form/index.d.ts.map +1 -0
  155. package/dist/types/elements/index.d.ts +1 -0
  156. package/dist/types/elements/index.d.ts.map +1 -1
  157. package/dist/types/elements/labels-grid/labels-grid.d.ts +14 -3
  158. package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
  159. package/dist/types/elements/labels-grid/labels-grid.styles.d.ts +5 -0
  160. package/dist/types/elements/labels-grid/labels-grid.styles.d.ts.map +1 -1
  161. package/dist/types/elements/manage-carriers/manage-carriers.d.ts +14 -3
  162. package/dist/types/elements/manage-carriers/manage-carriers.d.ts.map +1 -1
  163. package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts +14 -3
  164. package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts.map +1 -1
  165. package/dist/types/elements/manage-funding/manage-funding-element.d.ts +14 -3
  166. package/dist/types/elements/manage-funding/manage-funding-element.d.ts.map +1 -1
  167. package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts +14 -3
  168. package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts.map +1 -1
  169. package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts +14 -3
  170. package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts.map +1 -1
  171. package/dist/types/elements/purchase-label/components/index.d.ts +1 -0
  172. package/dist/types/elements/purchase-label/components/index.d.ts.map +1 -1
  173. package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts +1 -1
  174. package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts.map +1 -1
  175. package/dist/types/elements/purchase-label/components/shipment-form/shipment-form.d.ts.map +1 -1
  176. package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts +6 -1
  177. package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts.map +1 -1
  178. package/dist/types/elements/purchase-label/hooks/use-insurance-provider-options.d.ts.map +1 -1
  179. package/dist/types/elements/purchase-label/purchase-label.d.ts +14 -3
  180. package/dist/types/elements/purchase-label/purchase-label.d.ts.map +1 -1
  181. package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts +14 -3
  182. package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts.map +1 -1
  183. package/dist/types/elements/shipment-summary/shipment-summary.d.ts +14 -3
  184. package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
  185. package/dist/types/elements/shipments-grid/shipments-grid.d.ts +14 -3
  186. package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
  187. package/dist/types/elements/shipments-grid/shipments-grid.styles.d.ts +5 -0
  188. package/dist/types/elements/shipments-grid/shipments-grid.styles.d.ts.map +1 -1
  189. package/dist/types/elements/theme-creator/theme-creator.d.ts +14 -3
  190. package/dist/types/elements/theme-creator/theme-creator.d.ts.map +1 -1
  191. package/dist/types/elements/transaction-history/transaction-history-element.d.ts +14 -3
  192. package/dist/types/elements/transaction-history/transaction-history-element.d.ts.map +1 -1
  193. package/dist/types/elements/unit-settings/unit-settings-element.d.ts +14 -3
  194. package/dist/types/elements/unit-settings/unit-settings-element.d.ts.map +1 -1
  195. package/dist/types/elements/vat-settings/vat-settings-element.d.ts +14 -3
  196. package/dist/types/elements/vat-settings/vat-settings-element.d.ts.map +1 -1
  197. package/dist/types/elements/void-label/void-label.d.ts +14 -3
  198. package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
  199. package/dist/types/features/manage-carriers/hooks/use-list-funding-source-carriers.d.ts.map +1 -1
  200. package/dist/types/features/manage-carriers/manage-carriers.d.ts.map +1 -1
  201. package/dist/types/features/manage-warehouses/manage-warehouses.d.ts.map +1 -1
  202. package/dist/types/hooks/use-configure-shipment.d.ts.map +1 -1
  203. package/dist/types/hooks/use-get-funding-source-insurance-provider.d.ts.map +1 -1
  204. package/dist/types/hooks/use-get-service-data.d.ts +14 -0
  205. package/dist/types/hooks/use-get-service-data.d.ts.map +1 -0
  206. package/dist/types/hooks/use-import-sales-order.d.ts +20 -1
  207. package/dist/types/hooks/use-import-sales-order.d.ts.map +1 -1
  208. package/dist/types/hooks/use-manage-funding-source-insurance.d.ts +3 -4
  209. package/dist/types/hooks/use-manage-funding-source-insurance.d.ts.map +1 -1
  210. package/dist/types/locales/en/index.d.ts +14 -3
  211. package/dist/types/locales/en/index.d.ts.map +1 -1
  212. package/dist/types/types/insurance-metadata.d.ts +1 -1
  213. package/dist/types/types/insurance-metadata.d.ts.map +1 -1
  214. package/dist/types/types/rates.d.ts +1 -0
  215. package/dist/types/types/rates.d.ts.map +1 -1
  216. package/dist/types/utilities/feature-flags/feature-flags.d.ts.map +1 -1
  217. package/dist/types/utilities/feature-flags/types.d.ts +8 -0
  218. package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
  219. package/dist/types/utilities/shipengine/carrier.d.ts.map +1 -1
  220. package/dist/types/utilities/shipengine/insurance.d.ts +31 -0
  221. package/dist/types/utilities/shipengine/insurance.d.ts.map +1 -1
  222. package/dist/types/workflows/account-settings/account-settings.d.ts +14 -3
  223. package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
  224. package/dist/types/workflows/carrier-services/carrier-services.d.ts +14 -3
  225. package/dist/types/workflows/carrier-services/carrier-services.d.ts.map +1 -1
  226. package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts +14 -3
  227. package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts.map +1 -1
  228. package/dist/types/workflows/label-workflow/label-workflow.d.ts +14 -3
  229. package/dist/types/workflows/label-workflow/label-workflow.d.ts.map +1 -1
  230. package/dist/types/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.d.ts.map +1 -1
  231. package/dist/types/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.d.ts.map +1 -1
  232. package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts.map +1 -1
  233. package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts +1 -5
  234. package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts.map +1 -1
  235. package/dist/types/workflows/onboarding/onboarding.d.ts +14 -3
  236. package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
  237. package/package.json +3 -3
  238. package/dist/cjs/hooks/use-get-service-name.cjs +0 -22
  239. package/dist/esm/hooks/use-get-service-name.js +0 -20
  240. package/dist/types/hooks/use-get-service-name.d.ts +0 -5
  241. package/dist/types/hooks/use-get-service-name.d.ts.map +0 -1
@@ -0,0 +1,168 @@
1
+ import { __rest } from '../../_virtual/_tslib.js';
2
+ import { faker } from '@faker-js/faker';
3
+ import { SE } from '@shipengine/react-api';
4
+ import { Factory } from 'fishery';
5
+ import { randomShipengineSlug, randomShipengineId, tristateValue } from '../utils.js';
6
+ import { addressFactory, addressValidationFactory } from './address.js';
7
+ import { moneyFactory } from './money.js';
8
+ import { randomOrderSourceCode } from './order-source.js';
9
+ import { packageFactory } from './package.js';
10
+ import { downloadFactory } from './resource.js';
11
+ import { weightWithUnitFactory } from './weight.js';
12
+
13
+ const randomDeliveryConfirmation = () => faker.helpers.arrayElement(Object.values(SE.ConfirmationType));
14
+ const randomInsuranceProvider = (allowNone = true) => {
15
+ const availableProviders = Object.values(SE.InsuranceProviderType).filter(p => allowNone ? p : p !== "none");
16
+ return faker.helpers.arrayElement(availableProviders);
17
+ };
18
+ /**
19
+ * @category Factories
20
+ */
21
+ const productFactory = Factory.define(() => ({
22
+ countryOfOrigin: faker.address.countryCode(),
23
+ description: faker.commerce.productName(),
24
+ harmonizedTariffCode: faker.datatype.string(),
25
+ quantity: faker.datatype.number({
26
+ max: 10,
27
+ min: 1
28
+ }),
29
+ sku: faker.random.numeric(10),
30
+ skuDescription: faker.helpers.maybe(() => faker.lorem.sentence()),
31
+ unitOfMeasure: faker.helpers.maybe(() => faker.word.noun()),
32
+ value: moneyFactory.build()
33
+ }));
34
+ /**
35
+ * @category Factories
36
+ */
37
+ const shipmentItemFactory = Factory.define(({
38
+ params
39
+ }) => ({
40
+ asin: faker.helpers.maybe(() => faker.random.alphaNumeric(10)),
41
+ externalOrderId: faker.random.alphaNumeric(10),
42
+ externalOrderItemId: faker.random.alphaNumeric(10),
43
+ name: faker.commerce.productName(),
44
+ orderSourceCode: randomOrderSourceCode(),
45
+ quantity: faker.datatype.number({
46
+ max: 10,
47
+ min: 1
48
+ }),
49
+ salesOrderItemId: params.salesOrderId && faker.random.alphaNumeric(6),
50
+ sku: faker.random.numeric(10)
51
+ }));
52
+ /**
53
+ * @category Factories
54
+ */
55
+ const shipmentPackageFactory = Factory.define(({
56
+ associations,
57
+ params,
58
+ transientParams
59
+ }) => {
60
+ var _a, _b, _c, _d, _e;
61
+ const _f = packageFactory.build(params),
62
+ pkg = __rest(_f, ["name"]);
63
+ const isInsured = tristateValue(true, false, faker.datatype.boolean(), (_b = (_a = params.insuredValue) === null || _a === void 0 ? void 0 : _a.amount) !== null && _b !== void 0 ? _b : transientParams.isInsured);
64
+ return Object.assign(Object.assign({}, pkg), {
65
+ insuredValue: (_c = associations.insuredValue) !== null && _c !== void 0 ? _c : isInsured ? moneyFactory.build(params.insuredValue) : undefined,
66
+ labelDownload: (_d = associations.labelDownload) !== null && _d !== void 0 ? _d : transientParams.isShipped ? downloadFactory.build(params.labelDownload) : undefined,
67
+ labelMessages: associations.labelMessages,
68
+ products: transientParams.isInternational ? productFactory.buildList(1) : [],
69
+ trackingNumber: transientParams.isShipped ? faker.random.alphaNumeric(12, {
70
+ casing: "upper"
71
+ }) : undefined,
72
+ weight: (_e = associations.weight) !== null && _e !== void 0 ? _e : weightWithUnitFactory.build(params.weight)
73
+ });
74
+ });
75
+ /**
76
+ * @category Factories
77
+ */
78
+ const shipmentFactory = Factory.define(({
79
+ associations,
80
+ params,
81
+ sequence,
82
+ transientParams
83
+ }) => {
84
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
85
+ const shipTo = (_a = associations.shipTo) !== null && _a !== void 0 ? _a : addressFactory.build(params.shipTo, {
86
+ transient: {
87
+ isInternational: transientParams.isInternational
88
+ }
89
+ });
90
+ let insuranceProvider = SE.InsuranceProviderType.NONE;
91
+ if (transientParams.insuredValue || transientParams.isInsured) {
92
+ insuranceProvider = (_b = params.insuranceProvider) !== null && _b !== void 0 ? _b : randomInsuranceProvider(false);
93
+ } else if (transientParams.insuredValue === undefined && transientParams.isInsured === undefined) {
94
+ insuranceProvider = randomInsuranceProvider(true);
95
+ }
96
+ const shipDateObj = faker.date.soon(7);
97
+ shipDateObj.setHours(0, 0, 0, 0);
98
+ const totalWeight = (_c = associations.totalWeight) !== null && _c !== void 0 ? _c : weightWithUnitFactory.build(params.totalWeight);
99
+ return {
100
+ addressValidation: (_d = associations.addressValidation) !== null && _d !== void 0 ? _d : addressValidationFactory.build(params.addressValidation, {
101
+ associations: {
102
+ originalAddress: shipTo
103
+ }
104
+ }),
105
+ amountPaid: moneyFactory.build(),
106
+ carrierId: (_f = (_e = transientParams === null || transientParams === void 0 ? void 0 : transientParams.service) === null || _e === void 0 ? void 0 : _e.carrierId) !== null && _f !== void 0 ? _f : randomShipengineId(),
107
+ confirmation: randomDeliveryConfirmation(),
108
+ createdAt: faker.date.past().toISOString(),
109
+ customs: (_g = associations.customs) !== null && _g !== void 0 ? _g : transientParams.isInternational ? {
110
+ contents: faker.helpers.arrayElement(["documents", "gift", "merchandise", "returned_goods", "sample"]),
111
+ nonDelivery: faker.helpers.arrayElement(["return_to_sender", "treat_as_abandoned"])
112
+ } : undefined,
113
+ externalOrderId: faker.random.alphaNumeric(10),
114
+ externalShipmentId: faker.random.alphaNumeric(10),
115
+ insuranceProvider,
116
+ items: shipmentItemFactory.buildList(faker.datatype.number({
117
+ max: 10,
118
+ min: 1
119
+ }), transientParams.salesOrder ? {
120
+ externalOrderId: transientParams.salesOrder.externalOrderId,
121
+ orderSourceCode: transientParams.salesOrder.orderSource.orderSourceCode,
122
+ salesOrderId: (_h = transientParams.salesOrder) === null || _h === void 0 ? void 0 : _h.salesOrderId
123
+ } : {}),
124
+ modifiedAt: faker.date.recent().toISOString(),
125
+ orderSourceCode: (_k = (_j = transientParams.salesOrder) === null || _j === void 0 ? void 0 : _j.orderSource.orderSourceCode) !== null && _k !== void 0 ? _k : randomOrderSourceCode(),
126
+ packages: (_l = associations.packages) !== null && _l !== void 0 ? _l : shipmentPackageFactory.buildList(1, (_m = params.packages) === null || _m === void 0 ? void 0 : _m[0], {
127
+ associations: {
128
+ weight: totalWeight
129
+ },
130
+ transient: {
131
+ isInsured: insuranceProvider !== "none",
132
+ isInternational: transientParams.isInternational,
133
+ isShipped: transientParams.isShipped
134
+ }
135
+ }),
136
+ returnTo: (_q = (_o = associations.returnTo) !== null && _o !== void 0 ? _o : (_p = transientParams.warehouse) === null || _p === void 0 ? void 0 : _p.returnAddress) !== null && _q !== void 0 ? _q : addressFactory.build(),
137
+ serviceCode: (_s = (_r = transientParams.service) === null || _r === void 0 ? void 0 : _r.serviceCode) !== null && _s !== void 0 ? _s : randomShipengineSlug(),
138
+ shipDate: shipDateObj.toISOString(),
139
+ shipFrom: (_v = (_t = associations.shipFrom) !== null && _t !== void 0 ? _t : (_u = transientParams.warehouse) === null || _u === void 0 ? void 0 : _u.originAddress) !== null && _v !== void 0 ? _v : addressFactory.build(),
140
+ shipmentId: `se-${30000 + sequence}`,
141
+ shipmentStatus: transientParams.isShipped ? "label_purchased" : "pending",
142
+ shippingPaid: moneyFactory.build(),
143
+ shipTo,
144
+ tags: (_w = associations.tags) !== null && _w !== void 0 ? _w : [],
145
+ taxPaid: moneyFactory.build(),
146
+ totalWeight,
147
+ warehouseId: (_x = transientParams.warehouse) === null || _x === void 0 ? void 0 : _x.warehouseId
148
+ };
149
+ });
150
+ /**
151
+ * @category Factories
152
+ */
153
+ const salesOrderShipmentFactory = Factory.define(({
154
+ associations,
155
+ params,
156
+ transientParams
157
+ }) => {
158
+ var _a, _b, _c;
159
+ const shipment = shipmentFactory.build(params, {
160
+ associations,
161
+ transient: transientParams
162
+ });
163
+ return Object.assign(Object.assign({}, shipment), {
164
+ salesOrderIds: (_a = associations.salesOrderIds) !== null && _a !== void 0 ? _a : [(_c = (_b = transientParams.salesOrder) === null || _b === void 0 ? void 0 : _b.salesOrderId) !== null && _c !== void 0 ? _c : faker.datatype.uuid()]
165
+ });
166
+ });
167
+
168
+ export { productFactory, randomDeliveryConfirmation, randomInsuranceProvider, salesOrderShipmentFactory, shipmentFactory, shipmentItemFactory, shipmentPackageFactory };
@@ -0,0 +1,40 @@
1
+ import { faker } from '@faker-js/faker';
2
+ import { Factory } from 'fishery';
3
+
4
+ const randomWeightUnit = () => faker.helpers.arrayElement(["pound", "ounce", "gram", "kilogram"]);
5
+ /**
6
+ * @category Factories
7
+ */
8
+ Factory.define(() => ({
9
+ fractional: faker.datatype.number({
10
+ max: 16,
11
+ min: 0
12
+ }),
13
+ whole: faker.datatype.number({
14
+ max: 20,
15
+ min: 0
16
+ })
17
+ }));
18
+ /**
19
+ * @category Factories
20
+ */
21
+ const weightFactory = Factory.define(() => ({
22
+ value: faker.datatype.number({
23
+ max: 20,
24
+ min: 1,
25
+ precision: 0.1
26
+ })
27
+ }));
28
+ /**
29
+ * @category Factories
30
+ */
31
+ const weightWithUnitFactory = Factory.define(({
32
+ params
33
+ }) => {
34
+ const weight = weightFactory.build(params);
35
+ return Object.assign(Object.assign({}, weight), {
36
+ unit: randomWeightUnit()
37
+ });
38
+ });
39
+
40
+ export { randomWeightUnit, weightFactory, weightWithUnitFactory };
@@ -0,0 +1,15 @@
1
+ import { faker } from '@faker-js/faker';
2
+
3
+ const randomShipengineId = (length = 5) => `se-${faker.random.numeric(length)}`;
4
+ const randomShipengineSlug = wordCount => faker.lorem.slug(wordCount).replace("-", "_");
5
+ const tristateValue = (ifTrue, ifFalse, ifUndefined, value) => {
6
+ if (value === undefined) {
7
+ return ifUndefined;
8
+ }
9
+ if (value) {
10
+ return ifTrue;
11
+ }
12
+ return ifFalse;
13
+ };
14
+
15
+ export { randomShipengineId, randomShipengineSlug, tristateValue };
@@ -1,6 +1,6 @@
1
1
  import { useListCarriers, useGetFundingSourceMetadata, useGetInsuranceFundingSourceAcceptedTerms } from '@shipengine/react-api';
2
2
  import { filterFundingSourceCarriers } from '../../../utilities/shipengine/carrier.js';
3
- import { getIsInsuraceProviderAccepted, getInsuranceProviderWithFriendlyName } from '../../../utilities/shipengine/insurance.js';
3
+ import { groupTermsByProvider, getIsInsuraceProviderAccepted } from '../../../utilities/shipengine/insurance.js';
4
4
  import { useMemo } from 'react';
5
5
  import { useCarrierMetadata } from './use-carrier-metadata.js';
6
6
 
@@ -36,12 +36,10 @@ const useListFundingSourceCarriers = () => {
36
36
  //TODO: Remove hardcoded carrierMetadata and insuranceProviderMetadata when the friendlyName is available in the funding source metadata response
37
37
  const carrierMetadata = useCarrierMetadata();
38
38
  const insuranceProviderProfiles = useMemo(() => {
39
- return optionalTerms.map(t => {
40
- return Object.assign({
41
- agreedToTerms: getIsInsuraceProviderAccepted(t.termType, insuranceProviderAcceptedTerms === null || insuranceProviderAcceptedTerms === void 0 ? void 0 : insuranceProviderAcceptedTerms.acceptedTerms),
42
- terms: Object.assign({}, t)
43
- }, getInsuranceProviderWithFriendlyName(t.termType));
44
- });
39
+ const groupedProfiles = groupTermsByProvider(optionalTerms);
40
+ return groupedProfiles.map(profile => Object.assign(Object.assign({}, profile), {
41
+ agreedToTerms: profile.terms.some(term => getIsInsuraceProviderAccepted(term.termType, insuranceProviderAcceptedTerms === null || insuranceProviderAcceptedTerms === void 0 ? void 0 : insuranceProviderAcceptedTerms.acceptedTerms))
42
+ }));
45
43
  }, [optionalTerms, insuranceProviderAcceptedTerms]);
46
44
  const normalizeCarrierCode = (carrierCode, nickname) => carrierCode === "usps" || (nickname === null || nickname === void 0 ? void 0 : nickname.includes("free")) ? "stamps_com" : carrierCode;
47
45
  const normalizeConnectedCarrierCodes = new Set(connectedCarriers === null || connectedCarriers === void 0 ? void 0 : connectedCarriers.map(c => normalizeCarrierCode(c.carrierCode, c.nickname)));
@@ -8,6 +8,7 @@ import { useState, useMemo, useCallback } from 'react';
8
8
  import { useTranslation } from 'react-i18next';
9
9
  import { styles } from './manage-carriers.styles.js';
10
10
  import { useListFundingSourceCarriers } from './hooks/use-list-funding-source-carriers.js';
11
+ import { getIsFundingSourceInsuranceProviderEnabledAndSupported } from '../../utilities/shipengine/insurance.js';
11
12
  import { SkeletonCarrierRow } from '../../components/skeleton/skeleton-carrier-row.js';
12
13
  import { ManageFunding } from '../manage-funding/manage-funding.js';
13
14
  import { ManageCarriersRow } from './manage-carriers-row/manage-carriers-row.js';
@@ -41,6 +42,7 @@ const ShipEngineCarriers = ({
41
42
  refetch: refetchCarriers,
42
43
  refetchInsuranceProviderAcceptedTerms
43
44
  } = useListFundingSourceCarriers();
45
+ const isInsuranceEnabled = getIsFundingSourceInsuranceProviderEnabledAndSupported(insuranceProviderProfiles, globalFeatures.enableXCover, globalFeatures.enableParcelGuard);
44
46
  const hasConnectedCarriers = useMemo(() => fundingSourceCarriers === null || fundingSourceCarriers === void 0 ? void 0 : fundingSourceCarriers.some(c => c.isConnected), [fundingSourceCarriers]);
45
47
  const {
46
48
  data: warehouses
@@ -101,10 +103,10 @@ const ShipEngineCarriers = ({
101
103
  const handleRegisterProvider = useCallback(p => __awaiter(void 0, void 0, void 0, function* () {
102
104
  return yield handleRegistration({
103
105
  insuranceProviders: [{
104
- acceptedTerms: [{
105
- termType: p.terms.termType,
106
- version: p.terms.version
107
- }],
106
+ acceptedTerms: [...p.terms.map(term => ({
107
+ termType: term.termType,
108
+ version: term.version
109
+ }))],
108
110
  agreeToTerms: true,
109
111
  fundingSourceId: fundingSourceId !== null && fundingSourceId !== void 0 ? fundingSourceId : "",
110
112
  provider: p.provider
@@ -176,12 +178,12 @@ const ShipEngineCarriers = ({
176
178
  }),
177
179
  setCarrierToConnect: setCarrierToConnect
178
180
  })
179
- }, carrier.carrier.carrierProfile.carrierCode)), globalFeatures.enableParcelGuard && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.map(p => jsx("li", {
181
+ }, carrier.carrier.carrierProfile.carrierCode)), isInsuranceEnabled && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.map(p => jsx("li", {
180
182
  children: jsx(ManageInsuranceProviderRow, {
181
183
  insuranceProviderProfile: p,
182
184
  registerProvider: handleRegisterProvider
183
185
  })
184
- }, p.terms.termType)))]
186
+ }, p.terms[0].termType)))]
185
187
  })
186
188
  })]
187
189
  });
@@ -105,6 +105,7 @@ const ManageWarehouses = ({
105
105
  yield handleSubmitAddNewWarehouse(payload);
106
106
  toggleShowAddNewWarehouseForm(false);
107
107
  }),
108
+ shouldForceDefault: !(warehouses === null || warehouses === void 0 ? void 0 : warehouses.length),
108
109
  submitButtonTitle: t("actions.save")
109
110
  })
110
111
  }) : jsx(ButtonGroup, {
@@ -139,17 +140,20 @@ const ManageWarehouses = ({
139
140
  yield handleSubmitEditWarehouse(Object.assign(Object.assign({}, rest), warehouseData), warehouse.warehouseId);
140
141
  setEditWarehouseId(undefined);
141
142
  }),
142
- children: jsx(WarehouseForm, {
143
- onCancel: () => setEditWarehouseId(undefined),
144
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
145
- onDelete: warehouse.isDefault ? undefined : () => handleDeleteWarehouse(warehouse.warehouseId),
143
+ children: jsx(WarehouseForm
144
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
145
+ , {
146
146
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
147
147
  onSubmit: payload => __awaiter(void 0, void 0, void 0, function* () {
148
148
  yield handleSubmitEditWarehouse(payload, warehouse.warehouseId);
149
149
  setEditWarehouseId(undefined);
150
150
  }),
151
+ shouldForceDefault: warehouse.isDefault,
151
152
  submitButtonTitle: t("actions.save"),
152
- warehouse: warehouse
153
+ warehouse: warehouse,
154
+ onCancel: () => setEditWarehouseId(undefined),
155
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
156
+ onDelete: warehouse.isDefault ? undefined : () => handleDeleteWarehouse(warehouse.warehouseId)
153
157
  })
154
158
  }, warehouse.warehouseId);
155
159
  } else {
@@ -20,8 +20,8 @@ const useConfigureShipment = ({
20
20
  warehouseId,
21
21
  useWarehouses = true
22
22
  }) => {
23
- // Track when we've created a replacement shipment for a "not found" case
24
- const [replacementShipmentId, setReplacementShipmentId] = useState();
23
+ // Track when user manually created a shipment for a "not found" case
24
+ const [manuallyCreatedShipmentId, setManuallyCreatedShipmentId] = useState();
25
25
  // Queue of incomplete requirement keys (i.e., Ship From addresses, Warehouses, Carriers)
26
26
  const incompleteRequirementsKeys = useMemo(() => [], []);
27
27
  const {
@@ -45,6 +45,7 @@ const useConfigureShipment = ({
45
45
  // Dont run Sales Order Import unless the Sales order info is present
46
46
  enabled: !!externalOrderNumber || !!orderSourceCode || !!salesOrderId || !!externalOrderId,
47
47
  externalOrderId,
48
+ externalOrderNumber,
48
49
  orderSourceCode,
49
50
  salesOrderId
50
51
  });
@@ -61,24 +62,49 @@ const useConfigureShipment = ({
61
62
  isInitialLoading: isExternalShipmentInitialLoading,
62
63
  isFetching: isExternalShipmentFetching
63
64
  } = useGetShipmentByExternalId({
64
- enabled: !!externalShipmentId && !shipmentId,
65
+ enabled: !!externalShipmentId && !shipmentId && !manuallyCreatedShipmentId,
65
66
  queryFnParams: {
66
67
  externalId: externalShipmentId !== null && externalShipmentId !== void 0 ? externalShipmentId : ""
67
68
  }
69
+ // TODO: weird refetch on focus behavior
68
70
  });
71
+ // #region List Sales Order Shipments
72
+ const externalOrderIds = useMemo(() => {
73
+ return externalOrderId ? [externalOrderId] : undefined;
74
+ }, [externalOrderId]);
75
+ const salesOrderIds = useMemo(() => {
76
+ return salesOrderId ? [salesOrderId] : salesOrder ? [salesOrder.salesOrderId] :
77
+ // TODO: current workaround - revert to being undefined rather than empty list
78
+ [];
79
+ }, [salesOrderId, salesOrder]);
80
+ const shipmentIds = useMemo(() => {
81
+ return manuallyCreatedShipmentId ? [manuallyCreatedShipmentId] : shipmentId ? [shipmentId] : externalShipment ? [externalShipment.shipmentId] : newV1Shipment ? [newV1Shipment.shipments[0].shipmentId] : undefined;
82
+ }, [manuallyCreatedShipmentId, shipmentId, externalShipment, newV1Shipment]);
83
+ const listSalesOrderShipmentsParams = useMemo(() => {
84
+ // TODO: useListSalesOrderShipments needs to be able to use the enabled prop, this is a workaround
85
+ // Prevent query with stale params during shipment creation or when V1 shipment exists but manuallyCreatedShipmentId not set
86
+ if (creatingV1Shipment && !manuallyCreatedShipmentId || newV1Shipment && !manuallyCreatedShipmentId) {
87
+ return {};
88
+ }
89
+ if (manuallyCreatedShipmentId) {
90
+ return {
91
+ shipmentIds
92
+ };
93
+ }
94
+ return {
95
+ externalOrderIds,
96
+ salesOrderIds,
97
+ shipmentIds
98
+ };
99
+ }, [manuallyCreatedShipmentId, externalOrderIds, salesOrderIds, shipmentIds, creatingV1Shipment, newV1Shipment]);
69
100
  const {
70
101
  data: salesOrderShipments,
71
102
  error: listSalesOrderShipmentsErrors,
72
103
  refetch: refetchSalesOrderShipments,
73
104
  isInitialLoading: listSalesOrderShipmentsInitiallyLoading,
74
105
  isFetching: listSalesOrderShipmentsIsFetching
75
- } = useListSalesOrderShipments({
76
- externalOrderIds: externalOrderId ? [externalOrderId] : undefined,
77
- salesOrderIds: salesOrderId ? [salesOrderId] : salesOrder ? [salesOrder.salesOrderId] :
78
- // TODO: current workaround - revert to being undefined rather than empty list
79
- [],
80
- shipmentIds: replacementShipmentId ? [replacementShipmentId] : shipmentId ? [shipmentId] : externalShipment ? [externalShipment.shipmentId] : newV1Shipment ? [newV1Shipment.shipments[0].shipmentId] : undefined
81
- });
106
+ } = useListSalesOrderShipments(listSalesOrderShipmentsParams);
107
+ // #endregion
82
108
  const {
83
109
  error: createSalesOrderShipmentErrors,
84
110
  mutateAsync: createSalesOrderShipment,
@@ -86,6 +112,14 @@ const useConfigureShipment = ({
86
112
  isSuccess: salesOrderShipmentCreated
87
113
  } = useCreateSalesOrderShipment();
88
114
  const pendingSalesOrderShipment = getShipmentByStatus("pending", salesOrderShipments);
115
+ if (pendingSalesOrderShipment) {
116
+ // ensure state code is uppercase for form hydration. SE API may return mixed case state codes.
117
+ pendingSalesOrderShipment.shipFrom.stateProvince = pendingSalesOrderShipment.shipFrom.stateProvince.toUpperCase();
118
+ pendingSalesOrderShipment.shipTo.stateProvince = pendingSalesOrderShipment.shipTo.stateProvince.toUpperCase();
119
+ if (pendingSalesOrderShipment.returnTo) {
120
+ pendingSalesOrderShipment.returnTo.stateProvince = pendingSalesOrderShipment.returnTo.stateProvince.toUpperCase();
121
+ }
122
+ }
89
123
  const labelPurchasedSalesOrderShipment = getShipmentByStatus("label_purchased", salesOrderShipments);
90
124
  const cancelledShipment = getShipmentByStatus("cancelled", salesOrderShipments);
91
125
  const defaultWarehouse = getDefaultWarehouse(warehouses);
@@ -103,6 +137,7 @@ const useConfigureShipment = ({
103
137
  }
104
138
  return null;
105
139
  }), [createV1Shipment, defaultShipFromAddress, defaultWarehouse, warehouseId, refetchSalesOrderShipments]);
140
+ // #region Create Sales Order Shipment
106
141
  // Handles the creation of new shipments for the sales order flow and one-off flow
107
142
  const handleShipmentCreation = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
108
143
  var _a, _b, _c;
@@ -152,17 +187,23 @@ const useConfigureShipment = ({
152
187
  }
153
188
  // Create a Shipment for one-off flow
154
189
  if (!salesOrderId && !externalOrderId && !externalOrderNumber && !orderSourceCode && !shipmentId && !externalShipmentId) {
155
- yield createV1ShipmentWithDefaults();
190
+ const v1Shipment = yield createV1ShipmentWithDefaults();
191
+ // Set manuallyCreatedShipmentId to ensure proper query parameter handling
192
+ if (v1Shipment) {
193
+ setManuallyCreatedShipmentId(v1Shipment.shipments[0].shipmentId);
194
+ }
156
195
  }
157
196
  }), [createSalesOrderShipment, createV1ShipmentWithDefaults, creatingSalesOrderShipment, creatingV1Shipment, defaultShipFromAddress, defaultWarehouse, externalOrderId, externalOrderNumber, externalShipmentId, incompleteRequirementsKeys, isExternalShipmentFetching, isExternalShipmentInitialLoading, isFetchingWarehouses, isInitialLoadingWarehouses, labelPurchasedSalesOrderShipment, listSalesOrderShipmentsInitiallyLoading, listSalesOrderShipmentsIsFetching, orderSourceCode, pendingSalesOrderShipment, salesOrder, salesOrderId, salesOrderShipmentCreated, shipFromAddresses === null || shipFromAddresses === void 0 ? void 0 : shipFromAddresses.length, shipmentId, useWarehouses, v1shipmentCreated, warehouseId, warehouses]);
197
+ // #endregion
158
198
  const createNewShipmentForNotFound = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
159
199
  // Force create a new shipment even if shipmentId exists (for shipment_not_found case)
160
200
  const v1Shipment = yield createV1ShipmentWithDefaults();
161
201
  if (v1Shipment) {
162
- // Store the new shipment ID to override the stale one
163
- setReplacementShipmentId(v1Shipment.shipments[0].shipmentId);
202
+ setManuallyCreatedShipmentId(v1Shipment.shipments[0].shipmentId);
203
+ // Refetch to ensure we have the latest shipment data
204
+ yield refetchSalesOrderShipments();
164
205
  }
165
- }), [createV1ShipmentWithDefaults]);
206
+ }), [createV1ShipmentWithDefaults, refetchSalesOrderShipments]);
166
207
  const refetchPendingSalesOrderShipments = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
167
208
  const {
168
209
  data: shipments
@@ -14,14 +14,15 @@ import { useElements } from '../elements-provider/elements-context-provider.js';
14
14
  const useGetFundingSourceInsuranceProvider = () => {
15
15
  const {
16
16
  globalFeatures: {
17
- enableParcelGuard
17
+ enableParcelGuard,
18
+ enableXCover
18
19
  }
19
20
  } = useElements();
20
21
  const {
21
22
  data,
22
23
  refetch: refetchInsuranceAcceptedTerms
23
24
  } = useGetInsuranceFundingSourceAcceptedTerms({
24
- enabled: enableParcelGuard
25
+ enabled: enableParcelGuard || enableXCover
25
26
  });
26
27
  const fundingSourceInsuranceProvider = useMemo(() => {
27
28
  var _a;
@@ -30,13 +31,12 @@ const useGetFundingSourceInsuranceProvider = () => {
30
31
  if (enableParcelGuard && term.termType === "parcelguard_terms") {
31
32
  provider = "parcelguard";
32
33
  }
33
- // TODO: once x_cover is enabled, confirm the term type and uncomment
34
- // if (term.termType === "x_cover_terms") {
35
- // provider = "x_cover";
36
- // }
34
+ if (enableXCover && term.termType === "xcover_terms") {
35
+ provider = "x_cover";
36
+ }
37
37
  });
38
38
  return provider;
39
- }, [data, enableParcelGuard]);
39
+ }, [data === null || data === void 0 ? void 0 : data.acceptedTerms, enableParcelGuard, enableXCover]);
40
40
  return {
41
41
  fundingSourceInsuranceProvider,
42
42
  refetchInsuranceAcceptedTerms
@@ -0,0 +1,58 @@
1
+ import { useListCarriers } from '@shipengine/react-api';
2
+ import { useCallback } from 'react';
3
+
4
+ const formatServiceCode = serviceCode => {
5
+ return serviceCode.split("_").map((word, index) => {
6
+ if (index === 0) return word.toUpperCase();
7
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
8
+ }).join(" ");
9
+ };
10
+ const useGetServiceData = () => {
11
+ const {
12
+ data: carrierList,
13
+ isLoading,
14
+ isError
15
+ } = useListCarriers();
16
+ const getServiceInfo = useCallback(item => {
17
+ const {
18
+ serviceCode,
19
+ carrierId
20
+ } = item;
21
+ const labelCarrierCode = item.carrierCode;
22
+ // Error fetching carriers
23
+ if (isError) {
24
+ return {
25
+ serviceName: serviceCode !== null && serviceCode !== void 0 ? serviceCode : undefined,
26
+ carrierCode: undefined,
27
+ hasCarrierIcon: false
28
+ };
29
+ }
30
+ const carrier = carrierList === null || carrierList === void 0 ? void 0 : carrierList.find(c => c.carrierId === carrierId || c.carrierCode === labelCarrierCode);
31
+ // No carrier found for the given carrierId or carrierCode
32
+ if (!carrier) {
33
+ const serviceName = serviceCode ? formatServiceCode(serviceCode) : undefined;
34
+ const carrierCode = labelCarrierCode || undefined;
35
+ return {
36
+ serviceName,
37
+ carrierCode,
38
+ hasCarrierIcon: !!carrierCode
39
+ };
40
+ }
41
+ const service = carrier.services.find(s => s.serviceCode === serviceCode);
42
+ const carrierCode = labelCarrierCode || carrier.carrierCode;
43
+ const serviceName = (service === null || service === void 0 ? void 0 : service.name) || serviceCode || undefined;
44
+ return {
45
+ serviceName,
46
+ carrierCode,
47
+ hasCarrierIcon: !!service && !!carrierCode
48
+ };
49
+ }, [carrierList, isError]);
50
+ const getServiceName = useCallback(item => getServiceInfo(item).serviceName, [getServiceInfo]);
51
+ return {
52
+ getServiceInfo,
53
+ getServiceName,
54
+ isLoadingCarriers: isLoading
55
+ };
56
+ };
57
+
58
+ export { useGetServiceData };