@lokalise/harmony 1.34.1 → 1.34.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/harmony100.cjs +99 -18
  2. package/dist/harmony100.cjs.map +1 -1
  3. package/dist/harmony100.mjs +82 -18
  4. package/dist/harmony100.mjs.map +1 -1
  5. package/dist/harmony102.cjs +18 -99
  6. package/dist/harmony102.cjs.map +1 -1
  7. package/dist/harmony102.mjs +18 -82
  8. package/dist/harmony102.mjs.map +1 -1
  9. package/dist/harmony105.cjs +6 -133
  10. package/dist/harmony105.cjs.map +1 -1
  11. package/dist/harmony105.mjs +5 -132
  12. package/dist/harmony105.mjs.map +1 -1
  13. package/dist/harmony106.cjs +5 -12
  14. package/dist/harmony106.cjs.map +1 -1
  15. package/dist/harmony106.mjs +5 -12
  16. package/dist/harmony106.mjs.map +1 -1
  17. package/dist/harmony107.cjs +132 -5
  18. package/dist/harmony107.cjs.map +1 -1
  19. package/dist/harmony107.mjs +132 -5
  20. package/dist/harmony107.mjs.map +1 -1
  21. package/dist/harmony108.cjs +12 -40
  22. package/dist/harmony108.cjs.map +1 -1
  23. package/dist/harmony108.mjs +11 -39
  24. package/dist/harmony108.mjs.map +1 -1
  25. package/dist/harmony109.cjs +4 -59
  26. package/dist/harmony109.cjs.map +1 -1
  27. package/dist/harmony109.mjs +5 -60
  28. package/dist/harmony109.mjs.map +1 -1
  29. package/dist/harmony110.cjs +39 -6
  30. package/dist/harmony110.cjs.map +1 -1
  31. package/dist/harmony110.mjs +39 -6
  32. package/dist/harmony110.mjs.map +1 -1
  33. package/dist/harmony111.cjs +60 -6
  34. package/dist/harmony111.cjs.map +1 -1
  35. package/dist/harmony111.mjs +59 -5
  36. package/dist/harmony111.mjs.map +1 -1
  37. package/dist/harmony112.cjs +8 -6
  38. package/dist/harmony112.cjs.map +1 -1
  39. package/dist/harmony112.mjs +7 -5
  40. package/dist/harmony112.mjs.map +1 -1
  41. package/dist/harmony113.cjs +6 -5
  42. package/dist/harmony113.cjs.map +1 -1
  43. package/dist/harmony113.mjs +6 -5
  44. package/dist/harmony120.cjs +1 -1
  45. package/dist/harmony120.mjs +1 -1
  46. package/dist/harmony13.cjs +8 -1
  47. package/dist/harmony13.cjs.map +1 -1
  48. package/dist/harmony13.mjs +8 -1
  49. package/dist/harmony13.mjs.map +1 -1
  50. package/dist/harmony130.cjs +1 -1
  51. package/dist/harmony130.mjs +1 -1
  52. package/dist/harmony137.cjs +1 -1
  53. package/dist/harmony137.mjs +1 -1
  54. package/dist/harmony16.cjs +1 -1
  55. package/dist/harmony16.mjs +1 -1
  56. package/dist/harmony55.cjs +2 -1
  57. package/dist/harmony55.cjs.map +1 -1
  58. package/dist/harmony55.mjs +2 -1
  59. package/dist/harmony55.mjs.map +1 -1
  60. package/dist/harmony69.cjs +1 -1
  61. package/dist/harmony69.mjs +1 -1
  62. package/dist/harmony79.cjs +6 -6
  63. package/dist/harmony79.mjs +6 -6
  64. package/dist/harmony82.cjs +2 -2
  65. package/dist/harmony82.mjs +2 -2
  66. package/dist/harmony84.cjs +2 -2
  67. package/dist/harmony84.mjs +2 -2
  68. package/dist/harmony85.cjs +10 -9
  69. package/dist/harmony85.cjs.map +1 -1
  70. package/dist/harmony85.mjs +12 -11
  71. package/dist/harmony85.mjs.map +1 -1
  72. package/dist/harmony86.cjs +11 -20
  73. package/dist/harmony86.cjs.map +1 -1
  74. package/dist/harmony86.mjs +11 -20
  75. package/dist/harmony86.mjs.map +1 -1
  76. package/dist/harmony87.cjs +9 -10
  77. package/dist/harmony87.cjs.map +1 -1
  78. package/dist/harmony87.mjs +11 -12
  79. package/dist/harmony87.mjs.map +1 -1
  80. package/dist/harmony88.cjs +20 -11
  81. package/dist/harmony88.cjs.map +1 -1
  82. package/dist/harmony88.mjs +20 -11
  83. package/dist/harmony88.mjs.map +1 -1
  84. package/dist/harmony98.cjs +1 -1
  85. package/dist/harmony98.mjs +1 -1
  86. package/dist/types/src/features/auth/frontend/hooks/useAuthenticatedProjectContributor.d.ts +3 -2
  87. package/dist/types/src/features/publicApi/contributors.d.ts +30 -20
  88. package/dist/types/src/features/publicApi/hooks/useListContributorsQuery.d.ts +3 -2
  89. package/dist/types/src/features/publicApi/hooks/useRetrieveContributorQuery.d.ts +3 -2
  90. package/dist/types/src/features/publicApi/types/contributorTypes.d.ts +39 -26
  91. package/package.json +1 -1
@@ -1,63 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const useEffectOnce = require("./harmony12.cjs");
5
3
  const React = require("react");
