@inventreedb/ui 0.11.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/.vite/manifest.json +6 -5
  3. package/dist/components/InvenTreeTable.js +4 -3
  4. package/dist/components/InvenTreeTable.js.map +1 -1
  5. package/dist/components/RowActions.js +3 -2
  6. package/dist/components/RowActions.js.map +1 -1
  7. package/dist/components/nav/DetailDrawer.d.ts +1 -0
  8. package/dist/components/nav/DetailDrawer.js +1 -0
  9. package/dist/components/nav/DetailDrawer.js.map +1 -1
  10. package/dist/enums/ModelInformation.js +1 -0
  11. package/dist/enums/ModelInformation.js.map +1 -1
  12. package/dist/functions/Events.js +4 -3
  13. package/dist/functions/Events.js.map +1 -1
  14. package/dist/functions/Navigation.js +5 -2
  15. package/dist/functions/Navigation.js.map +1 -1
  16. package/dist/functions/Plugins.js +4 -2
  17. package/dist/functions/Plugins.js.map +1 -1
  18. package/dist/hooks/MonitorBackgroundTask.js +10 -8
  19. package/dist/hooks/MonitorBackgroundTask.js.map +1 -1
  20. package/dist/hooks/MonitorDataOutput.js +4 -3
  21. package/dist/hooks/MonitorDataOutput.js.map +1 -1
  22. package/dist/hooks/UseFilterSet.js +7 -6
  23. package/dist/hooks/UseFilterSet.js.map +1 -1
  24. package/dist/hooks/UseTable.js +1 -1
  25. package/dist/index.d.ts +3 -1
  26. package/dist/index.js +4 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/node_modules/@mantine/hooks/esm/use-debounced-value/use-debounced-value.js +40 -15
  29. package/dist/node_modules/@mantine/hooks/esm/use-debounced-value/use-debounced-value.js.map +1 -1
  30. package/dist/node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.js +1 -1
  31. package/dist/node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.js.map +1 -1
  32. package/dist/node_modules/@mantine/hooks/esm/use-local-storage/create-storage.js +57 -62
  33. package/dist/node_modules/@mantine/hooks/esm/use-local-storage/create-storage.js.map +1 -1
  34. package/dist/node_modules/@mantine/hooks/esm/use-local-storage/use-local-storage.js.map +1 -1
  35. package/dist/node_modules/@mantine/hooks/esm/use-window-event/use-window-event.js +5 -3
  36. package/dist/node_modules/@mantine/hooks/esm/use-window-event/use-window-event.js.map +1 -1
  37. package/dist/node_modules/@mantine/hooks/esm/utils/random-id/random-id.js.map +1 -1
  38. package/dist/node_modules/@remix-run/router/dist/router.js +10 -0
  39. package/dist/node_modules/@remix-run/router/dist/router.js.map +1 -1
  40. package/dist/node_modules/@sentry/browser/build/npm/esm/prod/report-dialog.js +2 -2
  41. package/dist/node_modules/@sentry/browser/build/npm/esm/prod/report-dialog.js.map +1 -1
  42. package/dist/node_modules/@sentry/core/build/esm/scope.js +6 -5
  43. package/dist/node_modules/@sentry/core/build/esm/scope.js.map +1 -1
  44. package/dist/node_modules/@sentry/core/build/esm/utils/chain-and-copy-promiselike.js +1 -1
  45. package/dist/node_modules/@sentry/core/build/esm/utils/chain-and-copy-promiselike.js.map +1 -1
  46. package/dist/node_modules/@sentry/core/build/esm/utils/is.js +1 -1
  47. package/dist/node_modules/@sentry/core/build/esm/utils/is.js.map +1 -1
  48. package/dist/node_modules/@sentry/core/build/esm/utils/misc.js +1 -1
  49. package/dist/node_modules/@sentry/core/build/esm/utils/misc.js.map +1 -1
  50. package/dist/node_modules/@sentry/core/build/esm/utils/randomSafeContext.js +1 -1
  51. package/dist/node_modules/@sentry/core/build/esm/utils/randomSafeContext.js.map +1 -1
  52. package/dist/node_modules/@sentry/core/build/esm/utils/time.js +1 -1
  53. package/dist/node_modules/@sentry/core/build/esm/utils/time.js.map +1 -1
  54. package/dist/node_modules/@tabler/icons-react/dist/esm/createReactComponent.js +6 -0
  55. package/dist/node_modules/@tabler/icons-react/dist/esm/createReactComponent.js.map +1 -1
  56. package/dist/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.js +6 -0
  57. package/dist/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.js.map +1 -1
  58. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAdjustments.js +6 -0
  59. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAdjustments.js.map +1 -1
  60. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowRight.js +6 -0
  61. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowRight.js.map +1 -1
  62. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.js +6 -0
  63. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.js.map +1 -1
  64. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronLeft.js +6 -0
  65. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronLeft.js.map +1 -1
  66. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.js +6 -0
  67. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.js.map +1 -1
  68. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleX.js +6 -0
  69. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleX.js.map +1 -1
  70. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCopy.js +6 -0
  71. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCopy.js.map +1 -1
  72. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconDots.js +6 -0
  73. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconDots.js.map +1 -1
  74. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconEdit.js +6 -0
  75. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconEdit.js.map +1 -1
  76. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconExclamationCircle.js +6 -0
  77. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconExclamationCircle.js.map +1 -1
  78. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconPlus.js +6 -0
  79. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconPlus.js.map +1 -1
  80. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.js +6 -0
  81. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.js.map +1 -1
  82. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.js +6 -0
  83. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.js.map +1 -1
  84. package/dist/node_modules/@tanstack/query-core/build/modern/focusManager.js +31 -20
  85. package/dist/node_modules/@tanstack/query-core/build/modern/focusManager.js.map +1 -1
  86. package/dist/node_modules/@tanstack/query-core/build/modern/onlineManager.js +27 -17
  87. package/dist/node_modules/@tanstack/query-core/build/modern/onlineManager.js.map +1 -1
  88. package/dist/node_modules/@tanstack/query-core/build/modern/queryObserver.js +179 -177
  89. package/dist/node_modules/@tanstack/query-core/build/modern/queryObserver.js.map +1 -1
  90. package/dist/node_modules/@tanstack/query-core/build/modern/timeoutManager.js +31 -21
  91. package/dist/node_modules/@tanstack/query-core/build/modern/timeoutManager.js.map +1 -1
  92. package/dist/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js +1 -1
  93. package/dist/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js.map +1 -1
  94. package/dist/node_modules/@tanstack/react-query/build/modern/suspense.js +1 -1
  95. package/dist/node_modules/@tanstack/react-query/build/modern/suspense.js.map +1 -1
  96. package/dist/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js +7 -4
  97. package/dist/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js.map +1 -1
  98. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +10 -1
  99. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -1
  100. package/dist/node_modules/react/cjs/react-jsx-runtime.production.js +10 -1
  101. package/dist/node_modules/react/cjs/react-jsx-runtime.production.js.map +1 -1
  102. package/dist/node_modules/react-router/dist/index.js +11 -1
  103. package/dist/node_modules/react-router/dist/index.js.map +1 -1
  104. package/dist/node_modules/react-router-dom/dist/index.js +10 -0
  105. package/dist/node_modules/react-router-dom/dist/index.js.map +1 -1
  106. package/dist/states/StoredTableState.js +2 -1
  107. package/dist/states/StoredTableState.js.map +1 -1
  108. package/dist/states/types.d.ts +3 -0
  109. package/dist/types/Forms.d.ts +2 -0
  110. package/dist/types/Panel.d.ts +26 -0
  111. package/dist/types/Plugins.d.ts +14 -2
  112. package/dist/types/Plugins.js +2 -2
  113. package/dist/types/Plugins.js.map +1 -1
  114. package/dist/types/Rendering.d.ts +53 -0
  115. package/dist/types/Tables.d.ts +3 -1
  116. package/lib/components/RowActions.tsx +2 -2
  117. package/lib/components/nav/DetailDrawer.tsx +1 -1
  118. package/lib/enums/ModelInformation.tsx +1 -0
  119. package/lib/hooks/UseFilterSet.tsx +8 -8
  120. package/lib/index.ts +9 -1
  121. package/lib/states/types.tsx +7 -0
  122. package/lib/types/Forms.tsx +2 -0
  123. package/lib/types/Panel.tsx +30 -0
  124. package/lib/types/Plugins.tsx +20 -1
  125. package/lib/types/Rendering.tsx +60 -0
  126. package/lib/types/Tables.tsx +3 -1
  127. package/package.json +18 -17
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  This file contains historical changelog information for the InvenTree UI components library.
4
4
 
5
+ ### 1.4.0 - May 2026
6
+
7
+ #### Version Numbering
8
+
9
+ This update brings the version numbering in-line with the core InvenTree server version, which is currently at `1.4.0`. This versioning scheme will be maintained going forward, with the UI components library version matching the core server version.
10
+
11
+ Thus, version `1.4.x` of the UI components library will be compatible with version `1.4.x` of the InvenTree server, and so on.
12
+
13
+ #### Mantine Library Update
14
+
15
+ The underlying Mantine library has been updated from version `8.x` to version `9.x`. This update may introduce breaking changes for plugins that rely on the InvenTree UI components library, as the Mantine library is a core dependency. Plugin developers should test their plugins against this new version to ensure compatibility.
16
+
17
+ #### New Components
18
+
19
+ Adds additional functions in the plugin context related to form rendering and API invocation:
20
+ - `useInstance`
21
+ - `renderRemoteInstance`
22
+ - `EditApiForm`
23
+ - `RenderInlineModel`
24
+ - `Thumbnail`
25
+
26
+ Exposes sub-components related to DetailDrawer rendering:
27
+ - `DetailDrawerComponent`
28
+ - `useLocalLibState`
29
+
5
30
  ### 0.11.3 - April 2026
6
31
 
7
32
  Exposes additional type definitions related to rendering drawers from tables:
@@ -252,10 +252,10 @@
252
252
  "src": "lib/hooks/MonitorBackgroundTask.tsx",
253
253
  "imports": [
254
254
  "/home/inventree/src/frontend/node_modules/react/jsx-runtime.js?commonjs-es-import",
255
+ "node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.mjs",
255
256
  "node_modules/@tanstack/react-query/build/modern/useQuery.js",
256
257
  "lib/enums/ApiEndpoints.tsx",
257
258
  "lib/functions/Api.tsx",
258
- "node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.mjs",
259
259
  "node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.mjs",
260
260
  "node_modules/@tabler/icons-react/dist/esm/icons/IconCircleX.mjs",
261
261
  "node_modules/@tabler/icons-react/dist/esm/icons/IconExclamationCircle.mjs"
@@ -267,11 +267,11 @@
267
267
  "src": "lib/hooks/MonitorDataOutput.tsx",
268
268
  "imports": [
269
269
  "/home/inventree/src/frontend/node_modules/react/jsx-runtime.js?commonjs-es-import",
270
+ "node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.mjs",
270
271
  "node_modules/@tanstack/react-query/build/modern/useQuery.js",
271
272
  "lib/components/ProgressBar.tsx",
272
273
  "lib/enums/ApiEndpoints.tsx",
273
274
  "lib/functions/Api.tsx",
274
- "node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.mjs",
275
275
  "node_modules/@tabler/icons-react/dist/esm/icons/IconExclamationCircle.mjs",
276
276
  "node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.mjs"
277
277
  ]
@@ -289,8 +289,8 @@
289
289
  "name": "hooks/UseTable",
290
290
  "src": "lib/hooks/UseTable.tsx",
291
291
  "imports": [
292
- "lib/hooks/UseFilterSet.tsx",
293
- "node_modules/@mantine/hooks/esm/utils/random-id/random-id.mjs"
292
+ "node_modules/@mantine/hooks/esm/utils/random-id/random-id.mjs",
293
+ "lib/hooks/UseFilterSet.tsx"
294
294
  ]
295
295
  },
296
296
  "lib/index.ts": {
@@ -328,7 +328,8 @@
328
328
  "lib/hooks/UseTable.tsx",
329
329
  "lib/components/nav/DetailDrawer.tsx",
330
330
  "lib/components/StylishText.tsx",
331
- "lib/states/StoredTableState.tsx"
331
+ "lib/states/StoredTableState.tsx",
332
+ "lib/states/LocalLibState.tsx"
332
333
  ]
333
334
  },
