dotdata_widgets 0.1.2 → 0.1.4

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 (173) 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 +39 -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/feature-likes/feature-likes.js +38 -0
  25. package/lib/feature/feature-likes/index.js +18 -0
  26. package/lib/feature-descriptor/context/fd-domains-descriptions-selection.context.js +37 -0
  27. package/lib/feature-descriptor/context/index.js +18 -0
  28. package/lib/feature-descriptor/domains-descriptors-tree/components/column-tree-item.js +16 -0
  29. package/lib/feature-descriptor/domains-descriptors-tree/components/descriptions-tree-item.js +50 -0
  30. package/lib/feature-descriptor/domains-descriptors-tree/components/index.js +18 -0
  31. package/lib/feature-descriptor/domains-descriptors-tree/components/tree-item-label.js +56 -0
  32. package/lib/feature-descriptor/domains-descriptors-tree/components/type-tree-item.js +19 -0
  33. package/lib/feature-descriptor/domains-descriptors-tree/context/domains-descriptions-tree-item-selection-context.js +56 -0
  34. package/lib/feature-descriptor/domains-descriptors-tree/context/index.js +18 -0
  35. package/lib/feature-descriptor/domains-descriptors-tree/domains-descriptions-tree.js +44 -0
  36. package/lib/feature-descriptor/domains-descriptors-tree/index.js +21 -0
  37. package/lib/feature-descriptor/domains-descriptors-tree/models/domains-descriptions-tree.model.js +37 -0
  38. package/lib/feature-descriptor/domains-descriptors-tree/models/index.js +18 -0
  39. package/lib/feature-descriptor/domains-descriptors-tree/utils/create-domain-predicate.js +16 -0
  40. package/lib/feature-descriptor/domains-descriptors-tree/utils/filter-domains-descriptions-tree.js +23 -0
  41. package/lib/feature-descriptor/domains-descriptors-tree/utils/index.js +19 -0
  42. package/lib/feature-descriptor/feature-details/FeatureCorrelatedFeaturesTable.js +21 -13
  43. package/lib/feature-descriptor/feature-details/FeatureDistributionChart.js +36 -8
  44. package/lib/feature-descriptor/feature-details/FeatureStatisticsTable.js +25 -17
  45. package/lib/feature-descriptor/feature-details/index.js +20 -3
  46. package/lib/feature-descriptor/feature-explanation/FeatureExplanation.js +40 -32
  47. package/lib/feature-descriptor/feature-explanation/components/ColoredExplanationBlock.js +17 -9
  48. package/lib/feature-descriptor/feature-explanation/components/ColumnExplanationBlock.js +12 -4
  49. package/lib/feature-descriptor/feature-explanation/components/DataSlotExplanationBlock.js +12 -4
  50. package/lib/feature-descriptor/feature-explanation/components/PetExplanationBlock.js +11 -3
  51. package/lib/feature-descriptor/feature-explanation/components/TextExplanationBlock.js +10 -2
  52. package/lib/feature-descriptor/feature-explanation/components/TextWithDataSlotContextExplanationBlock.js +10 -2
  53. package/lib/feature-descriptor/feature-explanation/components/TopicExplanationBlock.js +10 -2
  54. package/lib/feature-descriptor/feature-explanation/components/UnknownExplanationBlock.js +10 -2
  55. package/lib/feature-descriptor/feature-exploration-path/exploration-path-header.js +38 -0
  56. package/lib/feature-descriptor/feature-exploration-path/exploration-path-join-list.js +28 -0
  57. package/lib/feature-descriptor/feature-exploration-path/index.js +19 -0
  58. package/lib/feature-descriptors-domain/context/feature-domain-descriptions-selection.context.js +37 -0
  59. package/lib/feature-descriptors-domain/context/feature-domain-selection.context.js +37 -0
  60. package/lib/feature-descriptors-domain/context/index.js +19 -0
  61. package/lib/feature-descriptors-domain/exploration-path/exploration-path-header.js +15 -7
  62. package/lib/feature-descriptors-domain/exploration-path/exploration-path-join-list.js +11 -3
  63. package/lib/feature-descriptors-domain/exploration-path/index.js +19 -2
  64. package/lib/feature-descriptors-domain/fd-grouped-domain-tree.js +81 -0
  65. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/column-tree-item.js +17 -0
  66. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/descriptions-tree-item.js +49 -0
  67. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/index.js +18 -0
  68. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/selection-indicator-with-label.js +40 -0
  69. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/type-tree-item.js +16 -0
  70. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/feature-descriptor-domain-descriptions-context.js +43 -0
  71. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/feature-descriptor-domain-descriptions-tree.js +57 -0
  72. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/index.js +18 -0
  73. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/column-tree-item.js +17 -0
  74. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/description-tree-item.js +2 -0
  75. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/descriptions-tree-item.js +49 -0
  76. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/index.js +18 -0
  77. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/selection-indicator-with-label.js +19 -0
  78. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/tree-item-label.js +15 -0
  79. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/tree-level-item.js +54 -0
  80. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/type-tree-item.js +16 -0
  81. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/feature-descriptor-domain-descriptions-tree.js +55 -0
  82. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/feature-descriptor-domain-descriptions-tree.model.js +2 -0
  83. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/index.js +18 -0
  84. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/utils/filter-domain-descriptions.js +21 -0
  85. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/utils/index.js +18 -0
  86. package/lib/feature-descriptors-domain/feature-descriptor-grouped-domain-tree.js +87 -0
  87. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/column-tree-item.js +16 -0
  88. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/descriptions-tree-item.js +50 -0
  89. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/index.js +18 -0
  90. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/selection-indicator-with-label.js +67 -0
  91. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/type-tree-item.js +19 -0
  92. package/lib/feature-descriptors-domain/feature-domain-descriptions/feature-domain-descriptions-context.js +37 -0
  93. package/lib/feature-descriptors-domain/feature-domain-descriptions/feature-domain-descriptions-tree.js +51 -0
  94. package/lib/feature-descriptors-domain/feature-domain-descriptions/index.js +18 -0
  95. package/lib/feature-descriptors-domain/feature-exploration-path/exploration-path-header.js +38 -0
  96. package/lib/feature-descriptors-domain/feature-exploration-path/exploration-path-join-list.js +36 -0
  97. package/lib/feature-descriptors-domain/feature-exploration-path/index.js +19 -0
  98. package/lib/feature-descriptors-domain/grouped-domains-descriptions-list.js +28 -17
  99. package/lib/feature-descriptors-domain/selected-feature-domain-context.js +2 -0
  100. package/lib/feature-descriptors-domain/utils/filter-domain-descriptions.js +23 -0
  101. package/lib/feature-descriptors-domain/utils/filter-grouped-domain-descriptions.js +23 -0
  102. package/lib/feature-descriptors-domain/utils/index.js +18 -0
  103. package/lib/index.js +19 -2
  104. package/lib/models/column/column.js +3 -1
  105. package/lib/models/column/index.js +18 -1
  106. package/lib/models/feature/feature-histogram.js +8 -4
  107. package/lib/models/feature/feature-leaderboard.js +3 -1
  108. package/lib/models/feature/feature-metric.js +16 -0
  109. package/lib/models/feature/feature.js +3 -12
  110. package/lib/models/feature/index.js +20 -2
  111. package/lib/models/feature-descriptor/feature-descriptor.js +3 -0
  112. package/lib/models/feature-descriptor/feature-descriptors-domain.js +3 -0
  113. package/lib/models/feature-descriptor-domain/fd-domains-description.js +3 -0
  114. package/lib/models/feature-descriptor-domain/fd-join-description.js +3 -0
  115. package/lib/models/feature-descriptor-domain/index.js +19 -0
  116. package/lib/models/feature-descriptors-domain/fd-domain-description.js +9 -1
  117. package/lib/models/feature-descriptors-domain/fd-grouped-domain-descriptions.js +3 -1
  118. package/lib/models/feature-descriptors-domain/index.js +19 -2
  119. package/lib/models/feature-explanation/feature-explanation.model.js +6 -2
  120. package/lib/models/feature-explanation/index.js +18 -1
  121. package/lib/models/feature-leaderboard/feature-leaderboard.js +3 -1
  122. package/lib/models/feature-leaderboard/index.js +18 -1
  123. package/lib/models/feature-space/exploration-path.js +3 -0
  124. package/lib/models/feature-space/feature-space-description.js +3 -0
  125. package/lib/models/feature-space/feature-space.js +3 -1
  126. package/lib/models/feature-space/grouped-domains-descriptions.js +3 -0
  127. package/lib/models/feature-space/index.js +20 -1
  128. package/lib/models/index.js +1 -0
  129. package/lib/plugin.js +33 -7
  130. package/lib/utils/asserations.js +6 -1
  131. package/lib/utils/index.js +20 -3
  132. package/lib/utils/localize.js +8 -4
  133. package/lib/utils/model-transform-hook.js +21 -0
  134. package/lib/utils/object/extract-property.js +6 -1
  135. package/lib/utils/object/index.js +19 -2
  136. package/lib/utils/object/is-set.js +8 -2
  137. package/lib/utils/set.js +14 -0
  138. package/lib/utils/widget/index.js +19 -2
  139. package/lib/utils/widget/widget-model-context.js +36 -7
  140. package/lib/utils/widget/widget-model.js +14 -8
  141. package/lib/utils/widget-model/index.js +19 -0
  142. package/lib/utils/widget-model/widget-model-context.js +42 -0
  143. package/lib/utils/widget-model/widget-model.js +30 -0
  144. package/lib/utils/widget-theme/index.js +18 -0
  145. package/lib/utils/widget-theme/widget-theme.js +99 -0
  146. package/lib/version.js +6 -2
  147. package/lib/widgets/FeatureLeaderboardWidget.js +27 -15
  148. package/lib/widgets/FeatureSpaceWidget.js +27 -15
  149. package/lib/widgets/feature-leaderboard/FeatureLeaderboardEntries.js +17 -9
  150. package/lib/widgets/feature-leaderboard/FeatureLeaderboardOverview.js +15 -18
  151. package/lib/widgets/feature-leaderboard/FeatureLeaderboardView.js +26 -14
  152. package/lib/widgets/feature-leaderboard/components/leaderboard-feature-likes.js +50 -0
  153. package/lib/widgets/feature-leaderboard/entry-item/FeatureLeaderboardEntryDetails.js +22 -14
  154. package/lib/widgets/feature-leaderboard/entry-item/FeatureLeaderboardEntryHeader.js +35 -0
  155. package/lib/widgets/feature-leaderboard/entry-item/FeatureLeaderboardEntryItem.js +17 -15
  156. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntry.js +22 -0
  157. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntryDetails.js +23 -0
  158. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntryRow.js +29 -0
  159. package/lib/widgets/feature-leaderboard/leaderboard-overview/overview-metric-slider.js +2 -0
  160. package/lib/widgets/feature-leaderboard/leaderboard-overview/overview-slider.js +62 -0
  161. package/lib/widgets/feature-space/FeatureDomainsDescriptions.js +82 -0
  162. package/lib/widgets/feature-space/FeatureExplorationPaths.js +14 -35
  163. package/lib/widgets/feature-space/FeatureSpaceDomain.js +75 -0
  164. package/lib/widgets/feature-space/FeatureSpaceDomainDescriptions.js +80 -0
  165. package/lib/widgets/feature-space/FeatureSpaceDomainsDescriptions.js +63 -28
  166. package/lib/widgets/feature-space/FeatureSpaceView.js +47 -10
  167. package/lib/widgets/index.js +20 -3
  168. package/package.json +8 -3
  169. package/LICENSE.txt +0 -27
  170. package/lib/hooks/index.js +0 -1
  171. package/lib/hooks/widget-model.js +0 -1
  172. package/lib/utils/widget/widget-context-wrapper.js +0 -9
  173. package/lib/widget.js +0 -34