6
- const TasksContext = require("./harmony107.cjs");
7
- const taskEvents = require("./harmony110.cjs");
8
- const TasksProvider = ({ children, config }) => {
9
- const [tasks, setTasks] = React.useState([]);
10
- const [loadingTasks, setLoadingTasks] = React.useState(true);
11
- const [tasksCount, setTaskCount] = React.useState(0);
12
- const {
13
- getProjectUrl,
14
- onLanguageCompleteConfirm,
15
- onTasksWidgetOpen,
16
- langNameOnClick,
17
- langProgressOnClick,
18
- taskTitleOnClick
19
- } = config;
20
- const { getTasks, getTasksCount } = config;
21
- const fetchTasks = async () => {
22
- setLoadingTasks(true);
23
- const result = await getTasks();
24
- setTasks(result);
25
- setLoadingTasks(false);
26
- return result;
27
- };
28
- const fetchTaskCount = async () => {
29
- const result = await getTasksCount();
30
- setTaskCount(result);
31
- };
32
- useEffectOnce.useEffectOnce(() => {
33
- fetchTaskCount();
34
- document.addEventListener(taskEvents.TaskEvents.TaskCompleted, fetchTaskCount);
35
- document.addEventListener(taskEvents.TaskEvents.TaskClosed, fetchTaskCount);
36
- document.addEventListener(taskEvents.TaskEvents.Refresh, fetchTaskCount);
37
- return () => {
38
- document.removeEventListener(taskEvents.TaskEvents.TaskCompleted, fetchTaskCount);
39
- document.removeEventListener(taskEvents.TaskEvents.TaskClosed, fetchTaskCount);
40
- document.removeEventListener(taskEvents.TaskEvents.Refresh, fetchTaskCount);
41
- };
42
- });
43
- const providerValue = {
44
- fetchTasks,
45
- tasks,
46
- tasksCount,
47
- loadingTasks,
48
- getProjectUrl,
49
- onLanguageCompleteConfirm,
50
- onTasksWidgetOpen,
51
- langNameOnClick,
52
- langProgressOnClick,
53
- taskTitleOnClick
54
- };
55
- return /* @__PURE__ */ jsxRuntime.jsx(TasksContext.TasksContext.Provider, { value: providerValue, children });
56
- };
57
- const withTasksContext = (WrappedComponent) => function withTasksContextFn(props) {
58
- const { config, ...rest } = props;
59
- return /* @__PURE__ */ jsxRuntime.jsx(TasksProvider, { config, children: /* @__PURE__ */ jsxRuntime.jsx(WrappedComponent, { ...rest }) });
60
- };
61
- exports.TasksProvider = TasksProvider;
62
- exports.withTasksContext = withTasksContext;
4
+ const TasksContext = React.createContext({});
5
+ const useTasks = () => React.useContext(TasksContext);
6
+ exports.TasksContext = TasksContext;
7
+ exports.useTasks = useTasks;
63
8
  //# sourceMappingURL=harmony109.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony109.cjs","sources":["../src/components/Sidebar/Widgets/Tasks/TasksProvider.tsx"],"sourcesContent":["import { useEffectOnce } from '@utils'\nimport { type FC, type PropsWithChildren, useState } from 'react'\nimport { TasksContext } from './TasksContext'\nimport type { SidebarTask, SidebarTasksConfig, SidebarTasksContextProps } from './types'\nimport { TaskEvents } from './utils/taskEvents'\n\ntype TasksProviderProps = PropsWithChildren<{\n\tconfig: SidebarTasksConfig\n}>\n\nexport const TasksProvider = ({ children, config }: TasksProviderProps) => {\n\tconst [tasks, setTasks] = useState<SidebarTask[]>([])\n\tconst [loadingTasks, setLoadingTasks] = useState(true)\n\n\tconst [tasksCount, setTaskCount] = useState(0)\n\n\tconst {\n\t\tgetProjectUrl,\n\t\tonLanguageCompleteConfirm,\n\t\tonTasksWidgetOpen,\n\t\tlangNameOnClick,\n\t\tlangProgressOnClick,\n\t\ttaskTitleOnClick,\n\t} = config\n\n\tconst { getTasks, getTasksCount } = config\n\n\tconst fetchTasks = async () => {\n\t\tsetLoadingTasks(true)\n\t\tconst result = await getTasks()\n\t\tsetTasks(result)\n\t\tsetLoadingTasks(false)\n\t\treturn result\n\t}\n\n\tconst fetchTaskCount = async () => {\n\t\tconst result = await getTasksCount()\n\t\tsetTaskCount(result)\n\t}\n\n\tuseEffectOnce(() => {\n\t\tfetchTaskCount()\n\n\t\tdocument.addEventListener(TaskEvents.TaskCompleted, fetchTaskCount)\n\t\tdocument.addEventListener(TaskEvents.TaskClosed, fetchTaskCount)\n\t\tdocument.addEventListener(TaskEvents.Refresh, fetchTaskCount)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(TaskEvents.TaskCompleted, fetchTaskCount)\n\t\t\tdocument.removeEventListener(TaskEvents.TaskClosed, fetchTaskCount)\n\t\t\tdocument.removeEventListener(TaskEvents.Refresh, fetchTaskCount)\n\t\t}\n\t})\n\n\tconst providerValue: SidebarTasksContextProps = {\n\t\tfetchTasks,\n\t\ttasks,\n\t\ttasksCount,\n\t\tloadingTasks,\n\t\tgetProjectUrl,\n\t\tonLanguageCompleteConfirm,\n\t\tonTasksWidgetOpen,\n\t\tlangNameOnClick,\n\t\tlangProgressOnClick,\n\t\ttaskTitleOnClick,\n\t}\n\n\treturn <TasksContext.Provider value={providerValue}>{children}</TasksContext.Provider>\n}\n\nexport const withTasksContext = <P extends { config: SidebarTasksConfig }>(\n\tWrappedComponent: FC<Omit<P, 'config'>>,\n) =>\n\tfunction withTasksContextFn(props: P) {\n\t\tconst { config, ...rest } = props\n\n\t\treturn (\n\t\t\t<TasksProvider config={config}>\n\t\t\t\t<WrappedComponent {...rest} />\n\t\t\t</TasksProvider>\n\t\t)\n\t}\n"],"names":["useState","useEffectOnce","TaskEvents","TasksContext"],"mappings":";;;;;;;AAUO,MAAM,gBAAgB,CAAC,EAAE,UAAU,aAAiC;AAC1E,QAAM,CAAC,OAAO,QAAQ,IAAIA,MAAAA,SAAwB,CAAA,CAAE;AACpD,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAS,IAAI;AAErD,QAAM,CAAC,YAAY,YAAY,IAAIA,MAAAA,SAAS,CAAC;AAEvC,QAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACG;AAEE,QAAA,EAAE,UAAU,cAAA,IAAkB;AAEpC,QAAM,aAAa,YAAY;AAC9B,oBAAgB,IAAI;AACd,UAAA,SAAS,MAAM,SAAS;AAC9B,aAAS,MAAM;AACf,oBAAgB,KAAK;AACd,WAAA;AAAA,EACR;AAEA,QAAM,iBAAiB,YAAY;AAC5B,UAAA,SAAS,MAAM,cAAc;AACnC,iBAAa,MAAM;AAAA,EACpB;AAEAC,gBAAAA,cAAc,MAAM;AACJ,mBAAA;AAEN,aAAA,iBAAiBC,sBAAW,eAAe,cAAc;AACzD,aAAA,iBAAiBA,sBAAW,YAAY,cAAc;AACtD,aAAA,iBAAiBA,sBAAW,SAAS,cAAc;AAE5D,WAAO,MAAM;AACH,eAAA,oBAAoBA,sBAAW,eAAe,cAAc;AAC5D,eAAA,oBAAoBA,sBAAW,YAAY,cAAc;AACzD,eAAA,oBAAoBA,sBAAW,SAAS,cAAc;AAAA,IAChE;AAAA,EAAA,CACA;AAED,QAAM,gBAA0C;AAAA,IAC/C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,wCAAQC,aAAAA,aAAa,UAAb,EAAsB,OAAO,eAAgB,UAAS;AAC/D;AAEO,MAAM,mBAAmB,CAC/B,qBAEA,SAAS,mBAAmB,OAAU;AACrC,QAAM,EAAE,QAAQ,GAAG,KAAA,IAAS;AAE5B,wCACE,eAAc,EAAA,QACd,yCAAC,kBAAkB,EAAA,GAAG,KAAM,CAAA,GAC7B;AAEF;;;"}
1
+ {"version":3,"file":"harmony109.cjs","sources":["../src/components/Sidebar/Widgets/Tasks/TasksContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { SidebarTasksContextProps } from './types'\n\nexport const TasksContext = createContext({} as SidebarTasksContextProps)\n\nexport const useTasks = () => useContext(TasksContext)\n"],"names":["createContext","useContext"],"mappings":";;;AAGa,MAAA,eAAeA,MAAc,cAAA,CAA8B,CAAA;AAE3D,MAAA,WAAW,MAAMC,MAAAA,WAAW,YAAY;;;"}
@@ -1,63 +1,8 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { useEffectOnce } from "./harmony12.mjs";
3
- import { useState } from "react";
4
- import { TasksContext } from "./harmony107.mjs";
5
- import { TaskEvents } from "./harmony110.mjs";
6
- const TasksProvider = ({ children, config }) => {
7
- const [tasks, setTasks] = useState([]);
8
- const [loadingTasks, setLoadingTasks] = useState(true);
9
- const [tasksCount, setTaskCount] = useState(0);
10
- const {
11
- getProjectUrl,
12
- onLanguageCompleteConfirm,
13
- onTasksWidgetOpen,
14
- langNameOnClick,
15
- langProgressOnClick,
16
- taskTitleOnClick
17
- } = config;
18
- const { getTasks, getTasksCount } = config;
19
- const fetchTasks = async () => {
20
- setLoadingTasks(true);
21
- const result = await getTasks();
22
- setTasks(result);
23
- setLoadingTasks(false);
24
- return result;
25
- };
26
- const fetchTaskCount = async () => {
27
- const result = await getTasksCount();
28
- setTaskCount(result);
29
- };
30
- useEffectOnce(() => {
31
- fetchTaskCount();
32
- document.addEventListener(TaskEvents.TaskCompleted, fetchTaskCount);
33
- document.addEventListener(TaskEvents.TaskClosed, fetchTaskCount);
34
- document.addEventListener(TaskEvents.Refresh, fetchTaskCount);
35
- return () => {
36
- document.removeEventListener(TaskEvents.TaskCompleted, fetchTaskCount);
37
- document.removeEventListener(TaskEvents.TaskClosed, fetchTaskCount);
38
- document.removeEventListener(TaskEvents.Refresh, fetchTaskCount);
39
- };
40
- });
41
- const providerValue = {
42
- fetchTasks,
43
- tasks,
44
- tasksCount,
45
- loadingTasks,
46
- getProjectUrl,
47
- onLanguageCompleteConfirm,
48
- onTasksWidgetOpen,
49
- langNameOnClick,
50
- langProgressOnClick,
51
- taskTitleOnClick
52
- };
53
- return /* @__PURE__ */ jsx(TasksContext.Provider, { value: providerValue, children });
54
- };
55
- const withTasksContext = (WrappedComponent) => function withTasksContextFn(props) {
56
- const { config, ...rest } = props;
57
- return /* @__PURE__ */ jsx(TasksProvider, { config, children: /* @__PURE__ */ jsx(WrappedComponent, { ...rest }) });
58
- };
1
+ import { createContext, useContext } from "react";
2
+ const TasksContext = createContext({});
3
+ const useTasks = () => useContext(TasksContext);
59
4
  export {
60
- TasksProvider,
61
- withTasksContext
5
+ TasksContext,
6
+ useTasks
62
7
  };
