@lokalise/harmony 1.36.0 → 1.36.1

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 (127) hide show
  1. package/dist/harmony103.cjs +11 -96
  2. package/dist/harmony103.cjs.map +1 -1
  3. package/dist/harmony103.mjs +11 -79
  4. package/dist/harmony103.mjs.map +1 -1
  5. package/dist/harmony104.cjs +19 -22
  6. package/dist/harmony104.cjs.map +1 -1
  7. package/dist/harmony104.mjs +18 -21
  8. package/dist/harmony104.mjs.map +1 -1
  9. package/dist/harmony105.cjs +21 -6
  10. package/dist/harmony105.cjs.map +1 -1
  11. package/dist/harmony105.mjs +20 -5
  12. package/dist/harmony105.mjs.map +1 -1
  13. package/dist/harmony106.cjs +5 -131
  14. package/dist/harmony106.cjs.map +1 -1
  15. package/dist/harmony106.mjs +5 -131
  16. package/dist/harmony106.mjs.map +1 -1
  17. package/dist/harmony107.cjs +132 -12
  18. package/dist/harmony107.cjs.map +1 -1
  19. package/dist/harmony107.mjs +131 -11
  20. package/dist/harmony107.mjs.map +1 -1
  21. package/dist/harmony108.cjs +13 -6
  22. package/dist/harmony108.cjs.map +1 -1
  23. package/dist/harmony108.mjs +12 -5
  24. package/dist/harmony108.mjs.map +1 -1
  25. package/dist/harmony109.cjs +5 -40
  26. package/dist/harmony109.cjs.map +1 -1
  27. package/dist/harmony109.mjs +5 -40
  28. package/dist/harmony109.mjs.map +1 -1
  29. package/dist/harmony110.cjs +33 -53
  30. package/dist/harmony110.cjs.map +1 -1
  31. package/dist/harmony110.mjs +34 -54
  32. package/dist/harmony110.mjs.map +1 -1
  33. package/dist/harmony111.cjs +59 -6
  34. package/dist/harmony111.cjs.map +1 -1
  35. package/dist/harmony111.mjs +59 -6
  36. package/dist/harmony111.mjs.map +1 -1
  37. package/dist/harmony112.cjs +6 -13
  38. package/dist/harmony112.cjs.map +1 -1
  39. package/dist/harmony112.mjs +6 -13
  40. package/dist/harmony112.mjs.map +1 -1
  41. package/dist/harmony113.cjs +7 -19
  42. package/dist/harmony113.cjs.map +1 -1
  43. package/dist/harmony113.mjs +6 -18
  44. package/dist/harmony113.mjs.map +1 -1
  45. package/dist/harmony114.cjs +99 -6
  46. package/dist/harmony114.cjs.map +1 -1
  47. package/dist/harmony114.mjs +81 -5
  48. package/dist/harmony114.mjs.map +1 -1
  49. package/dist/harmony115.cjs +63 -6
  50. package/dist/harmony115.cjs.map +1 -1
  51. package/dist/harmony115.mjs +62 -5
  52. package/dist/harmony115.mjs.map +1 -1
  53. package/dist/harmony116.cjs +89 -6
  54. package/dist/harmony116.cjs.map +1 -1
  55. package/dist/harmony116.mjs +88 -5
  56. package/dist/harmony116.mjs.map +1 -1
  57. package/dist/harmony117.cjs +19 -63
  58. package/dist/harmony117.cjs.map +1 -1
  59. package/dist/harmony117.mjs +18 -62
  60. package/dist/harmony117.mjs.map +1 -1
  61. package/dist/harmony118.cjs +6 -89
  62. package/dist/harmony118.cjs.map +1 -1
  63. package/dist/harmony118.mjs +5 -88
  64. package/dist/harmony118.mjs.map +1 -1
  65. package/dist/harmony119.cjs +5 -18
  66. package/dist/harmony119.cjs.map +1 -1
  67. package/dist/harmony119.mjs +5 -18
  68. package/dist/harmony119.mjs.map +1 -1
  69. package/dist/harmony122.cjs +1 -1
  70. package/dist/harmony122.mjs +1 -1
  71. package/dist/harmony123.cjs +2 -2
  72. package/dist/harmony123.mjs +2 -2
  73. package/dist/harmony125.cjs +7 -13
  74. package/dist/harmony125.cjs.map +1 -1
  75. package/dist/harmony125.mjs +7 -13
  76. package/dist/harmony125.mjs.map +1 -1
  77. package/dist/harmony126.cjs +57 -15
  78. package/dist/harmony126.cjs.map +1 -1
  79. package/dist/harmony126.mjs +57 -15
  80. package/dist/harmony126.mjs.map +1 -1
  81. package/dist/harmony127.cjs +59 -15
  82. package/dist/harmony127.cjs.map +1 -1
  83. package/dist/harmony127.mjs +59 -15
  84. package/dist/harmony127.mjs.map +1 -1
  85. package/dist/harmony128.cjs +18 -7
  86. package/dist/harmony128.cjs.map +1 -1
  87. package/dist/harmony128.mjs +17 -6
  88. package/dist/harmony128.mjs.map +1 -1
  89. package/dist/harmony129.cjs +13 -57
  90. package/dist/harmony129.cjs.map +1 -1
  91. package/dist/harmony129.mjs +13 -57
  92. package/dist/harmony129.mjs.map +1 -1
  93. package/dist/harmony13.cjs +1 -1
  94. package/dist/harmony13.mjs +1 -1
  95. package/dist/harmony130.cjs +14 -59
  96. package/dist/harmony130.cjs.map +1 -1
  97. package/dist/harmony130.mjs +14 -59
  98. package/dist/harmony130.mjs.map +1 -1
  99. package/dist/harmony131.cjs +17 -19
  100. package/dist/harmony131.cjs.map +1 -1
  101. package/dist/harmony131.mjs +16 -18
  102. package/dist/harmony131.mjs.map +1 -1
  103. package/dist/harmony137.cjs +1 -1
  104. package/dist/harmony137.mjs +1 -1
  105. package/dist/harmony140.cjs +1 -1
  106. package/dist/harmony140.mjs +1 -1
  107. package/dist/harmony16.cjs +1 -1
  108. package/dist/harmony16.mjs +1 -1
  109. package/dist/harmony23.cjs +1 -1
  110. package/dist/harmony23.mjs +1 -1
  111. package/dist/harmony24.cjs +1 -1
  112. package/dist/harmony24.mjs +1 -1
  113. package/dist/harmony27.cjs +1 -1
  114. package/dist/harmony27.cjs.map +1 -1
  115. package/dist/harmony27.mjs +1 -1
  116. package/dist/harmony27.mjs.map +1 -1
  117. package/dist/harmony72.cjs +1 -1
  118. package/dist/harmony72.mjs +1 -1
  119. package/dist/harmony82.cjs +6 -6
  120. package/dist/harmony82.mjs +6 -6
  121. package/dist/harmony91.cjs +1 -1
  122. package/dist/harmony91.mjs +1 -1
  123. package/dist/harmony92.cjs +1 -1
  124. package/dist/harmony92.mjs +1 -1
  125. package/dist/harmony97.cjs +1 -1
  126. package/dist/harmony97.mjs +1 -1
  127. package/package.json +1 -1
