@tracktor/shared-module 2.26.3 → 2.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,8 @@ export interface ChatContextValue {
11
11
  isConnected: boolean;
12
12
  isReady: boolean;
13
13
  unreadCount: number;
14
+ incrementUnreadCount: (amount?: number) => void;
15
+ decrementUnreadCount: (amount?: number) => void;
14
16
  subscribe: (callback: EventListener) => () => void;
15
17
  joinThread: (threadId: string) => void;
16
18
  leaveThread: (threadId: string) => void;
package/dist/main.js CHANGED
@@ -1,7 +1,7 @@
1
- import ae from "axios";
2
- import we, { useMemo as Z, createContext as he, useContext as C, useEffect as N, useState as D, Suspense as Ee, useRef as B, useCallback as O } from "react";
1
+ import ie from "axios";
2
+ import we, { useMemo as te, createContext as ge, useContext as C, useEffect as L, useState as D, Suspense as Ee, useRef as X, useCallback as P } from "react";
3
3
  const Ke = (e, t) => {
4
- const n = ae.CancelToken.source(), s = ae({
4
+ const n = ie.CancelToken.source(), s = ie({
5
5
  ...e,
6
6
  ...t,
7
7
  cancelToken: n.token
@@ -9,15 +9,15 @@ const Ke = (e, t) => {
9
9
  return s.cancel = () => {
10
10
  n.cancel("Query was cancelled");
11
11
  }, s;
12
- }, ve = 3e4, ie = 1e3, H = (e) => Array.isArray(e) ? e.map(H) : e !== null && typeof e == "object" ? Object.fromEntries(
12
+ }, ve = 3e4, ce = 1e3, Z = (e) => Array.isArray(e) ? e.map(Z) : e !== null && typeof e == "object" ? Object.fromEntries(
13
13
  Object.entries(e).map(([t, n]) => [
14
14
  t.replace(/_([a-z])/g, (s, o) => o.toUpperCase()),
15
- H(n)
15
+ Z(n)
16
16
  ])
17
- ) : e, X = (e) => Array.isArray(e) ? e.map(X) : e !== null && typeof e == "object" ? Object.fromEntries(
17
+ ) : e, ee = (e) => Array.isArray(e) ? e.map(ee) : e !== null && typeof e == "object" ? Object.fromEntries(
18
18
  Object.entries(e).map(([t, n]) => [
19
19
  t.replace(/[A-Z]/g, (s) => `_${s.toLowerCase()}`),
20
- X(n)
20
+ ee(n)
21
21
  ])
22
22
  ) : e;
23
23
  class _e {
@@ -55,7 +55,7 @@ class _e {
55
55
  this._connected = !0, this.reconnectAttempt = 0, this.onConnectionChange?.(!0), this.rejoinThreads(), this.flushPendingMessages();
56
56
  }, this.ws.onmessage = (o) => {
57
57
  try {
58
- const a = JSON.parse(o.data), c = H(a);
58
+ const a = JSON.parse(o.data), c = Z(a);
59
59
  c.type === "ready" && (this._ready = !0), this.onEvent?.(c);
60
60
  } catch {
61
61
  }
@@ -74,8 +74,8 @@ class _e {
74
74
  this.joinedThreads.delete(t), this.send({ threadId: t, type: "leave_thread" });
75
75
  }
76
76
  sendMessage(t, n) {
77
- if (n.length > ie)
78
- throw new Error(`Message body exceeds maximum length of ${ie} characters`);
77
+ if (n.length > ce)
78
+ throw new Error(`Message body exceeds maximum length of ${ce} characters`);
79
79
  this.send({ body: n, threadId: t, type: "send_message" });
80
80
  }
81
81
  markRead(t) {
@@ -89,7 +89,7 @@ class _e {
89
89
  this.pendingMessages.push(t);
90
90
  return;
91
91
  }
92
- this.ws.send(JSON.stringify(X(t)));
92
+ this.ws.send(JSON.stringify(ee(t)));
93
93
  }
94
94
  flushPendingMessages() {
95
95
  const t = [...this.pendingMessages];
@@ -113,10 +113,10 @@ class _e {
113
113
  }
114
114
  }
115
115
  var V = { exports: {} }, M = {};
116
- var ce;
116
+ var le;
117
117
  function Re() {
118
- if (ce) return M;
119
- ce = 1;
118
+ if (le) return M;
119
+ le = 1;
120
120
  var e = /* @__PURE__ */ Symbol.for("react.transitional.element"), t = /* @__PURE__ */ Symbol.for("react.fragment");
121
121
  function n(s, o, a) {
122
122
  var c = null;
@@ -136,13 +136,13 @@ function Re() {
136
136
  return M.Fragment = t, M.jsx = n, M.jsxs = n, M;
137
137
  }
138
138
  var U = {};
139
- var le;
139
+ var ue;
140
140
  function be() {
141
- return le || (le = 1, process.env.NODE_ENV !== "production" && (function() {
141
+ return ue || (ue = 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 === L ? null : r.displayName || r.name || null;
145
+ return r.$$typeof === K ? null : r.displayName || r.name || null;
146
146
  if (typeof r == "string") return r;
147
147
  switch (r) {
148
148
  case k:
@@ -151,11 +151,11 @@ function be() {
151
151
  return "Profiler";
152
152
  case g:
153
153
  return "StrictMode";
154
- case x:
154
+ case O:
155
155
  return "Suspense";
156
- case S:
157
- return "SuspenseList";
158
156
  case J:
157
+ return "SuspenseList";
158
+ case x:
159
159
  return "Activity";
160
160
  }
161
161
  if (typeof r == "object")
@@ -164,16 +164,16 @@ function be() {
164
164
  ), r.$$typeof) {
165
165
  case A:
166
166
  return "Portal";
167
- case v:
167
+ case _:
168
168
  return r.displayName || "Context";
169
- case b:
170
- return (r._context.displayName || "Context") + ".Consumer";
171
169
  case T:
170
+ return (r._context.displayName || "Context") + ".Consumer";
171
+ case S:
172
172
  var p = r.render;
173
173
  return r = r.displayName, r || (r = p.displayName || p.name || "", r = r !== "" ? "ForwardRef(" + r + ")" : "ForwardRef"), r;
174
- case $:
174
+ case G:
175
175
  return p = r.displayName || null, p !== null ? p : e(r.type) || "Memo";
176
- case Y:
176
+ case w:
177
177
  p = r._payload, r = r._init;
178
178
  try {
179
179
  return e(r(p));
@@ -194,17 +194,17 @@ function be() {
194
194
  }
195
195
  if (p) {
196
196
  p = console;
197
- var w = p.error, _ = typeof Symbol == "function" && Symbol.toStringTag && r[Symbol.toStringTag] || r.constructor.name || "Object";
198
- return w.call(
197
+ var E = p.error, R = typeof Symbol == "function" && Symbol.toStringTag && r[Symbol.toStringTag] || r.constructor.name || "Object";
198
+ return E.call(
199
199
  p,
200
200
  "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
201
- _
201
+ R
202
202
  ), t(r);
203
203
  }
204
204
  }
205
205
  function s(r) {
206
206
  if (r === k) return "<>";
207
- if (typeof r == "object" && r !== null && r.$$typeof === Y)
207
+ if (typeof r == "object" && r !== null && r.$$typeof === w)
208
208
  return "<...>";
209
209
  try {
210
210
  var p = e(r);
@@ -214,46 +214,46 @@ function be() {
214
214
  }
215
215
  }
216
216
  function o() {
217
- var r = P.A;
217
+ var r = Y.A;
218
218
  return r === null ? null : r.getOwner();
219
219
  }
220
220
  function a() {
221
221
  return Error("react-stack-top-frame");
222
222
  }
223
223
  function c(r) {
224
- if (ee.call(r, "key")) {
224
+ if (N.call(r, "key")) {
225
225
  var p = Object.getOwnPropertyDescriptor(r, "key").get;
226
226
  if (p && p.isReactWarning) return !1;
227
227
  }
228
228
  return r.key !== void 0;
229
229
  }
230
230
  function u(r, p) {
231
- function w() {
232
- te || (te = !0, console.error(
231
+ function E() {
232
+ re || (re = !0, console.error(
233
233
  "%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)",
234
234
  p
235
235
  ));
236
236
  }
237
- w.isReactWarning = !0, Object.defineProperty(r, "key", {
238
- get: w,
237
+ E.isReactWarning = !0, Object.defineProperty(r, "key", {
238
+ get: E,
239
239
  configurable: !0
240
240
  });
241
241
  }
242
242
  function l() {
243
243
  var r = e(this.type);
244
- return re[r] || (re[r] = !0, console.error(
244
+ return ne[r] || (ne[r] = !0, console.error(
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 f(r, p, w, _, W, K) {
249
- var R = w.ref;
248
+ function f(r, p, E, R, W, B) {
249
+ var b = E.ref;
250
250
  return r = {
251
- $$typeof: E,
251
+ $$typeof: v,
252
252
  type: r,
253
253
  key: p,
254
- props: w,
255
- _owner: _
256
- }, (R !== void 0 ? R : null) !== null ? Object.defineProperty(r, "ref", {
254
+ props: E,
255
+ _owner: R
256
+ }, (b !== void 0 ? b : null) !== null ? Object.defineProperty(r, "ref", {
257
257
  enumerable: !1,
258
258
  get: l
259
259
  }) : Object.defineProperty(r, "ref", { enumerable: !1, value: null }), r._store = {}, Object.defineProperty(r._store, "validated", {
@@ -275,64 +275,64 @@ function be() {
275
275
  configurable: !1,
276
276
  enumerable: !1,
277
277
  writable: !0,
278
- value: K
278
+ value: B
279
279
  }), Object.freeze && (Object.freeze(r.props), Object.freeze(r)), r;
280
280
  }
281
- function i(r, p, w, _, W, K) {
282
- var R = p.children;
283
- if (R !== void 0)
284
- if (_)
285
- if (me(R)) {
286
- for (_ = 0; _ < R.length; _++)
287
- h(R[_]);
288
- Object.freeze && Object.freeze(R);
281
+ function i(r, p, E, R, W, B) {
282
+ var b = p.children;
283
+ if (b !== void 0)
284
+ if (R)
285
+ if ($(b)) {
286
+ for (R = 0; R < b.length; R++)
287
+ h(b[R]);
288
+ Object.freeze && Object.freeze(b);
289
289
  } else
290
290
  console.error(
291
291
  "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
292
292
  );
293
- else h(R);
294
- if (ee.call(p, "key")) {
295
- R = e(r);
293
+ else h(b);
294
+ if (N.call(p, "key")) {
295
+ b = e(r);
296
296
  var F = Object.keys(p).filter(function(ye) {
297
297
  return ye !== "key";
298
298
  });
299
- _ = 0 < F.length ? "{key: someKey, " + F.join(": ..., ") + ": ...}" : "{key: someKey}", se[R + _] || (F = 0 < F.length ? "{" + F.join(": ..., ") + ": ...}" : "{}", console.error(
299
+ R = 0 < F.length ? "{key: someKey, " + F.join(": ..., ") + ": ...}" : "{key: someKey}", ae[b + R] || (F = 0 < F.length ? "{" + F.join(": ..., ") + ": ...}" : "{}", console.error(
300
300
  `A props object containing a "key" prop is being spread into JSX:
301
301
  let props = %s;
302
302
  <%s {...props} />
303
303
  React keys must be passed directly to JSX without using spread:
304
304
  let props = %s;
305
305
  <%s key={someKey} {...props} />`,
306
- _,
307
306
  R,
307
+ b,
308
308
  F,
309
- R
310
- ), se[R + _] = !0);
309
+ b
310
+ ), ae[b + R] = !0);
311
311
  }
312
- if (R = null, w !== void 0 && (n(w), R = "" + w), c(p) && (n(p.key), R = "" + p.key), "key" in p) {
313
- w = {};
314
- for (var q in p)
315
- q !== "key" && (w[q] = p[q]);
316
- } else w = p;
317
- return R && u(
318
- w,
312
+ if (b = null, E !== void 0 && (n(E), b = "" + E), c(p) && (n(p.key), b = "" + p.key), "key" in p) {
313
+ E = {};
314
+ for (var H in p)
315
+ H !== "key" && (E[H] = p[H]);
316
+ } else E = p;
317
+ return b && u(
318
+ E,
319
319
  typeof r == "function" ? r.displayName || r.name || "Unknown" : r
320
320
  ), f(
321
321
  r,
322
- R,
323
- w,
322
+ b,
323
+ E,
324
324
  o(),
325
325
  W,
326
- K
326
+ B
327
327
  );
328
328
  }
329
329
  function h(r) {
330
- m(r) ? r._store && (r._store.validated = 1) : typeof r == "object" && r !== null && r.$$typeof === Y && (r._payload.status === "fulfilled" ? m(r._payload.value) && r._payload.value._store && (r._payload.value._store.validated = 1) : r._store && (r._store.validated = 1));
330
+ m(r) ? r._store && (r._store.validated = 1) : typeof r == "object" && r !== null && r.$$typeof === w && (r._payload.status === "fulfilled" ? m(r._payload.value) && r._payload.value._store && (r._payload.value._store.validated = 1) : r._store && (r._store.validated = 1));
331
331
  }
332
332
  function m(r) {
333
- return typeof r == "object" && r !== null && r.$$typeof === E;
333
+ return typeof r == "object" && r !== null && r.$$typeof === v;
334
334
  }
335
- var y = we, E = /* @__PURE__ */ Symbol.for("react.transitional.element"), A = /* @__PURE__ */ Symbol.for("react.portal"), k = /* @__PURE__ */ Symbol.for("react.fragment"), g = /* @__PURE__ */ Symbol.for("react.strict_mode"), d = /* @__PURE__ */ Symbol.for("react.profiler"), b = /* @__PURE__ */ Symbol.for("react.consumer"), v = /* @__PURE__ */ Symbol.for("react.context"), T = /* @__PURE__ */ Symbol.for("react.forward_ref"), x = /* @__PURE__ */ Symbol.for("react.suspense"), S = /* @__PURE__ */ Symbol.for("react.suspense_list"), $ = /* @__PURE__ */ Symbol.for("react.memo"), Y = /* @__PURE__ */ Symbol.for("react.lazy"), J = /* @__PURE__ */ Symbol.for("react.activity"), L = /* @__PURE__ */ Symbol.for("react.client.reference"), P = y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, ee = Object.prototype.hasOwnProperty, me = Array.isArray, G = console.createTask ? console.createTask : function() {
335
+ var y = we, v = /* @__PURE__ */ Symbol.for("react.transitional.element"), A = /* @__PURE__ */ Symbol.for("react.portal"), k = /* @__PURE__ */ Symbol.for("react.fragment"), g = /* @__PURE__ */ Symbol.for("react.strict_mode"), d = /* @__PURE__ */ Symbol.for("react.profiler"), T = /* @__PURE__ */ Symbol.for("react.consumer"), _ = /* @__PURE__ */ Symbol.for("react.context"), S = /* @__PURE__ */ Symbol.for("react.forward_ref"), O = /* @__PURE__ */ Symbol.for("react.suspense"), J = /* @__PURE__ */ Symbol.for("react.suspense_list"), G = /* @__PURE__ */ Symbol.for("react.memo"), w = /* @__PURE__ */ Symbol.for("react.lazy"), x = /* @__PURE__ */ Symbol.for("react.activity"), K = /* @__PURE__ */ Symbol.for("react.client.reference"), Y = y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, N = Object.prototype.hasOwnProperty, $ = Array.isArray, q = console.createTask ? console.createTask : function() {
336
336
  return null;
337
337
  };
338
338
  y = {
@@ -340,47 +340,47 @@ React keys must be passed directly to JSX without using spread:
340
340
  return r();
341
341
  }
342
342
  };
343
- var te, re = {}, ne = y.react_stack_bottom_frame.bind(
343
+ var re, ne = {}, oe = y.react_stack_bottom_frame.bind(
344
344
  y,
345
345
  a
346
- )(), oe = G(s(a)), se = {};
347
- U.Fragment = k, U.jsx = function(r, p, w) {
348
- var _ = 1e4 > P.recentlyCreatedOwnerStacks++;
346
+ )(), se = q(s(a)), ae = {};
347
+ U.Fragment = k, U.jsx = function(r, p, E) {
348
+ var R = 1e4 > Y.recentlyCreatedOwnerStacks++;
349
349
  return i(
350
350
  r,
351
351
  p,
352
- w,
352
+ E,
353
353
  !1,
354
- _ ? Error("react-stack-top-frame") : ne,
355
- _ ? G(s(r)) : oe
354
+ R ? Error("react-stack-top-frame") : oe,
355
+ R ? q(s(r)) : se
356
356
  );
357
- }, U.jsxs = function(r, p, w) {
358
- var _ = 1e4 > P.recentlyCreatedOwnerStacks++;
357
+ }, U.jsxs = function(r, p, E) {
358
+ var R = 1e4 > Y.recentlyCreatedOwnerStacks++;
359
359
  return i(
360
360
  r,
361
361
  p,
362
- w,
362
+ E,
363
363
  !0,
364
- _ ? Error("react-stack-top-frame") : ne,
365
- _ ? G(s(r)) : oe
364
+ R ? Error("react-stack-top-frame") : oe,
365
+ R ? q(s(r)) : se
366
366
  );
367
367
  };
368
368
  })()), U;
369
369
  }
370
- var ue;
370
+ var de;
371
371
  function Te() {
372
- return ue || (ue = 1, process.env.NODE_ENV === "production" ? V.exports = Re() : V.exports = be()), V.exports;
372
+ return de || (de = 1, process.env.NODE_ENV === "production" ? V.exports = Re() : V.exports = be()), V.exports;
373
373
  }
374
374
  var I = Te();
375
375
  const qe = ({ IMaskMixin: e, ...t }) => {
376
- const n = Z(
376
+ const n = te(
377
377
  // eslint-disable-next-line react/jsx-props-no-spreading
378
378
  () => e(({ TextField: s, ...o }) => /* @__PURE__ */ I.jsx(s, { ...o })),
379
379
  [e]
380
380
  );
381
381
  return /* @__PURE__ */ I.jsx(n, { ...t });
382
- }, j = he({}), Be = ({ children: e, apiURL: t, libraries: n, localStorageKeys: s }) => {
383
- const o = Z(
382
+ }, j = ge({}), Be = ({ children: e, apiURL: t, libraries: n, localStorageKeys: s }) => {
383
+ const o = te(
384
384
  () => ({
385
385
  apiURL: t,
386
386
  libraries: n,
@@ -398,7 +398,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
398
398
  if (!o)
399
399
  throw new Error("GTM is not provided. You can provide it with InjectDependenciesProvider or directly in props of GTMSendPageView.");
400
400
  const { useGoogleTagManager: a } = o, { useLocation: c, Outlet: u } = s, { pathname: l } = c(), { sendEvent: f } = a();
401
- return N(() => {
401
+ return L(() => {
402
402
  f({
403
403
  event: "pageView",
404
404
  pathname: l,
@@ -435,7 +435,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
435
435
  throw new Error(
436
436
  "Dayjs is not provided. You can provide it with InjectDependenciesProvider or directly in props of InitializeDaysJSConfig."
437
437
  );
438
- return N(() => {
438
+ return L(() => {
439
439
  (async () => {
440
440
  const c = e || navigator.language?.slice(0, 2) || "en";
441
441
  o && o.forEach((u) => {
@@ -487,7 +487,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
487
487
  throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props.");
488
488
  if (m.isInitialized())
489
489
  return null;
490
- const { createRoutesFromChildren: E, matchRoutes: A, useLocation: k, useNavigationType: g } = y;
490
+ const { createRoutesFromChildren: v, matchRoutes: A, useLocation: k, useNavigationType: g } = y;
491
491
  return (u || process.env.NODE_ENV === "prod" || process.env.NODE_ENV === "production") && m.init({
492
492
  debug: u,
493
493
  dsn: e,
@@ -503,9 +503,9 @@ const qe = ({ IMaskMixin: e, ...t }) => {
503
503
  ],
504
504
  integrations: [
505
505
  m.reactRouterV6BrowserTracingIntegration({
506
- createRoutesFromChildren: E,
506
+ createRoutesFromChildren: v,
507
507
  matchRoutes: A,
508
- useEffect: N,
508
+ useEffect: L,
509
509
  useLocation: k,
510
510
  useNavigationType: g
511
511
  }),
@@ -517,7 +517,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
517
517
  tracePropagationTargets: a,
518
518
  tracesSampleRate: n || 1
519
519
  }), null;
520
- }, rt = () => (N(() => {
520
+ }, rt = () => (L(() => {
521
521
  if (z)
522
522
  return;
523
523
  const e = (t) => {
@@ -529,17 +529,17 @@ const qe = ({ IMaskMixin: e, ...t }) => {
529
529
  return window.addEventListener("vite:preloadError", e), () => {
530
530
  window.removeEventListener("vite:preloadError", e);
531
531
  };
532
- }, []), null), de = /* @__PURE__ */ new WeakMap(), Ae = "user", nt = ({ Fallback: e, isLogged: t, loginPath: n = "/login", redirect401Path: s = "/login", ...o }) => {
532
+ }, []), null), fe = /* @__PURE__ */ new WeakMap(), Ae = "user", nt = ({ Fallback: e, isLogged: t, loginPath: n = "/login", redirect401Path: s = "/login", ...o }) => {
533
533
  const { libraries: a, localStorageKeys: c } = C(j), u = o?.reactRouter || a?.reactRouter, l = o?.axios || a?.axios, f = o?.localStorageKey || c?.user || Ae;
534
534
  if (!u)
535
535
  throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props.");
536
- const [i, h] = D(null), { useLocation: m, Navigate: y, Outlet: E } = u, A = m(), k = typeof t == "function" ? t() : !!t, g = typeof k == "boolean" ? k : k?.isLogged;
537
- return N(() => {
538
- de.has(l) || (de.set(l, !0), l.interceptors.response.use(
536
+ const [i, h] = D(null), { useLocation: m, Navigate: y, Outlet: v } = u, A = m(), k = typeof t == "function" ? t() : !!t, g = typeof k == "boolean" ? k : k?.isLogged;
537
+ return L(() => {
538
+ fe.has(l) || (fe.set(l, !0), l.interceptors.response.use(
539
539
  (d) => d,
540
540
  (d) => (typeof d == "object" && d && "response" in d && d.response && typeof d.response == "object" && "status" in d.response && d.response && typeof d.response == "object" && "status" in d.response && d?.response?.status === 401 && (typeof d == "object" && d && "config" in d && d.config && typeof d.config == "object" && "headers" in d.config && d.config.headers && typeof d.config.headers == "object" && "Authorization" in d.config.headers && d.config.headers.Authorization && (l.defaults.headers.common.Authorization = null, typeof window < "u" && window.localStorage && localStorage.removeItem(f)), h(s)), Promise.reject(d))
541
541
  ));
542
- }, [l, f, s]), g && !i ? /* @__PURE__ */ I.jsx(Ee, { fallback: e, children: A.state?.from?.state && A.state?.from?.pathname === n ? /* @__PURE__ */ I.jsx(y, { to: A.state.from.state.from.pathname + A.state.from.state.from.search, replace: !0 }) : /* @__PURE__ */ I.jsx(E, {}) }) : /* @__PURE__ */ I.jsx(y, { to: n + A.search, state: { from: A }, replace: !0 });
542
+ }, [l, f, s]), g && !i ? /* @__PURE__ */ I.jsx(Ee, { fallback: e, children: A.state?.from?.state && A.state?.from?.pathname === n ? /* @__PURE__ */ I.jsx(y, { to: A.state.from.state.from.pathname + A.state.from.state.from.search, replace: !0 }) : /* @__PURE__ */ I.jsx(v, {}) }) : /* @__PURE__ */ I.jsx(y, { to: n + A.search, state: { from: A }, replace: !0 });
543
543
  }, Ce = (e) => e.charAt(0).toUpperCase() + e.slice(1).toLowerCase(), je = (e) => {
544
544
  const t = e.split(/[/\\]/).pop() || "";
545
545
  return t.substring(0, t.lastIndexOf("."));
@@ -589,7 +589,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
589
589
  name: je(h),
590
590
  path: h
591
591
  },
592
- operationName: (m, y, E) => xe(m, y, E, c),
592
+ operationName: (m, y, v) => xe(m, y, v, c),
593
593
  query: {
594
594
  useQuery: !0
595
595
  }
@@ -610,68 +610,71 @@ const qe = ({ IMaskMixin: e, ...t }) => {
610
610
  } catch {
611
611
  return null;
612
612
  }
613
- }, ge = he(null), st = ({ children: e, reconnect: t = !0, enabled: n = !0, url: s, token: o }) => {
614
- const [a, c] = D(!1), [u, l] = D(!1), [f, i] = D(0), { apiURL: h, localStorageKeys: m } = C(j), y = m?.user || Ie, E = B(null), A = B(/* @__PURE__ */ new Set());
615
- N(() => {
613
+ }, me = ge(null), st = ({ children: e, reconnect: t = !0, enabled: n = !0, url: s, token: o }) => {
614
+ const [a, c] = D(!1), [u, l] = D(!1), [f, i] = D(0), { apiURL: h, localStorageKeys: m } = C(j), y = m?.user || Ie, v = X(null), A = X(/* @__PURE__ */ new Set());
615
+ L(() => {
616
616
  if (!n)
617
617
  return;
618
- const S = s || (h ? Ne(h) : null);
619
- if (!S)
618
+ const w = s || (h ? Ne(h) : null);
619
+ if (!w)
620
620
  return;
621
- const $ = () => o ?? Le(y), Y = (L) => {
622
- switch (L.type) {
621
+ const x = () => o ?? Le(y), K = (N) => {
622
+ switch (N.type) {
623
623
  case "ready":
624
- l(!0), i(L.unreadCount ?? 0);
624
+ l(!0), i(N.unreadCount ?? 0);
625
625
  break;
626
626
  case "new_message_notification":
627
- i((P) => P + 1);
628
- break;
629
- case "marked_read":
630
- i((P) => Math.max(0, P - 1));
627
+ i(($) => $ + 1);
631
628
  break;
632
629
  }
633
- for (const P of A.current)
634
- P(L);
635
- }, J = setTimeout(() => {
636
- const L = new _e({
637
- getToken: $,
638
- onConnectionChange: (P) => {
639
- c(P), P || l(!1);
630
+ for (const $ of A.current)
631
+ $(N);
632
+ }, Y = setTimeout(() => {
633
+ const N = new _e({
634
+ getToken: x,
635
+ onConnectionChange: ($) => {
636
+ c($), $ || l(!1);
640
637
  },
641
- onEvent: Y,
638
+ onEvent: K,
642
639
  reconnect: t,
643
- url: S
640
+ url: w
644
641
  });
645
- E.current = L, L.connect();
642
+ v.current = N, N.connect();
646
643
  }, 0);
647
644
  return () => {
648
- clearTimeout(J), E.current?.disconnect(), E.current = null;
645
+ clearTimeout(Y), v.current?.disconnect(), v.current = null;
649
646
  };
650
647
  }, [n, s, o, h, t, y]);
651
- const k = O((S) => {
652
- E.current?.joinThread(S);
653
- }, []), g = O((S) => {
654
- E.current?.leaveThread(S);
655
- }, []), d = O((S, $) => {
656
- E.current?.sendMessage(S, $);
657
- }, []), b = O((S) => {
658
- E.current?.markRead(S);
659
- }, []), v = O((S, $) => {
660
- E.current?.listThreads(S, $);
661
- }, []), T = O((S) => (A.current.add(S), () => {
662
- A.current.delete(S);
663
- }), []), x = {
648
+ const k = P((w) => {
649
+ v.current?.joinThread(w);
650
+ }, []), g = P((w) => {
651
+ v.current?.leaveThread(w);
652
+ }, []), d = P((w, x) => {
653
+ v.current?.sendMessage(w, x);
654
+ }, []), T = P((w) => {
655
+ v.current?.markRead(w);
656
+ }, []), _ = P((w, x) => {
657
+ v.current?.listThreads(w, x);
658
+ }, []), S = P((w = 1) => {
659
+ i((x) => x + w);
660
+ }, []), O = P((w = 1) => {
661
+ i((x) => Math.max(0, x - w));
662
+ }, []), J = P((w) => (A.current.add(w), () => {
663
+ A.current.delete(w);
664
+ }), []), G = {
665
+ decrementUnreadCount: O,
666
+ incrementUnreadCount: S,
664
667
  isConnected: a,
665
668
  isReady: u,
666
669
  joinThread: k,
667
670
  leaveThread: g,
668
- listThreads: v,
669
- markRead: b,
671
+ listThreads: _,
672
+ markRead: T,
670
673
  sendMessage: d,
671
- subscribe: T,
674
+ subscribe: J,
672
675
  unreadCount: f
673
676
  };
674
- return /* @__PURE__ */ I.jsx(ge.Provider, { value: x, children: e });
677
+ return /* @__PURE__ */ I.jsx(me.Provider, { value: G, children: e });
675
678
  }, $e = (e) => e && typeof e == "function", Fe = (e) => e && typeof e == "function", at = ({
676
679
  children: e,
677
680
  defaultQueriesOptions: t,
@@ -739,7 +742,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
739
742
  const { libraries: t, localStorageKeys: n } = C(j), s = e?.axios || t?.axios, o = e?.localStorageKey || n?.user || "user";
740
743
  if (!s)
741
744
  throw new Error("Axios is not provided. You can provide it with InjectDependenciesProvider or directly in params of useAuth.");
742
- const a = O(
745
+ const a = P(
743
746
  ({ tokenType: u, accessToken: l }) => {
744
747
  s.defaults.headers.common.Authorization = `${u} ${l}`;
745
748
  },
@@ -747,7 +750,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
747
750
  ), c = () => {
748
751
  s.defaults.headers.common.Authorization = null;
749
752
  };
750
- return N(() => {
753
+ return L(() => {
751
754
  if (z)
752
755
  return;
753
756
  const u = ({ newValue: l, key: f }) => {
@@ -767,11 +770,11 @@ const qe = ({ IMaskMixin: e, ...t }) => {
767
770
  setAuthenticationToken: a
768
771
  };
769
772
  }, lt = (e) => {
770
- const t = C(ge);
773
+ const t = C(me);
771
774
  if (!t)
772
775
  throw new Error("useChat must be used within ChatProvider");
773
- const { subscribe: n, ...s } = t, o = B(e);
774
- return o.current = e, N(() => n((a) => {
776
+ const { subscribe: n, ...s } = t, o = X(e);
777
+ return o.current = e, L(() => n((a) => {
775
778
  const {
776
779
  onReady: c,
777
780
  onNewMessage: u,
@@ -781,7 +784,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
781
784
  onJoinedThread: h,
782
785
  onLeftThread: m,
783
786
  onMarkedRead: y,
784
- onThreadsList: E
787
+ onThreadsList: v
785
788
  } = o.current ?? {};
786
789
  switch (a.type) {
787
790
  case "ready":
@@ -809,7 +812,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
809
812
  y?.(a);
810
813
  break;
811
814
  case "threads_list":
812
- E?.(a);
815
+ v?.(a);
813
816
  break;
814
817
  }
815
818
  }), [n]), s;
@@ -818,7 +821,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
818
821
  const o = e?.language || navigator.language;
819
822
  return e && "isInitialized" in e && e.isInitialized, Q(o, t);
820
823
  });
821
- return N(() => {
824
+ return L(() => {
822
825
  e && "isInitialized" in e && e.isInitialized && e.language && s(Q(e.language, t));
823
826
  const o = (a) => {
824
827
  s(Q(a, t));
@@ -835,13 +838,13 @@ const qe = ({ IMaskMixin: e, ...t }) => {
835
838
  },
836
839
  setFilter: () => {
837
840
  }
838
- }, fe = (e) => {
841
+ }, pe = (e) => {
839
842
  try {
840
843
  return JSON.parse(e);
841
844
  } catch {
842
845
  return e;
843
846
  }
844
- }, pe = (e, t, n) => `${n}_${e}=>${t}`, Qe = (e) => e.reduce((t, n) => {
847
+ }, he = (e, t, n) => `${n}_${e}=>${t}`, Qe = (e) => e.reduce((t, n) => {
845
848
  const s = localStorage.getItem(n);
846
849
  if (s)
847
850
  try {
@@ -861,34 +864,34 @@ const qe = ({ IMaskMixin: e, ...t }) => {
861
864
  );
862
865
  const m = () => Object.keys(localStorage).filter(
863
866
  (g) => g.startsWith(f) && g.endsWith(e?.pathname || o)
864
- ), y = (g, d, b = !0) => {
865
- const v = pe(g, e?.pathname || o, f);
867
+ ), y = (g, d, T = !0) => {
868
+ const _ = he(g, e?.pathname || o, f);
866
869
  if (!d || Array.isArray(d) && !d.length) {
867
- i ? (a.delete(g), c(a)) : l((T) => {
868
- const x = { ...T };
869
- return delete x[g], x;
870
- }), h && localStorage.removeItem(v);
870
+ i ? (a.delete(g), c(a)) : l((S) => {
871
+ const O = { ...S };
872
+ return delete O[g], O;
873
+ }), h && localStorage.removeItem(_);
871
874
  return;
872
875
  }
873
- h && b && d && localStorage.setItem(v, JSON.stringify({ ...a, [g]: d })), i && d ? (a.set(g, JSON.stringify(d)), c(a)) : !i && d && l((T) => ({ ...T, [g]: d }));
876
+ h && T && d && localStorage.setItem(_, JSON.stringify({ ...a, [g]: d })), i && d ? (a.set(g, JSON.stringify(d)), c(a)) : !i && d && l((S) => ({ ...S, [g]: d }));
874
877
  };
875
878
  return {
876
879
  getFilter: (g, d) => {
877
880
  if (i) {
878
- const b = a.get(g);
879
- if (b)
880
- return fe(b);
881
+ const T = a.get(g);
882
+ if (T)
883
+ return pe(T);
881
884
  } else {
882
- const b = u[g];
883
- if (b !== void 0)
884
- return b;
885
+ const T = u[g];
886
+ if (T !== void 0)
887
+ return T;
885
888
  }
886
889
  if (h) {
887
- const b = pe(g, e?.pathname || o, f), v = localStorage.getItem(b);
888
- if (v)
890
+ const T = he(g, e?.pathname || o, f), _ = localStorage.getItem(T);
891
+ if (_)
889
892
  try {
890
- const T = JSON.parse(v)[g];
891
- return !i && T !== void 0 && l((x) => ({ ...x, [g]: T })), T;
893
+ const S = JSON.parse(_)[g];
894
+ return !i && S !== void 0 && l((O) => ({ ...O, [g]: S })), S;
892
895
  } catch {
893
896
  }
894
897
  }
@@ -897,7 +900,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
897
900
  getFilters: () => {
898
901
  const g = h ? Qe(m()) : {};
899
902
  if (i) {
900
- const d = Array.from(a.entries()).reduce((b, [v, T]) => (b[v] = fe(T), b), {});
903
+ const d = Array.from(a.entries()).reduce((T, [_, S]) => (T[_] = pe(S), T), {});
901
904
  return {
902
905
  ...g,
903
906
  ...d
@@ -908,10 +911,10 @@ const qe = ({ IMaskMixin: e, ...t }) => {
908
911
  ...u
909
912
  };
910
913
  },
911
- handleFilter: (g, d) => (b, v) => {
912
- if (v || Array.isArray(v) && v.length === 0) {
913
- const T = d || "value", x = typeof v == "object" && T in v ? v[T] : v;
914
- y(g, x);
914
+ handleFilter: (g, d) => (T, _) => {
915
+ if (_ || Array.isArray(_) && _.length === 0) {
916
+ const S = d || "value", O = typeof _ == "object" && S in _ ? _[S] : _;
917
+ y(g, O);
915
918
  return;
916
919
  }
917
920
  y(g, void 0);
@@ -926,12 +929,12 @@ const qe = ({ IMaskMixin: e, ...t }) => {
926
929
  isLoading: o,
927
930
  enabled: a = !0
928
931
  }) => {
929
- const c = O(
932
+ const c = P(
930
933
  async (l) => {
931
934
  n || !a || await t({ pageParam: l?.pageParam || l.visibleRowsCount });
932
935
  },
933
936
  [a, t, n]
934
- ), u = Z(() => {
937
+ ), u = te(() => {
935
938
  if (e)
936
939
  return e.pages.reduce((l, f) => [...l, ...f], []);
937
940
  }, [e]);
@@ -942,7 +945,7 @@ const qe = ({ IMaskMixin: e, ...t }) => {
942
945
  rows: u
943
946
  };
944
947
  }, pt = (e) => {
945
- const { libraries: t } = C(j), n = e?.i18 || t?.i18, s = e?.i18?.translateFunction || t?.i18?.translateFunction, o = n?.i18next?.t || s || ((f) => f), { unknownErrorTranslationKey: a = "error.unknownError" } = e || {}, c = o(a), u = O(
948
+ const { libraries: t } = C(j), n = e?.i18 || t?.i18, s = e?.i18?.translateFunction || t?.i18?.translateFunction, o = n?.i18next?.t || s || ((f) => f), { unknownErrorTranslationKey: a = "error.unknownError" } = e || {}, c = o(a), u = P(
946
949
  (f) => {
947
950
  if (f && typeof f == "object" && "response" in f) {
948
951
  const { response: i } = f || {};
@@ -965,14 +968,14 @@ const qe = ({ IMaskMixin: e, ...t }) => {
965
968
  },
966
969
  [c]
967
970
  );
968
- return { getErrorCode: O((f) => {
971
+ return { getErrorCode: P((f) => {
969
972
  const { response: i } = f || {};
970
973
  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";
971
974
  }, []), printError: u };
972
975
  };
973
976
  export {
974
977
  _e as ChatClient,
975
- ge as ChatContext,
978
+ me as ChatContext,
976
979
  st as ChatProvider,
977
980
  He as GTMSendPageView,
978
981
  Xe as InitializeAxiosConfig,
package/dist/main.umd.cjs CHANGED
@@ -1,6 +1,6 @@
1
- (function(g,F){typeof exports=="object"&&typeof module<"u"?F(exports,require("axios"),require("react")):typeof define=="function"&&define.amd?define(["exports","axios","react"],F):(g=typeof globalThis<"u"?globalThis:g||self,F(g["@tracktor/shared-module"]={},g.axios,g.React))})(this,(function(g,F,l){"use strict";const pe=(e,t)=>{const r=F.CancelToken.source(),s=F({...e,...t,cancelToken:r.token}).then(({data:o})=>o);return s.cancel=()=>{r.cancel("Query was cancelled")},s},Q=e=>Array.isArray(e)?e.map(Q):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t.replace(/_([a-z])/g,(s,o)=>o.toUpperCase()),Q(r)])):e,J=e=>Array.isArray(e)?e.map(J):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t.replace(/[A-Z]/g,s=>`_${s.toLowerCase()}`),J(r)])):e;class q{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("?")?"&":"?",s=`${this.url}${r}token=${t}`;this.ws=new WebSocket(s),this.ws.onopen=()=>{this._connected=!0,this.reconnectAttempt=0,this.onConnectionChange?.(!0),this.rejoinThreads(),this.flushPendingMessages()},this.ws.onmessage=o=>{try{const a=JSON.parse(o.data),c=Q(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(J(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 W={exports:{}},M={};var $;function ge(){if($)return M;$=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(s,o,a){var c=null;if(a!==void 0&&(c=""+a),o.key!==void 0&&(c=""+o.key),"key"in o){a={};for(var d in o)d!=="key"&&(a[d]=o[d])}else a=o;return o=a.ref,{$$typeof:e,type:s,key:c,ref:o!==void 0?o:null,props:a}}return M.Fragment=t,M.jsx=r,M.jsxs=r,M}var Y={};var ee;function me(){return ee||(ee=1,process.env.NODE_ENV!=="production"&&(function(){function e(n){if(n==null)return null;if(typeof n=="function")return n.$$typeof===x?null:n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case P:return"Fragment";case f:return"Profiler";case y:return"StrictMode";case N:return"Suspense";case A:return"SuspenseList";case B: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 k:return"Portal";case _:return n.displayName||"Context";case T:return(n._context.displayName||"Context")+".Consumer";case S:var p=n.render;return n=n.displayName,n||(n=p.displayName||p.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case L: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 v=p.error,R=typeof Symbol=="function"&&Symbol.toStringTag&&n[Symbol.toStringTag]||n.constructor.name||"Object";return v.call(p,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",R),t(n)}}function s(n){if(n===P)return"<>";if(typeof n=="object"&&n!==null&&n.$$typeof===U)return"<...>";try{var p=e(n);return p?"<"+p+">":"<...>"}catch{return"<...>"}}function o(){var n=O.A;return n===null?null:n.getOwner()}function a(){return Error("react-stack-top-frame")}function c(n){if(ce.call(n,"key")){var p=Object.getOwnPropertyDescriptor(n,"key").get;if(p&&p.isReactWarning)return!1}return n.key!==void 0}function d(n,p){function v(){le||(le=!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))}v.isReactWarning=!0,Object.defineProperty(n,"key",{get:v,configurable:!0})}function u(){var n=e(this.type);return ue[n]||(ue[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,v,R,V,X){var b=v.ref;return n={$$typeof:C,type:n,key:p,props:v,_owner:R},(b!==void 0?b:null)!==null?Object.defineProperty(n,"ref",{enumerable:!1,get:u}):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:V}),Object.defineProperty(n,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:X}),Object.freeze&&(Object.freeze(n.props),Object.freeze(n)),n}function i(n,p,v,R,V,X){var b=p.children;if(b!==void 0)if(R)if(tt(b)){for(R=0;R<b.length;R++)m(b[R]);Object.freeze&&Object.freeze(b)}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(b);if(ce.call(p,"key")){b=e(n);var D=Object.keys(p).filter(function(nt){return nt!=="key"});R=0<D.length?"{key: someKey, "+D.join(": ..., ")+": ...}":"{key: someKey}",he[b+R]||(D=0<D.length?"{"+D.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ (function(g,F){typeof exports=="object"&&typeof module<"u"?F(exports,require("axios"),require("react")):typeof define=="function"&&define.amd?define(["exports","axios","react"],F):(g=typeof globalThis<"u"?globalThis:g||self,F(g["@tracktor/shared-module"]={},g.axios,g.React))})(this,(function(g,F,l){"use strict";const ge=(e,t)=>{const r=F.CancelToken.source(),s=F({...e,...t,cancelToken:r.token}).then(({data:o})=>o);return s.cancel=()=>{r.cancel("Query was cancelled")},s},Q=e=>Array.isArray(e)?e.map(Q):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t.replace(/_([a-z])/g,(s,o)=>o.toUpperCase()),Q(r)])):e,J=e=>Array.isArray(e)?e.map(J):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t.replace(/[A-Z]/g,s=>`_${s.toLowerCase()}`),J(r)])):e;class ee{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("?")?"&":"?",s=`${this.url}${r}token=${t}`;this.ws=new WebSocket(s),this.ws.onopen=()=>{this._connected=!0,this.reconnectAttempt=0,this.onConnectionChange?.(!0),this.rejoinThreads(),this.flushPendingMessages()},this.ws.onmessage=o=>{try{const a=JSON.parse(o.data),c=Q(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(J(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 W={exports:{}},M={};var te;function me(){if(te)return M;te=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(s,o,a){var c=null;if(a!==void 0&&(c=""+a),o.key!==void 0&&(c=""+o.key),"key"in o){a={};for(var d in o)d!=="key"&&(a[d]=o[d])}else a=o;return o=a.ref,{$$typeof:e,type:s,key:c,ref:o!==void 0?o:null,props:a}}return M.Fragment=t,M.jsx=r,M.jsxs=r,M}var Y={};var ne;function ye(){return ne||(ne=1,process.env.NODE_ENV!=="production"&&(function(){function e(n){if(n==null)return null;if(typeof n=="function")return n.$$typeof===X?null:n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case P:return"Fragment";case f:return"Profiler";case y:return"StrictMode";case N:return"Suspense";case B:return"SuspenseList";case O: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 k:return"Portal";case R:return n.displayName||"Context";case S:return(n._context.displayName||"Context")+".Consumer";case A:var p=n.render;return n=n.displayName,n||(n=p.displayName||p.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case H:return p=n.displayName||null,p!==null?p:e(n.type)||"Memo";case v: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 C=p.error,b=typeof Symbol=="function"&&Symbol.toStringTag&&n[Symbol.toStringTag]||n.constructor.name||"Object";return C.call(p,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",b),t(n)}}function s(n){if(n===P)return"<>";if(typeof n=="object"&&n!==null&&n.$$typeof===v)return"<...>";try{var p=e(n);return p?"<"+p+">":"<...>"}catch{return"<...>"}}function o(){var n=z.A;return n===null?null:n.getOwner()}function a(){return Error("react-stack-top-frame")}function c(n){if(x.call(n,"key")){var p=Object.getOwnPropertyDescriptor(n,"key").get;if(p&&p.isReactWarning)return!1}return n.key!==void 0}function d(n,p){function C(){ue||(ue=!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))}C.isReactWarning=!0,Object.defineProperty(n,"key",{get:C,configurable:!0})}function u(){var n=e(this.type);return de[n]||(de[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,C,b,V,q){var T=C.ref;return n={$$typeof:_,type:n,key:p,props:C,_owner:b},(T!==void 0?T:null)!==null?Object.defineProperty(n,"ref",{enumerable:!1,get:u}):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:V}),Object.defineProperty(n,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:q}),Object.freeze&&(Object.freeze(n.props),Object.freeze(n)),n}function i(n,p,C,b,V,q){var T=p.children;if(T!==void 0)if(b)if(L(T)){for(b=0;b<T.length;b++)m(T[b]);Object.freeze&&Object.freeze(T)}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(T);if(x.call(p,"key")){T=e(n);var D=Object.keys(p).filter(function(nt){return nt!=="key"});b=0<D.length?"{key: someKey, "+D.join(": ..., ")+": ...}":"{key: someKey}",pe[T+b]||(D=0<D.length?"{"+D.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} />`,R,b,D,b),he[b+R]=!0)}if(b=null,v!==void 0&&(r(v),b=""+v),c(p)&&(r(p.key),b=""+p.key),"key"in p){v={};for(var Z in p)Z!=="key"&&(v[Z]=p[Z])}else v=p;return b&&d(v,typeof n=="function"?n.displayName||n.name||"Unknown":n),h(n,b,v,o(),V,X)}function m(n){E(n)?n._store&&(n._store.validated=1):typeof n=="object"&&n!==null&&n.$$typeof===U&&(n._payload.status==="fulfilled"?E(n._payload.value)&&n._payload.value._store&&(n._payload.value._store.validated=1):n._store&&(n._store.validated=1))}function E(n){return typeof n=="object"&&n!==null&&n.$$typeof===C}var w=l,C=Symbol.for("react.transitional.element"),k=Symbol.for("react.portal"),P=Symbol.for("react.fragment"),y=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),T=Symbol.for("react.consumer"),_=Symbol.for("react.context"),S=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),A=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),B=Symbol.for("react.activity"),x=Symbol.for("react.client.reference"),O=w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ce=Object.prototype.hasOwnProperty,tt=Array.isArray,H=console.createTask?console.createTask:function(){return null};w={react_stack_bottom_frame:function(n){return n()}};var le,ue={},de=w.react_stack_bottom_frame.bind(w,a)(),fe=H(s(a)),he={};Y.Fragment=P,Y.jsx=function(n,p,v){var R=1e4>O.recentlyCreatedOwnerStacks++;return i(n,p,v,!1,R?Error("react-stack-top-frame"):de,R?H(s(n)):fe)},Y.jsxs=function(n,p,v){var R=1e4>O.recentlyCreatedOwnerStacks++;return i(n,p,v,!0,R?Error("react-stack-top-frame"):de,R?H(s(n)):fe)}})()),Y}var te;function ye(){return te||(te=1,process.env.NODE_ENV==="production"?W.exports=ge():W.exports=me()),W.exports}var I=ye();const Ee=({IMaskMixin:e,...t})=>{const r=l.useMemo(()=>e(({TextField:s,...o})=>I.jsx(s,{...o})),[e]);return I.jsx(r,{...t})},j=l.createContext({}),we=({children:e,apiURL:t,libraries:r,localStorageKeys:s})=>{const o=l.useMemo(()=>({apiURL:t,libraries:r,localStorageKeys:s}),[t,r,s]);return I.jsx(j.Provider,{value:o,children:e})},ve=({data:e,...t})=>{const{libraries:r}=l.useContext(j),s=t?.reactRouter||r?.reactRouter,o=t?.gtm||r?.gtm;if(!s)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props of GTMSendPageView.");if(!o)throw new Error("GTM is not provided. You can provide it with InjectDependenciesProvider or directly in props of GTMSendPageView.");const{useGoogleTagManager:a}=o,{useLocation:c,Outlet:d}=s,{pathname:u}=c(),{sendEvent:h}=a();return l.useEffect(()=>{h({event:"pageView",pathname:u,...e})},[e,u,h]),I.jsx(d,{})},z=(()=>{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}})(),Ce="user",_e=({tokenTypeKey:e="tokenType",tokenKey:t="accessToken",postContentType:r="application/json",...s})=>{const{apiURL:o=s.apiURL,libraries:a,localStorageKeys:c}=l.useContext(j),d=s?.userLocalStorageKey||c?.user||Ce,u=s?.axios||a?.axios;if(!u)throw new Error("Axios is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(!u?.defaults||z)return null;if(typeof window<"u"&&window.localStorage){const h=localStorage.getItem(d),i=h?JSON.parse(h):null,m=i?.[e]?i[e]:null,E=i?.[t]?i[t]:null,w=h?`${m} ${E}`:null;w&&(u.defaults.headers.common.Authorization=w)}return u.defaults.baseURL=o,u.defaults.headers.post["Content-Type"]=r,null},Re=({language:e,...t})=>{const{libraries:r}=l.useContext(j),s=t?.dayjs||r?.dayjs,o=t?.plugin||r?.dayjsPlugin;if(!s)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&&o.forEach(d=>{d&&s.extend(d)}),await import("dayjs/locale/en"),await import("dayjs/locale/fr"),s.locale(c)})().then()},[s,o,e]),null},be=({debug:e,resources:t,...r})=>{const{libraries:s}=l.useContext(j),o=r?.i18||s?.i18,{i18next:a,initReactI18next:c,languageDetector:d}=o||{};if(z)return null;if(!o)throw new Error("i18 is not provided. You can provide it with InjectDependenciesProvider or directly in props.");return a?.isInitialized||(a.use(d).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",u=>{document.documentElement.setAttribute("lang",u)})),null},Te=({dsn:e,integrations:t,tracesSampleRate:r,replaysSessionSampleRate:s,replaysOnErrorSampleRate:o,tracePropagationTargets:a,ignoreErrors:c,debug:d,environment:u,release:h,...i})=>{const{libraries:m}=l.useContext(j),E=i?.sentry||m?.sentry,w=i?.reactRouter||m?.reactRouter;if(!E)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(E.isInitialized())return null;const{createRoutesFromChildren:C,matchRoutes:k,useLocation:P,useNavigationType:y}=w;return(d||process.env.NODE_ENV==="prod"||process.env.NODE_ENV==="production")&&E.init({debug:d,dsn:e,environment:u||"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:[E.reactRouterV6BrowserTracingIntegration({createRoutesFromChildren:C,matchRoutes:k,useEffect:l.useEffect,useLocation:P,useNavigationType:y}),...t||[]],release:h,replaysOnErrorSampleRate:o||1,replaysSessionSampleRate:s||.1,tracePropagationTargets:a,tracesSampleRate:r||1}),null},Se=()=>(l.useEffect(()=>{if(z)return;const e=t=>{try{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),window.location.reload()}catch{}};return window.addEventListener("vite:preloadError",e),()=>{window.removeEventListener("vite:preloadError",e)}},[]),null),ne=new WeakMap,Ae="user",ke=({Fallback:e,isLogged:t,loginPath:r="/login",redirect401Path:s="/login",...o})=>{const{libraries:a,localStorageKeys:c}=l.useContext(j),d=o?.reactRouter||a?.reactRouter,u=o?.axios||a?.axios,h=o?.localStorageKey||c?.user||Ae;if(!d)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:E,Navigate:w,Outlet:C}=d,k=E(),P=typeof t=="function"?t():!!t,y=typeof P=="boolean"?P:P?.isLogged;return l.useEffect(()=>{ne.has(u)||(ne.set(u,!0),u.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&&(u.defaults.headers.common.Authorization=null,typeof window<"u"&&window.localStorage&&localStorage.removeItem(h)),m(s)),Promise.reject(f))))},[u,h,s]),y&&!i?I.jsx(l.Suspense,{fallback:e,children:k.state?.from?.state&&k.state?.from?.pathname===r?I.jsx(w,{to:k.state.from.state.from.pathname+k.state.from.state.from.search,replace:!0}):I.jsx(C,{})}):I.jsx(w,{to:r+k.search,state:{from:k},replace:!0})},je=e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),Pe=e=>{const t=e.split(/[/\\]/).pop()||"";return t.substring(0,t.lastIndexOf("."))},Oe=e=>{const s=e.split("/").filter(o=>o.length>0).map(o=>o.replace(/\${([^}]*)}/g,"$1").split(/[_-]/).map(u=>u.charAt(0).toUpperCase()+u.slice(1)).join("")).join("");return s.charAt(0).toLowerCase()+s.slice(1)},Ie=e=>(e.split("/").pop()||e).replace(/\.json$/,"").replace(/^openapi\./,""),Ne=(e,t,r,s)=>{const o=Oe(t),a=je(r),c=`${o}${a}`;return e&&typeof e=="object"&&"operationId"in e&&s?.includes(String(e.operationId))?`${c}AsQuery`:c},xe=(e,t)=>{const r={};return e?.forEach(s=>{r[s]={query:{useInfinite:!0,useInfiniteQueryParam:"offset",useQuery:!0}}}),t?.filter(s=>!r[s]).forEach(s=>{r[s]={query:{useQuery:!0}}}),Object.keys(r).length?r:void 0},Le=e=>(Array.isArray(e)?e:[e]).reduce((r,s)=>{const{output:o,useInfiniteIds:a,useQueryIds:c,input:d="./openapi.json",customAxiosInstancePath:u,overrideApiName:h}=s||{},i=h||Ie(d),m=u||"./node_modules/@tracktor/shared-module/dist/axiosCustomInstance.ts";return{...r,[i]:{input:d,output:{baseUrl:o?.baseUrl,client:"react-query",mode:"tags-split",override:{...(a?.length||c?.length)&&{operations:xe(a,c)},header:E=>["Generated by orval 🍺",...E.title?[E.title]:[],...E.description?[E.description]:[]],mutator:{name:Pe(m),path:m},operationName:(E,w,C)=>Ne(E,w,C,c),query:{useQuery:!0}},schemas:o?.schemas||`src/api/${i}/model`,target:o?.target||`src/api/${i}/services/api.ts`,...o}}}},{}),Fe="user",De=e=>{const t=e.startsWith("https")?"wss":"ws",r=e.replace(/^https?:\/\//,"");return`${t}://${r}/v2/threads/ws`},Me=e=>{try{const t=localStorage.getItem(e);return t?JSON.parse(t)?.accessToken??null:null}catch{return null}},K=l.createContext(null),Ye=({children:e,reconnect:t=!0,enabled:r=!0,url:s,token:o})=>{const[a,c]=l.useState(!1),[d,u]=l.useState(!1),[h,i]=l.useState(0),{apiURL:m,localStorageKeys:E}=l.useContext(j),w=E?.user||Fe,C=l.useRef(null),k=l.useRef(new Set);l.useEffect(()=>{if(!r)return;const A=s||(m?De(m):null);if(!A)return;const L=()=>o??Me(w),U=x=>{switch(x.type){case"ready":u(!0),i(x.unreadCount??0);break;case"new_message_notification":i(O=>O+1);break;case"marked_read":i(O=>Math.max(0,O-1));break}for(const O of k.current)O(x)},B=setTimeout(()=>{const x=new q({getToken:L,onConnectionChange:O=>{c(O),O||u(!1)},onEvent:U,reconnect:t,url:A});C.current=x,x.connect()},0);return()=>{clearTimeout(B),C.current?.disconnect(),C.current=null}},[r,s,o,m,t,w]);const P=l.useCallback(A=>{C.current?.joinThread(A)},[]),y=l.useCallback(A=>{C.current?.leaveThread(A)},[]),f=l.useCallback((A,L)=>{C.current?.sendMessage(A,L)},[]),T=l.useCallback(A=>{C.current?.markRead(A)},[]),_=l.useCallback((A,L)=>{C.current?.listThreads(A,L)},[]),S=l.useCallback(A=>(k.current.add(A),()=>{k.current.delete(A)}),[]),N={isConnected:a,isReady:d,joinThread:P,leaveThread:y,listThreads:_,markRead:T,sendMessage:f,subscribe:S,unreadCount:h};return I.jsx(K.Provider,{value:N,children:e})},ze=e=>e&&typeof e=="function",Ue=e=>e&&typeof e=="function",We=({children:e,defaultQueriesOptions:t,defaultMutationsOptions:r,...s})=>{const{libraries:o}=l.useContext(j),a=s?.QueryClient||o?.reactQuery?.QueryClient,c=s?.QueryClientProvider||o?.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(!ze(c))throw new Error("Provided QueryClientProvider dependencies are not valid.");if(!Ue(a))throw new Error("Provided QueryClient dependencies are not valid.");const d=new a({defaultOptions:{mutations:{...r},queries:{getNextPageParam:(u,h,i)=>u.length+(i||0),refetchOnWindowFocus:!1,retry:3,...t}}});return I.jsx(c,{client:d,children:e})},re=({library:e,date:t,format:r="ll"})=>e(t).format(r),oe=(e,t)=>{const{fractionDigits:r=0,metric:s="km",spacingBetween:o=!0}=t||{},a=Number(e),c=o?" ":"";return Number.isNaN(a)?`0${c}${s}`:`${a.toFixed(r)}${c}${s}`},se=e=>!e||typeof e!="string"?"":e.replace(/_/g," ").toLowerCase().split(" ").map(r=>r.length>0?r.charAt(0).toUpperCase()+r.slice(1):r).join(" "),Ge=e=>e?.startsWith("/")?e?.startsWith("/files")?e:`/files${e}`:e?.startsWith("files")?`/${e}`:`/files/${e}`,Ve=({path:e,size:t,apiURL:r})=>{if(!e)return"";const s=Ge(e),o=`${r}${s}`,a=o.match(/\.(jpeg|jpg|png|gif|bmp|webp|svg|avif)$/)!==null;return typeof t=="number"&&a?`${o.replace("/files",`/thumbs/${t}`)}`:o},Qe=e=>{const{apiURL:t,libraries:r}=l.useContext(j),s=e?.dayjs||r?.dayjs;return{dateAdapter:(c,d)=>{if(!s)throw new Error("Dayjs is not provided. You can provide it with InjectDependenciesProvider or directly in props.");return re({date:c,format:d,library:s})},distanceAdapter:oe,filePathAdapter:(c,d)=>{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:Ve({apiURL:t,path:c,size:d})},worksiteNameAdapter:se}},Je=e=>{const{libraries:t,localStorageKeys:r}=l.useContext(j),s=e?.axios||t?.axios,o=e?.localStorageKey||r?.user||"user";if(!s)throw new Error("Axios is not provided. You can provide it with InjectDependenciesProvider or directly in params of useAuth.");const a=l.useCallback(({tokenType:d,accessToken:u})=>{s.defaults.headers.common.Authorization=`${d} ${u}`},[s.defaults.headers.common]),c=()=>{s.defaults.headers.common.Authorization=null};return l.useEffect(()=>{if(z)return;const d=({newValue:u,key:h})=>{if(h===o&&u)try{const{accessToken:i,tokenType:m}=JSON.parse(u);a({accessToken:i,tokenType:m})}catch(i){console.error("Failed to parse newValue from localStorage:",i)}};return window.addEventListener("storage",d),()=>{window.removeEventListener("storage",d)}},[o,a]),{clearAuthenticationToken:c,setAuthenticationToken:a}},Ke=e=>{const t=l.useContext(K);if(!t)throw new Error("useChat must be used within ChatProvider");const{subscribe:r,...s}=t,o=l.useRef(e);return o.current=e,l.useEffect(()=>r(a=>{const{onReady:c,onNewMessage:d,onNewMessageNotification:u,onPresence:h,onError:i,onJoinedThread:m,onLeftThread:E,onMarkedRead:w,onThreadsList:C}=o.current??{};switch(a.type){case"ready":c?.(a);break;case"new_message":d?.(a);break;case"new_message_notification":u?.(a);break;case"presence":h?.(a);break;case"error":i?.(a);break;case"joined_thread":m?.(a);break;case"left_thread":E?.(a);break;case"marked_read":w?.(a);break;case"threads_list":C?.(a);break}}),[r]),s},G=(e,t)=>t==="short"?e.split("-")[0]:e,Be=(e,t="full")=>{const[r,s]=l.useState(()=>{const o=e?.language||navigator.language;return e&&"isInitialized"in e&&e.isInitialized,G(o,t)});return l.useEffect(()=>{e&&"isInitialized"in e&&e.isInitialized&&e.language&&s(G(e.language,t));const o=a=>{s(G(a,t))};return e?.on?.("languageChanged",o),()=>{e?.off?.("languageChanged",o)}},[e,t]),r},He="tracktor.filter",Xe={getFilter:()=>{},getFilters:()=>({}),handleFilter:()=>()=>{},setFilter:()=>{}},ae=e=>{try{return JSON.parse(e)}catch{return e}},ie=(e,t,r)=>`${r}_${e}=>${t}`,Ze=e=>e.reduce((t,r)=>{const s=localStorage.getItem(r);if(s)try{const o=JSON.parse(s),a=Object.keys(o)?.[0];a&&(t[a]=Object.values(o)?.[0])}catch{}return t},{}),qe=e=>{const{libraries:t,localStorageKeys:r}=l.useContext(j),s=e?.reactRouter||t?.reactRouter,{pathname:o}=s?.useLocation?.()??{pathname:"/"},[a,c]=s?.useSearchParams?.()??[new URLSearchParams,()=>{}],[d,u]=l.useState({}),h=r?.filter||He,i=e?.syncWithUrl===void 0?!0:e?.syncWithUrl,m=e?.persistToLocalStorage===void 0?!0:e?.persistToLocalStorage;if(z)return Xe;if(!s)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props of reactRouter.");const E=()=>Object.keys(localStorage).filter(y=>y.startsWith(h)&&y.endsWith(e?.pathname||o)),w=(y,f,T=!0)=>{const _=ie(y,e?.pathname||o,h);if(!f||Array.isArray(f)&&!f.length){i?(a.delete(y),c(a)):u(S=>{const N={...S};return delete N[y],N}),m&&localStorage.removeItem(_);return}m&&T&&f&&localStorage.setItem(_,JSON.stringify({...a,[y]:f})),i&&f?(a.set(y,JSON.stringify(f)),c(a)):!i&&f&&u(S=>({...S,[y]:f}))};return{getFilter:(y,f)=>{if(i){const T=a.get(y);if(T)return ae(T)}else{const T=d[y];if(T!==void 0)return T}if(m){const T=ie(y,e?.pathname||o,h),_=localStorage.getItem(T);if(_)try{const S=JSON.parse(_)[y];return!i&&S!==void 0&&u(N=>({...N,[y]:S})),S}catch{}}return f},getFilters:()=>{const y=m?Ze(E()):{};if(i){const f=Array.from(a.entries()).reduce((T,[_,S])=>(T[_]=ae(S),T),{});return{...y,...f}}return{...y,...d}},handleFilter:(y,f)=>(T,_)=>{if(_||Array.isArray(_)&&_.length===0){const S=f||"value",N=typeof _=="object"&&S in _?_[S]:_;w(y,N);return}w(y,void 0)},setFilter:w}},$e=({data:e,fetchNextPage:t,isFetchingNextPage:r,isInitialLoading:s,isLoading:o,enabled:a=!0})=>{const c=l.useCallback(async u=>{r||!a||await t({pageParam:u?.pageParam||u.visibleRowsCount})},[a,t,r]),d=l.useMemo(()=>{if(e)return e.pages.reduce((u,h)=>[...u,...h],[])},[e]);return{fetchNextPageOnRowsScrollEnd:c,isLoading:r||o,loadingVariant:s?"skeleton":"linear-progress",rows:d}},et=e=>{const{libraries:t}=l.useContext(j),r=e?.i18||t?.i18,s=e?.i18?.translateFunction||t?.i18?.translateFunction,o=r?.i18next?.t||s||(h=>h),{unknownErrorTranslationKey:a="error.unknownError"}=e||{},c=o(a),d=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:E}=m[0];if(typeof E=="string")return String(E)}}}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:d}};g.ChatClient=q,g.ChatContext=K,g.ChatProvider=Ye,g.GTMSendPageView=ve,g.InitializeAxiosConfig=_e,g.InitializeDaysJSConfig=Re,g.InitializeI18nConfig=be,g.InitializeSentryConfig=Te,g.InjectDependenciesContext=j,g.InjectDependenciesProvider=we,g.MaskTextField=Ee,g.PreloadErrorHandler=Se,g.QueryClientProviderWithConfig=We,g.RequireAuth=ke,g.axiosCustomInstance=pe,g.dateAdapter=re,g.distanceAdapter=oe,g.getOrvalConfig=Le,g.useAdapter=Qe,g.useAuth=Je,g.useChat=Ke,g.useCurrentLanguage=Be,g.useFilters=qe,g.useInfiniteDataGrid=$e,g.useResponseError=et,g.worksiteNameAdapter=se,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})}));
6
+ <%s key={someKey} {...props} />`,b,T,D,T),pe[T+b]=!0)}if(T=null,C!==void 0&&(r(C),T=""+C),c(p)&&(r(p.key),T=""+p.key),"key"in p){C={};for(var $ in p)$!=="key"&&(C[$]=p[$])}else C=p;return T&&d(C,typeof n=="function"?n.displayName||n.name||"Unknown":n),h(n,T,C,o(),V,q)}function m(n){E(n)?n._store&&(n._store.validated=1):typeof n=="object"&&n!==null&&n.$$typeof===v&&(n._payload.status==="fulfilled"?E(n._payload.value)&&n._payload.value._store&&(n._payload.value._store.validated=1):n._store&&(n._store.validated=1))}function E(n){return typeof n=="object"&&n!==null&&n.$$typeof===_}var w=l,_=Symbol.for("react.transitional.element"),k=Symbol.for("react.portal"),P=Symbol.for("react.fragment"),y=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),S=Symbol.for("react.consumer"),R=Symbol.for("react.context"),A=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),B=Symbol.for("react.suspense_list"),H=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),O=Symbol.for("react.activity"),X=Symbol.for("react.client.reference"),z=w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,x=Object.prototype.hasOwnProperty,L=Array.isArray,Z=console.createTask?console.createTask:function(){return null};w={react_stack_bottom_frame:function(n){return n()}};var ue,de={},fe=w.react_stack_bottom_frame.bind(w,a)(),he=Z(s(a)),pe={};Y.Fragment=P,Y.jsx=function(n,p,C){var b=1e4>z.recentlyCreatedOwnerStacks++;return i(n,p,C,!1,b?Error("react-stack-top-frame"):fe,b?Z(s(n)):he)},Y.jsxs=function(n,p,C){var b=1e4>z.recentlyCreatedOwnerStacks++;return i(n,p,C,!0,b?Error("react-stack-top-frame"):fe,b?Z(s(n)):he)}})()),Y}var re;function Ee(){return re||(re=1,process.env.NODE_ENV==="production"?W.exports=me():W.exports=ye()),W.exports}var I=Ee();const we=({IMaskMixin:e,...t})=>{const r=l.useMemo(()=>e(({TextField:s,...o})=>I.jsx(s,{...o})),[e]);return I.jsx(r,{...t})},j=l.createContext({}),ve=({children:e,apiURL:t,libraries:r,localStorageKeys:s})=>{const o=l.useMemo(()=>({apiURL:t,libraries:r,localStorageKeys:s}),[t,r,s]);return I.jsx(j.Provider,{value:o,children:e})},Ce=({data:e,...t})=>{const{libraries:r}=l.useContext(j),s=t?.reactRouter||r?.reactRouter,o=t?.gtm||r?.gtm;if(!s)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props of GTMSendPageView.");if(!o)throw new Error("GTM is not provided. You can provide it with InjectDependenciesProvider or directly in props of GTMSendPageView.");const{useGoogleTagManager:a}=o,{useLocation:c,Outlet:d}=s,{pathname:u}=c(),{sendEvent:h}=a();return l.useEffect(()=>{h({event:"pageView",pathname:u,...e})},[e,u,h]),I.jsx(d,{})},U=(()=>{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}})(),_e="user",Re=({tokenTypeKey:e="tokenType",tokenKey:t="accessToken",postContentType:r="application/json",...s})=>{const{apiURL:o=s.apiURL,libraries:a,localStorageKeys:c}=l.useContext(j),d=s?.userLocalStorageKey||c?.user||_e,u=s?.axios||a?.axios;if(!u)throw new Error("Axios is not provided. You can provide it with InjectDependenciesProvider or directly in props.");if(!u?.defaults||U)return null;if(typeof window<"u"&&window.localStorage){const h=localStorage.getItem(d),i=h?JSON.parse(h):null,m=i?.[e]?i[e]:null,E=i?.[t]?i[t]:null,w=h?`${m} ${E}`:null;w&&(u.defaults.headers.common.Authorization=w)}return u.defaults.baseURL=o,u.defaults.headers.post["Content-Type"]=r,null},be=({language:e,...t})=>{const{libraries:r}=l.useContext(j),s=t?.dayjs||r?.dayjs,o=t?.plugin||r?.dayjsPlugin;if(!s)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&&o.forEach(d=>{d&&s.extend(d)}),await import("dayjs/locale/en"),await import("dayjs/locale/fr"),s.locale(c)})().then()},[s,o,e]),null},Te=({debug:e,resources:t,...r})=>{const{libraries:s}=l.useContext(j),o=r?.i18||s?.i18,{i18next:a,initReactI18next:c,languageDetector:d}=o||{};if(U)return null;if(!o)throw new Error("i18 is not provided. You can provide it with InjectDependenciesProvider or directly in props.");return a?.isInitialized||(a.use(d).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",u=>{document.documentElement.setAttribute("lang",u)})),null},Se=({dsn:e,integrations:t,tracesSampleRate:r,replaysSessionSampleRate:s,replaysOnErrorSampleRate:o,tracePropagationTargets:a,ignoreErrors:c,debug:d,environment:u,release:h,...i})=>{const{libraries:m}=l.useContext(j),E=i?.sentry||m?.sentry,w=i?.reactRouter||m?.reactRouter;if(!E)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(E.isInitialized())return null;const{createRoutesFromChildren:_,matchRoutes:k,useLocation:P,useNavigationType:y}=w;return(d||process.env.NODE_ENV==="prod"||process.env.NODE_ENV==="production")&&E.init({debug:d,dsn:e,environment:u||"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:[E.reactRouterV6BrowserTracingIntegration({createRoutesFromChildren:_,matchRoutes:k,useEffect:l.useEffect,useLocation:P,useNavigationType:y}),...t||[]],release:h,replaysOnErrorSampleRate:o||1,replaysSessionSampleRate:s||.1,tracePropagationTargets:a,tracesSampleRate:r||1}),null},Ae=()=>(l.useEffect(()=>{if(U)return;const e=t=>{try{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),window.location.reload()}catch{}};return window.addEventListener("vite:preloadError",e),()=>{window.removeEventListener("vite:preloadError",e)}},[]),null),oe=new WeakMap,ke="user",je=({Fallback:e,isLogged:t,loginPath:r="/login",redirect401Path:s="/login",...o})=>{const{libraries:a,localStorageKeys:c}=l.useContext(j),d=o?.reactRouter||a?.reactRouter,u=o?.axios||a?.axios,h=o?.localStorageKey||c?.user||ke;if(!d)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:E,Navigate:w,Outlet:_}=d,k=E(),P=typeof t=="function"?t():!!t,y=typeof P=="boolean"?P:P?.isLogged;return l.useEffect(()=>{oe.has(u)||(oe.set(u,!0),u.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&&(u.defaults.headers.common.Authorization=null,typeof window<"u"&&window.localStorage&&localStorage.removeItem(h)),m(s)),Promise.reject(f))))},[u,h,s]),y&&!i?I.jsx(l.Suspense,{fallback:e,children:k.state?.from?.state&&k.state?.from?.pathname===r?I.jsx(w,{to:k.state.from.state.from.pathname+k.state.from.state.from.search,replace:!0}):I.jsx(_,{})}):I.jsx(w,{to:r+k.search,state:{from:k},replace:!0})},Pe=e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),Oe=e=>{const t=e.split(/[/\\]/).pop()||"";return t.substring(0,t.lastIndexOf("."))},Ie=e=>{const s=e.split("/").filter(o=>o.length>0).map(o=>o.replace(/\${([^}]*)}/g,"$1").split(/[_-]/).map(u=>u.charAt(0).toUpperCase()+u.slice(1)).join("")).join("");return s.charAt(0).toLowerCase()+s.slice(1)},Ne=e=>(e.split("/").pop()||e).replace(/\.json$/,"").replace(/^openapi\./,""),xe=(e,t,r,s)=>{const o=Ie(t),a=Pe(r),c=`${o}${a}`;return e&&typeof e=="object"&&"operationId"in e&&s?.includes(String(e.operationId))?`${c}AsQuery`:c},Le=(e,t)=>{const r={};return e?.forEach(s=>{r[s]={query:{useInfinite:!0,useInfiniteQueryParam:"offset",useQuery:!0}}}),t?.filter(s=>!r[s]).forEach(s=>{r[s]={query:{useQuery:!0}}}),Object.keys(r).length?r:void 0},Fe=e=>(Array.isArray(e)?e:[e]).reduce((r,s)=>{const{output:o,useInfiniteIds:a,useQueryIds:c,input:d="./openapi.json",customAxiosInstancePath:u,overrideApiName:h}=s||{},i=h||Ne(d),m=u||"./node_modules/@tracktor/shared-module/dist/axiosCustomInstance.ts";return{...r,[i]:{input:d,output:{baseUrl:o?.baseUrl,client:"react-query",mode:"tags-split",override:{...(a?.length||c?.length)&&{operations:Le(a,c)},header:E=>["Generated by orval 🍺",...E.title?[E.title]:[],...E.description?[E.description]:[]],mutator:{name:Oe(m),path:m},operationName:(E,w,_)=>xe(E,w,_,c),query:{useQuery:!0}},schemas:o?.schemas||`src/api/${i}/model`,target:o?.target||`src/api/${i}/services/api.ts`,...o}}}},{}),De="user",Me=e=>{const t=e.startsWith("https")?"wss":"ws",r=e.replace(/^https?:\/\//,"");return`${t}://${r}/v2/threads/ws`},Ye=e=>{try{const t=localStorage.getItem(e);return t?JSON.parse(t)?.accessToken??null:null}catch{return null}},K=l.createContext(null),Ue=({children:e,reconnect:t=!0,enabled:r=!0,url:s,token:o})=>{const[a,c]=l.useState(!1),[d,u]=l.useState(!1),[h,i]=l.useState(0),{apiURL:m,localStorageKeys:E}=l.useContext(j),w=E?.user||De,_=l.useRef(null),k=l.useRef(new Set);l.useEffect(()=>{if(!r)return;const v=s||(m?Me(m):null);if(!v)return;const O=()=>o??Ye(w),X=x=>{switch(x.type){case"ready":u(!0),i(x.unreadCount??0);break;case"new_message_notification":i(L=>L+1);break}for(const L of k.current)L(x)},z=setTimeout(()=>{const x=new ee({getToken:O,onConnectionChange:L=>{c(L),L||u(!1)},onEvent:X,reconnect:t,url:v});_.current=x,x.connect()},0);return()=>{clearTimeout(z),_.current?.disconnect(),_.current=null}},[r,s,o,m,t,w]);const P=l.useCallback(v=>{_.current?.joinThread(v)},[]),y=l.useCallback(v=>{_.current?.leaveThread(v)},[]),f=l.useCallback((v,O)=>{_.current?.sendMessage(v,O)},[]),S=l.useCallback(v=>{_.current?.markRead(v)},[]),R=l.useCallback((v,O)=>{_.current?.listThreads(v,O)},[]),A=l.useCallback((v=1)=>{i(O=>O+v)},[]),N=l.useCallback((v=1)=>{i(O=>Math.max(0,O-v))},[]),B=l.useCallback(v=>(k.current.add(v),()=>{k.current.delete(v)}),[]),H={decrementUnreadCount:N,incrementUnreadCount:A,isConnected:a,isReady:d,joinThread:P,leaveThread:y,listThreads:R,markRead:S,sendMessage:f,subscribe:B,unreadCount:h};return I.jsx(K.Provider,{value:H,children:e})},ze=e=>e&&typeof e=="function",We=e=>e&&typeof e=="function",Ge=({children:e,defaultQueriesOptions:t,defaultMutationsOptions:r,...s})=>{const{libraries:o}=l.useContext(j),a=s?.QueryClient||o?.reactQuery?.QueryClient,c=s?.QueryClientProvider||o?.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(!ze(c))throw new Error("Provided QueryClientProvider dependencies are not valid.");if(!We(a))throw new Error("Provided QueryClient dependencies are not valid.");const d=new a({defaultOptions:{mutations:{...r},queries:{getNextPageParam:(u,h,i)=>u.length+(i||0),refetchOnWindowFocus:!1,retry:3,...t}}});return I.jsx(c,{client:d,children:e})},se=({library:e,date:t,format:r="ll"})=>e(t).format(r),ae=(e,t)=>{const{fractionDigits:r=0,metric:s="km",spacingBetween:o=!0}=t||{},a=Number(e),c=o?" ":"";return Number.isNaN(a)?`0${c}${s}`:`${a.toFixed(r)}${c}${s}`},ie=e=>!e||typeof e!="string"?"":e.replace(/_/g," ").toLowerCase().split(" ").map(r=>r.length>0?r.charAt(0).toUpperCase()+r.slice(1):r).join(" "),Ve=e=>e?.startsWith("/")?e?.startsWith("/files")?e:`/files${e}`:e?.startsWith("files")?`/${e}`:`/files/${e}`,Qe=({path:e,size:t,apiURL:r})=>{if(!e)return"";const s=Ve(e),o=`${r}${s}`,a=o.match(/\.(jpeg|jpg|png|gif|bmp|webp|svg|avif)$/)!==null;return typeof t=="number"&&a?`${o.replace("/files",`/thumbs/${t}`)}`:o},Je=e=>{const{apiURL:t,libraries:r}=l.useContext(j),s=e?.dayjs||r?.dayjs;return{dateAdapter:(c,d)=>{if(!s)throw new Error("Dayjs is not provided. You can provide it with InjectDependenciesProvider or directly in props.");return se({date:c,format:d,library:s})},distanceAdapter:ae,filePathAdapter:(c,d)=>{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:Qe({apiURL:t,path:c,size:d})},worksiteNameAdapter:ie}},Ke=e=>{const{libraries:t,localStorageKeys:r}=l.useContext(j),s=e?.axios||t?.axios,o=e?.localStorageKey||r?.user||"user";if(!s)throw new Error("Axios is not provided. You can provide it with InjectDependenciesProvider or directly in params of useAuth.");const a=l.useCallback(({tokenType:d,accessToken:u})=>{s.defaults.headers.common.Authorization=`${d} ${u}`},[s.defaults.headers.common]),c=()=>{s.defaults.headers.common.Authorization=null};return l.useEffect(()=>{if(U)return;const d=({newValue:u,key:h})=>{if(h===o&&u)try{const{accessToken:i,tokenType:m}=JSON.parse(u);a({accessToken:i,tokenType:m})}catch(i){console.error("Failed to parse newValue from localStorage:",i)}};return window.addEventListener("storage",d),()=>{window.removeEventListener("storage",d)}},[o,a]),{clearAuthenticationToken:c,setAuthenticationToken:a}},Be=e=>{const t=l.useContext(K);if(!t)throw new Error("useChat must be used within ChatProvider");const{subscribe:r,...s}=t,o=l.useRef(e);return o.current=e,l.useEffect(()=>r(a=>{const{onReady:c,onNewMessage:d,onNewMessageNotification:u,onPresence:h,onError:i,onJoinedThread:m,onLeftThread:E,onMarkedRead:w,onThreadsList:_}=o.current??{};switch(a.type){case"ready":c?.(a);break;case"new_message":d?.(a);break;case"new_message_notification":u?.(a);break;case"presence":h?.(a);break;case"error":i?.(a);break;case"joined_thread":m?.(a);break;case"left_thread":E?.(a);break;case"marked_read":w?.(a);break;case"threads_list":_?.(a);break}}),[r]),s},G=(e,t)=>t==="short"?e.split("-")[0]:e,He=(e,t="full")=>{const[r,s]=l.useState(()=>{const o=e?.language||navigator.language;return e&&"isInitialized"in e&&e.isInitialized,G(o,t)});return l.useEffect(()=>{e&&"isInitialized"in e&&e.isInitialized&&e.language&&s(G(e.language,t));const o=a=>{s(G(a,t))};return e?.on?.("languageChanged",o),()=>{e?.off?.("languageChanged",o)}},[e,t]),r},Xe="tracktor.filter",Ze={getFilter:()=>{},getFilters:()=>({}),handleFilter:()=>()=>{},setFilter:()=>{}},ce=e=>{try{return JSON.parse(e)}catch{return e}},le=(e,t,r)=>`${r}_${e}=>${t}`,qe=e=>e.reduce((t,r)=>{const s=localStorage.getItem(r);if(s)try{const o=JSON.parse(s),a=Object.keys(o)?.[0];a&&(t[a]=Object.values(o)?.[0])}catch{}return t},{}),$e=e=>{const{libraries:t,localStorageKeys:r}=l.useContext(j),s=e?.reactRouter||t?.reactRouter,{pathname:o}=s?.useLocation?.()??{pathname:"/"},[a,c]=s?.useSearchParams?.()??[new URLSearchParams,()=>{}],[d,u]=l.useState({}),h=r?.filter||Xe,i=e?.syncWithUrl===void 0?!0:e?.syncWithUrl,m=e?.persistToLocalStorage===void 0?!0:e?.persistToLocalStorage;if(U)return Ze;if(!s)throw new Error("React Router is not provided. You can provide it with InjectDependenciesProvider or directly in props of reactRouter.");const E=()=>Object.keys(localStorage).filter(y=>y.startsWith(h)&&y.endsWith(e?.pathname||o)),w=(y,f,S=!0)=>{const R=le(y,e?.pathname||o,h);if(!f||Array.isArray(f)&&!f.length){i?(a.delete(y),c(a)):u(A=>{const N={...A};return delete N[y],N}),m&&localStorage.removeItem(R);return}m&&S&&f&&localStorage.setItem(R,JSON.stringify({...a,[y]:f})),i&&f?(a.set(y,JSON.stringify(f)),c(a)):!i&&f&&u(A=>({...A,[y]:f}))};return{getFilter:(y,f)=>{if(i){const S=a.get(y);if(S)return ce(S)}else{const S=d[y];if(S!==void 0)return S}if(m){const S=le(y,e?.pathname||o,h),R=localStorage.getItem(S);if(R)try{const A=JSON.parse(R)[y];return!i&&A!==void 0&&u(N=>({...N,[y]:A})),A}catch{}}return f},getFilters:()=>{const y=m?qe(E()):{};if(i){const f=Array.from(a.entries()).reduce((S,[R,A])=>(S[R]=ce(A),S),{});return{...y,...f}}return{...y,...d}},handleFilter:(y,f)=>(S,R)=>{if(R||Array.isArray(R)&&R.length===0){const A=f||"value",N=typeof R=="object"&&A in R?R[A]:R;w(y,N);return}w(y,void 0)},setFilter:w}},et=({data:e,fetchNextPage:t,isFetchingNextPage:r,isInitialLoading:s,isLoading:o,enabled:a=!0})=>{const c=l.useCallback(async u=>{r||!a||await t({pageParam:u?.pageParam||u.visibleRowsCount})},[a,t,r]),d=l.useMemo(()=>{if(e)return e.pages.reduce((u,h)=>[...u,...h],[])},[e]);return{fetchNextPageOnRowsScrollEnd:c,isLoading:r||o,loadingVariant:s?"skeleton":"linear-progress",rows:d}},tt=e=>{const{libraries:t}=l.useContext(j),r=e?.i18||t?.i18,s=e?.i18?.translateFunction||t?.i18?.translateFunction,o=r?.i18next?.t||s||(h=>h),{unknownErrorTranslationKey:a="error.unknownError"}=e||{},c=o(a),d=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:E}=m[0];if(typeof E=="string")return String(E)}}}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:d}};g.ChatClient=ee,g.ChatContext=K,g.ChatProvider=Ue,g.GTMSendPageView=Ce,g.InitializeAxiosConfig=Re,g.InitializeDaysJSConfig=be,g.InitializeI18nConfig=Te,g.InitializeSentryConfig=Se,g.InjectDependenciesContext=j,g.InjectDependenciesProvider=ve,g.MaskTextField=we,g.PreloadErrorHandler=Ae,g.QueryClientProviderWithConfig=Ge,g.RequireAuth=je,g.axiosCustomInstance=ge,g.dateAdapter=se,g.distanceAdapter=ae,g.getOrvalConfig=Fe,g.useAdapter=Je,g.useAuth=Ke,g.useChat=Be,g.useCurrentLanguage=He,g.useFilters=$e,g.useInfiniteDataGrid=et,g.useResponseError=tt,g.worksiteNameAdapter=ie,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.26.3",
3
+ "version": "2.28.0",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "types": "./dist/main.d.ts",