@aics/vole-app 2.11.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 (135) hide show
  1. package/LICENSE +33 -0
  2. package/LICENSE.txt +26 -0
  3. package/README.md +45 -0
  4. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-500.eot +0 -0
  5. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-500.js +2337 -0
  6. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-500.svg +604 -0
  7. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-500.ttf +0 -0
  8. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-500.woff +0 -0
  9. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-500.woff2 +0 -0
  10. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-700.eot +0 -0
  11. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-700.js +2336 -0
  12. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-700.svg +604 -0
  13. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-700.ttf +0 -0
  14. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-700.woff +0 -0
  15. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-700.woff2 +0 -0
  16. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-regular.eot +0 -0
  17. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-regular.js +2337 -0
  18. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-regular.svg +604 -0
  19. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-regular.ttf +0 -0
  20. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-regular.woff +0 -0
  21. package/es/aics-image-viewer/assets/fonts/open-sans/open-sans-regular.woff2 +0 -0
  22. package/es/aics-image-viewer/assets/icons/axes.js +20 -0
  23. package/es/aics-image-viewer/assets/icons/boundingBox.js +18 -0
  24. package/es/aics-image-viewer/assets/icons/camera.js +15 -0
  25. package/es/aics-image-viewer/assets/icons/channels.js +15 -0
  26. package/es/aics-image-viewer/assets/icons/closePanel.js +18 -0
  27. package/es/aics-image-viewer/assets/icons/download.js +17 -0
  28. package/es/aics-image-viewer/assets/icons/dropdownArrow.js +15 -0
  29. package/es/aics-image-viewer/assets/icons/index.js +24 -0
  30. package/es/aics-image-viewer/assets/icons/metadata.js +15 -0
  31. package/es/aics-image-viewer/assets/icons/preferences.js +15 -0
  32. package/es/aics-image-viewer/assets/icons/resetView.js +16 -0
  33. package/es/aics-image-viewer/assets/icons/svg.d.js +0 -0
  34. package/es/aics-image-viewer/assets/icons/turnTable.js +18 -0
  35. package/es/aics-image-viewer/assets/styles/animatedEllipsis.css +21 -0
  36. package/es/aics-image-viewer/assets/styles/globals.css +35 -0
  37. package/es/aics-image-viewer/assets/styles/noui-slider-override.css +1 -0
  38. package/es/aics-image-viewer/assets/styles/variables.css +1 -0
  39. package/es/aics-image-viewer/components/App/ChannelUpdater.js +96 -0
  40. package/es/aics-image-viewer/components/App/index.js +849 -0
  41. package/es/aics-image-viewer/components/App/styles.css +60 -0
  42. package/es/aics-image-viewer/components/App/types.js +1 -0
  43. package/es/aics-image-viewer/components/AxisClipSliders/index.js +285 -0
  44. package/es/aics-image-viewer/components/AxisClipSliders/styles.css +257 -0
  45. package/es/aics-image-viewer/components/BottomPanel/index.js +70 -0
  46. package/es/aics-image-viewer/components/BottomPanel/styles.css +85 -0
  47. package/es/aics-image-viewer/components/CellViewerCanvasWrapper/index.js +113 -0
  48. package/es/aics-image-viewer/components/CellViewerCanvasWrapper/styles.css +12 -0
  49. package/es/aics-image-viewer/components/ChannelsWidget.js +100 -0
  50. package/es/aics-image-viewer/components/ChannelsWidgetRow/index.js +158 -0
  51. package/es/aics-image-viewer/components/ChannelsWidgetRow/styles.css +38 -0
  52. package/es/aics-image-viewer/components/ColorPicker.js +120 -0
  53. package/es/aics-image-viewer/components/ControlPanel/index.js +180 -0
  54. package/es/aics-image-viewer/components/ControlPanel/styles.css +169 -0
  55. package/es/aics-image-viewer/components/CustomizeWidget.js +46 -0
  56. package/es/aics-image-viewer/components/ErrorAlert/index.js +144 -0
  57. package/es/aics-image-viewer/components/ErrorAlert/styles.css +22 -0
  58. package/es/aics-image-viewer/components/GlobalVolumeControls.js +38 -0
  59. package/es/aics-image-viewer/components/MetadataViewer/index.js +99 -0
  60. package/es/aics-image-viewer/components/MetadataViewer/styles.css +81 -0
  61. package/es/aics-image-viewer/components/StyleProvider/index.js +210 -0
  62. package/es/aics-image-viewer/components/TfEditor/index.js +584 -0
  63. package/es/aics-image-viewer/components/TfEditor/styles.css +88 -0
  64. package/es/aics-image-viewer/components/Toolbar/DownloadButton.js +55 -0
  65. package/es/aics-image-viewer/components/Toolbar/ViewModeRadioButtons.js +22 -0
  66. package/es/aics-image-viewer/components/Toolbar/index.js +274 -0
  67. package/es/aics-image-viewer/components/Toolbar/styles.css +241 -0
  68. package/es/aics-image-viewer/components/ViewerStateProvider/ResetStateProvider.js +160 -0
  69. package/es/aics-image-viewer/components/ViewerStateProvider/index.js +261 -0
  70. package/es/aics-image-viewer/components/ViewerStateProvider/types.js +1 -0
  71. package/es/aics-image-viewer/components/shared/NumericInput/index.js +147 -0
  72. package/es/aics-image-viewer/components/shared/NumericInput/styles.css +64 -0
  73. package/es/aics-image-viewer/components/shared/SharedCheckBox.js +17 -0
  74. package/es/aics-image-viewer/components/shared/SliderRow/index.js +31 -0
  75. package/es/aics-image-viewer/components/shared/SliderRow/styles.css +19 -0
  76. package/es/aics-image-viewer/components/shared/SmarterSlider.js +40 -0
  77. package/es/aics-image-viewer/components/shared/ViewerIcon.js +22 -0
  78. package/es/aics-image-viewer/shared/colorPalette.js +19 -0
  79. package/es/aics-image-viewer/shared/constants.js +164 -0
  80. package/es/aics-image-viewer/shared/enums.js +18 -0
  81. package/es/aics-image-viewer/shared/types.js +6 -0
  82. package/es/aics-image-viewer/shared/utils/colorRepresentations.js +16 -0
  83. package/es/aics-image-viewer/shared/utils/controlPointsToLut.js +182 -0
  84. package/es/aics-image-viewer/shared/utils/hooks.js +51 -0
  85. package/es/aics-image-viewer/shared/utils/httpClient.js +57 -0
  86. package/es/aics-image-viewer/shared/utils/playControls.js +97 -0
  87. package/es/aics-image-viewer/shared/utils/sceneStore.js +140 -0
  88. package/es/aics-image-viewer/shared/utils/sliderValuesToImageValues.js +36 -0
  89. package/es/aics-image-viewer/shared/utils/test/viewerChannelSettings.test.js +132 -0
  90. package/es/aics-image-viewer/shared/utils/utilsService.js +54 -0
  91. package/es/aics-image-viewer/shared/utils/viewerChannelSettings.js +152 -0
  92. package/es/aics-image-viewer/shared/utils/viewerState.js +69 -0
  93. package/es/aics-image-viewer/shared/utils/webgl-debug.js +1103 -0
  94. package/es/index.js +4 -0
  95. package/package.json +130 -0
  96. package/type-declarations/aics-image-viewer/assets/icons/index.d.ts +14 -0
  97. package/type-declarations/aics-image-viewer/components/App/ChannelUpdater.d.ts +16 -0
  98. package/type-declarations/aics-image-viewer/components/App/index.d.ts +6 -0
  99. package/type-declarations/aics-image-viewer/components/App/types.d.ts +45 -0
  100. package/type-declarations/aics-image-viewer/components/AxisClipSliders/index.d.ts +24 -0
  101. package/type-declarations/aics-image-viewer/components/BottomPanel/index.d.ts +11 -0
  102. package/type-declarations/aics-image-viewer/components/CellViewerCanvasWrapper/index.d.ts +33 -0
  103. package/type-declarations/aics-image-viewer/components/ChannelsWidget.d.ts +19 -0
  104. package/type-declarations/aics-image-viewer/components/ChannelsWidgetRow/index.d.ts +17 -0
  105. package/type-declarations/aics-image-viewer/components/ColorPicker.d.ts +13 -0
  106. package/type-declarations/aics-image-viewer/components/ControlPanel/index.d.ts +20 -0
  107. package/type-declarations/aics-image-viewer/components/CustomizeWidget.d.ts +15 -0
  108. package/type-declarations/aics-image-viewer/components/ErrorAlert/index.d.ts +12 -0
  109. package/type-declarations/aics-image-viewer/components/GlobalVolumeControls.d.ts +21 -0
  110. package/type-declarations/aics-image-viewer/components/MetadataViewer/index.d.ts +7 -0
  111. package/type-declarations/aics-image-viewer/components/StyleProvider/index.d.ts +5 -0
  112. package/type-declarations/aics-image-viewer/components/TfEditor/index.d.ts +19 -0
  113. package/type-declarations/aics-image-viewer/components/Toolbar/DownloadButton.d.ts +8 -0
  114. package/type-declarations/aics-image-viewer/components/Toolbar/ViewModeRadioButtons.d.ts +8 -0
  115. package/type-declarations/aics-image-viewer/components/Toolbar/index.d.ts +31 -0
  116. package/type-declarations/aics-image-viewer/components/ViewerStateProvider/ResetStateProvider.d.ts +34 -0
  117. package/type-declarations/aics-image-viewer/components/ViewerStateProvider/index.d.ts +33 -0
  118. package/type-declarations/aics-image-viewer/components/ViewerStateProvider/types.d.ts +105 -0
  119. package/type-declarations/aics-image-viewer/components/shared/NumericInput/index.d.ts +19 -0
  120. package/type-declarations/aics-image-viewer/components/shared/SharedCheckBox.d.ts +9 -0
  121. package/type-declarations/aics-image-viewer/components/shared/SliderRow/index.d.ts +17 -0
  122. package/type-declarations/aics-image-viewer/components/shared/SmarterSlider.d.ts +5 -0
  123. package/type-declarations/aics-image-viewer/components/shared/ViewerIcon.d.ts +9 -0
  124. package/type-declarations/aics-image-viewer/shared/constants.d.ts +40 -0
  125. package/type-declarations/aics-image-viewer/shared/enums.d.ts +15 -0
  126. package/type-declarations/aics-image-viewer/shared/types.d.ts +15 -0
  127. package/type-declarations/aics-image-viewer/shared/utils/colorRepresentations.d.ts +10 -0
  128. package/type-declarations/aics-image-viewer/shared/utils/controlPointsToLut.d.ts +53 -0
  129. package/type-declarations/aics-image-viewer/shared/utils/hooks.d.ts +14 -0
  130. package/type-declarations/aics-image-viewer/shared/utils/playControls.d.ts +27 -0
  131. package/type-declarations/aics-image-viewer/shared/utils/sceneStore.d.ts +17 -0
  132. package/type-declarations/aics-image-viewer/shared/utils/sliderValuesToImageValues.d.ts +10 -0
  133. package/type-declarations/aics-image-viewer/shared/utils/viewerChannelSettings.d.ts +46 -0
  134. package/type-declarations/aics-image-viewer/shared/utils/viewerState.d.ts +10 -0
  135. package/type-declarations/index.d.ts +7 -0