@@ -1,15 +1,23 @@
1
- import React from 'react';
2
- import { FeatureStatisticsTable, FeatureDistributionChart, FeatureCorrelatedFeaturesTable, } from '../../../feature-descriptor/feature-details';
3
- export const FeatureLeaderboardEntryDetails = ({ entry }) => {
4
- return (React.createElement("div", null,
5
- React.createElement("div", { style: { display: 'flex', gap: '50px' } },
6
- React.createElement("div", { className: "feature-metrics", style: { flex: 3 } },
7
- React.createElement("h3", { className: "grey-label" }, "Feature Statistics:"),
8
- React.createElement(FeatureStatisticsTable, { statistics: entry.stats })),
9
- React.createElement("div", { className: "feature-histogram", style: { flex: 1 } },
10
- React.createElement("h3", { className: "grey-label" }, "Feature Distribution:"),
11
- React.createElement(FeatureDistributionChart, { histogram: entry.histogram }))),
12
- React.createElement("div", { className: "correlated-features" },
13
- React.createElement("h3", { className: "grey-label" }, "Correlated Features:"),
14
- React.createElement(FeatureCorrelatedFeaturesTable, { correlatedFeatures: entry.topCorrelatedFeatures }))));
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
4
  };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FeatureLeaderboardEntryDetails = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const feature_details_1 = require("../../../feature/feature-details");
