dotdata_widgets 0.1.1 → 0.1.3

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 (161) hide show
  1. package/README.md +27 -3
  2. package/css/colors.css +4 -0
  3. package/css/typography.css +9 -0
  4. package/css/widget.css +26 -4
  5. package/dist/index.js +75 -1
  6. package/lib/components/accordion/Accordion.js +47 -13
  7. package/lib/components/accordion/index.js +18 -1
  8. package/lib/components/input/index.js +18 -1
  9. package/lib/components/input/input.js +11 -3
  10. package/lib/extension.js +18 -1
  11. package/lib/feature/feature-details/FeatureCorrelatedFeaturesTable.js +22 -0
  12. package/lib/feature/feature-details/FeatureDistributionChart.js +218 -0
  13. package/lib/feature/feature-details/FeatureStatisticsTable.js +44 -0
  14. package/lib/feature/feature-details/index.js +20 -0
  15. package/lib/feature/feature-explanation/FeatureExplanation.js +48 -0
  16. package/lib/feature/feature-explanation/components/ColoredExplanationBlock.js +36 -0
  17. package/lib/feature/feature-explanation/components/ColumnExplanationBlock.js +12 -0
  18. package/lib/feature/feature-explanation/components/DataSlotExplanationBlock.js +12 -0
  19. package/lib/feature/feature-explanation/components/PetExplanationBlock.js +11 -0
  20. package/lib/feature/feature-explanation/components/TextExplanationBlock.js +10 -0
  21. package/lib/feature/feature-explanation/components/TextWithDataSlotContextExplanationBlock.js +10 -0
  22. package/lib/feature/feature-explanation/components/TopicExplanationBlock.js +10 -0
  23. package/lib/feature/feature-explanation/components/UnknownExplanationBlock.js +10 -0
  24. package/lib/feature-descriptor/context/fd-domains-descriptions-selection.context.js +37 -0
  25. package/lib/feature-descriptor/context/index.js +18 -0
  26. package/lib/feature-descriptor/domains-descriptors-tree/components/column-tree-item.js +16 -0
  27. package/lib/feature-descriptor/domains-descriptors-tree/components/descriptions-tree-item.js +50 -0
  28. package/lib/feature-descriptor/domains-descriptors-tree/components/index.js +18 -0
  29. package/lib/feature-descriptor/domains-descriptors-tree/components/tree-item-label.js +56 -0
  30. package/lib/feature-descriptor/domains-descriptors-tree/components/type-tree-item.js +19 -0
  31. package/lib/feature-descriptor/domains-descriptors-tree/context/domains-descriptions-tree-item-selection-context.js +56 -0
  32. package/lib/feature-descriptor/domains-descriptors-tree/context/index.js +18 -0
  33. package/lib/feature-descriptor/domains-descriptors-tree/domains-descriptions-tree.js +44 -0
  34. package/lib/feature-descriptor/domains-descriptors-tree/index.js +21 -0
  35. package/lib/feature-descriptor/domains-descriptors-tree/models/domains-descriptions-tree.model.js +37 -0
  36. package/lib/feature-descriptor/domains-descriptors-tree/models/index.js +18 -0
  37. package/lib/feature-descriptor/domains-descriptors-tree/utils/create-domain-predicate.js +16 -0
  38. package/lib/feature-descriptor/domains-descriptors-tree/utils/filter-domains-descriptions-tree.js +23 -0
  39. package/lib/feature-descriptor/domains-descriptors-tree/utils/index.js +19 -0
  40. package/lib/feature-descriptor/feature-details/FeatureCorrelatedFeaturesTable.js +21 -13
  41. package/lib/feature-descriptor/feature-details/FeatureDistributionChart.js +36 -8
  42. package/lib/feature-descriptor/feature-details/FeatureStatisticsTable.js +25 -17
  43. package/lib/feature-descriptor/feature-details/index.js +20 -3
  44. package/lib/feature-descriptor/feature-explanation/FeatureExplanation.js +40 -32
  45. package/lib/feature-descriptor/feature-explanation/components/ColoredExplanationBlock.js +17 -9
  46. package/lib/feature-descriptor/feature-explanation/components/ColumnExplanationBlock.js +12 -4
  47. package/lib/feature-descriptor/feature-explanation/components/DataSlotExplanationBlock.js +12 -4
  48. package/lib/feature-descriptor/feature-explanation/components/PetExplanationBlock.js +11 -3
  49. package/lib/feature-descriptor/feature-explanation/components/TextExplanationBlock.js +10 -2
  50. package/lib/feature-descriptor/feature-explanation/components/TextWithDataSlotContextExplanationBlock.js +10 -2
  51. package/lib/feature-descriptor/feature-explanation/components/TopicExplanationBlock.js +10 -2
  52. package/lib/feature-descriptor/feature-explanation/components/UnknownExplanationBlock.js +10 -2
  53. package/lib/feature-descriptor/feature-exploration-path/exploration-path-header.js +38 -0
  54. package/lib/feature-descriptor/feature-exploration-path/exploration-path-join-list.js +28 -0
  55. package/lib/feature-descriptor/feature-exploration-path/index.js +19 -0
  56. package/lib/feature-descriptors-domain/context/feature-domain-descriptions-selection.context.js +37 -0
  57. package/lib/feature-descriptors-domain/context/feature-domain-selection.context.js +37 -0
  58. package/lib/feature-descriptors-domain/context/index.js +19 -0
  59. package/lib/feature-descriptors-domain/exploration-path/exploration-path-header.js +15 -7
  60. package/lib/feature-descriptors-domain/exploration-path/exploration-path-join-list.js +11 -3
  61. package/lib/feature-descriptors-domain/exploration-path/index.js +19 -2
  62. package/lib/feature-descriptors-domain/fd-grouped-domain-tree.js +81 -0
  63. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/column-tree-item.js +17 -0
  64. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/descriptions-tree-item.js +49 -0
  65. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/index.js +18 -0
  66. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/selection-indicator-with-label.js +40 -0
  67. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/type-tree-item.js +16 -0
  68. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/feature-descriptor-domain-descriptions-context.js +43 -0
  69. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/feature-descriptor-domain-descriptions-tree.js +57 -0
  70. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/index.js +18 -0
  71. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/column-tree-item.js +17 -0
  72. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/description-tree-item.js +2 -0
  73. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/descriptions-tree-item.js +49 -0
  74. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/index.js +18 -0
  75. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/selection-indicator-with-label.js +19 -0
  76. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/tree-item-label.js +15 -0
  77. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/tree-level-item.js +54 -0
  78. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/type-tree-item.js +16 -0
  79. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/feature-descriptor-domain-descriptions-tree.js +55 -0
  80. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/feature-descriptor-domain-descriptions-tree.model.js +2 -0
  81. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/index.js +18 -0
  82. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/utils/filter-domain-descriptions.js +21 -0
  83. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/utils/index.js +18 -0
  84. package/lib/feature-descriptors-domain/feature-descriptor-grouped-domain-tree.js +87 -0
  85. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/column-tree-item.js +16 -0
  86. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/descriptions-tree-item.js +50 -0
  87. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/index.js +18 -0
  88. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/selection-indicator-with-label.js +67 -0
  89. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/type-tree-item.js +19 -0
  90. package/lib/feature-descriptors-domain/feature-domain-descriptions/feature-domain-descriptions-context.js +37 -0
  91. package/lib/feature-descriptors-domain/feature-domain-descriptions/feature-domain-descriptions-tree.js +51 -0
  92. package/lib/feature-descriptors-domain/feature-domain-descriptions/index.js +18 -0
  93. package/lib/feature-descriptors-domain/feature-exploration-path/exploration-path-header.js +38 -0
  94. package/lib/feature-descriptors-domain/feature-exploration-path/exploration-path-join-list.js +36 -0
  95. package/lib/feature-descriptors-domain/feature-exploration-path/index.js +19 -0
  96. package/lib/feature-descriptors-domain/grouped-domains-descriptions-list.js +28 -17
  97. package/lib/feature-descriptors-domain/selected-feature-domain-context.js +2 -0
  98. package/lib/feature-descriptors-domain/utils/filter-domain-descriptions.js +23 -0
  99. package/lib/feature-descriptors-domain/utils/filter-grouped-domain-descriptions.js +23 -0
  100. package/lib/feature-descriptors-domain/utils/index.js +18 -0
  101. package/lib/index.js +19 -2
  102. package/lib/models/column/column.js +3 -1
  103. package/lib/models/column/index.js +18 -1
  104. package/lib/models/feature/feature-histogram.js +8 -4
  105. package/lib/models/feature/feature-leaderboard.js +3 -1
  106. package/lib/models/feature/feature-metric.js +16 -0
  107. package/lib/models/feature/feature.js +3 -12
  108. package/lib/models/feature/index.js +20 -2
  109. package/lib/models/feature-descriptor/feature-descriptor.js +3 -0
  110. package/lib/models/feature-descriptor/feature-descriptors-domain.js +3 -0
  111. package/lib/models/feature-descriptor-domain/fd-domains-description.js +3 -0
  112. package/lib/models/feature-descriptor-domain/fd-join-description.js +3 -0
  113. package/lib/models/feature-descriptor-domain/index.js +19 -0
  114. package/lib/models/feature-descriptors-domain/fd-domain-description.js +9 -1
  115. package/lib/models/feature-descriptors-domain/fd-grouped-domain-descriptions.js +3 -1
  116. package/lib/models/feature-descriptors-domain/index.js +19 -2
  117. package/lib/models/feature-explanation/feature-explanation.model.js +6 -2
  118. package/lib/models/feature-explanation/index.js +18 -1
  119. package/lib/models/feature-leaderboard/feature-leaderboard.js +3 -1
  120. package/lib/models/feature-leaderboard/index.js +18 -1
  121. package/lib/models/feature-space/exploration-path.js +3 -0
  122. package/lib/models/feature-space/feature-space-description.js +3 -0
  123. package/lib/models/feature-space/feature-space.js +3 -1
  124. package/lib/models/feature-space/grouped-domains-descriptions.js +3 -0
  125. package/lib/models/feature-space/index.js +20 -1
  126. package/lib/models/index.js +1 -0
  127. package/lib/plugin.js +33 -7
  128. package/lib/utils/asserations.js +6 -1
  129. package/lib/utils/index.js +20 -3
  130. package/lib/utils/localize.js +8 -4
  131. package/lib/utils/object/extract-property.js +6 -1
  132. package/lib/utils/object/index.js +19 -2
  133. package/lib/utils/object/is-set.js +8 -2
  134. package/lib/utils/widget/index.js +19 -0
  135. package/lib/utils/widget/widget-model-context.js +38 -0
  136. package/lib/utils/widget/widget-model.js +30 -0
  137. package/lib/utils/widget-model/index.js +19 -0
  138. package/lib/utils/widget-model/widget-model-context.js +42 -0
  139. package/lib/utils/widget-model/widget-model.js +30 -0
  140. package/lib/utils/widget-theme/index.js +18 -0
  141. package/lib/utils/widget-theme/widget-theme.js +99 -0
  142. package/lib/version.js +6 -2
  143. package/lib/widgets/FeatureLeaderboardWidget.js +38 -42
  144. package/lib/widgets/FeatureSpaceWidget.js +42 -29
  145. package/lib/widgets/feature-leaderboard/FeatureLeaderboardEntries.js +17 -9
  146. package/lib/widgets/feature-leaderboard/FeatureLeaderboardOverview.js +15 -18
  147. package/lib/widgets/feature-leaderboard/FeatureLeaderboardView.js +22 -10
  148. package/lib/widgets/feature-leaderboard/entry-item/FeatureLeaderboardEntryDetails.js +22 -14
  149. package/lib/widgets/feature-leaderboard/entry-item/FeatureLeaderboardEntryItem.js +19 -11
  150. package/lib/widgets/feature-leaderboard/leaderboard-overview/overview-metric-slider.js +2 -0
  151. package/lib/widgets/feature-leaderboard/leaderboard-overview/overview-slider.js +62 -0
  152. package/lib/widgets/feature-space/FeatureDomainsDescriptions.js +82 -0
  153. package/lib/widgets/feature-space/FeatureExplorationPaths.js +14 -35
  154. package/lib/widgets/feature-space/FeatureSpaceDomain.js +75 -0
  155. package/lib/widgets/feature-space/FeatureSpaceDomainDescriptions.js +80 -0
  156. package/lib/widgets/feature-space/FeatureSpaceDomainsDescriptions.js +63 -28
  157. package/lib/widgets/feature-space/FeatureSpaceView.js +47 -8
  158. package/lib/widgets/index.js +20 -3
  159. package/package.json +31 -30
  160. package/LICENSE.txt +0 -27
  161. package/lib/widget.js +0 -34
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OverviewSlider = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const material_1 = require("@mui/material");
9
+ const MIN = 0;
10
+ const MAX = 1;
11
+ const STEP = 0.01;
12
+ const OverviewSlider = ({ value, setValue, label, labelTooltip, }) => {
13
+ const [localValue, setLocalValue] = react_1.default.useState(() => value);
14
+ react_1.default.useEffect(() => {
15
+ // !compare only value not types
16
+ // eslint-disable-next-line eqeqeq
17
+ if (localValue != value) {
18
+ setLocalValue(value);
19
+ }
20
+ }, [value]);
21
+ function onInputBlur() {
22
+ const val = Math.max(MIN, Math.min(MAX, Number(localValue)));
23
+ setLocalValue(val);
24
+ setNewValue(val);
25
+ }
26
+ function handleInputChange(event) {
27
+ setLocalValue(event.target.value);
28
+ setNewValue(event.target.value);
29
+ }
30
+ function setNewValue(v) {
31
+ const val = Number(v);
32
+ if (val !== value) {
33
+ setValue(val);
34
+ }
35
+ }
36
+ return (react_1.default.createElement("div", { style: {
37
+ display: 'inline-flex',
38
+ minWidth: '400px',
39
+ alignItems: 'center',
40
+ gap: '8px',
41
+ } },
42
+ react_1.default.createElement(material_1.Grid, { item: true },
43
+ react_1.default.createElement(material_1.Tooltip, { title: labelTooltip, placement: "bottom" },
44
+ react_1.default.createElement("span", { className: "grey-label label-bold" }, label))),
45
+ react_1.default.createElement(material_1.Grid, { item: true, sx: { maxWidth: '200px', width: '100%' } },
46
+ react_1.default.createElement(material_1.Slider, { size: "small", step: STEP, min: MIN, max: MAX, value: sliderValue(localValue), onChange: (e, value) => {
47
+ setLocalValue(value);
48
+ setNewValue(value);
49
+ } })),
50
+ react_1.default.createElement(material_1.Grid, { item: true },
51
+ react_1.default.createElement(material_1.Input, { value: localValue, size: "small", onChange: handleInputChange, onBlur: onInputBlur, inputProps: {
52
+ step: STEP,
53
+ min: MIN,
54
+ max: MAX,
55
+ type: 'number',
56
+ } }))));
57
+ };
58
+ exports.OverviewSlider = OverviewSlider;
59
+ function sliderValue(value) {
60
+ return typeof value === 'number' ? value : 0;
61
+ }
62
+ //# sourceMappingURL=overview-slider.js.map
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.FeatureDomainsDescriptions = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const input_1 = require("../../components/input");
29
+ const domains_descriptors_tree_1 = require("../../feature-descriptor/domains-descriptors-tree");
30
+ const headerWrapperStyle = {
31
+ display: 'flex',
32
+ justifyContent: 'space-between',
33
+ alignItems: 'center',
34
+ width: '100%',
35
+ };
36
+ const searchBorder = {
37
+ borderLeft: '1px solid var(--c-grey-300)',
38
+ paddingLeft: '10px',
39
+ };
40
+ const searchInputStyle = {
41
+ width: '220px',
42
+ };
43
+ const FeatureDomainsDescriptions = props => {
44
+ const [selectedDomains] = (0, domains_descriptors_tree_1.useDomainsDescriptionsTreeItemSelection)();
45
+ const [domainSearchValue, setDomainSearchValue] = (0, react_1.useState)(() => '');
46
+ const [numberOfDescriptions, setNumberOfDescriptions] = (0, react_1.useState)(() => 0);
47
+ const [searchedDomain, setSearchedDomain] = (0, react_1.useState)(() => props.descriptionsTree);
48
+ (0, react_1.useEffect)(() => {
49
+ setNumberOfDescriptions(calculateNumberOfDescriptions(props.descriptionsTree));
50
+ }, [props.descriptionsTree]);
51
+ (0, react_1.useEffect)(() => {
52
+ const selectedDomainFilter = (0, domains_descriptors_tree_1.createDomainPredicate)(selectedDomains, props.selectedJoinIds);
53
+ const domains = (0, domains_descriptors_tree_1.filterDomainsDescriptionsTree)(props.descriptionsTree, description => description.description
54
+ .toLowerCase()
55
+ .includes(domainSearchValue.toLowerCase()) &&
56
+ selectedDomainFilter(description));
57
+ setSearchedDomain(domains);
58
+ }, [
59
+ domainSearchValue,
60
+ selectedDomains,
61
+ props.selectedJoinIds,
62
+ props.descriptionsTree,
63
+ ]);
64
+ return (react_1.default.createElement(domains_descriptors_tree_1.DomainsDescriptionsTree, { descriptionsTree: searchedDomain },
65
+ react_1.default.createElement(domains_descriptors_tree_1.FeatureDomainDescriptionsTreeHeader, null,
66
+ react_1.default.createElement("div", { style: headerWrapperStyle },
67
+ react_1.default.createElement("h4", null,
68
+ props.domainName,
69
+ ": (",
70
+ numberOfDescriptions,
71
+ ")"),
72
+ react_1.default.createElement("div", { style: searchBorder },
73
+ react_1.default.createElement(input_1.Input, { style: searchInputStyle, value: domainSearchValue, placeholder: `Search for ${props.domainName.toLowerCase()}`, onValueChange: setDomainSearchValue }))))));
74
+ };
75
+ exports.FeatureDomainsDescriptions = FeatureDomainsDescriptions;
76
+ function calculateNumberOfDescriptions(descriptionsTree) {
77
+ return descriptionsTree.types
78
+ .map(({ columns }) => columns.map(({ descriptions }) => descriptions.length))
79
+ .flat(3)
80
+ .reduce((a, b) => a + b, 0);
81
+ }
82
+ //# sourceMappingURL=FeatureDomainsDescriptions.js.map
@@ -1,37 +1,16 @@
1
- import React from 'react';
2
- const FeatureExplorationPathItem = props => {
3
- return (React.createElement("div", null,
4
- React.createElement("div", { style: { display: 'flex', alignItems: 'baseline' } },
5
- React.createElement("h3", { className: "grey-label", style: { minWidth: '185px' } },
6
- "Exploration Path [#",
7
- props.explorationPathIndex,
8
- "]"),
9
- React.createElement("div", null,
10
- props.explorationPath.targetTable,
11
- "[",
12
- React.createElement("span", { style: {
13
- color: 'var(--c-blue-700)',
14
- fontWeight: '500',
15
- } }, props.explorationPath.targetColumns.join(', ')),
16
- "] - ",
17
- props.explorationPath.sourceTable,
18
- "[",
19
- React.createElement("span", { style: {
20
- color: 'var(--c-blue-700)',
21
- fontWeight: '500',
22
- } }, props.explorationPath.sourceColumns.join(', ')),
23
- "]")),
24
- React.createElement("div", { style: { paddingLeft: '16px' } },
25
- React.createElement("p", { className: "grey-label" }, "Joins:"),
26
- props.explorationPath.joins.map(join => (React.createElement("div", { key: join.joinId },
27
- "[",
28
- join.joinId,
29
- "] ",
30
- join.description,
31
- " (",
32
- join.numFeatures,
33
- " features)"))))));
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
34
4
  };
