dotdata_widgets 0.0.28-dev.70.bfd2f27f

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 (91) hide show
  1. package/README.md +86 -0
  2. package/css/colors.css +124 -0
  3. package/css/typography.css +44 -0
  4. package/css/widget.css +87 -0
  5. package/dist/index.js +76 -0
  6. package/lib/components/accordion/Accordion.js +51 -0
  7. package/lib/components/accordion/index.js +18 -0
  8. package/lib/extension.js +31 -0
  9. package/lib/feature/feature-details/FeatureCorrelatedFeaturesTable.js +22 -0
  10. package/lib/feature/feature-details/FeatureDistributionChart.js +218 -0
  11. package/lib/feature/feature-details/FeatureStatisticsTable.js +44 -0
  12. package/lib/feature/feature-details/index.js +20 -0
  13. package/lib/feature/feature-explanation/FeatureExplanation.js +52 -0
  14. package/lib/feature/feature-explanation/components/ColoredExplanationBlock.js +30 -0
  15. package/lib/feature/feature-explanation/components/ColumnExplanationBlock.js +11 -0
  16. package/lib/feature/feature-explanation/components/DataSlotExplanationBlock.js +11 -0
  17. package/lib/feature/feature-explanation/components/PetExplanationBlock.js +11 -0
  18. package/lib/feature/feature-explanation/components/TextExplanationBlock.js +12 -0
  19. package/lib/feature/feature-explanation/components/TextWithDataSlotContextExplanationBlock.js +10 -0
  20. package/lib/feature/feature-explanation/components/TopicExplanationBlock.js +10 -0
  21. package/lib/feature/feature-explanation/components/UnknownExplanationBlock.js +10 -0
  22. package/lib/feature/feature-likes/feature-likes.js +44 -0
  23. package/lib/feature/feature-likes/index.js +18 -0
  24. package/lib/feature-descriptor/domains-descriptions-tree/components/column-tree-item.js +16 -0
  25. package/lib/feature-descriptor/domains-descriptions-tree/components/descriptions-tree-item.js +51 -0
  26. package/lib/feature-descriptor/domains-descriptions-tree/components/index.js +18 -0
  27. package/lib/feature-descriptor/domains-descriptions-tree/components/tree-item-label.js +54 -0
  28. package/lib/feature-descriptor/domains-descriptions-tree/components/type-tree-item.js +19 -0
  29. package/lib/feature-descriptor/domains-descriptions-tree/config/index.js +11 -0
  30. package/lib/feature-descriptor/domains-descriptions-tree/context/domains-descriptions-selection-context.js +54 -0
  31. package/lib/feature-descriptor/domains-descriptions-tree/context/domains-descriptions-tree-config-context.js +42 -0
  32. package/lib/feature-descriptor/domains-descriptions-tree/context/domains-descriptions-tree-item-selection-context.js +56 -0
  33. package/lib/feature-descriptor/domains-descriptions-tree/context/index.js +20 -0
  34. package/lib/feature-descriptor/domains-descriptions-tree/domains-descriptions-tree.js +44 -0
  35. package/lib/feature-descriptor/domains-descriptions-tree/index.js +21 -0
  36. package/lib/feature-descriptor/domains-descriptions-tree/models/domains-descriptions-tree.model.js +37 -0
  37. package/lib/feature-descriptor/domains-descriptions-tree/models/index.js +18 -0
  38. package/lib/feature-descriptor/domains-descriptions-tree/utils/create-domain-predicate.js +16 -0
  39. package/lib/feature-descriptor/domains-descriptions-tree/utils/filter-domains-descriptions-tree.js +23 -0
  40. package/lib/feature-descriptor/domains-descriptions-tree/utils/index.js +19 -0
  41. package/lib/feature-descriptor/feature-exploration-path/exploration-path-header.js +38 -0
  42. package/lib/feature-descriptor/feature-exploration-path/exploration-path-join-list.js +28 -0
  43. package/lib/feature-descriptor/feature-exploration-path/index.js +19 -0
  44. package/lib/index.js +21 -0
  45. package/lib/models/column/column.js +3 -0
  46. package/lib/models/column/index.js +18 -0
  47. package/lib/models/feature/feature-histogram.js +20 -0
  48. package/lib/models/feature/feature-metric.js +16 -0
  49. package/lib/models/feature/feature.js +3 -0
  50. package/lib/models/feature/index.js +20 -0
  51. package/lib/models/feature-descriptor-domain/fd-domains-description.js +15 -0
  52. package/lib/models/feature-descriptor-domain/fd-join-description.js +3 -0
  53. package/lib/models/feature-descriptor-domain/index.js +19 -0
  54. package/lib/models/feature-explanation/feature-explanation.model.js +30 -0
  55. package/lib/models/feature-explanation/index.js +18 -0
  56. package/lib/models/feature-leaderboard/feature-leaderboard.js +3 -0
  57. package/lib/models/feature-leaderboard/index.js +18 -0
  58. package/lib/models/feature-space/exploration-path.js +3 -0
  59. package/lib/models/feature-space/feature-space.js +3 -0
  60. package/lib/models/feature-space/grouped-domains-descriptions.js +3 -0
  61. package/lib/models/feature-space/index.js +20 -0
  62. package/lib/plugin.js +54 -0
  63. package/lib/utils/asserations.js +10 -0
  64. package/lib/utils/index.js +20 -0
  65. package/lib/utils/localize.js +18 -0
  66. package/lib/utils/model-transform-hook.js +21 -0
  67. package/lib/utils/object/extract-property.js +11 -0
  68. package/lib/utils/object/index.js +19 -0
  69. package/lib/utils/object/is-set.js +12 -0
  70. package/lib/utils/set.js +14 -0
  71. package/lib/utils/transducer.js +16 -0
  72. package/lib/utils/widget-model/index.js +19 -0
  73. package/lib/utils/widget-model/widget-model-context.js +42 -0
  74. package/lib/utils/widget-model/widget-model.js +30 -0
  75. package/lib/utils/widget-theme/index.js +18 -0
  76. package/lib/utils/widget-theme/widget-theme.js +99 -0
  77. package/lib/version.js +21 -0
  78. package/lib/widgets/FeatureLeaderboardWidget.js +61 -0
  79. package/lib/widgets/FeatureSpaceWidget.js +64 -0
  80. package/lib/widgets/feature-leaderboard/FeatureLeaderboardOverview.js +25 -0
  81. package/lib/widgets/feature-leaderboard/FeatureLeaderboardView.js +45 -0
  82. package/lib/widgets/feature-leaderboard/components/leaderboard-feature-likes.js +50 -0
  83. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntry.js +19 -0
  84. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntryDetails.js +23 -0
  85. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntryRow.js +23 -0
  86. package/lib/widgets/feature-leaderboard/leaderboard-overview/overview-slider.js +62 -0
  87. package/lib/widgets/feature-space/FeatureDomainsDescriptions.js +74 -0
  88. package/lib/widgets/feature-space/FeatureExplorationPaths.js +16 -0
  89. package/lib/widgets/feature-space/FeatureSpaceView.js +52 -0
  90. package/lib/widgets/index.js +21 -0
  91. package/package.json +119 -0
