@topconsultnpm/sdkui-react 6.19.0 → 6.20.0-dev1.2

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 (36) hide show
  1. package/lib/components/NewComponents/ContextMenu/TMContextMenu.d.ts +4 -0
  2. package/lib/components/NewComponents/ContextMenu/TMContextMenu.js +187 -0
  3. package/lib/components/NewComponents/ContextMenu/hooks.d.ts +11 -0
  4. package/lib/components/NewComponents/ContextMenu/hooks.js +48 -0
  5. package/lib/components/NewComponents/ContextMenu/index.d.ts +2 -0
  6. package/lib/components/NewComponents/ContextMenu/index.js +1 -0
  7. package/lib/components/NewComponents/ContextMenu/styles.d.ts +27 -0
  8. package/lib/components/NewComponents/ContextMenu/styles.js +308 -0
  9. package/lib/components/NewComponents/ContextMenu/types.d.ts +26 -0
  10. package/lib/components/NewComponents/ContextMenu/types.js +1 -0
  11. package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.d.ts +4 -0
  12. package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.js +370 -0
  13. package/lib/components/NewComponents/FloatingMenuBar/index.d.ts +2 -0
  14. package/lib/components/NewComponents/FloatingMenuBar/index.js +2 -0
  15. package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +38 -0
  16. package/lib/components/NewComponents/FloatingMenuBar/styles.js +267 -0
  17. package/lib/components/NewComponents/FloatingMenuBar/types.d.ts +30 -0
  18. package/lib/components/NewComponents/FloatingMenuBar/types.js +1 -0
  19. package/lib/components/NewComponents/Notification/Notification.d.ts +4 -0
  20. package/lib/components/NewComponents/Notification/Notification.js +60 -0
  21. package/lib/components/NewComponents/Notification/NotificationContainer.d.ts +8 -0
  22. package/lib/components/NewComponents/Notification/NotificationContainer.js +33 -0
  23. package/lib/components/NewComponents/Notification/index.d.ts +2 -0
  24. package/lib/components/NewComponents/Notification/index.js +2 -0
  25. package/lib/components/NewComponents/Notification/styles.d.ts +21 -0
  26. package/lib/components/NewComponents/Notification/styles.js +180 -0
  27. package/lib/components/NewComponents/Notification/types.d.ts +18 -0
  28. package/lib/components/NewComponents/Notification/types.js +1 -0
  29. package/lib/components/editors/TMMetadataValues.js +16 -2
  30. package/lib/components/features/documents/TMDcmtPreview.js +31 -37
  31. package/lib/components/features/search/TMSearchResult.js +2 -2
  32. package/lib/components/features/search/{TMViewHistoryDcmtForm.d.ts → TMViewHistoryDcmt.d.ts} +3 -3
  33. package/lib/components/features/search/{TMViewHistoryDcmtForm.js → TMViewHistoryDcmt.js} +83 -13
  34. package/lib/helper/helpers.js +6 -1
  35. package/lib/helper/queryHelper.js +13 -1
  36. package/package.json +53 -53
@@ -1,16 +1,21 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useState } from "react";
3
- import { FormModes } from "../../../ts/types";
4
- import { associateColumnsToRows, calcResponsiveSizes, formatBytes, Globalization, SDKUI_Localizator } from "../../../helper";
3
+ import { DownloadTypes, FormModes } from "../../../ts/types";
4
+ import { associateColumnsToRows, calcResponsiveSizes, formatBytes, getExceptionMessage, Globalization, SDKUI_Localizator } from "../../../helper";
5
5
  import TMModal from "../../base/TMModal";
6
- import { SDK_Globals, UpdateEngineByID, UserListCacheService } from "@topconsultnpm/sdk-ts";
6
+ import { DeleteEngine, ResultTypes, SDK_Globals, UpdateEngineByID, UserListCacheService } from "@topconsultnpm/sdk-ts";
7
7
  import TMSpinner from "../../base/TMSpinner";
8
- import { TMExceptionBoxManager } from "../../base/TMPopUp";
8
+ import { ButtonNames, TMExceptionBoxManager, TMMessageBoxManager } from "../../base/TMPopUp";
9
9
  import TMDcmtIcon from "../documents/TMDcmtIcon";