@@ -1,65 +1,21 @@
1
- const min = Math.min;
2
- const max = Math.max;
3
- function clamp(start, value, end) {
4
- return max(start, min(value, end));
5
- }
6
- function evaluate(value, param) {
7
- return typeof value === "function" ? value(param) : value;
8
- }
9
- function getSide(placement) {
10
- return placement.split("-")[0];
11
- }
12
- function getOppositeAxis(axis) {
13
- return axis === "x" ? "y" : "x";
14
- }
15
- function getSideAxis(placement) {
16
- return ["top", "bottom"].includes(getSide(placement)) ? "y" : "x";
17
- }
18
- function expandPaddingObject(padding) {
19
- return {
20
- top: 0,
21
- right: 0,
22
- bottom: 0,
23
- left: 0,
24
- ...padding
25
- };
26
- }
27
- function getPaddingObject(padding) {
28
- return typeof padding !== "number" ? expandPaddingObject(padding) : {
29
- top: padding,
30
- right: padding,
31
- bottom: padding,
32
- left: padding
33
- };
34
- }
35
- function rectToClientRect(rect) {
36
- const {
37
- x,
38
- y,
39
- width,
40
- height
41
- } = rect;
42
- return {
43
- width,
44
- height,
45
- top: y,
46
- left: x,
47
- right: x + width,
48
- bottom: y + height,
49
- x,
50
- y
51
- };
52
- }
1
+ const loadingContainer = "_loadingContainer_19d6m_1";
2
+ const noTasksContainer = "_noTasksContainer_19d6m_7";
3
+ const noTasksHeading = "_noTasksHeading_19d6m_14";
4
+ const noTasksText = "_noTasksText_19d6m_18";
5
+ const tasksContainer = "_tasksContainer_19d6m_23";
6
+ const styles = {
7
+ loadingContainer,
8
+ noTasksContainer,
9
+ noTasksHeading,
10
+ noTasksText,
11
+ tasksContainer
12
+ };
53
13
  export {
54
- clamp,
55
- evaluate,
56
- expandPaddingObject,
57
- getOppositeAxis,
58
- getPaddingObject,
59
- getSide,
60
- getSideAxis,
61
- max,
62
- min,
63
- rectToClientRect
14
+ styles as default,
15
+ loadingContainer,
16
+ noTasksContainer,
17
+ noTasksHeading,
18
+ noTasksText,
19
+ tasksContainer
64
20
  };
65
21
  //# sourceMappingURL=harmony117.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony117.mjs","sources":["../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs"],"sourcesContent":["/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n"],"names":[],"mappings":"AAQK,MAAC,MAAM,KAAK;AACZ,MAAC,MAAM,KAAK;AAiBjB,SAAS,MAAM,OAAO,OAAO,KAAK;AAChC,SAAO,IAAI,OAAO,IAAI,OAAO,GAAG,CAAC;AACnC;AACA,SAAS,SAAS,OAAO,OAAO;AAC9B,SAAO,OAAO,UAAU,aAAa,MAAM,KAAK,IAAI;AACtD;AACA,SAAS,QAAQ,WAAW;AAC1B,SAAO,UAAU,MAAM,GAAG,EAAE,CAAC;AAC/B;AAIA,SAAS,gBAAgB,MAAM;AAC7B,SAAO,SAAS,MAAM,MAAM;AAC9B;AAIA,SAAS,YAAY,WAAW;AAC9B,SAAO,CAAC,OAAO,QAAQ,EAAE,SAAS,QAAQ,SAAS,CAAC,IAAI,MAAM;AAChE;AAuDA,SAAS,oBAAoB,SAAS;AACpC,SAAO;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACJ;AACH;AACA,SAAS,iBAAiB,SAAS;AACjC,SAAO,OAAO,YAAY,WAAW,oBAAoB,OAAO,IAAI;AAAA,IAClE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,EACP;AACH;AACA,SAAS,iBAAiB,MAAM;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO,IAAI;AAAA,IACX,QAAQ,IAAI;AAAA,IACZ;AAAA,IACA;AAAA,EACD;AACH;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"harmony117.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,91 +1,8 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const louis = require("@lokalise/louis");