63
8
  //# sourceMappingURL=harmony109.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony109.mjs","sources":["../src/components/Sidebar/Widgets/Tasks/TasksProvider.tsx"],"sourcesContent":["import { useEffectOnce } from '@utils'\nimport { type FC, type PropsWithChildren, useState } from 'react'\nimport { TasksContext } from './TasksContext'\nimport type { SidebarTask, SidebarTasksConfig, SidebarTasksContextProps } from './types'\nimport { TaskEvents } from './utils/taskEvents'\n\ntype TasksProviderProps = PropsWithChildren<{\n\tconfig: SidebarTasksConfig\n}>\n\nexport const TasksProvider = ({ children, config }: TasksProviderProps) => {\n\tconst [tasks, setTasks] = useState<SidebarTask[]>([])\n\tconst [loadingTasks, setLoadingTasks] = useState(true)\n\n\tconst [tasksCount, setTaskCount] = useState(0)\n\n\tconst {\n\t\tgetProjectUrl,\n\t\tonLanguageCompleteConfirm,\n\t\tonTasksWidgetOpen,\n\t\tlangNameOnClick,\n\t\tlangProgressOnClick,\n\t\ttaskTitleOnClick,\n\t} = config\n\n\tconst { getTasks, getTasksCount } = config\n\n\tconst fetchTasks = async () => {\n\t\tsetLoadingTasks(true)\n\t\tconst result = await getTasks()\n\t\tsetTasks(result)\n\t\tsetLoadingTasks(false)\n\t\treturn result\n\t}\n\n\tconst fetchTaskCount = async () => {\n\t\tconst result = await getTasksCount()\n\t\tsetTaskCount(result)\n\t}\n\n\tuseEffectOnce(() => {\n\t\tfetchTaskCount()\n\n\t\tdocument.addEventListener(TaskEvents.TaskCompleted, fetchTaskCount)\n\t\tdocument.addEventListener(TaskEvents.TaskClosed, fetchTaskCount)\n\t\tdocument.addEventListener(TaskEvents.Refresh, fetchTaskCount)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(TaskEvents.TaskCompleted, fetchTaskCount)\n\t\t\tdocument.removeEventListener(TaskEvents.TaskClosed, fetchTaskCount)\n\t\t\tdocument.removeEventListener(TaskEvents.Refresh, fetchTaskCount)\n\t\t}\n\t})\n\n\tconst providerValue: SidebarTasksContextProps = {\n\t\tfetchTasks,\n\t\ttasks,\n\t\ttasksCount,\n\t\tloadingTasks,\n\t\tgetProjectUrl,\n\t\tonLanguageCompleteConfirm,\n\t\tonTasksWidgetOpen,\n\t\tlangNameOnClick,\n\t\tlangProgressOnClick,\n\t\ttaskTitleOnClick,\n\t}\n\n\treturn <TasksContext.Provider value={providerValue}>{children}</TasksContext.Provider>\n}\n\nexport const withTasksContext = <P extends { config: SidebarTasksConfig }>(\n\tWrappedComponent: FC<Omit<P, 'config'>>,\n) =>\n\tfunction withTasksContextFn(props: P) {\n\t\tconst { config, ...rest } = props\n\n\t\treturn (\n\t\t\t<TasksProvider config={config}>\n\t\t\t\t<WrappedComponent {...rest} />\n\t\t\t</TasksProvider>\n\t\t)\n\t}\n"],"names":[],"mappings":";;;;;AAUO,MAAM,gBAAgB,CAAC,EAAE,UAAU,aAAiC;AAC1E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,CAAA,CAAE;AACpD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,IAAI;AAErD,QAAM,CAAC,YAAY,YAAY,IAAI,SAAS,CAAC;AAEvC,QAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACG;AAEE,QAAA,EAAE,UAAU,cAAA,IAAkB;AAEpC,QAAM,aAAa,YAAY;AAC9B,oBAAgB,IAAI;AACd,UAAA,SAAS,MAAM,SAAS;AAC9B,aAAS,MAAM;AACf,oBAAgB,KAAK;AACd,WAAA;AAAA,EACR;AAEA,QAAM,iBAAiB,YAAY;AAC5B,UAAA,SAAS,MAAM,cAAc;AACnC,iBAAa,MAAM;AAAA,EACpB;AAEA,gBAAc,MAAM;AACJ,mBAAA;AAEN,aAAA,iBAAiB,WAAW,eAAe,cAAc;AACzD,aAAA,iBAAiB,WAAW,YAAY,cAAc;AACtD,aAAA,iBAAiB,WAAW,SAAS,cAAc;AAE5D,WAAO,MAAM;AACH,eAAA,oBAAoB,WAAW,eAAe,cAAc;AAC5D,eAAA,oBAAoB,WAAW,YAAY,cAAc;AACzD,eAAA,oBAAoB,WAAW,SAAS,cAAc;AAAA,IAChE;AAAA,EAAA,CACA;AAED,QAAM,gBAA0C;AAAA,IAC/C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,6BAAQ,aAAa,UAAb,EAAsB,OAAO,eAAgB,UAAS;AAC/D;AAEO,MAAM,mBAAmB,CAC/B,qBAEA,SAAS,mBAAmB,OAAU;AACrC,QAAM,EAAE,QAAQ,GAAG,KAAA,IAAS;AAE5B,6BACE,eAAc,EAAA,QACd,8BAAC,kBAAkB,EAAA,GAAG,KAAM,CAAA,GAC7B;AAEF;"}
1
+ {"version":3,"file":"harmony109.mjs","sources":["../src/components/Sidebar/Widgets/Tasks/TasksContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { SidebarTasksContextProps } from './types'\n\nexport const TasksContext = createContext({} as SidebarTasksContextProps)\n\nexport const useTasks = () => useContext(TasksContext)\n"],"names":[],"mappings":";AAGa,MAAA,eAAe,cAAc,CAA8B,CAAA;AAE3D,MAAA,WAAW,MAAM,WAAW,YAAY;"}
@@ -1,10 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const TaskEvents = {
4
- TaskCompleted: "task_completed",
5
- TaskClosed: "task_closed",
6
- Refresh: "refresh",
7
- ShowDialog: "show_dialog"
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const louis = require("@lokalise/louis");
5
+ const useEffectOnce = require("./harmony12.cjs");
6
+ const TaskOverview = require("./harmony120.cjs");
7
+ const TasksContext = require("./harmony109.cjs");
8
+ const taskEvents = require("./harmony112.cjs");
9
+ const TasksPopover_module = require("./harmony121.cjs");
10
+ const TasksPopover = () => {
11
+ const { tasks, onTasksWidgetOpen, loadingTasks, fetchTasks } = TasksContext.useTasks();
12
+ useEffectOnce.useEffectOnce(() => {
13
+ const handleTaskPopoverOpen = async () => {
14
+ const contextTasks = await fetchTasks();
15
+ onTasksWidgetOpen == null ? void 0 : onTasksWidgetOpen({ tasks: contextTasks });
16
+ };
17
+ handleTaskPopoverOpen();
18
+ document.addEventListener(taskEvents.TaskEvents.TaskCompleted, fetchTasks);
19
+ document.addEventListener(taskEvents.TaskEvents.TaskClosed, fetchTasks);
20
+ document.addEventListener(taskEvents.TaskEvents.Refresh, fetchTasks);
21
+ return () => {
22
+ document.removeEventListener(taskEvents.TaskEvents.TaskCompleted, fetchTasks);
23
+ document.removeEventListener(taskEvents.TaskEvents.TaskClosed, fetchTasks);
24
+ document.removeEventListener(taskEvents.TaskEvents.Refresh, fetchTasks);
25
+ };
26
+ });
27
+ if (loadingTasks) {
28
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": "sidebar-tasks-loading-popover", className: TasksPopover_module.default.loadingContainer, children: /* @__PURE__ */ jsxRuntime.jsx(louis.Loading, {}) });
29
+ }
30
+ if (tasks.length === 0) {
31
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "sidebar-no-tasks-popover", className: TasksPopover_module.default.noTasksContainer, children: [
32
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: TasksPopover_module.default.noTasksHeading, children: "No tasks" }),
33
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: TasksPopover_module.default.noTasksText, children: [
34
+ "Your incoming tasks will appear here.",
35
+ /* @__PURE__ */ jsxRuntime.jsx("br", {}),
36
+ /* @__PURE__ */ jsxRuntime.jsx(louis.Link, { href: "https://docs.lokalise.com/translation-workflow/tasks", target: "_new", children: "Learn more" })
37
+ ] })
38
+ ] });
39
+ }
40
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": "sidebar-tasks-popover", className: TasksPopover_module.default.tasksContainer, children: tasks.map((task) => /* @__PURE__ */ jsxRuntime.jsx(TaskOverview.TaskOverview, { task }, task.id)) });
8
41
  };
9
- exports.TaskEvents = TaskEvents;
42
+ exports.TasksPopover = TasksPopover;
10
43
  //# sourceMappingURL=harmony110.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony110.cjs","sources":["../src/components/Sidebar/Widgets/Tasks/utils/taskEvents.ts"],"sourcesContent":["import type { TypesFromMap } from '@utils'\n\nexport const TaskEvents = {\n\tTaskCompleted: 'task_completed',\n\tTaskClosed: 'task_closed',\n\tRefresh: 'refresh',\n\tShowDialog: 'show_dialog',\n} as const\n\nexport type TaskEvent = TypesFromMap<typeof TaskEvents>\n\ntype SingleTaskPayload = {\n\ttaskId: string | number\n}\n\ntype DispatchTaskEventPayload =\n\t| {\n\t\t\tname: typeof TaskEvents.TaskCompleted\n\t\t\tdetail: SingleTaskPayload\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.TaskClosed\n\t\t\tdetail: SingleTaskPayload\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.Refresh\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.ShowDialog\n\t }\n\nexport const dispatchTaskEvent = (props: DispatchTaskEventPayload) => {\n\tconst { name } = props\n\tdocument.dispatchEvent(new CustomEvent(name, { detail: 'detail' in props ? props.detail : {} }))\n}\n"],"names":[],"mappings":";;AAEO,MAAM,aAAa;AAAA,EACzB,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AACb;;"}
