@tracktor/shared-module 2.34.1 → 2.36.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.
@@ -4,6 +4,10 @@ interface InitializeDaysJSConfigProps {
4
4
  * Dayjs library
5
5
  */
6
6
  dayjs?: NonNullable<InjectDependenciesContextProps["libraries"]>["dayjs"];
7
+ /**
8
+ * Dayjs localizedFormat plugin (required for localized date formats like "ll")
9
+ */
10
+ localizedFormat: any;
7
11
  /**
8
12
  * Dayjs plugin
9
13
  */
@@ -1,6 +1,6 @@
1
1
  import { PropsWithChildren } from 'react';
2
2
  import { InjectDependenciesContextProps } from './InjectDependenciesProvider';
3
- interface QueryClientProviderWithConfigProps extends PropsWithChildren {
3
+ interface QueryProviderProps extends PropsWithChildren {
4
4
  /**
5
5
  * QueryClientProvider from react-query
6
6
  */
@@ -22,11 +22,5 @@ interface QueryClientProviderWithConfigProps extends PropsWithChildren {
22
22
  [key: string]: any;
23
23
  };
24
24
  }
25
- /**
26
- * This provider is QueryClientProviderWithConfig with custom default config options
27
- * @param children
28
- * @param options
29
- * @constructor
30
- */
31
- declare const QueryClientProviderWithConfig: ({ children, defaultQueriesOptions, defaultMutationsOptions, ...props }: QueryClientProviderWithConfigProps) => import("react/jsx-runtime").JSX.Element;
32
- export default QueryClientProviderWithConfig;
25
+ declare const QueryProvider: ({ children, defaultQueriesOptions, defaultMutationsOptions, ...props }: QueryProviderProps) => import("react/jsx-runtime").JSX.Element;
26
+ export default QueryProvider;
package/dist/main.d.ts CHANGED
@@ -25,8 +25,7 @@ export * from './context/ChatProvider';
25
25
  export { default as ChatProvider } from './context/ChatProvider';
26
26
  export * from './context/InjectDependenciesProvider';
27
27
  export { default as InjectDependenciesProvider } from './context/InjectDependenciesProvider';
28
- export * from './context/QueryClientProviderWithConfig';
29
- export { default as QueryClientProviderWithConfig } from './context/QueryClientProviderWithConfig';
28
+ export { default as QueryProvider } from './context/QueryClientProviderWithConfig';
30
29
  export * from './hooks/useAdapter';
31
30
  export { default as useAdapter } from './hooks/useAdapter';
32
31
  export * from './hooks/useAuth';
package/dist/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import le from "axios";
2
- import _e, { useMemo as ce, createContext as ve, useContext as O, useEffect as P, useState as L, Suspense as be, useRef as oe, useCallback as A } from "react";
2
+ import _e, { useMemo as ce, createContext as ve, useContext as O, useEffect as P, useState as L, Suspense as be, useRef as q, useCallback as C } from "react";
3
3
  const Xe = (e, t) => {
4
4
  const n = le.CancelToken.source(), o = le({
5
5
  ...e,
@@ -137,15 +137,15 @@ function Te() {
137
137
  }
138
138
  var M = {};
139
139
  var fe;
140
- function Ce() {
140
+ function Ae() {
141
141
  return fe || (fe = 1, process.env.NODE_ENV !== "production" && (function() {
142
142
  function e(r) {
143
143
  if (r == null) return null;
144
144
  if (typeof r == "function")
145
- return r.$$typeof === ee ? null : r.displayName || r.name || null;
145
+ return r.$$typeof === te ? null : r.displayName || r.name || null;
146
146
  if (typeof r == "string") return r;
147
147
  switch (r) {
148
- case C:
148
+ case A:
149
149
  return "Fragment";
150
150
  case d:
151
151
  return "Profiler";
@@ -153,9 +153,9 @@ function Ce() {
153
153
  return "StrictMode";
154
154
  case I:
155
155
  return "Suspense";
156
- case q:
156
+ case X:
157
157
  return "SuspenseList";
158
- case Z:
158
+ case ee:
159
159
  return "Activity";
160
160
  }
161
161
  if (typeof r == "object")
@@ -171,7 +171,7 @@ function Ce() {
171
171
  case S:
172
172
  var f = r.render;
173
173
  return r = r.displayName, r || (r = f.displayName || f.name || "", r = r !== "" ? "ForwardRef(" + r + ")" : "ForwardRef"), r;
174
- case X:
174
+ case Z:
175
175
  return f = r.displayName || null, f !== null ? f : e(r.type) || "Memo";
176
176
  case F:
177
177
  f = r._payload, r = r._init;
@@ -203,7 +203,7 @@ function Ce() {
203
203
  }
204
204
  }
205
205
  function o(r) {
206
- if (r === C) return "<>";
206
+ if (r === A) return "<>";
207
207
  if (typeof r == "object" && r !== null && r.$$typeof === F)
208
208
  return "<...>";
209
209
  try {
@@ -245,7 +245,7 @@ function Ce() {
245
245
  "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
246
246
  )), r = this.props.ref, r !== void 0 ? r : null;
247
247
  }
248
- function p(r, f, _, b, H, re) {
248
+ function p(r, f, _, b, H, ne) {
249
249
  var R = _.ref;
250
250
  return r = {
251
251
  $$typeof: j,
@@ -275,14 +275,14 @@ function Ce() {
275
275
  configurable: !1,
276
276
  enumerable: !1,
277
277
  writable: !0,
278
- value: re
278
+ value: ne
279
279
  }), Object.freeze && (Object.freeze(r.props), Object.freeze(r)), r;
280
280
  }
281
- function i(r, f, _, b, H, re) {
281
+ function i(r, f, _, b, H, ne) {
282
282
  var R = f.children;
283
283
  if (R !== void 0)
284
284
  if (b)
285
- if (te(R)) {
285
+ if (re(R)) {
286
286
  for (b = 0; b < R.length; b++)
287
287
  h(R[b]);
288
288
  Object.freeze && Object.freeze(R);
@@ -311,8 +311,8 @@ React keys must be passed directly to JSX without using spread:
311
311
  }
312
312
  if (R = null, _ !== void 0 && (n(_), R = "" + _), c(f) && (n(f.key), R = "" + f.key), "key" in f) {
313
313
  _ = {};
314
- for (var ne in f)
315
- ne !== "key" && (_[ne] = f[ne]);
314
+ for (var oe in f)
315
+ oe !== "key" && (_[oe] = f[oe]);
316
316
  } else _ = f;
317
317
  return R && l(
318
318
  _,
@@ -323,7 +323,7 @@ React keys must be passed directly to JSX without using spread:
323
323
  _,
324
324
  s(),
325
325
  H,
326
- re
326
+ ne
327
327
  );
328
328
  }
329
329
  function h(r) {
@@ -332,7 +332,7 @@ React keys must be passed directly to JSX without using spread:
332
332
  function g(r) {
333
333
  return typeof r == "object" && r !== null && r.$$typeof === j;
334
334
  }
335
- var v = _e, j = /* @__PURE__ */ Symbol.for("react.transitional.element"), T = /* @__PURE__ */ Symbol.for("react.portal"), C = /* @__PURE__ */ Symbol.for("react.fragment"), m = /* @__PURE__ */ Symbol.for("react.strict_mode"), d = /* @__PURE__ */ Symbol.for("react.profiler"), y = /* @__PURE__ */ Symbol.for("react.consumer"), E = /* @__PURE__ */ Symbol.for("react.context"), S = /* @__PURE__ */ Symbol.for("react.forward_ref"), I = /* @__PURE__ */ Symbol.for("react.suspense"), q = /* @__PURE__ */ Symbol.for("react.suspense_list"), X = /* @__PURE__ */ Symbol.for("react.memo"), F = /* @__PURE__ */ Symbol.for("react.lazy"), Z = /* @__PURE__ */ Symbol.for("react.activity"), ee = /* @__PURE__ */ Symbol.for("react.client.reference"), D = v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, V = Object.prototype.hasOwnProperty, te = Array.isArray, Y = console.createTask ? console.createTask : function() {
335
+ var v = _e, j = /* @__PURE__ */ Symbol.for("react.transitional.element"), T = /* @__PURE__ */ Symbol.for("react.portal"), A = /* @__PURE__ */ Symbol.for("react.fragment"), m = /* @__PURE__ */ Symbol.for("react.strict_mode"), d = /* @__PURE__ */ Symbol.for("react.profiler"), y = /* @__PURE__ */ Symbol.for("react.consumer"), E = /* @__PURE__ */ Symbol.for("react.context"), S = /* @__PURE__ */ Symbol.for("react.forward_ref"), I = /* @__PURE__ */ Symbol.for("react.suspense"), X = /* @__PURE__ */ Symbol.for("react.suspense_list"), Z = /* @__PURE__ */ Symbol.for("react.memo"), F = /* @__PURE__ */ Symbol.for("react.lazy"), ee = /* @__PURE__ */ Symbol.for("react.activity"), te = /* @__PURE__ */ Symbol.for("react.client.reference"), D = v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, V = Object.prototype.hasOwnProperty, re = Array.isArray, Y = console.createTask ? console.createTask : function() {
336
336
  return null;
337
337
  };
338
338
  v = {
@@ -344,7 +344,7 @@ React keys must be passed directly to JSX without using spread:
344
344
  v,
345
345
  a
346
346
  )(), J = Y(o(a)), G = {};
347
- M.Fragment = C, M.jsx = function(r, f, _) {
347
+ M.Fragment = A, M.jsx = function(r, f, _) {
348
348
  var b = 1e4 > D.recentlyCreatedOwnerStacks++;
349
349
  return i(
350
350
  r,
@@ -368,10 +368,10 @@ React keys must be passed directly to JSX without using spread:
368
368
  })()), M;
369
369
  }
370
370
  var pe;
371
- function Ae() {
372
- return pe || (pe = 1, process.env.NODE_ENV === "production" ? B.exports = Te() : B.exports = Ce()), B.exports;
371
+ function Ce() {
372
+ return pe || (pe = 1, process.env.NODE_ENV === "production" ? B.exports = Te() : B.exports = Ae()), B.exports;
373
373
  }
374
- var N = Ae();
374
+ var N = Ce();
375
375
  const Ze = ({ IMaskMixin: e, ...t }) => {
376
376
  const n = ce(
377
377
  // eslint-disable-next-line react/jsx-props-no-spreading
@@ -438,11 +438,11 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
438
438
  return P(() => {
439
439
  (async () => {
440
440
  const c = e || navigator.language?.slice(0, 2) || "en";
441
- s && s.forEach((l) => {
441
+ o.extend(t.localizedFormat), s && s.forEach((l) => {
442
442
  l && o.extend(l);
443
443
  }), await import("dayjs/locale/en"), await import("dayjs/locale/fr"), o.locale(c);
444
444
  })().then();
445
- }, [o, s, e]), null;
445
+ }, [o, s, e, t.localizedFormat]), null;
446
446
  }, ie = "hubspot-messages-iframe-container", z = "hs-show", ot = ({ hubId: e }) => (P(() => {
447
447
  if (!e)
448
448
  return;
@@ -499,7 +499,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
499
499
  throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props.");
500
500
  if (g.isInitialized())
501
501
  return null;
502
- const { createRoutesFromChildren: j, matchRoutes: T, useLocation: C, useNavigationType: m } = v;
502
+ const { createRoutesFromChildren: j, matchRoutes: T, useLocation: A, useNavigationType: m } = v;
503
503
  return (l || process.env.NODE_ENV === "prod" || process.env.NODE_ENV === "production") && g.init({
504
504
  debug: l,
505
505
  dsn: e,
@@ -518,7 +518,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
518
518
  createRoutesFromChildren: j,
519
519
  matchRoutes: T,
520
520
  useEffect: P,
521
- useLocation: C,
521
+ useLocation: A,
522
522
  useNavigationType: m
523
523
  }),
524
524
  ...t || []
@@ -545,7 +545,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
545
545
  const { libraries: a, localStorageKeys: c } = O(x), l = s?.reactRouter || a?.reactRouter, u = s?.axios || a?.axios, p = s?.localStorageKey || c?.user || ke;
546
546
  if (!l)
547
547
  throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props.");
548
- const [i, h] = L(null), { useLocation: g, Navigate: v, Outlet: j } = l, T = g(), C = typeof t == "function" ? t() : !!t, m = typeof C == "boolean" ? C : C?.isLogged;
548
+ const [i, h] = L(null), { useLocation: g, Navigate: v, Outlet: j } = l, T = g(), A = typeof t == "function" ? t() : !!t, m = typeof A == "boolean" ? A : A?.isLogged;
549
549
  return P(() => {
550
550
  he.has(u) || (he.set(u, !0), u.interceptors.response.use(
551
551
  (d) => d,
@@ -634,11 +634,11 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
634
634
  enabled: a = !0,
635
635
  context: c = "client"
636
636
  }) => {
637
- const [l, u] = L(!1), [p, i] = L(!1), [h, g] = L(0), [v, j] = L(a), T = a && v, { apiURL: C, localStorageKeys: m } = O(x), d = m?.user || $e, y = oe(null), E = oe(/* @__PURE__ */ new Set());
637
+ const [l, u] = L(!1), [p, i] = L(!1), [h, g] = L(0), [v, j] = L(a), T = a && v, { apiURL: A, localStorageKeys: m } = O(x), d = m?.user || $e, y = q(null), E = q(/* @__PURE__ */ new Set());
638
638
  P(() => {
639
639
  if (!T)
640
640
  return;
641
- const w = o ?? Fe[c], k = n || (C ? De(C, w) : null);
641
+ const w = o ?? Fe[c], k = n || (A ? De(A, w) : null);
642
642
  if (!k)
643
643
  return;
644
644
  const Q = () => t ?? Ye(d), J = (r) => {
@@ -660,49 +660,44 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
660
660
  return () => {
661
661
  clearTimeout(G), y.current?.disconnect(), y.current = null;
662
662
  };
663
- }, [T, n, o, c, t, s, C, d]);
664
- const S = A((w) => {
663
+ }, [T, n, o, c, t, s, A, d]);
664
+ const S = C((w) => {
665
665
  y.current?.joinThread(w);
666
- }, []), I = A((w) => {
666
+ }, []), I = C((w) => {
667
667
  y.current?.leaveThread(w);
668
- }, []), q = A((w, k) => {
668
+ }, []), X = C((w, k) => {
669
669
  y.current?.sendMessage(w, k);
670
- }, []), X = A((w) => {
670
+ }, []), Z = C((w) => {
671
671
  y.current?.markRead(w);
672
- }, []), F = A((w, k) => {
672
+ }, []), F = C((w, k) => {
673
673
  y.current?.listThreads(w, k);
674
- }, []), Z = A((w = 1) => {
674
+ }, []), ee = C((w = 1) => {
675
675
  g((k) => k + w);
676
- }, []), ee = A((w = 1) => {
676
+ }, []), te = C((w = 1) => {
677
677
  g((k) => Math.max(0, k - w));
678
- }, []), D = A(() => {
678
+ }, []), D = C(() => {
679
679
  y.current?.disconnect(), y.current = null;
680
- }, []), V = A((w) => {
680
+ }, []), V = C((w) => {
681
681
  j(w);
682
- }, []), te = A((w) => (E.current.add(w), () => {
682
+ }, []), re = C((w) => (E.current.add(w), () => {
683
683
  E.current.delete(w);
684
684
  }), []), Y = {
685
- decrementUnreadCount: ee,
685
+ decrementUnreadCount: te,
686
686
  disconnect: D,
687
- incrementUnreadCount: Z,
687
+ incrementUnreadCount: ee,
688
688
  isConnected: l,
689
689
  isReady: p,
690
690
  joinThread: S,
691
691
  leaveThread: I,
692
692
  listThreads: F,
693
- markRead: X,
694
- sendMessage: q,
693
+ markRead: Z,
694
+ sendMessage: X,
695
695
  setEnabled: V,
696
- subscribe: te,
696
+ subscribe: re,
697
697
  unreadCount: h
698
698
  };
699
699
  return /* @__PURE__ */ N.jsx(we.Provider, { value: Y, children: e });
700
- }, Ue = (e) => e && typeof e == "function", Me = (e) => e && typeof e == "function", dt = ({
701
- children: e,
702
- defaultQueriesOptions: t,
703
- defaultMutationsOptions: n,
704
- ...o
705
- }) => {
700
+ }, Ue = (e) => e && typeof e == "function", Me = (e) => e && typeof e == "function", dt = ({ children: e, defaultQueriesOptions: t, defaultMutationsOptions: n, ...o }) => {
706
701
  const { libraries: s } = O(x), a = o?.QueryClient || s?.reactQuery?.QueryClient, c = o?.QueryClientProvider || s?.reactQuery?.QueryClientProvider;
707
702
  if (!a)
708
703
  throw new Error("QueryClient is not provided. You can provide it with InjectDependenciesProvider or directly in props.");
@@ -712,7 +707,8 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
712
707
  throw new Error("Provided QueryClientProvider dependencies are not valid.");
713
708
  if (!Me(a))
714
709
  throw new Error("Provided QueryClient dependencies are not valid.");
715
- const l = new a({
710
+ const l = q(null);
711
+ return l.current || (l.current = new a({
716
712
  defaultOptions: {
717
713
  mutations: {
718
714
  ...n
@@ -724,8 +720,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
724
720
  ...t
725
721
  }
726
722
  }
727
- });
728
- return /* @__PURE__ */ N.jsx(c, { client: l, children: e });
723
+ })), /* @__PURE__ */ N.jsx(c, { client: l.current, children: e });
729
724
  }, ze = ({ library: e, date: t, format: n = "ll" }) => e(t).format(n), We = (e, t) => {
730
725
  const { fractionDigits: n = 0, metric: o = "km", spacingBetween: s = !0 } = t || {}, a = Number(e), c = s ? " " : "";
731
726
  return Number.isNaN(a) ? `0${c}${o}` : `${a.toFixed(n)}${c}${o}`;
@@ -764,7 +759,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
764
759
  const { libraries: t, localStorageKeys: n } = O(x), o = e?.axios || t?.axios, s = e?.localStorageKey || n?.user || "user";
765
760
  if (!o)
766
761
  throw new Error("Axios is not provided. You can provide it with InjectDependenciesProvider or directly in params of useAuth.");
767
- const a = A(
762
+ const a = C(
768
763
  ({ tokenType: l, accessToken: u }) => {
769
764
  o.defaults.headers.common.Authorization = `${l} ${u}`;
770
765
  },
@@ -795,7 +790,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
795
790
  const t = O(we);
796
791
  if (!t)
797
792
  throw new Error("useChat must be used within ChatProvider");
798
- const { subscribe: n, setEnabled: o, ...s } = t, a = oe(e);
793
+ const { subscribe: n, setEnabled: o, ...s } = t, a = q(e);
799
794
  return a.current = e, P(() => {
800
795
  e?.enabled !== void 0 && o(e.enabled);
801
796
  }, [e?.enabled, o]), P(() => n((c) => {
@@ -809,7 +804,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
809
804
  onLeftThread: v,
810
805
  onMarkedRead: j,
811
806
  onThreadArchived: T,
812
- onThreadsList: C
807
+ onThreadsList: A
813
808
  } = a.current ?? {};
814
809
  switch (c.type) {
815
810
  case "ready":
@@ -840,7 +835,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
840
835
  T?.(c);
841
836
  break;
842
837
  case "threads_list":
843
- C?.(c);
838
+ A?.(c);
844
839
  break;
845
840
  }
846
841
  }), [n]), s;
@@ -962,7 +957,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
962
957
  ye()?.classList.remove(z);
963
958
  });
964
959
  }, [e]);
965
- const n = A(() => {
960
+ const n = C(() => {
966
961
  const o = window.HubSpotConversations, s = ye();
967
962
  o && s && (s.classList.contains(z) ? (o.widget.close(), s.classList.remove(z)) : (s.classList.add(z), o.widget.open()));
968
963
  }, []);
@@ -975,7 +970,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
975
970
  isLoading: s,
976
971
  enabled: a = !0
977
972
  }) => {
978
- const c = A(
973
+ const c = C(
979
974
  async (u) => {
980
975
  n || !a || await t({ pageParam: u?.pageParam || u.visibleRowsCount });
981
976
  },
@@ -991,7 +986,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
991
986
  rows: l
992
987
  };
993
988
  }, wt = (e) => {
994
- const { libraries: t } = O(x), n = e?.i18 || t?.i18, o = e?.i18?.translateFunction || t?.i18?.translateFunction, s = n?.i18next?.t || o || ((p) => p), { unknownErrorTranslationKey: a = "error.unknownError" } = e || {}, c = s(a), l = A(
989
+ const { libraries: t } = O(x), n = e?.i18 || t?.i18, o = e?.i18?.translateFunction || t?.i18?.translateFunction, s = n?.i18next?.t || o || ((p) => p), { unknownErrorTranslationKey: a = "error.unknownError" } = e || {}, c = s(a), l = C(
995
990
  (p) => {
996
991
  if (p && typeof p == "object" && "response" in p) {
997
992
  const { response: i } = p || {};
@@ -1014,7 +1009,7 @@ const Ze = ({ IMaskMixin: e, ...t }) => {
1014
1009
  },
1015
1010
  [c]
1016
1011
  );
1017
- return { getErrorCode: A((p) => {
1012
+ return { getErrorCode: C((p) => {
1018
1013
  const { response: i } = p || {};
1019
1014
  return i?.error_code ? String(i?.error_code) : i?.data?.error_code ? String(i?.data?.error_code) : i?.error_code ? String(i?.error_code) : i?.data?.error_code ? String(i.data.error_code) : "unknown_error_code";
1020
1015
  }, []), printError: l };
@@ -1033,7 +1028,7 @@ export {
1033
1028
  et as InjectDependenciesProvider,
1034
1029
  Ze as MaskTextField,
1035
1030
  it as PreloadErrorHandler,
1036
- dt as QueryClientProviderWithConfig,
1031
+ dt as QueryProvider,
1037
1032
  ct as RequireAuth,
1038
1033
  Xe as axiosCustomInstance,
1039
1034
  ze as dateAdapter,
package/dist/main.umd.cjs CHANGED
@@ -1,9 +1,9 @@
1
- (function(g,L){typeof exports=="object"&&typeof module<"u"?L(exports,require("axios"),require("react")):typeof define=="function"&&define.amd?define(["exports","axios","react"],L):(g=typeof globalThis<"u"?globalThis:g||self,L(g["@tracktor/shared-module"]={},g.axios,g.React))})(this,(function(g,L,l){"use strict";const Ee=(e,t)=>{const r=L.CancelToken.source(),o=L({...e,...t,cancelToken:r.token}).then(({data:s})=>s);return o.cancel=()=>{r.cancel("Query was cancelled")},o},X=e=>Array.isArray(e)?e.map(X):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()),X(r)])):e,Z=e=>Array.isArray(e)?e.map(Z):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t.replace(/[A-Z]/g,o=>`_${o.toLowerCase()}`),Z(r)])):e;class ie{url;getToken;onEvent;onConnectionChange;shouldReconnect;maxReconnectAttempts;reconnectBaseDelay;ws=null;reconnectAttempt=0;reconnectTimer=null;intentionalClose=!1;joinedThreads=new Set;pendingMessages=[];_connected=!1;_ready=!1;constructor(t){this.url=t.url,this.getToken=t.getToken,this.onEvent=t.onEvent,this.onConnectionChange=t.onConnectionChange,this.shouldReconnect=t.reconnect??!0,this.maxReconnectAttempts=t.maxReconnectAttempts??Number.POSITIVE_INFINITY,this.reconnectBaseDelay=t.reconnectBaseDelay??1e3}get connected(){return this._connected}get ready(){return this._ready}connect(){const t=this.getToken();if(!t)return;this.intentionalClose=!1;const r=this.url.includes("?")?"&":"?",o=`${this.url}${r}token=${t}`;this.ws=new WebSocket(o),this.ws.onopen=()=>{this._connected=!0,this.reconnectAttempt=0,this.onConnectionChange?.(!0),this.rejoinThreads(),this.flushPendingMessages()},this.ws.onmessage=s=>{try{const a=JSON.parse(s.data),c=X(a);c.type==="ready"&&(this._ready=!0),this.onEvent?.(c)}catch{}},this.ws.onclose=()=>{this._connected=!1,this._ready=!1,this.onConnectionChange?.(!1),!this.intentionalClose&&this.shouldReconnect&&this.reconnectAttempt<this.maxReconnectAttempts&&this.scheduleReconnect()},this.ws.onerror=()=>{}}disconnect(){this.intentionalClose=!0,this.pendingMessages=[],this.clearReconnectTimer(),this.ws&&(this.ws.close(),this.ws=null)}joinThread(t){this.joinedThreads.add(t),this.send({threadId:t,type:"join_thread"})}leaveThread(t){this.joinedThreads.delete(t),this.send({threadId:t,type:"leave_thread"})}sendMessage(t,r){if(r.length>1e3)throw new Error("Message body exceeds maximum length of 1000 characters");this.send({body:r,threadId:t,type:"send_message"})}markRead(t){this.send({threadId:t,type:"mark_read"})}listThreads(t,r){this.send({limit:t,offset:r,type:"list_threads"})}send(t){if(!this.ws||this.ws.readyState!==WebSocket.OPEN){this.pendingMessages.push(t);return}this.ws.send(JSON.stringify(Z(t)))}flushPendingMessages(){const t=[...this.pendingMessages];this.pendingMessages=[];for(const r of t)this.send(r)}rejoinThreads(){for(const t of this.joinedThreads)this.send({threadId:t,type:"join_thread"})}scheduleReconnect(){this.clearReconnectTimer();const t=Math.min(this.reconnectBaseDelay*2**this.reconnectAttempt,3e4);this.reconnectAttempt++,this.reconnectTimer=setTimeout(()=>{this.connect()},t)}clearReconnectTimer(){this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)}}var G={exports:{}},D={};var ce;function ve(){if(ce)return D;ce=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(o,s,a){var c=null;if(a!==void 0&&(c=""+a),s.key!==void 0&&(c=""+s.key),"key"in s){a={};for(var u in s)u!=="key"&&(a[u]=s[u])}else a=s;return s=a.ref,{$$typeof:e,type:o,key:c,ref:s!==void 0?s:null,props:a}}return D.Fragment=t,D.jsx=r,D.jsxs=r,D}var F={};var le;function we(){return le||(le=1,process.env.NODE_ENV!=="production"&&(function(){function e(n){if(n==null)return null;if(typeof n=="function")return n.$$typeof===re?null:n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case k:return"Fragment";case f:return"Profiler";case E:return"StrictMode";case N:return"Suspense";case ee:return"SuspenseList";case ne:return"Activity"}if(typeof n=="object")switch(typeof n.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),n.$$typeof){case A:return"Portal";case b:return n.displayName||"Context";case v:return(n._context.displayName||"Context")+".Consumer";case T:var p=n.render;return n=n.displayName,n||(n=p.displayName||p.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case te:return p=n.displayName||null,p!==null?p:e(n.type)||"Memo";case U:p=n._payload,n=n._init;try{return e(n(p))}catch{}}return null}function t(n){return""+n}function r(n){try{t(n);var p=!1}catch{p=!0}if(p){p=console;var _=p.error,S=typeof Symbol=="function"&&Symbol.toStringTag&&n[Symbol.toStringTag]||n.constructor.name||"Object";return _.call(p,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",S),t(n)}}function o(n){if(n===k)return"<>";if(typeof n=="object"&&n!==null&&n.$$typeof===U)return"<...>";try{var p=e(n);return p?"<"+p+">":"<...>"}catch{return"<...>"}}function s(){var n=z.A;return n===null?null:n.getOwner()}function a(){return Error("react-stack-top-frame")}function c(n){if(H.call(n,"key")){var p=Object.getOwnPropertyDescriptor(n,"key").get;if(p&&p.isReactWarning)return!1}return n.key!==void 0}function u(n,p){function _(){C||(C=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",p))}_.isReactWarning=!0,Object.defineProperty(n,"key",{get:_,configurable:!0})}function d(){var n=e(this.type);return O[n]||(O[n]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),n=this.props.ref,n!==void 0?n:null}function h(n,p,_,S,K,se){var R=_.ref;return n={$$typeof:P,type:n,key:p,props:_,_owner:S},(R!==void 0?R:null)!==null?Object.defineProperty(n,"ref",{enumerable:!1,get:d}):Object.defineProperty(n,"ref",{enumerable:!1,value:null}),n._store={},Object.defineProperty(n._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(n,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(n,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:K}),Object.defineProperty(n,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:se}),Object.freeze&&(Object.freeze(n.props),Object.freeze(n)),n}function i(n,p,_,S,K,se){var R=p.children;if(R!==void 0)if(S)if(oe(R)){for(S=0;S<R.length;S++)m(R[S]);Object.freeze&&Object.freeze(R)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else m(R);if(H.call(p,"key")){R=e(n);var x=Object.keys(p).filter(function(ct){return ct!=="key"});S=0<x.length?"{key: someKey, "+x.join(": ..., ")+": ...}":"{key: someKey}",B[R+S]||(x=0<x.length?"{"+x.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ (function(g,L){typeof exports=="object"&&typeof module<"u"?L(exports,require("axios"),require("react")):typeof define=="function"&&define.amd?define(["exports","axios","react"],L):(g=typeof globalThis<"u"?globalThis:g||self,L(g["@tracktor/shared-module"]={},g.axios,g.React))})(this,(function(g,L,l){"use strict";const Ee=(e,t)=>{const r=L.CancelToken.source(),o=L({...e,...t,cancelToken:r.token}).then(({data:s})=>s);return o.cancel=()=>{r.cancel("Query was cancelled")},o},X=e=>Array.isArray(e)?e.map(X):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()),X(r)])):e,Z=e=>Array.isArray(e)?e.map(Z):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t.replace(/[A-Z]/g,o=>`_${o.toLowerCase()}`),Z(r)])):e;class ie{url;getToken;onEvent;onConnectionChange;shouldReconnect;maxReconnectAttempts;reconnectBaseDelay;ws=null;reconnectAttempt=0;reconnectTimer=null;intentionalClose=!1;joinedThreads=new Set;pendingMessages=[];_connected=!1;_ready=!1;constructor(t){this.url=t.url,this.getToken=t.getToken,this.onEvent=t.onEvent,this.onConnectionChange=t.onConnectionChange,this.shouldReconnect=t.reconnect??!0,this.maxReconnectAttempts=t.maxReconnectAttempts??Number.POSITIVE_INFINITY,this.reconnectBaseDelay=t.reconnectBaseDelay??1e3}get connected(){return this._connected}get ready(){return this._ready}connect(){const t=this.getToken();if(!t)return;this.intentionalClose=!1;const r=this.url.includes("?")?"&":"?",o=`${this.url}${r}token=${t}`;this.ws=new WebSocket(o),this.ws.onopen=()=>{this._connected=!0,this.reconnectAttempt=0,this.onConnectionChange?.(!0),this.rejoinThreads(),this.flushPendingMessages()},this.ws.onmessage=s=>{try{const a=JSON.parse(s.data),c=X(a);c.type==="ready"&&(this._ready=!0),this.onEvent?.(c)}catch{}},this.ws.onclose=()=>{this._connected=!1,this._ready=!1,this.onConnectionChange?.(!1),!this.intentionalClose&&this.shouldReconnect&&this.reconnectAttempt<this.maxReconnectAttempts&&this.scheduleReconnect()},this.ws.onerror=()=>{}}disconnect(){this.intentionalClose=!0,this.pendingMessages=[],this.clearReconnectTimer(),this.ws&&(this.ws.close(),this.ws=null)}joinThread(t){this.joinedThreads.add(t),this.send({threadId:t,type:"join_thread"})}leaveThread(t){this.joinedThreads.delete(t),this.send({threadId:t,type:"leave_thread"})}sendMessage(t,r){if(r.length>1e3)throw new Error("Message body exceeds maximum length of 1000 characters");this.send({body:r,threadId:t,type:"send_message"})}markRead(t){this.send({threadId:t,type:"mark_read"})}listThreads(t,r){this.send({limit:t,offset:r,type:"list_threads"})}send(t){if(!this.ws||this.ws.readyState!==WebSocket.OPEN){this.pendingMessages.push(t);return}this.ws.send(JSON.stringify(Z(t)))}flushPendingMessages(){const t=[...this.pendingMessages];this.pendingMessages=[];for(const r of t)this.send(r)}rejoinThreads(){for(const t of this.joinedThreads)this.send({threadId:t,type:"join_thread"})}scheduleReconnect(){this.clearReconnectTimer();const t=Math.min(this.reconnectBaseDelay*2**this.reconnectAttempt,3e4);this.reconnectAttempt++,this.reconnectTimer=setTimeout(()=>{this.connect()},t)}clearReconnectTimer(){this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)}}var G={exports:{}},F={};var ce;function ve(){if(ce)return F;ce=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(o,s,a){var c=null;if(a!==void 0&&(c=""+a),s.key!==void 0&&(c=""+s.key),"key"in s){a={};for(var u in s)u!=="key"&&(a[u]=s[u])}else a=s;return s=a.ref,{$$typeof:e,type:o,key:c,ref:s!==void 0?s:null,props:a}}return F.Fragment=t,F.jsx=r,F.jsxs=r,F}var D={};var le;function we(){return le||(le=1,process.env.NODE_ENV!=="production"&&(function(){function e(n){if(n==null)return null;if(typeof n=="function")return n.$$typeof===re?null:n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case k:return"Fragment";case f:return"Profiler";case E:return"StrictMode";case N:return"Suspense";case ee:return"SuspenseList";case ne:return"Activity"}if(typeof n=="object")switch(typeof n.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),n.$$typeof){case A:return"Portal";case b:return n.displayName||"Context";case v:return(n._context.displayName||"Context")+".Consumer";case T:var p=n.render;return n=n.displayName,n||(n=p.displayName||p.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case te:return p=n.displayName||null,p!==null?p:e(n.type)||"Memo";case z:p=n._payload,n=n._init;try{return e(n(p))}catch{}}return null}function t(n){return""+n}function r(n){try{t(n);var p=!1}catch{p=!0}if(p){p=console;var _=p.error,S=typeof Symbol=="function"&&Symbol.toStringTag&&n[Symbol.toStringTag]||n.constructor.name||"Object";return _.call(p,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",S),t(n)}}function o(n){if(n===k)return"<>";if(typeof n=="object"&&n!==null&&n.$$typeof===z)return"<...>";try{var p=e(n);return p?"<"+p+">":"<...>"}catch{return"<...>"}}function s(){var n=U.A;return n===null?null:n.getOwner()}function a(){return Error("react-stack-top-frame")}function c(n){if(H.call(n,"key")){var p=Object.getOwnPropertyDescriptor(n,"key").get;if(p&&p.isReactWarning)return!1}return n.key!==void 0}function u(n,p){function _(){C||(C=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",p))}_.isReactWarning=!0,Object.defineProperty(n,"key",{get:_,configurable:!0})}function d(){var n=e(this.type);return O[n]||(O[n]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),n=this.props.ref,n!==void 0?n:null}function h(n,p,_,S,K,se){var R=_.ref;return n={$$typeof:P,type:n,key:p,props:_,_owner:S},(R!==void 0?R:null)!==null?Object.defineProperty(n,"ref",{enumerable:!1,get:d}):Object.defineProperty(n,"ref",{enumerable:!1,value:null}),n._store={},Object.defineProperty(n._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(n,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(n,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:K}),Object.defineProperty(n,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:se}),Object.freeze&&(Object.freeze(n.props),Object.freeze(n)),n}function i(n,p,_,S,K,se){var R=p.children;if(R!==void 0)if(S)if(oe(R)){for(S=0;S<R.length;S++)m(R[S]);Object.freeze&&Object.freeze(R)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else m(R);if(H.call(p,"key")){R=e(n);var x=Object.keys(p).filter(function(ct){return ct!=="key"});S=0<x.length?"{key: someKey, "+x.join(": ..., ")+": ...}":"{key: someKey}",B[R+S]||(x=0<x.length?"{"+x.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
2
2
  let props = %s;
3
3
  <%s {...props} />
4
4
  React keys must be passed directly to JSX without using spread:
5
5
  let props = %s;
6
- <%s key={someKey} {...props} />`,S,R,x,R),B[R+S]=!0)}if(R=null,_!==void 0&&(r(_),R=""+_),c(p)&&(r(p.key),R=""+p.key),"key"in p){_={};for(var ae in p)ae!=="key"&&(_[ae]=p[ae])}else _=p;return R&&u(_,typeof n=="function"?n.displayName||n.name||"Unknown":n),h(n,R,_,s(),K,se)}function m(n){y(n)?n._store&&(n._store.validated=1):typeof n=="object"&&n!==null&&n.$$typeof===U&&(n._payload.status==="fulfilled"?y(n._payload.value)&&n._payload.value._store&&(n._payload.value._store.validated=1):n._store&&(n._store.validated=1))}function y(n){return typeof n=="object"&&n!==null&&n.$$typeof===P}var w=l,P=Symbol.for("react.transitional.element"),A=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),v=Symbol.for("react.consumer"),b=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),ee=Symbol.for("react.suspense_list"),te=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),ne=Symbol.for("react.activity"),re=Symbol.for("react.client.reference"),z=w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,H=Object.prototype.hasOwnProperty,oe=Array.isArray,W=console.createTask?console.createTask:function(){return null};w={react_stack_bottom_frame:function(n){return n()}};var C,O={},Q=w.react_stack_bottom_frame.bind(w,a)(),J=W(o(a)),B={};F.Fragment=k,F.jsx=function(n,p,_){var S=1e4>z.recentlyCreatedOwnerStacks++;return i(n,p,_,!1,S?Error("react-stack-top-frame"):Q,S?W(o(n)):J)},F.jsxs=function(n,p,_){var S=1e4>z.recentlyCreatedOwnerStacks++;return i(n,p,_,!0,S?Error("react-stack-top-frame"):Q,S?W(o(n)):J)}})()),F}var ue;function Ce(){return ue||(ue=1,process.env.NODE_ENV==="production"?G.exports=ve():G.exports=we()),G.exports}var I=Ce();const be=({IMaskMixin:e,...t})=>{const r=l.useMemo(()=>e(({TextField:o,...s})=>I.jsx(o,{...s})),[e]);return I.jsx(r,{...t})},j=l.createContext({}),_e=({children:e,apiURL:t,libraries:r,localStorageKeys:o})=>{const s=l.useMemo(()=>({apiURL:t,libraries:r,localStorageKeys:o}),[t,r,o]);return I.jsx(j.Provider,{value:s,children:e})},Se=({data:e,...t})=>{const{libraries:r}=l.useContext(j),o=t?.reactRouter||r?.reactRouter,s=t?.gtm||r?.gtm;if(!o)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props of GTMSendPageView.");if(!s)throw new Error("GTM is not provided. You can provide it with InjectDependenciesProvider or directly in props of GTMSendPageView.");const{useGoogleTagManager:a}=s,{useLocation:c,Outlet:u}=o,{pathname:d}=c(),{sendEvent:h}=a();return l.useEffect(()=>{h({event:"pageView",pathname:d,...e})},[e,d,h]),I.jsx(u,{})},M=(()=>{try{return typeof global=="object"&&global!==null&&("HermesInternal"in global||"__fbBatchedBridge"in global||"__metro"in global)||typeof window>"u"&&typeof global<"u"?!0:typeof navigator<"u"&&navigator.userAgent?/react.native|ReactNative/i.test(navigator.userAgent):!1}catch{return!1}})(),Re="user",Te=({tokenTypeKey:e="tokenType",tokenKey:t="accessToken",postContentType:r="application/json",...o})=>{const{apiURL:s=o.apiURL,libraries:a,localStorageKeys:c}=l.useContext(j),u=o?.userLocalStorageKey||c?.user||Re,d=o?.axios||a?.axios;if(!d)throw new Error("Axios is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(!d?.defaults||M)return null;if(typeof window<"u"&&window.localStorage){const h=localStorage.getItem(u),i=h?JSON.parse(h):null,m=i?.[e]?i[e]:null,y=i?.[t]?i[t]:null,w=h?`${m} ${y}`:null;w&&(d.defaults.headers.common.Authorization=w)}return d.defaults.baseURL=s,d.defaults.headers.post["Content-Type"]=r,null},Ae=({language:e,...t})=>{const{libraries:r}=l.useContext(j),o=t?.dayjs||r?.dayjs,s=t?.plugin||r?.dayjsPlugin;if(!o)throw new Error("Dayjs is not provided. You can provide it with InjectDependenciesProvider or directly in props of InitializeDaysJSConfig.");return l.useEffect(()=>{(async()=>{const c=e||navigator.language?.slice(0,2)||"en";s&&s.forEach(u=>{u&&o.extend(u)}),await import("dayjs/locale/en"),await import("dayjs/locale/fr"),o.locale(c)})().then()},[o,s,e]),null},q="hubspot-messages-iframe-container",Y="hs-show",ke=({hubId:e})=>(l.useEffect(()=>{if(!e)return;const t=document.createElement("style");t.textContent=`
6
+ <%s key={someKey} {...props} />`,S,R,x,R),B[R+S]=!0)}if(R=null,_!==void 0&&(r(_),R=""+_),c(p)&&(r(p.key),R=""+p.key),"key"in p){_={};for(var ae in p)ae!=="key"&&(_[ae]=p[ae])}else _=p;return R&&u(_,typeof n=="function"?n.displayName||n.name||"Unknown":n),h(n,R,_,s(),K,se)}function m(n){y(n)?n._store&&(n._store.validated=1):typeof n=="object"&&n!==null&&n.$$typeof===z&&(n._payload.status==="fulfilled"?y(n._payload.value)&&n._payload.value._store&&(n._payload.value._store.validated=1):n._store&&(n._store.validated=1))}function y(n){return typeof n=="object"&&n!==null&&n.$$typeof===P}var w=l,P=Symbol.for("react.transitional.element"),A=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),v=Symbol.for("react.consumer"),b=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),ee=Symbol.for("react.suspense_list"),te=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),ne=Symbol.for("react.activity"),re=Symbol.for("react.client.reference"),U=w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,H=Object.prototype.hasOwnProperty,oe=Array.isArray,W=console.createTask?console.createTask:function(){return null};w={react_stack_bottom_frame:function(n){return n()}};var C,O={},Q=w.react_stack_bottom_frame.bind(w,a)(),J=W(o(a)),B={};D.Fragment=k,D.jsx=function(n,p,_){var S=1e4>U.recentlyCreatedOwnerStacks++;return i(n,p,_,!1,S?Error("react-stack-top-frame"):Q,S?W(o(n)):J)},D.jsxs=function(n,p,_){var S=1e4>U.recentlyCreatedOwnerStacks++;return i(n,p,_,!0,S?Error("react-stack-top-frame"):Q,S?W(o(n)):J)}})()),D}var ue;function Ce(){return ue||(ue=1,process.env.NODE_ENV==="production"?G.exports=ve():G.exports=we()),G.exports}var I=Ce();const be=({IMaskMixin:e,...t})=>{const r=l.useMemo(()=>e(({TextField:o,...s})=>I.jsx(o,{...s})),[e]);return I.jsx(r,{...t})},j=l.createContext({}),_e=({children:e,apiURL:t,libraries:r,localStorageKeys:o})=>{const s=l.useMemo(()=>({apiURL:t,libraries:r,localStorageKeys:o}),[t,r,o]);return I.jsx(j.Provider,{value:s,children:e})},Se=({data:e,...t})=>{const{libraries:r}=l.useContext(j),o=t?.reactRouter||r?.reactRouter,s=t?.gtm||r?.gtm;if(!o)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props of GTMSendPageView.");if(!s)throw new Error("GTM is not provided. You can provide it with InjectDependenciesProvider or directly in props of GTMSendPageView.");const{useGoogleTagManager:a}=s,{useLocation:c,Outlet:u}=o,{pathname:d}=c(),{sendEvent:h}=a();return l.useEffect(()=>{h({event:"pageView",pathname:d,...e})},[e,d,h]),I.jsx(u,{})},M=(()=>{try{return typeof global=="object"&&global!==null&&("HermesInternal"in global||"__fbBatchedBridge"in global||"__metro"in global)||typeof window>"u"&&typeof global<"u"?!0:typeof navigator<"u"&&navigator.userAgent?/react.native|ReactNative/i.test(navigator.userAgent):!1}catch{return!1}})(),Re="user",Te=({tokenTypeKey:e="tokenType",tokenKey:t="accessToken",postContentType:r="application/json",...o})=>{const{apiURL:s=o.apiURL,libraries:a,localStorageKeys:c}=l.useContext(j),u=o?.userLocalStorageKey||c?.user||Re,d=o?.axios||a?.axios;if(!d)throw new Error("Axios is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(!d?.defaults||M)return null;if(typeof window<"u"&&window.localStorage){const h=localStorage.getItem(u),i=h?JSON.parse(h):null,m=i?.[e]?i[e]:null,y=i?.[t]?i[t]:null,w=h?`${m} ${y}`:null;w&&(d.defaults.headers.common.Authorization=w)}return d.defaults.baseURL=s,d.defaults.headers.post["Content-Type"]=r,null},Ae=({language:e,...t})=>{const{libraries:r}=l.useContext(j),o=t?.dayjs||r?.dayjs,s=t?.plugin||r?.dayjsPlugin;if(!o)throw new Error("Dayjs is not provided. You can provide it with InjectDependenciesProvider or directly in props of InitializeDaysJSConfig.");return l.useEffect(()=>{(async()=>{const c=e||navigator.language?.slice(0,2)||"en";o.extend(t.localizedFormat),s&&s.forEach(u=>{u&&o.extend(u)}),await import("dayjs/locale/en"),await import("dayjs/locale/fr"),o.locale(c)})().then()},[o,s,e,t.localizedFormat]),null},q="hubspot-messages-iframe-container",Y="hs-show",ke=({hubId:e})=>(l.useEffect(()=>{if(!e)return;const t=document.createElement("style");t.textContent=`
7
7
  div#${q} { display: none !important; }
8
8
  div#${q}.${Y} { display: initial !important; }
9
- `,document.head.appendChild(t);const r=document.createElement("script");return r.id="hs-script-loader",r.src=`//js-eu1.hs-scripts.com/${e}.js`,r.async=!0,r.defer=!0,document.body.appendChild(r),()=>{t.remove(),r.remove()}},[e]),null),je=({debug:e,resources:t,...r})=>{const{libraries:o}=l.useContext(j),s=r?.i18||o?.i18,{i18next:a,initReactI18next:c,languageDetector:u}=s||{};if(M)return null;if(!s)throw new Error("i18 is not provided. You can provide it with InjectDependenciesProvider or directly in props.");return a?.isInitialized||(a.use(u).use(c).init({debug:e,fallbackLng:"en",interpolation:{escapeValue:!1},load:"languageOnly",react:{bindI18n:"languageChanged loaded",useSuspense:!0},resources:t,returnNull:!1}).then(()=>{document.documentElement.lang!==a.resolvedLanguage&&a.resolvedLanguage&&document.documentElement.setAttribute("lang",a.resolvedLanguage)}),a.on("languageChanged",d=>{document.documentElement.setAttribute("lang",d)})),null},Pe=({dsn:e,integrations:t,tracesSampleRate:r,replaysSessionSampleRate:o,replaysOnErrorSampleRate:s,tracePropagationTargets:a,ignoreErrors:c,debug:u,environment:d,release:h,...i})=>{const{libraries:m}=l.useContext(j),y=i?.sentry||m?.sentry,w=i?.reactRouter||m?.reactRouter;if(!y)throw new Error("Sentry is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(!w)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(y.isInitialized())return null;const{createRoutesFromChildren:P,matchRoutes:A,useLocation:k,useNavigationType:E}=w;return(u||process.env.NODE_ENV==="prod"||process.env.NODE_ENV==="production")&&y.init({debug:u,dsn:e,environment:d||"production",ignoreErrors:[...c||[],/dynamically imported module/,/Cannot read properties of undefined \(reading 'default'\)/,/Loading chunk \d+ failed/,/ChunkLoadError/,/Failed to fetch dynamically imported module/,/vite:preloadError/],integrations:[y.reactRouterV6BrowserTracingIntegration({createRoutesFromChildren:P,matchRoutes:A,useEffect:l.useEffect,useLocation:k,useNavigationType:E}),...t||[]],release:h,replaysOnErrorSampleRate:s||1,replaysSessionSampleRate:o||.1,tracePropagationTargets:a,tracesSampleRate:r||1}),null},Oe=()=>(l.useEffect(()=>{if(M)return;const e=t=>{try{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),sessionStorage.getItem("vite:preloadError:reloaded")||(sessionStorage.setItem("vite:preloadError:reloaded","true"),window.location.reload())}catch{}};return window.addEventListener("vite:preloadError",e),()=>{window.removeEventListener("vite:preloadError",e)}},[]),null),de=new WeakMap,Ie="user",Ne=({Fallback:e,isLogged:t,loginPath:r="/login",redirect401Path:o="/login",...s})=>{const{libraries:a,localStorageKeys:c}=l.useContext(j),u=s?.reactRouter||a?.reactRouter,d=s?.axios||a?.axios,h=s?.localStorageKey||c?.user||Ie;if(!u)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props.");const[i,m]=l.useState(null),{useLocation:y,Navigate:w,Outlet:P}=u,A=y(),k=typeof t=="function"?t():!!t,E=typeof k=="boolean"?k:k?.isLogged;return l.useEffect(()=>{de.has(d)||(de.set(d,!0),d.interceptors.response.use(f=>f,f=>(typeof f=="object"&&f&&"response"in f&&f.response&&typeof f.response=="object"&&"status"in f.response&&f.response&&typeof f.response=="object"&&"status"in f.response&&f?.response?.status===401&&(typeof f=="object"&&f&&"config"in f&&f.config&&typeof f.config=="object"&&"headers"in f.config&&f.config.headers&&typeof f.config.headers=="object"&&"Authorization"in f.config.headers&&f.config.headers.Authorization&&(d.defaults.headers.common.Authorization=null,typeof window<"u"&&window.localStorage&&localStorage.removeItem(h)),m(o)),Promise.reject(f))))},[d,h,o]),E&&!i?I.jsx(l.Suspense,{fallback:e,children:A.state?.from?.state&&A.state?.from?.pathname===r?I.jsx(w,{to:A.state.from.state.from.pathname+A.state.from.state.from.search,replace:!0}):I.jsx(P,{})}):I.jsx(w,{to:r+A.search,state:{from:A},replace:!0})},Le=e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),xe=e=>{const t=e.split(/[/\\]/).pop()||"";return t.substring(0,t.lastIndexOf("."))},De=e=>{const o=e.split("/").filter(s=>s.length>0).map(s=>s.replace(/\${([^}]*)}/g,"$1").split(/[_-]/).map(d=>d.charAt(0).toUpperCase()+d.slice(1)).join("")).join("");return o.charAt(0).toLowerCase()+o.slice(1)},Fe=e=>(e.split("/").pop()||e).replace(/\.json$/,"").replace(/^openapi\./,""),Me=(e,t,r,o)=>{const s=De(t),a=Le(r),c=`${s}${a}`;return e&&typeof e=="object"&&"operationId"in e&&o?.includes(String(e.operationId))?`${c}AsQuery`:c},Ye=(e,t)=>{const r={};return e?.forEach(o=>{r[o]={query:{useInfinite:!0,useInfiniteQueryParam:"offset",useQuery:!0}}}),t?.filter(o=>!r[o]).forEach(o=>{r[o]={query:{useQuery:!0}}}),Object.keys(r).length?r:void 0},Ue=e=>(Array.isArray(e)?e:[e]).reduce((r,o)=>{const{output:s,useInfiniteIds:a,useQueryIds:c,input:u="./openapi.json",customAxiosInstancePath:d,overrideApiName:h}=o||{},i=h||Fe(u),m=d||"./node_modules/@tracktor/shared-module/dist/axiosCustomInstance.ts";return{...r,[i]:{input:u,output:{baseUrl:s?.baseUrl,client:"react-query",mode:"tags-split",override:{...(a?.length||c?.length)&&{operations:Ye(a,c)},header:y=>["Generated by orval 🍺",...y.title?[y.title]:[],...y.description?[y.description]:[]],mutator:{name:xe(m),path:m},operationName:(y,w,P)=>Me(y,w,P,c),query:{useQuery:!0}},schemas:s?.schemas||`src/api/${i}/model`,target:s?.target||`src/api/${i}/services/api.ts`,...s}}}},{}),ze="user",We={client:"/v2/threads/ws",supplier:"/v1/threads/ws"},Ge=(e,t)=>{const r=e.startsWith("https")?"wss":"ws",o=e.replace(/^https?:\/\//,"");return`${r}://${o}${t}`},Ve=e=>{try{const t=localStorage.getItem(e);return t?JSON.parse(t)?.accessToken??null:null}catch{return null}},$=l.createContext(null),He=({children:e,token:t,url:r,wsPath:o,reconnect:s=!0,enabled:a=!0,context:c="client"})=>{const[u,d]=l.useState(!1),[h,i]=l.useState(!1),[m,y]=l.useState(0),[w,P]=l.useState(a),A=a&&w,{apiURL:k,localStorageKeys:E}=l.useContext(j),f=E?.user||ze,v=l.useRef(null),b=l.useRef(new Set);l.useEffect(()=>{if(!A)return;const C=o??We[c],O=r||(k?Ge(k,C):null);if(!O)return;const Q=()=>t??Ve(f),J=n=>{n.type==="ready"&&(i(!0),y(n.unreadCount??0));for(const p of b.current)p(n)},B=setTimeout(()=>{const n=new ie({getToken:Q,onConnectionChange:p=>{d(p),p||i(!1)},onEvent:J,reconnect:s,url:O});v.current=n,n.connect()},0);return()=>{clearTimeout(B),v.current?.disconnect(),v.current=null}},[A,r,o,c,t,s,k,f]);const T=l.useCallback(C=>{v.current?.joinThread(C)},[]),N=l.useCallback(C=>{v.current?.leaveThread(C)},[]),ee=l.useCallback((C,O)=>{v.current?.sendMessage(C,O)},[]),te=l.useCallback(C=>{v.current?.markRead(C)},[]),U=l.useCallback((C,O)=>{v.current?.listThreads(C,O)},[]),ne=l.useCallback((C=1)=>{y(O=>O+C)},[]),re=l.useCallback((C=1)=>{y(O=>Math.max(0,O-C))},[]),z=l.useCallback(()=>{v.current?.disconnect(),v.current=null},[]),H=l.useCallback(C=>{P(C)},[]),oe=l.useCallback(C=>(b.current.add(C),()=>{b.current.delete(C)}),[]),W={decrementUnreadCount:re,disconnect:z,incrementUnreadCount:ne,isConnected:u,isReady:h,joinThread:T,leaveThread:N,listThreads:U,markRead:te,sendMessage:ee,setEnabled:H,subscribe:oe,unreadCount:m};return I.jsx($.Provider,{value:W,children:e})},Qe=e=>e&&typeof e=="function",Je=e=>e&&typeof e=="function",Be=({children:e,defaultQueriesOptions:t,defaultMutationsOptions:r,...o})=>{const{libraries:s}=l.useContext(j),a=o?.QueryClient||s?.reactQuery?.QueryClient,c=o?.QueryClientProvider||s?.reactQuery?.QueryClientProvider;if(!a)throw new Error("QueryClient is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(!c)throw new Error("QueryClientProvider is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(!Qe(c))throw new Error("Provided QueryClientProvider dependencies are not valid.");if(!Je(a))throw new Error("Provided QueryClient dependencies are not valid.");const u=new a({defaultOptions:{mutations:{...r},queries:{getNextPageParam:(d,h,i)=>d.length+(i||0),refetchOnWindowFocus:!1,retry:3,...t}}});return I.jsx(c,{client:u,children:e})},fe=({library:e,date:t,format:r="ll"})=>e(t).format(r),pe=(e,t)=>{const{fractionDigits:r=0,metric:o="km",spacingBetween:s=!0}=t||{},a=Number(e),c=s?" ":"";return Number.isNaN(a)?`0${c}${o}`:`${a.toFixed(r)}${c}${o}`},he=e=>!e||typeof e!="string"?"":e.replace(/_/g," ").toLowerCase().split(" ").map(r=>r.length>0?r.charAt(0).toUpperCase()+r.slice(1):r).join(" "),Ke=e=>e?.startsWith("/")?e?.startsWith("/files")?e:`/files${e}`:e?.startsWith("files")?`/${e}`:`/files/${e}`,Xe=({path:e,size:t,apiURL:r})=>{if(!e)return"";const o=Ke(e),s=`${r}${o}`,a=s.match(/\.(jpeg|jpg|png|gif|bmp|webp|svg|avif)$/)!==null;return typeof t=="number"&&a?`${s.replace("/files",`/thumbs/${t}`)}`:s},Ze=e=>{const{apiURL:t,libraries:r}=l.useContext(j),o=e?.dayjs||r?.dayjs;return{dateAdapter:(c,u)=>{if(!o)throw new Error("Dayjs is not provided. You can provide it with InjectDependenciesProvider or directly in props.");return fe({date:c,format:u,library:o})},distanceAdapter:pe,filePathAdapter:(c,u)=>{if(!t)throw new Error("API URL is not provided. You can provide it with InjectDependenciesProvider or directly in props to filePathAdapter.");return typeof c=="string"&&/^https?:\/\//.test(c)?c:Xe({apiURL:t,path:c,size:u})},worksiteNameAdapter:he}},qe=e=>{const{libraries:t,localStorageKeys:r}=l.useContext(j),o=e?.axios||t?.axios,s=e?.localStorageKey||r?.user||"user";if(!o)throw new Error("Axios is not provided. You can provide it with InjectDependenciesProvider or directly in params of useAuth.");const a=l.useCallback(({tokenType:u,accessToken:d})=>{o.defaults.headers.common.Authorization=`${u} ${d}`},[o.defaults.headers.common]),c=()=>{o.defaults.headers.common.Authorization=null};return l.useEffect(()=>{if(M)return;const u=({newValue:d,key:h})=>{if(h===s&&d)try{const{accessToken:i,tokenType:m}=JSON.parse(d);a({accessToken:i,tokenType:m})}catch(i){console.error("Failed to parse newValue from localStorage:",i)}};return window.addEventListener("storage",u),()=>{window.removeEventListener("storage",u)}},[s,a]),{clearAuthenticationToken:c,setAuthenticationToken:a}},$e=e=>{const t=l.useContext($);if(!t)throw new Error("useChat must be used within ChatProvider");const{subscribe:r,setEnabled:o,...s}=t,a=l.useRef(e);return a.current=e,l.useEffect(()=>{e?.enabled!==void 0&&o(e.enabled)},[e?.enabled,o]),l.useEffect(()=>r(c=>{const{onReady:u,onNewMessage:d,onNewMessageNotification:h,onPresence:i,onError:m,onJoinedThread:y,onLeftThread:w,onMarkedRead:P,onThreadArchived:A,onThreadsList:k}=a.current??{};switch(c.type){case"ready":u?.(c);break;case"new_message":d?.(c);break;case"new_message_notification":h?.(c);break;case"presence":i?.(c);break;case"error":m?.(c);break;case"joined_thread":y?.(c);break;case"left_thread":w?.(c);break;case"marked_read":P?.(c);break;case"thread_archived":A?.(c);break;case"threads_list":k?.(c);break}}),[r]),s},V=(e,t)=>t==="short"?e.split("-")[0]:e,et=(e,t="full")=>{const[r,o]=l.useState(()=>{const s=e?.language||navigator.language;return e&&"isInitialized"in e&&e.isInitialized,V(s,t)});return l.useEffect(()=>{e&&"isInitialized"in e&&e.isInitialized&&e.language&&o(V(e.language,t));const s=a=>{o(V(a,t))};return e?.on?.("languageChanged",s),()=>{e?.off?.("languageChanged",s)}},[e,t]),r},tt="tracktor.filter",nt={getFilter:()=>{},getFilters:()=>({}),handleFilter:()=>()=>{},setFilter:()=>{}},ge=e=>{try{return JSON.parse(e)}catch{return e}},me=(e,t,r)=>`${r}_${e}=>${t}`,rt=e=>e.reduce((t,r)=>{const o=localStorage.getItem(r);if(o)try{const s=JSON.parse(o),a=Object.keys(s)?.[0];a&&(t[a]=Object.values(s)?.[0])}catch{}return t},{}),ot=e=>{const{libraries:t,localStorageKeys:r}=l.useContext(j),o=e?.reactRouter||t?.reactRouter,{pathname:s}=o?.useLocation?.()??{pathname:"/"},[a,c]=o?.useSearchParams?.()??[new URLSearchParams,()=>{}],[u,d]=l.useState({}),h=r?.filter||tt,i=e?.syncWithUrl===void 0?!0:e?.syncWithUrl,m=e?.persistToLocalStorage===void 0?!0:e?.persistToLocalStorage;if(M)return nt;if(!o)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props of reactRouter.");const y=()=>Object.keys(localStorage).filter(E=>E.startsWith(h)&&E.endsWith(e?.pathname||s)),w=(E,f,v=!0)=>{const b=me(E,e?.pathname||s,h);if(!f||Array.isArray(f)&&!f.length){i?(a.delete(E),c(a)):d(T=>{const N={...T};return delete N[E],N}),m&&localStorage.removeItem(b);return}m&&v&&f&&localStorage.setItem(b,JSON.stringify({...a,[E]:f})),i&&f?(a.set(E,JSON.stringify(f)),c(a)):!i&&f&&d(T=>({...T,[E]:f}))};return{getFilter:(E,f)=>{if(i){const v=a.get(E);if(v)return ge(v)}else{const v=u[E];if(v!==void 0)return v}if(m){const v=me(E,e?.pathname||s,h),b=localStorage.getItem(v);if(b)try{const T=JSON.parse(b)[E];return!i&&T!==void 0&&d(N=>({...N,[E]:T})),T}catch{}}return f},getFilters:()=>{const E=m?rt(y()):{};if(i){const f=Array.from(a.entries()).reduce((v,[b,T])=>(v[b]=ge(T),v),{});return{...E,...f}}return{...E,...u}},handleFilter:(E,f)=>(v,b)=>{if(b||Array.isArray(b)&&b.length===0){const T=f||"value",N=typeof b=="object"&&T in b?b[T]:b;w(E,N);return}w(E,void 0)},setFilter:w}},ye=()=>document.getElementById(q),st=()=>{const[e,t]=l.useState(()=>!!window.HubSpotConversations);l.useEffect(()=>{if(window.HubSpotConversations){t(!0);return}window.hsConversationsOnReady=[()=>t(!0)]},[]),l.useEffect(()=>{e&&window.HubSpotConversations?.on("widgetClosed",()=>{ye()?.classList.remove(Y)})},[e]);const r=l.useCallback(()=>{const o=window.HubSpotConversations,s=ye();o&&s&&(s.classList.contains(Y)?(o.widget.close(),s.classList.remove(Y)):(s.classList.add(Y),o.widget.open()))},[]);return{isAvailable:e,toggle:r}},at=({data:e,fetchNextPage:t,isFetchingNextPage:r,isInitialLoading:o,isLoading:s,enabled:a=!0})=>{const c=l.useCallback(async d=>{r||!a||await t({pageParam:d?.pageParam||d.visibleRowsCount})},[a,t,r]),u=l.useMemo(()=>{if(e)return e.pages.reduce((d,h)=>[...d,...h],[])},[e]);return{fetchNextPageOnRowsScrollEnd:c,isLoading:r||s,loadingVariant:o?"skeleton":"linear-progress",rows:u}},it=e=>{const{libraries:t}=l.useContext(j),r=e?.i18||t?.i18,o=e?.i18?.translateFunction||t?.i18?.translateFunction,s=r?.i18next?.t||o||(h=>h),{unknownErrorTranslationKey:a="error.unknownError"}=e||{},c=s(a),u=l.useCallback(h=>{if(h&&typeof h=="object"&&"response"in h){const{response:i}=h||{};if(i&&typeof i=="object"&&"reason"in i&&i.reason)return String(i.reason);if(i&&typeof i=="object"&&"data"in i&&i.data&&typeof i.data=="object"&&"reason"in i.data&&i.data.reason)return String(i.data.reason);if(i&&typeof i=="object"&&"data"in i&&i.data&&typeof i.data=="object"&&"message"in i.data&&i.data.message)return String(i.data.message);if(i&&typeof i=="object"&&"data"in i&&i.data&&typeof i.data=="object"&&"detail"in i.data){const{detail:m}=i.data;if(Array.isArray(m)&&m.length>0&&typeof m[0]=="object"&&m[0]!==null&&"msg"in m[0]){const{msg:y}=m[0];if(typeof y=="string")return String(y)}}}return h instanceof Error?h.message:c},[c]);return{getErrorCode:l.useCallback(h=>{const{response:i}=h||{};return i?.error_code?String(i?.error_code):i?.data?.error_code?String(i?.data?.error_code):i?.error_code?String(i?.error_code):i?.data?.error_code?String(i.data.error_code):"unknown_error_code"},[]),printError:u}};g.ChatClient=ie,g.ChatContext=$,g.ChatProvider=He,g.GTMSendPageView=Se,g.InitializeAxiosConfig=Te,g.InitializeDaysJSConfig=Ae,g.InitializeHubSpot=ke,g.InitializeI18nConfig=je,g.InitializeSentryConfig=Pe,g.InjectDependenciesContext=j,g.InjectDependenciesProvider=_e,g.MaskTextField=be,g.PreloadErrorHandler=Oe,g.QueryClientProviderWithConfig=Be,g.RequireAuth=Ne,g.axiosCustomInstance=Ee,g.dateAdapter=fe,g.distanceAdapter=pe,g.getOrvalConfig=Ue,g.useAdapter=Ze,g.useAuth=qe,g.useChat=$e,g.useCurrentLanguage=et,g.useFilters=ot,g.useHubSpot=st,g.useInfiniteDataGrid=at,g.useResponseError=it,g.worksiteNameAdapter=he,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})}));
9
+ `,document.head.appendChild(t);const r=document.createElement("script");return r.id="hs-script-loader",r.src=`//js-eu1.hs-scripts.com/${e}.js`,r.async=!0,r.defer=!0,document.body.appendChild(r),()=>{t.remove(),r.remove()}},[e]),null),je=({debug:e,resources:t,...r})=>{const{libraries:o}=l.useContext(j),s=r?.i18||o?.i18,{i18next:a,initReactI18next:c,languageDetector:u}=s||{};if(M)return null;if(!s)throw new Error("i18 is not provided. You can provide it with InjectDependenciesProvider or directly in props.");return a?.isInitialized||(a.use(u).use(c).init({debug:e,fallbackLng:"en",interpolation:{escapeValue:!1},load:"languageOnly",react:{bindI18n:"languageChanged loaded",useSuspense:!0},resources:t,returnNull:!1}).then(()=>{document.documentElement.lang!==a.resolvedLanguage&&a.resolvedLanguage&&document.documentElement.setAttribute("lang",a.resolvedLanguage)}),a.on("languageChanged",d=>{document.documentElement.setAttribute("lang",d)})),null},Pe=({dsn:e,integrations:t,tracesSampleRate:r,replaysSessionSampleRate:o,replaysOnErrorSampleRate:s,tracePropagationTargets:a,ignoreErrors:c,debug:u,environment:d,release:h,...i})=>{const{libraries:m}=l.useContext(j),y=i?.sentry||m?.sentry,w=i?.reactRouter||m?.reactRouter;if(!y)throw new Error("Sentry is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(!w)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(y.isInitialized())return null;const{createRoutesFromChildren:P,matchRoutes:A,useLocation:k,useNavigationType:E}=w;return(u||process.env.NODE_ENV==="prod"||process.env.NODE_ENV==="production")&&y.init({debug:u,dsn:e,environment:d||"production",ignoreErrors:[...c||[],/dynamically imported module/,/Cannot read properties of undefined \(reading 'default'\)/,/Loading chunk \d+ failed/,/ChunkLoadError/,/Failed to fetch dynamically imported module/,/vite:preloadError/],integrations:[y.reactRouterV6BrowserTracingIntegration({createRoutesFromChildren:P,matchRoutes:A,useEffect:l.useEffect,useLocation:k,useNavigationType:E}),...t||[]],release:h,replaysOnErrorSampleRate:s||1,replaysSessionSampleRate:o||.1,tracePropagationTargets:a,tracesSampleRate:r||1}),null},Oe=()=>(l.useEffect(()=>{if(M)return;const e=t=>{try{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),sessionStorage.getItem("vite:preloadError:reloaded")||(sessionStorage.setItem("vite:preloadError:reloaded","true"),window.location.reload())}catch{}};return window.addEventListener("vite:preloadError",e),()=>{window.removeEventListener("vite:preloadError",e)}},[]),null),de=new WeakMap,Ie="user",Ne=({Fallback:e,isLogged:t,loginPath:r="/login",redirect401Path:o="/login",...s})=>{const{libraries:a,localStorageKeys:c}=l.useContext(j),u=s?.reactRouter||a?.reactRouter,d=s?.axios||a?.axios,h=s?.localStorageKey||c?.user||Ie;if(!u)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props.");const[i,m]=l.useState(null),{useLocation:y,Navigate:w,Outlet:P}=u,A=y(),k=typeof t=="function"?t():!!t,E=typeof k=="boolean"?k:k?.isLogged;return l.useEffect(()=>{de.has(d)||(de.set(d,!0),d.interceptors.response.use(f=>f,f=>(typeof f=="object"&&f&&"response"in f&&f.response&&typeof f.response=="object"&&"status"in f.response&&f.response&&typeof f.response=="object"&&"status"in f.response&&f?.response?.status===401&&(typeof f=="object"&&f&&"config"in f&&f.config&&typeof f.config=="object"&&"headers"in f.config&&f.config.headers&&typeof f.config.headers=="object"&&"Authorization"in f.config.headers&&f.config.headers.Authorization&&(d.defaults.headers.common.Authorization=null,typeof window<"u"&&window.localStorage&&localStorage.removeItem(h)),m(o)),Promise.reject(f))))},[d,h,o]),E&&!i?I.jsx(l.Suspense,{fallback:e,children:A.state?.from?.state&&A.state?.from?.pathname===r?I.jsx(w,{to:A.state.from.state.from.pathname+A.state.from.state.from.search,replace:!0}):I.jsx(P,{})}):I.jsx(w,{to:r+A.search,state:{from:A},replace:!0})},Le=e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),xe=e=>{const t=e.split(/[/\\]/).pop()||"";return t.substring(0,t.lastIndexOf("."))},Fe=e=>{const o=e.split("/").filter(s=>s.length>0).map(s=>s.replace(/\${([^}]*)}/g,"$1").split(/[_-]/).map(d=>d.charAt(0).toUpperCase()+d.slice(1)).join("")).join("");return o.charAt(0).toLowerCase()+o.slice(1)},De=e=>(e.split("/").pop()||e).replace(/\.json$/,"").replace(/^openapi\./,""),Me=(e,t,r,o)=>{const s=Fe(t),a=Le(r),c=`${s}${a}`;return e&&typeof e=="object"&&"operationId"in e&&o?.includes(String(e.operationId))?`${c}AsQuery`:c},Ye=(e,t)=>{const r={};return e?.forEach(o=>{r[o]={query:{useInfinite:!0,useInfiniteQueryParam:"offset",useQuery:!0}}}),t?.filter(o=>!r[o]).forEach(o=>{r[o]={query:{useQuery:!0}}}),Object.keys(r).length?r:void 0},ze=e=>(Array.isArray(e)?e:[e]).reduce((r,o)=>{const{output:s,useInfiniteIds:a,useQueryIds:c,input:u="./openapi.json",customAxiosInstancePath:d,overrideApiName:h}=o||{},i=h||De(u),m=d||"./node_modules/@tracktor/shared-module/dist/axiosCustomInstance.ts";return{...r,[i]:{input:u,output:{baseUrl:s?.baseUrl,client:"react-query",mode:"tags-split",override:{...(a?.length||c?.length)&&{operations:Ye(a,c)},header:y=>["Generated by orval 🍺",...y.title?[y.title]:[],...y.description?[y.description]:[]],mutator:{name:xe(m),path:m},operationName:(y,w,P)=>Me(y,w,P,c),query:{useQuery:!0}},schemas:s?.schemas||`src/api/${i}/model`,target:s?.target||`src/api/${i}/services/api.ts`,...s}}}},{}),Ue="user",We={client:"/v2/threads/ws",supplier:"/v1/threads/ws"},Ge=(e,t)=>{const r=e.startsWith("https")?"wss":"ws",o=e.replace(/^https?:\/\//,"");return`${r}://${o}${t}`},Ve=e=>{try{const t=localStorage.getItem(e);return t?JSON.parse(t)?.accessToken??null:null}catch{return null}},$=l.createContext(null),He=({children:e,token:t,url:r,wsPath:o,reconnect:s=!0,enabled:a=!0,context:c="client"})=>{const[u,d]=l.useState(!1),[h,i]=l.useState(!1),[m,y]=l.useState(0),[w,P]=l.useState(a),A=a&&w,{apiURL:k,localStorageKeys:E}=l.useContext(j),f=E?.user||Ue,v=l.useRef(null),b=l.useRef(new Set);l.useEffect(()=>{if(!A)return;const C=o??We[c],O=r||(k?Ge(k,C):null);if(!O)return;const Q=()=>t??Ve(f),J=n=>{n.type==="ready"&&(i(!0),y(n.unreadCount??0));for(const p of b.current)p(n)},B=setTimeout(()=>{const n=new ie({getToken:Q,onConnectionChange:p=>{d(p),p||i(!1)},onEvent:J,reconnect:s,url:O});v.current=n,n.connect()},0);return()=>{clearTimeout(B),v.current?.disconnect(),v.current=null}},[A,r,o,c,t,s,k,f]);const T=l.useCallback(C=>{v.current?.joinThread(C)},[]),N=l.useCallback(C=>{v.current?.leaveThread(C)},[]),ee=l.useCallback((C,O)=>{v.current?.sendMessage(C,O)},[]),te=l.useCallback(C=>{v.current?.markRead(C)},[]),z=l.useCallback((C,O)=>{v.current?.listThreads(C,O)},[]),ne=l.useCallback((C=1)=>{y(O=>O+C)},[]),re=l.useCallback((C=1)=>{y(O=>Math.max(0,O-C))},[]),U=l.useCallback(()=>{v.current?.disconnect(),v.current=null},[]),H=l.useCallback(C=>{P(C)},[]),oe=l.useCallback(C=>(b.current.add(C),()=>{b.current.delete(C)}),[]),W={decrementUnreadCount:re,disconnect:U,incrementUnreadCount:ne,isConnected:u,isReady:h,joinThread:T,leaveThread:N,listThreads:z,markRead:te,sendMessage:ee,setEnabled:H,subscribe:oe,unreadCount:m};return I.jsx($.Provider,{value:W,children:e})},Qe=e=>e&&typeof e=="function",Je=e=>e&&typeof e=="function",Be=({children:e,defaultQueriesOptions:t,defaultMutationsOptions:r,...o})=>{const{libraries:s}=l.useContext(j),a=o?.QueryClient||s?.reactQuery?.QueryClient,c=o?.QueryClientProvider||s?.reactQuery?.QueryClientProvider;if(!a)throw new Error("QueryClient is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(!c)throw new Error("QueryClientProvider is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(!Qe(c))throw new Error("Provided QueryClientProvider dependencies are not valid.");if(!Je(a))throw new Error("Provided QueryClient dependencies are not valid.");const u=l.useRef(null);return u.current||(u.current=new a({defaultOptions:{mutations:{...r},queries:{getNextPageParam:(d,h,i)=>d.length+(i||0),refetchOnWindowFocus:!1,retry:3,...t}}})),I.jsx(c,{client:u.current,children:e})},fe=({library:e,date:t,format:r="ll"})=>e(t).format(r),pe=(e,t)=>{const{fractionDigits:r=0,metric:o="km",spacingBetween:s=!0}=t||{},a=Number(e),c=s?" ":"";return Number.isNaN(a)?`0${c}${o}`:`${a.toFixed(r)}${c}${o}`},he=e=>!e||typeof e!="string"?"":e.replace(/_/g," ").toLowerCase().split(" ").map(r=>r.length>0?r.charAt(0).toUpperCase()+r.slice(1):r).join(" "),Ke=e=>e?.startsWith("/")?e?.startsWith("/files")?e:`/files${e}`:e?.startsWith("files")?`/${e}`:`/files/${e}`,Xe=({path:e,size:t,apiURL:r})=>{if(!e)return"";const o=Ke(e),s=`${r}${o}`,a=s.match(/\.(jpeg|jpg|png|gif|bmp|webp|svg|avif)$/)!==null;return typeof t=="number"&&a?`${s.replace("/files",`/thumbs/${t}`)}`:s},Ze=e=>{const{apiURL:t,libraries:r}=l.useContext(j),o=e?.dayjs||r?.dayjs;return{dateAdapter:(c,u)=>{if(!o)throw new Error("Dayjs is not provided. You can provide it with InjectDependenciesProvider or directly in props.");return fe({date:c,format:u,library:o})},distanceAdapter:pe,filePathAdapter:(c,u)=>{if(!t)throw new Error("API URL is not provided. You can provide it with InjectDependenciesProvider or directly in props to filePathAdapter.");return typeof c=="string"&&/^https?:\/\//.test(c)?c:Xe({apiURL:t,path:c,size:u})},worksiteNameAdapter:he}},qe=e=>{const{libraries:t,localStorageKeys:r}=l.useContext(j),o=e?.axios||t?.axios,s=e?.localStorageKey||r?.user||"user";if(!o)throw new Error("Axios is not provided. You can provide it with InjectDependenciesProvider or directly in params of useAuth.");const a=l.useCallback(({tokenType:u,accessToken:d})=>{o.defaults.headers.common.Authorization=`${u} ${d}`},[o.defaults.headers.common]),c=()=>{o.defaults.headers.common.Authorization=null};return l.useEffect(()=>{if(M)return;const u=({newValue:d,key:h})=>{if(h===s&&d)try{const{accessToken:i,tokenType:m}=JSON.parse(d);a({accessToken:i,tokenType:m})}catch(i){console.error("Failed to parse newValue from localStorage:",i)}};return window.addEventListener("storage",u),()=>{window.removeEventListener("storage",u)}},[s,a]),{clearAuthenticationToken:c,setAuthenticationToken:a}},$e=e=>{const t=l.useContext($);if(!t)throw new Error("useChat must be used within ChatProvider");const{subscribe:r,setEnabled:o,...s}=t,a=l.useRef(e);return a.current=e,l.useEffect(()=>{e?.enabled!==void 0&&o(e.enabled)},[e?.enabled,o]),l.useEffect(()=>r(c=>{const{onReady:u,onNewMessage:d,onNewMessageNotification:h,onPresence:i,onError:m,onJoinedThread:y,onLeftThread:w,onMarkedRead:P,onThreadArchived:A,onThreadsList:k}=a.current??{};switch(c.type){case"ready":u?.(c);break;case"new_message":d?.(c);break;case"new_message_notification":h?.(c);break;case"presence":i?.(c);break;case"error":m?.(c);break;case"joined_thread":y?.(c);break;case"left_thread":w?.(c);break;case"marked_read":P?.(c);break;case"thread_archived":A?.(c);break;case"threads_list":k?.(c);break}}),[r]),s},V=(e,t)=>t==="short"?e.split("-")[0]:e,et=(e,t="full")=>{const[r,o]=l.useState(()=>{const s=e?.language||navigator.language;return e&&"isInitialized"in e&&e.isInitialized,V(s,t)});return l.useEffect(()=>{e&&"isInitialized"in e&&e.isInitialized&&e.language&&o(V(e.language,t));const s=a=>{o(V(a,t))};return e?.on?.("languageChanged",s),()=>{e?.off?.("languageChanged",s)}},[e,t]),r},tt="tracktor.filter",nt={getFilter:()=>{},getFilters:()=>({}),handleFilter:()=>()=>{},setFilter:()=>{}},ge=e=>{try{return JSON.parse(e)}catch{return e}},me=(e,t,r)=>`${r}_${e}=>${t}`,rt=e=>e.reduce((t,r)=>{const o=localStorage.getItem(r);if(o)try{const s=JSON.parse(o),a=Object.keys(s)?.[0];a&&(t[a]=Object.values(s)?.[0])}catch{}return t},{}),ot=e=>{const{libraries:t,localStorageKeys:r}=l.useContext(j),o=e?.reactRouter||t?.reactRouter,{pathname:s}=o?.useLocation?.()??{pathname:"/"},[a,c]=o?.useSearchParams?.()??[new URLSearchParams,()=>{}],[u,d]=l.useState({}),h=r?.filter||tt,i=e?.syncWithUrl===void 0?!0:e?.syncWithUrl,m=e?.persistToLocalStorage===void 0?!0:e?.persistToLocalStorage;if(M)return nt;if(!o)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props of reactRouter.");const y=()=>Object.keys(localStorage).filter(E=>E.startsWith(h)&&E.endsWith(e?.pathname||s)),w=(E,f,v=!0)=>{const b=me(E,e?.pathname||s,h);if(!f||Array.isArray(f)&&!f.length){i?(a.delete(E),c(a)):d(T=>{const N={...T};return delete N[E],N}),m&&localStorage.removeItem(b);return}m&&v&&f&&localStorage.setItem(b,JSON.stringify({...a,[E]:f})),i&&f?(a.set(E,JSON.stringify(f)),c(a)):!i&&f&&d(T=>({...T,[E]:f}))};return{getFilter:(E,f)=>{if(i){const v=a.get(E);if(v)return ge(v)}else{const v=u[E];if(v!==void 0)return v}if(m){const v=me(E,e?.pathname||s,h),b=localStorage.getItem(v);if(b)try{const T=JSON.parse(b)[E];return!i&&T!==void 0&&d(N=>({...N,[E]:T})),T}catch{}}return f},getFilters:()=>{const E=m?rt(y()):{};if(i){const f=Array.from(a.entries()).reduce((v,[b,T])=>(v[b]=ge(T),v),{});return{...E,...f}}return{...E,...u}},handleFilter:(E,f)=>(v,b)=>{if(b||Array.isArray(b)&&b.length===0){const T=f||"value",N=typeof b=="object"&&T in b?b[T]:b;w(E,N);return}w(E,void 0)},setFilter:w}},ye=()=>document.getElementById(q),st=()=>{const[e,t]=l.useState(()=>!!window.HubSpotConversations);l.useEffect(()=>{if(window.HubSpotConversations){t(!0);return}window.hsConversationsOnReady=[()=>t(!0)]},[]),l.useEffect(()=>{e&&window.HubSpotConversations?.on("widgetClosed",()=>{ye()?.classList.remove(Y)})},[e]);const r=l.useCallback(()=>{const o=window.HubSpotConversations,s=ye();o&&s&&(s.classList.contains(Y)?(o.widget.close(),s.classList.remove(Y)):(s.classList.add(Y),o.widget.open()))},[]);return{isAvailable:e,toggle:r}},at=({data:e,fetchNextPage:t,isFetchingNextPage:r,isInitialLoading:o,isLoading:s,enabled:a=!0})=>{const c=l.useCallback(async d=>{r||!a||await t({pageParam:d?.pageParam||d.visibleRowsCount})},[a,t,r]),u=l.useMemo(()=>{if(e)return e.pages.reduce((d,h)=>[...d,...h],[])},[e]);return{fetchNextPageOnRowsScrollEnd:c,isLoading:r||s,loadingVariant:o?"skeleton":"linear-progress",rows:u}},it=e=>{const{libraries:t}=l.useContext(j),r=e?.i18||t?.i18,o=e?.i18?.translateFunction||t?.i18?.translateFunction,s=r?.i18next?.t||o||(h=>h),{unknownErrorTranslationKey:a="error.unknownError"}=e||{},c=s(a),u=l.useCallback(h=>{if(h&&typeof h=="object"&&"response"in h){const{response:i}=h||{};if(i&&typeof i=="object"&&"reason"in i&&i.reason)return String(i.reason);if(i&&typeof i=="object"&&"data"in i&&i.data&&typeof i.data=="object"&&"reason"in i.data&&i.data.reason)return String(i.data.reason);if(i&&typeof i=="object"&&"data"in i&&i.data&&typeof i.data=="object"&&"message"in i.data&&i.data.message)return String(i.data.message);if(i&&typeof i=="object"&&"data"in i&&i.data&&typeof i.data=="object"&&"detail"in i.data){const{detail:m}=i.data;if(Array.isArray(m)&&m.length>0&&typeof m[0]=="object"&&m[0]!==null&&"msg"in m[0]){const{msg:y}=m[0];if(typeof y=="string")return String(y)}}}return h instanceof Error?h.message:c},[c]);return{getErrorCode:l.useCallback(h=>{const{response:i}=h||{};return i?.error_code?String(i?.error_code):i?.data?.error_code?String(i?.data?.error_code):i?.error_code?String(i?.error_code):i?.data?.error_code?String(i.data.error_code):"unknown_error_code"},[]),printError:u}};g.ChatClient=ie,g.ChatContext=$,g.ChatProvider=He,g.GTMSendPageView=Se,g.InitializeAxiosConfig=Te,g.InitializeDaysJSConfig=Ae,g.InitializeHubSpot=ke,g.InitializeI18nConfig=je,g.InitializeSentryConfig=Pe,g.InjectDependenciesContext=j,g.InjectDependenciesProvider=_e,g.MaskTextField=be,g.PreloadErrorHandler=Oe,g.QueryProvider=Be,g.RequireAuth=Ne,g.axiosCustomInstance=Ee,g.dateAdapter=fe,g.distanceAdapter=pe,g.getOrvalConfig=ze,g.useAdapter=Ze,g.useAuth=qe,g.useChat=$e,g.useCurrentLanguage=et,g.useFilters=ot,g.useHubSpot=st,g.useInfiniteDataGrid=at,g.useResponseError=it,g.worksiteNameAdapter=he,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tracktor/shared-module",
3
- "version": "2.34.1",
3
+ "version": "2.36.0",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "types": "./dist/main.d.ts",