10
10
  import TMDataGrid from "../../base/TMDataGrid";
11
11
  import TMDcmtForm from "../documents/TMDcmtForm";
12
- const TMViewHistoryDcmtForm = (props) => {
12
+ import { useDcmtOperations } from "../../../hooks/useDcmtOperations";
13
+ import { TMLayoutWaitingContainer } from "../../base/TMWaitPanel";
14
+ import { TMResultManager } from "../../forms/TMResultDialog";
15
+ let abortLocalController = new AbortController();
16
+ const TMViewHistoryDcmt = (props) => {
13
17
  const { deviceType, inputDcmt, onClose, fromDTD, allTasks, getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers } = props;
18
+ const { abortController, showWaitPanel, waitPanelTitle, showPrimary, waitPanelTextPrimary, waitPanelValuePrimary, waitPanelMaxValuePrimary, showSecondary, waitPanelTextSecondary, waitPanelValueSecondary, waitPanelMaxValueSecondary, downloadDcmtsAsync } = useDcmtOperations();
14
19
  const [dcmtHistory, setDcmtHistory] = useState([]);
15
20
  // showId is a state variable that determines whether an ID-related component or feature should be displayed
16
21
  const [showId, setShowId] = useState(false);
@@ -28,6 +33,18 @@ const TMViewHistoryDcmtForm = (props) => {
28
33
  const [showDcmtForm, setShowDcmtForm] = useState(false);
29
34
  // Memoized value to get the selected draft based on the focused row key
30
35
  const selectedDcmt = useMemo(() => dcmtHistory.find(dcmt => dcmt.id === focusedRowKey), [focusedRowKey, dcmtHistory]);
36
+ // State variable to control the visibility of the wait panel.
37
+ const [showLocalWaitPanel, setShowLocalWaitPanel] = useState(false);
38
+ // State variable to store the title of the wait panel.
39
+ const [waitLocalPanelTitle, setWaitLocalPanelTitle] = useState('');
40
+ // State variable to control the visibility of the primary section of the wait panel.
41
+ const [showLocalPrimary, setShowLocalPrimary] = useState(false);
42
+ // State variable to store the primary text of the wait panel.
43
+ const [waitLocalPanelTextPrimary, setWaitLocalPanelTextPrimary] = useState('');
44
+ // State variable to track the current value of the primary progress indicator in the wait panel.
45
+ const [waitLocalPanelValuePrimary, setWaitLocalPanelValuePrimary] = useState(0);
46
+ // State variable to define the maximum value for the primary progress indicator in the wait panel.
47
+ const [waitLocalPanelMaxValuePrimary, setWaitLocalPanelMaxValuePrimary] = useState(0);
31
48
  const getParticipantById = (id, users) => {
32
49
  if (users.length === 0)
33
50
  return null;
@@ -111,6 +128,60 @@ const TMViewHistoryDcmtForm = (props) => {
111
128
  setSelectedIndex(-1);
112
129
  }
113
130
  }, [dcmtHistory]);
131
+ const downloadFilesCallback = async () => {
132
+ if (focusedRowKey === undefined)
133
+ return;
134
+ const focusedRow = dcmtHistory.find(dcmt => dcmt.id === focusedRowKey);
135
+ const files = [];
136
+ if (focusedRow && focusedRow.TID && focusedRow.DID && focusedRow.FileExt) {
137
+ files.push({ TID: Number(focusedRow.TID), DID: Number(focusedRow.DID), FILEEXT: focusedRow.FileExt });
138
+ }
139
+ if (files.length > 0)
140
+ await downloadDcmtsAsync(files, DownloadTypes.Dcmt, "download");
141
+ };
142
+ const deleteFilesCallback = () => {
143
+ if (!inputDcmt || !focusedRowKey)
144
+ return;
145
+ const currentDcmt = dcmtHistory.find(dcmt => dcmt.id === focusedRowKey);
146
+ if (currentDcmt && currentDcmt.id) {
147
+ const msg = SDKUI_Localizator.Delete_ConfirmFor1.replaceParams((fromDTD.name ?? SDKUI_Localizator.SearchResult) + " - DID " + currentDcmt.DID + ", " + SDKUI_Localizator.Version + ": " + currentDcmt.Version);
148
+ TMMessageBoxManager.show({
149
+ title: SDKUI_Localizator.Delete, message: msg, buttons: [ButtonNames.YES, ButtonNames.NO],
150
+ onButtonClick: async (e) => {
151
+ if (e !== ButtonNames.YES)
152
+ return;
153
+ setWaitLocalPanelTitle(SDKUI_Localizator.Delete);
154
+ setShowLocalWaitPanel(true);
155
+ setShowLocalPrimary(true);
156
+ abortLocalController = new AbortController();
157
+ let result = [];
158
+ let i = 0;
159
+ setWaitLocalPanelMaxValuePrimary(1);
160
+ if (abortLocalController.signal.aborted) {
161
+ result.push({ rowIndex: i, id1: currentDcmt.id, id2: currentDcmt.id, resultType: ResultTypes.WARNING, description: `Operazione interrotta. Elaborate ${i}` });
162
+ }
163
+ else {
164
+ setWaitLocalPanelTextPrimary(SDKUI_Localizator.Delete);
165
+ const deleteEngine = new DeleteEngine(SDK_Globals.tmSession);
166
+ await deleteEngine.PhysDeleteByIDAsync(Number(currentDcmt.TID), Number(currentDcmt.DID), false)
167
+ .then(async () => {
168
+ result.push({ rowIndex: Number(currentDcmt.TID), id1: Number(currentDcmt.TID), id2: Number(currentDcmt.DID), description: SDKUI_Localizator.DeletionCompletedSuccessfully, resultType: ResultTypes.SUCCESS });
169
+ await loadData();
170
+ })
171
+ .catch((err) => {
172
+ result.push({ rowIndex: Number(currentDcmt.TID), id1: Number(currentDcmt.TID), id2: Number(currentDcmt.DID), resultType: ResultTypes.ERROR, description: getExceptionMessage(err) });
173
+ });
174
+ }
175
+ setFocusedRowKey(undefined);
176
+ setWaitLocalPanelTextPrimary('');
177
+ setWaitLocalPanelMaxValuePrimary(0);
178
+ setWaitLocalPanelValuePrimary(0);
179
+ setShowLocalWaitPanel(false);
180
+ TMResultManager.show(result, SDKUI_Localizator.Delete, "ID", undefined);
181
+ }
182
+ });
183
+ }
184
+ };
114
185
  const cellExtRender = useCallback((cellData) => {
115
186
  const data = cellData.data;
116
187
  const tooltipContent = (_jsxs("div", { style: { textAlign: 'left' }, children: [_jsxs("div", { children: [_jsx("span", { style: { fontWeight: 'bold' }, children: "ID:" }), " ", data.id ?? '-'] }), _jsxs("div", { children: [_jsx("span", { style: { fontWeight: 'bold' }, children: "DID:" }), " ", data.DID ?? '-'] }), _jsxs("div", { children: [_jsx("span", { style: { fontWeight: 'bold' }, children: "TID:" }), " ", data.TID ?? '-'] }), _jsx("hr", {}), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Author, ":"] }), " ", data.UpdaterDisplayName ?? '-'] }), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Version, ":"] }), " ", data.Version] }), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Size, ":"] }), " ", formatBytes(Number(data.FileSize ?? 0))] }), _jsx("hr", {}), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.CreationTime, ":"] }), " ", Globalization.getDateTimeDisplayValue(data.CreationTime)] }), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.LastUpdateTime, ":"] }), " ", Globalization.getDateTimeDisplayValue(data.LastUpdateTime)] })] }));