1
+ {"version":3,"file":"harmony110.cjs","sources":["../src/components/Sidebar/Widgets/Tasks/TasksPopover/TasksPopover.tsx"],"sourcesContent":["import { Link, Loading } from '@lokalise/louis'\nimport { useEffectOnce } from '@utils'\nimport { TaskOverview } from '../TaskOverview/TaskOverview'\nimport { useTasks } from '../TasksContext'\nimport type { SidebarTask } from '../types'\nimport { TaskEvents } from '../utils/taskEvents'\nimport styles from './TasksPopover.module.css'\n\nexport const TasksPopover = () => {\n\tconst { tasks, onTasksWidgetOpen, loadingTasks, fetchTasks } = useTasks()\n\n\tuseEffectOnce(() => {\n\t\tconst handleTaskPopoverOpen = async () => {\n\t\t\tconst contextTasks = await fetchTasks()\n\t\t\tonTasksWidgetOpen?.({ tasks: contextTasks })\n\t\t}\n\n\t\thandleTaskPopoverOpen()\n\n\t\tdocument.addEventListener(TaskEvents.TaskCompleted, fetchTasks)\n\t\tdocument.addEventListener(TaskEvents.TaskClosed, fetchTasks)\n\t\tdocument.addEventListener(TaskEvents.Refresh, fetchTasks)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(TaskEvents.TaskCompleted, fetchTasks)\n\t\t\tdocument.removeEventListener(TaskEvents.TaskClosed, fetchTasks)\n\t\t\tdocument.removeEventListener(TaskEvents.Refresh, fetchTasks)\n\t\t}\n\t})\n\n\tif (loadingTasks) {\n\t\treturn (\n\t\t\t<div data-testid=\"sidebar-tasks-loading-popover\" className={styles.loadingContainer}>\n\t\t\t\t<Loading />\n\t\t\t</div>\n\t\t)\n\t}\n\n\tif (tasks.length === 0) {\n\t\treturn (\n\t\t\t<div data-testid=\"sidebar-no-tasks-popover\" className={styles.noTasksContainer}>\n\t\t\t\t<h3 className={styles.noTasksHeading}>No tasks</h3>\n\t\t\t\t<div className={styles.noTasksText}>\n\t\t\t\t\tYour incoming tasks will appear here.\n\t\t\t\t\t<br />\n\t\t\t\t\t<Link href=\"https://docs.lokalise.com/translation-workflow/tasks\" target=\"_new\">\n\t\t\t\t\t\tLearn more\n\t\t\t\t\t</Link>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div data-testid=\"sidebar-tasks-popover\" className={styles.tasksContainer}>\n\t\t\t{tasks.map((task: SidebarTask) => (\n\t\t\t\t<TaskOverview key={task.id} task={task} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n"],"names":["useTasks","useEffectOnce","TaskEvents","jsx","styles","Loading","jsxs","Link","TaskOverview"],"mappings":";;;;;;;;;AAQO,MAAM,eAAe,MAAM;AACjC,QAAM,EAAE,OAAO,mBAAmB,cAAc,WAAA,IAAeA,aAAAA,SAAS;AAExEC,gBAAAA,cAAc,MAAM;AACnB,UAAM,wBAAwB,YAAY;AACnC,YAAA,eAAe,MAAM,WAAW;AAClB,6DAAA,EAAE,OAAO;IAC9B;AAEsB,0BAAA;AAEb,aAAA,iBAAiBC,sBAAW,eAAe,UAAU;AACrD,aAAA,iBAAiBA,sBAAW,YAAY,UAAU;AAClD,aAAA,iBAAiBA,sBAAW,SAAS,UAAU;AAExD,WAAO,MAAM;AACH,eAAA,oBAAoBA,sBAAW,eAAe,UAAU;AACxD,eAAA,oBAAoBA,sBAAW,YAAY,UAAU;AACrD,eAAA,oBAAoBA,sBAAW,SAAS,UAAU;AAAA,IAC5D;AAAA,EAAA,CACA;AAED,MAAI,cAAc;AAEhB,WAAAC,2BAAA,IAAC,SAAI,eAAY,iCAAgC,WAAWC,4BAAO,kBAClE,UAACD,2BAAAA,IAAAE,MAAAA,SAAA,CAAA,CAAQ,EACV,CAAA;AAAA,EAAA;AAIE,MAAA,MAAM,WAAW,GAAG;AACvB,2CACE,OAAI,EAAA,eAAY,4BAA2B,WAAWD,oBAAAA,QAAO,kBAC7D,UAAA;AAAA,MAAAD,2BAAA,IAAC,MAAG,EAAA,WAAWC,oBAAO,QAAA,gBAAgB,UAAQ,YAAA;AAAA,MAC7CE,2BAAA,KAAA,OAAA,EAAI,WAAWF,oBAAAA,QAAO,aAAa,UAAA;AAAA,QAAA;AAAA,uCAElC,MAAG,EAAA;AAAA,uCACHG,MAAAA,MAAK,EAAA,MAAK,wDAAuD,QAAO,QAAO,UAEhF,aAAA,CAAA;AAAA,MAAA,EACD,CAAA;AAAA,IAAA,GACD;AAAA,EAAA;AAIF,wCACE,OAAI,EAAA,eAAY,yBAAwB,WAAWH,oBAAAA,QAAO,gBACzD,UAAA,MAAM,IAAI,CAAC,SACVD,2BAAA,IAAAK,2BAAA,EAA2B,QAAT,KAAK,EAAgB,CACxC,GACF;AAEF;;"}
@@ -1,10 +1,43 @@
1
- const TaskEvents = {
2
- TaskCompleted: "task_completed",
3
- TaskClosed: "task_closed",
4
- Refresh: "refresh",
5
- ShowDialog: "show_dialog"
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Loading, Link } from "@lokalise/louis";
3
+ import { useEffectOnce } from "./harmony12.mjs";
4
+ import { TaskOverview } from "./harmony120.mjs";
5
+ import { useTasks } from "./harmony109.mjs";
6
+ import { TaskEvents } from "./harmony112.mjs";
7
+ import styles from "./harmony121.mjs";
8
+ const TasksPopover = () => {
9
+ const { tasks, onTasksWidgetOpen, loadingTasks, fetchTasks } = useTasks();
10
+ useEffectOnce(() => {
11
+ const handleTaskPopoverOpen = async () => {
12
+ const contextTasks = await fetchTasks();
13
+ onTasksWidgetOpen == null ? void 0 : onTasksWidgetOpen({ tasks: contextTasks });
14
+ };
15
+ handleTaskPopoverOpen();
16
+ document.addEventListener(TaskEvents.TaskCompleted, fetchTasks);
17
+ document.addEventListener(TaskEvents.TaskClosed, fetchTasks);
18
+ document.addEventListener(TaskEvents.Refresh, fetchTasks);
19
+ return () => {
20
+ document.removeEventListener(TaskEvents.TaskCompleted, fetchTasks);
21
+ document.removeEventListener(TaskEvents.TaskClosed, fetchTasks);
22
+ document.removeEventListener(TaskEvents.Refresh, fetchTasks);
23
+ };
24
+ });
25
+ if (loadingTasks) {
26
+ return /* @__PURE__ */ jsx("div", { "data-testid": "sidebar-tasks-loading-popover", className: styles.loadingContainer, children: /* @__PURE__ */ jsx(Loading, {}) });
27
+ }
28
+ if (tasks.length === 0) {
29
+ return /* @__PURE__ */ jsxs("div", { "data-testid": "sidebar-no-tasks-popover", className: styles.noTasksContainer, children: [
30
+ /* @__PURE__ */ jsx("h3", { className: styles.noTasksHeading, children: "No tasks" }),
31
+ /* @__PURE__ */ jsxs("div", { className: styles.noTasksText, children: [
32
+ "Your incoming tasks will appear here.",
33
+ /* @__PURE__ */ jsx("br", {}),
34
+ /* @__PURE__ */ jsx(Link, { href: "https://docs.lokalise.com/translation-workflow/tasks", target: "_new", children: "Learn more" })
35
+ ] })
36
+ ] });
37
+ }
38
+ return /* @__PURE__ */ jsx("div", { "data-testid": "sidebar-tasks-popover", className: styles.tasksContainer, children: tasks.map((task) => /* @__PURE__ */ jsx(TaskOverview, { task }, task.id)) });
6
39
  };
7
40
  export {
8
- TaskEvents
41
+ TasksPopover
9
42
  };
10
43
  //# sourceMappingURL=harmony110.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony110.mjs","sources":["../src/components/Sidebar/Widgets/Tasks/utils/taskEvents.ts"],"sourcesContent":["import type { TypesFromMap } from '@utils'\n\nexport const TaskEvents = {\n\tTaskCompleted: 'task_completed',\n\tTaskClosed: 'task_closed',\n\tRefresh: 'refresh',\n\tShowDialog: 'show_dialog',\n} as const\n\nexport type TaskEvent = TypesFromMap<typeof TaskEvents>\n\ntype SingleTaskPayload = {\n\ttaskId: string | number\n}\n\ntype DispatchTaskEventPayload =\n\t| {\n\t\t\tname: typeof TaskEvents.TaskCompleted\n\t\t\tdetail: SingleTaskPayload\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.TaskClosed\n\t\t\tdetail: SingleTaskPayload\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.Refresh\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.ShowDialog\n\t }\n\nexport const dispatchTaskEvent = (props: DispatchTaskEventPayload) => {\n\tconst { name } = props\n\tdocument.dispatchEvent(new CustomEvent(name, { detail: 'detail' in props ? props.detail : {} }))\n}\n"],"names":[],"mappings":"AAEO,MAAM,aAAa;AAAA,EACzB,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AACb;"}