@@ -0,0 +1,99 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
7
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
10
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
11
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
12
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
13
+ import { RightOutlined } from "@ant-design/icons";
14
+ import React from "react";
15
+ import "./styles.css";
16
+ var isCategory = function isCategory(entry) {
17
+ return _typeof(entry) === "object" && entry !== null;
18
+ };
19
+ var sortCategoriesFirst = function sortCategoriesFirst(entry) {
20
+ if (!isCategory(entry) || Array.isArray(entry)) {
21
+ return entry;
22
+ }
23
+ var cats = {};
24
+ var vals = {};
25
+ for (var key in entry) {
26
+ if (isCategory(entry[key])) {
27
+ cats[key] = entry[key];
28
+ } else {
29
+ vals[key] = entry[key];
30
+ }
31
+ }
32
+ return _objectSpread(_objectSpread({}, cats), vals);
33
+ };
34
+
35
+ /** Component to hold collapse state */
36
+ var MetadataCategory = function MetadataCategory(_ref) {
37
+ var metadata = _ref.metadata,
38
+ title = _ref.title;
39
+ var _React$useState = React.useState(true),
40
+ _React$useState2 = _slicedToArray(_React$useState, 2),
41
+ collapsed = _React$useState2[0],
42
+ setCollapsed = _React$useState2[1];
43
+ var collapsedClass = collapsed ? " metadata-collapse-collapsed" : "";
44
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("tr", {
45
+ className: "metadata-row-collapse-title" + collapsedClass,
46
+ onClick: function onClick() {
47
+ return setCollapsed(!collapsed);
48
+ }
49
+ }, /*#__PURE__*/React.createElement("td", {
50
+ colSpan: 2
51
+ }, /*#__PURE__*/React.createElement("span", {
52
+ className: "metadata-collapse-caret"
53
+ }, /*#__PURE__*/React.createElement(RightOutlined, {
54
+ style: {
55
+ transform: "rotate(".concat(collapsed ? 0 : 90, "deg)")
56
+ }
57
+ })), title)), /*#__PURE__*/React.createElement("tr", {
58
+ className: "metadata-row-collapse-content" + collapsedClass
59
+ }, /*#__PURE__*/React.createElement("td", {
60
+ className: "metadata-collapse-content",
61
+ colSpan: 2
62
+ }, /*#__PURE__*/React.createElement(MetadataTable, {
63
+ metadata: metadata
64
+ }))));
65
+ };
66
+ var MetadataTable = function MetadataTable(_ref2) {
67
+ var metadata = _ref2.metadata,
68
+ topLevel = _ref2.topLevel;
69
+ var metadataKeys = Object.keys(metadata);
70
+ var metadataIsArray = Array.isArray(metadata);
71
+ return /*#__PURE__*/React.createElement("table", {
72
+ className: "viewer-metadata-table" + (topLevel ? " metadata-top-level" : "")
73
+ }, /*#__PURE__*/React.createElement("tbody", null, metadataKeys.map(function (key, idx) {
74
+ var metadataValue = sortCategoriesFirst(metadataIsArray ? metadata[idx] : metadata[key]);
75
+ if (isCategory(metadataValue)) {
76
+ return /*#__PURE__*/React.createElement(MetadataCategory, {
77
+ key: key,
78
+ metadata: metadataValue,
79
+ title: key
80
+ });
81
+ } else {
82
+ return /*#__PURE__*/React.createElement("tr", {
83
+ key: key
84
+ }, /*#__PURE__*/React.createElement("td", {
85
+ className: "metadata-key"
86
+ }, key), /*#__PURE__*/React.createElement("td", {
87
+ className: "metadata-value"
88
+ }, metadataValue + ""));
89
+ }
90
+ })));
91
+ };
92
+ var MetadataViewer = function MetadataViewer(_ref3) {
93
+ var metadata = _ref3.metadata;
94
+ return /*#__PURE__*/React.createElement(MetadataTable, {
95
+ metadata: metadata,
96
+ topLevel: true
97
+ });
98
+ };
99
+ export default MetadataViewer;
@@ -0,0 +1,81 @@
1
+ .viewer-metadata-table{
2
+ width:100%;
3
+ table-layout:fixed;
4
+ box-sizing:border-box;
5
+ border-spacing:0;
6
+ border-collapse:collapse;
7
+ }
8
+
9
+ .viewer-metadata-table tbody{
10
+ padding:10px;
11
+ }
12
+
13
+ .viewer-metadata-table.metadata-top-level{
14
+ border-bottom:1px solid var(--color-controlpanel-border);
15
+ }
16
+
17
+ .viewer-metadata-table.metadata-top-level > tbody > tr.metadata-row-collapse-title:first-child{
18
+ border-top:none;
19
+ }
20
+
21
+ .viewer-metadata-table tr{
22
+ color:var(--color-controlpanel-text);
23
+ }
24
+
25
+ .viewer-metadata-table tr:nth-child(odd):not(.metadata-row-collapse-content):not(.metadata-row-collapse-title){
26
+ background-color:#3a3a3a;
27
+ }
28
+
29
+ .viewer-metadata-table tr.metadata-row-collapse-title{
30
+ color:var(--color-text-section);
31
+ background-color:var(--color-controlpanel-section-bg);
32
+ }
33
+
34
+ .viewer-metadata-table tr.metadata-row-collapse-title:not(.metadata-collapse-collapsed) > td{
35
+ padding-bottom:7px;
36
+ }
37
+
38
+ .viewer-metadata-table tr.metadata-row-collapse-content.metadata-collapse-collapsed{
39
+ visibility:collapse;
40
+ height:0px;
41
+ display:none;
42
+ }
43
+
44
+ .viewer-metadata-table tr tr.metadata-row-collapse-title,
45
+ .viewer-metadata-table tr.metadata-row-collapse-content + tr{
46
+ border-top:1px solid var(--color-controlpanel-border);
47
+ }
48
+
49
+ .viewer-metadata-table td{
50
+ padding:8px 0;
51
+ overflow-wrap:break-word;
52
+ }
53
+
54
+ .viewer-metadata-table td .metadata-collapse-caret{
55
+ cursor:pointer;
56
+ padding-left:16px;
57
+ padding-right:10px;
58
+ }
59
+
60
+ .viewer-metadata-table td.metadata-key{
61
+ padding-left:16px;
62
+ }
63
+
64
+ .viewer-metadata-table td.metadata-value{
65
+ text-align:right;
66
+ padding-left:20px;
67
+ padding-right:16px;
68
+ }
69
+
70
+ .viewer-metadata-table td:last-child{
71
+ padding-right:8px;
72
+ }
73
+
74
+ .viewer-metadata-table td.metadata-collapse-content{
75
+ padding:0;
76
+ padding-left:24px;
77
+ }
78
+
79
+ .viewer-metadata-table td i{
80
+ transition:transform 0.1s linear;
81
+ }
@@ -0,0 +1,210 @@
1
+ var _templateObject, _templateObject2;
2
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
3
+ import { theme as AntTheme, ConfigProvider } from "antd";
4
+ import React from "react";
5
+ import styled, { css } from "styled-components";
6
+ var palette = {
7
+ black: "#000000",
8
+ white: "#ffffff",
9
+ ltGrey: "#bfbfbf",
10
+ purpleGrey: "#aeacae",
11
+ medLtGreyAlt: "#a0a0a0",
12
+ medGrey: "#6e6e6e",
13
+ medDarkGrey: "#4b4b4b",
14
+ darkGrey: "#313131",
15
+ veryDarkGrey: "#222222",
16
+ ltPurple: "#aa88ed",
17
+ medPurple: "#9e6aff",
18
+ darkPurple: "#7e46d4",
19
+ veryDarkPurple: "#5f369f",
20
+ veryLtPurple: "#e7e4f2",
21
+ brightRed: "#ff4d4d",
22
+ brightGreen: "#61d900",
23
+ brightBlue: "#0099ff"
24
+ };
25
+ var theme = {
26
+ colors: {
27
+ theme: {
28
+ primary: palette.medPurple,
29
+ primaryLt: palette.ltPurple,
30
+ primaryDk: palette.darkPurple,
31
+ success: palette.brightGreen,
32
+ error: palette.brightRed,
33
+ warning: palette.brightRed,
34
+ info: palette.brightBlue
35
+ },
36
+ text: {
37
+ link: palette.brightBlue,
38
+ header: palette.ltGrey,
39
+ section: palette.white,
40
+ body: palette.ltGrey,
41
+ error: palette.brightRed,
42
+ selectionBg: palette.medPurple,
43
+ selectionText: palette.white
44
+ },
45
+ header: {
46
+ bg: palette.veryDarkGrey,
47
+ border: palette.medGrey,
48
+ title: palette.white,
49
+ hoverTitle: palette.white
50
+ },
51
+ // TODO: Buttons could have a shared type
52
+ // with properties for bg, text, and outline across hover/focus,
53
+ // active, and disabled states. This could then be defined for
54
+ // each of the button types (primary, secondary, tertiary).
55
+ button: {
56
+ primary: {
57
+ bg: palette.medPurple,
58
+ text: palette.white,
59
+ hoverBg: palette.ltPurple,
60
+ activeOutline: palette.medPurple,
61
+ disabledBg: palette.medDarkGrey
62
+ },
63
+ link: {
64
+ text: palette.medPurple
65
+ },
66
+ secondary: {
67
+ bg: "transparent",
68
+ text: palette.medPurple,
69
+ outline: palette.medPurple
70
+ },
71
+ tertiary: {
72
+ bg: "transparent",
73
+ text: palette.ltGrey,
74
+ outline: palette.ltGrey,
75
+ hoverOutline: palette.ltPurple,
76
+ hoverText: palette.ltPurple,
77
+ activeOutline: palette.medPurple,
78
+ activatedText: palette.white,
79
+ activatedBg: palette.medDarkGrey,
80
+ activatedOutline: palette.purpleGrey,
81
+ disabledText: palette.medGrey
82
+ }
83
+ },
84
+ checkbox: {
85
+ bg: palette.medGrey,
86
+ hoverBg: palette.medLtGreyAlt,
87
+ text: palette.white
88
+ },
89
+ controlPanel: {
90
+ bg: palette.darkGrey,
91
+ border: palette.medGrey,
92
+ sectionText: palette.white,
93
+ text: palette.ltGrey,
94
+ sectionBg: palette.medDarkGrey,
95
+ drawerBg: palette.veryDarkGrey,
96
+ rampSlider: palette.medPurple
97
+ },
98
+ toolbar: {
99
+ buttonBg: "#000000cc"
100
+ },
101
+ landingPage: {
102
+ bg: palette.veryDarkGrey,
103
+ bgAlt: palette.darkGrey,
104
+ text: palette.ltGrey,
105
+ bannerBg: "#020202DB"
106
+ },
107
+ statusFlag: {
108
+ border: palette.medGrey,
109
+ text: palette.ltGrey
110
+ },
111
+ layout: {
112
+ dividers: palette.medGrey,
113
+ split: palette.white
114
+ },
115
+ menu: {
116
+ hoverText: palette.white,
117
+ hoverBg: palette.ltPurple,
118
+ selectedText: palette.white,
119
+ selectedBg: palette.medGrey,
120
+ textPlaceholder: palette.ltPurple
121
+ },
122
+ tooltip: {
123
+ bg: palette.black
124
+ },
125
+ modal: {
126
+ maskBg: "#000000cc",
127
+ bg: palette.veryDarkGrey,
128
+ border: palette.medDarkGrey
129
+ }
130
+ },
131
+ fonts: {
132
+ // Include web + local font files
133
+ family: "'Open Sans', 'Open Sans Local', Arial, sans-serif, apple-system, BlinkMacSystemFont, 'Segoe UI','PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"
134
+ }
135
+ };
136
+ /** Makes theme styling available to child components via CSS variables. */
137
+ var CssProvider = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 100%;\n height: 100%;\n\n ", "\n\n h1, h2, h3, h4, p {\n font-family: var(--font-family);\n }\n\n h1 {\n color: var(--color-text-header);\n font-size: 28px;\n font-weight: 400;\n }\n\n h2 {\n color: var(--color-text-section);\n font-size: 19px;\n font-weight: 400;\n }\n\n h3 {\n color: var(--color-text-header);\n font-size: 16px;\n font-weight: 600;\n }\n\n h4 {\n color: var(--color-text-header);\n font-size: 14px;\n font-weight: 400;\n }\n\n p {\n color: var(--color-text-body);\n font-size: 14px;\n font-weight: 400;\n }\n\n a {\n color: var(--color-text-link);\n &:not(:focus-visible) {\n text-decoration: none;\n }\n\n &:focus-visible {\n text-decoration: underline;\n }\n }\n\n & *::selection {\n background-color: var(--color-text-selection-bg);\n color: var(--color-text-selection-text);\n }\n\n /** TODO: Go through these styles and see if we can use Ant ConfigProvider for them instead. */\n .ant-btn-link,\n .ant-btn-text,\n .ant-btn-primary,\n .ant-btn-icon-only {\n box-shadow: none;\n\n &:hover:not(:disabled),\n &:focus-visible:not(:disabled) {\n background-color: var(--color-button-primary-hover-bg);\n border-color: var(--color-button-primary-hover-bg);\n color: var(--color-button-primary-text);\n }\n\n &:active:not(:disabled) {\n background-color: var(--color-button-primary-hover-bg);\n border: 1px solid var(--color-button-primary-active-outline);\n color: var(--color-button-primary-text);\n }\n }\n\n /* Let us use buttons with type=\"text\" as purely semantic containers - don't bring any styling! */\n .ant-btn-text {\n width: unset;\n height: unset;\n padding: unset;\n\n &:hover:not(:disabled),\n &:focus-visible:not(:disabled) {\n background-color: unset;\n border-color: transparent;\n }\n }\n\n .ant-btn-icon-only:disabled {\n color: var(--color-button-icon-disabled-text);\n }\n\n .ant-btn-link:not(:disabled) {\n // Change from default blue link text\n color: var(--color-button-link-text);\n }\n\n /**\n * Tertiary style buttons. Grey outline by default, turns to light\n * purple outline on hover.\n */\n .ant-btn-default:not(.ant-btn-icon-only) {\n background-color: var(--color-button-tertiary-bg);\n color: var(--color-button-tertiary-text);\n border-color: var(--color-button-tertiary-outline);\n\n &:hover:not(:disabled),\n &:focus-visible:not(:disabled) {\n background-color: transparent;\n border-color: var(--color-button-tertiary-hover-bg);\n color: var(--color-button-tertiary-hover-text);\n }\n\n &:active:not(:disabled) {\n background-color: transparent;\n border-color: var(--color-button-tertiary-active-outline);\n color: var(--color-button-tertiary-active-text);\n }\n }\n\n // Overrides for checkbox styling\n & .ant-checkbox-input {\n &:hover,\n &:focus-visible {\n border: 1px solid white;\n }\n }\n\n & .ant-checkbox.ant-checkbox-checked {\n background-color: var(--color-checkbox-bg);\n }\n\n .ant-checkbox-inner {\n background-color: transparent;\n }\n\n & .ant-checkbox-indeterminate.checked .ant-checkbox-inner {\n background-color: var(--color-checkbox-bg);\n }\n\n // Add outlines to modals and dropdowns\n & .ant-select-dropdown,\n & .ant-dropdown-menu,\n & .ant-modal-content {\n border: 1px solid var(--color-modal-border);\n }\n\n // Force active/hovered text to be white instead of grey for better contrast\n & .ant-dropdown-menu-item-active {\n color: var(--color-menu-hover-text);\n }\n\n // Remove padding in dropdown menus and make items reactangular + flush with the edge\n & .ant-dropdown-menu,\n & .ant-select-dropdown {\n padding: 0;\n overflow: hidden;\n\n & .ant-dropdown-menu-item,\n & .ant-select-item {\n border-radius: 0;\n }\n }\n"])), function (_ref) {
138
+ var $theme = _ref.$theme;
139
+ return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n /* Component and color variables. */\n // TODO: Fix inconsistent use of border vs. outline\n // TODO: Remove variables that aren't used in other CSS files. These should be set directly\n // from the $theme object to reduce unnecessary variables.\n --color-text-link: ", ";\n --color-text-header: ", ";\n --color-text-section: ", ";\n --color-text-body: ", ";\n --color-text-error: ", ";\n\n --color-text-selection-bg: ", ";\n --color-text-selection-text: ", ";\n\n --color-header-title: ", ";\n --color-header-hover-title: ", ";\n --color-header-bg: ", ";\n --color-header-border: ", ";\n\n --color-button-primary-bg: ", ";\n --color-button-primary-text: ", ";\n --color-button-primary-hover-bg: ", ";\n --color-button-primary-active-bg: ", ";\n --color-button-primary-active-outline: ", ";\n --color-button-primary-disabled-bg: ", ";\n\n --color-button-link-text: ", ";\n\n --color-button-secondary-bg: ", ";\n --color-button-secondary-text: ", ";\n --color-button-secondary-outline: ", ";\n\n --color-button-tertiary-bg: transparent;\n --color-button-tertiary-text: ", ";\n --color-button-tertiary-outline: ", ";\n --color-button-tertiary-hover-outline: ", ";\n --color-button-tertiary-hover-text: ", ";\n --color-button-tertiary-active-outline: ", ";\n --color-button-tertiary-active-text: ", ";\n\n --color-button-icon-disabled-text: ", ";\n --color-button-icon-disabled-text: ", ";\n --color-button-icon-activated-text: ", ";\n --color-button-icon-activated-bg: ", ";\n --color-button-icon-activated-outline: ", ";\n\n --color-toolbar-button-bg: ", ";\n\n --color-controlpanel-bg: ", ";\n --color-controlpanel-border: ", ";\n --color-controlpanel-section-text: ", ";\n --color-controlpanel-text: ", ";\n --color-controlpanel-section-bg: ", ";\n --color-controlpanel-drawer-bg: ", ";\n --color-controlpanel-ramp-slider: ", ";\n\n --color-landingpage-bg: ", ";\n --color-landingpage-bg-alt: ", ";\n --color-landingpage-text: ", ";\n --color-landingpage-banner-highlight-bg: ", ";\n\n --color-statusflag-border: ", ";\n --color-statusflag-text: ", ";\n\n --color-layout-dividers: ", ";\n\n --color-modal-border: ", ";\n\n --color-menu-hover-text: ", ";\n --color-menu-selected-text: ", ";\n\n --color-checkbox-bg: ", ";\n\n --font-family: ", ";\n "])), $theme.colors.text.link, $theme.colors.text.header, $theme.colors.text.section, $theme.colors.text.body, $theme.colors.text.error, $theme.colors.text.selectionBg, $theme.colors.text.selectionText, $theme.colors.header.title, $theme.colors.header.hoverTitle, $theme.colors.header.bg, $theme.colors.header.border, $theme.colors.button.primary.bg, $theme.colors.button.primary.text, $theme.colors.button.primary.hoverBg, $theme.colors.button.primary.hoverBg, $theme.colors.button.primary.activeOutline, $theme.colors.button.primary.disabledBg, $theme.colors.button.link.text, $theme.colors.button.secondary.bg, $theme.colors.button.secondary.text, $theme.colors.button.secondary.outline, $theme.colors.button.tertiary.text, $theme.colors.button.tertiary.outline, $theme.colors.button.tertiary.hoverOutline, $theme.colors.button.tertiary.hoverText, $theme.colors.button.tertiary.activeOutline, $theme.colors.button.tertiary.hoverText, $theme.colors.button.tertiary.disabledText, $theme.colors.button.tertiary.disabledText, $theme.colors.button.tertiary.activatedText, $theme.colors.button.tertiary.activatedBg, $theme.colors.button.tertiary.activatedOutline, $theme.colors.toolbar.buttonBg, $theme.colors.controlPanel.bg, $theme.colors.controlPanel.border, $theme.colors.controlPanel.sectionText, $theme.colors.controlPanel.text, $theme.colors.controlPanel.sectionBg, $theme.colors.controlPanel.drawerBg, $theme.colors.controlPanel.rampSlider, $theme.colors.landingPage.bg, $theme.colors.landingPage.bgAlt, $theme.colors.landingPage.text, $theme.colors.landingPage.bannerBg, $theme.colors.statusFlag.border, $theme.colors.statusFlag.text, $theme.colors.layout.dividers, $theme.colors.modal.border, $theme.colors.menu.hoverText, $theme.colors.menu.selectedText, $theme.colors.checkbox.bg, $theme.fonts.family);
140
+ });
141
+
142
+ /**
143
+ * Provides CSS variables and global styling for the image viewer.
144
+ */
145
+ export default function StyleProvider(props) {
146
+ var darkAlgorithm = AntTheme.darkAlgorithm;
147
+ return /*#__PURE__*/React.createElement(ConfigProvider, {
148
+ theme: {
149
+ algorithm: darkAlgorithm,
150
+ token: {
151
+ colorPrimary: theme.colors.theme.primary,
152
+ colorPrimaryHover: theme.colors.theme.primaryLt,
153
+ colorLink: theme.colors.text.link,
154
+ colorBgBase: theme.colors.controlPanel.bg,
155
+ colorBgContainer: "transparent",
156
+ colorSplit: theme.colors.layout.split,
157
+ colorPrimaryTextHover: theme.colors.text.selectionText,
158
+ fontWeightStrong: 400,
159
+ colorBgElevated: palette.darkGrey,
160
+ controlItemBgHover: theme.colors.menu.hoverBg,
161
+ controlItemBgActiveHover: theme.colors.menu.hoverBg,
162
+ controlItemBgActive: theme.colors.menu.selectedBg,
163
+ borderRadius: 4
164
+ },
165
+ components: {
166
+ Button: {
167
+ defaultShadow: "",
168
+ primaryColor: theme.colors.button.primary.text,
169
+ defaultHoverBg: theme.colors.button.secondary.bg,
170
+ defaultActiveBg: theme.colors.button.secondary.bg,
171
+ defaultActiveBorderColor: theme.colors.button.tertiary.activeOutline
172
+ },
173
+ Card: {
174
+ borderRadiusLG: 0,
175
+ headerHeight: 48
176
+ },
177
+ Collapse: {
178
+ borderRadiusLG: 0,
179
+ colorTextHeading: theme.colors.text.section
180
+ },
181
+ Divider: {
182
+ colorSplit: theme.colors.layout.dividers,
183
+ marginLG: 0
184
+ },
185
+ Layout: {
186
+ siderBg: theme.colors.controlPanel.bg
187
+ },
188
+ Checkbox: {
189
+ borderRadiusSM: 2,
190
+ colorBgContainer: theme.colors.checkbox.bg,
191
+ colorPrimary: theme.colors.checkbox.bg,
192
+ colorPrimaryHover: theme.colors.checkbox.hoverBg,
193
+ colorText: theme.colors.checkbox.text
194
+ },
195
+ Tooltip: {
196
+ colorBgSpotlight: theme.colors.tooltip.bg
197
+ },
198
+ Modal: {
199
+ colorBgMask: theme.colors.modal.maskBg,
200
+ contentBg: theme.colors.modal.bg,
201
+ headerBg: theme.colors.modal.bg,
202
+ footerBg: theme.colors.modal.bg,
203
+ titleFontSize: 19
204
+ }
205
+ }
206
+ }
207
+ }, /*#__PURE__*/React.createElement(CssProvider, {
208
+ $theme: theme
209
+ }, props.children));
210
+ }