@@ -0,0 +1,16 @@
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.ColumnTreeItem = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const TreeItem_1 = __importDefault(require("@mui/lab/TreeItem"));
9
+ const descriptions_tree_item_1 = require("./descriptions-tree-item");
10
+ const tree_item_label_1 = require("./tree-item-label");
11
+ const ColumnTreeItem = ({ column }) => {
12
+ return column.descriptions.length === 1 ? (react_1.default.createElement(descriptions_tree_item_1.DescriptionsTreeItem, { descriptions: column.descriptions })) : (react_1.default.createElement(TreeItem_1.default, { nodeId: column.nodeId, label: react_1.default.createElement(tree_item_label_1.TreeItemLabel, { label: column.summary, nodeId: column.nodeId, managedDescriptions: column.descriptions }) },
13
+ react_1.default.createElement(descriptions_tree_item_1.DescriptionsTreeItem, { descriptions: column.descriptions })));
14
+ };
15
+ exports.ColumnTreeItem = ColumnTreeItem;
16
+ //# sourceMappingURL=column-tree-item.js.map
@@ -0,0 +1,51 @@
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.DescriptionsTreeItem = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const react_virtual_1 = require("@tanstack/react-virtual");
9
+ const material_1 = require("@mui/material");
10
+ const tree_item_label_1 = require("./tree-item-label");
11
+ const feature_descriptor_domain_1 = require("../../../models/feature-descriptor-domain");
12
+ const listLeftIndentation = '31px';
13
+ const DescriptionsVirtualList = ({ descriptions, }) => {
14
+ const parentRef = react_1.default.useRef(null);
15
+ const rowVirtualizer = (0, react_virtual_1.useVirtualizer)({
16
+ count: descriptions.length,
17
+ getScrollElement: () => parentRef.current,
18
+ estimateSize: () => 25,
19
+ overscan: 5,
20
+ });
21
+ return (react_1.default.createElement("div", { ref: parentRef, style: {
22
+ height: `${Math.min(25 * descriptions.length, 500)}px`,
23
+ overflowY: 'auto',
24
+ overflowX: 'hidden',
25
+ } },
26
+ react_1.default.createElement("div", { style: {
27
+ height: `${rowVirtualizer.getTotalSize()}px`,
28
+ position: 'relative',
29
+ } }, rowVirtualizer.getVirtualItems().map(virtualRow => (react_1.default.createElement("div", { key: virtualRow.index, style: {
30
+ position: 'absolute',
31
+ top: 0,
32
+ right: 0,
33
+ left: listLeftIndentation,
34
+ height: `${virtualRow.size}px`,
35
+ transform: `translateY(${virtualRow.start}px)`,
36
+ } },
37
+ react_1.default.createElement(tree_item_label_1.TreeItemLabel, { label: descriptions[virtualRow.index].description, nodeId: descriptions[virtualRow.index].nodeId, managedDescriptions: [descriptions[virtualRow.index]] })))))));
38
+ };
39
+ const DescriptionsList = ({ descriptions }) => {
40
+ return (react_1.default.createElement(react_1.default.Fragment, null, descriptions.map(description => (react_1.default.createElement(tree_item_label_1.TreeItemLabel, { key: feature_descriptor_domain_1.DomainsDescriptionId.toString(description.id), label: description.description, nodeId: description.nodeId, managedDescriptions: [description] })))));
41
+ };
42
+ const DescriptionsTreeItem = ({ descriptions, }) => {
43
+ const [isVirtualListVisible, setIsVirtualListVisible] = react_1.default.useState(() => false);
44
+ const [limitedDescriptions] = react_1.default.useState(() => descriptions.length < 6 ? descriptions : descriptions.slice(0, 3));
45
+ const isWithShowMore = descriptions.length >= 6;
46
+ return isVirtualListVisible ? (react_1.default.createElement(DescriptionsVirtualList, { descriptions: descriptions })) : (react_1.default.createElement("div", { style: { marginLeft: listLeftIndentation } },
47
+ react_1.default.createElement(DescriptionsList, { descriptions: limitedDescriptions }),
48
+ isWithShowMore ? (react_1.default.createElement(material_1.Button, { sx: { textTransform: 'lowercase', display: 'block' }, size: "small", onClick: () => setIsVirtualListVisible(true) }, "more")) : null));
49
+ };
50
+ exports.DescriptionsTreeItem = DescriptionsTreeItem;
51
+ //# sourceMappingURL=descriptions-tree-item.js.map
@@ -0,0 +1,18 @@
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 });
17
+ __exportStar(require("./type-tree-item"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,54 @@
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.TreeItemLabel = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const material_1 = require("@mui/material");
9
+ const _utils_1 = require("../../../utils");
10
+ const feature_descriptor_domain_1 = require("../../../models/feature-descriptor-domain");
11
+ const context_1 = require("../context");
12
+ var SelectionIndicator;
13
+ (function (SelectionIndicator) {
14
+ SelectionIndicator["Checked"] = "checked";
15
+ SelectionIndicator["Unchecked"] = "unchecked";
16
+ SelectionIndicator["Indeterminate"] = "indeterminate";
17
+ })(SelectionIndicator || (SelectionIndicator = {}));
18
+ const TreeItemLabel = props => {
19
+ const { isWithCheckboxes, areCheckboxesDisabled } = (0, context_1.useDomainsDescriptionsTreeConfig)();
20
+ const [selectedTreeItems, { toggleTreeItemSelection }] = (0, context_1.useDomainsDescriptionsTreeItemSelection)();
21
+ const [selectedDomainDescriptionsIds, { toggleSelection }] = (0, context_1.useDomainsDescriptionsSelectionContext)();
22
+ const managedDescriptionIds = react_1.default.useMemo(() => feature_descriptor_domain_1.DomainsDescriptionId.listToMap(props.managedDescriptions.map((0, _utils_1.extractProperty)('id'))), []);
23
+ const checked = react_1.default.useMemo(() => getSelectionState(managedDescriptionIds, selectedDomainDescriptionsIds), [/*props.managedDescriptions,*/ selectedDomainDescriptionsIds]);
24
+ function isSelected() {
25
+ return (0, _utils_1.isSet)(selectedTreeItems[props.nodeId]);
26
+ }
27
+ return (react_1.default.createElement(material_1.FormControlLabel, { className: `text-ellipsis selection-indicator ${isSelected() ? 'selected' : ''}`, sx: {
28
+ display: 'block',
29
+ paddingLeft: isWithCheckboxes ? 'initial' : '10px',
30
+ }, control: isWithCheckboxes ? (react_1.default.createElement(material_1.Checkbox, { className: areCheckboxesDisabled ? 'disabled' : '', sx: { paddingBlock: '2px' }, checked: checked === SelectionIndicator.Checked, indeterminate: checked === SelectionIndicator.Indeterminate, disableRipple: areCheckboxesDisabled, onClick: event => {
31
+ event.stopPropagation();
32
+ if (areCheckboxesDisabled) {
33
+ return;
34
+ }
35
+ const checked = event.target.checked;
36
+ toggleSelection(checked, props.managedDescriptions.map((0, _utils_1.extractProperty)('id')));
37
+ } })) : (react_1.default.createElement(react_1.default.Fragment, null)), label: props.label, onClick: event => {
38
+ toggleTreeItemSelection(props.nodeId, props.managedDescriptions.flatMap((0, _utils_1.extractProperty)('domains')));
39
+ event.stopPropagation();
40
+ event.preventDefault();
41
+ } }));
42
+ };
43
+ exports.TreeItemLabel = TreeItemLabel;
44
+ function getSelectionState(managedDescriptionIds, selectedIds) {
45
+ const managedNotSelectedIds = Array.from(managedDescriptionIds.keys()).filter(id => !selectedIds.has(id)).length;
46
+ const areAllChecked = managedNotSelectedIds === 0;
47
+ const areAllUnselected = managedNotSelectedIds === managedDescriptionIds.size;
48
+ return areAllChecked
49
+ ? SelectionIndicator.Checked
50
+ : areAllUnselected
51
+ ? SelectionIndicator.Unchecked
52
+ : SelectionIndicator.Indeterminate;
53
+ }
54
+ //# sourceMappingURL=tree-item-label.js.map
@@ -0,0 +1,19 @@
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.TypeTreeItem = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const TreeItem_1 = __importDefault(require("@mui/lab/TreeItem"));
9
+ const _utils_1 = require("../../../utils");
10
+ const column_tree_item_1 = require("./column-tree-item");
11
+ const tree_item_label_1 = require("./tree-item-label");
12
+ const TypeTreeItem = ({ type }) => {
13
+ return type.columns.length === 1 ? (react_1.default.createElement(column_tree_item_1.ColumnTreeItem, { column: type.columns[0] })) : (react_1.default.createElement(TreeItem_1.default, { nodeId: type.nodeId, classes: {
14
+ focused: 'tree-item-focused',
15
+ selected: 'tree-item-focused',
16
+ }, label: react_1.default.createElement(tree_item_label_1.TreeItemLabel, { label: type.summary, nodeId: type.nodeId, managedDescriptions: type.columns.flatMap((0, _utils_1.extractProperty)('descriptions')) }) }, type.columns.map((column, idx) => (react_1.default.createElement(column_tree_item_1.ColumnTreeItem, { key: column.nodeId, column: column })))));
17
+ };
18
+ exports.TypeTreeItem = TypeTreeItem;
19
+ //# sourceMappingURL=type-tree-item.js.map
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DomainsDescriptionsTreeConfig = void 0;
4
+ var DomainsDescriptionsTreeConfig;
5
+ (function (DomainsDescriptionsTreeConfig) {
6
+ DomainsDescriptionsTreeConfig.DEFAULT = {
7
+ isWithCheckboxes: true,
8
+ areCheckboxesDisabled: false,
9
+ };
10
+ })(DomainsDescriptionsTreeConfig = exports.DomainsDescriptionsTreeConfig || (exports.DomainsDescriptionsTreeConfig = {}));
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,54 @@
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.DomainsDescriptionsSelectionContextProvider = exports.useDomainsDescriptionsSelectionContext = exports.DomainsDescriptionsSelectionContext = void 0;
27
+ const React = __importStar(require("react"));
28
+ const feature_descriptor_domain_1 = require("../../../models/feature-descriptor-domain");
29
+ exports.DomainsDescriptionsSelectionContext = React.createContext(undefined);
30
+ function useDomainsDescriptionsSelectionContext() {
31
+ const context = React.useContext(exports.DomainsDescriptionsSelectionContext);
32
+ if (context === undefined) {
33
+ throw new Error('useDomainsDescriptionsSelectionContext must be used within a DomainsDescriptionsSelectionContext');
34
+ }
35
+ return context;
36
+ }
37
+ exports.useDomainsDescriptionsSelectionContext = useDomainsDescriptionsSelectionContext;
38
+ function DomainsDescriptionsSelectionContextProvider(props) {
39
+ const selectedDomainDescriptionsIds = React.useMemo(() => feature_descriptor_domain_1.DomainsDescriptionId.listToMap(props.selectedDomainDescriptionIds), [props.selectedDomainDescriptionIds]);
40
+ function toggleSelection(check, ids) {
41
+ ids.forEach(id => {
42
+ if (check) {
43
+ selectedDomainDescriptionsIds.set(feature_descriptor_domain_1.DomainsDescriptionId.toString(id), id);
44
+ }
45
+ else {
46
+ selectedDomainDescriptionsIds.delete(feature_descriptor_domain_1.DomainsDescriptionId.toString(id));
47
+ }
48
+ });
49
+ props.setSelectedDomainDescriptionIds(Array.from(selectedDomainDescriptionsIds.values()));
50
+ }
51
+ return (React.createElement(exports.DomainsDescriptionsSelectionContext.Provider, { value: [selectedDomainDescriptionsIds, { toggleSelection }], ...props }));
52
+ }
53
+ exports.DomainsDescriptionsSelectionContextProvider = DomainsDescriptionsSelectionContextProvider;
54
+ //# sourceMappingURL=domains-descriptions-selection-context.js.map
@@ -0,0 +1,42 @@
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.DomainsDescriptionsTreeConfigContextProvider = exports.useDomainsDescriptionsTreeConfig = exports.DomainsDescriptionsTreeConfigContext = void 0;
27
+ const React = __importStar(require("react"));
28
+ const config_1 = require("../config");
29
+ exports.DomainsDescriptionsTreeConfigContext = React.createContext(config_1.DomainsDescriptionsTreeConfig.DEFAULT);
30
+ function useDomainsDescriptionsTreeConfig() {
31
+ const context = React.useContext(exports.DomainsDescriptionsTreeConfigContext);
32
+ if (context === undefined) {
33
+ throw new Error('useDomainsDescriptionsTreeConfig must be used within a DomainsDescriptionsTreeConfigContext');
34
+ }
35
+ return context;
36
+ }
37
+ exports.useDomainsDescriptionsTreeConfig = useDomainsDescriptionsTreeConfig;
38
+ function DomainsDescriptionsTreeConfigContextProvider(props) {
39
+ return (React.createElement(exports.DomainsDescriptionsTreeConfigContext.Provider, { value: props.configuration ?? config_1.DomainsDescriptionsTreeConfig.DEFAULT, ...props }));
40
+ }
41
+ exports.DomainsDescriptionsTreeConfigContextProvider = DomainsDescriptionsTreeConfigContextProvider;
42
+ //# sourceMappingURL=domains-descriptions-tree-config-context.js.map
@@ -0,0 +1,56 @@
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.DomainsDescriptionsTreeItemSelectionContextProvider = exports.useDomainsDescriptionsTreeItemSelection = exports.DomainsDescriptionsTreeItemSelectionContext = void 0;
27
+ const lodash_1 = require("lodash");
28
+ const React = __importStar(require("react"));
29
+ const _utils_1 = require("../../../utils");
30
+ exports.DomainsDescriptionsTreeItemSelectionContext = React.createContext(undefined);
31
+ function useDomainsDescriptionsTreeItemSelection() {
32
+ const context = React.useContext(exports.DomainsDescriptionsTreeItemSelectionContext);
33
+ if (context === undefined) {
34
+ throw new Error('useDomainsDescriptionsTreeItemSelection must be used within a DomainsDescriptionsTreeItemSelectionContext');
35
+ }
36
+ return context;
37
+ }
38
+ exports.useDomainsDescriptionsTreeItemSelection = useDomainsDescriptionsTreeItemSelection;
39
+ function DomainsDescriptionsTreeItemSelectionContextProvider(props) {
40
+ const [selectedTreeItems, setSelectedTreeItems] = React.useState(() => ({}));
41
+ function toggleTreeItemSelection(nodeId, domains) {
42
+ if ((0, _utils_1.isSet)(selectedTreeItems[nodeId])) {
43
+ const { [nodeId]: _remove, ...rest } = selectedTreeItems;
44
+ setSelectedTreeItems(rest);
45
+ }
46
+ else {
47
+ setSelectedTreeItems({
48
+ ...selectedTreeItems,
49
+ [nodeId]: (0, lodash_1.uniqBy)(domains, JSON.stringify),
50
+ });
51
+ }
52
+ }
53
+ return (React.createElement(exports.DomainsDescriptionsTreeItemSelectionContext.Provider, { value: [selectedTreeItems, { toggleTreeItemSelection }], ...props }));
54
+ }
55
+ exports.DomainsDescriptionsTreeItemSelectionContextProvider = DomainsDescriptionsTreeItemSelectionContextProvider;
56
+ //# sourceMappingURL=domains-descriptions-tree-item-selection-context.js.map
@@ -0,0 +1,20 @@
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 });
17
+ __exportStar(require("./domains-descriptions-tree-item-selection-context"), exports);
18
+ __exportStar(require("./domains-descriptions-tree-config-context"), exports);
19
+ __exportStar(require("./domains-descriptions-selection-context"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,44 @@
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.DomainsDescriptionsTree = exports.FeatureDomainDescriptionsTreeHeader = void 0;
7
+ const lodash_1 = require("lodash");
8
+ const react_1 = __importDefault(require("react"));
9
+ const TreeView_1 = __importDefault(require("@mui/lab/TreeView"));
10
+ const material_1 = require("@mui/material");
11
+ const UnfoldLess_1 = __importDefault(require("@mui/icons-material/UnfoldLess"));
12
+ const UnfoldMore_1 = __importDefault(require("@mui/icons-material/UnfoldMore"));
13
+ const ExpandMore_1 = __importDefault(require("@mui/icons-material/ExpandMore"));
14
+ const ChevronRight_1 = __importDefault(require("@mui/icons-material/ChevronRight"));
15
+ const _utils_1 = require("../../utils");
16
+ const components_1 = require("./components");
17
+ const ToggleIcon = (props) => props.allNodeIds.length === props.expandedNodes.length ? (react_1.default.createElement(UnfoldLess_1.default, { sx: { marginRight: '-10px' } })) : (react_1.default.createElement(UnfoldMore_1.default, { sx: { marginRight: '-10px' } }));
18
+ const FeatureDomainDescriptionsTreeHeader = (props) => react_1.default.createElement(react_1.default.Fragment, null, props.children);
19
+ exports.FeatureDomainDescriptionsTreeHeader = FeatureDomainDescriptionsTreeHeader;
20
+ const DomainsDescriptionsTree = ({ descriptionsTree, children }) => {
21
+ const [allNodeIds, setAllNodeIds] = react_1.default.useState(() => getAllNodeIds(descriptionsTree));
22
+ const [expandedNodes, setExpandedNodes] = react_1.default.useState(() => []);
23
+ react_1.default.useEffect(() => {
24
+ setAllNodeIds(getAllNodeIds(descriptionsTree));
25
+ }, [descriptionsTree]);
26
+ return (react_1.default.createElement("div", { className: "domains-descriptions-tree" },
27
+ react_1.default.createElement("div", { className: "domains-descriptions-tree-header" },
28
+ react_1.default.createElement(material_1.Button, { className: "toggle-all-nodes-btn", variant: "outlined", startIcon: react_1.default.createElement(ToggleIcon, { allNodeIds: allNodeIds, expandedNodes: expandedNodes }), onClick: () => setExpandedNodes((0, lodash_1.isEmpty)(expandedNodes) ? allNodeIds : []) }),
29
+ react_1.default.Children.toArray(children)
30
+ .filter(react_1.default.isValidElement)
31
+ .filter(child => child?.type === exports.FeatureDomainDescriptionsTreeHeader)),
32
+ react_1.default.createElement("div", null,
33
+ react_1.default.createElement(TreeView_1.default, { defaultCollapseIcon: react_1.default.createElement(ExpandMore_1.default, null), defaultExpandIcon: react_1.default.createElement(ChevronRight_1.default, null), disabledItemsFocusable: false, multiSelect: true, expanded: expandedNodes, onNodeToggle: (_, nodeIds) => setExpandedNodes(nodeIds) }, descriptionsTree.types.map(type => (react_1.default.createElement(components_1.TypeTreeItem, { key: type.nodeId, type: type })))))));
34
+ };
35
+ exports.DomainsDescriptionsTree = DomainsDescriptionsTree;
36
+ function getAllNodeIds(tree) {
37
+ return tree.types
38
+ .map(({ columns, nodeId }, typeIdx) => [
39
+ nodeId,
40
+ columns.map((0, _utils_1.extractProperty)('nodeId')),
41
+ ])
42
+ .flat(2);
43
+ }
44
+ //# sourceMappingURL=domains-descriptions-tree.js.map
@@ -0,0 +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 });
17
+ __exportStar(require("./domains-descriptions-tree"), exports);
18
+ __exportStar(require("./models"), exports);
19
+ __exportStar(require("./context"), exports);
20
+ __exportStar(require("./utils"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DescriptionsTree = void 0;
4
+ const _utils_1 = require("../../../utils");
5
+ var DescriptionsTree;
6
+ (function (DescriptionsTree) {
7
+ function appendGroupId(groups, prefix) {
8
+ const id = DescriptionsTree.createGroupId(prefix);
9
+ return {
10
+ types: groups.types.map((type, typeIdx) => {
11
+ return {
12
+ nodeId: id({ typeIdx }),
13
+ summary: type.summary,
14
+ columns: type.columns.map((column, columnIdx) => ({
15
+ nodeId: id({ typeIdx, columnIdx }),
16
+ summary: column.summary,
17
+ descriptions: column.descriptions.map((description, descriptionIdx) => ({
18
+ ...description,
19
+ nodeId: id({ typeIdx, columnIdx, descriptionIdx }),
20
+ })),
21
+ })),
22
+ };
23
+ }),
24
+ };
25
+ }
26
+ DescriptionsTree.appendGroupId = appendGroupId;
27
+ function createGroupId(prefix) {
28
+ return (props) => [
29
+ (0, _utils_1.isSet)(prefix) && `${prefix}_`,
30
+ (0, _utils_1.isSet)(props.typeIdx) && `t${props.typeIdx}`,
31
+ (0, _utils_1.isSet)(props.columnIdx) && `c${props.columnIdx}`,
32
+ (0, _utils_1.isSet)(props.descriptionIdx) && `d${props.descriptionIdx}`,
33
+ ].join('');
34
+ }
35
+ DescriptionsTree.createGroupId = createGroupId;
36
+ })(DescriptionsTree = exports.DescriptionsTree || (exports.DescriptionsTree = {}));
37
+ //# sourceMappingURL=domains-descriptions-tree.model.js.map
@@ -0,0 +1,18 @@
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 });
17
+ __exportStar(require("./domains-descriptions-tree.model"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDomainPredicate = void 0;
4
+ function createDomainPredicate(selectedDomains, selectedJoinIds) {
5
+ const joinIds = new Set(selectedJoinIds);
6
+ const domainIds = Object.values(selectedDomains).flatMap(d => d.filter(({ joinId }) => (joinIds.size ? joinIds.has(joinId) : true)));
7
+ return (description) => {
8
+ return domainIds.length
9
+ ? description.domains.some(x => domainIds.find(({ domainIdx, joinId }) => x.joinId === joinId && x.domainIdx === domainIdx))
10
+ : joinIds.size
11
+ ? description.domains.some(({ joinId }) => joinIds.has(joinId))
12
+ : true;
13
+ };
14
+ }
15
+ exports.createDomainPredicate = createDomainPredicate;
16
+ //# sourceMappingURL=create-domain-predicate.js.map
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterDomainsDescriptionsTree = void 0;
4
+ const isNotEmpty = (arr) => arr.length > 0;
5
+ function filterDomainsDescriptionsTree(domains, predicateFn) {
6
+ return {
7
+ types: domains.types
8
+ .map(({ summary, columns, nodeId }) => ({
9
+ summary,
10
+ nodeId,
11
+ columns: columns
12
+ .map(column => ({
13
+ summary: column.summary,
14
+ nodeId: column.nodeId,
15
+ descriptions: column.descriptions.filter(predicateFn),
16
+ }))
17
+ .filter(({ descriptions }) => isNotEmpty(descriptions)),
18
+ }))
19
+ .filter(({ columns }) => isNotEmpty(columns)),
20
+ };
21
+ }
22
+ exports.filterDomainsDescriptionsTree = filterDomainsDescriptionsTree;
23
+ //# sourceMappingURL=filter-domains-descriptions-tree.js.map
@@ -0,0 +1,19 @@
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 });
17
+ __exportStar(require("./filter-domains-descriptions-tree"), exports);
18
+ __exportStar(require("./create-domain-predicate"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,38 @@
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.ExplorationPathHeader = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const ExplorationPathHeader = props => {
9
+ const { targetTable, sourceTable, targetColumns, sourceColumns } = props.explorationPath;
10
+ return (react_1.default.createElement("div", { style: {
11
+ display: 'flex',
12
+ alignItems: 'baseline',
13
+ padding: '12px 16px',
14
+ gap: '8px',
15
+ background: 'var(--c-catskill-white)',
16
+ } },
17
+ react_1.default.createElement("h4", { className: "grey-label", style: { margin: 0 } },
18
+ "[#",
19
+ props.explorationPathIndex,
20
+ "]"),
21
+ react_1.default.createElement("div", null,
22
+ targetTable,
23
+ "[",
24
+ react_1.default.createElement("span", { style: {
25
+ color: 'var(--c-blue-700)',
26
+ fontWeight: '500',
27
+ } }, targetColumns.join(', ')),
28
+ "] - ",
29
+ sourceTable,
30
+ "[",
31
+ react_1.default.createElement("span", { style: {
32
+ color: 'var(--c-blue-700)',
33
+ fontWeight: '500',
34
+ } }, sourceColumns.join(', ')),
35
+ "]")));
36
+ };
37
+ exports.ExplorationPathHeader = ExplorationPathHeader;
38
+ //# sourceMappingURL=exploration-path-header.js.map
@@ -0,0 +1,28 @@
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.ExplorationPathJoinList = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const lodash_1 = require("lodash");
9
+ const ExplorationPathJoinList = ({ joins, selectedJoinIds, setSelectedJoinIds }) => {
10
+ const isJoinSelected = (join) => selectedJoinIds.includes(join.joinId);
11
+ function toggleJoinSelection(join) {
12
+ setSelectedJoinIds(isJoinSelected(join)
13
+ ? (0, lodash_1.without)(selectedJoinIds, join.joinId)
14
+ : [...selectedJoinIds, join.joinId]);
15
+ }
16
+ return (react_1.default.createElement(react_1.default.Fragment, null,
17
+ react_1.default.createElement("h4", null, "Joins (# of features)"),
18
+ react_1.default.createElement("div", { style: { columns: 3 } }, joins.map(join => (react_1.default.createElement("div", { key: join.joinId, className: `exploration-path-join ${isJoinSelected(join) ? 'selected' : ''}`, onClick: () => toggleJoinSelection(join) },
19
+ "[",
20
+ join.joinId,
21
+ "] ",
22
+ join.description,
23
+ " (",
24
+ join.numFeatures,
25
+ ")"))))));
26
+ };
27
+ exports.ExplorationPathJoinList = ExplorationPathJoinList;
28
+ //# sourceMappingURL=exploration-path-join-list.js.map
@@ -0,0 +1,19 @@
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 });
17
+ __exportStar(require("./exploration-path-header"), exports);
18
+ __exportStar(require("./exploration-path-join-list"), exports);
19
+ //# sourceMappingURL=index.js.map