@shipengine/elements 2.26.5 → 2.27.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 (192) 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 +52 -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/data/insurance-provider-metadatas.json.cjs +10 -4
  10. package/dist/cjs/elements/customs-form/customs-form-element.cjs +294 -0
  11. package/dist/cjs/elements/customs-form/customs-form-element.stories.cjs +243 -0
  12. package/dist/cjs/elements/customs-form/customs-form-schema.cjs +59 -0
  13. package/dist/cjs/elements/customs-form/customs-form-types.cjs +63 -0
  14. package/dist/cjs/elements/customs-form/index.cjs +10 -0
  15. package/dist/cjs/elements/index.cjs +5 -0
  16. package/dist/cjs/elements/manage-carriers/manage-carriers.cjs +1 -1
  17. package/dist/cjs/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.cjs +1 -1
  18. package/dist/cjs/elements/purchase-label/components/index.cjs +2 -0
  19. package/dist/cjs/elements/purchase-label/components/rate-form/rate-view.cjs +1 -1
  20. package/dist/cjs/elements/purchase-label/components/shipment-form/shipment-form.cjs +4 -3
  21. package/dist/cjs/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.cjs +35 -11
  22. package/dist/cjs/elements/purchase-label/hooks/use-insurance-provider-options.cjs +2 -2
  23. package/dist/cjs/factories/shipengine/address.cjs +114 -0
  24. package/dist/cjs/factories/shipengine/money.cjs +21 -0
  25. package/dist/cjs/factories/shipengine/order-source.cjs +37 -0
  26. package/dist/cjs/factories/shipengine/package.cjs +41 -0
  27. package/dist/cjs/factories/shipengine/resource.cjs +23 -0
  28. package/dist/cjs/factories/shipengine/shipment.cjs +176 -0
  29. package/dist/cjs/factories/shipengine/weight.cjs +44 -0
  30. package/dist/cjs/factories/utils.cjs +19 -0
  31. package/dist/cjs/features/manage-carriers/hooks/use-list-funding-source-carriers.cjs +4 -6
  32. package/dist/cjs/features/manage-carriers/manage-carriers.cjs +8 -6
  33. package/dist/cjs/hooks/use-configure-shipment.cjs +47 -14
  34. package/dist/cjs/hooks/use-get-funding-source-insurance-provider.cjs +7 -7
  35. package/dist/cjs/hooks/use-import-sales-order.cjs +45 -20
  36. package/dist/cjs/hooks/use-manage-funding-source-insurance.cjs +15 -23
  37. package/dist/cjs/index.cjs +5 -0
  38. package/dist/cjs/locales/en/common.json.cjs +1 -1
  39. package/dist/cjs/locales/en/purchase-label.json.cjs +9 -1
  40. package/dist/cjs/package.json.cjs +1 -1
  41. package/dist/cjs/utilities/feature-flags/feature-flags.cjs +1 -0
  42. package/dist/cjs/utilities/shipengine/carrier.cjs +4 -0
  43. package/dist/cjs/utilities/shipengine/index.cjs +3 -0
  44. package/dist/cjs/utilities/shipengine/insurance.cjs +63 -0
  45. package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.cjs +9 -9
  46. package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs +3 -2
  47. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs +8 -6
  48. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.cjs +4 -19
  49. package/dist/esm/assets/xcover/logo.svg.js +23 -0
  50. package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/index.js +1 -0
  51. package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.js +54 -0
  52. package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.js +25 -0
  53. package/dist/esm/components/field/rate-select/rate-card/rate-card.js +52 -42
  54. package/dist/esm/components/field/rate-select/rate-card/rate-card.styles.js +4 -0
  55. package/dist/esm/components/field/rate-select/rate-select.js +80 -49
  56. package/dist/esm/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.js +1 -1
  57. package/dist/esm/data/insurance-provider-metadatas.json.js +9 -4
  58. package/dist/esm/elements/customs-form/customs-form-element.js +291 -0
  59. package/dist/esm/elements/customs-form/customs-form-element.stories.js +232 -0
  60. package/dist/esm/elements/customs-form/customs-form-schema.js +56 -0
  61. package/dist/esm/elements/customs-form/customs-form-types.js +60 -0
  62. package/dist/esm/elements/customs-form/index.js +3 -0
  63. package/dist/esm/elements/index.js +3 -0
  64. package/dist/esm/elements/manage-carriers/manage-carriers.js +1 -1
  65. package/dist/esm/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.js +1 -1
  66. package/dist/esm/elements/purchase-label/components/index.js +1 -0
  67. package/dist/esm/elements/purchase-label/components/rate-form/rate-view.js +1 -1
  68. package/dist/esm/elements/purchase-label/components/shipment-form/shipment-form.js +4 -3
  69. package/dist/esm/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.js +35 -11
  70. package/dist/esm/elements/purchase-label/hooks/use-insurance-provider-options.js +2 -2
  71. package/dist/esm/elements-provider/elements-context-provider.js +1 -1
  72. package/dist/esm/factories/shipengine/address.js +111 -0
  73. package/dist/esm/factories/shipengine/money.js +19 -0
  74. package/dist/esm/factories/shipengine/order-source.js +34 -0
  75. package/dist/esm/factories/shipengine/package.js +39 -0
  76. package/dist/esm/factories/shipengine/resource.js +21 -0
  77. package/dist/esm/factories/shipengine/shipment.js +168 -0
  78. package/dist/esm/factories/shipengine/weight.js +40 -0
  79. package/dist/esm/factories/utils.js +15 -0
  80. package/dist/esm/features/manage-carriers/hooks/use-list-funding-source-carriers.js +5 -7
  81. package/dist/esm/features/manage-carriers/manage-carriers.js +8 -6
  82. package/dist/esm/hooks/use-configure-shipment.js +47 -14
  83. package/dist/esm/hooks/use-get-funding-source-insurance-provider.js +7 -7
  84. package/dist/esm/hooks/use-import-sales-order.js +47 -22
  85. package/dist/esm/hooks/use-manage-funding-source-insurance.js +15 -23
  86. package/dist/esm/index.js +3 -0
  87. package/dist/esm/locales/en/common.json.js +1 -1
  88. package/dist/esm/locales/en/purchase-label.json.js +9 -1
  89. package/dist/esm/package.json.js +1 -1
  90. package/dist/esm/utilities/feature-flags/feature-flags.js +1 -0
  91. package/dist/esm/utilities/shipengine/carrier.js +4 -0
  92. package/dist/esm/utilities/shipengine/index.js +1 -1
  93. package/dist/esm/utilities/shipengine/insurance.js +61 -1
  94. package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.js +9 -9
  95. package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js +3 -2
  96. package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js +8 -6
  97. package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js +5 -20
  98. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts +2 -0
  99. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts.map +1 -0
  100. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts +8 -0
  101. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts.map +1 -0
  102. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts +22 -0
  103. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts.map +1 -0
  104. package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts +3 -2
  105. package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts.map +1 -1
  106. package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts +4 -0
  107. package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts.map +1 -1
  108. package/dist/types/components/field/rate-select/rate-select.d.ts.map +1 -1
  109. package/dist/types/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.d.ts.map +1 -1
  110. package/dist/types/elements/customs-form/customs-form-element.d.ts +1219 -0
  111. package/dist/types/elements/customs-form/customs-form-element.d.ts.map +1 -0
  112. package/dist/types/elements/customs-form/customs-form-element.stories.d.ts +12 -0
  113. package/dist/types/elements/customs-form/customs-form-element.stories.d.ts.map +1 -0
  114. package/dist/types/elements/customs-form/customs-form-schema.d.ts +398 -0
  115. package/dist/types/elements/customs-form/customs-form-schema.d.ts.map +1 -0
  116. package/dist/types/elements/customs-form/customs-form-types.d.ts +139 -0
  117. package/dist/types/elements/customs-form/customs-form-types.d.ts.map +1 -0
  118. package/dist/types/elements/customs-form/index.d.ts +4 -0
  119. package/dist/types/elements/customs-form/index.d.ts.map +1 -0
  120. package/dist/types/elements/index.d.ts +1 -0
  121. package/dist/types/elements/index.d.ts.map +1 -1
  122. package/dist/types/elements/labels-grid/labels-grid.d.ts +9 -1
  123. package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
  124. package/dist/types/elements/manage-carriers/manage-carriers.d.ts +9 -1
  125. package/dist/types/elements/manage-carriers/manage-carriers.d.ts.map +1 -1
  126. package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts +9 -1
  127. package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts.map +1 -1
  128. package/dist/types/elements/manage-funding/manage-funding-element.d.ts +9 -1
  129. package/dist/types/elements/manage-funding/manage-funding-element.d.ts.map +1 -1
  130. package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts +9 -1
  131. package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts.map +1 -1
  132. package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts +9 -1
  133. package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts.map +1 -1
  134. package/dist/types/elements/purchase-label/components/index.d.ts +1 -0
  135. package/dist/types/elements/purchase-label/components/index.d.ts.map +1 -1
  136. package/dist/types/elements/purchase-label/components/shipment-form/shipment-form.d.ts.map +1 -1
  137. package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts +5 -1
  138. package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts.map +1 -1
  139. package/dist/types/elements/purchase-label/hooks/use-insurance-provider-options.d.ts.map +1 -1
  140. package/dist/types/elements/purchase-label/purchase-label.d.ts +9 -1
  141. package/dist/types/elements/purchase-label/purchase-label.d.ts.map +1 -1
  142. package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts +9 -1
  143. package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts.map +1 -1
  144. package/dist/types/elements/shipment-summary/shipment-summary.d.ts +9 -1
  145. package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
  146. package/dist/types/elements/shipments-grid/shipments-grid.d.ts +9 -1
  147. package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
  148. package/dist/types/elements/theme-creator/theme-creator.d.ts +9 -1
  149. package/dist/types/elements/theme-creator/theme-creator.d.ts.map +1 -1
  150. package/dist/types/elements/transaction-history/transaction-history-element.d.ts +9 -1
  151. package/dist/types/elements/transaction-history/transaction-history-element.d.ts.map +1 -1
  152. package/dist/types/elements/unit-settings/unit-settings-element.d.ts +9 -1
  153. package/dist/types/elements/unit-settings/unit-settings-element.d.ts.map +1 -1
  154. package/dist/types/elements/vat-settings/vat-settings-element.d.ts +9 -1
  155. package/dist/types/elements/vat-settings/vat-settings-element.d.ts.map +1 -1
  156. package/dist/types/elements/void-label/void-label.d.ts +9 -1
  157. package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
  158. package/dist/types/features/manage-carriers/hooks/use-list-funding-source-carriers.d.ts.map +1 -1
  159. package/dist/types/features/manage-carriers/manage-carriers.d.ts.map +1 -1
  160. package/dist/types/hooks/use-configure-shipment.d.ts.map +1 -1
  161. package/dist/types/hooks/use-get-funding-source-insurance-provider.d.ts.map +1 -1
  162. package/dist/types/hooks/use-import-sales-order.d.ts +20 -1
  163. package/dist/types/hooks/use-import-sales-order.d.ts.map +1 -1
  164. package/dist/types/hooks/use-manage-funding-source-insurance.d.ts +3 -4
  165. package/dist/types/hooks/use-manage-funding-source-insurance.d.ts.map +1 -1
  166. package/dist/types/locales/en/index.d.ts +9 -1
  167. package/dist/types/locales/en/index.d.ts.map +1 -1
  168. package/dist/types/types/insurance-metadata.d.ts +1 -1
  169. package/dist/types/types/insurance-metadata.d.ts.map +1 -1
  170. package/dist/types/types/rates.d.ts +1 -0
  171. package/dist/types/types/rates.d.ts.map +1 -1
  172. package/dist/types/utilities/feature-flags/feature-flags.d.ts.map +1 -1
  173. package/dist/types/utilities/feature-flags/types.d.ts +4 -0
  174. package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
  175. package/dist/types/utilities/shipengine/carrier.d.ts.map +1 -1
  176. package/dist/types/utilities/shipengine/insurance.d.ts +31 -0
  177. package/dist/types/utilities/shipengine/insurance.d.ts.map +1 -1
  178. package/dist/types/workflows/account-settings/account-settings.d.ts +9 -1
  179. package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
  180. package/dist/types/workflows/carrier-services/carrier-services.d.ts +9 -1
  181. package/dist/types/workflows/carrier-services/carrier-services.d.ts.map +1 -1
  182. package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts +9 -1
  183. package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts.map +1 -1
  184. package/dist/types/workflows/label-workflow/label-workflow.d.ts +9 -1
  185. package/dist/types/workflows/label-workflow/label-workflow.d.ts.map +1 -1
  186. package/dist/types/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.d.ts.map +1 -1
  187. package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts.map +1 -1
  188. package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts +1 -5
  189. package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts.map +1 -1
  190. package/dist/types/workflows/onboarding/onboarding.d.ts +9 -1
  191. package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
  192. package/package.json +3 -3
