dotdata_widgets 0.1.2 → 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 (164) 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 +74 -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 -2
  135. package/lib/utils/widget/widget-model-context.js +36 -7
  136. package/lib/utils/widget/widget-model.js +14 -8
  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 +25 -15
  144. package/lib/widgets/FeatureSpaceWidget.js +27 -15
  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 -14
  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 -10
  158. package/lib/widgets/index.js +20 -3
  159. package/package.json +8 -3
  160. package/LICENSE.txt +0 -27
  161. package/lib/hooks/index.js +0 -1
  162. package/lib/hooks/widget-model.js +0 -1
  163. package/lib/utils/widget/widget-context-wrapper.js +0 -9
  164. 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,11 +1,48 @@
1
- import React from 'react';
2
- import { useModelState } from '../../utils/widget';
3
- import { FeatureSpaceDomainsDescriptions } from './FeatureSpaceDomainsDescriptions';
4
- import { FeatureExplorationPaths } from './FeatureExplorationPaths';
5
- export const FeatureSpaceView = props => {
6
- const [featureSpace] = useModelState('value');
7
- return (React.createElement(React.Fragment, null,
8
- React.createElement("h2", { className: "grey-label" }, "Feature Space Overview:"),
9
- featureSpace.explorationPaths ? (React.createElement(FeatureExplorationPaths, { explorationPaths: featureSpace.explorationPaths })) : null,
10
- featureSpace.filters ? (React.createElement(FeatureSpaceDomainsDescriptions, { filters: featureSpace.filters, aggregations: featureSpace.aggregations })) : null));
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
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.2",
3
+ "version": "0.1.3",
4
4
  "description": "A dotdata widget",
5
5
  "keywords": [
6
6
  "dotdata",
@@ -50,8 +50,14 @@
50
50
  "watch:labextension": "jupyter labextension watch ."
51
51
  },
52
52
  "dependencies": {
53
- "@fontsource/roboto": "^4.5.8",
53
+ "@emotion/react": "^11.10.6",
54
+ "@emotion/styled": "^11.10.6",
54
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",
55
61
  "react": "17.0.2",
56
62
  "react-dom": "17.0.2",
57
63
  "vega": "^5.22.1"
@@ -90,7 +96,6 @@
90
96
  "tsc-alias": "^1.8.2",
91
97
  "tsconfig-paths-webpack-plugin": "^4.0.0",
92
98
  "typescript": "~4.9.5",
93
- "url-loader": "^4.1.1",
94
99
  "webpack": "^5.69.1",
95
100
  "webpack-cli": "^5.0.1"
96
101
  },
package/LICENSE.txt DELETED
@@ -1,27 +0,0 @@
1
- Copyright (c) 2023 dotdata
2
- All rights reserved.
3
-
4
- Redistribution and use in source and binary forms, with or without
5
- modification, are permitted provided that the following conditions are met:
6
-
7
- 1. Redistributions of source code must retain the above copyright notice, this
8
- list of conditions and the following disclaimer.
9
-
10
- 2. Redistributions in binary form must reproduce the above copyright notice,
11
- this list of conditions and the following disclaimer in the documentation
12
- and/or other materials provided with the distribution.
13
-
14
- 3. Neither the name of the copyright holder nor the names of its
15
- contributors may be used to endorse or promote products derived from
16
- this software without specific prior written permission.
17
-
18
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1 +0,0 @@
1
- "use strict";
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,9 +0,0 @@
1
- import React, { createContext, useContext } from 'react';
2
- export const WidgetModelContext = createContext(undefined);
3
- export function useWidgetModelContext() {
4
- return useContext(WidgetModelContext);
5
- }
6
- export const withModelContext = (Component) => {
7
- return (props) => (React.createElement(WidgetModelContext.Provider, { value: props.model },
8
- React.createElement(Component, { ...props })));
9
- };