35
- export const FeatureExplorationPaths = props => {
36
- return (React.createElement(React.Fragment, null, props.explorationPaths.map((explorationPath, idx) => (React.createElement(FeatureExplorationPathItem, { key: idx, explorationPathIndex: idx, explorationPath: explorationPath })))));
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FeatureExplorationPaths = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const feature_exploration_path_1 = require("../../feature-descriptor/feature-exploration-path");
9
+ const FeatureExplorationPaths = ({ explorationPaths, selectedJoinIds, setSelectedJoinIds }) => {
10
+ return (react_1.default.createElement(react_1.default.Fragment, null, explorationPaths.map((explorationPath, idx) => (react_1.default.createElement("div", { key: idx, className: "exploration-path" },
11
+ react_1.default.createElement(feature_exploration_path_1.ExplorationPathHeader, { explorationPath: explorationPath, explorationPathIndex: idx }),
12
+ react_1.default.createElement("div", { style: { paddingLeft: '16px' } },
13
+ react_1.default.createElement(feature_exploration_path_1.ExplorationPathJoinList, { joins: explorationPath.joins, selectedJoinIds: selectedJoinIds, setSelectedJoinIds: setSelectedJoinIds })))))));
37
14
  };
15
+ exports.FeatureExplorationPaths = FeatureExplorationPaths;
16
+ //# sourceMappingURL=FeatureExplorationPaths.js.map
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.FeatureSpaceDomain = void 0;
30
+ const react_1 = __importStar(require("react"));
31
+ const UnfoldLess_1 = __importDefault(require("@mui/icons-material/UnfoldLess"));
32
+ const input_1 = require("../../components/input");
33
+ const feature_descriptor_grouped_domain_tree_1 = require("../../feature-descriptors-domain/feature-descriptor-grouped-domain-tree");
34
+ const searchInputStyle = {
35
+ width: '220px',
36
+ };
37
+ const FeatureSpaceDomain = props => {
38
+ const [domainSearch, setDomainSearch] = (0, react_1.useState)(() => '');
39
+ const [searchedDomain, setSearchedDomain] = (0, react_1.useState)(() => props.groupedDomain);
40
+ (0, react_1.useEffect)(() => {
41
+ const domains = filterDomainDescriptions(props.groupedDomain, domainSearch);
42
+ setSearchedDomain(domains);
43
+ }, [domainSearch]);
44
+ const [expandedDomainGroups, setExpandedDomainGroups] = react_1.default.useState(() => props.groupedDomain.types
45
+ .map(({ columns }, typeIdx) => [
46
+ `type_${typeIdx}`,
47
+ columns.map((_, columnIdx) => `type_${typeIdx}_column${columnIdx}`),
48
+ ])
49
+ .flat(2));
50
+ return (react_1.default.createElement("div", { className: "feature-space-domain-filters" },
51
+ react_1.default.createElement("div", { className: "feature-space-domain-header" },
52
+ react_1.default.createElement(UnfoldLess_1.default, { onClick: () => setExpandedDomainGroups([]) }),
53
+ react_1.default.createElement("h4", { className: "" }, "Filters (123)"),
54
+ react_1.default.createElement(input_1.Input, { style: searchInputStyle, value: domainSearch, placeholder: "Search for filter", onValueChange: setDomainSearch })),
55
+ react_1.default.createElement("div", null,
56
+ react_1.default.createElement(feature_descriptor_grouped_domain_tree_1.FeatureDescriptorGroupedDomainTree, { groupedDomain: searchedDomain, expanded: expandedDomainGroups }))));
57
+ };
58
+ exports.FeatureSpaceDomain = FeatureSpaceDomain;
59
+ const isNotEmpty = (arr) => arr.length > 0;
60
+ function filterDomainDescriptions(domains, searchPhrase) {
61
+ return {
62
+ types: domains.types
63
+ .map(({ summary, columns }) => ({
64
+ summary,
65
+ columns: columns
66
+ .map(column => ({
67
+ summary: column.summary,
68
+ descriptions: column.descriptions.filter(({ description }) => description.toLowerCase().includes(searchPhrase.toLowerCase())),
69
+ }))
70
+ .filter(({ descriptions }) => isNotEmpty(descriptions)),
71
+ }))
72
+ .filter(({ columns }) => isNotEmpty(columns)),
73
+ };
74
+ }
75
+ //# sourceMappingURL=FeatureSpaceDomain.js.map
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.FeatureSpaceDomainDescriptions = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const feature_descriptors_domain_1 = require("../../models/feature-descriptors-domain");
29
+ const input_1 = require("../../components/input");
30
+ const feature_domain_descriptions_1 = require("../../feature-descriptors-domain/feature-domain-descriptions");
31
+ const context_1 = require("../../feature-descriptors-domain/context");
32
+ const utils_1 = require("../../feature-descriptors-domain/utils");
33
+ const lodash_1 = require("lodash");
34
+ const searchInputStyle = {
35
+ width: '220px',
36
+ };
37
+ const FeatureSpaceDomainDescriptions = props => {
38
+ const [selectedDomains] = (0, context_1.useFeatureDomainSelection)();
39
+ const [domainSearch, setDomainSearch] = (0, react_1.useState)(() => '');
40
+ const [numberOfDescriptions, setNumberOfDescriptions] = (0, react_1.useState)(() => 0);
41
+ const [searchedDomain, setSearchedDomain] = (0, react_1.useState)(() => props.groupedDomain);
42
+ (0, react_1.useEffect)(() => {
43
+ const descriptions = props.groupedDomain.types
44
+ .map(({ columns }) => columns.map(({ descriptions }) => descriptions.length))
45
+ .flat(3)
46
+ .reduce((a, b) => a + b);
47
+ setNumberOfDescriptions(descriptions);
48
+ }, [props.groupedDomain]);
49
+ (0, react_1.useEffect)(() => {
50
+ const selectedDomainFilter = filterDomain(selectedDomains);
51
+ const domains = (0, utils_1.filterGroupedDomainDescriptions)(props.groupedDomain, description => description.description
52
+ .toLowerCase()
53
+ .includes(domainSearch.toLowerCase()) &&
54
+ selectedDomainFilter(description));
55
+ setSearchedDomain(domains);
56
+ }, [domainSearch, selectedDomains, props.groupedDomain]);
57
+ return (react_1.default.createElement(feature_domain_descriptions_1.FeatureDomainDescriptionsTree, { groupedDomain: searchedDomain },
58
+ react_1.default.createElement(feature_domain_descriptions_1.FeatureDomainDescriptionsTreeHeader, null,
59
+ react_1.default.createElement("h4", null,
60
+ props.label,
61
+ ": (",
62
+ numberOfDescriptions,
63
+ ")"),
64
+ react_1.default.createElement(input_1.Input, { style: searchInputStyle, value: domainSearch, placeholder: `Search for ${props.label.toLowerCase()}`, onValueChange: setDomainSearch }))));
65
+ };
66
+ exports.FeatureSpaceDomainDescriptions = FeatureSpaceDomainDescriptions;
67
+ function filterDomain(selectedDomains) {
68
+ const joinIds = new Set(Object.values(selectedDomains).flatMap(d => d.filter(lodash_1.isNumber)));
69
+ const domainIds = Object.values(selectedDomains).flatMap(d => d
70
+ .filter(feature_descriptors_domain_1.DomainId.isTypeOf)
71
+ .filter(({ joinId }) => (joinIds.size ? joinIds.has(joinId) : true)));
72
+ return (description) => {
73
+ return domainIds.length
74
+ ? description.domains.some(x => domainIds.find(({ domainIdx, joinId }) => x.joinId === joinId && x.domainIdx === domainIdx))
75
+ : joinIds.size
76
+ ? description.domains.some(({ joinId }) => joinIds.has(joinId))
77
+ : true;
78
+ };
79
+ }
80
+ //# sourceMappingURL=FeatureSpaceDomainDescriptions.js.map
@@ -1,40 +1,74 @@
1
- import React, { useEffect, useState } from 'react';
2
- import { Accordion, AccordionDetails, AccordionHeader, } from '../../components/accordion';
3
- import { Input } from '../../components/input';
4
- import { GroupedDomainsDescriptionsList } from '../../feature-descriptors-domain/grouped-domains-descriptions-list';
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.FeatureSpaceDomainsDescriptions = void 0;
30
+ const react_1 = __importStar(require("react"));
31
+ const UnfoldLess_1 = __importDefault(require("@mui/icons-material/UnfoldLess"));
32
+ const input_1 = require("../../components/input");
33
+ const feature_descriptor_grouped_domain_tree_1 = require("../../feature-descriptors-domain/feature-descriptor-grouped-domain-tree");
5
34
  const searchInputStyle = {
6
- width: '70%',
7
- marginTop: '4px',
8
- marginBottom: '16px',
35
+ width: '220px',
9
36
  };
10
- export const FeatureSpaceDomainsDescriptions = props => {
11
- const [aggregationSearch, setAggregationSearch] = useState(() => '');
12
- const [filterSearch, setFilterSearch] = useState(() => '');
13
- const [searchedAggregation, setSearchedAggregation] = useState(() => props.aggregations);
14
- const [searchedFilters, setSearchedFilters] = useState(() => props.filters);
15
- useEffect(() => {
37
+ const FeatureSpaceDomainsDescriptions = props => {
38
+ const [aggregationSearch, setAggregationSearch] = (0, react_1.useState)(() => '');
39
+ const [filterSearch, setFilterSearch] = (0, react_1.useState)(() => '');
40
+ const [searchedAggregation, setSearchedAggregation] = (0, react_1.useState)(() => props.aggregations);
41
+ const [searchedFilters, setSearchedFilters] = (0, react_1.useState)(() => props.filters);
42
+ (0, react_1.useEffect)(() => {
16
43
  const aggregations = filterDomainDescriptions(props.aggregations, aggregationSearch);
17
44
  setSearchedAggregation(aggregations);
18
45
  }, [aggregationSearch]);
19
- useEffect(() => {
46
+ (0, react_1.useEffect)(() => {
20
47
  const filters = filterDomainDescriptions(props.filters, filterSearch);
21
48
  setSearchedFilters(filters);
22
49
  }, [filterSearch]);
23
- return (React.createElement("div", null,
24
- React.createElement(Accordion, null,
25
- React.createElement(AccordionHeader, null,
26
- React.createElement("h3", { className: "grey-label" }, "Filters and Aggregations")),
27
- React.createElement(AccordionDetails, null,
28
- React.createElement("div", { style: { display: 'flex', marginBottom: '0.5rem' } },
29
- React.createElement("div", { style: { width: '50%' } },
30
- React.createElement("div", { className: "grey-label" }, "Filters"),
31
- React.createElement(Input, { style: searchInputStyle, value: filterSearch, placeholder: "Search:", onValueChange: setFilterSearch }),
32
- React.createElement(GroupedDomainsDescriptionsList, { groupedDomain: searchedFilters })),
33
- React.createElement("div", { style: { width: '50%' } },
34
- React.createElement("div", { className: "grey-label" }, "Aggregations"),
35
- React.createElement(Input, { style: searchInputStyle, value: aggregationSearch, placeholder: "Search:", onValueChange: setAggregationSearch }),
36
- React.createElement(GroupedDomainsDescriptionsList, { groupedDomain: searchedAggregation })))))));
50
+ const [expandedAggregations, setExpandedAggregations] = react_1.default.useState(() => props.aggregations.types
51
+ .map(({ columns }, typeIdx) => [
52
+ `type_${typeIdx}`,
53
+ columns.map((_, columnIdx) => `type_${typeIdx}_column${columnIdx}`),
54
+ ])
55
+ .flat(2));
56
+ return (react_1.default.createElement("div", { style: { display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '32px' } },
57
+ react_1.default.createElement("div", { className: "feature-space-domain-filters" },
58
+ react_1.default.createElement("div", { className: "feature-space-domain-header" },
59
+ react_1.default.createElement(UnfoldLess_1.default, { onClick: () => setExpandedAggregations([]) }),
60
+ react_1.default.createElement("h4", { className: "" }, "Filters (123)"),
61
+ react_1.default.createElement(input_1.Input, { style: searchInputStyle, value: filterSearch, placeholder: "Search for filter", onValueChange: setFilterSearch })),
62
+ react_1.default.createElement("div", null,
63
+ react_1.default.createElement(feature_descriptor_grouped_domain_tree_1.FeatureDescriptorGroupedDomainTree, { groupedDomain: searchedFilters, expanded: expandedAggregations }))),
64
+ react_1.default.createElement("div", { className: "feature-space-domain-aggregations" },
65
+ react_1.default.createElement("div", { className: "feature-space-domain-header" },
66
+ react_1.default.createElement("h4", null, "Aggregations (456)"),
67
+ react_1.default.createElement(input_1.Input, { style: searchInputStyle, value: aggregationSearch, placeholder: "Search for aggregation", onValueChange: setAggregationSearch })),
68
+ react_1.default.createElement("div", null,
69
+ react_1.default.createElement(feature_descriptor_grouped_domain_tree_1.FeatureDescriptorGroupedDomainTree, { groupedDomain: searchedAggregation, expanded: expandedAggregations })))));
37
70
  };
71
+ exports.FeatureSpaceDomainsDescriptions = FeatureSpaceDomainsDescriptions;
38
72
  const isNotEmpty = (arr) => arr.length > 0;
39
73
  function filterDomainDescriptions(domains, searchPhrase) {
40
74
  return {
@@ -51,3 +85,4 @@ function filterDomainDescriptions(domains, searchPhrase) {
51
85
  .filter(({ columns }) => isNotEmpty(columns)),
52
86
  };
53
87
  }
88
+ //# sourceMappingURL=FeatureSpaceDomainsDescriptions.js.map
@@ -1,9 +1,48 @@
1
- import React from 'react';
2
- import { FeatureSpaceDomainsDescriptions } from './FeatureSpaceDomainsDescriptions';
3
- import { FeatureExplorationPaths } from './FeatureExplorationPaths';
4
- export const FeatureSpaceView = props => {
5
- return (React.createElement(React.Fragment, null,
6
- React.createElement("h2", { className: "grey-label" }, "Feature Space Overview:"),
7
- props.featureSpace.explorationPaths ? (React.createElement(FeatureExplorationPaths, { explorationPaths: props.featureSpace.explorationPaths })) : null,
8
- props.featureSpace.filters ? (React.createElement(FeatureSpaceDomainsDescriptions, { filters: props.featureSpace.filters, aggregations: props.featureSpace.aggregations })) : null));
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
4
  };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FeatureSpaceView = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const styles_1 = require("@mui/material/styles");
9
+ const material_1 = require("@mui/material");
10
+ const widget_model_1 = require("../../utils/widget-model");
11
+ const widget_theme_1 = require("../../utils/widget-theme");
12
+ const FeatureExplorationPaths_1 = require("./FeatureExplorationPaths");
13
+ const context_1 = require("../../feature-descriptor/context");
14
+ const domains_descriptors_tree_1 = require("../../feature-descriptor/domains-descriptors-tree");
15
+ const FeatureDomainsDescriptions_1 = require("./FeatureDomainsDescriptions");
16
+ const Divider = () => (react_1.default.createElement("div", { style: {
17
+ height: '1px',
18
+ borderTop: '1px solid var(--c-grey-300)',
19
+ marginBlock: '24px',
20
+ } }));
21
+ const FeatureSpaceView = props => {
22
+ const [featureSpace] = (0, widget_model_1.useModelState)('value');
23
+ const selectedFiltersModel = (0, widget_model_1.useModelState)('selected_filters');
24
+ const selectedAggregationsModel = (0, widget_model_1.useModelState)('selected_aggregations');
25
+ const [selectedJoinIds, setSelectedJoinIds] = react_1.default.useState(() => []);
26
+ const [filterDescriptionsTree, setFilterDescriptionsTree] = react_1.default.useState(() => ({ types: [] }));
27
+ const [aggregationDescriptionsTree, setAggregationDescriptionsTree] = react_1.default.useState(() => ({ types: [] }));
28
+ react_1.default.useEffect(() => {
29
+ setFilterDescriptionsTree(domains_descriptors_tree_1.DescriptionsTree.appendGroupId(featureSpace.filters, 'f'));
30
+ }, [featureSpace.filters]);
31
+ react_1.default.useEffect(() => {
32
+ setAggregationDescriptionsTree(domains_descriptors_tree_1.DescriptionsTree.appendGroupId(featureSpace.aggregations, 'a'));
33
+ }, [featureSpace.aggregations]);
34
+ return (react_1.default.createElement(styles_1.ThemeProvider, { theme: widget_theme_1.theme },
35
+ react_1.default.createElement("h2", { className: "grey-label" }, "Feature Space Overview:"),
36
+ react_1.default.createElement(domains_descriptors_tree_1.DomainsDescriptionsTreeItemSelectionContextProvider, { selectedJoinIds: selectedJoinIds },
37
+ react_1.default.createElement(FeatureExplorationPaths_1.FeatureExplorationPaths, { explorationPaths: featureSpace.explorationPaths, selectedJoinIds: selectedJoinIds, setSelectedJoinIds: setSelectedJoinIds }),
38
+ react_1.default.createElement(Divider, null),
39
+ react_1.default.createElement(material_1.Grid, { container: true, spacing: 6 },
40
+ react_1.default.createElement(material_1.Grid, { item: true, xs: 6 },
41
+ react_1.default.createElement(context_1.FdDomainsDescriptionsSelectionContext.Provider, { value: selectedFiltersModel },
42
+ react_1.default.createElement(FeatureDomainsDescriptions_1.FeatureDomainsDescriptions, { domainName: "Filters", descriptionsTree: filterDescriptionsTree, selectedJoinIds: selectedJoinIds }))),
43
+ react_1.default.createElement(material_1.Grid, { item: true, xs: 6, sx: { overflow: 'hidden' } },
44
+ react_1.default.createElement(context_1.FdDomainsDescriptionsSelectionContext.Provider, { value: selectedAggregationsModel },
45
+ react_1.default.createElement(FeatureDomainsDescriptions_1.FeatureDomainsDescriptions, { domainName: "Aggregations", descriptionsTree: aggregationDescriptionsTree, selectedJoinIds: selectedJoinIds })))))));
46
+ };
47
+ exports.FeatureSpaceView = FeatureSpaceView;
48
+ //# sourceMappingURL=FeatureSpaceView.js.map
@@ -1,4 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
1
17
  // Import the CSS
2
- import '../../css/widget.css';
3
- export * from './FeatureLeaderboardWidget';
4
- export * from './FeatureSpaceWidget';
18
+ require("../../css/widget.css");
19
+ __exportStar(require("./FeatureLeaderboardWidget"), exports);
20
+ __exportStar(require("./FeatureSpaceWidget"), exports);
21
+ //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dotdata_widgets",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "A dotdata widget",
5
5
  "keywords": [
6
6
  "dotdata",
@@ -50,11 +50,16 @@
50
50
  "watch:labextension": "jupyter labextension watch ."
51
51
  },
52
52
  "dependencies": {
53
- "@fontsource/roboto": "^4.5.8",
54
- "@jupyter-widgets/base": "^1.1.10 || ^2 || ^3 || ^4 || ^5 || ^6",
55
- "@jupyterlab/application": "^3.5.2",
56
- "react": "18.2.0",
57
- "react-dom": "18.2.0",
53
+ "@emotion/react": "^11.10.6",
54
+ "@emotion/styled": "^11.10.6",
55
+ "@jupyter-widgets/base": "^6.0.2",
56
+ "@mui/icons-material": "^5.11.9",
57
+ "@mui/lab": "^5.0.0-alpha.120",
58
+ "@mui/material": "^5.11.9",
59
+ "@tanstack/react-virtual": "^3.0.0-beta.48",
60
+ "lodash": "^4.17.21",
61
+ "react": "17.0.2",
62
+ "react-dom": "17.0.2",
58
63
  "vega": "^5.22.1"
59
64
  },
60
65
  "devDependencies": {
@@ -62,41 +67,37 @@
62
67
  "@babel/preset-env": "^7.20.2",
63
68
  "@babel/preset-react": "^7.18.6",
64
69
  "@babel/preset-typescript": "^7.18.6",
65
- "@jupyter-widgets/base-manager": "^1.0.3",
66
- "@jupyterlab/builder": "^3.0.9",
67
- "@lumino/application": "^1.31.3",
68
- "@lumino/widgets": "^1.37.1",
69
- "@types/jest": "^26.0.24",
70
- "@types/react": "^18.0.27",
71
- "@types/react-dom": "18.0.10",
70
+ "@jupyterlab/builder": "^3.6.1",
71
+ "@types/jest": "^29.4.0",
72
+ "@types/react": "17.0.53",
73
+ "@types/react-dom": "17.0.18",
72
74
  "@types/webpack-env": "^1.18.0",
73
- "@typescript-eslint/eslint-plugin": "^3.10.1",
74
- "@typescript-eslint/parser": "^3.10.1",
75
- "acorn": "^7.4.1",
75
+ "@typescript-eslint/eslint-plugin": "^5.52.0",
76
+ "@typescript-eslint/parser": "^5.52.0",
77
+ "acorn": "^8.8.2",
76
78
  "babel-loader": "^9.1.2",
77
79
  "concurrently": "^7.6.0",
78
- "css-loader": "^3.6.0",
79
- "eslint": "^7.32.0",
80
- "eslint-config-prettier": "^6.15.0",
81
- "eslint-plugin-prettier": "^3.4.1",
80
+ "css-loader": "^6.7.3",
81
+ "eslint": "^8.34.0",
82
+ "eslint-config-prettier": "^8.6.0",
83
+ "eslint-plugin-prettier": "^4.2.1",
82
84
  "file-loader": "^6.2.0",
83
- "fs-extra": "^7.0.1",
85
+ "fs-extra": "^11.1.0",
84
86
  "identity-obj-proxy": "^3.0.0",
85
- "jest": "^26.6.3",
86
- "mkdirp": "^0.5.6",
87
+ "jest": "^29.4.2",
88
+ "mkdirp": "^2.1.3",
87
89
  "npm-run-all": "^4.1.5",
88
90
  "prettier": "^2.8.4",
89
- "rimraf": "^2.6.3",
90
- "source-map-loader": "^1.1.3",
91
- "style-loader": "^1.3.0",
92
- "ts-jest": "^26.5.6",
93
- "ts-loader": "^8.4.0",
91
+ "rimraf": "^4.1.2",
92
+ "source-map-loader": "^4.0.1",
93
+ "style-loader": "^3.3.1",
94
+ "ts-jest": "^29.0.5",
95
+ "ts-loader": "^9.4.2",
94
96
  "tsc-alias": "^1.8.2",
95
97
  "tsconfig-paths-webpack-plugin": "^4.0.0",
96
98
  "typescript": "~4.9.5",
97
- "url-loader": "^4.1.1",
98
99
  "webpack": "^5.69.1",
99
- "webpack-cli": "^4.10.0"
100
+ "webpack-cli": "^5.0.1"
100
101
  },
101
102
  "babel": {
102
103
  "presets": [