5
- const text = require("./harmony9.cjs");
6
- const url = require("./harmony10.cjs");
7
- const date = require("./harmony11.cjs");
8
- const dateFns = require("date-fns");
9
- const index = require("./harmony128.cjs");
10
- const TaskLanguage = require("./harmony129.cjs");
11
- const TasksContext = require("./harmony108.cjs");
12
- const content = require("./harmony130.cjs");
13
- const TaskOverview_module = require("./harmony131.cjs");
14
- const TaskOverview = ({ task }) => {
15
- const { getProjectUrl, taskTitleOnClick } = TasksContext.useTasks();
16
- const taskLanguages = content.getTaskLanguages(task.langs);
17
- const handleDownloadStyleGuide = (styleGuide) => {
18
- window.open(
19
- `/style-guide/${task.team_id}/download/${styleGuide.id}/link`,
20
- "_blank",
21
- "noopener,noreferrer"
22
- );
23
- };
24
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: TaskOverview_module.default.taskContainer, children: [
25
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-row gap-1 items-center", children: [
26
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-row gap-1 items-start flex-wrap", children: [
27
- /* @__PURE__ */ jsxRuntime.jsx(louis.Tag, { color: content.tagColor[task.task_type], variant: "solid", children: task.task_type.toLocaleUpperCase() }),
28
- task.due_date && /* @__PURE__ */ jsxRuntime.jsxs(louis.Tag, { color: "#EAB308", children: [
29
- "DUE ",
30
- date.formatDate(dateFns.parseISO(task.due_date), "yyyy-MM-dd")
31
- ] })
32
- ] }),
33
- task.style_guides.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-row", children: task.style_guides.length === 1 ? /* @__PURE__ */ jsxRuntime.jsx(
34
- louis.Button,
35
- {
36
- size: "sm",
37
- variant: "secondary",
38
- onClick: () => handleDownloadStyleGuide(task.style_guides[0]),
39
- children: "Download style guide"
40
- }
41
- ) : /* @__PURE__ */ jsxRuntime.jsx(
42
- louis.Menu,
43
- {
44
- menuButton: /* @__PURE__ */ jsxRuntime.jsx(louis.Button, { variant: "secondary", size: "sm", children: "Download style guide" }),
45
- children: /* @__PURE__ */ jsxRuntime.jsx(louis.MenuList, { children: task.style_guides.map((styleGuide) => /* @__PURE__ */ jsxRuntime.jsx(
46
- louis.MenuItem,
47
- {
48
- onClick: () => handleDownloadStyleGuide(styleGuide),
49
- children: index.splitFileName(styleGuide.name).name
50
- },
51
- styleGuide.id
52
- )) })
53
- }
54
- ) })
55
- ] }),
56
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: TaskOverview_module.default.taskTitle, children: /* @__PURE__ */ jsxRuntime.jsx(
57
- louis.Link,
58
- {
59
- href: getProjectUrl({ task, view: "multi" }),
60
- onClick: () => {
61
- taskTitleOnClick == null ? void 0 : taskTitleOnClick({ task });
62
- },
63
- children: task.title
64
- }
65
- ) }),
66
- task.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: TaskOverview_module.default.taskDescription, children: text.convertNewLineToBreakTag(url.makeUrlClickable(task.description)) }),
67
- /* @__PURE__ */ jsxRuntime.jsxs("table", { className: TaskOverview_module.default.languagesTable, children: [
68
- /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
69
- /* @__PURE__ */ jsxRuntime.jsx("th", { children: "Languages" }),
70
- /* @__PURE__ */ jsxRuntime.jsx("th", { children: "Words to do" }),
71
- /* @__PURE__ */ jsxRuntime.jsx("th", { children: "Progress" }),
72
- /* @__PURE__ */ jsxRuntime.jsx("th", { children: "Status" })
73
- ] }) }),
74
- /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: taskLanguages.map((language) => /* @__PURE__ */ jsxRuntime.jsx(TaskLanguage.TaskLanguage, { language, task }, language.lang_id)) })
75
- ] }),
76
- /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "sidebar-task-overview-metadata", className: TaskOverview_module.default.metadata, children: [
77
- /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
78
- "Source: ",
79
- task.source_lang_name
80
- ] }),
81
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: task.created_by_fullname }),
82
- /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
83
- "In ",
84
- task.project_name,
85
- task.master_branching_enabled === "1" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: TaskOverview_module.default.tag, children: task.branch_name ? task.branch_name : "master" })
86
- ] })
87
- ] })
88
- ] });
89
- };
90
- exports.TaskOverview = TaskOverview;
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const _commonjsHelpers = require("./harmony136.cjs");
4
+ const debounce$1 = require("./harmony120.cjs");
5
+ var debounceExports = debounce$1.__require();
6
+ const debounce = /* @__PURE__ */ _commonjsHelpers.getDefaultExportFromCjs(debounceExports);
7
+ exports.default = debounce;
91
8
  //# sourceMappingURL=harmony118.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony118.cjs","sources":["../src/components/Sidebar/Widgets/Tasks/TaskOverview/TaskOverview.tsx"],"sourcesContent":["import { Button, Link, Menu, MenuItem, MenuList, Tag } from '@lokalise/louis'\nimport { convertNewLineToBreakTag, formatDate, makeUrlClickable } from '@utils'\nimport { parseISO } from 'date-fns'\nimport { splitFileName } from '../../../utils'\nimport { TaskLanguage } from '../TaskLanguage/TaskLanguage'\nimport { useTasks } from '../TasksContext'\nimport type { SidebarTask, SidebarTaskStyleGuide } from '../types'\nimport { getTaskLanguages, tagColor } from '../utils/content'\nimport styles from './TaskOverview.module.css'\n\nexport type TaskProps = {\n\ttask: SidebarTask\n}\n\nexport const TaskOverview = ({ task }: TaskProps) => {\n\tconst { getProjectUrl, taskTitleOnClick } = useTasks()\n\n\tconst taskLanguages = getTaskLanguages(task.langs)\n\n\tconst handleDownloadStyleGuide = (styleGuide: SidebarTaskStyleGuide) => {\n\t\twindow.open(\n\t\t\t`/style-guide/${task.team_id}/download/${styleGuide.id}/link`,\n\t\t\t'_blank',\n\t\t\t'noopener,noreferrer',\n\t\t)\n\t}\n\n\treturn (\n\t\t<div className={styles.taskContainer}>\n\t\t\t<div className=\"flex-row gap-1 items-center\">\n\t\t\t\t<div className=\"flex-row gap-1 items-start flex-wrap\">\n\t\t\t\t\t<Tag color={tagColor[task.task_type]} variant=\"solid\">\n\t\t\t\t\t\t{task.task_type.toLocaleUpperCase()}\n\t\t\t\t\t</Tag>\n\t\t\t\t\t{task.due_date && (\n\t\t\t\t\t\t<Tag color={'#EAB308'}>DUE {formatDate(parseISO(task.due_date), 'yyyy-MM-dd')}</Tag>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{task.style_guides.length > 0 && (\n\t\t\t\t\t<div className=\"flex-row\">\n\t\t\t\t\t\t{task.style_guides.length === 1 ? (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tonClick={() => handleDownloadStyleGuide(task.style_guides[0])}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tDownload style guide\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Menu\n\t\t\t\t\t\t\t\tmenuButton={\n\t\t\t\t\t\t\t\t\t<Button variant=\"secondary\" size=\"sm\">\n\t\t\t\t\t\t\t\t\t\tDownload style guide\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<MenuList>\n\t\t\t\t\t\t\t\t\t{task.style_guides.map((styleGuide) => (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey={styleGuide.id}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleDownloadStyleGuide(styleGuide)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{splitFileName(styleGuide.name).name}\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</MenuList>\n\t\t\t\t\t\t\t</Menu>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<h4 className={styles.taskTitle}>\n\t\t\t\t<Link\n\t\t\t\t\thref={getProjectUrl({ task, view: 'multi' })}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\ttaskTitleOnClick?.({ task })\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{task.title}\n\t\t\t\t</Link>\n\t\t\t</h4>\n\n\t\t\t{task.description && (\n\t\t\t\t<div className={styles.taskDescription}>\n\t\t\t\t\t{convertNewLineToBreakTag(makeUrlClickable(task.description))}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<table className={styles.languagesTable}>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Languages</th>\n\t\t\t\t\t\t<th>Words to do</th>\n\t\t\t\t\t\t<th>Progress</th>\n\t\t\t\t\t\t<th>Status</th>\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{taskLanguages.map((language) => (\n\t\t\t\t\t\t<TaskLanguage key={language.lang_id} language={language} task={task} />\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<div data-testid=\"sidebar-task-overview-metadata\" className={styles.metadata}>\n\t\t\t\t<span>Source: {task.source_lang_name}</span>\n\t\t\t\t<span>{task.created_by_fullname}</span>\n\t\t\t\t<span>\n\t\t\t\t\tIn {task.project_name}\n\t\t\t\t\t{task.master_branching_enabled === '1' && (\n\t\t\t\t\t\t<div className={styles.tag}>{task.branch_name ? task.branch_name : 'master'}</div>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n"],"names":["useTasks","getTaskLanguages","jsxs","styles","jsx","Tag","tagColor","formatDate","parseISO","Button","Menu","MenuList","MenuItem","splitFileName","Link","convertNewLineToBreakTag","makeUrlClickable","TaskLanguage"],"mappings":"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"}