@@ -128,20 +199,19 @@ const TMViewHistoryDcmtForm = (props) => {
128
199
  disabled: focusedRowKey === undefined,
129
200
  onClick: () => setShowDcmtForm(true),
130
201
  },
131
- /* {
202
+ {
132
203
  icon: "download",
133
204
  text: 'Download',
134
- tooltip: SURFER_Localizator.DownloadSelectedDraftFile,
135
205
  disabled: focusedRowKey === undefined,
136
206
  onClick: () => downloadFilesCallback(),
137
207
  },
138
208
  {
139
209
  icon: "trash",
140
210
  text: SDKUI_Localizator.Delete,
141
- disabled: isGroupArchived || focusedRowKey === undefined,
211
+ disabled: focusedRowKey === undefined,
142
212
  onClick: deleteFilesCallback,
143
213
  beginGroup: true
144
- }, */
214
+ },
145
215
  {
146
216
  icon: showSearch ? "eyeclose" : "eyeopen",
147
217
  onClick: () => setShowSearch(prevShowSearch => !prevShowSearch),
@@ -203,13 +273,13 @@ const TMViewHistoryDcmtForm = (props) => {
203
273
  return ([
204
274
  { dataField: "id", caption: "ID", dataType: 'string', visible: showId },
205
275
  { dataField: "FileExt", caption: "", cellRender: cellExtRender },
206
- { dataField: "Version", caption: "V." },
276
+ { dataField: "Version", caption: "V.", dataType: 'number' },
207
277
  { dataField: "FileSizeDisplay", caption: SDKUI_Localizator.Size },
208
278
  { dataField: "UpdaterDisplayName", caption: SDKUI_Localizator.Author },
209
279
  { dataField: "LastUpdateTimeDisplay", caption: SDKUI_Localizator.LastUpdateTime },
210
280
  ]);
211
281
  }, [showId]);
