@ohif/app 3.13.3 → 3.13.10

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 (44) hide show
  1. package/dist/{100.bundle.1e6c265fa9207da3.js → 100.bundle.1c5ef7d0e0ea4583.js} +2 -2
  2. package/dist/1602.css +1 -1
  3. package/dist/{2493.bundle.c4af70e46357151f.js → 2493.bundle.b6d776952823b290.js} +19 -6
  4. package/dist/{3500.bundle.2ef45f22b3048e6c.js → 3500.bundle.7eafa2e253d6ebf9.js} +2 -2
  5. package/dist/3760.css +1 -1
  6. package/dist/3833.css +1 -1
  7. package/dist/5189.css +2 -2
  8. package/dist/5910.css +1 -1
  9. package/dist/6214.css +1 -1
  10. package/dist/{7248.bundle.0fb0892917fabb6a.js → 7248.bundle.e96ca656fdb25c7d.js} +2 -2
  11. package/dist/{7463.bundle.40668aa8d083d077.js → 7463.bundle.bc592adfcd96a763.js} +67 -27
  12. package/dist/{7499.bundle.42a9dc2b39e82131.js → 7499.bundle.57679cd343fae834.js} +2 -2
  13. package/dist/{781.bundle.1cb6fbf0b8b2e4ef.js → 781.bundle.40af085bb7abd069.js} +2 -2
  14. package/dist/781.css +1 -1
  15. package/dist/8423.css +1 -1
  16. package/dist/8492.css +1 -1
  17. package/dist/{8832.bundle.9cafc26d09eea215.js → 8832.bundle.21b7afcf9ad88fee.js} +2 -2
  18. package/dist/8832.css +1 -1
  19. package/dist/{89.bundle.4a0888ee5da4f536.js → 89.bundle.0c0b32304742d0d3.js} +7 -7
  20. package/dist/9363.bundle.8b90310748978ac8.js +454 -0
  21. package/dist/{9415.bundle.c85405375765eafd.js → 9415.bundle.dc8266561c966fdc.js} +2 -2
  22. package/dist/9415.css +1 -1
  23. package/dist/976.css +1 -1
  24. package/dist/{app.bundle.68d2c24e4241591e.js → app.bundle.2e2def80f8090a74.js} +46 -25
  25. package/dist/app.bundle.css +8 -8
  26. package/dist/{compute.bundle.0fc3a3ee85296cf2.js → compute.bundle.910086331888fd1b.js} +1 -1
  27. package/dist/index.html +1 -1
  28. package/dist/{polySeg.bundle.2c5892e4c5a6bdd5.js → polySeg.bundle.0e906840b3becd72.js} +1 -1
  29. package/dist/sw.js +1 -1
  30. package/package.json +6 -6
  31. package/dist/9116.bundle.9cd0ab4c0885b7f7.js +0 -146
  32. /package/dist/{1180.bundle.d4d21394bba95747.js → 1180.bundle.12ff4a7091b814b0.js} +0 -0
  33. /package/dist/{1483.bundle.aa623a8a0ec23c2c.js → 1483.bundle.d61e4b3b75394193.js} +0 -0
  34. /package/dist/{1602.bundle.5b68037c9d8294d2.js → 1602.bundle.ce71ed9405418551.js} +0 -0
  35. /package/dist/{2779.bundle.9bf5cb5f186f190a.js → 2779.bundle.590547b8c00fb118.js} +0 -0
  36. /package/dist/{3760.bundle.177128a5f9f49786.js → 3760.bundle.049908339d53018a.js} +0 -0
  37. /package/dist/{4556.bundle.688eea21d01f9994.js → 4556.bundle.f47dd30a2808e074.js} +0 -0
  38. /package/dist/{4683.bundle.769a0c0411620fcd.js → 4683.bundle.124370a390087ca2.js} +0 -0
  39. /package/dist/{5696.bundle.78c55a8751af0b9e.js → 5696.bundle.8212bd837256341d.js} +0 -0
  40. /package/dist/{6749.bundle.dc133ea2792d2a1d.js → 6749.bundle.903e779c064193ad.js} +0 -0
  41. /package/dist/{8423.bundle.af533f1f17e05474.js → 8423.bundle.a73bb02540af284b.js} +0 -0
  42. /package/dist/{8492.bundle.c570ae29ddf04b60.js → 8492.bundle.80935f39a3863f1f.js} +0 -0
  43. /package/dist/{9290.bundle.32f64582d1bafb31.js → 9290.bundle.9f40c51f5da6c0d4.js} +0 -0
  44. /package/dist/{9437.bundle.537b0f7cdcdf6d1e.js → 9437.bundle.8880cc3f5874eb8c.js} +0 -0