1
+ {"version":3,"file":"harmony118.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1,91 +1,8 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { Tag, Button, Menu, MenuList, MenuItem, Link } from "@lokalise/louis";
3
- import { convertNewLineToBreakTag } from "./harmony9.mjs";
4
- import { makeUrlClickable } from "./harmony10.mjs";
5
- import { formatDate } from "./harmony11.mjs";
6
- import { parseISO } from "date-fns";
7
- import { splitFileName } from "./harmony128.mjs";
8
- import { TaskLanguage } from "./harmony129.mjs";
9
- import { useTasks } from "./harmony108.mjs";
10
- import { getTaskLanguages, tagColor } from "./harmony130.mjs";
11
- import styles from "./harmony131.mjs";
12
- const TaskOverview = ({ task }) => {
13
- const { getProjectUrl, taskTitleOnClick } = useTasks();
14
- const taskLanguages = getTaskLanguages(task.langs);
15
- const handleDownloadStyleGuide = (styleGuide) => {
16
- window.open(
17
- `/style-guide/${task.team_id}/download/${styleGuide.id}/link`,
18
- "_blank",
19
- "noopener,noreferrer"
20
- );
21
- };
22
- return /* @__PURE__ */ jsxs("div", { className: styles.taskContainer, children: [
23
- /* @__PURE__ */ jsxs("div", { className: "flex-row gap-1 items-center", children: [
24
- /* @__PURE__ */ jsxs("div", { className: "flex-row gap-1 items-start flex-wrap", children: [
25
- /* @__PURE__ */ jsx(Tag, { color: tagColor[task.task_type], variant: "solid", children: task.task_type.toLocaleUpperCase() }),
26
- task.due_date && /* @__PURE__ */ jsxs(Tag, { color: "#EAB308", children: [
27
- "DUE ",
28
- formatDate(parseISO(task.due_date), "yyyy-MM-dd")
29
- ] })
30
- ] }),
31
- task.style_guides.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex-row", children: task.style_guides.length === 1 ? /* @__PURE__ */ jsx(
32
- Button,
33
- {
34
- size: "sm",
35
- variant: "secondary",
36
- onClick: () => handleDownloadStyleGuide(task.style_guides[0]),
37
- children: "Download style guide"
38
- }
39
- ) : /* @__PURE__ */ jsx(
40
- Menu,
41
- {
42
- menuButton: /* @__PURE__ */ jsx(Button, { variant: "secondary", size: "sm", children: "Download style guide" }),
43
- children: /* @__PURE__ */ jsx(MenuList, { children: task.style_guides.map((styleGuide) => /* @__PURE__ */ jsx(
44
- MenuItem,
45
- {
46
- onClick: () => handleDownloadStyleGuide(styleGuide),
47
- children: splitFileName(styleGuide.name).name
48
- },
49
- styleGuide.id
50
- )) })
51
- }
52
- ) })
53
- ] }),
54
- /* @__PURE__ */ jsx("h4", { className: styles.taskTitle, children: /* @__PURE__ */ jsx(
55
- Link,
56
- {
57
- href: getProjectUrl({ task, view: "multi" }),
58
- onClick: () => {
59
- taskTitleOnClick == null ? void 0 : taskTitleOnClick({ task });
60
- },
61
- children: task.title
62
- }
63
- ) }),
64
- task.description && /* @__PURE__ */ jsx("div", { className: styles.taskDescription, children: convertNewLineToBreakTag(makeUrlClickable(task.description)) }),
65
- /* @__PURE__ */ jsxs("table", { className: styles.languagesTable, children: [
66
- /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
67
- /* @__PURE__ */ jsx("th", { children: "Languages" }),
68
- /* @__PURE__ */ jsx("th", { children: "Words to do" }),
69
- /* @__PURE__ */ jsx("th", { children: "Progress" }),
70
- /* @__PURE__ */ jsx("th", { children: "Status" })
71
- ] }) }),
72
- /* @__PURE__ */ jsx("tbody", { children: taskLanguages.map((language) => /* @__PURE__ */ jsx(TaskLanguage, { language, task }, language.lang_id)) })
73
- ] }),
74
- /* @__PURE__ */ jsxs("div", { "data-testid": "sidebar-task-overview-metadata", className: styles.metadata, children: [
75
- /* @__PURE__ */ jsxs("span", { children: [
76
- "Source: ",
77
- task.source_lang_name
78
- ] }),
79
- /* @__PURE__ */ jsx("span", { children: task.created_by_fullname }),
80
- /* @__PURE__ */ jsxs("span", { children: [
81
- "In ",
82
- task.project_name,
83
- task.master_branching_enabled === "1" && /* @__PURE__ */ jsx("div", { className: styles.tag, children: task.branch_name ? task.branch_name : "master" })
84
- ] })
85
- ] })
86
- ] });
87
- };
1
+ import { getDefaultExportFromCjs } from "./harmony136.mjs";
2
+ import { __require as requireDebounce } from "./harmony120.mjs";
3
+ var debounceExports = requireDebounce();
4
+ const debounce = /* @__PURE__ */ getDefaultExportFromCjs(debounceExports);
88
5
  export {
89
- TaskOverview
6
+ debounce as default
90
7
  };