212
- return _jsxs(TMModal, { title: `${SDKUI_Localizator.SearchResult} \u2014 ${SDKUI_Localizator.History + ": " + (fromDTD.nameLoc ?? SDKUI_Localizator.Document) + " (DID:" + inputDcmt.DID})`, width: calcResponsiveSizes(deviceType, '700px', '700px', '95%'), height: calcResponsiveSizes(deviceType, '80%', '80%', '95%'), onClose: onClose, children: [_jsx(TMDataGrid, { dataSource: dcmtHistory, dataColumns: dataColumns, focusedRowKey: focusedRowKey, selection: selection, onContextMenuPreparing: onContextMenuPreparing, onFocusedRowChanged: onFocusedRowChanged, onCellDblClick: onCellDblClick, noDataText: SDKUI_Localizator.NoDataToDisplay, showSearchPanel: showSearch }), (showDcmtForm && selectedDcmt !== undefined) &&
213
- _jsx(TMDcmtForm, { TID: Number(selectedDcmt.TID), DID: Number(selectedDcmt.DID), formMode: FormModes.ReadOnly, isModal: true, widthModal: "95%", heightModal: "95%", titleModal: fromDTD.name ?? SDKUI_Localizator.SearchResult, allowNavigation: dcmtHistory.length > 0, itemIndex: selectedIndex + 1, count: dcmtHistory.length, onClose: () => { setShowDcmtForm(false); }, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback })] });
282
+ return _jsx(TMModal, { title: `${SDKUI_Localizator.SearchResult} \u2014 ${SDKUI_Localizator.History + ": " + (fromDTD.nameLoc ?? SDKUI_Localizator.Document) + " (DID:" + inputDcmt.DID})`, width: calcResponsiveSizes(deviceType, '700px', '700px', '95%'), height: calcResponsiveSizes(deviceType, '80%', '80%', '95%'), onClose: onClose, children: _jsx(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, showWaitPanelSecondary: showSecondary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, waitPanelTextSecondary: waitPanelTextSecondary, waitPanelValueSecondary: waitPanelValueSecondary, waitPanelMaxValueSecondary: waitPanelMaxValueSecondary, isCancelable: true, abortController: abortController, children: _jsxs(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showLocalWaitPanel, showWaitPanelPrimary: showLocalPrimary, waitPanelTitle: waitLocalPanelTitle, waitPanelTextPrimary: waitLocalPanelTextPrimary, waitPanelValuePrimary: waitLocalPanelValuePrimary, waitPanelMaxValuePrimary: waitLocalPanelMaxValuePrimary, isCancelable: true, abortController: abortLocalController, children: [_jsx(TMDataGrid, { dataSource: dcmtHistory, dataColumns: dataColumns, focusedRowKey: focusedRowKey, selection: selection, onContextMenuPreparing: onContextMenuPreparing, onFocusedRowChanged: onFocusedRowChanged, onCellDblClick: onCellDblClick, noDataText: SDKUI_Localizator.NoDataToDisplay, showSearchPanel: showSearch }), (showDcmtForm && selectedDcmt !== undefined) &&
283
+ _jsx(TMDcmtForm, { TID: Number(selectedDcmt.TID), DID: Number(selectedDcmt.DID), formMode: FormModes.ReadOnly, isModal: true, widthModal: "95%", heightModal: "95%", titleModal: fromDTD.name ?? SDKUI_Localizator.SearchResult, allowNavigation: dcmtHistory.length > 0, itemIndex: selectedIndex + 1, count: dcmtHistory.length, onClose: () => { setShowDcmtForm(false); }, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback })] }) }) });
214
284
  };