@@ -0,0 +1,454 @@
1
+ "use strict";
2
+ (globalThis["rspackChunk"] = globalThis["rspackChunk"] || []).push([[9363], {
3
+ 42446(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
4
+
5
+ // EXPORTS
6
+ __webpack_require__.d(__webpack_exports__, {
7
+ "default": () => (/* binding */ dicom_pdf_src)
8
+ });
9
+
10
+ // EXTERNAL MODULE: ../../../node_modules/react/index.js
11
+ var react = __webpack_require__(86326);
12
+ ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/package.json
13
+ var package_namespaceObject = JSON.parse('{"UU":"@ohif/extension-dicom-pdf"}')
14
+ ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/src/id.js
15
+
16
+ const id = package_namespaceObject.UU;
17
+ const SOPClassHandlerId = `${id}.sopClassHandlerModule.dicom-pdf`;
18
+
19
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
20
+ var src = __webpack_require__(50679);
21
+ // EXTERNAL MODULE: ../../i18n/src/index.js + 302 modules
22
+ var i18n_src = __webpack_require__(42204);
23
+ ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/src/utils/displayableDocumentTypes.ts
24
+ /**
25
+ * The set of encapsulated-document MIME types this extension is willing to put
26
+ * in front of a user, and how each one is embedded.
27
+ *
28
+ * MIMETypeOfEncapsulatedDocument is supplied by whoever produced the instance,
29
+ * so it is treated here as a claim to be checked rather than an instruction to
30
+ * be followed. A type that is not on this list is not rendered at all.
31
+ */
32
+
33
+ /**
34
+ * How a document is embedded in the viewport.
35
+ *
36
+ * 'object' - <object>. The browsers' built-in PDF viewers refuse to run inside
37
+ * a sandboxed browsing context: in Chrome a PDF renders under no sandbox at
38
+ * all and under none of the token combinations, including the fully
39
+ * permissive `allow-scripts allow-same-origin`. PDFs therefore cannot be
40
+ * sandboxed, and their safety rests entirely on the type guarantee that
41
+ * loadDisplayableDocument applies (canonical Blob type + signature check).
42
+ *
43
+ * 'iframe' - <iframe sandbox>. Markup types render correctly inside a sandbox,
44
+ * so they get one. The default is the empty sandbox: no tokens, scripts
45
+ * inert, opaque origin, no access to the viewer's storage or DOM.
46
+ */
47
+
48
+ /**
49
+ * Real files do not always put their magic number at byte 0, and readers that
50
+ * accept them anyway are the reason such files exist in the wild.
51
+ *
52
+ * PDF: ISO 32000-1 requires "%PDF-" at the start of the file, but Adobe's own
53
+ * implementation note relaxes this to anywhere within the first 1024 bytes, and
54
+ * every mainstream reader follows suit. Producers that write a UTF-8 BOM, or
55
+ * that prepend junk before the header, therefore produce files that open
56
+ * everywhere except here. Matching the 1024-byte allowance keeps the check
57
+ * doing its actual job - catching a payload that is not a PDF at all, which is
58
+ * how a document declared as PDF but containing markup gets rejected - without
59
+ * failing valid documents over leading bytes the renderer will skip anyway.
60
+ */
61
+ const PDF_SIGNATURE_SEARCH_LIMIT = 1024;
62
+
63
+ /**
64
+ * Canonical entries, keyed by canonical MIME type. Exported so downstream
65
+ * deployments can extend the list; adding an entry means asserting both that
66
+ * the browser renders that type inline and that the chosen strategy contains it.
67
+ */
68
+ const DISPLAYABLE_DOCUMENT_TYPES = {
69
+ 'application/pdf': {
70
+ mimeType: 'application/pdf',
71
+ strategy: 'object',
72
+ signature: [0x25, 0x50, 0x44, 0x46, 0x2d],
73
+ // "%PDF-"
74
+ signatureSearchLimit: PDF_SIGNATURE_SEARCH_LIMIT
75
+ },
76
+ 'text/html': {
77
+ mimeType: 'text/html',
78
+ strategy: 'iframe',
79
+ sandbox: ''
80
+ },
81
+ 'application/xhtml+xml': {
82
+ mimeType: 'application/xhtml+xml',
83
+ strategy: 'iframe',
84
+ sandbox: ''
85
+ },
86
+ 'text/xml': {
87
+ mimeType: 'text/xml',
88
+ strategy: 'iframe',
89
+ sandbox: ''
90
+ },
91
+ 'application/xml': {
92
+ mimeType: 'application/xml',
93
+ strategy: 'iframe',
94
+ sandbox: ''
95
+ },
96
+ 'text/plain': {
97
+ mimeType: 'text/plain',
98
+ strategy: 'iframe',
99
+ sandbox: ''
100
+ }
101
+ };
102
+
103
+ /**
104
+ * Non-standard spellings seen in real instances, folded onto their canonical
105
+ * entry. Accepting an alias is safe because the canonical entry decides both
106
+ * the Blob type and the signature the payload has to satisfy.
107
+ */
108
+ const DOCUMENT_MIME_TYPE_ALIASES = {
109
+ 'application/html': 'text/html',
110
+ 'application/x-pdf': 'application/pdf',
111
+ 'application/acrobat': 'application/pdf',
112
+ 'text/pdf': 'application/pdf',
113
+ 'application/xhtml': 'application/xhtml+xml'
114
+ };
115
+
116
+ /**
117
+ * Lower-cases and strips any parameters (`text/html; charset=utf-8`).
118
+ */
119
+ function normalizeDocumentMimeType(rawMimeType) {
120
+ if (typeof rawMimeType !== 'string') {
121
+ return undefined;
122
+ }
123
+ const normalized = rawMimeType.split(';')[0].trim().toLowerCase();
124
+ return normalized || undefined;
125
+ }
126
+
127
+ /**
128
+ * Resolves a declared MIME type to its allowlist entry, or undefined when the
129
+ * type is not one this extension will display.
130
+ */
131
+ function getDisplayableDocumentType(rawMimeType) {
132
+ const normalized = normalizeDocumentMimeType(rawMimeType);
133
+ if (!normalized) {
134
+ return undefined;
135
+ }
136
+ const canonical = DOCUMENT_MIME_TYPE_ALIASES[normalized] ?? normalized;
137
+ return DISPLAYABLE_DOCUMENT_TYPES[canonical];
138
+ }
139
+
140
+ /**
141
+ * Checks a payload against its type's magic number, allowing the signature to
142
+ * start anywhere within `signatureSearchLimit` bytes of the payload. Types that
143
+ * have no reliable signature pass, since for those the sandbox rather than the
144
+ * content check is what contains the document.
145
+ */
146
+ function matchesDocumentSignature(documentType, payload) {
147
+ const {
148
+ signature,
149
+ signatureSearchLimit = 0
150
+ } = documentType;
151
+ if (!signature?.length) {
152
+ return true;
153
+ }
154
+ if (payload.byteLength < signature.length) {
155
+ return false;
156
+ }
157
+
158
+ // Only the window the signature could still start in needs reading, and it is
159
+ // bounded, so an oversized document costs the same as a small one.
160
+ const lastStart = Math.min(signatureSearchLimit, payload.byteLength - signature.length);
161
+ const head = new Uint8Array(payload, 0, lastStart + signature.length);
162
+ for (let start = 0; start <= lastStart; start++) {
163
+ if (signature.every((byte, index) => head[start + index] === byte)) {
164
+ return true;
165
+ }
166
+ }
167
+ return false;
168
+ }
169
+ ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/src/utils/loadDisplayableDocument.ts
170
+
171
+ /**
172
+ * Resolves an encapsulated document into something safe to embed.
173
+ *
174
+ * The payload comes from the instance the same way every other bulkdata value
175
+ * does: inline content when the metadata carries it, otherwise the data
176
+ * source's own `retrieveBulkData`, which the data source binds onto the value
177
+ * and which caches the resolved buffer on `value.Value`. This is the path the
178
+ * video display sets take, so authentication, bulkdata URI resolution and
179
+ * caching all behave identically here.
180
+ *
181
+ * The bytes are then wrapped in a Blob whose type comes from the allowlist
182
+ * rather than from the instance. That is the type guarantee: after this point
183
+ * neither MIMETypeOfEncapsulatedDocument nor the origin server's Content-Type
184
+ * has any say in how the browser interprets the payload, so a document cannot
185
+ * be steered into being parsed as something it is not.
186
+ */
187
+ async function loadDisplayableDocument({
188
+ instance,
189
+ mimeType,
190
+ tag = 'EncapsulatedDocument'
191
+ }, {
192
+ signal
193
+ } = {}) {
194
+ const documentType = getDisplayableDocumentType(mimeType);
195
+ if (!documentType) {
196
+ return {
197
+ ok: false,
198
+ reason: 'unsupported-type',
199
+ mimeType
200
+ };
201
+ }
202
+ const value = instance?.[tag];
203
+ if (!value) {
204
+ return {
205
+ ok: false,
206
+ reason: 'retrieve-failed'
207
+ };
208
+ }
209
+ if (signal?.aborted) {
210
+ return {
211
+ ok: false,
212
+ reason: 'aborted'
213
+ };
214
+ }
215
+ let payload;
216
+ try {
217
+ payload = await readDocumentBytes(value, documentType.mimeType);
218
+ } catch (error) {
219
+ console.warn('Failed to retrieve encapsulated document', error);
220
+ return {
221
+ ok: false,
222
+ reason: 'retrieve-failed'
223
+ };
224
+ }
225
+ if (!payload?.byteLength) {
226
+ return {
227
+ ok: false,
228
+ reason: 'retrieve-failed'
229
+ };
230
+ }
231
+ if (signal?.aborted) {
232
+ return {
233
+ ok: false,
234
+ reason: 'aborted'
235
+ };
236
+ }
237
+ if (!matchesDocumentSignature(documentType, payload)) {
238
+ return {
239
+ ok: false,
240
+ reason: 'signature-mismatch',
241
+ mimeType: documentType.mimeType
242
+ };
243
+ }
244
+ const objectUrl = URL.createObjectURL(new Blob([payload], {
245
+ type: documentType.mimeType
246
+ }));
247
+ if (signal?.aborted) {
248
+ URL.revokeObjectURL(objectUrl);
249
+ return {
250
+ ok: false,
251
+ reason: 'aborted'
252
+ };
253
+ }
254
+ return {
255
+ ok: true,
256
+ url: objectUrl,
257
+ documentType,
258
+ revoke: createRevokeOnce(objectUrl)
259
+ };
260
+ }
261
+
262
+ /**
263
+ * Reads the document bytes off a naturalized bulkdata value, preferring
264
+ * whatever is already in hand. Mirrors the resolution order in
265
+ * `resolveBulkDataTags`, which is how the rest of the app reads bulkdata.
266
+ */
267
+ async function readDocumentBytes(value, mimeType) {
268
+ // Inline content delivered as base64 in the metadata.
269
+ if (value.InlineBinary) {
270
+ return base64ToArrayBuffer(value.InlineBinary);
271
+ }
272
+
273
+ // Inline content that the parser already decoded, e.g. `[ArrayBuffer]`.
274
+ if (Array.isArray(value)) {
275
+ return toArrayBuffer(value[0]);
276
+ }
277
+
278
+ // retrieveBulkData caches the resolved buffer here, so prefer it over
279
+ // re-requesting the payload.
280
+ if (value.Value) {
281
+ return toArrayBuffer(Array.isArray(value.Value) ? value.Value[0] : value.Value);
282
+ }
283
+
284
+ // Otherwise ask the data source, exactly as any other bulkdata value does.
285
+ if (typeof value.retrieveBulkData === 'function') {
286
+ const retrieved = await value.retrieveBulkData({
287
+ mediaType: mimeType
288
+ });
289
+ return toArrayBuffer(retrieved);
290
+ }
291
+ return undefined;
292
+ }
293
+ function toArrayBuffer(raw) {
294
+ // Check views first: ArrayBuffer.isView is realm-agnostic.
295
+ if (ArrayBuffer.isView(raw)) {
296
+ const view = raw;
297
+ return view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength);
298
+ }
299
+
300
+ // `instanceof ArrayBuffer` is realm-specific, so fall back to a tag check so
301
+ // that buffers created in another realm (workers, tests) are still handled.
302
+ if (raw instanceof ArrayBuffer || Object.prototype.toString.call(raw) === '[object ArrayBuffer]') {
303
+ return raw;
304
+ }
305
+ return undefined;
306
+ }
307
+
308
+ /**
309
+ * Decodes base64 inline content to bytes. `utils.b64toBlob` produces a Blob,
310
+ * but the signature check needs the bytes before a Blob is created - and the
311
+ * Blob has to be built from the allowlist type, not from a declared one.
312
+ */
313
+ function base64ToArrayBuffer(base64) {
314
+ const binary = atob(base64);
315
+ const bytes = new Uint8Array(binary.length);
316
+ for (let i = 0; i < binary.length; i++) {
317
+ bytes[i] = binary.charCodeAt(i);
318
+ }
319
+ return bytes.buffer;
320
+ }
321
+ function createRevokeOnce(objectUrl) {
322
+ let revoked = false;
323
+ return () => {
324
+ if (revoked) {
325
+ return;
326
+ }
327
+ URL.revokeObjectURL(objectUrl);
328
+ revoked = true;
329
+ };
330
+ }
331
+ ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/src/getSopClassHandlerModule.js
332
+
333
+
334
+
335
+
336
+
337
+ const SOP_CLASS_UIDS = {
338
+ ENCAPSULATED_PDF: '1.2.840.10008.5.1.4.1.1.104.1'
339
+ };
340
+ const sopClassUids = Object.values(SOP_CLASS_UIDS);
341
+ const _getDisplaySetsFromSeries = (instances, servicesManager, extensionManager) => {
342
+ return instances.map(instance => {
343
+ const {
344
+ Modality,
345
+ SOPInstanceUID
346
+ } = instance;
347
+ const {
348
+ SeriesDescription = 'PDF',
349
+ MIMETypeOfEncapsulatedDocument
350
+ } = instance;
351
+ const {
352
+ SeriesNumber,
353
+ SeriesDate,
354
+ SeriesInstanceUID,
355
+ StudyInstanceUID,
356
+ SOPClassUID
357
+ } = instance;
358
+ // The declared type is only a claim. It is resolved against the displayable
359
+ // type allowlist, and the payload is re-wrapped in a Blob of the canonical
360
+ // type, so the instance cannot steer how the browser parses the document.
361
+ const mimeType = normalizeDocumentMimeType(MIMETypeOfEncapsulatedDocument) || 'application/pdf';
362
+ const documentParams = {
363
+ instance,
364
+ tag: 'EncapsulatedDocument',
365
+ mimeType
366
+ };
367
+ const getDocument = options => loadDisplayableDocument(documentParams, options);
368
+ const displaySet = {
369
+ //plugin: id,
370
+ Modality,
371
+ displaySetInstanceUID: src/* .utils.guid */.Wp.guid(),
372
+ SeriesDescription,
373
+ SeriesNumber,
374
+ SeriesDate,
375
+ SOPInstanceUID,
376
+ SeriesInstanceUID,
377
+ StudyInstanceUID,
378
+ SOPClassHandlerId: SOPClassHandlerId,
379
+ SOPClassUID,
380
+ referencedImages: null,
381
+ measurements: null,
382
+ getDocument,
383
+ mimeType,
384
+ instances: [instance],
385
+ thumbnailSrc: null,
386
+ isDerivedDisplaySet: true,
387
+ isLoaded: false,
388
+ sopClassUids,
389
+ numImageFrames: 0,
390
+ numInstances: 1,
391
+ instance,
392
+ supportsWindowLevel: true,
393
+ label: SeriesDescription || `${i18n_src/* ["default"].t */.A.t('Series')} ${SeriesNumber} - ${i18n_src/* ["default"].t */.A.t(Modality)}`
394
+ };
395
+ return displaySet;
396
+ });
397
+ };
398
+ function getSopClassHandlerModule(params) {
399
+ const {
400
+ servicesManager,
401
+ extensionManager
402
+ } = params;
403
+ const getDisplaySetsFromSeries = instances => {
404
+ return _getDisplaySetsFromSeries(instances, servicesManager, extensionManager);
405
+ };
406
+ return [{
407
+ name: 'dicom-pdf',
408
+ sopClassUids,
409
+ getDisplaySetsFromSeries
410
+ }];
411
+ }
412
+ ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/src/index.tsx
413
+
414
+
415
+
416
+ const Component = /*#__PURE__*/react.lazy(() => {
417
+ return __webpack_require__.e(/* import() */ 7463).then(__webpack_require__.bind(__webpack_require__, 55738));
418
+ });
419
+ const OHIFCornerstonePdfViewport = props => {
420
+ return /*#__PURE__*/react.createElement(react.Suspense, {
421
+ fallback: /*#__PURE__*/react.createElement("div", null, "Loading...")
422
+ }, /*#__PURE__*/react.createElement(Component, props));
423
+ };
424
+
425
+ /**
426
+ *
427
+ */
428
+ const dicomPDFExtension = {
429
+ /**
430
+ * Only required property. Should be a unique value across all extensions.
431
+ */
432
+ id: id,
433
+ /**
434
+ *
435
+ *
436
+ * @param {object} [configuration={}]
437
+ * @param {object|array} [configuration.csToolsConfig] - Passed directly to `initCornerstoneTools`
438
+ */
439
+ getViewportModule() {
440
+ const ExtendedOHIFCornerstonePdfViewport = props => {
441
+ return /*#__PURE__*/react.createElement(OHIFCornerstonePdfViewport, props);
442
+ };
443
+ return [{
444
+ name: 'dicom-pdf',
445
+ component: ExtendedOHIFCornerstonePdfViewport
446
+ }];
447
+ },
448
+ getSopClassHandlerModule: getSopClassHandlerModule
449
+ };
450
+ /* export default */ const dicom_pdf_src = (dicomPDFExtension);
451
+
452
+ },
453
+
454
+ }]);
@@ -19,8 +19,8 @@ const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
19
19
  var react = __webpack_require__(86326);