334
335
  "lib/states/LocalLibState.tsx": {
@@ -9,7 +9,8 @@ function InvenTreeTable({
9
9
  props,
10
10
  context
11
11
  }) {
12
- if (!context?.tables?.renderTable) {
12
+ var _a, _b;
13
+ if (!((_a = context == null ? void 0 : context.tables) == null ? void 0 : _a.renderTable)) {
13
14
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Alert, { title: "Plugin Version Error", color: "red", children: [
14
15
  'The <InvenTreeTable> component cannot be rendered because the plugin context is missing the "renderTable" function.',
15
16
  /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
@@ -21,11 +22,11 @@ function InvenTreeTable({
21
22
  /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
22
23
  /* @__PURE__ */ jsxRuntimeExports.jsx("b", { children: "UI Version:" }),
23
24
  " ",
24
- context?.version?.inventree || "unknown",
25
+ ((_b = context == null ? void 0 : context.version) == null ? void 0 : _b.inventree) || "unknown",
25
26
  /* @__PURE__ */ jsxRuntimeExports.jsx("br", {})
26
27
  ] });
27
28
  }
28
- return context?.tables.renderTable({
29
+ return context == null ? void 0 : context.tables.renderTable({
29
30
  url,
30
31
  tableState,
31
32
  tableData,
@@ -1 +1 @@
1
- {"version":3,"file":"InvenTreeTable.js","sources":["../../lib/components/InvenTreeTable.tsx"],"sourcesContent":["import { Alert } from '@mantine/core';\nimport {\n INVENTREE_PLUGIN_VERSION,\n type InvenTreePluginContext\n} from '../types/Plugins';\nimport type {\n InvenTreeTableProps,\n TableColumn,\n TableState\n} from '../types/Tables';\n\n/**\n * Wrapper function which allows plugins to render an InvenTree component instance directly,\n * in a similar way to the standard InvenTreeTable component.\n *\n * Note: The InventreePluginContext \"context\" object must be provided when rendering the table\n *\n */\n\nexport default function InvenTreeTable({\n url,\n tableState,\n tableData,\n columns,\n props,\n context\n}: {\n url?: string;\n tableState: TableState;\n tableData?: any[];\n columns: TableColumn<any>[];\n props: InvenTreeTableProps;\n context: InvenTreePluginContext;\n}) {\n if (!context?.tables?.renderTable) {\n return (\n <Alert title='Plugin Version Error' color='red'>\n {\n 'The <InvenTreeTable> component cannot be rendered because the plugin context is missing the \"renderTable\" function.'\n }\n <br />\n {\n 'This means that the InvenTree UI library version is incompatible with this plugin version.'\n }\n <br />\n <b>Plugin Version:</b> {INVENTREE_PLUGIN_VERSION}\n <br />\n <b>UI Version:</b> {context?.version?.inventree || 'unknown'}\n <br />\n </Alert>\n );\n }\n\n return context?.tables.renderTable({\n url: url,\n tableState: tableState,\n tableData: tableData,\n columns: columns,\n props: props,\n api: context.api,\n navigate: context.navigate\n });\n}\n"],"names":["InvenTreeTable","url","tableState","tableData","columns","props","context","tables","renderTable","jsxs","jsx","INVENTREE_PLUGIN_VERSION","version","inventree","api","navigate"],"mappings":";;AAAA,MAAA,QAAA,OAAA,aAAA,EAAA;AAmBA,SAAwBA,eAAe;AAAA,EACrCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAQF,GAAG;AACD,MAAI,CAACA,SAASC,QAAQC,aAAa;AACjC,WACEC,kCAAAA,KAAC,OAAA,EAAM,OAAM,wBAAuB,OAAM,OAEtC,UAAA;AAAA,MAAA;AAAA,4CAED,MAAA,EAAE;AAAA,MAED;AAAA,4CAED,MAAA,EAAE;AAAA,MACHC,kCAAAA,IAAC,OAAE,UAAA,kBAAA,CAAe;AAAA,MAAI;AAAA,MAAEC;AAAAA,4CACvB,MAAA,EAAE;AAAA,MACHD,kCAAAA,IAAC,OAAE,UAAA,cAAA,CAAW;AAAA,MAAI;AAAA,MAAEJ,SAASM,SAASC,aAAa;AAAA,4CAClD,MAAA,CAAA,CAAE;AAAA,IAAA,GACL;AAAA,EAEJ;AAEA,SAAOP,SAASC,OAAOC,YAAY;AAAA,IACjCP;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAS,KAAKR,QAAQQ;AAAAA,IACbC,UAAUT,QAAQS;AAAAA,EAAAA,CACnB;AACH;"}
1
+ {"version":3,"file":"InvenTreeTable.js","sources":["../../lib/components/InvenTreeTable.tsx"],"sourcesContent":["import { Alert } from '@mantine/core';\nimport {\n INVENTREE_PLUGIN_VERSION,\n type InvenTreePluginContext\n} from '../types/Plugins';\nimport type {\n InvenTreeTableProps,\n TableColumn,\n TableState\n} from '../types/Tables';\n\n/**\n * Wrapper function which allows plugins to render an InvenTree component instance directly,\n * in a similar way to the standard InvenTreeTable component.\n *\n * Note: The InventreePluginContext \"context\" object must be provided when rendering the table\n *\n */\n\nexport default function InvenTreeTable({\n url,\n tableState,\n tableData,\n columns,\n props,\n context\n}: {\n url?: string;\n tableState: TableState;\n tableData?: any[];\n columns: TableColumn<any>[];\n props: InvenTreeTableProps;\n context: InvenTreePluginContext;\n}) {\n if (!context?.tables?.renderTable) {\n return (\n <Alert title='Plugin Version Error' color='red'>\n {\n 'The <InvenTreeTable> component cannot be rendered because the plugin context is missing the \"renderTable\" function.'\n }\n <br />\n {\n 'This means that the InvenTree UI library version is incompatible with this plugin version.'\n }\n <br />\n <b>Plugin Version:</b> {INVENTREE_PLUGIN_VERSION}\n <br />\n <b>UI Version:</b> {context?.version?.inventree || 'unknown'}\n <br />\n </Alert>\n );\n }\n\n return context?.tables.renderTable({\n url: url,\n tableState: tableState,\n tableData: tableData,\n columns: columns,\n props: props,\n api: context.api,\n navigate: context.navigate\n });\n}\n"],"names":["InvenTreeTable","url","tableState","tableData","columns","props","context","tables","renderTable","jsxs","jsx","INVENTREE_PLUGIN_VERSION","version","inventree","api","navigate"],"mappings":";;AAAA,MAAA,QAAA,OAAA,aAAA,EAAA;AAmBA,SAAwBA,eAAe;AAAA,EACrCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAQF,GAAG;;AACD,MAAI,GAACA,wCAASC,WAATD,mBAAiBE,cAAa;AACjC,WACEC,kCAAAA,KAAC,OAAA,EAAM,OAAM,wBAAuB,OAAM,OAEtC,UAAA;AAAA,MAAA;AAAA,4CAED,MAAA,EAAE;AAAA,MAED;AAAA,4CAED,MAAA,EAAE;AAAA,MACHC,kCAAAA,IAAC,OAAE,UAAA,kBAAA,CAAe;AAAA,MAAI;AAAA,MAAEC;AAAAA,4CACvB,MAAA,EAAE;AAAA,MACHD,kCAAAA,IAAC,OAAE,UAAA,cAAA,CAAW;AAAA,MAAI;AAAA,QAAEJ,wCAASM,YAATN,mBAAkBO,cAAa;AAAA,4CAClD,MAAA,CAAA,CAAE;AAAA,IAAA,GACL;AAAA,EAEJ;AAEA,SAAOP,mCAASC,OAAOC,YAAY;AAAA,IACjCP;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAS,KAAKR,QAAQQ;AAAAA,IACbC,UAAUT,QAAQS;AAAAA,EAAAA;AAEtB;"}
@@ -92,8 +92,9 @@ function RowActions({
92
92
  }, [actions]);
93
93
  function RowActionIcon(action) {
94
94
  return /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { withinPortal: true, label: action.tooltip ?? action.title, position: "left", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Menu.Item, { color: action.color, leftSection: action.icon, onClick: (event) => {
95
+ var _a;
95
96
  cancelEvent(event);
96
- action.onClick?.(event);
97
+ (_a = action.onClick) == null ? void 0 : _a.call(action, event);
97
98
  setOpened(false);
98
99
  }, disabled: action.disabled || false, children: action.title }) }, action.title);
99
100
  }
@@ -103,7 +104,7 @@ function RowActions({
103
104
  {
104
105
  id: "7L01XJ"
105
106
  }
106
- ), children: /* @__PURE__ */ jsxRuntimeExports.jsx(ActionIcon, { "aria-label": `row-action-menu-${index ?? ""}`, onClick: openMenu, disabled, variant: "subtle", color: "gray", children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconDots, {}) }, `row-action-menu-${index ?? ""}`) }) }),
107
+ ), children: /* @__PURE__ */ jsxRuntimeExports.jsx(ActionIcon, { "aria-label": `row-action-menu-${index ?? ""}`, onClick: openMenu, disabled, variant: "transparent", size: "sm", children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconDots, {}) }, `row-action-menu-${index ?? ""}`) }) }),
107
108
  /* @__PURE__ */ jsxRuntimeExports.jsx(Menu.Dropdown, { children: visibleActions.map((action) => /* @__PURE__ */ jsxRuntimeExports.jsx(RowActionIcon, { ...action }, action.title)) })
108
109
  ] });
109
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RowActions.js","sources":["../../lib/components/RowActions.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport { ActionIcon, Menu, Tooltip } from '@mantine/core';\nimport {\n IconArrowRight,\n IconCircleX,\n IconCopy,\n IconDots,\n IconEdit,\n IconTrash\n} from '@tabler/icons-react';\nimport { type ReactNode, useMemo, useState } from 'react';\nimport { cancelEvent } from '../functions/Events';\nimport { getDetailUrl } from '../functions/Navigation';\nimport { navigateToLink } from '../functions/Navigation';\nimport type { RowAction, RowViewProps } from '../types/Tables';\n\nexport type { RowAction, RowViewProps } from '../types/Tables';\n\n// Component for viewing a row in a table\nexport function RowViewAction(props: RowViewProps): RowAction {\n return {\n ...props,\n color: undefined,\n icon: <IconArrowRight />,\n onClick: (event: any) => {\n const url = getDetailUrl(props.modelType, props.modelId);\n navigateToLink(url, props.navigate, event);\n }\n };\n}\n\n// Component for duplicating a row in a table\nexport function RowDuplicateAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Duplicate`,\n color: 'green',\n icon: <IconCopy />\n };\n}\n\n// Component for editing a row in a table\nexport function RowEditAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Edit`,\n color: 'blue',\n icon: <IconEdit />\n };\n}\n\n// Component for deleting a row in a table\nexport function RowDeleteAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Delete`,\n color: 'red',\n icon: <IconTrash />\n };\n}\n\n// Component for cancelling a row in a table\nexport function RowCancelAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Cancel`,\n color: 'red',\n icon: <IconCircleX />\n };\n}\n\n/**\n * Component for displaying actions for a row in a table.\n * Displays a simple dropdown menu with a list of actions.\n */\nexport function RowActions({\n title,\n actions,\n disabled = false,\n index\n}: {\n title?: string;\n disabled?: boolean;\n actions: RowAction[];\n index?: number;\n}): ReactNode {\n // Prevent default event handling\n // Ref: https://icflorescu.github.io/mantine-datatable/examples/links-or-buttons-inside-clickable-rows-or-cells\n function openMenu(event: any) {\n cancelEvent(event);\n setOpened(!opened);\n }\n\n const [opened, setOpened] = useState(false);\n\n const visibleActions = useMemo(() => {\n return actions.filter((action) => !action.hidden);\n }, [actions]);\n\n // Render a single action icon\n function RowActionIcon(action: Readonly<RowAction>) {\n return (\n <Tooltip\n withinPortal={true}\n label={action.tooltip ?? action.title}\n key={action.title}\n position='left'\n >\n <Menu.Item\n color={action.color}\n leftSection={action.icon}\n onClick={(event) => {\n // Prevent clicking on the action from selecting the row itself\n cancelEvent(event);\n action.onClick?.(event);\n setOpened(false);\n }}\n disabled={action.disabled || false}\n >\n {action.title}\n </Menu.Item>\n </Tooltip>\n );\n }\n\n return (\n visibleActions.length > 0 && (\n <Menu\n withinPortal={true}\n disabled={disabled}\n position='bottom-end'\n opened={opened}\n onChange={setOpened}\n >\n <Menu.Target>\n <Tooltip withinPortal={true} label={title || t`Actions`}>\n <ActionIcon\n key={`row-action-menu-${index ?? ''}`}\n aria-label={`row-action-menu-${index ?? ''}`}\n onClick={openMenu}\n disabled={disabled}\n variant='subtle'\n color='gray'\n >\n <IconDots />\n </ActionIcon>\n </Tooltip>\n </Menu.Target>\n <Menu.Dropdown>\n {visibleActions.map((action) => (\n <RowActionIcon key={action.title} {...action} />\n ))}\n </Menu.Dropdown>\n </Menu>\n )\n );\n}\n"],"names":["RowViewAction","props","color","undefined","icon","onClick","event","url","getDetailUrl","modelType","modelId","navigateToLink","navigate","RowDuplicateAction","title","_i18n","_","id","RowEditAction","RowDeleteAction","RowCancelAction","RowActions","actions","disabled","index","openMenu","cancelEvent","setOpened","opened","useState","visibleActions","useMemo","filter","action","hidden","RowActionIcon","jsx","tooltip","length","jsxs","map"],"mappings":"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"}
1
+ {"version":3,"file":"RowActions.js","sources":["../../lib/components/RowActions.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport { ActionIcon, Menu, Tooltip } from '@mantine/core';\nimport {\n IconArrowRight,\n IconCircleX,\n IconCopy,\n IconDots,\n IconEdit,\n IconTrash\n} from '@tabler/icons-react';\nimport { type ReactNode, useMemo, useState } from 'react';\nimport { cancelEvent } from '../functions/Events';\nimport { getDetailUrl } from '../functions/Navigation';\nimport { navigateToLink } from '../functions/Navigation';\nimport type { RowAction, RowViewProps } from '../types/Tables';\n\nexport type { RowAction, RowViewProps } from '../types/Tables';\n\n// Component for viewing a row in a table\nexport function RowViewAction(props: RowViewProps): RowAction {\n return {\n ...props,\n color: undefined,\n icon: <IconArrowRight />,\n onClick: (event: any) => {\n const url = getDetailUrl(props.modelType, props.modelId);\n navigateToLink(url, props.navigate, event);\n }\n };\n}\n\n// Component for duplicating a row in a table\nexport function RowDuplicateAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Duplicate`,\n color: 'green',\n icon: <IconCopy />\n };\n}\n\n// Component for editing a row in a table\nexport function RowEditAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Edit`,\n color: 'blue',\n icon: <IconEdit />\n };\n}\n\n// Component for deleting a row in a table\nexport function RowDeleteAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Delete`,\n color: 'red',\n icon: <IconTrash />\n };\n}\n\n// Component for cancelling a row in a table\nexport function RowCancelAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Cancel`,\n color: 'red',\n icon: <IconCircleX />\n };\n}\n\n/**\n * Component for displaying actions for a row in a table.\n * Displays a simple dropdown menu with a list of actions.\n */\nexport function RowActions({\n title,\n actions,\n disabled = false,\n index\n}: {\n title?: string;\n disabled?: boolean;\n actions: RowAction[];\n index?: number;\n}): ReactNode {\n // Prevent default event handling\n // Ref: https://icflorescu.github.io/mantine-datatable/examples/links-or-buttons-inside-clickable-rows-or-cells\n function openMenu(event: any) {\n cancelEvent(event);\n setOpened(!opened);\n }\n\n const [opened, setOpened] = useState(false);\n\n const visibleActions = useMemo(() => {\n return actions.filter((action) => !action.hidden);\n }, [actions]);\n\n // Render a single action icon\n function RowActionIcon(action: Readonly<RowAction>) {\n return (\n <Tooltip\n withinPortal={true}\n label={action.tooltip ?? action.title}\n key={action.title}\n position='left'\n >\n <Menu.Item\n color={action.color}\n leftSection={action.icon}\n onClick={(event) => {\n // Prevent clicking on the action from selecting the row itself\n cancelEvent(event);\n action.onClick?.(event);\n setOpened(false);\n }}\n disabled={action.disabled || false}\n >\n {action.title}\n </Menu.Item>\n </Tooltip>\n );\n }\n\n return (\n visibleActions.length > 0 && (\n <Menu\n withinPortal={true}\n disabled={disabled}\n position='bottom-end'\n opened={opened}\n onChange={setOpened}\n >\n <Menu.Target>\n <Tooltip withinPortal={true} label={title || t`Actions`}>\n <ActionIcon\n key={`row-action-menu-${index ?? ''}`}\n aria-label={`row-action-menu-${index ?? ''}`}\n onClick={openMenu}\n disabled={disabled}\n variant='transparent'\n size='sm'\n >\n <IconDots />\n </ActionIcon>\n </Tooltip>\n </Menu.Target>\n <Menu.Dropdown>\n {visibleActions.map((action) => (\n <RowActionIcon key={action.title} {...action} />\n ))}\n </Menu.Dropdown>\n </Menu>\n )\n );\n}\n"],"names":["RowViewAction","props","color","undefined","icon","onClick","event","url","getDetailUrl","modelType","modelId","navigateToLink","navigate","RowDuplicateAction","title","_i18n","_","id","RowEditAction","RowDeleteAction","RowCancelAction","RowActions","actions","disabled","index","openMenu","cancelEvent","setOpened","opened","useState","visibleActions","useMemo","filter","action","hidden","RowActionIcon","jsx","tooltip","length","jsxs","map"],"mappings":"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"}
@@ -14,6 +14,7 @@ export interface DrawerProps {
14
14
  size?: UiSizeType;
15
15
  closeOnEscape?: boolean;
16
16
  }