215
- export default TMViewHistoryDcmtForm;
285
+ export default TMViewHistoryDcmt;
@@ -38,7 +38,12 @@ const openApps = async (appModule, tmSession, appRoutes) => {
38
38
  };
39
39
  export const setSDK_GlobalsInfoAsync = async (tms) => {
40
40
  try {
41
- return await SetGlobalsInfoAsync(tms);
41
+ const result = await SetGlobalsInfoAsync(tms);
42
+ if (result?.SessionDescr?.userID && result?.SessionDescr?.archiveID) {
43
+ const { UserSettings } = await import('./SDKUI_Globals');
44
+ UserSettings.LoadSettings(result.SessionDescr.userID, result.SessionDescr.archiveID);
45
+ }
46
+ return result;
42
47
  }
43
48
  catch (e) {
44
49
  TMExceptionBoxManager.show({ exception: e.message });
@@ -1,6 +1,6 @@
1
1
  import { AccessLevels, MetadataDataDomains, DcmtTypeListCacheService, SystemMIDsAsNumber, MetadataDataTypes, QueryDescriptor, QueryFunctions, SelectItem, SelectItemVisibilities, FromItem, LayoutModes, QueryOperators, SavedQueryDescriptor, SearchEngine, WhereItem, OrderByItem, SDK_Globals, AppModules, SystemTIDs, WorkItemMetadataNames, PlatformObjectValidator } from '@topconsultnpm/sdk-ts';
2
2
  import { DateDisplayTypes, Globalization } from './Globalization';
3
- import { DraftsMIDs, MetadataValueDescriptorEx } from '../ts';
3
+ import { ChronologyMIDs, DraftsMIDs, MetadataValueDescriptorEx } from '../ts';
4
4
  import { SDKUI_Localizator } from './SDKUI_Localizator';
5
5
  export const getTIDsByQd = (qd) => {
6
6
  let tids = [];
@@ -301,6 +301,18 @@ export const searchResultToMetadataValues = (tid, dtd, rows, mids, metadata, lay
301
301
  break;
302
302
  }
303
303
  }
304
+ if (tid === SystemTIDs.Chronology) {
305
+ switch (mvd.mid) {
306
+ case ChronologyMIDs.Ver:
307
+ mvd.customName = SDKUI_Localizator.Version;
308
+ mvd.isReadOnly = true;
309
+ break;
310
+ case ChronologyMIDs.AuthorID:
311
+ mvd.customName = SDKUI_Localizator.Author;
312
+ mvd.isReadOnly = true;
313
+ break;
314
+ }
315
+ }
304
316
  return mvd;
305
317
  };
306
318
  metadata.forEach(md => {
package/package.json CHANGED
@@ -1,54 +1,54 @@
1
1
  {
2
- "name": "@topconsultnpm/sdkui-react",
3
- "version": "6.19.0",
4
- "description": "",
5
- "scripts": {
6
- "test": "echo \"Error: no test specified\" && exit 1",
7
- "clean": "powershell Remove-Item lib/ -recurse",
8
- "copy-files": "copyfiles -u 1 src/assets/*.* src/assets/ImageLibrary/*.* src/assets/thumbnails/*.* src/assets/IconsS4t/*.* src/assets/Metadata/*.* src/css/tm-sdkui.css lib/",
9
- "tm-build": "npm run clean && tsc && npm run copy-files",
10
- "tm-watch": "tsc -w",
11
- "tm-publish": "npm publish --tag latest",
12
- "storybook": "storybook dev -p 6006",
13
- "build-storybook": "storybook build"
14
- },
15
- "author": "TopConsult",
16
- "license": "ISC",
17
- "devDependencies": {
18
- "@chromatic-com/storybook": "^4.1.3",
19
- "@storybook/addon-docs": "^10.1.0",
20
- "@storybook/addon-onboarding": "^10.1.0",
21
- "@storybook/react-vite": "^10.1.0",
22
- "@types/htmlparser2": "^3.10.7",
23
- "@types/node": "^20.2.5",
24
- "@types/react": "^18.3.3",
25
- "@types/react-dom": "^18.3.3",
26
- "copyfiles": "^2.4.1",
27
- "esbuild": "^0.25.0",
28
- "react": "^18.3.1",
29
- "react-dom": "^18.3.1",
30
- "storybook": "^10.1.0",
31
- "typescript": "^5.9.3",
32
- "vite": "^6.1.1"
33
- },
34
- "main": "dist/cjs/index.js",
35
- "types": "./index.d.ts",
36
- "module": "lib/esm/index.js",
37
- "files": [
38
- "dist",
39
- "lib"
40
- ],
41
- "dependencies": {
42
- "@topconsultnpm/sdk-ts": "6.19.0",
43
- "buffer": "^6.0.3",
44
- "devextreme": "25.1.7",
45
- "devextreme-react": "25.1.7",
46
- "exceljs": "^4.4.0",
47
- "htmlparser2": "^10.0.0",
48
- "react-router-dom": "^6.15.0",
49
- "styled-components": "^6.1.1"
50
- },
51
- "overrides": {
52
- "esbuild": "^0.25.0"
53
- }
54
- }
2
+ "name": "@topconsultnpm/sdkui-react",
3
+ "version": "6.20.0-dev1.2",
4
+ "description": "",
5
+ "scripts": {
6
+ "test": "echo \"Error: no test specified\" \u0026\u0026 exit 1",
7
+ "clean": "powershell Remove-Item lib/ -recurse",
8
+ "copy-files": "copyfiles -u 1 src/assets/*.* src/assets/ImageLibrary/*.* src/assets/thumbnails/*.* src/assets/IconsS4t/*.* src/assets/Metadata/*.* src/css/tm-sdkui.css lib/",
9
+ "tm-build": "npm run clean \u0026\u0026 tsc \u0026\u0026 npm run copy-files",
10
+ "tm-watch": "tsc -w",
11
+ "tm-publish": "npm publish --tag latest",
12
+ "storybook": "storybook dev -p 6006",
13
+ "build-storybook": "storybook build"
14
+ },
15
+ "author": "TopConsult",
16
+ "license": "ISC",
17
+ "devDependencies": {
18
+ "@chromatic-com/storybook": "^4.1.3",
19
+ "@storybook/addon-docs": "^10.1.0",
20
+ "@storybook/addon-onboarding": "^10.1.0",
21
+ "@storybook/react-vite": "^10.1.0",
22
+ "@types/htmlparser2": "^3.10.7",
23
+ "@types/node": "^20.2.5",
24
+ "@types/react": "^18.3.3",
25
+ "@types/react-dom": "^18.3.3",
26
+ "copyfiles": "^2.4.1",
27
+ "esbuild": "^0.25.0",
28
+ "react": "^18.3.1",
29
+ "react-dom": "^18.3.1",
30
+ "storybook": "^10.1.0",
31
+ "typescript": "^5.9.3",
32
+ "vite": "^6.1.1"
33
+ },
34
+ "main": "dist/cjs/index.js",
35
+ "types": "./index.d.ts",
36
+ "module": "lib/esm/index.js",
37
+ "files": [
38
+ "dist",
39
+ "lib"
40
+ ],
41
+ "dependencies": {
42
+ "react-router-dom": "^6.15.0",
43
+ "htmlparser2": "^10.0.0",
44
+ "buffer": "^6.0.3",
45
+ "@topconsultnpm/sdk-ts": "^6.20.0-dev1.1",
46
+ "exceljs": "^4.4.0",
47
+ "devextreme": "25.1.7",
48
+ "styled-components": "^6.1.1",
49
+ "devextreme-react": "25.1.7"
50
+ },
51
+ "overrides": {
52
+ "esbuild": "^0.25.0"
53
+ }
54
+ }