9
+ const FeatureLeaderboardEntryDetails = ({ entry }) => {
10
+ return (react_1.default.createElement("div", null,
11
+ react_1.default.createElement("div", { style: { display: 'flex', gap: '50px' } },
12
+ react_1.default.createElement("div", { className: "feature-metrics", style: { flex: 3 } },
13
+ react_1.default.createElement("h3", { className: "grey-label" }, "Feature Statistics:"),
14
+ react_1.default.createElement(feature_details_1.FeatureStatisticsTable, { statistics: entry.stats })),
15
+ react_1.default.createElement("div", { className: "feature-histogram", style: { flex: 1 } },
16
+ react_1.default.createElement("h3", { className: "grey-label" }, "Feature Distribution:"),
17
+ react_1.default.createElement(feature_details_1.FeatureDistributionChart, { histogram: entry.histogram }))),
18
+ react_1.default.createElement("div", { className: "correlated-features" },
19
+ react_1.default.createElement("h3", { className: "grey-label" }, "Correlated Features:"),
20
+ react_1.default.createElement(feature_details_1.FeatureCorrelatedFeaturesTable, { correlatedFeatures: entry.topCorrelatedFeatures }))));
21
+ };
22
+ exports.FeatureLeaderboardEntryDetails = FeatureLeaderboardEntryDetails;
23
+ //# sourceMappingURL=FeatureLeaderboardEntryDetails.js.map
@@ -0,0 +1,35 @@
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.FeatureLeaderboardEntryHeader = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const lodash_1 = require("lodash");
9
+ const widget_model_1 = require("../../../utils/widget-model");
10
+ const FeatureExplanation_1 = require("../../../feature/feature-explanation/FeatureExplanation");
11
+ const feature_likes_1 = require("../../../feature/feature-likes");
12
+ const featureNameLabelStyle = {
13
+ color: 'var(--c-grey-600)',
14
+ display: 'inline-block',
15
+ marginLeft: '10px',
16
+ minWidth: '5rem',
17
+ };
18
+ const FeatureLeaderboardEntryHeader = ({ feature }) => {
19
+ const [likedFeatures, setLikedFeatures] = (0, widget_model_1.useModelState)('liked_features');
20
+ const [isLiked, setIsLiked] = react_1.default.useState(() => false);
21
+ react_1.default.useEffect(() => {
22
+ setIsLiked(likedFeatures.includes(feature.id));
23
+ }, [likedFeatures]);
24
+ function toggleIsLiked() {
25
+ setLikedFeatures(isLiked
26
+ ? (0, lodash_1.without)(likedFeatures, feature.id)
27
+ : [...likedFeatures, feature.id]);
28
+ }
29
+ return (react_1.default.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
30
+ react_1.default.createElement(feature_likes_1.FeatureLikes, { isLiked: isLiked, toggleIsLiked: toggleIsLiked }),
31
+ react_1.default.createElement("span", { className: "label-bold", style: featureNameLabelStyle }, feature.id),
32
+ react_1.default.createElement(FeatureExplanation_1.FeatureExplanation, { key: feature.id, explanationBlocks: feature.explanation.tokens })));
33
+ };
34
+ exports.FeatureLeaderboardEntryHeader = FeatureLeaderboardEntryHeader;
35
+ //# sourceMappingURL=FeatureLeaderboardEntryHeader.js.map
@@ -1,20 +1,22 @@
1
- import React from 'react';
2
- import { Accordion, AccordionHeader, AccordionDetails, } from '../../../components/accordion';
3
- import { FeatureExplanation } from '../../../feature-descriptor/feature-explanation/FeatureExplanation';
4
- import { FeatureLeaderboardEntryDetails } from './FeatureLeaderboardEntryDetails';
5
- const featureNameLabelStyle = {
6
- color: 'var(--c-grey-600)',
7
- display: 'inline-block',
8
- minWidth: '5rem',
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
4
  };