91
8
  //# sourceMappingURL=harmony118.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony118.mjs","sources":["../src/components/Sidebar/Widgets/Tasks/TaskOverview/TaskOverview.tsx"],"sourcesContent":["import { Button, Link, Menu, MenuItem, MenuList, Tag } from '@lokalise/louis'\nimport { convertNewLineToBreakTag, formatDate, makeUrlClickable } from '@utils'\nimport { parseISO } from 'date-fns'\nimport { splitFileName } from '../../../utils'\nimport { TaskLanguage } from '../TaskLanguage/TaskLanguage'\nimport { useTasks } from '../TasksContext'\nimport type { SidebarTask, SidebarTaskStyleGuide } from '../types'\nimport { getTaskLanguages, tagColor } from '../utils/content'\nimport styles from './TaskOverview.module.css'\n\nexport type TaskProps = {\n\ttask: SidebarTask\n}\n\nexport const TaskOverview = ({ task }: TaskProps) => {\n\tconst { getProjectUrl, taskTitleOnClick } = useTasks()\n\n\tconst taskLanguages = getTaskLanguages(task.langs)\n\n\tconst handleDownloadStyleGuide = (styleGuide: SidebarTaskStyleGuide) => {\n\t\twindow.open(\n\t\t\t`/style-guide/${task.team_id}/download/${styleGuide.id}/link`,\n\t\t\t'_blank',\n\t\t\t'noopener,noreferrer',\n\t\t)\n\t}\n\n\treturn (\n\t\t<div className={styles.taskContainer}>\n\t\t\t<div className=\"flex-row gap-1 items-center\">\n\t\t\t\t<div className=\"flex-row gap-1 items-start flex-wrap\">\n\t\t\t\t\t<Tag color={tagColor[task.task_type]} variant=\"solid\">\n\t\t\t\t\t\t{task.task_type.toLocaleUpperCase()}\n\t\t\t\t\t</Tag>\n\t\t\t\t\t{task.due_date && (\n\t\t\t\t\t\t<Tag color={'#EAB308'}>DUE {formatDate(parseISO(task.due_date), 'yyyy-MM-dd')}</Tag>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{task.style_guides.length > 0 && (\n\t\t\t\t\t<div className=\"flex-row\">\n\t\t\t\t\t\t{task.style_guides.length === 1 ? (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tonClick={() => handleDownloadStyleGuide(task.style_guides[0])}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tDownload style guide\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Menu\n\t\t\t\t\t\t\t\tmenuButton={\n\t\t\t\t\t\t\t\t\t<Button variant=\"secondary\" size=\"sm\">\n\t\t\t\t\t\t\t\t\t\tDownload style guide\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<MenuList>\n\t\t\t\t\t\t\t\t\t{task.style_guides.map((styleGuide) => (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey={styleGuide.id}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleDownloadStyleGuide(styleGuide)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{splitFileName(styleGuide.name).name}\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</MenuList>\n\t\t\t\t\t\t\t</Menu>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<h4 className={styles.taskTitle}>\n\t\t\t\t<Link\n\t\t\t\t\thref={getProjectUrl({ task, view: 'multi' })}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\ttaskTitleOnClick?.({ task })\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{task.title}\n\t\t\t\t</Link>\n\t\t\t</h4>\n\n\t\t\t{task.description && (\n\t\t\t\t<div className={styles.taskDescription}>\n\t\t\t\t\t{convertNewLineToBreakTag(makeUrlClickable(task.description))}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<table className={styles.languagesTable}>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Languages</th>\n\t\t\t\t\t\t<th>Words to do</th>\n\t\t\t\t\t\t<th>Progress</th>\n\t\t\t\t\t\t<th>Status</th>\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{taskLanguages.map((language) => (\n\t\t\t\t\t\t<TaskLanguage key={language.lang_id} language={language} task={task} />\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<div data-testid=\"sidebar-task-overview-metadata\" className={styles.metadata}>\n\t\t\t\t<span>Source: {task.source_lang_name}</span>\n\t\t\t\t<span>{task.created_by_fullname}</span>\n\t\t\t\t<span>\n\t\t\t\t\tIn {task.project_name}\n\t\t\t\t\t{task.master_branching_enabled === '1' && (\n\t\t\t\t\t\t<div className={styles.tag}>{task.branch_name ? task.branch_name : 'master'}</div>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harmony118.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,21 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const loadingContainer = "_loadingContainer_19d6m_1";