20
20
  // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
21
21
  var src = __webpack_require__(50679);
22
- // EXTERNAL MODULE: ../../i18n/src/index.js + 300 modules
23
- var i18n_src = __webpack_require__(90119);
22
+ // EXTERNAL MODULE: ../../i18n/src/index.js + 302 modules
23
+ var i18n_src = __webpack_require__(42204);
24
24
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
25
25
  var esm = __webpack_require__(88479);
26
26
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/esm/index.js + 83 modules
package/dist/9415.css CHANGED
@@ -1,2 +1,2 @@
1
1
  .dicom-tag-browser-table{margin-left:auto;margin-right:auto}.dicom-tag-browser-table-wrapper{overflow-x:scroll}.dicom-tag-browser-table tr{color:hsl(var(--foreground));padding-left:10px;padding-right:10px;white-space:nowrap}.stick{overflow:clip;position:sticky}.dicom-tag-browser-content{overflow:hidden}.dicom-tag-browser-instance-range .range{height:20px}.dicom-tag-browser-instance-range{padding:20px 0}.dicom-tag-browser-table td.dicom-tag-browser-table-center{text-align:center}.dicom-tag-browser-table th{padding-left:10px;padding-right:10px;text-align:center}.dicom-tag-browser-table th.dicom-tag-browser-table-left{text-align:left}
2
- .chrome-picker{background:#0000!important;-webkit-box-shadow:none!important;box-shadow:none!important}
2
+ .chrome-picker{background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}
package/dist/976.css CHANGED
@@ -1,2 +1,2 @@
1
1
  .dicom-tag-browser-table{margin-left:auto;margin-right:auto}.dicom-tag-browser-table-wrapper{overflow-x:scroll}.dicom-tag-browser-table tr{color:hsl(var(--foreground));padding-left:10px;padding-right:10px;white-space:nowrap}.stick{overflow:clip;position:sticky}.dicom-tag-browser-content{overflow:hidden}.dicom-tag-browser-instance-range .range{height:20px}.dicom-tag-browser-instance-range{padding:20px 0}.dicom-tag-browser-table td.dicom-tag-browser-table-center{text-align:center}.dicom-tag-browser-table th{padding-left:10px;padding-right:10px;text-align:center}.dicom-tag-browser-table th.dicom-tag-browser-table-left{text-align:left}
2
- .chrome-picker{background:#0000!important;-webkit-box-shadow:none!important;box-shadow:none!important}
2
+ .chrome-picker{background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}