@@ -6,8 +6,8 @@ var reactApi = require('@shipengine/react-api');
6
6
  var React = require('react');
7
7
  var createElement = require('../../create-element/create-element.cjs');
8
8
  var manageCarriers = require('../../features/manage-carriers/manage-carriers.cjs');
9
- var index = require('../../locales/en/index.cjs');
10
9
  var errorFallback = require('../../components/error-fallback/error-fallback.cjs');
10
+ var index = require('../../locales/en/index.cjs');
11
11
 
12
12
  /**
13
13
  * # Manage-Carriers Element
@@ -129,7 +129,7 @@ const TaxIds = ({
129
129
  })]
130
130
  }), jsxRuntime.jsxs(giger.Grid, {
131
131
  noPadding: true,
132
- children: [((_a = shipment.taxIdentifiers) === null || _a === void 0 ? void 0 : _a.length) && jsxRuntime.jsx(giger.GridChild, {
132
+ children: [!!((_a = shipment.taxIdentifiers) === null || _a === void 0 ? void 0 : _a.length) && jsxRuntime.jsx(giger.GridChild, {
133
133
  colSpan: 12,
134
134
  children: jsxRuntime.jsx(taxIdList.TaxIdList, {
135
135
  handleActionsClick: handleActionsClick,
@@ -2,8 +2,10 @@
2
2
 
3
3
  var rateForm = require('./rate-form/rate-form.cjs');
4
4
  var shipmentForm = require('./shipment-form/shipment-form.cjs');
5
+ var customsForms = require('./customs-forms/customs-forms.cjs');
5
6
 
6
7
 
7
8
 
8
9
  exports.RateForm = rateForm.RateForm;
9
10
  exports.ShipmentForm = shipmentForm.ShipmentForm;
11
+ exports.CustomsForms = customsForms.CustomsForms;
@@ -80,7 +80,7 @@ const RateView = ({
80
80
  collapsedRateOptionList,
81
81
  COLLAPSED_RATE_VIEW_LIMIT,
82
82
  filterVisibleRateOptions
83
- } = useFilterVisibleRateOptions.useFilterVisibleRateOptions(expandedRateOptionList, selectedRate, preferredServiceCodes);
83
+ } = useFilterVisibleRateOptions.useFilterVisibleRateOptions(expandedRateOptionList);
84
84
  const handleShowMoreRates = React.useCallback(() => {
85
85
  var _a;
86
86
  setShowHiddenRates === null || setShowHiddenRates === void 0 ? void 0 : setShowHiddenRates(!showHiddenRates);
@@ -106,7 +106,8 @@ const ShipmentForm = ({
106
106
  const {
107
107
  locale: defaultLocale,
108
108
  globalFeatures: {
109
- enableParcelGuard
109
+ enableParcelGuard,
110
+ enableXCover
110
111
  }
111
112
  } = elementsContextProvider.useElements();
112
113
  const {
@@ -534,7 +535,7 @@ const ShipmentForm = ({
534
535
  }, []);
535
536
  const insuranceProviderKey = React.useMemo(() => {
536
537
  var _a, _b, _c;
537
- if (enableParcelGuard && !hasInsuranceToRegister) {
538
+ if ((enableParcelGuard || enableXCover) && !hasInsuranceToRegister) {
538
539
  const provider = (_a = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles[0]) === null || _a === void 0 ? void 0 : _a.provider;
539
540
  const fundingSourceProviderKey = getFundingSourceInsuranceProviderKey(provider);
540
541
  if (fundingSourceProviderKey) {
@@ -542,7 +543,7 @@ const ShipmentForm = ({
542
543
  }
543
544
  }
544
545
  return (_c = (_b = insuranceProviderOptions[0]) === null || _b === void 0 ? void 0 : _b.value.toUpperCase()) !== null && _c !== void 0 ? _c : "NONE";
545
- }, [enableParcelGuard, hasInsuranceToRegister, insuranceProviderOptions, insuranceProviderProfiles, getFundingSourceInsuranceProviderKey]);
546
+ }, [enableParcelGuard, enableXCover, hasInsuranceToRegister, insuranceProviderOptions, insuranceProviderProfiles, getFundingSourceInsuranceProviderKey]);
546
547
  const [registerInsuranceForm, isRegisterInsuranceFormOpen, toggleisRegisterInsuranceFormOpen] = useNestedForm.useNestedForm(registerFundingSourceInsuranceForm.RegisterFundingSourceInsuranceForm, {
547
548
  formId: "register-funding-source-insurance-form",
548
549
  insuranceProviderProfile: insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles[0],
@@ -3,24 +3,48 @@
3
3
  var React = require('react');
4
4
 
5
5
  const COLLAPSED_RATE_VIEW_LIMIT = 4;
6
- const filterRateOptions = (rateOptions, selectedRate, preferredServiceCodes) => {
7
- // Show the selected rate
8
- const isSelectedRate = option => !!(selectedRate === null || selectedRate === void 0 ? void 0 : selectedRate.rateId) && option.rateId === selectedRate.rateId;
9
- // Show the rate if it is a preferred service
10
- const isPreferredService = option => !!option.serviceCode && !!(preferredServiceCodes === null || preferredServiceCodes === void 0 ? void 0 : preferredServiceCodes.includes(option.serviceCode));
11
- // Show the first 5 rates in the list
12
- const isWithinRateViewLimit = index => index < COLLAPSED_RATE_VIEW_LIMIT;
13
- return rateOptions.filter((option, index) => isSelectedRate(option) || isPreferredService(option) || isWithinRateViewLimit(index));
6
+ const filterRateOptions = rateOptions => {
7
+ const hasRateAttributes = option => {
8
+ var _a;
9
+ return !!((_a = option.rateAttributes) === null || _a === void 0 ? void 0 : _a.length);
10
+ };
11
+ const isMediaMail = option => option.serviceCode === "usps_media_mail";
12
+ const result = [];
13
+ const ratesWithAttributes = [];
14
+ const ratesWithoutAttributes = [];
15
+ // Classify rates (excluding Media Mail from both categories)
16
+ for (const option of rateOptions) {
17
+ if (isMediaMail(option)) {
18
+ continue; // Skip Media Mail entirely - it will only show in "Show more"
19
+ }
20
+ if (hasRateAttributes(option)) {
21
+ ratesWithAttributes.push(option);
22
+ } else {
23
+ ratesWithoutAttributes.push(option);
24
+ }
25
+ }
26
+ // Add up to 3 rates with attributes
27
+ const attributedRatesToShow = ratesWithAttributes.slice(0, 3);
28
+ result.push(...attributedRatesToShow);
29
+ // Fill remaining slots up to COLLAPSED_RATE_VIEW_LIMIT (4) with regular rates
30
+ const remainingSlots = COLLAPSED_RATE_VIEW_LIMIT - result.length;
31
+ const regularRatesToShow = ratesWithoutAttributes.slice(0, remainingSlots);
32
+ result.push(...regularRatesToShow);
33
+ return result;
14
34
  };
15
35
  /**
16
36
  * @internal
17
37
  *
18
38
  * # Filter Visible Rate Options Hook
19
39
  *
40
+ * Filters rate options for the collapsed view, showing up to 4 rates:
41
+ * - Up to 3 rates with attributes (best_value, cheapest, fastest)
42
+ * - Fill remaining slots with regular rates
43
+ * - Media Mail is always excluded from the collapsed view
20
44
  */