1
+ {"version":3,"file":"harmony110.mjs","sources":["../src/components/Sidebar/Widgets/Tasks/TasksPopover/TasksPopover.tsx"],"sourcesContent":["import { Link, Loading } from '@lokalise/louis'\nimport { useEffectOnce } from '@utils'\nimport { TaskOverview } from '../TaskOverview/TaskOverview'\nimport { useTasks } from '../TasksContext'\nimport type { SidebarTask } from '../types'\nimport { TaskEvents } from '../utils/taskEvents'\nimport styles from './TasksPopover.module.css'\n\nexport const TasksPopover = () => {\n\tconst { tasks, onTasksWidgetOpen, loadingTasks, fetchTasks } = useTasks()\n\n\tuseEffectOnce(() => {\n\t\tconst handleTaskPopoverOpen = async () => {\n\t\t\tconst contextTasks = await fetchTasks()\n\t\t\tonTasksWidgetOpen?.({ tasks: contextTasks })\n\t\t}\n\n\t\thandleTaskPopoverOpen()\n\n\t\tdocument.addEventListener(TaskEvents.TaskCompleted, fetchTasks)\n\t\tdocument.addEventListener(TaskEvents.TaskClosed, fetchTasks)\n\t\tdocument.addEventListener(TaskEvents.Refresh, fetchTasks)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(TaskEvents.TaskCompleted, fetchTasks)\n\t\t\tdocument.removeEventListener(TaskEvents.TaskClosed, fetchTasks)\n\t\t\tdocument.removeEventListener(TaskEvents.Refresh, fetchTasks)\n\t\t}\n\t})\n\n\tif (loadingTasks) {\n\t\treturn (\n\t\t\t<div data-testid=\"sidebar-tasks-loading-popover\" className={styles.loadingContainer}>\n\t\t\t\t<Loading />\n\t\t\t</div>\n\t\t)\n\t}\n\n\tif (tasks.length === 0) {\n\t\treturn (\n\t\t\t<div data-testid=\"sidebar-no-tasks-popover\" className={styles.noTasksContainer}>\n\t\t\t\t<h3 className={styles.noTasksHeading}>No tasks</h3>\n\t\t\t\t<div className={styles.noTasksText}>\n\t\t\t\t\tYour incoming tasks will appear here.\n\t\t\t\t\t<br />\n\t\t\t\t\t<Link href=\"https://docs.lokalise.com/translation-workflow/tasks\" target=\"_new\">\n\t\t\t\t\t\tLearn more\n\t\t\t\t\t</Link>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div data-testid=\"sidebar-tasks-popover\" className={styles.tasksContainer}>\n\t\t\t{tasks.map((task: SidebarTask) => (\n\t\t\t\t<TaskOverview key={task.id} task={task} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n"],"names":[],"mappings":";;;;;;;AAQO,MAAM,eAAe,MAAM;AACjC,QAAM,EAAE,OAAO,mBAAmB,cAAc,WAAA,IAAe,SAAS;AAExE,gBAAc,MAAM;AACnB,UAAM,wBAAwB,YAAY;AACnC,YAAA,eAAe,MAAM,WAAW;AAClB,6DAAA,EAAE,OAAO;IAC9B;AAEsB,0BAAA;AAEb,aAAA,iBAAiB,WAAW,eAAe,UAAU;AACrD,aAAA,iBAAiB,WAAW,YAAY,UAAU;AAClD,aAAA,iBAAiB,WAAW,SAAS,UAAU;AAExD,WAAO,MAAM;AACH,eAAA,oBAAoB,WAAW,eAAe,UAAU;AACxD,eAAA,oBAAoB,WAAW,YAAY,UAAU;AACrD,eAAA,oBAAoB,WAAW,SAAS,UAAU;AAAA,IAC5D;AAAA,EAAA,CACA;AAED,MAAI,cAAc;AAEhB,WAAA,oBAAC,SAAI,eAAY,iCAAgC,WAAW,OAAO,kBAClE,UAAC,oBAAA,SAAA,CAAA,CAAQ,EACV,CAAA;AAAA,EAAA;AAIE,MAAA,MAAM,WAAW,GAAG;AACvB,gCACE,OAAI,EAAA,eAAY,4BAA2B,WAAW,OAAO,kBAC7D,UAAA;AAAA,MAAA,oBAAC,MAAG,EAAA,WAAW,OAAO,gBAAgB,UAAQ,YAAA;AAAA,MAC7C,qBAAA,OAAA,EAAI,WAAW,OAAO,aAAa,UAAA;AAAA,QAAA;AAAA,4BAElC,MAAG,EAAA;AAAA,4BACH,MAAK,EAAA,MAAK,wDAAuD,QAAO,QAAO,UAEhF,aAAA,CAAA;AAAA,MAAA,EACD,CAAA;AAAA,IAAA,GACD;AAAA,EAAA;AAIF,6BACE,OAAI,EAAA,eAAY,yBAAwB,WAAW,OAAO,gBACzD,UAAA,MAAM,IAAI,CAAC,SACV,oBAAA,cAAA,EAA2B,QAAT,KAAK,EAAgB,CACxC,GACF;AAEF;"}
@@ -1,9 +1,63 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const iconContainer = "_iconContainer_nz34m_1";
4
- const styles = {
5
- iconContainer
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const useEffectOnce = require("./harmony12.cjs");
5
+ const React = require("react");
6
+ const TasksContext = require("./harmony109.cjs");
7
+ const taskEvents = require("./harmony112.cjs");
8
+ const TasksProvider = ({ children, config }) => {
9
+ const [tasks, setTasks] = React.useState([]);
10
+ const [loadingTasks, setLoadingTasks] = React.useState(true);
11
+ const [tasksCount, setTaskCount] = React.useState(0);
12
+ const {
13
+ getProjectUrl,
14
+ onLanguageCompleteConfirm,
15
+ onTasksWidgetOpen,
16
+ langNameOnClick,
17
+ langProgressOnClick,
18
+ taskTitleOnClick
19
+ } = config;
20
+ const { getTasks, getTasksCount } = config;
21
+ const fetchTasks = async () => {
22
+ setLoadingTasks(true);
23
+ const result = await getTasks();
24
+ setTasks(result);
25
+ setLoadingTasks(false);
26
+ return result;
27
+ };
28
+ const fetchTaskCount = async () => {
29
+ const result = await getTasksCount();
30
+ setTaskCount(result);
31
+ };
32
+ useEffectOnce.useEffectOnce(() => {
33
+ fetchTaskCount();
34
+ document.addEventListener(taskEvents.TaskEvents.TaskCompleted, fetchTaskCount);
35
+ document.addEventListener(taskEvents.TaskEvents.TaskClosed, fetchTaskCount);
36
+ document.addEventListener(taskEvents.TaskEvents.Refresh, fetchTaskCount);
37
+ return () => {
38
+ document.removeEventListener(taskEvents.TaskEvents.TaskCompleted, fetchTaskCount);
39
+ document.removeEventListener(taskEvents.TaskEvents.TaskClosed, fetchTaskCount);
40
+ document.removeEventListener(taskEvents.TaskEvents.Refresh, fetchTaskCount);
41
+ };
42
+ });
43
+ const providerValue = {
44
+ fetchTasks,
45
+ tasks,
46
+ tasksCount,
47
+ loadingTasks,
48
+ getProjectUrl,
49
+ onLanguageCompleteConfirm,
50
+ onTasksWidgetOpen,
51
+ langNameOnClick,
52
+ langProgressOnClick,
53
+ taskTitleOnClick
54
+ };
55
+ return /* @__PURE__ */ jsxRuntime.jsx(TasksContext.TasksContext.Provider, { value: providerValue, children });
6
56
  };
7
- exports.default = styles;
8
- exports.iconContainer = iconContainer;
57
+ const withTasksContext = (WrappedComponent) => function withTasksContextFn(props) {
58
+ const { config, ...rest } = props;
59
+ return /* @__PURE__ */ jsxRuntime.jsx(TasksProvider, { config, children: /* @__PURE__ */ jsxRuntime.jsx(WrappedComponent, { ...rest }) });
60
+ };
61
+ exports.TasksProvider = TasksProvider;
62
+ exports.withTasksContext = withTasksContext;
9
63
  //# sourceMappingURL=harmony111.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony111.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"harmony111.cjs","sources":["../src/components/Sidebar/Widgets/Tasks/TasksProvider.tsx"],"sourcesContent":["import { useEffectOnce } from '@utils'\nimport { type FC, type PropsWithChildren, useState } from 'react'\nimport { TasksContext } from './TasksContext'\nimport type { SidebarTask, SidebarTasksConfig, SidebarTasksContextProps } from './types'\nimport { TaskEvents } from './utils/taskEvents'\n\ntype TasksProviderProps = PropsWithChildren<{\n\tconfig: SidebarTasksConfig\n}>\n\nexport const TasksProvider = ({ children, config }: TasksProviderProps) => {\n\tconst [tasks, setTasks] = useState<SidebarTask[]>([])\n\tconst [loadingTasks, setLoadingTasks] = useState(true)\n\n\tconst [tasksCount, setTaskCount] = useState(0)\n\n\tconst {\n\t\tgetProjectUrl,\n\t\tonLanguageCompleteConfirm,\n\t\tonTasksWidgetOpen,\n\t\tlangNameOnClick,\n\t\tlangProgressOnClick,\n\t\ttaskTitleOnClick,\n\t} = config\n\n\tconst { getTasks, getTasksCount } = config\n\n\tconst fetchTasks = async () => {\n\t\tsetLoadingTasks(true)\n\t\tconst result = await getTasks()\n\t\tsetTasks(result)\n\t\tsetLoadingTasks(false)\n\t\treturn result\n\t}\n\n\tconst fetchTaskCount = async () => {\n\t\tconst result = await getTasksCount()\n\t\tsetTaskCount(result)\n\t}\n\n\tuseEffectOnce(() => {\n\t\tfetchTaskCount()\n\n\t\tdocument.addEventListener(TaskEvents.TaskCompleted, fetchTaskCount)\n\t\tdocument.addEventListener(TaskEvents.TaskClosed, fetchTaskCount)\n\t\tdocument.addEventListener(TaskEvents.Refresh, fetchTaskCount)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(TaskEvents.TaskCompleted, fetchTaskCount)\n\t\t\tdocument.removeEventListener(TaskEvents.TaskClosed, fetchTaskCount)\n\t\t\tdocument.removeEventListener(TaskEvents.Refresh, fetchTaskCount)\n\t\t}\n\t})\n\n\tconst providerValue: SidebarTasksContextProps = {\n\t\tfetchTasks,\n\t\ttasks,\n\t\ttasksCount,\n\t\tloadingTasks,\n\t\tgetProjectUrl,\n\t\tonLanguageCompleteConfirm,\n\t\tonTasksWidgetOpen,\n\t\tlangNameOnClick,\n\t\tlangProgressOnClick,\n\t\ttaskTitleOnClick,\n\t}\n\n\treturn <TasksContext.Provider value={providerValue}>{children}</TasksContext.Provider>\n}\n\nexport const withTasksContext = <P extends { config: SidebarTasksConfig }>(\n\tWrappedComponent: FC<Omit<P, 'config'>>,\n) =>\n\tfunction withTasksContextFn(props: P) {\n\t\tconst { config, ...rest } = props\n\n\t\treturn (\n\t\t\t<TasksProvider config={config}>\n\t\t\t\t<WrappedComponent {...rest} />\n\t\t\t</TasksProvider>\n\t\t)\n\t}\n"],"names":["useState","useEffectOnce","TaskEvents","TasksContext"],"mappings":";;;;;;;AAUO,MAAM,gBAAgB,CAAC,EAAE,UAAU,aAAiC;AAC1E,QAAM,CAAC,OAAO,QAAQ,IAAIA,MAAAA,SAAwB,CAAA,CAAE;AACpD,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAS,IAAI;AAErD,QAAM,CAAC,YAAY,YAAY,IAAIA,MAAAA,SAAS,CAAC;AAEvC,QAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACG;AAEE,QAAA,EAAE,UAAU,cAAA,IAAkB;AAEpC,QAAM,aAAa,YAAY;AAC9B,oBAAgB,IAAI;AACd,UAAA,SAAS,MAAM,SAAS;AAC9B,aAAS,MAAM;AACf,oBAAgB,KAAK;AACd,WAAA;AAAA,EACR;AAEA,QAAM,iBAAiB,YAAY;AAC5B,UAAA,SAAS,MAAM,cAAc;AACnC,iBAAa,MAAM;AAAA,EACpB;AAEAC,gBAAAA,cAAc,MAAM;AACJ,mBAAA;AAEN,aAAA,iBAAiBC,sBAAW,eAAe,cAAc;AACzD,aAAA,iBAAiBA,sBAAW,YAAY,cAAc;AACtD,aAAA,iBAAiBA,sBAAW,SAAS,cAAc;AAE5D,WAAO,MAAM;AACH,eAAA,oBAAoBA,sBAAW,eAAe,cAAc;AAC5D,eAAA,oBAAoBA,sBAAW,YAAY,cAAc;AACzD,eAAA,oBAAoBA,sBAAW,SAAS,cAAc;AAAA,IAChE;AAAA,EAAA,CACA;AAED,QAAM,gBAA0C;AAAA,IAC/C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,wCAAQC,aAAAA,aAAa,UAAb,EAAsB,OAAO,eAAgB,UAAS;AAC/D;AAEO,MAAM,mBAAmB,CAC/B,qBAEA,SAAS,mBAAmB,OAAU;AACrC,QAAM,EAAE,QAAQ,GAAG,KAAA,IAAS;AAE5B,wCACE,eAAc,EAAA,QACd,yCAAC,kBAAkB,EAAA,GAAG,KAAM,CAAA,GAC7B;AAEF;;;"}
@@ -1,9 +1,63 @@
1
- const iconContainer = "_iconContainer_nz34m_1";
2
- const styles = {
3
- iconContainer
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useEffectOnce } from "./harmony12.mjs";
3
+ import { useState } from "react";
4
+ import { TasksContext } from "./harmony109.mjs";
5
+ import { TaskEvents } from "./harmony112.mjs";
6
+ const TasksProvider = ({ children, config }) => {
7
+ const [tasks, setTasks] = useState([]);
8
+ const [loadingTasks, setLoadingTasks] = useState(true);
9
+ const [tasksCount, setTaskCount] = useState(0);
10
+ const {
11
+ getProjectUrl,
12
+ onLanguageCompleteConfirm,
13
+ onTasksWidgetOpen,
14
+ langNameOnClick,
15
+ langProgressOnClick,
16
+ taskTitleOnClick
17
+ } = config;
18
+ const { getTasks, getTasksCount } = config;
19
+ const fetchTasks = async () => {
20
+ setLoadingTasks(true);
21
+ const result = await getTasks();
22
+ setTasks(result);
23
+ setLoadingTasks(false);
24
+ return result;
25
+ };
26
+ const fetchTaskCount = async () => {
27
+ const result = await getTasksCount();
28
+ setTaskCount(result);
29
+ };
30
+ useEffectOnce(() => {
31
+ fetchTaskCount();
32
+ document.addEventListener(TaskEvents.TaskCompleted, fetchTaskCount);
33
+ document.addEventListener(TaskEvents.TaskClosed, fetchTaskCount);
34
+ document.addEventListener(TaskEvents.Refresh, fetchTaskCount);
35
+ return () => {
36
+ document.removeEventListener(TaskEvents.TaskCompleted, fetchTaskCount);
37
+ document.removeEventListener(TaskEvents.TaskClosed, fetchTaskCount);
38
+ document.removeEventListener(TaskEvents.Refresh, fetchTaskCount);
39
+ };
40
+ });
41
+ const providerValue = {
42
+ fetchTasks,
43
+ tasks,
44
+ tasksCount,
45
+ loadingTasks,
46
+ getProjectUrl,
47
+ onLanguageCompleteConfirm,
48
+ onTasksWidgetOpen,
49
+ langNameOnClick,
50
+ langProgressOnClick,
51
+ taskTitleOnClick
52
+ };
53
+ return /* @__PURE__ */ jsx(TasksContext.Provider, { value: providerValue, children });
54
+ };
55
+ const withTasksContext = (WrappedComponent) => function withTasksContextFn(props) {
56
+ const { config, ...rest } = props;
57
+ return /* @__PURE__ */ jsx(TasksProvider, { config, children: /* @__PURE__ */ jsx(WrappedComponent, { ...rest }) });
4
58
  };
5
59
  export {
6
- styles as default,
7
- iconContainer
60
+ TasksProvider,
61
+ withTasksContext
8
62
  };
9
63
  //# sourceMappingURL=harmony111.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony111.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"harmony111.mjs","sources":["../src/components/Sidebar/Widgets/Tasks/TasksProvider.tsx"],"sourcesContent":["import { useEffectOnce } from '@utils'\nimport { type FC, type PropsWithChildren, useState } from 'react'\nimport { TasksContext } from './TasksContext'\nimport type { SidebarTask, SidebarTasksConfig, SidebarTasksContextProps } from './types'\nimport { TaskEvents } from './utils/taskEvents'\n\ntype TasksProviderProps = PropsWithChildren<{\n\tconfig: SidebarTasksConfig\n}>\n\nexport const TasksProvider = ({ children, config }: TasksProviderProps) => {\n\tconst [tasks, setTasks] = useState<SidebarTask[]>([])\n\tconst [loadingTasks, setLoadingTasks] = useState(true)\n\n\tconst [tasksCount, setTaskCount] = useState(0)\n\n\tconst {\n\t\tgetProjectUrl,\n\t\tonLanguageCompleteConfirm,\n\t\tonTasksWidgetOpen,\n\t\tlangNameOnClick,\n\t\tlangProgressOnClick,\n\t\ttaskTitleOnClick,\n\t} = config\n\n\tconst { getTasks, getTasksCount } = config\n\n\tconst fetchTasks = async () => {\n\t\tsetLoadingTasks(true)\n\t\tconst result = await getTasks()\n\t\tsetTasks(result)\n\t\tsetLoadingTasks(false)\n\t\treturn result\n\t}\n\n\tconst fetchTaskCount = async () => {\n\t\tconst result = await getTasksCount()\n\t\tsetTaskCount(result)\n\t}\n\n\tuseEffectOnce(() => {\n\t\tfetchTaskCount()\n\n\t\tdocument.addEventListener(TaskEvents.TaskCompleted, fetchTaskCount)\n\t\tdocument.addEventListener(TaskEvents.TaskClosed, fetchTaskCount)\n\t\tdocument.addEventListener(TaskEvents.Refresh, fetchTaskCount)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(TaskEvents.TaskCompleted, fetchTaskCount)\n\t\t\tdocument.removeEventListener(TaskEvents.TaskClosed, fetchTaskCount)\n\t\t\tdocument.removeEventListener(TaskEvents.Refresh, fetchTaskCount)\n\t\t}\n\t})\n\n\tconst providerValue: SidebarTasksContextProps = {\n\t\tfetchTasks,\n\t\ttasks,\n\t\ttasksCount,\n\t\tloadingTasks,\n\t\tgetProjectUrl,\n\t\tonLanguageCompleteConfirm,\n\t\tonTasksWidgetOpen,\n\t\tlangNameOnClick,\n\t\tlangProgressOnClick,\n\t\ttaskTitleOnClick,\n\t}\n\n\treturn <TasksContext.Provider value={providerValue}>{children}</TasksContext.Provider>\n}\n\nexport const withTasksContext = <P extends { config: SidebarTasksConfig }>(\n\tWrappedComponent: FC<Omit<P, 'config'>>,\n) =>\n\tfunction withTasksContextFn(props: P) {\n\t\tconst { config, ...rest } = props\n\n\t\treturn (\n\t\t\t<TasksProvider config={config}>\n\t\t\t\t<WrappedComponent {...rest} />\n\t\t\t</TasksProvider>\n\t\t)\n\t}\n"],"names":[],"mappings":";;;;;AAUO,MAAM,gBAAgB,CAAC,EAAE,UAAU,aAAiC;AAC1E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,CAAA,CAAE;AACpD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,IAAI;AAErD,QAAM,CAAC,YAAY,YAAY,IAAI,SAAS,CAAC;AAEvC,QAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACG;AAEE,QAAA,EAAE,UAAU,cAAA,IAAkB;AAEpC,QAAM,aAAa,YAAY;AAC9B,oBAAgB,IAAI;AACd,UAAA,SAAS,MAAM,SAAS;AAC9B,aAAS,MAAM;AACf,oBAAgB,KAAK;AACd,WAAA;AAAA,EACR;AAEA,QAAM,iBAAiB,YAAY;AAC5B,UAAA,SAAS,MAAM,cAAc;AACnC,iBAAa,MAAM;AAAA,EACpB;AAEA,gBAAc,MAAM;AACJ,mBAAA;AAEN,aAAA,iBAAiB,WAAW,eAAe,cAAc;AACzD,aAAA,iBAAiB,WAAW,YAAY,cAAc;AACtD,aAAA,iBAAiB,WAAW,SAAS,cAAc;AAE5D,WAAO,MAAM;AACH,eAAA,oBAAoB,WAAW,eAAe,cAAc;AAC5D,eAAA,oBAAoB,WAAW,YAAY,cAAc;AACzD,eAAA,oBAAoB,WAAW,SAAS,cAAc;AAAA,IAChE;AAAA,EAAA,CACA;AAED,QAAM,gBAA0C;AAAA,IAC/C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,6BAAQ,aAAa,UAAb,EAAsB,OAAO,eAAgB,UAAS;AAC/D;AAEO,MAAM,mBAAmB,CAC/B,qBAEA,SAAS,mBAAmB,OAAU;AACrC,QAAM,EAAE,QAAQ,GAAG,KAAA,IAAS;AAE5B,6BACE,eAAc,EAAA,QACd,8BAAC,kBAAkB,EAAA,GAAG,KAAM,CAAA,GAC7B;AAEF;"}
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const _commonjsHelpers = require("./harmony133.cjs");
4
- const debounce$1 = require("./harmony114.cjs");
5
- var debounceExports = debounce$1.__require();
6
- const debounce = /* @__PURE__ */ _commonjsHelpers.getDefaultExportFromCjs(debounceExports);
7
- exports.default = debounce;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const TaskEvents = {
4
+ TaskCompleted: "task_completed",
5
+ TaskClosed: "task_closed",
6
+ Refresh: "refresh",
7
+ ShowDialog: "show_dialog"
8
+ };
9
+ exports.TaskEvents = TaskEvents;
8
10
  //# sourceMappingURL=harmony112.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony112.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
1
+ {"version":3,"file":"harmony112.cjs","sources":["../src/components/Sidebar/Widgets/Tasks/utils/taskEvents.ts"],"sourcesContent":["import type { TypesFromMap } from '@utils'\n\nexport const TaskEvents = {\n\tTaskCompleted: 'task_completed',\n\tTaskClosed: 'task_closed',\n\tRefresh: 'refresh',\n\tShowDialog: 'show_dialog',\n} as const\n\nexport type TaskEvent = TypesFromMap<typeof TaskEvents>\n\ntype SingleTaskPayload = {\n\ttaskId: string | number\n}\n\ntype DispatchTaskEventPayload =\n\t| {\n\t\t\tname: typeof TaskEvents.TaskCompleted\n\t\t\tdetail: SingleTaskPayload\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.TaskClosed\n\t\t\tdetail: SingleTaskPayload\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.Refresh\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.ShowDialog\n\t }\n\nexport const dispatchTaskEvent = (props: DispatchTaskEventPayload) => {\n\tconst { name } = props\n\tdocument.dispatchEvent(new CustomEvent(name, { detail: 'detail' in props ? props.detail : {} }))\n}\n"],"names":[],"mappings":";;AAEO,MAAM,aAAa;AAAA,EACzB,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AACb;;"}
@@ -1,8 +1,10 @@
1
- import { getDefaultExportFromCjs } from "./harmony133.mjs";
2
- import { __require as requireDebounce } from "./harmony114.mjs";
3
- var debounceExports = requireDebounce();
4
- const debounce = /* @__PURE__ */ getDefaultExportFromCjs(debounceExports);
1
+ const TaskEvents = {
2
+ TaskCompleted: "task_completed",
3
+ TaskClosed: "task_closed",
4
+ Refresh: "refresh",
5
+ ShowDialog: "show_dialog"
6
+ };
5
7
  export {
6
- debounce as default
8
+ TaskEvents
7
9
  };
8
10
  //# sourceMappingURL=harmony112.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony112.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"harmony112.mjs","sources":["../src/components/Sidebar/Widgets/Tasks/utils/taskEvents.ts"],"sourcesContent":["import type { TypesFromMap } from '@utils'\n\nexport const TaskEvents = {\n\tTaskCompleted: 'task_completed',\n\tTaskClosed: 'task_closed',\n\tRefresh: 'refresh',\n\tShowDialog: 'show_dialog',\n} as const\n\nexport type TaskEvent = TypesFromMap<typeof TaskEvents>\n\ntype SingleTaskPayload = {\n\ttaskId: string | number\n}\n\ntype DispatchTaskEventPayload =\n\t| {\n\t\t\tname: typeof TaskEvents.TaskCompleted\n\t\t\tdetail: SingleTaskPayload\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.TaskClosed\n\t\t\tdetail: SingleTaskPayload\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.Refresh\n\t }\n\t| {\n\t\t\tname: typeof TaskEvents.ShowDialog\n\t }\n\nexport const dispatchTaskEvent = (props: DispatchTaskEventPayload) => {\n\tconst { name } = props\n\tdocument.dispatchEvent(new CustomEvent(name, { detail: 'detail' in props ? props.detail : {} }))\n}\n"],"names":[],"mappings":"AAEO,MAAM,aAAa;AAAA,EACzB,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AACb;"}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const _commonjsHelpers = require("./harmony133.cjs");
4
- const throttle$1 = require("./harmony118.cjs");
5
- var throttleExports = throttle$1.__require();
6
- const throttle = /* @__PURE__ */ _commonjsHelpers.getDefaultExportFromCjs(throttleExports);
7
- exports.default = throttle;
3
+ const iconContainer = "_iconContainer_nz34m_1";
4
+ const styles = {
5
+ iconContainer
6
+ };
7
+ exports.default = styles;
8
+ exports.iconContainer = iconContainer;
8
9
  //# sourceMappingURL=harmony113.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony113.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
1
+ {"version":3,"file":"harmony113.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1,8 +1,9 @@
1
- import { getDefaultExportFromCjs } from "./harmony133.mjs";
2
- import { __require as requireThrottle } from "./harmony118.mjs";
3
- var throttleExports = requireThrottle();
4
- const throttle = /* @__PURE__ */ getDefaultExportFromCjs(throttleExports);
1
+ const iconContainer = "_iconContainer_nz34m_1";
2
+ const styles = {
3
+ iconContainer
4
+ };
5
5
  export {
6
- throttle as default
6
+ styles as default,
7
+ iconContainer
7
8
  };
8
9
  //# sourceMappingURL=harmony113.mjs.map
@@ -8,7 +8,7 @@ const date = require("./harmony11.cjs");
8
8
  const dateFns = require("date-fns");
9
9
  const index = require("./harmony129.cjs");
10
10
  const TaskLanguage = require("./harmony130.cjs");
11
- const TasksContext = require("./harmony107.cjs");
11
+ const TasksContext = require("./harmony109.cjs");
12
12
  const content = require("./harmony131.cjs");
13
13
  const TaskOverview_module = require("./harmony132.cjs");
14
14
  const TaskOverview = ({ task }) => {
@@ -6,7 +6,7 @@ import { formatDate } from "./harmony11.mjs";
6
6
  import { parseISO } from "date-fns";
7
7
  import { splitFileName } from "./harmony129.mjs";
8
8
  import { TaskLanguage } from "./harmony130.mjs";
9
- import { useTasks } from "./harmony107.mjs";
9
+ import { useTasks } from "./harmony109.mjs";
10
10
  import { getTaskLanguages, tagColor } from "./harmony131.mjs";
11
11
  import styles from "./harmony132.mjs";
12
12
  const TaskOverview = ({ task }) => {
@@ -3,10 +3,17 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const createHeaderBuilderMiddleware = require("./harmony18.cjs");
4
4
  const jwtTokenPayload = require("./harmony16.cjs");
5
5
  const UnauthorizedError = require("./harmony15.cjs");
6
+ const NewJwtIssuedEvent = require("./harmony101.cjs");
6
7
  function JwtAuthHeaderBuilderMiddleware(props) {
7
8
  return createHeaderBuilderMiddleware.createHeaderBuilderMiddleware(async (builder) => {
8
9
  var _a, _b;
9
- const token = props.getCurrentToken() ?? await ((_a = props.generateNewToken) == null ? void 0 : _a.call(props));
10
+ let token = props.getCurrentToken();
11
+ if (!token) {
12
+ token = await ((_a = props.generateNewToken) == null ? void 0 : _a.call(props)) ?? null;
13
+ if (token) {
14
+ window == null ? void 0 : window.dispatchEvent(new NewJwtIssuedEvent.NewJwtIssuedEvent(token));
15
+ }
16
+ }
10
17
  if (!token) {
11
18
  throw new UnauthorizedError.UnauthorizedError();
12
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"harmony13.cjs","sources":["../src/features/auth/core/middleware/jwtAuthHeaderBuilderMiddleware.ts"],"sourcesContent":["import { createHeaderBuilderMiddleware } from '@features/auth/core/headers/createHeaderBuilderMiddleware'\nimport { parseJwtTokenPayload } from '@features/auth/core/utils/jwtTokenPayload'\nimport { UnauthorizedError } from '@features/auth/errors/UnauthorizedError'\nimport type { JwtToken } from '@features/publicApi/types/userTokenTypes'\n\nexport type JwtAuthHeaderBuilderMiddlewareProps = {\n\trefreshToken: (current: JwtToken) => Promise<JwtToken | null>\n\tgetCurrentToken: () => JwtToken | null\n\tgenerateNewToken?: () => Promise<JwtToken | null>\n\tonNewTokenIssued?: (token: JwtToken) => void\n}\n\nexport function JwtAuthHeaderBuilderMiddleware(props: JwtAuthHeaderBuilderMiddlewareProps) {\n\treturn createHeaderBuilderMiddleware(async (builder) => {\n\t\tconst token = props.getCurrentToken() ?? (await props.generateNewToken?.())\n\n\t\tif (!token) {\n\t\t\tthrow new UnauthorizedError()\n\t\t}\n\n\t\t// Check if the token is expired or will expire in less than 5 minutes\n\t\tconst { exp } = parseJwtTokenPayload(token.accessToken) ?? { exp: 0 }\n\t\tconst tokenExpirationInMilliseconds = exp * 1000\n\t\tconst tokenExpirationSafetyMargin = 5 * 60 * 1000 // 5 minutes in milliseconds\n\t\tif (Date.now() < tokenExpirationInMilliseconds - tokenExpirationSafetyMargin) {\n\t\t\treturn builder.add('authorization', `Bearer ${token.accessToken}`)\n\t\t}\n\n\t\tconst newToken = await props.refreshToken(token)\n\n\t\tif (!newToken) {\n\t\t\tthrow new UnauthorizedError()\n\t\t}\n\n\t\tprops.onNewTokenIssued?.(newToken)\n\n\t\treturn builder.add('authorization', `Bearer ${newToken.accessToken}`)\n\t})\n}\n"],"names":["createHeaderBuilderMiddleware","UnauthorizedError","parseJwtTokenPayload"],"mappings":";;;;;AAYO,SAAS,+BAA+B,OAA4C;AACnF,SAAAA,8BAAAA,8BAA8B,OAAO,YAAY;;AACvD,UAAM,QAAQ,MAAM,gBAAsB,KAAA,QAAM,WAAM,qBAAN;AAEhD,QAAI,CAAC,OAAO;AACX,YAAM,IAAIC,kBAAAA,kBAAkB;AAAA,IAAA;AAIvB,UAAA,EAAE,IAAQ,IAAAC,qCAAqB,MAAM,WAAW,KAAK,EAAE,KAAK,EAAE;AACpE,UAAM,gCAAgC,MAAM;AACtC,UAAA,8BAA8B,IAAI,KAAK;AAC7C,QAAI,KAAK,QAAQ,gCAAgC,6BAA6B;AAC7E,aAAO,QAAQ,IAAI,iBAAiB,UAAU,MAAM,WAAW,EAAE;AAAA,IAAA;AAGlE,UAAM,WAAW,MAAM,MAAM,aAAa,KAAK;AAE/C,QAAI,CAAC,UAAU;AACd,YAAM,IAAID,kBAAAA,kBAAkB;AAAA,IAAA;AAG7B,gBAAM,qBAAN,+BAAyB;AAEzB,WAAO,QAAQ,IAAI,iBAAiB,UAAU,SAAS,WAAW,EAAE;AAAA,EAAA,CACpE;AACF;;"}
1
+ {"version":3,"file":"harmony13.cjs","sources":["../src/features/auth/core/middleware/jwtAuthHeaderBuilderMiddleware.ts"],"sourcesContent":["import { createHeaderBuilderMiddleware } from '@features/auth/core/headers/createHeaderBuilderMiddleware'\nimport { parseJwtTokenPayload } from '@features/auth/core/utils/jwtTokenPayload'\nimport { UnauthorizedError } from '@features/auth/errors/UnauthorizedError'\nimport { NewJwtIssuedEvent } from '@features/auth/frontend/events/NewJwtIssuedEvent'\nimport type { JwtToken } from '@features/publicApi/types/userTokenTypes'\n\nexport type JwtAuthHeaderBuilderMiddlewareProps = {\n\trefreshToken: (current: JwtToken) => Promise<JwtToken | null>\n\tgetCurrentToken: () => JwtToken | null\n\tgenerateNewToken?: () => Promise<JwtToken | null>\n\tonNewTokenIssued?: (token: JwtToken) => void\n}\n\nexport function JwtAuthHeaderBuilderMiddleware(props: JwtAuthHeaderBuilderMiddlewareProps) {\n\treturn createHeaderBuilderMiddleware(async (builder) => {\n\t\t// Check if current token exists\n\t\tlet token = props.getCurrentToken()\n\n\t\tif (!token) {\n\t\t\t// Attempt to generate new token\n\t\t\ttoken = (await props.generateNewToken?.()) ?? null\n\n\t\t\t// If new token is generated, dispatch an event to update payload hooks\n\t\t\tif (token) {\n\t\t\t\twindow?.dispatchEvent(new NewJwtIssuedEvent(token))\n\t\t\t}\n\t\t}\n\n\t\tif (!token) {\n\t\t\tthrow new UnauthorizedError()\n\t\t}\n\n\t\t// Check if the token is expired or will expire in less than 5 minutes\n\t\tconst { exp } = parseJwtTokenPayload(token.accessToken) ?? { exp: 0 }\n\t\tconst tokenExpirationInMilliseconds = exp * 1000\n\t\tconst tokenExpirationSafetyMargin = 5 * 60 * 1000 // 5 minutes in milliseconds\n\t\tif (Date.now() < tokenExpirationInMilliseconds - tokenExpirationSafetyMargin) {\n\t\t\treturn builder.add('authorization', `Bearer ${token.accessToken}`)\n\t\t}\n\n\t\tconst newToken = await props.refreshToken(token)\n\n\t\tif (!newToken) {\n\t\t\tthrow new UnauthorizedError()\n\t\t}\n\n\t\tprops.onNewTokenIssued?.(newToken)\n\n\t\treturn builder.add('authorization', `Bearer ${newToken.accessToken}`)\n\t})\n}\n"],"names":["createHeaderBuilderMiddleware","NewJwtIssuedEvent","UnauthorizedError","parseJwtTokenPayload"],"mappings":";;;;;;AAaO,SAAS,+BAA+B,OAA4C;AACnF,SAAAA,8BAAAA,8BAA8B,OAAO,YAAY;;AAEnD,QAAA,QAAQ,MAAM,gBAAgB;AAElC,QAAI,CAAC,OAAO;AAEF,cAAA,QAAM,WAAM,qBAAN,mCAA+B;AAG9C,UAAI,OAAO;AACV,yCAAQ,cAAc,IAAIC,kBAAkB,kBAAA,KAAK;AAAA,MAAC;AAAA,IACnD;AAGD,QAAI,CAAC,OAAO;AACX,YAAM,IAAIC,kBAAAA,kBAAkB;AAAA,IAAA;AAIvB,UAAA,EAAE,IAAQ,IAAAC,qCAAqB,MAAM,WAAW,KAAK,EAAE,KAAK,EAAE;AACpE,UAAM,gCAAgC,MAAM;AACtC,UAAA,8BAA8B,IAAI,KAAK;AAC7C,QAAI,KAAK,QAAQ,gCAAgC,6BAA6B;AAC7E,aAAO,QAAQ,IAAI,iBAAiB,UAAU,MAAM,WAAW,EAAE;AAAA,IAAA;AAGlE,UAAM,WAAW,MAAM,MAAM,aAAa,KAAK;AAE/C,QAAI,CAAC,UAAU;AACd,YAAM,IAAID,kBAAAA,kBAAkB;AAAA,IAAA;AAG7B,gBAAM,qBAAN,+BAAyB;AAEzB,WAAO,QAAQ,IAAI,iBAAiB,UAAU,SAAS,WAAW,EAAE;AAAA,EAAA,CACpE;AACF;;"}