4
- const noTasksContainer = "_noTasksContainer_19d6m_7";
5
- const noTasksHeading = "_noTasksHeading_19d6m_14";
6
- const noTasksText = "_noTasksText_19d6m_18";
7
- const tasksContainer = "_tasksContainer_19d6m_23";
8
- const styles = {
9
- loadingContainer,
10
- noTasksContainer,
11
- noTasksHeading,
12
- noTasksText,
13
- tasksContainer
14
- };
15
- exports.default = styles;
16
- exports.loadingContainer = loadingContainer;
17
- exports.noTasksContainer = noTasksContainer;
18
- exports.noTasksHeading = noTasksHeading;
19
- exports.noTasksText = noTasksText;
20
- exports.tasksContainer = tasksContainer;
3
+ const _commonjsHelpers = require("./harmony136.cjs");
4
+ const throttle$1 = require("./harmony124.cjs");
5
+ var throttleExports = throttle$1.__require();
6
+ const throttle = /* @__PURE__ */ _commonjsHelpers.getDefaultExportFromCjs(throttleExports);
7
+ exports.default = throttle;
21
8
  //# sourceMappingURL=harmony119.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony119.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"harmony119.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1,21 +1,8 @@
1
- const loadingContainer = "_loadingContainer_19d6m_1";
2
- const noTasksContainer = "_noTasksContainer_19d6m_7";
3
- const noTasksHeading = "_noTasksHeading_19d6m_14";
4
- const noTasksText = "_noTasksText_19d6m_18";
5
- const tasksContainer = "_tasksContainer_19d6m_23";
6
- const styles = {
7
- loadingContainer,
8
- noTasksContainer,
9
- noTasksHeading,
10
- noTasksText,
11
- tasksContainer
12
- };
1
+ import { getDefaultExportFromCjs } from "./harmony136.mjs";
2
+ import { __require as requireThrottle } from "./harmony124.mjs";
3
+ var throttleExports = requireThrottle();
4
+ const throttle = /* @__PURE__ */ getDefaultExportFromCjs(throttleExports);
13
5
  export {
14
- styles as default,
15
- loadingContainer,
16
- noTasksContainer,
17
- noTasksHeading,
18
- noTasksText,
19
- tasksContainer
6
+ throttle as default
20
7
  };
21
8
  //# sourceMappingURL=harmony119.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony119.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
