@ohif/app 3.10.0-beta.96 → 3.10.0-beta.97
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.
- package/dist/{8549.bundle.1bbcee08ee6472d6446a.js → 8549.bundle.dc7cfa9212adde74a3b4.js} +186 -109
- package/dist/{app.bundle.e9f5af457f4194a0934c.js → app.bundle.3c547584536c3834042c.js} +4 -4
- package/dist/app.bundle.css +2 -2
- package/dist/index.html +1 -1
- package/dist/sw.js +1 -1
- package/package.json +18 -18
- /package/dist/{1919.bundle.be6cbb6f7e98c0b16b5f.js → 1919.bundle.416410614db71af2bbaa.js} +0 -0
- /package/dist/{213.bundle.1f75631e15f5d383be9a.js → 213.bundle.441e0d6e73a494100fd2.js} +0 -0
- /package/dist/{2424.bundle.dda561bbe813a602fe63.js → 2424.bundle.bd6b78524a738bafeee6.js} +0 -0
- /package/dist/{2825.bundle.a0c6804119addcd3368f.js → 2825.bundle.82bd4177050803b14d18.js} +0 -0
- /package/dist/{4834.bundle.549183aa6adfc5d70edc.js → 4834.bundle.3495dadf8a9d9f524ee5.js} +0 -0
- /package/dist/{5770.bundle.621e3877bfdb8b283df0.js → 5770.bundle.eb17fe0889624c94e231.js} +0 -0
- /package/dist/{6027.bundle.239483e3507ab832283c.js → 6027.bundle.8b09c7a6d7adfc05bffe.js} +0 -0
- /package/dist/{6201.bundle.49fa9ff71c95beff48cb.js → 6201.bundle.dc1dd81fc452af4d4528.js} +0 -0
- /package/dist/{6341.bundle.744d0468446e60e66829.js → 6341.bundle.d34a70374f356771c60f.js} +0 -0
- /package/dist/{6734.bundle.3d23d630b20cc655faa7.js → 6734.bundle.d1ccf477d5baa8156a26.js} +0 -0
- /package/dist/{7197.bundle.834785c57f4ab8cbeffa.js → 7197.bundle.503101515a367d14be57.js} +0 -0
- /package/dist/{7490.bundle.ec3c3e5423c0f20de17c.js → 7490.bundle.a95b28b1387ed7bb38b1.js} +0 -0
- /package/dist/{7955.bundle.9a2593ff6d588c8eb0ee.js → 7955.bundle.91ffc4eedb81f01af412.js} +0 -0
- /package/dist/{8008.bundle.8992f56d6ce1b3a2aea4.js → 8008.bundle.d386b21b516577bb0bb8.js} +0 -0
- /package/dist/{810.bundle.ba13670e59096891abfe.js → 810.bundle.3e17ce472e530d363899.js} +0 -0
- /package/dist/{8259.bundle.e0a882e6e514bd401f36.js → 8259.bundle.bcd66b6174d18f9c6604.js} +0 -0
- /package/dist/{8558.bundle.a384842e644ac95926e5.js → 8558.bundle.5a5c2e1574c55e76fa72.js} +0 -0
- /package/dist/{870.bundle.43b7002a43f4836428ff.js → 870.bundle.7a8a8e57556202361dc9.js} +0 -0
- /package/dist/{9551.bundle.cf5790560e99d2337ef6.js → 9551.bundle.6b4f8866c7100111a131.js} +0 -0
|
@@ -3074,8 +3074,8 @@ function ViewerHeader({
|
|
|
3074
3074
|
hotkeyDefinitions,
|
|
3075
3075
|
hotkeyDefaults
|
|
3076
3076
|
} = hotkeysManager;
|
|
3077
|
-
const versionNumber = "3.10.0-beta.
|
|
3078
|
-
const commitHash = "
|
|
3077
|
+
const versionNumber = "3.10.0-beta.97";
|
|
3078
|
+
const commitHash = "0b5836ca1a908e152336752672b196f0d533f4f9";
|
|
3079
3079
|
const menuOptions = [{
|
|
3080
3080
|
title: t('Header:About'),
|
|
3081
3081
|
icon: 'info',
|
|
@@ -6036,16 +6036,17 @@ ContextMenuController._getDefaultPosition = (canvasPoints, eventDetail, viewerEl
|
|
|
6036
6036
|
// EXTERNAL MODULE: ../../../node_modules/moment/moment.js
|
|
6037
6037
|
var moment = __webpack_require__(14867);
|
|
6038
6038
|
var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
|
|
6039
|
+
// EXTERNAL MODULE: ../../../node_modules/react-window/dist/index.esm.js
|
|
6040
|
+
var index_esm = __webpack_require__(28271);
|
|
6039
6041
|
// EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
|
|
6040
6042
|
var lodash_debounce = __webpack_require__(62051);
|
|
6041
6043
|
var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
|
|
6042
|
-
// EXTERNAL MODULE: ../../../node_modules/react-window/dist/index.esm.js
|
|
6043
|
-
var index_esm = __webpack_require__(28271);
|
|
6044
6044
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomTagBrowser/DicomTagTable.tsx
|
|
6045
6045
|
|
|
6046
6046
|
|
|
6047
6047
|
|
|
6048
6048
|
|
|
6049
|
+
|
|
6049
6050
|
const lineHeightPx = 20;
|
|
6050
6051
|
const lineHeightClassName = `leading-[${lineHeightPx}px]`;
|
|
6051
6052
|
const rowVerticalPaddingPx = 10;
|
|
@@ -6057,6 +6058,45 @@ const rowStyle = {
|
|
|
6057
6058
|
borderBottomWidth: `${rowBottomBorderPx}px`,
|
|
6058
6059
|
...rowVerticalPaddingStyle
|
|
6059
6060
|
};
|
|
6061
|
+
const indentationPadding = 8;
|
|
6062
|
+
const RowComponent = ({
|
|
6063
|
+
row,
|
|
6064
|
+
style,
|
|
6065
|
+
keyPrefix,
|
|
6066
|
+
onToggle
|
|
6067
|
+
}) => {
|
|
6068
|
+
const handleToggle = (0,react.useCallback)(() => {
|
|
6069
|
+
onToggle(!row.areChildrenVisible);
|
|
6070
|
+
}, [row.areChildrenVisible, onToggle]);
|
|
6071
|
+
const hasChildren = row.children && row.children.length > 0;
|
|
6072
|
+
const isChildOrParent = hasChildren || row.depth > 0;
|
|
6073
|
+
const padding = indentationPadding * (1 + 2 * row.depth);
|
|
6074
|
+
return /*#__PURE__*/react.createElement("div", {
|
|
6075
|
+
style: {
|
|
6076
|
+
...style,
|
|
6077
|
+
...rowStyle
|
|
6078
|
+
},
|
|
6079
|
+
className: classnames_default()('hover:bg-secondary-main border-secondary-light flex w-full flex-row items-center break-all bg-black text-base transition duration-300', lineHeightClassName),
|
|
6080
|
+
key: keyPrefix
|
|
6081
|
+
}, isChildOrParent && /*#__PURE__*/react.createElement("div", {
|
|
6082
|
+
style: {
|
|
6083
|
+
paddingLeft: `${padding}px`,
|
|
6084
|
+
opacity: onToggle ? 1 : 0
|
|
6085
|
+
}
|
|
6086
|
+
}, row.areChildrenVisible ? /*#__PURE__*/react.createElement(ui_next_src/* Icons */.FI.ChevronDown, {
|
|
6087
|
+
onClick: handleToggle
|
|
6088
|
+
}) : /*#__PURE__*/react.createElement(ui_next_src/* Icons */.FI.ChevronRight, {
|
|
6089
|
+
onClick: handleToggle
|
|
6090
|
+
})), /*#__PURE__*/react.createElement("div", {
|
|
6091
|
+
className: "w-4/24 px-3"
|
|
6092
|
+
}, row.tag), /*#__PURE__*/react.createElement("div", {
|
|
6093
|
+
className: "w-2/24 px-3"
|
|
6094
|
+
}, row.valueRepresentation), /*#__PURE__*/react.createElement("div", {
|
|
6095
|
+
className: "w-6/24 px-3"
|
|
6096
|
+
}, row.keyword), /*#__PURE__*/react.createElement("div", {
|
|
6097
|
+
className: "w-5/24 grow px-3"
|
|
6098
|
+
}, row.value));
|
|
6099
|
+
};
|
|
6060
6100
|
function ColumnHeaders({
|
|
6061
6101
|
tagRef,
|
|
6062
6102
|
vrRef,
|
|
@@ -6105,6 +6145,7 @@ function DicomTagTable({
|
|
|
6105
6145
|
const [vrHeaderElem, setVrHeaderElem] = (0,react.useState)(null);
|
|
6106
6146
|
const [keywordHeaderElem, setKeywordHeaderElem] = (0,react.useState)(null);
|
|
6107
6147
|
const [valueHeaderElem, setValueHeaderElem] = (0,react.useState)(null);
|
|
6148
|
+
const [internalRows, setInternalRows] = (0,react.useState)(rows);
|
|
6108
6149
|
|
|
6109
6150
|
// Here the refs are inturn stored in state to trigger a render of the table.
|
|
6110
6151
|
// This virtualized table does NOT render until the header is rendered because the header column widths are used to determine the row heights in the table.
|
|
@@ -6129,6 +6170,12 @@ function DicomTagTable({
|
|
|
6129
6170
|
setValueHeaderElem(elem);
|
|
6130
6171
|
}
|
|
6131
6172
|
};
|
|
6173
|
+
(0,react.useEffect)(() => {
|
|
6174
|
+
setInternalRows(rows);
|
|
6175
|
+
}, [rows]);
|
|
6176
|
+
const visibleRows = (0,react.useMemo)(() => {
|
|
6177
|
+
return internalRows.filter(row => row.isVisible);
|
|
6178
|
+
}, [internalRows]);
|
|
6132
6179
|
|
|
6133
6180
|
/**
|
|
6134
6181
|
* When new rows are set, scroll to the top and reset the virtualization.
|
|
@@ -6152,50 +6199,72 @@ function DicomTagTable({
|
|
|
6152
6199
|
window.removeEventListener('resize', debouncedResize);
|
|
6153
6200
|
};
|
|
6154
6201
|
}, []);
|
|
6155
|
-
const
|
|
6202
|
+
const getOneRowHeight = (0,react.useCallback)(row => {
|
|
6203
|
+
const headerWidths = [tagHeaderElem.offsetWidth, vrHeaderElem.offsetWidth, keywordHeaderElem.offsetWidth, valueHeaderElem.offsetWidth];
|
|
6204
|
+
const context = canvasRef.current.getContext('2d');
|
|
6205
|
+
context.font = getComputedStyle(canvasRef.current).font;
|
|
6206
|
+
const propertiesToCheck = ['tag', 'valueRepresentation', 'keyword', 'value'];
|
|
6207
|
+
return Object.entries(row).filter(([key]) => propertiesToCheck.includes(key)).map(([, colText], index) => {
|
|
6208
|
+
const colOneLineWidth = context.measureText(colText).width;
|
|
6209
|
+
const numLines = Math.ceil(colOneLineWidth / headerWidths[index]);
|
|
6210
|
+
return numLines * lineHeightPx + 2 * rowVerticalPaddingPx + rowBottomBorderPx;
|
|
6211
|
+
}).reduce((maxHeight, colHeight) => Math.max(maxHeight, colHeight), 0);
|
|
6212
|
+
}, [keywordHeaderElem, tagHeaderElem, valueHeaderElem, vrHeaderElem]);
|
|
6213
|
+
|
|
6214
|
+
/**
|
|
6215
|
+
* Get the item/row size. We use the header column widths to calculate the various row heights.
|
|
6216
|
+
* @param index the row index
|
|
6217
|
+
* @returns the row height
|
|
6218
|
+
*/
|
|
6219
|
+
const getItemSize = (0,react.useCallback)(rows => index => {
|
|
6220
|
+
const row = rows[index];
|
|
6221
|
+
const height = getOneRowHeight(row);
|
|
6222
|
+
return height;
|
|
6223
|
+
}, [getOneRowHeight]);
|
|
6224
|
+
const onToggle = (0,react.useCallback)(sourceRow => {
|
|
6225
|
+
if (!sourceRow.children) {
|
|
6226
|
+
return undefined;
|
|
6227
|
+
}
|
|
6228
|
+
return areChildrenVisible => {
|
|
6229
|
+
const newInternalRows = internalRows.map(internalRow => {
|
|
6230
|
+
if (sourceRow.uid === internalRow.uid) {
|
|
6231
|
+
return {
|
|
6232
|
+
...internalRow,
|
|
6233
|
+
areChildrenVisible
|
|
6234
|
+
};
|
|
6235
|
+
}
|
|
6236
|
+
if (sourceRow.children.includes(internalRow.uid)) {
|
|
6237
|
+
return {
|
|
6238
|
+
...internalRow,
|
|
6239
|
+
isVisible: areChildrenVisible,
|
|
6240
|
+
areChildrenVisible
|
|
6241
|
+
};
|
|
6242
|
+
}
|
|
6243
|
+
return internalRow;
|
|
6244
|
+
});
|
|
6245
|
+
setInternalRows(newInternalRows);
|
|
6246
|
+
};
|
|
6247
|
+
}, [internalRows]);
|
|
6248
|
+
const getRowComponent = (0,react.useCallback)(({
|
|
6249
|
+
rows
|
|
6250
|
+
}) => function RowList({
|
|
6156
6251
|
index,
|
|
6157
6252
|
style
|
|
6158
|
-
})
|
|
6159
|
-
const row = rows[index];
|
|
6160
|
-
return /*#__PURE__*/react.createElement(
|
|
6161
|
-
style:
|
|
6162
|
-
|
|
6163
|
-
|
|
6164
|
-
|
|
6165
|
-
|
|
6166
|
-
|
|
6167
|
-
}, /*#__PURE__*/react.createElement("div", {
|
|
6168
|
-
className: "w-4/24 px-3"
|
|
6169
|
-
}, row[0]), /*#__PURE__*/react.createElement("div", {
|
|
6170
|
-
className: "w-2/24 px-3"
|
|
6171
|
-
}, row[1]), /*#__PURE__*/react.createElement("div", {
|
|
6172
|
-
className: "w-6/24 px-3"
|
|
6173
|
-
}, row[2]), /*#__PURE__*/react.createElement("div", {
|
|
6174
|
-
className: "w-5/24 grow px-3"
|
|
6175
|
-
}, row[3]));
|
|
6176
|
-
}, [rows]);
|
|
6253
|
+
}) {
|
|
6254
|
+
const row = (0,react.useMemo)(() => rows[index], [index]);
|
|
6255
|
+
return /*#__PURE__*/react.createElement(RowComponent, {
|
|
6256
|
+
style: style,
|
|
6257
|
+
row: row,
|
|
6258
|
+
keyPrefix: `DICOMTagRow-${index}`,
|
|
6259
|
+
onToggle: onToggle(row)
|
|
6260
|
+
});
|
|
6261
|
+
}, [onToggle]);
|
|
6177
6262
|
|
|
6178
6263
|
/**
|
|
6179
6264
|
* Whenever any one of the column headers is set, then the header is rendered.
|
|
6180
6265
|
* Here we chose the tag header.
|
|
6181
6266
|
*/
|
|
6182
6267
|
const isHeaderRendered = (0,react.useCallback)(() => tagHeaderElem !== null, [tagHeaderElem]);
|
|
6183
|
-
|
|
6184
|
-
/**
|
|
6185
|
-
* Get the item/row size. We use the header column widths to calculate the various row heights.
|
|
6186
|
-
* @param index the row index
|
|
6187
|
-
* @returns the row height
|
|
6188
|
-
*/
|
|
6189
|
-
const getItemSize = (0,react.useCallback)(index => {
|
|
6190
|
-
const headerWidths = [tagHeaderElem.offsetWidth, vrHeaderElem.offsetWidth, keywordHeaderElem.offsetWidth, valueHeaderElem.offsetWidth];
|
|
6191
|
-
const context = canvasRef.current.getContext('2d');
|
|
6192
|
-
context.font = getComputedStyle(canvasRef.current).font;
|
|
6193
|
-
return rows[index].map((colText, index) => {
|
|
6194
|
-
const colOneLineWidth = context.measureText(colText).width;
|
|
6195
|
-
const numLines = Math.ceil(colOneLineWidth / headerWidths[index]);
|
|
6196
|
-
return numLines * lineHeightPx + 2 * rowVerticalPaddingPx + rowBottomBorderPx;
|
|
6197
|
-
}).reduce((maxHeight, colHeight) => Math.max(maxHeight, colHeight));
|
|
6198
|
-
}, [rows, keywordHeaderElem, tagHeaderElem, valueHeaderElem, vrHeaderElem]);
|
|
6199
6268
|
return /*#__PURE__*/react.createElement("div", null, /*#__PURE__*/react.createElement("canvas", {
|
|
6200
6269
|
style: {
|
|
6201
6270
|
visibility: 'hidden',
|
|
@@ -6216,13 +6285,15 @@ function DicomTagTable({
|
|
|
6216
6285
|
}, isHeaderRendered() && /*#__PURE__*/react.createElement(index_esm/* VariableSizeList */._m, {
|
|
6217
6286
|
ref: listRef,
|
|
6218
6287
|
height: 500,
|
|
6219
|
-
itemCount:
|
|
6220
|
-
itemSize: getItemSize,
|
|
6288
|
+
itemCount: visibleRows.length,
|
|
6289
|
+
itemSize: getItemSize(visibleRows),
|
|
6221
6290
|
width: '100%',
|
|
6222
6291
|
className: "ohif-scrollbar"
|
|
6223
|
-
},
|
|
6292
|
+
}, getRowComponent({
|
|
6293
|
+
rows: visibleRows
|
|
6294
|
+
}))));
|
|
6224
6295
|
}
|
|
6225
|
-
/* harmony default export */ const DicomTagBrowser_DicomTagTable = (DicomTagTable);
|
|
6296
|
+
/* harmony default export */ const DicomTagBrowser_DicomTagTable = (/*#__PURE__*/react.memo(DicomTagTable));
|
|
6226
6297
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomTagBrowser/DicomTagBrowser.css
|
|
6227
6298
|
// extracted by mini-css-extract-plugin
|
|
6228
6299
|
|
|
@@ -6235,7 +6306,8 @@ function DicomTagTable({
|
|
|
6235
6306
|
|
|
6236
6307
|
|
|
6237
6308
|
|
|
6238
|
-
|
|
6309
|
+
let rowCounter = 0;
|
|
6310
|
+
const generateRowId = () => `row_${++rowCounter}`;
|
|
6239
6311
|
const {
|
|
6240
6312
|
ImageSet: DicomTagBrowser_ImageSet
|
|
6241
6313
|
} = src/* classes */.Ly;
|
|
@@ -6249,23 +6321,15 @@ const DicomTagBrowser = ({
|
|
|
6249
6321
|
displaySets,
|
|
6250
6322
|
displaySetInstanceUID
|
|
6251
6323
|
}) => {
|
|
6252
|
-
// The column indices that are to be excluded during a filter of the table.
|
|
6253
|
-
// At present the column indices are:
|
|
6254
|
-
// 0: DICOM tag
|
|
6255
|
-
// 1: VR
|
|
6256
|
-
// 2: Keyword
|
|
6257
|
-
// 3: Value
|
|
6258
|
-
const excludedColumnIndicesForFilter = new Set([1]);
|
|
6259
6324
|
const [selectedDisplaySetInstanceUID, setSelectedDisplaySetInstanceUID] = (0,react.useState)(displaySetInstanceUID);
|
|
6260
6325
|
const [instanceNumber, setInstanceNumber] = (0,react.useState)(1);
|
|
6326
|
+
const [shouldShowInstanceList, setShouldShowInstanceList] = (0,react.useState)(false);
|
|
6261
6327
|
const [filterValue, setFilterValue] = (0,react.useState)('');
|
|
6262
6328
|
const onSelectChange = value => {
|
|
6263
6329
|
setSelectedDisplaySetInstanceUID(value.value);
|
|
6264
6330
|
setInstanceNumber(1);
|
|
6265
6331
|
};
|
|
6266
6332
|
const activeDisplaySet = displaySets.find(ds => ds.displaySetInstanceUID === selectedDisplaySetInstanceUID);
|
|
6267
|
-
const isImageStack = _isImageStack(activeDisplaySet);
|
|
6268
|
-
const showInstanceList = isImageStack && activeDisplaySet.images.length > 1;
|
|
6269
6333
|
const displaySetList = (0,react.useMemo)(() => {
|
|
6270
6334
|
displaySets.sort((a, b) => a.SeriesNumber - b.SeriesNumber);
|
|
6271
6335
|
return displaySets.map(displaySet => {
|
|
@@ -6289,42 +6353,42 @@ const DicomTagBrowser = ({
|
|
|
6289
6353
|
};
|
|
6290
6354
|
});
|
|
6291
6355
|
}, [displaySets]);
|
|
6292
|
-
const
|
|
6293
|
-
let metadata;
|
|
6356
|
+
const getMetadata = (0,react.useCallback)(isImageStack => {
|
|
6294
6357
|
if (isImageStack) {
|
|
6295
|
-
|
|
6296
|
-
} else {
|
|
6297
|
-
metadata = activeDisplaySet.instance || activeDisplaySet;
|
|
6358
|
+
return activeDisplaySet.images[instanceNumber - 1];
|
|
6298
6359
|
}
|
|
6360
|
+
return activeDisplaySet.instance || activeDisplaySet;
|
|
6361
|
+
}, [activeDisplaySet, instanceNumber]);
|
|
6362
|
+
const rows = (0,react.useMemo)(() => {
|
|
6363
|
+
const isImageStack = activeDisplaySet instanceof DicomTagBrowser_ImageSet;
|
|
6364
|
+
const metadata = getMetadata(isImageStack);
|
|
6365
|
+
setShouldShowInstanceList(isImageStack && activeDisplaySet.images.length > 1);
|
|
6299
6366
|
const tags = getSortedTags(metadata);
|
|
6300
|
-
|
|
6301
|
-
|
|
6367
|
+
const rows = getFormattedRowsFromTags({
|
|
6368
|
+
tags,
|
|
6369
|
+
metadata,
|
|
6370
|
+
depth: 0
|
|
6371
|
+
});
|
|
6372
|
+
return rows;
|
|
6373
|
+
}, [getMetadata, activeDisplaySet]);
|
|
6302
6374
|
const filteredRows = (0,react.useMemo)(() => {
|
|
6303
6375
|
if (!filterValue) {
|
|
6304
6376
|
return rows;
|
|
6305
6377
|
}
|
|
6378
|
+
const matchedRowIds = new Set();
|
|
6379
|
+
const propertiesToCheck = ['tag', 'valueRepresentation', 'keyword', 'value'];
|
|
6380
|
+
const setIsMatched = row => {
|
|
6381
|
+
const isDirectMatch = propertiesToCheck.some(propertyName => row[propertyName]?.toLowerCase().includes(filterValueLowerCase));
|
|
6382
|
+
if (!isDirectMatch) {
|
|
6383
|
+
return;
|
|
6384
|
+
}
|
|
6385
|
+
matchedRowIds.add(row.uid);
|
|
6386
|
+
[...(row.parents ?? []), ...(row.children ?? [])].forEach(uid => matchedRowIds.add(uid));
|
|
6387
|
+
};
|
|
6306
6388
|
const filterValueLowerCase = filterValue.toLowerCase();
|
|
6307
|
-
|
|
6308
|
-
|
|
6309
|
-
if (keepRow) {
|
|
6310
|
-
// We are already keeping the row, why do more work so return now.
|
|
6311
|
-
return keepRow;
|
|
6312
|
-
}
|
|
6313
|
-
if (excludedColumnIndicesForFilter.has(colIndex)) {
|
|
6314
|
-
return keepRow;
|
|
6315
|
-
}
|
|
6316
|
-
return keepRow || col.toLowerCase().includes(filterValueLowerCase);
|
|
6317
|
-
}, false);
|
|
6318
|
-
});
|
|
6389
|
+
rows.forEach(setIsMatched);
|
|
6390
|
+
return rows.filter(row => matchedRowIds.has(row.uid));
|
|
6319
6391
|
}, [rows, filterValue]);
|
|
6320
|
-
const debouncedSetFilterValue = (0,react.useMemo)(() => {
|
|
6321
|
-
return lodash_debounce_default()(setFilterValue, 200);
|
|
6322
|
-
}, []);
|
|
6323
|
-
(0,react.useEffect)(() => {
|
|
6324
|
-
return () => {
|
|
6325
|
-
debouncedSetFilterValue?.cancel();
|
|
6326
|
-
};
|
|
6327
|
-
}, []);
|
|
6328
6392
|
return /*#__PURE__*/react.createElement("div", {
|
|
6329
6393
|
className: "dicom-tag-browser-content bg-muted"
|
|
6330
6394
|
}, /*#__PURE__*/react.createElement("div", {
|
|
@@ -6347,17 +6411,17 @@ const DicomTagBrowser = ({
|
|
|
6347
6411
|
}, item.label, /*#__PURE__*/react.createElement("span", {
|
|
6348
6412
|
className: "text-muted-foreground ml-1 text-xs"
|
|
6349
6413
|
}, item.description));
|
|
6350
|
-
})))),
|
|
6414
|
+
})))), shouldShowInstanceList && /*#__PURE__*/react.createElement("div", {
|
|
6351
6415
|
className: "mx-auto flex w-1/5 flex-col"
|
|
6352
6416
|
}, /*#__PURE__*/react.createElement("span", {
|
|
6353
6417
|
className: "text-muted-foreground flex h-6 items-center text-xs"
|
|
6354
|
-
}, "Instance Number (", instanceNumber, " of ", activeDisplaySet
|
|
6418
|
+
}, "Instance Number (", instanceNumber, " of ", activeDisplaySet?.images?.length, ")"), /*#__PURE__*/react.createElement(ui_next_src/* Slider */.Ap, {
|
|
6355
6419
|
value: [instanceNumber],
|
|
6356
6420
|
onValueChange: ([value]) => {
|
|
6357
6421
|
setInstanceNumber(value);
|
|
6358
6422
|
},
|
|
6359
6423
|
min: 1,
|
|
6360
|
-
max: activeDisplaySet
|
|
6424
|
+
max: activeDisplaySet?.images?.length,
|
|
6361
6425
|
step: 1,
|
|
6362
6426
|
className: "pt-4"
|
|
6363
6427
|
})), /*#__PURE__*/react.createElement("div", {
|
|
@@ -6371,19 +6435,35 @@ const DicomTagBrowser = ({
|
|
|
6371
6435
|
rows: filteredRows
|
|
6372
6436
|
}));
|
|
6373
6437
|
};
|
|
6374
|
-
function getFormattedRowsFromTags(
|
|
6438
|
+
function getFormattedRowsFromTags({
|
|
6439
|
+
tags,
|
|
6440
|
+
metadata,
|
|
6441
|
+
depth,
|
|
6442
|
+
parents
|
|
6443
|
+
}) {
|
|
6375
6444
|
const rows = [];
|
|
6376
6445
|
tags.forEach(tagInfo => {
|
|
6446
|
+
const uid = generateRowId();
|
|
6377
6447
|
if (tagInfo.vr === 'SQ') {
|
|
6378
|
-
|
|
6379
|
-
|
|
6380
|
-
|
|
6381
|
-
|
|
6382
|
-
|
|
6383
|
-
|
|
6384
|
-
|
|
6385
|
-
|
|
6386
|
-
|
|
6448
|
+
const children = tagInfo.values.flatMap(value => getFormattedRowsFromTags({
|
|
6449
|
+
tags: value,
|
|
6450
|
+
metadata,
|
|
6451
|
+
depth: depth + 1,
|
|
6452
|
+
parents: parents ? [...parents, uid] : [uid]
|
|
6453
|
+
}));
|
|
6454
|
+
const row = {
|
|
6455
|
+
uid,
|
|
6456
|
+
tag: tagInfo.tag,
|
|
6457
|
+
valueRepresentation: tagInfo.vr,
|
|
6458
|
+
keyword: tagInfo.keyword,
|
|
6459
|
+
value: '',
|
|
6460
|
+
depth,
|
|
6461
|
+
isVisible: true,
|
|
6462
|
+
areChildrenVisible: true,
|
|
6463
|
+
children: children.map(child => child.uid),
|
|
6464
|
+
parents
|
|
6465
|
+
};
|
|
6466
|
+
rows.push(row, ...children);
|
|
6387
6467
|
} else {
|
|
6388
6468
|
if (tagInfo.vr === 'xs') {
|
|
6389
6469
|
try {
|
|
@@ -6391,10 +6471,20 @@ function getFormattedRowsFromTags(tags, metadata) {
|
|
|
6391
6471
|
const originalTagInfo = metadata[tag];
|
|
6392
6472
|
tagInfo.vr = originalTagInfo.vr;
|
|
6393
6473
|
} catch (error) {
|
|
6394
|
-
console.
|
|
6474
|
+
console.warn(`Failed to parse value representation for tag '${tagInfo.keyword}'`);
|
|
6395
6475
|
}
|
|
6396
6476
|
}
|
|
6397
|
-
|
|
6477
|
+
const row = {
|
|
6478
|
+
uid,
|
|
6479
|
+
tag: tagInfo.tag,
|
|
6480
|
+
valueRepresentation: tagInfo.vr,
|
|
6481
|
+
keyword: tagInfo.keyword,
|
|
6482
|
+
value: tagInfo.value,
|
|
6483
|
+
depth,
|
|
6484
|
+
isVisible: true,
|
|
6485
|
+
parents
|
|
6486
|
+
};
|
|
6487
|
+
rows.push(row);
|
|
6398
6488
|
}
|
|
6399
6489
|
});
|
|
6400
6490
|
return rows;
|
|
@@ -6410,13 +6500,6 @@ function getRows(metadata, depth = 0) {
|
|
|
6410
6500
|
// Tag, Type, Value, Keyword
|
|
6411
6501
|
|
|
6412
6502
|
const keywords = Object.keys(metadata);
|
|
6413
|
-
let tagIndent = '';
|
|
6414
|
-
for (let i = 0; i < depth; i++) {
|
|
6415
|
-
tagIndent += '>';
|
|
6416
|
-
}
|
|
6417
|
-
if (depth > 0) {
|
|
6418
|
-
tagIndent += ' '; // If indented, add a space after the indents.
|
|
6419
|
-
}
|
|
6420
6503
|
const rows = [];
|
|
6421
6504
|
for (let i = 0; i < keywords.length; i++) {
|
|
6422
6505
|
let keyword = keywords[i];
|
|
@@ -6432,7 +6515,6 @@ function getRows(metadata, depth = 0) {
|
|
|
6432
6515
|
|
|
6433
6516
|
const sequence = {
|
|
6434
6517
|
tag: tagInfo.tag,
|
|
6435
|
-
tagIndent,
|
|
6436
6518
|
vr: tagInfo.vr,
|
|
6437
6519
|
keyword,
|
|
6438
6520
|
values: []
|
|
@@ -6490,7 +6572,6 @@ function getRows(metadata, depth = 0) {
|
|
|
6490
6572
|
if (tagInfo) {
|
|
6491
6573
|
rows.push({
|
|
6492
6574
|
tag: tagInfo.tag,
|
|
6493
|
-
tagIndent,
|
|
6494
6575
|
vr: tagInfo.vr,
|
|
6495
6576
|
keyword,
|
|
6496
6577
|
value
|
|
@@ -6502,7 +6583,6 @@ function getRows(metadata, depth = 0) {
|
|
|
6502
6583
|
const tag = `(${keyword.substring(0, 4)},${keyword.substring(4, 8)})`;
|
|
6503
6584
|
rows.push({
|
|
6504
6585
|
tag,
|
|
6505
|
-
tagIndent,
|
|
6506
6586
|
vr: '',
|
|
6507
6587
|
keyword: 'Private Tag',
|
|
6508
6588
|
value
|
|
@@ -6512,9 +6592,6 @@ function getRows(metadata, depth = 0) {
|
|
|
6512
6592
|
}
|
|
6513
6593
|
return rows;
|
|
6514
6594
|
}
|
|
6515
|
-
function _isImageStack(displaySet) {
|
|
6516
|
-
return displaySet instanceof DicomTagBrowser_ImageSet;
|
|
6517
|
-
}
|
|
6518
6595
|
function toArray(objectOrArray) {
|
|
6519
6596
|
return Array.isArray(objectOrArray) ? objectOrArray : [objectOrArray];
|
|
6520
6597
|
}
|
|
@@ -101832,8 +101832,8 @@ function WorkList({
|
|
|
101832
101832
|
};
|
|
101833
101833
|
});
|
|
101834
101834
|
const hasStudies = numOfStudies > 0;
|
|
101835
|
-
const versionNumber = "3.10.0-beta.
|
|
101836
|
-
const commitHash = "
|
|
101835
|
+
const versionNumber = "3.10.0-beta.97";
|
|
101836
|
+
const commitHash = "0b5836ca1a908e152336752672b196f0d533f4f9";
|
|
101837
101837
|
const menuOptions = [{
|
|
101838
101838
|
title: t('Header:About'),
|
|
101839
101839
|
icon: 'info',
|
|
@@ -121533,7 +121533,7 @@ const detectionOptions = {
|
|
|
121533
121533
|
}
|
|
121534
121534
|
});
|
|
121535
121535
|
;// CONCATENATED MODULE: ../../i18n/package.json
|
|
121536
|
-
const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.10.0-beta.
|
|
121536
|
+
const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.10.0-beta.96"}');
|
|
121537
121537
|
;// CONCATENATED MODULE: ../../i18n/src/utils.js
|
|
121538
121538
|
const languagesMap = {
|
|
121539
121539
|
ar: 'Arabic',
|
|
@@ -414227,7 +414227,7 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
|
|
|
414227
414227
|
/******/ // This function allow to reference async chunks
|
|
414228
414228
|
/******/ __webpack_require__.u = (chunkId) => {
|
|
414229
414229
|
/******/ // return url for filenames based on template
|
|
414230
|
-
/******/ return "" + ({"572":"polySeg","3054":"histogram-worker","3584":"suv-peak-worker"}[chunkId] || chunkId) + ".bundle." + {"213":"
|
|
414230
|
+
/******/ return "" + ({"572":"polySeg","3054":"histogram-worker","3584":"suv-peak-worker"}[chunkId] || chunkId) + ".bundle." + {"213":"441e0d6e73a494100fd2","572":"3f5527cde0d61e88a0fd","732":"6978ac30a1e36abf06db","810":"3e17ce472e530d363899","870":"7a8a8e57556202361dc9","1919":"416410614db71af2bbaa","1927":"3b172968ee6878d78f9e","2424":"bd6b78524a738bafeee6","2701":"641b8e4299d8370e861b","2825":"82bd4177050803b14d18","3054":"6b0dbbdb168d711efad4","3334":"95de16b9f8539a9195e5","3584":"37f95e5799f2410313bc","4202":"add83801fbc8227d551b","4526":"11b8a5b32121744ae056","4533":"f66373fbe5a0c349b0a9","4759":"0d60078f58f5a56c0157","4834":"3495dadf8a9d9f524ee5","4991":"aa561005b9bff1f391af","5038":"63e0dcf0360ed9ab6525","5261":"5454fb98c87e3e21b419","5674":"05e639d0871778c8093a","5770":"eb17fe0889624c94e231","6027":"8b09c7a6d7adfc05bffe","6201":"dc1dd81fc452af4d4528","6341":"d34a70374f356771c60f","6734":"d1ccf477d5baa8156a26","6896":"ca9b905abe733f279387","6939":"35a07bed912bc04c9d75","7159":"1761513105b61524f649","7197":"503101515a367d14be57","7490":"a95b28b1387ed7bb38b1","7955":"91ffc4eedb81f01af412","8008":"d386b21b516577bb0bb8","8094":"5c44190a325ac23e3e5c","8228":"58198b11ccbdc65b468f","8259":"bcd66b6174d18f9c6604","8402":"fc21a5ee7809ad1cf9b1","8549":"dc7cfa9212adde74a3b4","8558":"5a5c2e1574c55e76fa72","9026":"9e6c0ebd714977ba67e5","9551":"6b4f8866c7100111a131","9862":"a4ccc41bcff91a46d37e","9890":"10620379d01f950951bc"}[chunkId] + ".js";
|
|
414231
414231
|
/******/ };
|
|
414232
414232
|
/******/ })();
|
|
414233
414233
|
/******/
|