10
- export const FeatureLeaderboardEntryItem = ({ featureEntry }) => {
11
- return (React.createElement(Accordion, { expandedDetailsStyle: {
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FeatureLeaderboardEntryItem = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const accordion_1 = require("../../../components/accordion");
9
+ const FeatureLeaderboardEntryDetails_1 = require("./FeatureLeaderboardEntryDetails");
10
+ const FeatureLeaderboardEntryHeader_1 = require("./FeatureLeaderboardEntryHeader");
11
+ const FeatureLeaderboardEntryItem = ({ featureEntry }) => {
12
+ return (react_1.default.createElement(accordion_1.Accordion, { expandedDetailsStyle: {
12
13
  borderBottom: '1px solid var(--c-grey-500)',
13
14
  paddingBlockEnd: '30px',
14
15
  } },
15
- React.createElement(AccordionHeader, null,
16
- React.createElement("span", { className: "label-bold", style: featureNameLabelStyle }, featureEntry.feature.id),
17
- React.createElement(FeatureExplanation, { key: featureEntry.feature.id, explanationBlocks: featureEntry.feature.explanation.tokens })),
18
- React.createElement(AccordionDetails, null,
19
- React.createElement(FeatureLeaderboardEntryDetails, { entry: featureEntry }))));
16
+ react_1.default.createElement(accordion_1.AccordionHeader, null,
17
+ react_1.default.createElement(FeatureLeaderboardEntryHeader_1.FeatureLeaderboardEntryHeader, { feature: featureEntry.feature })),
18
+ react_1.default.createElement(accordion_1.AccordionDetails, null,
19
+ react_1.default.createElement(FeatureLeaderboardEntryDetails_1.FeatureLeaderboardEntryDetails, { entry: featureEntry }))));
20
20
  };
21
+ exports.FeatureLeaderboardEntryItem = FeatureLeaderboardEntryItem;
22
+ //# sourceMappingURL=FeatureLeaderboardEntryItem.js.map
@@ -0,0 +1,22 @@
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.FeatureLeaderboardEntry = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const accordion_1 = require("../../../components/accordion");
9
+ const FeatureLeaderboardEntryDetails_1 = require("./FeatureLeaderboardEntryDetails");
10
+ const FeatureLeaderboardEntryRow_1 = require("./FeatureLeaderboardEntryRow");
11
+ const FeatureLeaderboardEntry = ({ featureEntry }) => {
12
+ return (react_1.default.createElement(accordion_1.Accordion, { expandedDetailsStyle: {
13
+ borderBottom: '1px solid var(--c-grey-500)',
14
+ paddingBlockEnd: '30px',
15
+ } },
16
+ react_1.default.createElement(accordion_1.AccordionHeader, null,
17
+ react_1.default.createElement(FeatureLeaderboardEntryRow_1.FeatureLeaderboardEntryRow, { feature: featureEntry.feature })),
18
+ react_1.default.createElement(accordion_1.AccordionDetails, null,
19
+ react_1.default.createElement(FeatureLeaderboardEntryDetails_1.FeatureLeaderboardEntryDetails, { entry: featureEntry }))));
20
+ };
21
+ exports.FeatureLeaderboardEntry = FeatureLeaderboardEntry;
22
+ //# sourceMappingURL=FeatureLeaderboardEntry.js.map
@@ -0,0 +1,23 @@
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.FeatureLeaderboardEntryDetails = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const feature_details_1 = require("../../../feature/feature-details");
9
+ const FeatureLeaderboardEntryDetails = ({ entry }) => {
10
+ return (react_1.default.createElement("div", null,
11
+ react_1.default.createElement("div", { style: { display: 'flex', gap: '50px' } },
12
+ react_1.default.createElement("div", { className: "feature-metrics", style: { flex: 3 } },
13
+ react_1.default.createElement("h3", { className: "grey-label" }, "Feature Statistics:"),
14
+ react_1.default.createElement(feature_details_1.FeatureStatisticsTable, { statistics: entry.stats })),
15
+ react_1.default.createElement("div", { className: "feature-histogram", style: { flex: 1 } },
16
+ react_1.default.createElement("h3", { className: "grey-label" }, "Feature Distribution:"),
17
+ react_1.default.createElement(feature_details_1.FeatureDistributionChart, { histogram: entry.histogram }))),
18
+ react_1.default.createElement("div", { className: "correlated-features" },
19
+ react_1.default.createElement("h3", { className: "grey-label" }, "Correlated Features:"),
20
+ react_1.default.createElement(feature_details_1.FeatureCorrelatedFeaturesTable, { correlatedFeatures: entry.topCorrelatedFeatures }))));
21
+ };
22
+ exports.FeatureLeaderboardEntryDetails = FeatureLeaderboardEntryDetails;
23
+ //# sourceMappingURL=FeatureLeaderboardEntryDetails.js.map
@@ -0,0 +1,29 @@
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.FeatureLeaderboardEntryRow = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const FeatureExplanation_1 = require("../../../feature/feature-explanation/FeatureExplanation");
9
+ const leaderboard_feature_likes_1 = require("../components/leaderboard-feature-likes");
10
+ const featureNameLabelStyle = {
11
+ color: 'var(--c-grey-600)',
12
+ display: 'inline-block',
13
+ marginLeft: '10px',
14
+ minWidth: '5rem',
15
+ };
16
+ const FeatureLeaderboardEntryRow = ({ feature }) => {
17
+ return (react_1.default.createElement("div", { style: {
18
+ display: 'flex',
19
+ alignItems: 'center',
20
+ position: 'relative',
21
+ width: '100%',
22
+ } },
23
+ react_1.default.createElement("span", { className: "label-bold", style: featureNameLabelStyle }, feature.id),
24
+ react_1.default.createElement(FeatureExplanation_1.FeatureExplanation, { key: feature.id, explanationBlocks: feature.explanation.tokens }),
25
+ react_1.default.createElement("div", { style: { marginLeft: 'auto' } },
26
+ react_1.default.createElement(leaderboard_feature_likes_1.LeaderBoardFeatureLikes, { featureId: feature.id }))));
27
+ };
28
+ exports.FeatureLeaderboardEntryRow = FeatureLeaderboardEntryRow;
29
+ //# sourceMappingURL=FeatureLeaderboardEntryRow.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=overview-metric-slider.js.map
@@ -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