thm-p3-configurator 0.0.358 → 0.0.360

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 (236) hide show
  1. package/dist/src/shared/App.js +80 -0
  2. package/dist/src/shared/__api__/__tests__/queryKeyFactory.test.js +114 -0
  3. package/dist/src/shared/__api__/_dummyApi.js +110 -0
  4. package/dist/src/shared/__api__/authenticatedProxyApi.js +319 -0
  5. package/dist/src/shared/__api__/mutations.js +855 -0
  6. package/dist/src/shared/__api__/orderApi.js +35 -0
  7. package/dist/src/shared/__api__/publicProxyApi.js +65 -0
  8. package/dist/src/shared/__api__/queries.js +928 -0
  9. package/dist/src/shared/__api__/queryKeyFactory.js +147 -0
  10. package/dist/src/shared/__components__/Buttons/LinkButton.js +56 -0
  11. package/dist/src/shared/__components__/Buttons/NavigationButton.js +40 -0
  12. package/dist/src/shared/__components__/Buttons/OutlinedButton.js +63 -0
  13. package/dist/src/shared/__components__/Buttons/PrimaryButton.js +55 -0
  14. package/dist/src/shared/__components__/Cards/Card.js +38 -0
  15. package/dist/src/shared/__components__/Cards/CardWide.js +27 -0
  16. package/dist/src/shared/__components__/Cards/ExpandableCard.js +79 -0
  17. package/dist/src/shared/__components__/Cards/TogglableCard.js +68 -0
  18. package/dist/src/shared/__components__/DangerAlert.js +23 -0
  19. package/dist/src/shared/__components__/EmptyState.js +30 -0
  20. package/dist/src/shared/__components__/Error.js +66 -0
  21. package/dist/src/shared/__components__/Form/CheckboxInput.js +87 -0
  22. package/dist/src/shared/__components__/Form/DatePickerInput.js +123 -0
  23. package/dist/src/shared/__components__/Form/DecimalInput.js +106 -0
  24. package/dist/src/shared/__components__/Form/DropdownInput.js +187 -0
  25. package/dist/src/shared/__components__/Form/ErrorMessage.js +23 -0
  26. package/dist/src/shared/__components__/Form/FormSteps.js +64 -0
  27. package/dist/src/shared/__components__/Form/LicensePlateInput.js +89 -0
  28. package/dist/src/shared/__components__/Form/MenuListWithSearchHint.js +25 -0
  29. package/dist/src/shared/__components__/Form/NumericInput.js +182 -0
  30. package/dist/src/shared/__components__/Form/RadioButtons.js +93 -0
  31. package/dist/src/shared/__components__/Form/RadioInput.js +83 -0
  32. package/dist/src/shared/__components__/Form/SearchableDropdownInput.js +257 -0
  33. package/dist/src/shared/__components__/Form/TextAreaInput.js +91 -0
  34. package/dist/src/shared/__components__/Form/TextInput.js +95 -0
  35. package/dist/src/shared/__components__/Form/TimePickerInput.js +129 -0
  36. package/dist/src/shared/__components__/Header.js +44 -0
  37. package/dist/src/shared/__components__/LocationsSelector/LocationAutoComplete.js +171 -0
  38. package/dist/src/shared/__components__/LocationsSelector/LocationClusteredMap.js +127 -0
  39. package/dist/src/shared/__components__/LocationsSelector/LocationClusteredTreeMarkers.js +247 -0
  40. package/dist/src/shared/__components__/LocationsSelector/LocationDetails.js +320 -0
  41. package/dist/src/shared/__components__/LocationsSelector/LocationInfo.js +139 -0
  42. package/dist/src/shared/__components__/LocationsSelector/LocationList.js +180 -0
  43. package/dist/src/shared/__components__/LocationsSelector/LocationListItem.js +103 -0
  44. package/dist/src/shared/__components__/LocationsSelector/LocationTreeMarker.js +96 -0
  45. package/dist/src/shared/__components__/LocationsSelector/index.js +162 -0
  46. package/dist/src/shared/__components__/Modal.js +78 -0
  47. package/dist/src/shared/__components__/Navbar.js +58 -0
  48. package/dist/src/shared/__components__/NavigationSteps.js +115 -0
  49. package/dist/src/shared/__components__/Pagination.js +53 -0
  50. package/dist/src/shared/__components__/ProductCard/ProductCardCheckbox.js +38 -0
  51. package/dist/src/shared/__components__/ProductCard/ProductCardDescription.js +77 -0
  52. package/dist/src/shared/__components__/ProductCard/ProductCardDiscountAlert.js +57 -0
  53. package/dist/src/shared/__components__/ProductCard/ProductCardImage.js +28 -0
  54. package/dist/src/shared/__components__/ProductCard/ProductCardPrice.js +37 -0
  55. package/dist/src/shared/__components__/ProductCard/ProductCardRibbon.js +28 -0
  56. package/dist/src/shared/__components__/ProductCard/ProductCardSpecifications.js +77 -0
  57. package/dist/src/shared/__components__/ProductCard/ProductCardUsps.js +82 -0
  58. package/dist/src/shared/__components__/ProductCard/index.js +173 -0
  59. package/dist/src/shared/__components__/ProductTable/ProductTableEditableRow.js +66 -0
  60. package/dist/src/shared/__components__/ProductTable/ProductTableHead.js +32 -0
  61. package/dist/src/shared/__components__/ProductTable/ProductTableSection.js +25 -0
  62. package/dist/src/shared/__components__/ProductTable/ProductTableSectionTotal.js +44 -0
  63. package/dist/src/shared/__components__/ProductTable/ProductTableStaticRow.js +47 -0
  64. package/dist/src/shared/__components__/ProductTable/ProductTableTotal.js +41 -0
  65. package/dist/src/shared/__components__/ProductTable/index.js +127 -0
  66. package/dist/src/shared/__components__/SingleOrderCartCard.js +78 -0
  67. package/dist/src/shared/__components__/SingleOrderProductCard.js +269 -0
  68. package/dist/src/shared/__components__/Spinners/FullPageSpinner.js +73 -0
  69. package/dist/src/shared/__components__/Spinners/InlineSpinner.js +26 -0
  70. package/dist/src/shared/__components__/Spinners/TextSpinner.js +31 -0
  71. package/dist/src/shared/__components__/UspsList.js +27 -0
  72. package/dist/src/shared/__components__/internal/InternalCustomerDetailsForm.js +951 -0
  73. package/dist/src/shared/__constants__/cartTable.js +32 -0
  74. package/dist/src/shared/__constants__/cookiebot.js +7 -0
  75. package/dist/src/shared/__constants__/index.js +311 -0
  76. package/dist/src/shared/__constants__/sentry.js +20 -0
  77. package/dist/src/shared/__containers__/ANWBMembershipInput.js +170 -0
  78. package/dist/src/shared/__containers__/AppointmentForm.js +391 -0
  79. package/dist/src/shared/__containers__/BoardComputerCard.js +137 -0
  80. package/dist/src/shared/__containers__/BottomNavigationBar.js +162 -0
  81. package/dist/src/shared/__containers__/DiscountProductsSelector.js +149 -0
  82. package/dist/src/shared/__containers__/ExitIntentModal.js +280 -0
  83. package/dist/src/shared/__containers__/ExtraProductsOverview.js +227 -0
  84. package/dist/src/shared/__containers__/LicensePlateForm.js +148 -0
  85. package/dist/src/shared/__containers__/ManualSelectionForm.js +258 -0
  86. package/dist/src/shared/__containers__/ProductCartSide.js +356 -0
  87. package/dist/src/shared/__containers__/ProductDiscountCard.js +167 -0
  88. package/dist/src/shared/__containers__/ProductsCartOverview.js +874 -0
  89. package/dist/src/shared/__containers__/ProductsOverview.js +416 -0
  90. package/dist/src/shared/__containers__/QuestionsForm.js +505 -0
  91. package/dist/src/shared/__containers__/QuotationForm.js +376 -0
  92. package/dist/src/shared/__containers__/QuotationSuccessModal.js +34 -0
  93. package/dist/src/shared/__containers__/SentryWrapper.js +60 -0
  94. package/dist/src/shared/__containers__/StyleWrapper.js +81 -0
  95. package/dist/src/shared/__containers__/VehicleData.js +190 -0
  96. package/dist/src/shared/__containers__/internal/DirectVehicleSelectorModal.js +125 -0
  97. package/dist/src/shared/__containers__/internal/InternalAppointmentForm.js +1638 -0
  98. package/dist/src/shared/__containers__/internal/InternalAppointmentSuccessModal.js +116 -0
  99. package/dist/src/shared/__containers__/internal/InternalBranchSelectorModal.js +469 -0
  100. package/dist/src/shared/__containers__/internal/InternalCancelDossierEdit.js +73 -0
  101. package/dist/src/shared/__containers__/internal/InternalDiscountCodeSelector.js +78 -0
  102. package/dist/src/shared/__containers__/internal/InternalDiscountForm.js +156 -0
  103. package/dist/src/shared/__containers__/internal/InternalExtraPriceForm.js +143 -0
  104. package/dist/src/shared/__containers__/internal/InternalLicenseplateModal.js +131 -0
  105. package/dist/src/shared/__containers__/internal/InternalPriceCalculationSelector.js +52 -0
  106. package/dist/src/shared/__containers__/internal/InternalQuotationForm.js +1041 -0
  107. package/dist/src/shared/__containers__/internal/InternalQuotationSuccessModal.js +114 -0
  108. package/dist/src/shared/__containers__/internal/InternalSingleOrderCart.js +97 -0
  109. package/dist/src/shared/__containers__/internal/InternalSingleOrderFilters.js +318 -0
  110. package/dist/src/shared/__containers__/internal/InternalSingleOrderProductOverview.js +201 -0
  111. package/dist/src/shared/__containers__/internal/InternalSingleOrderSidebar.js +21 -0
  112. package/dist/src/shared/__containers__/internal/InternalSingleOrderSuccessModal.js +57 -0
  113. package/dist/src/shared/__containers__/internal/OrderTypeSelectorModal.js +136 -0
  114. package/dist/src/shared/__containers__/internal/index.js +73 -0
  115. package/dist/src/shared/__context__/ActiveMarkerContext.js +44 -0
  116. package/dist/src/shared/__context__/AuthSessionContext.js +157 -0
  117. package/dist/src/shared/__context__/CountryContext.js +63 -0
  118. package/dist/src/shared/__context__/FormulaContext.js +77 -0
  119. package/dist/src/shared/__context__/OrderSessionContext.js +1452 -0
  120. package/dist/src/shared/__context__/ThemeContext.js +57 -0
  121. package/dist/src/shared/__helpers__/cartTable.js +424 -0
  122. package/dist/src/shared/__helpers__/cookieManager.js +44 -0
  123. package/dist/src/shared/__helpers__/cookiebot.js +30 -0
  124. package/dist/src/shared/__helpers__/dossier.js +325 -0
  125. package/dist/src/shared/__helpers__/geolocation.js +70 -0
  126. package/dist/src/shared/__helpers__/image.js +88 -0
  127. package/dist/src/shared/__helpers__/index.js +307 -0
  128. package/dist/src/shared/__helpers__/montageRate.js +71 -0
  129. package/dist/src/shared/__helpers__/product.js +192 -0
  130. package/dist/src/shared/__helpers__/queryClient.js +23 -0
  131. package/dist/src/shared/__helpers__/singleOrderArticles.js +372 -0
  132. package/dist/src/shared/__helpers__/ui.js +39 -0
  133. package/dist/src/shared/__hooks__/useArticleTypes.js +23 -0
  134. package/dist/src/shared/__hooks__/useAuthSession.js +12 -0
  135. package/dist/src/shared/__hooks__/useBranchTheme.js +84 -0
  136. package/dist/src/shared/__hooks__/useBreakpoint.js +68 -0
  137. package/dist/src/shared/__hooks__/useCheckEmailExists.js +90 -0
  138. package/dist/src/shared/__hooks__/useIsSingleOrder.js +18 -0
  139. package/dist/src/shared/__hooks__/useIsTmg.js +25 -0
  140. package/dist/src/shared/__hooks__/useIsTowmotive.js +23 -0
  141. package/dist/src/shared/__hooks__/useSearchParam.js +29 -0
  142. package/dist/src/shared/__hooks__/useSessionContextReady.js +16 -0
  143. package/dist/src/shared/__hooks__/useUserLocation.js +51 -0
  144. package/dist/src/shared/__pages__/AppointmentPage.js +42 -0
  145. package/dist/src/shared/__pages__/AppointmentThanksPage.js +59 -0
  146. package/dist/src/shared/__pages__/ExtraProductsPage.js +41 -0
  147. package/dist/src/shared/__pages__/LicensePlatePage.js +178 -0
  148. package/dist/src/shared/__pages__/LocationsPage.js +32 -0
  149. package/dist/src/shared/__pages__/ManualSelectionPage.js +161 -0
  150. package/dist/src/shared/__pages__/NoProductsPage.js +101 -0
  151. package/dist/src/shared/__pages__/NotFoundPage.js +27 -0
  152. package/dist/src/shared/__pages__/OverviewPage.js +56 -0
  153. package/dist/src/shared/__pages__/ProductsPage.js +48 -0
  154. package/dist/src/shared/__pages__/QuotationPage.js +38 -0
  155. package/dist/src/shared/__pages__/QuotationThanksPage.js +95 -0
  156. package/dist/src/shared/__pages__/index.js +156 -0
  157. package/dist/src/shared/__pages__/internal/InternalAppointmentPage.js +300 -0
  158. package/dist/src/shared/__pages__/internal/InternalExtraProductsPage.js +48 -0
  159. package/dist/src/shared/__pages__/internal/InternalLicensePlatePage.js +147 -0
  160. package/dist/src/shared/__pages__/internal/InternalLocationsPage.js +106 -0
  161. package/dist/src/shared/__pages__/internal/InternalManualSelectionPage.js +157 -0
  162. package/dist/src/shared/__pages__/internal/InternalNoDossierPage.js +82 -0
  163. package/dist/src/shared/__pages__/internal/InternalNoProductsPage.js +96 -0
  164. package/dist/src/shared/__pages__/internal/InternalOverviewPage.js +65 -0
  165. package/dist/src/shared/__pages__/internal/InternalProductsPage.js +49 -0
  166. package/dist/src/shared/__pages__/internal/InternalQuotationPage.js +253 -0
  167. package/dist/src/shared/__pages__/internal/InternalSessionEditPage.js +180 -0
  168. package/dist/src/shared/__pages__/internal/InternalSingleOrderPage.js +458 -0
  169. package/dist/src/shared/__pages__/internal/__TEST_ONLY_INTERNAL_ROUTES.js +95 -0
  170. package/dist/src/shared/__pages__/internal/index.js +94 -0
  171. package/dist/src/shared/__services__/ANWBValidator.js +136 -0
  172. package/dist/src/shared/__services__/AddressLookupService.js +137 -0
  173. package/dist/src/shared/__services__/AuthRuntime.js +57 -0
  174. package/dist/src/shared/__services__/Experiments.js +304 -0
  175. package/dist/src/shared/__services__/LicensePlateValidator.js +82 -0
  176. package/dist/src/shared/__services__/LocalStorageWorker.js +71 -0
  177. package/dist/src/shared/__style__/_bootstrap-external.scss +44 -0
  178. package/dist/src/shared/__style__/_bootstrap.scss +44 -0
  179. package/dist/src/shared/__style__/_variables-external.scss +253 -0
  180. package/dist/src/shared/__style__/_variables.scss +253 -0
  181. package/dist/src/shared/__style__/base/_global.scss +10 -0
  182. package/dist/src/shared/__style__/base/_icon.scss +11 -0
  183. package/dist/src/shared/__style__/base/_typography-external.scss +57 -0
  184. package/dist/src/shared/__style__/base/_typography.scss +52 -0
  185. package/dist/src/shared/__style__/components/_alert.scss +13 -0
  186. package/dist/src/shared/__style__/components/_buttons.scss +89 -0
  187. package/dist/src/shared/__style__/components/_cancel-edit.scss +9 -0
  188. package/dist/src/shared/__style__/components/_collapse.scss +5 -0
  189. package/dist/src/shared/__style__/components/_datepicker.scss +31 -0
  190. package/dist/src/shared/__style__/components/_error.scss +64 -0
  191. package/dist/src/shared/__style__/components/_exit-intent-popup.scss +26 -0
  192. package/dist/src/shared/__style__/components/_license-plate.scss +48 -0
  193. package/dist/src/shared/__style__/components/_list-check.scss +38 -0
  194. package/dist/src/shared/__style__/components/_loader.scss +29 -0
  195. package/dist/src/shared/__style__/components/_microcopy.scss +34 -0
  196. package/dist/src/shared/__style__/components/_modal.scss +94 -0
  197. package/dist/src/shared/__style__/components/_navbar.scss +59 -0
  198. package/dist/src/shared/__style__/components/_next-prev-nav.scss +38 -0
  199. package/dist/src/shared/__style__/components/_preloader.scss +138 -0
  200. package/dist/src/shared/__style__/components/_section-pagination.scss +46 -0
  201. package/dist/src/shared/__style__/components/_status.scss +9 -0
  202. package/dist/src/shared/__style__/components/_steps.scss +79 -0
  203. package/dist/src/shared/__style__/components/_vehicle-data.scss +88 -0
  204. package/dist/src/shared/__style__/components/card/_card-default.scss +6 -0
  205. package/dist/src/shared/__style__/components/card/_card-horizontal.scss +70 -0
  206. package/dist/src/shared/__style__/components/card/_card.scss +150 -0
  207. package/dist/src/shared/__style__/components/cart/_cart-product.scss +23 -0
  208. package/dist/src/shared/__style__/components/cart/_cart-table.scss +189 -0
  209. package/dist/src/shared/__style__/components/cart/_cart.scss +75 -0
  210. package/dist/src/shared/__style__/components/dealer/_dealer-autocomplete.scss +104 -0
  211. package/dist/src/shared/__style__/components/dealer/_dealer-data.scss +20 -0
  212. package/dist/src/shared/__style__/components/dealer/_dealer-item.scss +59 -0
  213. package/dist/src/shared/__style__/components/dealer/_dealer-list.scss +23 -0
  214. package/dist/src/shared/__style__/components/dealer/_dealer-map.scss +103 -0
  215. package/dist/src/shared/__style__/components/dealer/_dealer.scss +5 -0
  216. package/dist/src/shared/__style__/components/filter/_filter-form.scss +22 -0
  217. package/dist/src/shared/__style__/components/form/_form-card.scss +10 -0
  218. package/dist/src/shared/__style__/components/form/_form-column.scss +16 -0
  219. package/dist/src/shared/__style__/components/form/_form-dots.scss +23 -0
  220. package/dist/src/shared/__style__/components/form/_form-radio.scss +115 -0
  221. package/dist/src/shared/__style__/components/form/_form-select.scss +178 -0
  222. package/dist/src/shared/__style__/components/form/_form.scss +77 -0
  223. package/dist/src/shared/__style__/components/hero/_hero-offset.scss +22 -0
  224. package/dist/src/shared/__style__/components/hero/_hero.scss +57 -0
  225. package/dist/src/shared/__style__/components/pagination.scss +65 -0
  226. package/dist/src/shared/__style__/components/sidebar/_react-numeric-input.scss +0 -0
  227. package/dist/src/shared/__style__/components/sidebar/_sidebar.scss +64 -0
  228. package/dist/src/shared/__style__/configurator/_configurator-offset-sidebar.scss +42 -0
  229. package/dist/src/shared/__style__/configurator/_configurator-offset.scss +44 -0
  230. package/dist/src/shared/__style__/configurator/_configurator-thc.scss +89 -0
  231. package/dist/src/shared/__style__/configurator/_configurator-wrapper-steps.scss +5 -0
  232. package/dist/src/shared/__style__/configurator/_configurator.scss +445 -0
  233. package/dist/src/shared/__style__/main-external.scss +60 -0
  234. package/dist/src/shared/__style__/main.module.scss +60 -0
  235. package/dist/src/shared/__style__/main.scss +60 -0
  236. package/package.json +1 -1
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.weak-map.js");
4
+ require("core-js/modules/web.dom-collections.iterator.js");
5
+ require("core-js/modules/es.weak-map.js");
6
+ require("core-js/modules/web.dom-collections.iterator.js");
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ require("react-datepicker/src/stylesheets/datepicker-cssmodules.scss");
13
+ var _reactGtmModule = _interopRequireDefault(require("react-gtm-module"));
14
+ var _reactHotLoader = require("react-hot-loader");
15
+ var _reactQuery = require("react-query");
16
+ var _reactRouterDom = require("react-router-dom");
17
+ var _Navbar = _interopRequireDefault(require("./__components__/Navbar"));
18
+ var _constants__ = require("./__constants__");
19
+ var _SentryWrapper = _interopRequireDefault(require("./__containers__/SentryWrapper"));
20
+ var _pages__ = _interopRequireDefault(require("./__pages__"));
21
+ var _TEST_ONLY_INTERNAL_ROUTES = _interopRequireDefault(require("./__pages__/internal/__TEST_ONLY_INTERNAL_ROUTES"));
22
+ var _StyleWrapper = _interopRequireDefault(require("./__containers__/StyleWrapper"));
23
+ var _InternalBranchSelectorModal = _interopRequireDefault(require("./__containers__/internal/InternalBranchSelectorModal"));
24
+ var _ActiveMarkerContext = require("./__context__/ActiveMarkerContext");
25
+ var _CountryContext = require("./__context__/CountryContext");
26
+ var _FormulaContext = require("./__context__/FormulaContext");
27
+ var _OrderSessionContext = require("./__context__/OrderSessionContext");
28
+ var _cookiebot = require("./__helpers__/cookiebot");
29
+ var _queryClient = _interopRequireDefault(require("./__helpers__/queryClient"));
30
+ var _Experiments = _interopRequireDefault(require("./__services__/Experiments"));
31
+ var _mainExternal = _interopRequireDefault(require("./__style__/main-external.scss"));
32
+ var _main = _interopRequireDefault(require("./__style__/main.scss"));
33
+ function _interopRequireDefault(e) {
34
+ return e && e.__esModule ? e : {
35
+ default: e
36
+ };
37
+ }
38
+ function _getRequireWildcardCache(e) {
39
+ if ("function" != typeof WeakMap) return null;
40
+ var r = new WeakMap(),
41
+ t = new WeakMap();
42
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
43
+ return e ? t : r;
44
+ })(e);
45
+ }
46
+ function _interopRequireWildcard(e, r) {
47
+ if (!r && e && e.__esModule) return e;
48
+ if (null === e || "object" != typeof e && "function" != typeof e) return {
49
+ default: e
50
+ };
51
+ var t = _getRequireWildcardCache(r);
52
+ if (t && t.has(e)) return t.get(e);
53
+ var n = {
54
+ __proto__: null
55
+ },
56
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
57
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
58
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
59
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
60
+ }
61
+ return n.default = e, t && t.set(e, n), n;
62
+ }
63
+ _reactGtmModule.default.initialize({
64
+ gtmId: APP_CONFIG.googleTagManagerId || 'GTM-TC67SZ4'
65
+ });
66
+ window.styles = APP_CONFIG.internal ? _main.default : _mainExternal.default;
67
+ const App = () => {
68
+ (0, _cookiebot.listenToCookiebotEvents)();
69
+ (0, _react.useEffect)(() => {
70
+ (0, _Experiments.default)();
71
+ });
72
+ return /*#__PURE__*/_react.default.createElement(_SentryWrapper.default, null, /*#__PURE__*/_react.default.createElement(_FormulaContext.FormulaController, {
73
+ defaultFormula: _constants__.CONFIGURATOR_FORMULAS.THM
74
+ }, /*#__PURE__*/_react.default.createElement(_CountryContext.CountryController, {
75
+ defaultCountry: APP_CONFIG.country
76
+ }, /*#__PURE__*/_react.default.createElement(_OrderSessionContext.OrderSessionController, null, /*#__PURE__*/_react.default.createElement(_reactQuery.QueryClientProvider, {
77
+ client: _queryClient.default
78
+ }, /*#__PURE__*/_react.default.createElement(_reactRouterDom.BrowserRouter, null, /*#__PURE__*/_react.default.createElement(_reactHotLoader.AppContainer, null, /*#__PURE__*/_react.default.createElement(_ActiveMarkerContext.ActiveMarkerProvider, null, /*#__PURE__*/_react.default.createElement(_StyleWrapper.default, null, !APP_CONFIG.internal && /*#__PURE__*/_react.default.createElement(_Navbar.default, null), APP_CONFIG.internal && /*#__PURE__*/_react.default.createElement(_InternalBranchSelectorModal.default, null), /*#__PURE__*/_react.default.createElement(_pages__.default, null))))))))));
79
+ };
80
+ var _default = exports.default = App;
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.json.stringify.js");
4
+ require("core-js/modules/es.json.stringify.js");
5
+ var _queryKeyFactory = require("../queryKeyFactory");
6
+ describe('queryKeyFactory', () => {
7
+ beforeEach(() => {
8
+ global.APP_CONFIG = {
9
+ internal: true
10
+ };
11
+ });
12
+ it('normalizes buildYear into constructionYear without mutating input', () => {
13
+ const params = {
14
+ buildYear: '2024',
15
+ formula: 'THC',
16
+ skipFilters: false,
17
+ discountAmount: 0,
18
+ priceCalculationDate: '2026-03-09'
19
+ };
20
+ const normalized = (0, _queryKeyFactory.normalizeOrderParams)(params);
21
+ expect(normalized).toEqual({
22
+ constructionYear: '2024',
23
+ formula: 'THC',
24
+ skipFilters: false,
25
+ discountAmount: 0,
26
+ priceCalculationDate: '2026-03-09'
27
+ });
28
+ expect(params).toEqual({
29
+ buildYear: '2024',
30
+ formula: 'THC',
31
+ skipFilters: false,
32
+ discountAmount: 0,
33
+ priceCalculationDate: '2026-03-09'
34
+ });
35
+ });
36
+ it('drops priceCalculationDate for external mode', () => {
37
+ global.APP_CONFIG = {
38
+ internal: false
39
+ };
40
+ expect((0, _queryKeyFactory.normalizeOrderParams)({
41
+ formula: 'THC',
42
+ priceCalculationDate: '2026-03-09'
43
+ })).toEqual({
44
+ formula: 'THC'
45
+ });
46
+ });
47
+ it('serializes order params in stable priority order', () => {
48
+ const first = (0, _queryKeyFactory.serializeOrderParams)({
49
+ cart: '[]',
50
+ formula: 'THC',
51
+ buildYear: '2024',
52
+ licensePlate: '12AB34',
53
+ extraPriceAmount: 10,
54
+ durationAnswer: 'Lang'
55
+ });
56
+ const second = (0, _queryKeyFactory.serializeOrderParams)({
57
+ extraPriceAmount: 10,
58
+ durationAnswer: 'Lang',
59
+ licensePlate: '12AB34',
60
+ formula: 'THC',
61
+ cart: '[]',
62
+ buildYear: '2024'
63
+ });
64
+ expect(first).toBe('licensePlate=12AB34&formula=THC&constructionYear=2024&durationAnswer=Lang&extraPriceAmount=10&cart=%5B%5D');
65
+ expect(second).toBe(first);
66
+ });
67
+ it('preserves legacy getOrder request semantics by omitting falsy values', () => {
68
+ expect((0, _queryKeyFactory.serializeOrderParams)({
69
+ licensePlate: '12AB34',
70
+ formula: 'THC',
71
+ discountAmount: 0,
72
+ skipFilters: false,
73
+ extraPriceAmount: null
74
+ })).toBe('licensePlate=12AB34&formula=THC');
75
+ });
76
+ it('builds order query keys from serialized order params', () => {
77
+ expect((0, _queryKeyFactory.getOrderQueryKey)({
78
+ licensePlate: '12AB34',
79
+ formula: 'THC'
80
+ })).toEqual(['order', 'licensePlate=12AB34&formula=THC']);
81
+ });
82
+ it('includes formula in brands and build-years keys', () => {
83
+ expect((0, _queryKeyFactory.getBrandsQueryKey)('TMG')).toEqual(['brands', 'TMG']);
84
+ expect((0, _queryKeyFactory.getBuildYearsQueryKey)({
85
+ brand: 'Volvo',
86
+ formula: 'TMG'
87
+ })).toEqual(['buildYears', 'Volvo', 'TMG']);
88
+ });
89
+ it('includes formula in single-order-articles keys', () => {
90
+ const first = (0, _queryKeyFactory.getSingleOrderArticlesKey)({
91
+ filters: {
92
+ brand: 'Volvo',
93
+ articleNumber: '123'
94
+ },
95
+ formula: 'TMG',
96
+ branchId: 'branch-1',
97
+ webshop: false
98
+ });
99
+ const second = (0, _queryKeyFactory.getSingleOrderArticlesKey)({
100
+ filters: {
101
+ articleNumber: '123',
102
+ brand: 'Volvo'
103
+ },
104
+ formula: 'TMG',
105
+ branchId: 'branch-1',
106
+ webshop: false
107
+ });
108
+ expect(first).toEqual(['singleOrderArticles', JSON.stringify({
109
+ articleNumber: '123',
110
+ brand: 'Volvo'
111
+ }), 'TMG', 'branch-1', false]);
112
+ expect(second).toEqual(first);
113
+ });
114
+ });
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.dummyApi = void 0;
7
+ var _bikeCarrier = _interopRequireDefault(require("../../../public/assets/images/dummy/bike-carrier.jpg"));
8
+ var _extra = _interopRequireDefault(require("../../../public/assets/images/dummy/extra.png"));
9
+ var _licensePlateWhite = _interopRequireDefault(require("../../../public/assets/images/dummy/license-plate-white.png"));
10
+ var _towbar = _interopRequireDefault(require("../../../public/assets/images/dummy/towbar-1.jpg"));
11
+ var _towbar2 = _interopRequireDefault(require("../../../public/assets/images/dummy/towbar-2.jpg"));
12
+ function _interopRequireDefault(e) {
13
+ return e && e.__esModule ? e : {
14
+ default: e
15
+ };
16
+ }
17
+ const dummyApi = exports.dummyApi = {
18
+ getCart: () => ({
19
+ data: {
20
+ editable: [{
21
+ id: 'onetwothree',
22
+ title: 'Trekhaken verticaal afneembaar',
23
+ price: 50,
24
+ image: _towbar.default,
25
+ amount: 50
26
+ }],
27
+ static: [{
28
+ id: 'onetwothree',
29
+ title: 'Trekhaken verticaal afneembaar',
30
+ price: 100,
31
+ image: _towbar2.default
32
+ }]
33
+ }
34
+ }),
35
+ getExtraProducts: () => ({
36
+ data: [{
37
+ isRecommended: false,
38
+ productId: 10,
39
+ productTitle: 'Witte kentekenplaat',
40
+ productDescription: "Witte kentekenplaat voor fietsendragers en aanhangwagens/caravans tot 750 kg.",
41
+ productImage: _licensePlateWhite.default,
42
+ productPrice: 249.99,
43
+ productDiscountedPrice: 199.99,
44
+ productCategory: 'Handige Accessoires'
45
+ }, {
46
+ isRecommended: false,
47
+ productId: 50,
48
+ productTitle: 'Verloopstekker 13- naar 7-polig',
49
+ productDescription: "D.m.v een verloopstekker kunnen ook oudere types\naanhangers, boot- of paardentrailers en fietsendragers\nworden aangesloten op uw 13-polige kabelset.",
50
+ productImage: _extra.default,
51
+ productPrice: 249.99,
52
+ productDiscountedPrice: 199.99,
53
+ productCategory: 'Handige Accessoires'
54
+ }, {
55
+ productId: 20,
56
+ isRecommended: false,
57
+ productTitle: 'Yakima Foldclick 2',
58
+ productDescription: "D.m.v een verloopstekker kunnen ook oudere types\naanhangers, boot- of paardentrailers en\nfietsendragers worden aangesloten op uw\n13-polige kabelset",
59
+ productImage: _bikeCarrier.default,
60
+ productPrice: 299.99,
61
+ productDiscountedPrice: 249.99,
62
+ productCategory: 'Fietsendragers'
63
+ }, {
64
+ productId: 30,
65
+ isRecommended: false,
66
+ productTitle: 'Yakima Foldclick 3',
67
+ productDescription: "D.m.v een verloopstekker kunnen ook oudere types\n aanhangers, boot- of paardentrailers en\n fietsendragers worden aangesloten op uw\n 13-polige kabelset",
68
+ productImage: _bikeCarrier.default,
69
+ productPrice: 500.99,
70
+ productDiscountedPrice: 400.99,
71
+ productCategory: 'Fietsendragers'
72
+ }]
73
+ }),
74
+ getLocations: () => {
75
+ return {
76
+ data: [{
77
+ description: 'Garagebedrijf Peter Peeters is het adres voor trekhaakmontages in Zuiderhout. \r\rBij ons kunt u rekenen op deskundige montage van trekhaak en kabelset. \r\rTevens kunnen wij u uitstekend adviseren over de producten en toepassingen. \r\rKom snel langs of plan een afspraak in.',
78
+ title: 'Trekhaak Montage vestiging',
79
+ postCode: '4921PJ',
80
+ street: 'Brieltjenspolder',
81
+ city: 'Made',
82
+ telephoneNumber: '085-0004122',
83
+ latitude: 51.67353,
84
+ longitude: 4.81503,
85
+ id: 165522,
86
+ image: 'https://trekhaak-labels-api-production.s3.eu-central-1.amazonaws.com/6a88a0b9-5885-4f2a-9243-1dd2e9773fa5'
87
+ }, {
88
+ description: 'Garagebedrijf Peter Peeters is het adres voor trekhaakmontages in Zuiderhout. \r\rBij ons kunt u rekenen op deskundige montage van trekhaak en kabelset. \r\rTevens kunnen wij u uitstekend adviseren over de producten en toepassingen. \r\rKom snel langs of plan een afspraak in.',
89
+ title: 'Misker Hardenberg B.V. (JAMES)',
90
+ postCode: '7772SG',
91
+ street: 'J.C. Kellerlaan',
92
+ city: 'Hardenberg',
93
+ telephoneNumber: '0523 - 262 777',
94
+ latitude: 52.56026,
95
+ longitude: 6.62978,
96
+ id: 1666
97
+ }]
98
+ };
99
+ },
100
+ createQuotation: quotationInput => ({
101
+ data: {
102
+ success: true
103
+ }
104
+ }),
105
+ createAppointment: appointmentInput => ({
106
+ data: {
107
+ success: true
108
+ }
109
+ })
110
+ };
@@ -0,0 +1,319 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.array.includes.js");
4
+ require("core-js/modules/es.promise.js");
5
+ require("core-js/modules/es.promise.finally.js");
6
+ require("core-js/modules/es.string.includes.js");
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.authenticatedProxyApi = void 0;
11
+ require("core-js/modules/es.array.includes.js");
12
+ require("core-js/modules/es.promise.js");
13
+ require("core-js/modules/es.promise.finally.js");
14
+ require("core-js/modules/es.string.includes.js");
15
+ var _axios = _interopRequireDefault(require("axios"));
16
+ var _AuthRuntime = require("../__services__/AuthRuntime");
17
+ function _interopRequireDefault(e) {
18
+ return e && e.__esModule ? e : {
19
+ default: e
20
+ };
21
+ }
22
+ const authenticatedClient = _axios.default.create({
23
+ baseURL: APP_CONFIG.proxyUrl,
24
+ withCredentials: true
25
+ });
26
+ const sessionClient = _axios.default.create({
27
+ baseURL: APP_CONFIG.proxyUrl,
28
+ withCredentials: true
29
+ });
30
+ let refreshPromise = null;
31
+ const syncRuntimeSession = function syncRuntimeSession() {
32
+ var _payload$branch$entit, _payload$branch;
33
+ let payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
34
+ if (!(payload !== null && payload !== void 0 && payload.authenticated)) {
35
+ _AuthRuntime.authRuntime.clear();
36
+ return false;
37
+ }
38
+ _AuthRuntime.authRuntime.setCsrfToken(payload.csrfToken || null);
39
+ _AuthRuntime.authRuntime.setActiveBranchId((_payload$branch$entit = (_payload$branch = payload.branch) === null || _payload$branch === void 0 ? void 0 : _payload$branch.entityId) !== null && _payload$branch$entit !== void 0 ? _payload$branch$entit : null);
40
+ return true;
41
+ };
42
+ const refreshSession = () => {
43
+ if (!refreshPromise) {
44
+ refreshPromise = sessionClient('api/v1/auth', {
45
+ method: 'PUT'
46
+ }).then(response => {
47
+ syncRuntimeSession((response === null || response === void 0 ? void 0 : response.data) || {});
48
+ return response;
49
+ }).finally(() => {
50
+ refreshPromise = null;
51
+ });
52
+ }
53
+ return refreshPromise;
54
+ };
55
+ const resyncSession = async () => {
56
+ const response = await sessionClient('api/v1/auth/session', {
57
+ method: 'GET'
58
+ });
59
+ syncRuntimeSession((response === null || response === void 0 ? void 0 : response.data) || {});
60
+ return response;
61
+ };
62
+ const attachSessionHeaders = function attachSessionHeaders() {
63
+ let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
64
+ config.headers = config.headers || {};
65
+ const branchId = _AuthRuntime.authRuntime.getActiveBranchId();
66
+ if (branchId) {
67
+ config.headers['active-branch-id'] = branchId;
68
+ }
69
+ const method = (config.method || 'get').toLowerCase();
70
+ if (!['get', 'head', 'options'].includes(method)) {
71
+ const csrf = _AuthRuntime.authRuntime.getCsrfToken();
72
+ if (csrf) {
73
+ config.headers['X-CSRF-Token'] = csrf;
74
+ }
75
+ }
76
+ return config;
77
+ };
78
+ authenticatedClient.interceptors.request.use(config => attachSessionHeaders(config));
79
+ sessionClient.interceptors.request.use(config => {
80
+ const normalizedConfig = attachSessionHeaders(config);
81
+ if (normalizedConfig !== null && normalizedConfig !== void 0 && normalizedConfig.headers) {
82
+ delete normalizedConfig.headers['active-branch-id'];
83
+ }
84
+ return normalizedConfig;
85
+ });
86
+ authenticatedClient.interceptors.response.use(response => response, async error => {
87
+ var _error$response, _originalRequest$url;
88
+ const status = error === null || error === void 0 || (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status;
89
+ const originalRequest = (error === null || error === void 0 ? void 0 : error.config) || {};
90
+ if (![401, 403].includes(status) || originalRequest._retry || (_originalRequest$url = originalRequest.url) !== null && _originalRequest$url !== void 0 && _originalRequest$url.includes('api/v1/auth')) {
91
+ return Promise.reject(error);
92
+ }
93
+ originalRequest._retry = true;
94
+ try {
95
+ await refreshSession();
96
+ } catch (refreshError) {
97
+ var _sessionResponse$data;
98
+ const sessionResponse = await resyncSession().catch(() => null);
99
+ if (!(sessionResponse !== null && sessionResponse !== void 0 && (_sessionResponse$data = sessionResponse.data) !== null && _sessionResponse$data !== void 0 && _sessionResponse$data.authenticated)) {
100
+ return Promise.reject(refreshError);
101
+ }
102
+ }
103
+ return authenticatedClient(originalRequest);
104
+ });
105
+ const authenticatedProxyApi = exports.authenticatedProxyApi = {
106
+ getSession: () => sessionClient('api/v1/auth/session', {
107
+ method: 'GET'
108
+ }),
109
+ putSessionContext: function putSessionContext() {
110
+ let {
111
+ branchEntityId,
112
+ formula,
113
+ module
114
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
115
+ return authenticatedClient('api/v1/auth/context', {
116
+ method: 'PUT',
117
+ data: {
118
+ branchEntityId,
119
+ formula,
120
+ module
121
+ }
122
+ });
123
+ },
124
+ getArticleTypes: () => authenticatedClient("api/v1/articles/types", {
125
+ method: 'GET'
126
+ }),
127
+ getCountries: () => authenticatedClient("api/v1/countries", {
128
+ method: 'GET'
129
+ }),
130
+ putRefreshToken: () => refreshSession(),
131
+ getArticleGroups: articleTypeId => authenticatedClient("api/v1/articles/groups/".concat(articleTypeId), {
132
+ method: 'GET'
133
+ }),
134
+ getArticleSubGroups: (articleGroupId, formula) => authenticatedClient("api/v1/articles/subgroups/".concat(articleGroupId, "?formula=").concat(formula), {
135
+ method: 'GET'
136
+ }),
137
+ getArticles: filtersQueryString => authenticatedClient("api/v1/articles?".concat(filtersQueryString), {
138
+ method: 'GET'
139
+ }),
140
+ getBrandsByArticleNumbers: articleNumbersString => authenticatedClient("api/v1/articles/brands?".concat(articleNumbersString), {
141
+ method: 'GET'
142
+ }),
143
+ deleteLogout: () => sessionClient("api/v1/auth", {
144
+ method: 'DELETE'
145
+ }),
146
+ getMyProfile: () => authenticatedClient('api/v1/profile', {
147
+ method: 'GET'
148
+ }),
149
+ getBranchTypes: () => authenticatedClient("api/v1/branch-types", {
150
+ method: 'GET'
151
+ }),
152
+ getBranchesByType: _ref => {
153
+ let {
154
+ formula,
155
+ ownershipType,
156
+ organisationType,
157
+ searchTerm,
158
+ isTmg = false,
159
+ isTowCenterBranch = false
160
+ } = _ref;
161
+ return authenticatedClient("api/v1/branches/by-type?searchTerm=".concat(searchTerm, "&formula=").concat(formula, "&ownershipType=").concat(ownershipType, "&organisationType=").concat(organisationType, "&isTmg=").concat(isTmg, "&isTowCenterBranch=").concat(isTowCenterBranch), {
162
+ method: 'GET'
163
+ });
164
+ },
165
+ getBusinessBranches: _ref2 => {
166
+ let {
167
+ searchTerm,
168
+ formula
169
+ } = _ref2;
170
+ return authenticatedClient("api/v1/branches/zakelijk?searchTerm=".concat(searchTerm, "&formula=").concat(formula), {
171
+ method: 'GET'
172
+ });
173
+ },
174
+ getMyBranchesByFormula: formula => authenticatedClient("api/v1/profile/".concat(formula, "/branches"), {
175
+ method: 'GET'
176
+ }),
177
+ getSingleOrderBranchTypes: branchTypesParamsString => authenticatedClient("api/v1/branch-types?".concat(branchTypesParamsString), {
178
+ method: 'GET'
179
+ }),
180
+ getSingleOrderBranches: branchesParamsString => authenticatedClient("api/v1/branches?".concat(branchesParamsString), {
181
+ method: 'GET'
182
+ }),
183
+ getBranchById: id => authenticatedClient("api/v1/branches/".concat(id), {
184
+ method: 'GET'
185
+ }),
186
+ getQuotationById: id => authenticatedClient("api/v1/quotations/".concat(id), {
187
+ method: 'GET'
188
+ }),
189
+ getPlannedAppointmentById: id => authenticatedClient("api/v1/appointments/".concat(id), {
190
+ method: 'GET'
191
+ }),
192
+ getAppointmentRequestById: id => authenticatedClient("api/v1/appointment-requests/".concat(id), {
193
+ method: 'GET'
194
+ }),
195
+ getDossiers: _ref3 => {
196
+ let {
197
+ term,
198
+ offset = 0,
199
+ limit = 10,
200
+ branchId,
201
+ formula
202
+ } = _ref3;
203
+ return authenticatedClient("api/v1/dossiers?term=".concat(term, "&offset=").concat(offset, "&limit=").concat(limit).concat(branchId ? "&branchId=".concat(branchId) : '').concat(formula ? "&formula=".concat(formula) : ''), {
204
+ method: 'GET'
205
+ });
206
+ },
207
+ putDossierById: _ref4 => {
208
+ let {
209
+ id,
210
+ payload
211
+ } = _ref4;
212
+ return authenticatedClient("api/v1/dossiers/".concat(id), {
213
+ method: 'PUT',
214
+ data: payload
215
+ });
216
+ },
217
+ postAppointmentRequest: appointmentRequestPayload => authenticatedClient("api/v1/appointment-requests", {
218
+ method: 'POST',
219
+ data: appointmentRequestPayload,
220
+ headers: {
221
+ 'Content-Type': 'application/json'
222
+ }
223
+ }),
224
+ postQuotation: quotationPayload => authenticatedClient("api/v1/quotations", {
225
+ method: 'POST',
226
+ data: quotationPayload,
227
+ headers: {
228
+ 'Content-Type': 'application/json'
229
+ }
230
+ }),
231
+ postSingleOrder: singleOrderPayload => authenticatedClient("api/v1/single-orders", {
232
+ method: 'POST',
233
+ data: singleOrderPayload,
234
+ headers: {
235
+ 'Content-Type': 'application/json'
236
+ }
237
+ }),
238
+ postShopifyOrder: shopifyOrderPayload => authenticatedClient("api/v1/single-orders/shopify", {
239
+ method: 'POST',
240
+ data: shopifyOrderPayload
241
+ }),
242
+ postAppointment: appointmentPayload => authenticatedClient("api/v1/appointments", {
243
+ method: 'POST',
244
+ data: appointmentPayload,
245
+ headers: {
246
+ 'Content-Type': 'application/json'
247
+ }
248
+ }),
249
+ putQuotationById: _ref5 => {
250
+ let {
251
+ payload,
252
+ id
253
+ } = _ref5;
254
+ return authenticatedClient("api/v1/quotations/".concat(id), {
255
+ method: 'PUT',
256
+ data: payload,
257
+ headers: {
258
+ 'Content-Type': 'application/json'
259
+ }
260
+ });
261
+ },
262
+ putAppointmentById: _ref6 => {
263
+ let {
264
+ payload,
265
+ id
266
+ } = _ref6;
267
+ return authenticatedClient("api/v1/appointments/".concat(id), {
268
+ method: 'PUT',
269
+ data: payload,
270
+ headers: {
271
+ 'Content-Type': 'application/json'
272
+ }
273
+ });
274
+ },
275
+ putAppointmentRequestById: _ref7 => {
276
+ let {
277
+ payload,
278
+ id
279
+ } = _ref7;
280
+ return authenticatedClient("api/v1/appointment-requests/".concat(id, "?action=order"), {
281
+ method: 'PUT',
282
+ data: payload,
283
+ headers: {
284
+ 'Content-Type': 'application/json'
285
+ }
286
+ });
287
+ },
288
+ getActiveDiscounts: _ref8 => {
289
+ let {
290
+ formulaCode,
291
+ limit,
292
+ offset
293
+ } = _ref8;
294
+ return authenticatedClient("api/v1/discounts?limit=".concat(limit, "&offset=").concat(offset, "&formulaCode=").concat(formulaCode), {
295
+ method: 'GET',
296
+ headers: {
297
+ 'Content-Type': 'application/json'
298
+ }
299
+ });
300
+ },
301
+ getPartBrands: () => authenticatedClient("api/v1/configurator/part-brands", {
302
+ method: 'GET'
303
+ }),
304
+ getOrder: orderParameters => {
305
+ const basePath = APP_CONFIG.internal ? 'api/v1' : 'api/public/v1';
306
+ return authenticatedClient("".concat(basePath, "/configurator/order?").concat(orderParameters), {
307
+ method: 'GET'
308
+ });
309
+ },
310
+ getArticlePrices: partsQueryString => {
311
+ if (!APP_CONFIG.internal) {
312
+ return null;
313
+ }
314
+ const basePath = APP_CONFIG.internal ? 'api/v1' : 'api/public/v1';
315
+ return authenticatedClient("".concat(basePath, "/configurator/prices?").concat(partsQueryString), {
316
+ method: 'GET'
317
+ });
318
+ }
319
+ };