21
- const useFilterVisibleRateOptions = (rateOptions, selectedRate, preferredServiceCodes) => {
22
- const collapsedRateOptionList = React.useMemo(() => filterRateOptions(rateOptions, selectedRate, preferredServiceCodes), [rateOptions, selectedRate, preferredServiceCodes]);
23
- const filterVisibleRateOptions = React.useCallback(options => filterRateOptions(options, selectedRate, preferredServiceCodes), [selectedRate, preferredServiceCodes]);
45
+ const useFilterVisibleRateOptions = rateOptions => {
46
+ const collapsedRateOptionList = React.useMemo(() => filterRateOptions(rateOptions), [rateOptions]);
47
+ const filterVisibleRateOptions = React.useCallback(options => filterRateOptions(options), []);
24
48
  return {
25
49
  COLLAPSED_RATE_VIEW_LIMIT,
26
50
  collapsedRateOptionList,
@@ -45,11 +45,11 @@ const useInsuranceProviderOptions = (insuranceAccount, features) => {
45
45
  refetchInsuranceAcceptedTerms
46
46
  } = useGetFundingSourceInsuranceProvider.useGetFundingSourceInsuranceProvider();
47
47
  const insuranceProviderOptions = React.useMemo(() => Object.values(reactApi.SE.InsuranceProviderType).flatMap(v => {
48
- return v === "none" || v === "funding_source" || v === "parcelguard" && (v !== fundingSourceInsuranceProvider || !globalFeatures.enableParcelGuard) || v === "x_cover" && v !== fundingSourceInsuranceProvider || v === "carrier" && !(features === null || features === void 0 ? void 0 : features.includeCarrierInsurance) || v === "third_party" && !(features === null || features === void 0 ? void 0 : features.includeThirdPartyInsurance) || v === "shipsurance" && (!(insuranceAccount === null || insuranceAccount === void 0 ? void 0 : insuranceAccount.amount) || !(features === null || features === void 0 ? void 0 : features.includeShipsuranceInsurance)) ? [] : {
48
+ return v === "none" || v === "funding_source" || v === "parcelguard" && (v !== fundingSourceInsuranceProvider || !globalFeatures.enableParcelGuard) || v === "x_cover" && (v !== fundingSourceInsuranceProvider || !globalFeatures.enableXCover) || v === "carrier" && !(features === null || features === void 0 ? void 0 : features.includeCarrierInsurance) || v === "third_party" && !(features === null || features === void 0 ? void 0 : features.includeThirdPartyInsurance) || v === "shipsurance" && (!(insuranceAccount === null || insuranceAccount === void 0 ? void 0 : insuranceAccount.amount) || !(features === null || features === void 0 ? void 0 : features.includeShipsuranceInsurance)) ? [] : {
49
49
  label: t(`insuranceProviders.${humps__namespace.camelize(v)}`),
50
50
  value: v
51
51
  };
52
- }), [fundingSourceInsuranceProvider, globalFeatures.enableParcelGuard, features, insuranceAccount === null || insuranceAccount === void 0 ? void 0 : insuranceAccount.amount, t]);
52
+ }), [fundingSourceInsuranceProvider, globalFeatures.enableParcelGuard, globalFeatures.enableXCover, features, insuranceAccount === null || insuranceAccount === void 0 ? void 0 : insuranceAccount.amount, t]);
53
53
  return {
54
54
  fundingSourceInsuranceProvider,
55
55
  insuranceProviderOptions,
@@ -0,0 +1,114 @@
1
+ 'use strict';
2
+
3
+ var faker = require('@faker-js/faker');
4
+ var fishery = require('fishery');
5
+
6
+ /**
7
+ * @category Factories
8
+ */
9
+ const addressFactory = fishery.Factory.define(({
10
+ params,
11
+ transientParams
12
+ }) => {
13
+ var _a, _b, _c, _d;
14
+ const addressLine2 = (_a = params.addressLine2) !== null && _a !== void 0 ? _a : faker.faker.helpers.maybe(() => faker.faker.address.secondaryAddress(), {
15
+ probability: 0.25
16
+ });
17
+ const addressLine3 = (_b = params.addressLine3) !== null && _b !== void 0 ? _b : addressLine2 && faker.faker.helpers.maybe(() => faker.faker.address.secondaryAddress());
18
+ let countryCode = (_c = params.countryCode) !== null && _c !== void 0 ? _c : "US";
19
+ // Random country code could still be US
20
+ while (transientParams.isInternational && countryCode === "US") {
21
+ countryCode = faker.faker.address.countryCode();
22
+ }
23
+ const stateProvince = (_d = params.stateProvince) !== null && _d !== void 0 ? _d : faker.faker.address.stateAbbr();
24
+ return {
25
+ addressLine1: faker.faker.address.streetAddress(),
26
+ addressLine2,
27
+ addressLine3,
28
+ addressResidentialIndicator: faker.faker.helpers.maybe(() => faker.faker.helpers.arrayElement(["yes", "no"])),
29
+ cityLocality: faker.faker.address.city(),
30
+ companyName: faker.faker.helpers.maybe(() => faker.faker.company.name()),
31
+ countryCode,
32
+ name: faker.faker.name.fullName(),
33
+ phone: faker.faker.phone.number(),
34
+ postalCode: faker.faker.address.zipCodeByState(stateProvince),
35
+ stateProvince
36
+ };
37
+ });
38
+ /**
39
+ * @category Factories
40
+ */
41
+ const addressValidationFactory = fishery.Factory.define(({
42
+ associations,
43
+ params
44
+ }) => {
45
+ var _a, _b;
46
+ const status = params.status || faker.faker.helpers.arrayElement(["unverified", "verified", "warning", "error"]);
47
+ return {
48
+ matchedAddress: (_a = associations.matchedAddress) !== null && _a !== void 0 ? _a : faker.faker.helpers.maybe(() => addressFactory.build(), {
49
+ probability: ["verified", "error"].includes(status) ? 0 : 0.8
50
+ }),
51
+ messages: [],
52
+ originalAddress: (_b = associations.originalAddress) !== null && _b !== void 0 ? _b : addressFactory.build(),
53
+ status
54
+ };
55
+ });
56
+ /**
57
+ * Mock the addressValidation object used to hyrdate address valiation feature
58
+ * on the shipment form.
59
+ * @category Factory
60
+ */
61
+ fishery.Factory.define(({
62
+ params
63
+ }) => {
64
+ const addressValidation = addressValidationFactory.build({
65
+ status: params.status
66
+ }, {
67
+ associations: {
68
+ matchedAddress: addressFactory.build()
69
+ }
70
+ });
71
+ if (!addressValidation.matchedAddress) throw new Error("addressPreferenceFactory did not generate a matchedAddress");
72
+ return Object.assign(Object.assign({}, addressValidation), {
73
+ alternative: addressValidation.originalAddress,
74
+ alternativeSource: "originalAddress",
75
+ isModified: true,
76
+ selection: addressValidation.matchedAddress,
77
+ selectionSource: "matchedAddress",
78
+ toggle: () => addressFactory.build()
79
+ });
80
+ });
81
+ /**
82
+ * Mock the addressValidationPreference object used to hyrdate the address valiation feature
83
+ * used for warehouse management and onboarding.
84
+ * @category Factory
85
+ */
86
+ fishery.Factory.define(() => {
87
+ const addressValidation = addressValidationFactory.build();
88
+ const address = addressFactory.build();
89
+ const validationType = faker.faker.helpers.arrayElement(["EXACT", "SOFT", "SUGGESTED", "ERROR"]);
90
+ switch (validationType) {
91
+ case "EXACT":
92
+ case "SOFT":
93
+ return {
94
+ address: address,
95
+ validationType: faker.faker.helpers.arrayElement(["EXACT", "SOFT"])
96
+ };
97
+ case "SUGGESTED":
98
+ case "ERROR":
99
+ return {
100
+ validation: addressValidation,
101
+ validationType: faker.faker.helpers.arrayElement(["SUGGESTED", "ERROR"])
102
+ };
103
+ default:
104
+ {
105
+ return {
106
+ validation: addressValidation,
107
+ validationType: "ERROR"
108
+ };
109
+ }
110
+ }
111
+ });
112
+
113
+ exports.addressFactory = addressFactory;
114
+ exports.addressValidationFactory = addressValidationFactory;
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var faker = require('@faker-js/faker');
4
+ var reactApi = require('@shipengine/react-api');
5
+ var fishery = require('fishery');
6
+
7
+ /**
8
+ * @category Factories
9
+ */
10
+ const moneyFactory = fishery.Factory.define(({
11
+ transientParams
12
+ }) => ({
13
+ amount: faker.faker.datatype.number({
14
+ max: 1000,
15
+ min: 5,
16
+ precision: 0.01
17
+ }),
18
+ currency: (transientParams === null || transientParams === void 0 ? void 0 : transientParams.isInternational) ? faker.faker.helpers.arrayElement(Object.values(reactApi.SE.Currency)) : reactApi.SE.Currency.USD
19
+ }));
20
+
21
+ exports.moneyFactory = moneyFactory;
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var faker = require('@faker-js/faker');
4
+ var fishery = require('fishery');
5
+
6
+ const randomOrderSourceCode = () => faker.faker.helpers.arrayElement(["3dcart", "abantecart", "acumatica", "acumatica_v2", "alibaba", "amazon", "amazon_au", "amazon_ca", "amazon_de", "amazon_es", "amazon_fr", "amazon_it", "amazon_jp", "amazon_mx", "amazon_uk", "americommerce", "auctane-orders", "back-market", "bandcamp", "big_cartel", "bigcommerce", "bigcommerce_v3", "bigcommerce_v2", "bizelo", "bluepark", "bonanza", "brightpearl", "cdiscount", "celery", "channeladvisor", "channelsale", "choxi", "cin7", "commerceinterface", "corecommerce", "coupang", "cratejoy", "cs-cart", "custom_store", "dear_systems", "dummy-marketplace", "ebay", "ebay_au", "ebay_ca", "ebay_uk", "ebay_fr", "ebay_v2", "ecwid", "ecwid_v1", "edesk", "ekm", "etsy", "facebook", "fnac", "foxycart", "freestyle", "fullscreen_direct", "geekseller", "goodsie", "google", "google_checkout", "gorgias", "groopdealz", "groupon_goods", "handshake", "hatch", "highwire", "homeroots", "houzz", "idealo_de", "inksoft", "jane", "jet", "kaufland", "labelapi", "lemonstand", "lengow", "liftoff", "linnworks", "listingmirror", "magento", "zoey", "magento_go", "memberly", "mercado_libre", "mijoshop", "best_buy_ca", "catch", "darty", "fanatics", "kohls", "kroger", "urbn", "miva_merchant", "morecommerce", "mozu", "neto", "newegg", "newegg_business", "newegg_ca", "notonthehighstreet", "oauth_dummy", "odbc", "onbuy", "opencart", "order_time", "ordersource_api", "oscommerce", "overstock", "oxatis", "paypal", "paypal_v2", "payvment", "penny", "prestashop", "rakuten", "best_buy", "rakuten-fr", "rate_browser", "redditgifts", "reverb", "revolutionparts", "salesforce_commerce_cloud", "salesforce_core", "sap_anywhere", "scout_topshelf", "sears", "securestore", "sellbrite", "selleractive", "shipengine_api", "shipengine_merchant", "shipstation", "shop_premium_outlets", "shopify", "shoppingfeed", "shopware_de", "simplepart", "skuvault", "soldsie", "sophio", "spark_shipping", "spree", "spreesy", "square", "squarespace", "stitch_labs", "storenvy", "stripe", "suredone", "tanga", "tophatter", "trade_me", "tradegecko", "ultracart", "unbranded_ecommerce_store", "unleashed", "vault", "visualsoft", "volo", "volusion", "vtex", "walmart", "walmart_ca", "wayfair", "webflow", "weebly", "wish", "wix", "woocommerce", "woocommerce_v2", "woot", "x-cart", "yahoo", "sec_yumbles", "zen_cart", "zonos"]);
7
+ /**
8
+ * @category Factories
9
+ */
10
+ const orderSourceRefreshInfoFactory = fishery.Factory.define(() => {
11
+ const lastRefreshAttempt = faker.faker.date.recent();
12
+ return {
13
+ lastRefreshAttempt: lastRefreshAttempt.toISOString(),
14
+ refreshDate: faker.faker.date.recent(1, lastRefreshAttempt).toISOString(),
15
+ status: faker.faker.helpers.arrayElement(["idle", "preparing_update", "updating", "error", "unknown"])
16
+ };
17
+ });
18
+ /**
19
+ * @category Factories
20
+ */
21
+ fishery.Factory.define(({
22
+ associations,
23
+ params
24
+ }) => {
25
+ var _a;
26
+ return {
27
+ active: faker.faker.datatype.boolean(),
28
+ orderSourceCode: randomOrderSourceCode(),
29
+ orderSourceFriendlyName: faker.faker.company.name(),
30
+ orderSourceId: faker.faker.datatype.uuid(),
31
+ orderSourceNickname: faker.faker.random.words(),
32
+ refreshInfo: (_a = associations.refreshInfo) !== null && _a !== void 0 ? _a : orderSourceRefreshInfoFactory.build(params.refreshInfo)
33
+ };
34
+ });
35
+
36
+ exports.orderSourceRefreshInfoFactory = orderSourceRefreshInfoFactory;
37
+ exports.randomOrderSourceCode = randomOrderSourceCode;
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ var faker = require('@faker-js/faker');
4
+ var fishery = require('fishery');
5
+ var utils = require('../utils.cjs');
6
+
7
+ /**
8
+ * @internal
9
+ *
10
+ * # Package Factory
11
+ *
12
+ * @category Factories
13
+ */
14
+ const packageFactory = fishery.Factory.define(({
15
+ transientParams
16
+ }) => ({
17
+ description: faker.faker.lorem.sentence(),
18
+ dimensions: (transientParams === null || transientParams === void 0 ? void 0 : transientParams.noDimensions) ? undefined : {
19
+ height: faker.faker.datatype.number({
20
+ max: 50,
21
+ min: 1,
22
+ precision: 0.1
23
+ }),
24
+ length: faker.faker.datatype.number({
25
+ max: 50,
26
+ min: 1,
27
+ precision: 0.1
28
+ }),
29
+ unit: faker.faker.helpers.arrayElement(["inch", "centimeter"]),
30
+ width: faker.faker.datatype.number({
31
+ max: 50,
32
+ min: 1,
33
+ precision: 0.1
34
+ })
35
+ },
36
+ name: faker.faker.random.words(),
37
+ packageCode: utils.randomShipengineSlug(2),
38
+ packageId: utils.randomShipengineSlug(3)
39
+ }));
40
+
41
+ exports.packageFactory = packageFactory;
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var faker = require('@faker-js/faker');
4
+ var fishery = require('fishery');
5
+
6
+ /**
7
+ * @category Factories
8
+ */
9
+ const downloadFactory = fishery.Factory.define(() => ({
10
+ href: faker.faker.internet.url(),
11
+ pdf: faker.faker.internet.url(),
12
+ png: faker.faker.internet.url(),
13
+ zpl: faker.faker.internet.url()
14
+ }));
15
+ /**
16
+ * @category Factories
17
+ */
18
+ fishery.Factory.define(() => ({
19
+ href: faker.faker.internet.url(),
20
+ type: faker.faker.word.noun()
21
+ }));
22
+
23
+ exports.downloadFactory = downloadFactory;
@@ -0,0 +1,176 @@
1
+ 'use strict';
2
+
3
+ var _tslib = require('../../_virtual/_tslib.cjs');
4
+ var faker = require('@faker-js/faker');
5
+ var reactApi = require('@shipengine/react-api');
6
+ var fishery = require('fishery');
7
+ var utils = require('../utils.cjs');
8
+ var address = require('./address.cjs');
9
+ var money = require('./money.cjs');
10
+ var orderSource = require('./order-source.cjs');
11
+ var _package = require('./package.cjs');
12
+ var resource = require('./resource.cjs');
13
+ var weight = require('./weight.cjs');
14
+
15
+ const randomDeliveryConfirmation = () => faker.faker.helpers.arrayElement(Object.values(reactApi.SE.ConfirmationType));
16
+ const randomInsuranceProvider = (allowNone = true) => {
17
+ const availableProviders = Object.values(reactApi.SE.InsuranceProviderType).filter(p => allowNone ? p : p !== "none");
18
+ return faker.faker.helpers.arrayElement(availableProviders);
19
+ };
20
+ /**
21
+ * @category Factories
22
+ */
23
+ const productFactory = fishery.Factory.define(() => ({
24
+ countryOfOrigin: faker.faker.address.countryCode(),
25
+ description: faker.faker.commerce.productName(),
26
+ harmonizedTariffCode: faker.faker.datatype.string(),
27
+ quantity: faker.faker.datatype.number({
28
+ max: 10,
29
+ min: 1
30
+ }),
31
+ sku: faker.faker.random.numeric(10),
32
+ skuDescription: faker.faker.helpers.maybe(() => faker.faker.lorem.sentence()),
33
+ unitOfMeasure: faker.faker.helpers.maybe(() => faker.faker.word.noun()),
34
+ value: money.moneyFactory.build()
35
+ }));
36
+ /**
37
+ * @category Factories
38
+ */
39
+ const shipmentItemFactory = fishery.Factory.define(({
40
+ params
41
+ }) => ({
42
+ asin: faker.faker.helpers.maybe(() => faker.faker.random.alphaNumeric(10)),
43
+ externalOrderId: faker.faker.random.alphaNumeric(10),
44
+ externalOrderItemId: faker.faker.random.alphaNumeric(10),
45
+ name: faker.faker.commerce.productName(),
46
+ orderSourceCode: orderSource.randomOrderSourceCode(),
47
+ quantity: faker.faker.datatype.number({
48
+ max: 10,
49
+ min: 1
50
+ }),
51
+ salesOrderItemId: params.salesOrderId && faker.faker.random.alphaNumeric(6),
52
+ sku: faker.faker.random.numeric(10)
53
+ }));
54
+ /**
55
+ * @category Factories
56
+ */
57
+ const shipmentPackageFactory = fishery.Factory.define(({
58
+ associations,
59
+ params,
60
+ transientParams
61
+ }) => {
62
+ var _a, _b, _c, _d, _e;
63
+ const _f = _package.packageFactory.build(params),
64
+ pkg = _tslib.__rest(_f, ["name"]);
65
+ const isInsured = utils.tristateValue(true, false, faker.faker.datatype.boolean(), (_b = (_a = params.insuredValue) === null || _a === void 0 ? void 0 : _a.amount) !== null && _b !== void 0 ? _b : transientParams.isInsured);
66
+ return Object.assign(Object.assign({}, pkg), {
67
+ insuredValue: (_c = associations.insuredValue) !== null && _c !== void 0 ? _c : isInsured ? money.moneyFactory.build(params.insuredValue) : undefined,
68
+ labelDownload: (_d = associations.labelDownload) !== null && _d !== void 0 ? _d : transientParams.isShipped ? resource.downloadFactory.build(params.labelDownload) : undefined,
69
+ labelMessages: associations.labelMessages,
70
+ products: transientParams.isInternational ? productFactory.buildList(1) : [],
71
+ trackingNumber: transientParams.isShipped ? faker.faker.random.alphaNumeric(12, {
72
+ casing: "upper"
73
+ }) : undefined,
74
+ weight: (_e = associations.weight) !== null && _e !== void 0 ? _e : weight.weightWithUnitFactory.build(params.weight)
75
+ });
76
+ });
77
+ /**
78
+ * @category Factories
79
+ */
80
+ const shipmentFactory = fishery.Factory.define(({
81
+ associations,
82
+ params,
83
+ sequence,
84
+ transientParams
85
+ }) => {
86
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
87
+ const shipTo = (_a = associations.shipTo) !== null && _a !== void 0 ? _a : address.addressFactory.build(params.shipTo, {
88
+ transient: {
89
+ isInternational: transientParams.isInternational
90
+ }
91
+ });
92
+ let insuranceProvider = reactApi.SE.InsuranceProviderType.NONE;
93
+ if (transientParams.insuredValue || transientParams.isInsured) {
94
+ insuranceProvider = (_b = params.insuranceProvider) !== null && _b !== void 0 ? _b : randomInsuranceProvider(false);
95
+ } else if (transientParams.insuredValue === undefined && transientParams.isInsured === undefined) {
96
+ insuranceProvider = randomInsuranceProvider(true);
97
+ }
98
+ const shipDateObj = faker.faker.date.soon(7);
99
+ shipDateObj.setHours(0, 0, 0, 0);
100
+ const totalWeight = (_c = associations.totalWeight) !== null && _c !== void 0 ? _c : weight.weightWithUnitFactory.build(params.totalWeight);
101
+ return {
102
+ addressValidation: (_d = associations.addressValidation) !== null && _d !== void 0 ? _d : address.addressValidationFactory.build(params.addressValidation, {
103
+ associations: {
104
+ originalAddress: shipTo
105
+ }
106
+ }),
107
+ amountPaid: money.moneyFactory.build(),
108
+ 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 : utils.randomShipengineId(),
109
+ confirmation: randomDeliveryConfirmation(),
110
+ createdAt: faker.faker.date.past().toISOString(),
111
+ customs: (_g = associations.customs) !== null && _g !== void 0 ? _g : transientParams.isInternational ? {
112
+ contents: faker.faker.helpers.arrayElement(["documents", "gift", "merchandise", "returned_goods", "sample"]),
113
+ nonDelivery: faker.faker.helpers.arrayElement(["return_to_sender", "treat_as_abandoned"])
114
+ } : undefined,
115
+ externalOrderId: faker.faker.random.alphaNumeric(10),
116
+ externalShipmentId: faker.faker.random.alphaNumeric(10),
117
+ insuranceProvider,
118
+ items: shipmentItemFactory.buildList(faker.faker.datatype.number({
119
+ max: 10,
120
+ min: 1
121
+ }), transientParams.salesOrder ? {
122
+ externalOrderId: transientParams.salesOrder.externalOrderId,
123
+ orderSourceCode: transientParams.salesOrder.orderSource.orderSourceCode,
124
+ salesOrderId: (_h = transientParams.salesOrder) === null || _h === void 0 ? void 0 : _h.salesOrderId
125
+ } : {}),
126
+ modifiedAt: faker.faker.date.recent().toISOString(),
127
+ orderSourceCode: (_k = (_j = transientParams.salesOrder) === null || _j === void 0 ? void 0 : _j.orderSource.orderSourceCode) !== null && _k !== void 0 ? _k : orderSource.randomOrderSourceCode(),
128
+ packages: (_l = associations.packages) !== null && _l !== void 0 ? _l : shipmentPackageFactory.buildList(1, (_m = params.packages) === null || _m === void 0 ? void 0 : _m[0], {
129
+ associations: {
130
+ weight: totalWeight
131
+ },
132
+ transient: {
133
+ isInsured: insuranceProvider !== "none",
134
+ isInternational: transientParams.isInternational,
135
+ isShipped: transientParams.isShipped
136
+ }
137
+ }),
138
+ 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 : address.addressFactory.build(),
139
+ serviceCode: (_s = (_r = transientParams.service) === null || _r === void 0 ? void 0 : _r.serviceCode) !== null && _s !== void 0 ? _s : utils.randomShipengineSlug(),
140
+ shipDate: shipDateObj.toISOString(),
141
+ 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 : address.addressFactory.build(),
142
+ shipmentId: `se-${30000 + sequence}`,
143
+ shipmentStatus: transientParams.isShipped ? "label_purchased" : "pending",
144
+ shippingPaid: money.moneyFactory.build(),
145
+ shipTo,
146
+ tags: (_w = associations.tags) !== null && _w !== void 0 ? _w : [],
147
+ taxPaid: money.moneyFactory.build(),
148
+ totalWeight,
149
+ warehouseId: (_x = transientParams.warehouse) === null || _x === void 0 ? void 0 : _x.warehouseId
150
+ };
151
+ });
152
+ /**
153
+ * @category Factories
154
+ */
155
+ const salesOrderShipmentFactory = fishery.Factory.define(({
156
+ associations,
157
+ params,
158
+ transientParams
159
+ }) => {
160
+ var _a, _b, _c;
161
+ const shipment = shipmentFactory.build(params, {
162
+ associations,
163
+ transient: transientParams
164
+ });
165
+ return Object.assign(Object.assign({}, shipment), {
166
+ 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.faker.datatype.uuid()]
167
+ });
168
+ });
169
+
170
+ exports.productFactory = productFactory;
171
+ exports.randomDeliveryConfirmation = randomDeliveryConfirmation;
172
+ exports.randomInsuranceProvider = randomInsuranceProvider;
173
+ exports.salesOrderShipmentFactory = salesOrderShipmentFactory;
174
+ exports.shipmentFactory = shipmentFactory;
175
+ exports.shipmentItemFactory = shipmentItemFactory;
176
+ exports.shipmentPackageFactory = shipmentPackageFactory;
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var faker = require('@faker-js/faker');
4
+ var fishery = require('fishery');
5
+
6
+ const randomWeightUnit = () => faker.faker.helpers.arrayElement(["pound", "ounce", "gram", "kilogram"]);
7
+ /**
8
+ * @category Factories
9
+ */
10
+ fishery.Factory.define(() => ({
11
+ fractional: faker.faker.datatype.number({
12
+ max: 16,
13
+ min: 0
14
+ }),
15
+ whole: faker.faker.datatype.number({
16
+ max: 20,
17
+ min: 0
18
+ })
19
+ }));
20
+ /**
21
+ * @category Factories
22
+ */
23
+ const weightFactory = fishery.Factory.define(() => ({
24
+ value: faker.faker.datatype.number({
25
+ max: 20,
26
+ min: 1,
27
+ precision: 0.1
28
+ })
29
+ }));
30
+ /**
31
+ * @category Factories
32
+ */
33
+ const weightWithUnitFactory = fishery.Factory.define(({
34
+ params
35
+ }) => {
36
+ const weight = weightFactory.build(params);
37
+ return Object.assign(Object.assign({}, weight), {
38
+ unit: randomWeightUnit()
39
+ });
40
+ });
41
+
42
+ exports.randomWeightUnit = randomWeightUnit;
43
+ exports.weightFactory = weightFactory;
44
+ exports.weightWithUnitFactory = weightWithUnitFactory;
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var faker = require('@faker-js/faker');
4
+
5
+ const randomShipengineId = (length = 5) => `se-${faker.faker.random.numeric(length)}`;
6
+ const randomShipengineSlug = wordCount => faker.faker.lorem.slug(wordCount).replace("-", "_");
7
+ const tristateValue = (ifTrue, ifFalse, ifUndefined, value) => {
8
+ if (value === undefined) {
9
+ return ifUndefined;
10
+ }
11
+ if (value) {
12
+ return ifTrue;
13
+ }
14
+ return ifFalse;
15
+ };
16
+
17
+ exports.randomShipengineId = randomShipengineId;
18
+ exports.randomShipengineSlug = randomShipengineSlug;
19
+ exports.tristateValue = tristateValue;
@@ -38,12 +38,10 @@ const useListFundingSourceCarriers = () => {
38
38
  //TODO: Remove hardcoded carrierMetadata and insuranceProviderMetadata when the friendlyName is available in the funding source metadata response
39
39
  const carrierMetadata = useCarrierMetadata.useCarrierMetadata();
40
40
  const insuranceProviderProfiles = React.useMemo(() => {
41
- return optionalTerms.map(t => {
42
- return Object.assign({
43
- agreedToTerms: insurance.getIsInsuraceProviderAccepted(t.termType, insuranceProviderAcceptedTerms === null || insuranceProviderAcceptedTerms === void 0 ? void 0 : insuranceProviderAcceptedTerms.acceptedTerms),
44
- terms: Object.assign({}, t)
45
- }, insurance.getInsuranceProviderWithFriendlyName(t.termType));
46
- });
41
+ const groupedProfiles = insurance.groupTermsByProvider(optionalTerms);
42
+ return groupedProfiles.map(profile => Object.assign(Object.assign({}, profile), {
43
+ agreedToTerms: profile.terms.some(term => insurance.getIsInsuraceProviderAccepted(term.termType, insuranceProviderAcceptedTerms === null || insuranceProviderAcceptedTerms === void 0 ? void 0 : insuranceProviderAcceptedTerms.acceptedTerms))
44
+ }));
47
45
  }, [optionalTerms, insuranceProviderAcceptedTerms]);
48
46
  const normalizeCarrierCode = (carrierCode, nickname) => carrierCode === "usps" || (nickname === null || nickname === void 0 ? void 0 : nickname.includes("free")) ? "stamps_com" : carrierCode;
49
47
  const normalizeConnectedCarrierCodes = new Set(connectedCarriers === null || connectedCarriers === void 0 ? void 0 : connectedCarriers.map(c => normalizeCarrierCode(c.carrierCode, c.nickname)));