1
+ {"version":3,"file":"harmony119.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _root = require("./harmony125.cjs");
3
+ const _root = require("./harmony129.cjs");
4
4
  var now_1;
5
5
  var hasRequiredNow;
6
6
  function requireNow() {
@@ -1,4 +1,4 @@
1
- import { __require as require_root } from "./harmony125.mjs";
1
+ import { __require as require_root } from "./harmony129.mjs";
2
2
  var now_1;
3
3
  var hasRequiredNow;
4
4
  function requireNow() {
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _baseTrim = require("./harmony126.cjs");
3
+ const _baseTrim = require("./harmony130.cjs");
4
4
  const isObject = require("./harmony121.cjs");
5
- const isSymbol = require("./harmony127.cjs");
5
+ const isSymbol = require("./harmony131.cjs");
6
6
  var toNumber_1;
7
7
  var hasRequiredToNumber;
8
8
  function requireToNumber() {
@@ -1,6 +1,6 @@
1
- import { __require as require_baseTrim } from "./harmony126.mjs";
1
+ import { __require as require_baseTrim } from "./harmony130.mjs";
2
2
  import { __require as requireIsObject } from "./harmony121.mjs";
3
- import { __require as requireIsSymbol } from "./harmony127.mjs";
3
+ import { __require as requireIsSymbol } from "./harmony131.mjs";
4
4
  var toNumber_1;
5
5
  var hasRequiredToNumber;
6
6
  function requireToNumber() {
@@ -1,16 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _freeGlobal = require("./harmony132.cjs");
4
- var _root;
5
- var hasRequired_root;
6
- function require_root() {
7
- if (hasRequired_root) return _root;
8
- hasRequired_root = 1;
9
- var freeGlobal = _freeGlobal.__require();
10
- var freeSelf = typeof self == "object" && self && self.Object === Object && self;
11
- var root = freeGlobal || freeSelf || Function("return this")();
12
- _root = root;
13
- return _root;
14
- }
15
- exports.__require = require_root;
3
+ const splitFileName = (fileName) => {
4
+ const lastDotIndex = fileName.lastIndexOf(".");
5
+ const name = fileName.slice(0, lastDotIndex);
6
+ const extension = fileName.slice(lastDotIndex + 1);
7
+ return { name, extension };
8
+ };
9
+ exports.splitFileName = splitFileName;
16
10
  //# sourceMappingURL=harmony125.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony125.cjs","sources":["../node_modules/lodash/_root.js"],"sourcesContent":["var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n"],"names":["require$$0"],"mappings":";;;;;;;;AAAA,MAAI,aAAaA,YAAAA,UAAwB;AAGzC,MAAI,WAAW,OAAO,QAAQ,YAAY,QAAQ,KAAK,WAAW,UAAU;AAG5E,MAAI,OAAO,cAAc,YAAY,SAAS,aAAa,EAAG;AAE9D,UAAiB;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"harmony125.cjs","sources":["../src/components/Sidebar/utils/index.ts"],"sourcesContent":["export const splitFileName = (fileName: string) => {\n\tconst lastDotIndex = fileName.lastIndexOf('.')\n\tconst name = fileName.slice(0, lastDotIndex)\n\tconst extension = fileName.slice(lastDotIndex + 1)\n\n\treturn { name, extension }\n}\n"],"names":[],"mappings":";;AAAa,MAAA,gBAAgB,CAAC,aAAqB;AAC5C,QAAA,eAAe,SAAS,YAAY,GAAG;AAC7C,QAAM,OAAO,SAAS,MAAM,GAAG,YAAY;AAC3C,QAAM,YAAY,SAAS,MAAM,eAAe,CAAC;AAE1C,SAAA,EAAE,MAAM,UAAU;AAC1B;;"}
@@ -1,16 +1,10 @@
1
- import { __require as require_freeGlobal } from "./harmony132.mjs";
2
- var _root;
3
- var hasRequired_root;
4
- function require_root() {
5
- if (hasRequired_root) return _root;
6
- hasRequired_root = 1;
7
- var freeGlobal = require_freeGlobal();
8
- var freeSelf = typeof self == "object" && self && self.Object === Object && self;
9
- var root = freeGlobal || freeSelf || Function("return this")();
10
- _root = root;
11
- return _root;
12
- }
1
+ const splitFileName = (fileName) => {
2
+ const lastDotIndex = fileName.lastIndexOf(".");
3
+ const name = fileName.slice(0, lastDotIndex);
4
+ const extension = fileName.slice(lastDotIndex + 1);
5
+ return { name, extension };
6
+ };
13
7
  export {
14
- require_root as __require
8
+ splitFileName
15
9
  };
16
10
  //# sourceMappingURL=harmony125.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony125.mjs","sources":["../node_modules/lodash/_root.js"],"sourcesContent":["var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n"],"names":["require$$0"],"mappings":";;;;;;AAAA,MAAI,aAAaA,mBAAwB;AAGzC,MAAI,WAAW,OAAO,QAAQ,YAAY,QAAQ,KAAK,WAAW,UAAU;AAG5E,MAAI,OAAO,cAAc,YAAY,SAAS,aAAa,EAAG;AAE9D,UAAiB;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"harmony125.mjs","sources":["../src/components/Sidebar/utils/index.ts"],"sourcesContent":["export const splitFileName = (fileName: string) => {\n\tconst lastDotIndex = fileName.lastIndexOf('.')\n\tconst name = fileName.slice(0, lastDotIndex)\n\tconst extension = fileName.slice(lastDotIndex + 1)\n\n\treturn { name, extension }\n}\n"],"names":[],"mappings":"AAAa,MAAA,gBAAgB,CAAC,aAAqB;AAC5C,QAAA,eAAe,SAAS,YAAY,GAAG;AAC7C,QAAM,OAAO,SAAS,MAAM,GAAG,YAAY;AAC3C,QAAM,YAAY,SAAS,MAAM,eAAe,CAAC;AAE1C,SAAA,EAAE,MAAM,UAAU;AAC1B;"}
@@ -1,18 +1,60 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _trimmedEndIndex = require("./harmony133.cjs");
4
- var _baseTrim;
5
- var hasRequired_baseTrim;
6
- function require_baseTrim() {
7
- if (hasRequired_baseTrim) return _baseTrim;
8
- hasRequired_baseTrim = 1;
9
- var trimmedEndIndex = _trimmedEndIndex.__require();
10
- var reTrimStart = /^\s+/;
11
- function baseTrim(string) {
12
- return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
13
- }
14
- _baseTrim = baseTrim;
15
- return _baseTrim;
16
- }
17
- exports.__require = require_baseTrim;
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const louis = require("@lokalise/louis");
5
+ const content = require("./harmony127.cjs");
6
+ const types = require("./harmony2.cjs");
7
+ const clsx = require("./harmony70.cjs");
8
+ const TaskLanguageCompleted = require("./harmony140.cjs");
9
+ const TasksContext = require("./harmony109.cjs");
10
+ const TaskLanguage_module = require("./harmony141.cjs");
11
+ const TaskLanguage = ({ language, task }) => {
12
+ const { getProjectUrl, langNameOnClick, langProgressOnClick } = TasksContext.useTasks();
13
+ const progressValue = language.progress ?? 0;
14
+ const isLanguageCompleted = language.status === types.SidebarTaskLanguageStatuses.Completed;
15
+ const languageProgressCompleted = content.isLanguageProgressCompleted(task, language);
16
+ return /* @__PURE__ */ jsxRuntime.jsxs(
17
+ "tr",
18
+ {
19
+ className: clsx.clsx({
20
+ [TaskLanguage_module.default.langRowCompleted]: languageProgressCompleted
21
+ }),
22
+ children: [
23
+ /* @__PURE__ */ jsxRuntime.jsx("td", { children: /* @__PURE__ */ jsxRuntime.jsx(louis.Tooltip, { tooltip: "Open in bilingual view", children: /* @__PURE__ */ jsxRuntime.jsx(
24
+ louis.Link,
25
+ {
26
+ href: getProjectUrl({ task, language }),
27
+ onClick: () => {
28
+ langNameOnClick == null ? void 0 : langNameOnClick({ task, language });
29
+ },
30
+ children: language.name
31
+ }
32
+ ) }) }),
33
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: TaskLanguage_module.default.langCellSecondary, children: languageProgressCompleted || isLanguageCompleted ? "0" : /* @__PURE__ */ jsxRuntime.jsx(louis.Tooltip, { tooltip: "Open uncompleted items", children: /* @__PURE__ */ jsxRuntime.jsx(
34
+ louis.Link,
35
+ {
36
+ href: getProjectUrl({ task, language, taskUncompleted: true }),
37
+ onClick: () => {
38
+ langProgressOnClick == null ? void 0 : langProgressOnClick({ task, language });
39
+ },
40
+ children: language.base_words_total - language.base_words_done
41
+ }
42
+ ) }) }),
43
+ /* @__PURE__ */ jsxRuntime.jsxs("td", { children: [
44
+ progressValue,
45
+ "%"
46
+ ] }),
47
+ /* @__PURE__ */ jsxRuntime.jsx("td", { children: languageProgressCompleted ? /* @__PURE__ */ jsxRuntime.jsx(TaskLanguageCompleted.TaskLanguageCompleted, { task, language }) : /* @__PURE__ */ jsxRuntime.jsx(
48
+ "span",
49
+ {
50
+ className: `${TaskLanguage_module.default.langStatus} flex-row items-center justify-start`,
51
+ "data-status": language.status,
52
+ children: content.getStatusText(language.status, progressValue)
53
+ }
54
+ ) })
55
+ ]
56
+ }
57
+ );
58
+ };
59
+ exports.TaskLanguage = TaskLanguage;
18
60
  //# sourceMappingURL=harmony126.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony126.cjs","sources":["../node_modules/lodash/_baseTrim.js"],"sourcesContent":["var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n"],"names":["require$$0"],"mappings":";;;;;;;;AAAA,MAAI,kBAAkBA,iBAAAA,UAA6B;AAGnD,MAAI,cAAc;AASlB,WAAS,SAAS,QAAQ;AACxB,WAAO,SACH,OAAO,MAAM,GAAG,gBAAgB,MAAM,IAAI,CAAC,EAAE,QAAQ,aAAa,EAAE,IACpE;AAAA,EACN;AAEA,cAAiB;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"harmony126.cjs","sources":["../src/components/Sidebar/Widgets/Tasks/TaskLanguage/TaskLanguage.tsx"],"sourcesContent":["import { Link, Tooltip } from '@lokalise/louis'\nimport { getStatusText, isLanguageProgressCompleted } from '../utils/content'\n\nimport { type SidebarTask, type SidebarTaskLanguage, SidebarTaskLanguageStatuses } from '../types'\n\nimport clsx from 'clsx'\nimport { TaskLanguageCompleted } from '../TaskLanguageCompleted/TaskLanguageCompleted'\nimport { useTasks } from '../TasksContext'\nimport styles from './TaskLanguage.module.css'\n\nexport type TaskLanguageProps = {\n\ttask: SidebarTask\n\tlanguage: SidebarTaskLanguage\n}\n\nexport const TaskLanguage = ({ language, task }: TaskLanguageProps) => {\n\tconst { getProjectUrl, langNameOnClick, langProgressOnClick } = useTasks()\n\n\tconst progressValue = language.progress ?? 0\n\n\tconst isLanguageCompleted = language.status === SidebarTaskLanguageStatuses.Completed\n\n\tconst languageProgressCompleted = isLanguageProgressCompleted(task, language)\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={clsx({\n\t\t\t\t[styles.langRowCompleted]: languageProgressCompleted,\n\t\t\t})}\n\t\t>\n\t\t\t<td>\n\t\t\t\t<Tooltip tooltip=\"Open in bilingual view\">\n\t\t\t\t\t<Link\n\t\t\t\t\t\thref={getProjectUrl({ task, language })}\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tlangNameOnClick?.({ task, language })\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{language.name}\n\t\t\t\t\t</Link>\n\t\t\t\t</Tooltip>\n\t\t\t</td>\n\t\t\t<td className={styles.langCellSecondary}>\n\t\t\t\t{languageProgressCompleted || isLanguageCompleted ? (\n\t\t\t\t\t'0'\n\t\t\t\t) : (\n\t\t\t\t\t<Tooltip tooltip=\"Open uncompleted items\">\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\thref={getProjectUrl({ task, language, taskUncompleted: true })}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tlangProgressOnClick?.({ task, language })\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{language.base_words_total - language.base_words_done}\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t)}\n\t\t\t</td>\n\t\t\t<td>{progressValue}%</td>\n\t\t\t<td>\n\t\t\t\t{languageProgressCompleted ? (\n\t\t\t\t\t<TaskLanguageCompleted task={task} language={language} />\n\t\t\t\t) : (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={`${styles.langStatus} flex-row items-center justify-start`}\n\t\t\t\t\t\tdata-status={language.status}\n\t\t\t\t\t>\n\t\t\t\t\t\t{getStatusText(language.status, progressValue)}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</td>\n\t\t</tr>\n\t)\n}\n"],"names":["useTasks","SidebarTaskLanguageStatuses","isLanguageProgressCompleted","jsxs","clsx","styles","jsx","Tooltip","Link","TaskLanguageCompleted","getStatusText"],"mappings":";;;;;;;;;;AAeO,MAAM,eAAe,CAAC,EAAE,UAAU,WAA8B;AACtE,QAAM,EAAE,eAAe,iBAAiB,oBAAA,IAAwBA,aAAAA,SAAS;AAEnE,QAAA,gBAAgB,SAAS,YAAY;AAErC,QAAA,sBAAsB,SAAS,WAAWC,MAA4B,4BAAA;AAEtE,QAAA,4BAA4BC,QAAAA,4BAA4B,MAAM,QAAQ;AAG3E,SAAAC,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWC,KAAAA,KAAK;AAAA,QACf,CAACC,oBAAAA,QAAO,gBAAgB,GAAG;AAAA,MAAA,CAC3B;AAAA,MAED,UAAA;AAAA,QAAAC,+BAAC,MACA,EAAA,UAAAA,2BAAA,IAACC,MAAQ,SAAA,EAAA,SAAQ,0BAChB,UAAAD,2BAAA;AAAA,UAACE,MAAA;AAAA,UAAA;AAAA,YACA,MAAM,cAAc,EAAE,MAAM,UAAU;AAAA,YACtC,SAAS,MAAM;AACI,iEAAA,EAAE,MAAM;YAC3B;AAAA,YAEC,UAAS,SAAA;AAAA,UAAA;AAAA,WAEZ,EACD,CAAA;AAAA,QACAF,2BAAA,IAAC,MAAG,EAAA,WAAWD,oBAAAA,QAAO,mBACpB,UAA6B,6BAAA,sBAC7B,MAEAC,2BAAA,IAACC,MAAQ,SAAA,EAAA,SAAQ,0BAChB,UAAAD,2BAAA;AAAA,UAACE,MAAA;AAAA,UAAA;AAAA,YACA,MAAM,cAAc,EAAE,MAAM,UAAU,iBAAiB,MAAM;AAAA,YAC7D,SAAS,MAAM;AACQ,yEAAA,EAAE,MAAM;YAC/B;AAAA,YAEC,UAAA,SAAS,mBAAmB,SAAS;AAAA,UAAA;AAAA,WAExC,EAEF,CAAA;AAAA,wCACC,MAAI,EAAA,UAAA;AAAA,UAAA;AAAA,UAAc;AAAA,QAAA,GAAC;AAAA,uCACnB,MACC,EAAA,UAAA,2DACCC,sBAAsB,uBAAA,EAAA,MAAY,SAAoB,CAAA,IAEvDH,2BAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,WAAW,GAAGD,4BAAO,UAAU;AAAA,YAC/B,eAAa,SAAS;AAAA,YAErB,UAAAK,QAAA,cAAc,SAAS,QAAQ,aAAa;AAAA,UAAA;AAAA,QAAA,EAGhD,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACD;AAEF;;"}