17
+ export declare function DetailDrawerComponent({ title, position, size, closeOnEscape, renderContent }: Readonly<DrawerProps>): import("react/jsx-runtime").JSX.Element;
17
18
  export declare function DetailDrawer(props: Readonly<DrawerProps>): import("react/jsx-runtime").JSX.Element;
18
19
  export declare function DetailDrawerLink({ to, text }: Readonly<{
19
20
  to: To;
@@ -60,6 +60,7 @@ function DetailDrawerLink({
60
60
  }
61
61
  export {
62
62
  DetailDrawer,
63
+ DetailDrawerComponent,
63
64
  DetailDrawerLink
64
65
  };
65
66
  //# sourceMappingURL=DetailDrawer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailDrawer.js","sources":["../../../lib/components/nav/DetailDrawer.tsx"],"sourcesContent":["import { ActionIcon, Divider, Drawer, Group, Stack, Text } from '@mantine/core';\nimport { IconChevronLeft } from '@tabler/icons-react';\nimport { useCallback, useMemo } from 'react';\nimport { Link, Route, Routes, useNavigate, useParams } from 'react-router-dom';\nimport type { To } from 'react-router-dom';\n\nimport type { UiSizeType } from '../../types/Core';\n\nimport { useShallow } from 'zustand/react/shallow';\nimport { useLocalLibState } from '../../states/LocalLibState';\nimport { StylishText } from '../StylishText';\nimport * as classes from './DetailDrawer.css';\n\n/**\n * @param title - drawer title\n * @param position - drawer position\n * @param renderContent - function used to render the drawer content\n * @param urlPrefix - set an additional url segment, useful when multiple drawers are rendered on one page (e.g. \"user/\")\n */\nexport interface DrawerProps {\n title: string;\n position?: 'right' | 'left';\n renderContent: (id?: string) => React.ReactNode;\n urlPrefix?: string;\n size?: UiSizeType;\n closeOnEscape?: boolean;\n}\n\nfunction DetailDrawerComponent({\n title,\n position = 'right',\n size,\n closeOnEscape = true,\n renderContent\n}: Readonly<DrawerProps>) {\n const navigate = useNavigate();\n const { id } = useParams();\n\n const content = renderContent(id);\n const opened = useMemo(() => !!id && !!content, [id, content]);\n\n const [detailDrawerStack, addDetailDrawer] = useLocalLibState(\n useShallow((state) => [state.detailDrawerStack, state.addDetailDrawer])\n );\n\n return (\n <Drawer\n opened={opened}\n onClose={() => {\n navigate('../');\n addDetailDrawer(false);\n }}\n position={position}\n closeOnEscape={closeOnEscape}\n size={size}\n classNames={{ root: classes.flex, body: classes.flex }}\n scrollAreaComponent={Stack}\n title={\n <Group>\n {detailDrawerStack > 0 && (\n <ActionIcon\n variant='outline'\n onClick={() => {\n navigate(-1);\n addDetailDrawer(-1);\n }}\n >\n <IconChevronLeft />\n </ActionIcon>\n )}\n <StylishText size='xl'>{title}</StylishText>\n </Group>\n }\n >\n <Stack gap={'xs'} className={classes.flex}>\n <Divider />\n {content}\n </Stack>\n </Drawer>\n );\n}\n\nexport function DetailDrawer(props: Readonly<DrawerProps>) {\n return (\n <Routes>\n <Route path=':id?/' element={<DetailDrawerComponent {...props} />} />\n </Routes>\n );\n}\n\nexport function DetailDrawerLink({\n to,\n text\n}: Readonly<{ to: To; text: string }>) {\n const addDetailDrawer = useLocalLibState(\n useShallow((state) => state.addDetailDrawer)\n );\n\n const onNavigate = useCallback(() => {\n addDetailDrawer(1);\n }, [addDetailDrawer]);\n\n return (\n <Link to={to} onClick={onNavigate}>\n <Text>{text}</Text>\n </Link>\n );\n}\n"],"names":["DetailDrawerComponent","title","position","size","closeOnEscape","renderContent","navigate","useNavigate","id","useParams","content","opened","useMemo","detailDrawerStack","addDetailDrawer","useLocalLibState","useShallow","state","jsx","root","classes","body","flex","Stack","jsxs","DetailDrawer","props","DetailDrawerLink","to","text","onNavigate","useCallback"],"mappings":";;;;;;;;AAAA,MAAA,aAAA,OAAA,aAAA,EAAA;;;;;;AAEA,MAAA,cAAA,OAAA,OAAA,EAAA;;AA0BA,SAASA,sBAAsB;AAAA,EAC7BC;AAAAA,EACAC,WAAW;AAAA,EACXC;AAAAA,EACAC,gBAAgB;AAAA,EAChBC;AACqB,GAAG;AACxB,QAAMC,WAAWC,YAAAA;AACjB,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAOC,UAAAA;AAEf,QAAMC,UAAUL,cAAcG,EAAE;AAChC,QAAMG,SAASC,QAAQ,MAAM,CAAC,CAACJ,MAAM,CAAC,CAACE,SAAS,CAACF,IAAIE,OAAO,CAAC;AAE7D,QAAM,CAACG,mBAAmBC,eAAe,IAAIC,iBAC3CC,WAAYC,CAAAA,UAAU,CAACA,MAAMJ,mBAAmBI,MAAMH,eAAe,CAAC,CACxE;AAEA,SACEI,kCAAAA,IAAC,QAAA,EACC,QACA,SAAS,MAAM;AACbZ,aAAS,KAAK;AACdQ,oBAAgB,KAAK;AAAA,EACvB,GACA,UACA,eACA,MACA,YAAY;AAAA,IAAEK,MAAMC;AAAAA,IAAcC,MAAMD;AAAAA,EAAQE,GAChD,qBAAqBC,OACrB,8CACG,OAAA,EACEV,UAAAA;AAAAA,IAAAA,oBAAoB,KACnBK,sCAAC,YAAA,EACC,SAAQ,WACR,SAAS,MAAM;AACbZ,eAAS,EAAE;AACXQ,sBAAgB,EAAE;AAAA,IACpB,GAEA,UAAAI,kCAAAA,IAAC,iBAAA,CAAA,CAAe,EAAA,CAClB;AAAA,IAEFA,kCAAAA,IAAC,aAAA,EAAY,MAAK,MAAMjB,UAAAA,MAAAA,CAAM;AAAA,EAAA,GAChC,GAGF,UAAAuB,kCAAAA,KAAC,OAAA,EAAM,KAAK,MAAM,WAAWJ,MAC3B,UAAA;AAAA,IAAAF,kCAAAA,IAAC,SAAA,EAAO;AAAA,IACPR;AAAAA,EAAAA,EAAAA,CACH,EAAA,CACF;AAEJ;AAEO,SAASe,aAAaC,OAA8B;AACzD,SACER,kCAAAA,IAAC,QAAA,EACC,UAAAA,kCAAAA,IAAC,OAAA,EAAM,MAAK,SAAQ,SAASA,kCAAAA,IAAC,uBAAA,KAA0BQ,MAAAA,IAAU,GACpE;AAEJ;AAEO,SAASC,iBAAiB;AAAA,EAC/BC;AAAAA,EACAC;AACkC,GAAG;AACrC,QAAMf,kBAAkBC,iBACtBC,WAAYC,CAAAA,UAAUA,MAAMH,eAAe,CAC7C;AAEA,QAAMgB,aAAaC,YAAY,MAAM;AACnCjB,oBAAgB,CAAC;AAAA,EACnB,GAAG,CAACA,eAAe,CAAC;AAEpB,SACEI,kCAAAA,IAAC,QAAK,IAAQ,SAASY,YACrB,UAAAZ,kCAAAA,IAAC,MAAA,EAAMW,gBAAK,EAAA,CACd;AAEJ;"}
1
+ {"version":3,"file":"DetailDrawer.js","sources":["../../../lib/components/nav/DetailDrawer.tsx"],"sourcesContent":["import { ActionIcon, Divider, Drawer, Group, Stack, Text } from '@mantine/core';\nimport { IconChevronLeft } from '@tabler/icons-react';\nimport { useCallback, useMemo } from 'react';\nimport { Link, Route, Routes, useNavigate, useParams } from 'react-router-dom';\nimport type { To } from 'react-router-dom';\n\nimport type { UiSizeType } from '../../types/Core';\n\nimport { useShallow } from 'zustand/react/shallow';\nimport { useLocalLibState } from '../../states/LocalLibState';\nimport { StylishText } from '../StylishText';\nimport * as classes from './DetailDrawer.css';\n\n/**\n * @param title - drawer title\n * @param position - drawer position\n * @param renderContent - function used to render the drawer content\n * @param urlPrefix - set an additional url segment, useful when multiple drawers are rendered on one page (e.g. \"user/\")\n */\nexport interface DrawerProps {\n title: string;\n position?: 'right' | 'left';\n renderContent: (id?: string) => React.ReactNode;\n urlPrefix?: string;\n size?: UiSizeType;\n closeOnEscape?: boolean;\n}\n\nexport function DetailDrawerComponent({\n title,\n position = 'right',\n size,\n closeOnEscape = true,\n renderContent\n}: Readonly<DrawerProps>) {\n const navigate = useNavigate();\n const { id } = useParams();\n\n const content = renderContent(id);\n const opened = useMemo(() => !!id && !!content, [id, content]);\n\n const [detailDrawerStack, addDetailDrawer] = useLocalLibState(\n useShallow((state) => [state.detailDrawerStack, state.addDetailDrawer])\n );\n\n return (\n <Drawer\n opened={opened}\n onClose={() => {\n navigate('../');\n addDetailDrawer(false);\n }}\n position={position}\n closeOnEscape={closeOnEscape}\n size={size}\n classNames={{ root: classes.flex, body: classes.flex }}\n scrollAreaComponent={Stack}\n title={\n <Group>\n {detailDrawerStack > 0 && (\n <ActionIcon\n variant='outline'\n onClick={() => {\n navigate(-1);\n addDetailDrawer(-1);\n }}\n >\n <IconChevronLeft />\n </ActionIcon>\n )}\n <StylishText size='xl'>{title}</StylishText>\n </Group>\n }\n >\n <Stack gap={'xs'} className={classes.flex}>\n <Divider />\n {content}\n </Stack>\n </Drawer>\n );\n}\n\nexport function DetailDrawer(props: Readonly<DrawerProps>) {\n return (\n <Routes>\n <Route path=':id?/' element={<DetailDrawerComponent {...props} />} />\n </Routes>\n );\n}\n\nexport function DetailDrawerLink({\n to,\n text\n}: Readonly<{ to: To; text: string }>) {\n const addDetailDrawer = useLocalLibState(\n useShallow((state) => state.addDetailDrawer)\n );\n\n const onNavigate = useCallback(() => {\n addDetailDrawer(1);\n }, [addDetailDrawer]);\n\n return (\n <Link to={to} onClick={onNavigate}>\n <Text>{text}</Text>\n </Link>\n );\n}\n"],"names":["DetailDrawerComponent","title","position","size","closeOnEscape","renderContent","navigate","useNavigate","id","useParams","content","opened","useMemo","detailDrawerStack","addDetailDrawer","useLocalLibState","useShallow","state","jsx","root","classes","body","flex","Stack","jsxs","DetailDrawer","props","DetailDrawerLink","to","text","onNavigate","useCallback"],"mappings":";;;;;;;;AAAA,MAAA,aAAA,OAAA,aAAA,EAAA;;;;;;AAEA,MAAA,cAAA,OAAA,OAAA,EAAA;;AA0BO,SAASA,sBAAsB;AAAA,EACpCC;AAAAA,EACAC,WAAW;AAAA,EACXC;AAAAA,EACAC,gBAAgB;AAAA,EAChBC;AACqB,GAAG;AACxB,QAAMC,WAAWC,YAAAA;AACjB,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAOC,UAAAA;AAEf,QAAMC,UAAUL,cAAcG,EAAE;AAChC,QAAMG,SAASC,QAAQ,MAAM,CAAC,CAACJ,MAAM,CAAC,CAACE,SAAS,CAACF,IAAIE,OAAO,CAAC;AAE7D,QAAM,CAACG,mBAAmBC,eAAe,IAAIC,iBAC3CC,WAAYC,CAAAA,UAAU,CAACA,MAAMJ,mBAAmBI,MAAMH,eAAe,CAAC,CACxE;AAEA,SACEI,kCAAAA,IAAC,QAAA,EACC,QACA,SAAS,MAAM;AACbZ,aAAS,KAAK;AACdQ,oBAAgB,KAAK;AAAA,EACvB,GACA,UACA,eACA,MACA,YAAY;AAAA,IAAEK,MAAMC;AAAAA,IAAcC,MAAMD;AAAAA,EAAQE,GAChD,qBAAqBC,OACrB,8CACG,OAAA,EACEV,UAAAA;AAAAA,IAAAA,oBAAoB,KACnBK,sCAAC,YAAA,EACC,SAAQ,WACR,SAAS,MAAM;AACbZ,eAAS,EAAE;AACXQ,sBAAgB,EAAE;AAAA,IACpB,GAEA,UAAAI,kCAAAA,IAAC,iBAAA,CAAA,CAAe,EAAA,CAClB;AAAA,IAEFA,kCAAAA,IAAC,aAAA,EAAY,MAAK,MAAMjB,UAAAA,MAAAA,CAAM;AAAA,EAAA,GAChC,GAGF,UAAAuB,kCAAAA,KAAC,OAAA,EAAM,KAAK,MAAM,WAAWJ,MAC3B,UAAA;AAAA,IAAAF,kCAAAA,IAAC,SAAA,EAAO;AAAA,IACPR;AAAAA,EAAAA,EAAAA,CACH,EAAA,CACF;AAEJ;AAEO,SAASe,aAAaC,OAA8B;AACzD,SACER,kCAAAA,IAAC,QAAA,EACC,UAAAA,kCAAAA,IAAC,OAAA,EAAM,MAAK,SAAQ,SAASA,kCAAAA,IAAC,uBAAA,KAA0BQ,MAAAA,IAAU,GACpE;AAEJ;AAEO,SAASC,iBAAiB;AAAA,EAC/BC;AAAAA,EACAC;AACkC,GAAG;AACrC,QAAMf,kBAAkBC,iBACtBC,WAAYC,CAAAA,UAAUA,MAAMH,eAAe,CAC7C;AAEA,QAAMgB,aAAaC,YAAY,MAAM;AACnCjB,oBAAgB,CAAC;AAAA,EACnB,GAAG,CAACA,eAAe,CAAC;AAEpB,SACEI,kCAAAA,IAAC,QAAK,IAAQ,SAASY,YACrB,UAAAZ,kCAAAA,IAAC,MAAA,EAAMW,gBAAK,EAAA,CACd;AAEJ;"}
@@ -362,6 +362,7 @@ const ModelInformationDict = {
362
362
  ),
363
363
  url_overview: "/sales/index/shipments",
364
364
  url_detail: "/sales/shipment/:pk/",
365
+ admin_url: "/order/salesordershipment/",
365
366
  api_endpoint: ApiEndpoints.sales_order_shipment_list,
366
367
  supports_barcode: true,
367
368
  icon: "shipment"
@@ -1 +1 @@
1
- {"version":3,"file":"ModelInformation.js","sources":["../../lib/enums/ModelInformation.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport type { InvenTreeIconType } from '../types/Icons';\nimport { ApiEndpoints } from './ApiEndpoints';\nimport type { ModelType } from './ModelType';\n\nexport interface ModelInformationInterface {\n label: string;\n label_multiple: string;\n url_overview?: string;\n url_detail?: string;\n api_endpoint: ApiEndpoints;\n admin_url?: string;\n supports_barcode?: boolean;\n icon: keyof InvenTreeIconType;\n}\n\nexport interface TranslatableModelInformationInterface\n extends Omit<ModelInformationInterface, 'label' | 'label_multiple'> {\n label: () => string;\n label_multiple: () => string;\n}\n\nexport type ModelDict = {\n [key in keyof typeof ModelType]: TranslatableModelInformationInterface;\n};\n\nexport const ModelInformationDict: ModelDict = {\n part: {\n label: () => t`Part`,\n label_multiple: () => t`Parts`,\n url_overview: '/part/category/index/parts',\n url_detail: '/part/:pk/',\n api_endpoint: ApiEndpoints.part_list,\n admin_url: '/part/part/',\n supports_barcode: true,\n icon: 'part'\n },\n parameter: {\n label: () => t`Parameter`,\n label_multiple: () => t`Parameters`,\n api_endpoint: ApiEndpoints.parameter_list,\n icon: 'list_details'\n },\n parametertemplate: {\n label: () => t`Parameter Template`,\n label_multiple: () => t`Parameter Templates`,\n api_endpoint: ApiEndpoints.parameter_template_list,\n admin_url: '/common/parametertemplate/',\n icon: 'list'\n },\n parttesttemplate: {\n label: () => t`Part Test Template`,\n label_multiple: () => t`Part Test Templates`,\n url_detail: '/parttesttemplate/:pk/',\n api_endpoint: ApiEndpoints.part_test_template_list,\n icon: 'test'\n },\n supplierpart: {\n label: () => t`Supplier Part`,\n label_multiple: () => t`Supplier Parts`,\n url_overview: '/purchasing/index/supplier-parts',\n url_detail: '/purchasing/supplier-part/:pk/',\n api_endpoint: ApiEndpoints.supplier_part_list,\n admin_url: '/company/supplierpart/',\n supports_barcode: true,\n icon: 'supplier_part'\n },\n manufacturerpart: {\n label: () => t`Manufacturer Part`,\n label_multiple: () => t`Manufacturer Parts`,\n url_overview: '/purchasing/index/manufacturer-parts',\n url_detail: '/purchasing/manufacturer-part/:pk/',\n api_endpoint: ApiEndpoints.manufacturer_part_list,\n admin_url: '/company/manufacturerpart/',\n supports_barcode: true,\n icon: 'manufacturers'\n },\n partcategory: {\n label: () => t`Part Category`,\n label_multiple: () => t`Part Categories`,\n url_overview: '/part/category/parts/subcategories',\n url_detail: '/part/category/:pk/',\n api_endpoint: ApiEndpoints.category_list,\n admin_url: '/part/partcategory/',\n icon: 'category'\n },\n stockitem: {\n label: () => t`Stock Item`,\n label_multiple: () => t`Stock Items`,\n url_overview: '/stock/location/index/stock-items',\n url_detail: '/stock/item/:pk/',\n api_endpoint: ApiEndpoints.stock_item_list,\n admin_url: '/stock/stockitem/',\n supports_barcode: true,\n icon: 'stock'\n },\n stocklocation: {\n label: () => t`Stock Location`,\n label_multiple: () => t`Stock Locations`,\n url_overview: '/stock/location',\n url_detail: '/stock/location/:pk/',\n api_endpoint: ApiEndpoints.stock_location_list,\n admin_url: '/stock/stocklocation/',\n supports_barcode: true,\n icon: 'location'\n },\n stocklocationtype: {\n label: () => t`Stock Location Type`,\n label_multiple: () => t`Stock Location Types`,\n api_endpoint: ApiEndpoints.stock_location_type_list,\n icon: 'location'\n },\n stockhistory: {\n label: () => t`Stock History`,\n label_multiple: () => t`Stock Histories`,\n api_endpoint: ApiEndpoints.stock_tracking_list,\n icon: 'history'\n },\n build: {\n label: () => t`Build`,\n label_multiple: () => t`Builds`,\n url_overview: '/manufacturing/index/buildorders/',\n url_detail: '/manufacturing/build-order/:pk/',\n api_endpoint: ApiEndpoints.build_order_list,\n admin_url: '/build/build/',\n supports_barcode: true,\n icon: 'build_order'\n },\n buildline: {\n label: () => t`Build Line`,\n label_multiple: () => t`Build Lines`,\n url_overview: '/build/line',\n url_detail: '/build/line/:pk/',\n api_endpoint: ApiEndpoints.build_line_list,\n icon: 'build_order'\n },\n builditem: {\n label: () => t`Build Item`,\n label_multiple: () => t`Build Items`,\n api_endpoint: ApiEndpoints.build_item_list,\n icon: 'build_order'\n },\n company: {\n label: () => t`Company`,\n label_multiple: () => t`Companies`,\n url_detail: '/company/:pk/',\n api_endpoint: ApiEndpoints.company_list,\n admin_url: '/company/company/',\n icon: 'building'\n },\n projectcode: {\n label: () => t`Project Code`,\n label_multiple: () => t`Project Codes`,\n url_detail: '/project-code/:pk/',\n api_endpoint: ApiEndpoints.project_code_list,\n icon: 'list_details'\n },\n purchaseorder: {\n label: () => t`Purchase Order`,\n label_multiple: () => t`Purchase Orders`,\n url_overview: '/purchasing/index/purchaseorders',\n url_detail: '/purchasing/purchase-order/:pk/',\n api_endpoint: ApiEndpoints.purchase_order_list,\n admin_url: '/order/purchaseorder/',\n supports_barcode: true,\n icon: 'purchase_orders'\n },\n purchaseorderlineitem: {\n label: () => t`Purchase Order Line`,\n label_multiple: () => t`Purchase Order Lines`,\n api_endpoint: ApiEndpoints.purchase_order_line_list,\n icon: 'purchase_orders'\n },\n salesorder: {\n label: () => t`Sales Order`,\n label_multiple: () => t`Sales Orders`,\n url_overview: '/sales/index/salesorders',\n url_detail: '/sales/sales-order/:pk/',\n api_endpoint: ApiEndpoints.sales_order_list,\n admin_url: '/order/salesorder/',\n supports_barcode: true,\n icon: 'sales_orders'\n },\n salesordershipment: {\n label: () => t`Sales Order Shipment`,\n label_multiple: () => t`Sales Order Shipments`,\n url_overview: '/sales/index/shipments',\n url_detail: '/sales/shipment/:pk/',\n api_endpoint: ApiEndpoints.sales_order_shipment_list,\n supports_barcode: true,\n icon: 'shipment'\n },\n returnorder: {\n label: () => t`Return Order`,\n label_multiple: () => t`Return Orders`,\n url_overview: '/sales/index/returnorders',\n url_detail: '/sales/return-order/:pk/',\n api_endpoint: ApiEndpoints.return_order_list,\n admin_url: '/order/returnorder/',\n supports_barcode: true,\n icon: 'return_orders'\n },\n returnorderlineitem: {\n label: () => t`Return Order Line Item`,\n label_multiple: () => t`Return Order Line Items`,\n api_endpoint: ApiEndpoints.return_order_line_list,\n icon: 'return_orders'\n },\n address: {\n label: () => t`Address`,\n label_multiple: () => t`Addresses`,\n url_detail: '/address/:pk/',\n api_endpoint: ApiEndpoints.address_list,\n icon: 'address'\n },\n contact: {\n label: () => t`Contact`,\n label_multiple: () => t`Contacts`,\n url_detail: '/contact/:pk/',\n api_endpoint: ApiEndpoints.contact_list,\n icon: 'group'\n },\n owner: {\n label: () => t`Owner`,\n label_multiple: () => t`Owners`,\n url_detail: '/owner/:pk/',\n api_endpoint: ApiEndpoints.owner_list,\n icon: 'group'\n },\n user: {\n label: () => t`User`,\n label_multiple: () => t`Users`,\n url_detail: '/core/user/:pk/',\n api_endpoint: ApiEndpoints.user_list,\n icon: 'user'\n },\n group: {\n label: () => t`Group`,\n label_multiple: () => t`Groups`,\n url_detail: '/core/group/:pk/',\n api_endpoint: ApiEndpoints.group_list,\n admin_url: '/auth/group/',\n icon: 'group'\n },\n importsession: {\n label: () => t`Import Session`,\n label_multiple: () => t`Import Sessions`,\n url_overview: '/settings/admin/import',\n url_detail: '/import/:pk/',\n api_endpoint: ApiEndpoints.import_session_list,\n icon: 'import'\n },\n labeltemplate: {\n label: () => t`Label Template`,\n label_multiple: () => t`Label Templates`,\n url_overview: '/settings/admin/labels',\n url_detail: '/settings/admin/labels/:pk/',\n api_endpoint: ApiEndpoints.label_list,\n icon: 'labels'\n },\n reporttemplate: {\n label: () => t`Report Template`,\n label_multiple: () => t`Report Templates`,\n url_overview: '/settings/admin/reports',\n url_detail: '/settings/admin/reports/:pk/',\n api_endpoint: ApiEndpoints.report_list,\n icon: 'reports'\n },\n pluginconfig: {\n label: () => t`Plugin Configuration`,\n label_multiple: () => t`Plugin Configurations`,\n url_overview: '/settings/admin/plugin',\n url_detail: '/settings/admin/plugin/:pk/',\n api_endpoint: ApiEndpoints.plugin_list,\n icon: 'plugin'\n },\n contenttype: {\n label: () => t`Content Type`,\n label_multiple: () => t`Content Types`,\n api_endpoint: ApiEndpoints.content_type_list,\n icon: 'list_details'\n },\n selectionlist: {\n label: () => t`Selection List`,\n label_multiple: () => t`Selection Lists`,\n url_overview: '/settings/admin/part-parameters',\n api_endpoint: ApiEndpoints.selectionlist_list,\n icon: 'list_details'\n },\n selectionentry: {\n label: () => t`Selection Entry`,\n label_multiple: () => t`Selection Entries`,\n url_overview: '/settings/admin/part-parameters',\n api_endpoint: ApiEndpoints.selectionentry_list,\n icon: 'list_details'\n },\n error: {\n label: () => t`Error`,\n label_multiple: () => t`Errors`,\n api_endpoint: ApiEndpoints.error_report_list,\n url_overview: '/settings/admin/errors',\n url_detail: '/settings/admin/errors/:pk/',\n icon: 'exclamation'\n }\n};\n"],"names":["ModelInformationDict","part","label","_i18n","_","id","label_multiple","url_overview","url_detail","api_endpoint","ApiEndpoints","part_list","admin_url","supports_barcode","icon","parameter","parameter_list","parametertemplate","parameter_template_list","parttesttemplate","part_test_template_list","supplierpart","supplier_part_list","manufacturerpart","manufacturer_part_list","partcategory","category_list","stockitem","stock_item_list","stocklocation","stock_location_list","stocklocationtype","stock_location_type_list","stockhistory","stock_tracking_list","build","build_order_list","buildline","build_line_list","builditem","build_item_list","company","company_list","projectcode","project_code_list","purchaseorder","purchase_order_list","purchaseorderlineitem","purchase_order_line_list","salesorder","sales_order_list","salesordershipment","sales_order_shipment_list","returnorder","return_order_list","returnorderlineitem","return_order_line_list","address","address_list","contact","contact_list","owner","owner_list","user","user_list","group","group_list","importsession","import_session_list","labeltemplate","label_list","reporttemplate","report_list","pluginconfig","plugin_list","contenttype","content_type_list","selectionlist","selectionlist_list","selectionentry","selectionentry_list","error","error_report_list"],"mappings":"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"}
1
+ {"version":3,"file":"ModelInformation.js","sources":["../../lib/enums/ModelInformation.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport type { InvenTreeIconType } from '../types/Icons';\nimport { ApiEndpoints } from './ApiEndpoints';\nimport type { ModelType } from './ModelType';\n\nexport interface ModelInformationInterface {\n label: string;\n label_multiple: string;\n url_overview?: string;\n url_detail?: string;\n api_endpoint: ApiEndpoints;\n admin_url?: string;\n supports_barcode?: boolean;\n icon: keyof InvenTreeIconType;\n}\n\nexport interface TranslatableModelInformationInterface\n extends Omit<ModelInformationInterface, 'label' | 'label_multiple'> {\n label: () => string;\n label_multiple: () => string;\n}\n\nexport type ModelDict = {\n [key in keyof typeof ModelType]: TranslatableModelInformationInterface;\n};\n\nexport const ModelInformationDict: ModelDict = {\n part: {\n label: () => t`Part`,\n label_multiple: () => t`Parts`,\n url_overview: '/part/category/index/parts',\n url_detail: '/part/:pk/',\n api_endpoint: ApiEndpoints.part_list,\n admin_url: '/part/part/',\n supports_barcode: true,\n icon: 'part'\n },\n parameter: {\n label: () => t`Parameter`,\n label_multiple: () => t`Parameters`,\n api_endpoint: ApiEndpoints.parameter_list,\n icon: 'list_details'\n },\n parametertemplate: {\n label: () => t`Parameter Template`,\n label_multiple: () => t`Parameter Templates`,\n api_endpoint: ApiEndpoints.parameter_template_list,\n admin_url: '/common/parametertemplate/',\n icon: 'list'\n },\n parttesttemplate: {\n label: () => t`Part Test Template`,\n label_multiple: () => t`Part Test Templates`,\n url_detail: '/parttesttemplate/:pk/',\n api_endpoint: ApiEndpoints.part_test_template_list,\n icon: 'test'\n },\n supplierpart: {\n label: () => t`Supplier Part`,\n label_multiple: () => t`Supplier Parts`,\n url_overview: '/purchasing/index/supplier-parts',\n url_detail: '/purchasing/supplier-part/:pk/',\n api_endpoint: ApiEndpoints.supplier_part_list,\n admin_url: '/company/supplierpart/',\n supports_barcode: true,\n icon: 'supplier_part'\n },\n manufacturerpart: {\n label: () => t`Manufacturer Part`,\n label_multiple: () => t`Manufacturer Parts`,\n url_overview: '/purchasing/index/manufacturer-parts',\n url_detail: '/purchasing/manufacturer-part/:pk/',\n api_endpoint: ApiEndpoints.manufacturer_part_list,\n admin_url: '/company/manufacturerpart/',\n supports_barcode: true,\n icon: 'manufacturers'\n },\n partcategory: {\n label: () => t`Part Category`,\n label_multiple: () => t`Part Categories`,\n url_overview: '/part/category/parts/subcategories',\n url_detail: '/part/category/:pk/',\n api_endpoint: ApiEndpoints.category_list,\n admin_url: '/part/partcategory/',\n icon: 'category'\n },\n stockitem: {\n label: () => t`Stock Item`,\n label_multiple: () => t`Stock Items`,\n url_overview: '/stock/location/index/stock-items',\n url_detail: '/stock/item/:pk/',\n api_endpoint: ApiEndpoints.stock_item_list,\n admin_url: '/stock/stockitem/',\n supports_barcode: true,\n icon: 'stock'\n },\n stocklocation: {\n label: () => t`Stock Location`,\n label_multiple: () => t`Stock Locations`,\n url_overview: '/stock/location',\n url_detail: '/stock/location/:pk/',\n api_endpoint: ApiEndpoints.stock_location_list,\n admin_url: '/stock/stocklocation/',\n supports_barcode: true,\n icon: 'location'\n },\n stocklocationtype: {\n label: () => t`Stock Location Type`,\n label_multiple: () => t`Stock Location Types`,\n api_endpoint: ApiEndpoints.stock_location_type_list,\n icon: 'location'\n },\n stockhistory: {\n label: () => t`Stock History`,\n label_multiple: () => t`Stock Histories`,\n api_endpoint: ApiEndpoints.stock_tracking_list,\n icon: 'history'\n },\n build: {\n label: () => t`Build`,\n label_multiple: () => t`Builds`,\n url_overview: '/manufacturing/index/buildorders/',\n url_detail: '/manufacturing/build-order/:pk/',\n api_endpoint: ApiEndpoints.build_order_list,\n admin_url: '/build/build/',\n supports_barcode: true,\n icon: 'build_order'\n },\n buildline: {\n label: () => t`Build Line`,\n label_multiple: () => t`Build Lines`,\n url_overview: '/build/line',\n url_detail: '/build/line/:pk/',\n api_endpoint: ApiEndpoints.build_line_list,\n icon: 'build_order'\n },\n builditem: {\n label: () => t`Build Item`,\n label_multiple: () => t`Build Items`,\n api_endpoint: ApiEndpoints.build_item_list,\n icon: 'build_order'\n },\n company: {\n label: () => t`Company`,\n label_multiple: () => t`Companies`,\n url_detail: '/company/:pk/',\n api_endpoint: ApiEndpoints.company_list,\n admin_url: '/company/company/',\n icon: 'building'\n },\n projectcode: {\n label: () => t`Project Code`,\n label_multiple: () => t`Project Codes`,\n url_detail: '/project-code/:pk/',\n api_endpoint: ApiEndpoints.project_code_list,\n icon: 'list_details'\n },\n purchaseorder: {\n label: () => t`Purchase Order`,\n label_multiple: () => t`Purchase Orders`,\n url_overview: '/purchasing/index/purchaseorders',\n url_detail: '/purchasing/purchase-order/:pk/',\n api_endpoint: ApiEndpoints.purchase_order_list,\n admin_url: '/order/purchaseorder/',\n supports_barcode: true,\n icon: 'purchase_orders'\n },\n purchaseorderlineitem: {\n label: () => t`Purchase Order Line`,\n label_multiple: () => t`Purchase Order Lines`,\n api_endpoint: ApiEndpoints.purchase_order_line_list,\n icon: 'purchase_orders'\n },\n salesorder: {\n label: () => t`Sales Order`,\n label_multiple: () => t`Sales Orders`,\n url_overview: '/sales/index/salesorders',\n url_detail: '/sales/sales-order/:pk/',\n api_endpoint: ApiEndpoints.sales_order_list,\n admin_url: '/order/salesorder/',\n supports_barcode: true,\n icon: 'sales_orders'\n },\n salesordershipment: {\n label: () => t`Sales Order Shipment`,\n label_multiple: () => t`Sales Order Shipments`,\n url_overview: '/sales/index/shipments',\n url_detail: '/sales/shipment/:pk/',\n admin_url: '/order/salesordershipment/',\n api_endpoint: ApiEndpoints.sales_order_shipment_list,\n supports_barcode: true,\n icon: 'shipment'\n },\n returnorder: {\n label: () => t`Return Order`,\n label_multiple: () => t`Return Orders`,\n url_overview: '/sales/index/returnorders',\n url_detail: '/sales/return-order/:pk/',\n api_endpoint: ApiEndpoints.return_order_list,\n admin_url: '/order/returnorder/',\n supports_barcode: true,\n icon: 'return_orders'\n },\n returnorderlineitem: {\n label: () => t`Return Order Line Item`,\n label_multiple: () => t`Return Order Line Items`,\n api_endpoint: ApiEndpoints.return_order_line_list,\n icon: 'return_orders'\n },\n address: {\n label: () => t`Address`,\n label_multiple: () => t`Addresses`,\n url_detail: '/address/:pk/',\n api_endpoint: ApiEndpoints.address_list,\n icon: 'address'\n },\n contact: {\n label: () => t`Contact`,\n label_multiple: () => t`Contacts`,\n url_detail: '/contact/:pk/',\n api_endpoint: ApiEndpoints.contact_list,\n icon: 'group'\n },\n owner: {\n label: () => t`Owner`,\n label_multiple: () => t`Owners`,\n url_detail: '/owner/:pk/',\n api_endpoint: ApiEndpoints.owner_list,\n icon: 'group'\n },\n user: {\n label: () => t`User`,\n label_multiple: () => t`Users`,\n url_detail: '/core/user/:pk/',\n api_endpoint: ApiEndpoints.user_list,\n icon: 'user'\n },\n group: {\n label: () => t`Group`,\n label_multiple: () => t`Groups`,\n url_detail: '/core/group/:pk/',\n api_endpoint: ApiEndpoints.group_list,\n admin_url: '/auth/group/',\n icon: 'group'\n },\n importsession: {\n label: () => t`Import Session`,\n label_multiple: () => t`Import Sessions`,\n url_overview: '/settings/admin/import',\n url_detail: '/import/:pk/',\n api_endpoint: ApiEndpoints.import_session_list,\n icon: 'import'\n },\n labeltemplate: {\n label: () => t`Label Template`,\n label_multiple: () => t`Label Templates`,\n url_overview: '/settings/admin/labels',\n url_detail: '/settings/admin/labels/:pk/',\n api_endpoint: ApiEndpoints.label_list,\n icon: 'labels'\n },\n reporttemplate: {\n label: () => t`Report Template`,\n label_multiple: () => t`Report Templates`,\n url_overview: '/settings/admin/reports',\n url_detail: '/settings/admin/reports/:pk/',\n api_endpoint: ApiEndpoints.report_list,\n icon: 'reports'\n },\n pluginconfig: {\n label: () => t`Plugin Configuration`,\n label_multiple: () => t`Plugin Configurations`,\n url_overview: '/settings/admin/plugin',\n url_detail: '/settings/admin/plugin/:pk/',\n api_endpoint: ApiEndpoints.plugin_list,\n icon: 'plugin'\n },\n contenttype: {\n label: () => t`Content Type`,\n label_multiple: () => t`Content Types`,\n api_endpoint: ApiEndpoints.content_type_list,\n icon: 'list_details'\n },\n selectionlist: {\n label: () => t`Selection List`,\n label_multiple: () => t`Selection Lists`,\n url_overview: '/settings/admin/part-parameters',\n api_endpoint: ApiEndpoints.selectionlist_list,\n icon: 'list_details'\n },\n selectionentry: {\n label: () => t`Selection Entry`,\n label_multiple: () => t`Selection Entries`,\n url_overview: '/settings/admin/part-parameters',\n api_endpoint: ApiEndpoints.selectionentry_list,\n icon: 'list_details'\n },\n error: {\n label: () => t`Error`,\n label_multiple: () => t`Errors`,\n api_endpoint: ApiEndpoints.error_report_list,\n url_overview: '/settings/admin/errors',\n url_detail: '/settings/admin/errors/:pk/',\n icon: 'exclamation'\n }\n};\n"],"names":["ModelInformationDict","part","label","_i18n","_","id","label_multiple","url_overview","url_detail","api_endpoint","ApiEndpoints","part_list","admin_url","supports_barcode","icon","parameter","parameter_list","parametertemplate","parameter_template_list","parttesttemplate","part_test_template_list","supplierpart","supplier_part_list","manufacturerpart","manufacturer_part_list","partcategory","category_list","stockitem","stock_item_list","stocklocation","stock_location_list","stocklocationtype","stock_location_type_list","stockhistory","stock_tracking_list","build","build_order_list","buildline","build_line_list","builditem","build_item_list","company","company_list","projectcode","project_code_list","purchaseorder","purchase_order_list","purchaseorderlineitem","purchase_order_line_list","salesorder","sales_order_list","salesordershipment","sales_order_shipment_list","returnorder","return_order_list","returnorderlineitem","return_order_line_list","address","address_list","contact","contact_list","owner","owner_list","user","user_list","group","group_list","importsession","import_session_list","labeltemplate","label_list","reporttemplate","report_list","pluginconfig","plugin_list","contenttype","content_type_list","selectionlist","selectionlist_list","selectionentry","selectionentry_list","error","error_report_list"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  function cancelEvent(event) {
2
- event?.preventDefault();
3
- event?.stopPropagation();
4
- event?.nativeEvent?.stopImmediatePropagation();
2
+ var _a;
3
+ event == null ? void 0 : event.preventDefault();
4
+ event == null ? void 0 : event.stopPropagation();
5
+ (_a = event == null ? void 0 : event.nativeEvent) == null ? void 0 : _a.stopImmediatePropagation();
5
6
  }
6
7
  export {
7
8
  cancelEvent
@@ -1 +1 @@
1
- {"version":3,"file":"Events.js","sources":["../../lib/functions/Events.tsx"],"sourcesContent":["// Helper function to cancel event propagation\nexport function cancelEvent(event: any) {\n event?.preventDefault();\n event?.stopPropagation();\n event?.nativeEvent?.stopImmediatePropagation();\n}\n"],"names":["cancelEvent","event","preventDefault","stopPropagation","nativeEvent","stopImmediatePropagation"],"mappings":"AACO,SAASA,YAAYC,OAAY;AACtCA,SAAOC,eAAAA;AACPD,SAAOE,gBAAAA;AACPF,SAAOG,aAAaC,yBAAAA;AACtB;"}
1
+ {"version":3,"file":"Events.js","sources":["../../lib/functions/Events.tsx"],"sourcesContent":["// Helper function to cancel event propagation\nexport function cancelEvent(event: any) {\n event?.preventDefault();\n event?.stopPropagation();\n event?.nativeEvent?.stopImmediatePropagation();\n}\n"],"names":["cancelEvent","event","preventDefault","stopPropagation","nativeEvent","stopImmediatePropagation"],"mappings":"AACO,SAASA,YAAYC,OAAY;AAAjC;AACLA,iCAAOC;AACPD,iCAAOE;AACPF,uCAAOG,gBAAPH,mBAAoBI;AACtB;"}
@@ -1,6 +1,9 @@
1
1
  import { ModelInformationDict } from "../enums/ModelInformation.js";
2
2
  import { cancelEvent } from "./Events.js";
3
- const getBaseUrl = () => window.INVENTREE_SETTINGS?.base_url || "web";
3
+ const getBaseUrl = () => {
4
+ var _a;
5
+ return ((_a = window.INVENTREE_SETTINGS) == null ? void 0 : _a.base_url) || "web";
6
+ };
4
7
  function getDetailUrl(model, pk, absolute) {
5
8
  const modelInfo = ModelInformationDict[model];
6
9
  if (pk === void 0 || pk === null) {
@@ -36,7 +39,7 @@ const navigateToLink = (link, navigate, event) => {
36
39
  }
37
40
  };
38
41
  const eventModified = (event) => {
39
- return event?.ctrlKey || event?.shiftKey || event?.metaKey;
42
+ return (event == null ? void 0 : event.ctrlKey) || (event == null ? void 0 : event.shiftKey) || (event == null ? void 0 : event.metaKey);
40
43
  };
41
44
  export {
42
45
  eventModified,
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.js","sources":["../../lib/functions/Navigation.tsx"],"sourcesContent":["import type { NavigateFunction } from 'react-router-dom';\nimport { ModelInformationDict } from '../enums/ModelInformation';\nimport type { ModelType } from '../enums/ModelType';\nimport { apiUrl } from './Api';\nimport { cancelEvent } from './Events';\n\nexport const getBaseUrl = (): string =>\n (window as any).INVENTREE_SETTINGS?.base_url || 'web';\n\n/**\n * Returns the overview URL for a given model type.\n * This is the UI URL, not the API URL.\n */\nexport function getOverviewUrl(model: ModelType, absolute?: boolean): string {\n const modelInfo = ModelInformationDict[model];\n\n if (modelInfo?.url_overview) {\n const url = modelInfo.url_overview;\n const base = getBaseUrl();\n\n if (absolute && base) {\n return `/${base}${url}`;\n } else {\n return url;\n }\n }\n\n console.error(`No overview URL found for model ${model}`);\n return '';\n}\n\n/**\n * Returns the detail view URL for a given model type.\n * This is the UI URL, not the API URL.\n */\nexport function getDetailUrl(\n model: ModelType,\n pk: number | string,\n absolute?: boolean\n): string {\n const modelInfo = ModelInformationDict[model];\n\n if (pk === undefined || pk === null) {\n return '';\n }\n\n if (!!pk && modelInfo && modelInfo.url_detail) {\n const url = modelInfo.url_detail.replace(':pk', pk.toString());\n const base = getBaseUrl();\n\n if (absolute && base) {\n return `/${base}${url}`;\n } else {\n return url;\n }\n }\n\n console.error(`No detail URL found for model ${model} <${pk}>`);\n return '';\n}\n\n/**\n * Returns the API detail URL for a given model type.\n */\nexport function getApiUrl(\n model: ModelType,\n pk: number | string\n): string | undefined {\n const modelInfo = ModelInformationDict[model];\n\n if (pk === undefined || pk === null) {\n return '';\n }\n\n if (!!pk && modelInfo && modelInfo.api_endpoint) {\n return apiUrl(modelInfo.api_endpoint, pk);\n }\n\n console.error(`No API detail URL found for model ${model} <${pk}>`);\n return undefined;\n}\n\n/*\n * Navigate to a provided link.\n * - If the link is to be opened externally, open it in a new tab.\n * - Otherwise, navigate using the provided navigate function.\n */\nexport const navigateToLink = (\n link: string,\n navigate: NavigateFunction,\n event: any\n) => {\n cancelEvent(event);\n\n const base = `/${getBaseUrl()}`;\n\n if (eventModified(event)) {\n // Open the link in a new tab\n let url = link;\n if (link.startsWith('/') && !link.startsWith(base)) {\n url = `${base}${link}`;\n }\n window.open(url, '_blank');\n } else {\n // Navigate internally\n let url = link;\n\n if (link.startsWith(base)) {\n // Strip the base URL from the link\n url = link.replace(base, '');\n }\n\n navigate(url);\n }\n};\n\n/**\n * Check if the event is modified (e.g. ctrl, shift, or meta key pressed)\n * @param event - The event to check\n * @returns true if the event was modified\n */\nexport const eventModified = (\n event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n) => {\n return event?.ctrlKey || event?.shiftKey || event?.metaKey;\n};\n"],"names":["getBaseUrl","window","INVENTREE_SETTINGS","base_url","getDetailUrl","model","pk","absolute","modelInfo","ModelInformationDict","undefined","url_detail","url","replace","toString","base","console","error","navigateToLink","link","navigate","event","cancelEvent","eventModified","startsWith","open","ctrlKey","shiftKey","metaKey"],"mappings":";;AAMO,MAAMA,aAAaA,MACvBC,OAAeC,oBAAoBC,YAAY;AA4B3C,SAASC,aACdC,OACAC,IACAC,UACQ;AACR,QAAMC,YAAYC,qBAAqBJ,KAAK;AAE5C,MAAIC,OAAOI,UAAaJ,OAAO,MAAM;AACnC,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,CAACA,MAAME,aAAaA,UAAUG,YAAY;AAC7C,UAAMC,MAAMJ,UAAUG,WAAWE,QAAQ,OAAOP,GAAGQ,UAAU;AAC7D,UAAMC,OAAOf,WAAAA;AAEb,QAAIO,YAAYQ,MAAM;AACpB,aAAO,IAAIA,IAAI,GAAGH,GAAG;AAAA,IACvB,OAAO;AACL,aAAOA;AAAAA,IACT;AAAA,EACF;AAEAI,UAAQC,MAAM,iCAAiCZ,KAAK,KAAKC,EAAE,GAAG;AAC9D,SAAO;AACT;AA4BO,MAAMY,iBAAiBA,CAC5BC,MACAC,UACAC,UACG;AACHC,cAAYD,KAAK;AAEjB,QAAMN,OAAO,IAAIf,WAAAA,CAAY;AAE7B,MAAIuB,cAAcF,KAAK,GAAG;AAExB,QAAIT,MAAMO;AACV,QAAIA,KAAKK,WAAW,GAAG,KAAK,CAACL,KAAKK,WAAWT,IAAI,GAAG;AAClDH,YAAM,GAAGG,IAAI,GAAGI,IAAI;AAAA,IACtB;AACAlB,WAAOwB,KAAKb,KAAK,QAAQ;AAAA,EAC3B,OAAO;AAEL,QAAIA,MAAMO;AAEV,QAAIA,KAAKK,WAAWT,IAAI,GAAG;AAEzBH,YAAMO,KAAKN,QAAQE,MAAM,EAAE;AAAA,IAC7B;AAEAK,aAASR,GAAG;AAAA,EACd;AACF;AAOO,MAAMW,gBAAgBA,CAC3BF,UACG;AACH,SAAOA,OAAOK,WAAWL,OAAOM,YAAYN,OAAOO;AACrD;"}
1
+ {"version":3,"file":"Navigation.js","sources":["../../lib/functions/Navigation.tsx"],"sourcesContent":["import type { NavigateFunction } from 'react-router-dom';\nimport { ModelInformationDict } from '../enums/ModelInformation';\nimport type { ModelType } from '../enums/ModelType';\nimport { apiUrl } from './Api';\nimport { cancelEvent } from './Events';\n\nexport const getBaseUrl = (): string =>\n (window as any).INVENTREE_SETTINGS?.base_url || 'web';\n\n/**\n * Returns the overview URL for a given model type.\n * This is the UI URL, not the API URL.\n */\nexport function getOverviewUrl(model: ModelType, absolute?: boolean): string {\n const modelInfo = ModelInformationDict[model];\n\n if (modelInfo?.url_overview) {\n const url = modelInfo.url_overview;\n const base = getBaseUrl();\n\n if (absolute && base) {\n return `/${base}${url}`;\n } else {\n return url;\n }\n }\n\n console.error(`No overview URL found for model ${model}`);\n return '';\n}\n\n/**\n * Returns the detail view URL for a given model type.\n * This is the UI URL, not the API URL.\n */\nexport function getDetailUrl(\n model: ModelType,\n pk: number | string,\n absolute?: boolean\n): string {\n const modelInfo = ModelInformationDict[model];\n\n if (pk === undefined || pk === null) {\n return '';\n }\n\n if (!!pk && modelInfo && modelInfo.url_detail) {\n const url = modelInfo.url_detail.replace(':pk', pk.toString());\n const base = getBaseUrl();\n\n if (absolute && base) {\n return `/${base}${url}`;\n } else {\n return url;\n }\n }\n\n console.error(`No detail URL found for model ${model} <${pk}>`);\n return '';\n}\n\n/**\n * Returns the API detail URL for a given model type.\n */\nexport function getApiUrl(\n model: ModelType,\n pk: number | string\n): string | undefined {\n const modelInfo = ModelInformationDict[model];\n\n if (pk === undefined || pk === null) {\n return '';\n }\n\n if (!!pk && modelInfo && modelInfo.api_endpoint) {\n return apiUrl(modelInfo.api_endpoint, pk);\n }\n\n console.error(`No API detail URL found for model ${model} <${pk}>`);\n return undefined;\n}\n\n/*\n * Navigate to a provided link.\n * - If the link is to be opened externally, open it in a new tab.\n * - Otherwise, navigate using the provided navigate function.\n */\nexport const navigateToLink = (\n link: string,\n navigate: NavigateFunction,\n event: any\n) => {\n cancelEvent(event);\n\n const base = `/${getBaseUrl()}`;\n\n if (eventModified(event)) {\n // Open the link in a new tab\n let url = link;\n if (link.startsWith('/') && !link.startsWith(base)) {\n url = `${base}${link}`;\n }\n window.open(url, '_blank');\n } else {\n // Navigate internally\n let url = link;\n\n if (link.startsWith(base)) {\n // Strip the base URL from the link\n url = link.replace(base, '');\n }\n\n navigate(url);\n }\n};\n\n/**\n * Check if the event is modified (e.g. ctrl, shift, or meta key pressed)\n * @param event - The event to check\n * @returns true if the event was modified\n */\nexport const eventModified = (\n event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n) => {\n return event?.ctrlKey || event?.shiftKey || event?.metaKey;\n};\n"],"names":["getBaseUrl","window","INVENTREE_SETTINGS","base_url","getDetailUrl","model","pk","absolute","modelInfo","ModelInformationDict","undefined","url_detail","url","replace","toString","base","console","error","navigateToLink","link","navigate","event","cancelEvent","eventModified","startsWith","open","ctrlKey","shiftKey","metaKey"],"mappings":";;AAMO,MAAMA,aAAaA,MAAAA;;AACvBC,uBAAeC,uBAAfD,mBAAmCE,aAAY;AAAA;AA4B3C,SAASC,aACdC,OACAC,IACAC,UACQ;AACR,QAAMC,YAAYC,qBAAqBJ,KAAK;AAE5C,MAAIC,OAAOI,UAAaJ,OAAO,MAAM;AACnC,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,CAACA,MAAME,aAAaA,UAAUG,YAAY;AAC7C,UAAMC,MAAMJ,UAAUG,WAAWE,QAAQ,OAAOP,GAAGQ,UAAU;AAC7D,UAAMC,OAAOf,WAAAA;AAEb,QAAIO,YAAYQ,MAAM;AACpB,aAAO,IAAIA,IAAI,GAAGH,GAAG;AAAA,IACvB,OAAO;AACL,aAAOA;AAAAA,IACT;AAAA,EACF;AAEAI,UAAQC,MAAM,iCAAiCZ,KAAK,KAAKC,EAAE,GAAG;AAC9D,SAAO;AACT;AA4BO,MAAMY,iBAAiBA,CAC5BC,MACAC,UACAC,UACG;AACHC,cAAYD,KAAK;AAEjB,QAAMN,OAAO,IAAIf,WAAAA,CAAY;AAE7B,MAAIuB,cAAcF,KAAK,GAAG;AAExB,QAAIT,MAAMO;AACV,QAAIA,KAAKK,WAAW,GAAG,KAAK,CAACL,KAAKK,WAAWT,IAAI,GAAG;AAClDH,YAAM,GAAGG,IAAI,GAAGI,IAAI;AAAA,IACtB;AACAlB,WAAOwB,KAAKb,KAAK,QAAQ;AAAA,EAC3B,OAAO;AAEL,QAAIA,MAAMO;AAEV,QAAIA,KAAKK,WAAWT,IAAI,GAAG;AAEzBH,YAAMO,KAAKN,QAAQE,MAAM,EAAE;AAAA,IAC7B;AAEAK,aAASR,GAAG;AAAA,EACd;AACF;AAOO,MAAMW,gBAAgBA,CAC3BF,UACG;AACH,UAAOA,+BAAOK,aAAWL,+BAAOM,cAAYN,+BAAOO;AACrD;"}
@@ -1,13 +1,15 @@
1
1
  import { INVENTREE_PLUGIN_VERSION } from "../types/Plugins.js";
2
2
  function checkPluginVersion(context) {
3
- const systemVersion = context?.version?.inventree || "";
3
+ var _a;
4
+ const systemVersion = ((_a = context == null ? void 0 : context.version) == null ? void 0 : _a.inventree) || "";
4
5
  if (INVENTREE_PLUGIN_VERSION != systemVersion) {
5
6
  console.info(`Plugin version mismatch! Expected version ${INVENTREE_PLUGIN_VERSION}, got ${systemVersion}`);
6
7
  }
7
8
  }
8
9
  function initPlugin(context) {
10
+ var _a, _b;
9
11
  checkPluginVersion(context);
10
- context.i18n?.activate?.(context.locale);
12
+ (_b = (_a = context.i18n) == null ? void 0 : _a.activate) == null ? void 0 : _b.call(_a, context.locale);
11
13
  }
12
14
  export {
13
15
  checkPluginVersion,
@@ -1 +1 @@
1
- {"version":3,"file":"Plugins.js","sources":["../../lib/functions/Plugins.tsx"],"sourcesContent":["import {\n INVENTREE_PLUGIN_VERSION,\n type InvenTreePluginContext\n} from '../types/Plugins';\n\n/**\n * Check that the plugin version matches the expected version.\n * This is a helper function which only generates a warning if there is a mismatch.\n */\nexport function checkPluginVersion(context: InvenTreePluginContext) {\n const systemVersion: string = context?.version?.inventree || '';\n\n if (INVENTREE_PLUGIN_VERSION != systemVersion) {\n console.info(\n `Plugin version mismatch! Expected version ${INVENTREE_PLUGIN_VERSION}, got ${systemVersion}`\n );\n }\n}\n\n/**\n * Helper function to initialize the plugin context.\n */\nexport function initPlugin(context: InvenTreePluginContext) {\n // Check that the plugin version matches the expected version\n checkPluginVersion(context);\n\n // Activate the i18n context for the current locale\n context.i18n?.activate?.(context.locale);\n}\n"],"names":["checkPluginVersion","context","systemVersion","version","inventree","INVENTREE_PLUGIN_VERSION","console","info","initPlugin","i18n","activate","locale"],"mappings":";AASO,SAASA,mBAAmBC,SAAiC;AAClE,QAAMC,gBAAwBD,SAASE,SAASC,aAAa;AAE7D,MAAIC,4BAA4BH,eAAe;AAC7CI,YAAQC,KACN,6CAA6CF,wBAAwB,SAASH,aAAa,EAC7F;AAAA,EACF;AACF;AAKO,SAASM,WAAWP,SAAiC;AAE1DD,qBAAmBC,OAAO;AAG1BA,UAAQQ,MAAMC,WAAWT,QAAQU,MAAM;AACzC;"}
1
+ {"version":3,"file":"Plugins.js","sources":["../../lib/functions/Plugins.tsx"],"sourcesContent":["import {\n INVENTREE_PLUGIN_VERSION,\n type InvenTreePluginContext\n} from '../types/Plugins';\n\n/**\n * Check that the plugin version matches the expected version.\n * This is a helper function which only generates a warning if there is a mismatch.\n */\nexport function checkPluginVersion(context: InvenTreePluginContext) {\n const systemVersion: string = context?.version?.inventree || '';\n\n if (INVENTREE_PLUGIN_VERSION != systemVersion) {\n console.info(\n `Plugin version mismatch! Expected version ${INVENTREE_PLUGIN_VERSION}, got ${systemVersion}`\n );\n }\n}\n\n/**\n * Helper function to initialize the plugin context.\n */\nexport function initPlugin(context: InvenTreePluginContext) {\n // Check that the plugin version matches the expected version\n checkPluginVersion(context);\n\n // Activate the i18n context for the current locale\n context.i18n?.activate?.(context.locale);\n}\n"],"names":["checkPluginVersion","context","systemVersion","version","inventree","INVENTREE_PLUGIN_VERSION","console","info","initPlugin","i18n","activate","locale"],"mappings":";AASO,SAASA,mBAAmBC,SAAiC;;AAClE,QAAMC,kBAAwBD,wCAASE,YAATF,mBAAkBG,cAAa;AAE7D,MAAIC,4BAA4BH,eAAe;AAC7CI,YAAQC,KACN,6CAA6CF,wBAAwB,SAASH,aAAa,EAC7F;AAAA,EACF;AACF;AAKO,SAASM,WAAWP,SAAiC;;AAE1DD,qBAAmBC,OAAO;AAG1BA,sBAAQQ,SAARR,mBAAcS,aAAdT,4BAAyBA,QAAQU;AACnC;"}
@@ -1,8 +1,8 @@
1
1
  import { j as jsxRuntimeExports } from "../_virtual/jsx-runtime.js";
2
+ import { useDocumentVisibility } from "../node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.js";
2
3
  import { useQuery } from "../node_modules/@tanstack/react-query/build/modern/useQuery.js";
3
4
  import { ApiEndpoints } from "../enums/ApiEndpoints.js";
4
5
  import { apiUrl } from "../functions/Api.js";
5
- import { useDocumentVisibility } from "../node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.js";
6
6
  import IconCircleCheck from "../node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.js";
7
7
  import IconCircleX from "../node_modules/@tabler/icons-react/dist/esm/icons/IconCircleX.js";
8
8
  import IconExclamationCircle from "../node_modules/@tabler/icons-react/dist/esm/icons/IconExclamationCircle.js";
@@ -33,31 +33,33 @@ function useMonitorBackgroundTask(props) {
33
33
  refetchInterval: 500,
34
34
  queryKey: ["background-task", props.taskId],
35
35
  queryFn: () => props.api.get(apiUrl(ApiEndpoints.task_overview, props.taskId)).then((response) => {
36
- const data = response?.data ?? {};
36
+ var _a, _b, _c, _d, _e;
37
+ const data = (response == null ? void 0 : response.data) ?? {};
37
38
  if (data.complete) {
38
39
  setTracking(false);
39
- props.onComplete?.();
40
+ (_a = props.onComplete) == null ? void 0 : _a.call(props);
40
41
  notifications.update({
41
42
  id: `background-task-${props.taskId}`,
42
43
  title: props.title,
43
44
  loading: false,
44
45
  color: data.success ? "green" : "red",
45
- message: response.data?.success ? props.successMessage ?? props.message : props.failureMessage ?? props.message,
46
- icon: response.data?.success ? /* @__PURE__ */ jsxRuntimeExports.jsx(IconCircleCheck, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(IconCircleX, {}),
46
+ message: ((_b = response.data) == null ? void 0 : _b.success) ? props.successMessage ?? props.message : props.failureMessage ?? props.message,
47
+ icon: ((_c = response.data) == null ? void 0 : _c.success) ? /* @__PURE__ */ jsxRuntimeExports.jsx(IconCircleCheck, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(IconCircleX, {}),
47
48
  autoClose: 1e3,
48
49
  withCloseButton: true
49
50
  });
50
51
  if (data.success) {
51
- props.onSuccess?.();
52
+ (_d = props.onSuccess) == null ? void 0 : _d.call(props);
52
53
  } else {
53
- props.onFailure?.();
54
+ (_e = props.onFailure) == null ? void 0 : _e.call(props);
54
55
  }
55
56
  }
56
57
  return response;
57
58
  }).catch((error) => {
59
+ var _a;
58
60
  console.error(`Error fetching background task status for task ${props.taskId}:`, error);
59
61
  setTracking(false);
60
- props.onError?.(error);
62
+ (_a = props.onError) == null ? void 0 : _a.call(props, error);
61
63
  notifications.update({
62
64
  id: `background-task-${props.taskId}`,
63
65
  title: props.title,
@@ -1 +1 @@
1
- {"version":3,"file":"MonitorBackgroundTask.js","sources":["../../lib/hooks/MonitorBackgroundTask.tsx"],"sourcesContent":["import { useDocumentVisibility } from '@mantine/hooks';\nimport { notifications, showNotification } from '@mantine/notifications';\nimport {\n IconCircleCheck,\n IconCircleX,\n IconExclamationCircle\n} from '@tabler/icons-react';\nimport { type QueryClient, useQuery } from '@tanstack/react-query';\nimport type { AxiosInstance } from 'axios';\nimport { useEffect, useState } from 'react';\nimport { ApiEndpoints } from '../enums/ApiEndpoints';\nimport { apiUrl } from '../functions/Api';\n\nexport type MonitorBackgroundTaskProps = {\n api: AxiosInstance;\n queryClient?: QueryClient;\n title?: string;\n message: string;\n errorMessage?: string;\n successMessage?: string;\n failureMessage?: string;\n taskId?: string;\n onSuccess?: () => void;\n onFailure?: () => void;\n onComplete?: () => void;\n onError?: (error: Error) => void;\n};\n\n/**\n * Hook for monitoring a background task running on the server\n */\nexport default function useMonitorBackgroundTask(\n props: MonitorBackgroundTaskProps\n) {\n const visibility = useDocumentVisibility();\n\n const [tracking, setTracking] = useState<boolean>(false);\n\n useEffect(() => {\n if (!!props.taskId) {\n setTracking(true);\n showNotification({\n id: `background-task-${props.taskId}`,\n title: props.title,\n message: props.message,\n loading: true,\n autoClose: false,\n withCloseButton: false\n });\n } else {\n setTracking(false);\n }\n }, [props.taskId]);\n\n useQuery(\n {\n enabled: !!props.taskId && tracking && visibility === 'visible',\n refetchInterval: 500,\n queryKey: ['background-task', props.taskId],\n queryFn: () =>\n props.api\n .get(apiUrl(ApiEndpoints.task_overview, props.taskId))\n .then((response) => {\n const data = response?.data ?? {};\n\n if (data.complete) {\n setTracking(false);\n props.onComplete?.();\n\n notifications.update({\n id: `background-task-${props.taskId}`,\n title: props.title,\n loading: false,\n color: data.success ? 'green' : 'red',\n message: response.data?.success\n ? (props.successMessage ?? props.message)\n : (props.failureMessage ?? props.message),\n icon: response.data?.success ? (\n <IconCircleCheck />\n ) : (\n <IconCircleX />\n ),\n autoClose: 1000,\n withCloseButton: true\n });\n\n if (data.success) {\n props.onSuccess?.();\n } else {\n props.onFailure?.();\n }\n }\n\n return response;\n })\n .catch((error) => {\n console.error(\n `Error fetching background task status for task ${props.taskId}:`,\n error\n );\n setTracking(false);\n props.onError?.(error);\n\n notifications.update({\n id: `background-task-${props.taskId}`,\n title: props.title,\n loading: false,\n color: 'red',\n message: props.errorMessage ?? props.message,\n icon: <IconExclamationCircle color='red' />,\n autoClose: 5000,\n withCloseButton: true\n });\n })\n },\n props.queryClient\n );\n}\n"],"names":["useMonitorBackgroundTask","props","visibility","useDocumentVisibility","tracking","setTracking","useState","useEffect","taskId","showNotification","id","title","message","loading","autoClose","withCloseButton","useQuery","enabled","refetchInterval","queryKey","queryFn","api","get","apiUrl","ApiEndpoints","task_overview","then","response","data","complete","onComplete","notifications","update","color","success","successMessage","failureMessage","icon","onSuccess","onFailure","catch","error","console","onError","errorMessage","jsx","queryClient"],"mappings":";;;;;;;;AACA,MAAA,gBAAA,OAAA,sBAAA,EAAA;;AAQA,MAAA,YAAA,OAAA,OAAA,EAAA;;AAsBA,SAAwBA,yBACtBC,OACA;AACA,QAAMC,aAAaC,sBAAAA;AAEnB,QAAM,CAACC,UAAUC,WAAW,IAAIC,SAAkB,KAAK;AAEvDC,YAAU,MAAM;AACd,QAAI,CAAC,CAACN,MAAMO,QAAQ;AAClBH,kBAAY,IAAI;AAChBI,uBAAiB;AAAA,QACfC,IAAI,mBAAmBT,MAAMO,MAAM;AAAA,QACnCG,OAAOV,MAAMU;AAAAA,QACbC,SAASX,MAAMW;AAAAA,QACfC,SAAS;AAAA,QACTC,WAAW;AAAA,QACXC,iBAAiB;AAAA,MAAA,CAClB;AAAA,IACH,OAAO;AACLV,kBAAY,KAAK;AAAA,IACnB;AAAA,EACF,GAAG,CAACJ,MAAMO,MAAM,CAAC;AAEjBQ,WACE;AAAA,IACEC,SAAS,CAAC,CAAChB,MAAMO,UAAUJ,YAAYF,eAAe;AAAA,IACtDgB,iBAAiB;AAAA,IACjBC,UAAU,CAAC,mBAAmBlB,MAAMO,MAAM;AAAA,IAC1CY,SAASA,MACPnB,MAAMoB,IACHC,IAAIC,OAAOC,aAAaC,eAAexB,MAAMO,MAAM,CAAC,EACpDkB,KAAMC,CAAAA,aAAa;AAClB,YAAMC,OAAOD,UAAUC,QAAQ,CAAA;AAE/B,UAAIA,KAAKC,UAAU;AACjBxB,oBAAY,KAAK;AACjBJ,cAAM6B,aAAAA;AAENC,sBAAcC,OAAO;AAAA,UACnBtB,IAAI,mBAAmBT,MAAMO,MAAM;AAAA,UACnCG,OAAOV,MAAMU;AAAAA,UACbE,SAAS;AAAA,UACToB,OAAOL,KAAKM,UAAU,UAAU;AAAA,UAChCtB,SAASe,SAASC,MAAMM,UACnBjC,MAAMkC,kBAAkBlC,MAAMW,UAC9BX,MAAMmC,kBAAkBnC,MAAMW;AAAAA,UACnCyB,MAAMV,SAASC,MAAMM,gDAClB,iBAAA,CAAA,CAAe,0CAEf,aAAA,EAAW;AAAA,UAEdpB,WAAW;AAAA,UACXC,iBAAiB;AAAA,QAAA,CAClB;AAED,YAAIa,KAAKM,SAAS;AAChBjC,gBAAMqC,YAAAA;AAAAA,QACR,OAAO;AACLrC,gBAAMsC,YAAAA;AAAAA,QACR;AAAA,MACF;AAEA,aAAOZ;AAAAA,IACT,CAAC,EACAa,MAAOC,CAAAA,UAAU;AAChBC,cAAQD,MACN,kDAAkDxC,MAAMO,MAAM,KAC9DiC,KACF;AACApC,kBAAY,KAAK;AACjBJ,YAAM0C,UAAUF,KAAK;AAErBV,oBAAcC,OAAO;AAAA,QACnBtB,IAAI,mBAAmBT,MAAMO,MAAM;AAAA,QACnCG,OAAOV,MAAMU;AAAAA,QACbE,SAAS;AAAA,QACToB,OAAO;AAAA,QACPrB,SAASX,MAAM2C,gBAAgB3C,MAAMW;AAAAA,QACrCyB,MAAMQ,kCAAAA,IAAC,uBAAA,EAAsB,OAAM,MAAA,CAAK;AAAA,QACxC/B,WAAW;AAAA,QACXC,iBAAiB;AAAA,MAAA,CAClB;AAAA,IACH,CAAC;AAAA,EAAA,GAEPd,MAAM6C,WACR;AACF;"}
1
+ {"version":3,"file":"MonitorBackgroundTask.js","sources":["../../lib/hooks/MonitorBackgroundTask.tsx"],"sourcesContent":["import { useDocumentVisibility } from '@mantine/hooks';\nimport { notifications, showNotification } from '@mantine/notifications';\nimport {\n IconCircleCheck,\n IconCircleX,\n IconExclamationCircle\n} from '@tabler/icons-react';\nimport { type QueryClient, useQuery } from '@tanstack/react-query';\nimport type { AxiosInstance } from 'axios';\nimport { useEffect, useState } from 'react';\nimport { ApiEndpoints } from '../enums/ApiEndpoints';\nimport { apiUrl } from '../functions/Api';\n\nexport type MonitorBackgroundTaskProps = {\n api: AxiosInstance;\n queryClient?: QueryClient;\n title?: string;\n message: string;\n errorMessage?: string;\n successMessage?: string;\n failureMessage?: string;\n taskId?: string;\n onSuccess?: () => void;\n onFailure?: () => void;\n onComplete?: () => void;\n onError?: (error: Error) => void;\n};\n\n/**\n * Hook for monitoring a background task running on the server\n */\nexport default function useMonitorBackgroundTask(\n props: MonitorBackgroundTaskProps\n) {\n const visibility = useDocumentVisibility();\n\n const [tracking, setTracking] = useState<boolean>(false);\n\n useEffect(() => {\n if (!!props.taskId) {\n setTracking(true);\n showNotification({\n id: `background-task-${props.taskId}`,\n title: props.title,\n message: props.message,\n loading: true,\n autoClose: false,\n withCloseButton: false\n });\n } else {\n setTracking(false);\n }\n }, [props.taskId]);\n\n useQuery(\n {\n enabled: !!props.taskId && tracking && visibility === 'visible',\n refetchInterval: 500,\n queryKey: ['background-task', props.taskId],\n queryFn: () =>\n props.api\n .get(apiUrl(ApiEndpoints.task_overview, props.taskId))\n .then((response) => {\n const data = response?.data ?? {};\n\n if (data.complete) {\n setTracking(false);\n props.onComplete?.();\n\n notifications.update({\n id: `background-task-${props.taskId}`,\n title: props.title,\n loading: false,\n color: data.success ? 'green' : 'red',\n message: response.data?.success\n ? (props.successMessage ?? props.message)\n : (props.failureMessage ?? props.message),\n icon: response.data?.success ? (\n <IconCircleCheck />\n ) : (\n <IconCircleX />\n ),\n autoClose: 1000,\n withCloseButton: true\n });\n\n if (data.success) {\n props.onSuccess?.();\n } else {\n props.onFailure?.();\n }\n }\n\n return response;\n })\n .catch((error) => {\n console.error(\n `Error fetching background task status for task ${props.taskId}:`,\n error\n );\n setTracking(false);\n props.onError?.(error);\n\n notifications.update({\n id: `background-task-${props.taskId}`,\n title: props.title,\n loading: false,\n color: 'red',\n message: props.errorMessage ?? props.message,\n icon: <IconExclamationCircle color='red' />,\n autoClose: 5000,\n withCloseButton: true\n });\n })\n },\n props.queryClient\n );\n}\n"],"names":["useMonitorBackgroundTask","props","visibility","useDocumentVisibility","tracking","setTracking","useState","useEffect","taskId","showNotification","id","title","message","loading","autoClose","withCloseButton","useQuery","enabled","refetchInterval","queryKey","queryFn","api","get","apiUrl","ApiEndpoints","task_overview","then","response","data","complete","onComplete","notifications","update","color","success","successMessage","failureMessage","icon","onSuccess","onFailure","catch","error","console","onError","errorMessage","jsx","queryClient"],"mappings":";;;;;;;;AACA,MAAA,gBAAA,OAAA,sBAAA,EAAA;;AAQA,MAAA,YAAA,OAAA,OAAA,EAAA;;AAsBA,SAAwBA,yBACtBC,OACA;AACA,QAAMC,aAAaC,sBAAAA;AAEnB,QAAM,CAACC,UAAUC,WAAW,IAAIC,SAAkB,KAAK;AAEvDC,YAAU,MAAM;AACd,QAAI,CAAC,CAACN,MAAMO,QAAQ;AAClBH,kBAAY,IAAI;AAChBI,uBAAiB;AAAA,QACfC,IAAI,mBAAmBT,MAAMO,MAAM;AAAA,QACnCG,OAAOV,MAAMU;AAAAA,QACbC,SAASX,MAAMW;AAAAA,QACfC,SAAS;AAAA,QACTC,WAAW;AAAA,QACXC,iBAAiB;AAAA,MAAA,CAClB;AAAA,IACH,OAAO;AACLV,kBAAY,KAAK;AAAA,IACnB;AAAA,EACF,GAAG,CAACJ,MAAMO,MAAM,CAAC;AAEjBQ,WACE;AAAA,IACEC,SAAS,CAAC,CAAChB,MAAMO,UAAUJ,YAAYF,eAAe;AAAA,IACtDgB,iBAAiB;AAAA,IACjBC,UAAU,CAAC,mBAAmBlB,MAAMO,MAAM;AAAA,IAC1CY,SAASA,MACPnB,MAAMoB,IACHC,IAAIC,OAAOC,aAAaC,eAAexB,MAAMO,MAAM,CAAC,EACpDkB,KAAMC,CAAAA,aAAa;;AAClB,YAAMC,QAAOD,qCAAUC,SAAQ,CAAA;AAE/B,UAAIA,KAAKC,UAAU;AACjBxB,oBAAY,KAAK;AACjBJ,oBAAM6B,eAAN7B;AAEA8B,sBAAcC,OAAO;AAAA,UACnBtB,IAAI,mBAAmBT,MAAMO,MAAM;AAAA,UACnCG,OAAOV,MAAMU;AAAAA,UACbE,SAAS;AAAA,UACToB,OAAOL,KAAKM,UAAU,UAAU;AAAA,UAChCtB,WAASe,cAASC,SAATD,mBAAeO,WACnBjC,MAAMkC,kBAAkBlC,MAAMW,UAC9BX,MAAMmC,kBAAkBnC,MAAMW;AAAAA,UACnCyB,QAAMV,cAASC,SAATD,mBAAeO,iDAClB,iBAAA,CAAA,CAAe,0CAEf,aAAA,EAAW;AAAA,UAEdpB,WAAW;AAAA,UACXC,iBAAiB;AAAA,QAAA,CAClB;AAED,YAAIa,KAAKM,SAAS;AAChBjC,sBAAMqC,cAANrC;AAAAA,QACF,OAAO;AACLA,sBAAMsC,cAANtC;AAAAA,QACF;AAAA,MACF;AAEA,aAAO0B;AAAAA,IACT,CAAC,EACAa,MAAOC,CAAAA,UAAU;;AAChBC,cAAQD,MACN,kDAAkDxC,MAAMO,MAAM,KAC9DiC,KACF;AACApC,kBAAY,KAAK;AACjBJ,kBAAM0C,YAAN1C,+BAAgBwC;AAEhBV,oBAAcC,OAAO;AAAA,QACnBtB,IAAI,mBAAmBT,MAAMO,MAAM;AAAA,QACnCG,OAAOV,MAAMU;AAAAA,QACbE,SAAS;AAAA,QACToB,OAAO;AAAA,QACPrB,SAASX,MAAM2C,gBAAgB3C,MAAMW;AAAAA,QACrCyB,MAAMQ,kCAAAA,IAAC,uBAAA,EAAsB,OAAM,MAAA,CAAK;AAAA,QACxC/B,WAAW;AAAA,QACXC,iBAAiB;AAAA,MAAA,CAClB;AAAA,IACH,CAAC;AAAA,EAAA,GAEPd,MAAM6C,WACR;AACF;"}
@@ -1,9 +1,9 @@
1
1
  import { j as jsxRuntimeExports } from "../_virtual/jsx-runtime.js";
2
+ import { useDocumentVisibility } from "../node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.js";
2
3
  import { useQuery } from "../node_modules/@tanstack/react-query/build/modern/useQuery.js";
3
4
  import { ProgressBar } from "../components/ProgressBar.js";
4
5
  import { ApiEndpoints } from "../enums/ApiEndpoints.js";
5
6
  import { apiUrl } from "../functions/Api.js";
6
- import { useDocumentVisibility } from "../node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.js";
7
7
  import IconExclamationCircle from "../node_modules/@tabler/icons-react/dist/esm/icons/IconExclamationCircle.js";
8
8
  import IconCircleCheck from "../node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.js";
9
9
  const _i18n = window["LinguiCore"].i18n;
@@ -32,10 +32,11 @@ function useMonitorDataOutput(props) {
32
32
  refetchInterval: 500,
33
33
  queryKey: ["data-output", props.id, props.title],
34
34
  queryFn: () => props.api.get(apiUrl(ApiEndpoints.data_output, props.id)).then((response) => {
35
- const data = response?.data ?? {};
35
+ var _a;
36
+ const data = (response == null ? void 0 : response.data) ?? {};
36
37
  if (!!data.errors || !!data.error) {
37
38
  setLoading(false);
38
- const error = data?.error ?? data?.errors?.error ?? _i18n._(
39
+ const error = (data == null ? void 0 : data.error) ?? ((_a = data == null ? void 0 : data.errors) == null ? void 0 : _a.error) ?? _i18n._(
39
40
  /*i18n*/
40
41
  {
41
42
  id: "gzjOvt"