dotdata_widgets 0.1.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/README.md +71 -104
  2. package/css/widget.css +1 -1
  3. package/dist/index.js +5 -5
  4. package/dist/index.js.map +1 -1
  5. package/lib/components/ActionFooter.js +21 -0
  6. package/lib/components/WithLabel.js +20 -0
  7. package/lib/components/accordion/Accordion.js +4 -4
  8. package/lib/components/column-analytic-type-icons/analytic-type-category.js +13 -0
  9. package/lib/components/column-analytic-type-icons/analytic-type-datatime.js +13 -0
  10. package/lib/components/column-analytic-type-icons/analytic-type-geo-latitude.js +13 -0
  11. package/lib/components/column-analytic-type-icons/analytic-type-geo-longitude.js +13 -0
  12. package/lib/components/column-analytic-type-icons/analytic-type-numeric.js +13 -0
  13. package/lib/components/column-analytic-type-icons/index.js +22 -0
  14. package/lib/{feature-descriptor/domains-descriptors-tree/components → components/column-source-type-icons}/index.js +1 -1
  15. package/lib/components/column-source-type-icons/source-type-int.js +16 -0
  16. package/lib/{components/input/index.js → embed.js} +2 -2
  17. package/lib/extension.js +32 -19
  18. package/lib/feature/feature-details/FeatureCorrelatedFeaturesTable.js +1 -1
  19. package/lib/feature/feature-details/FeatureDistributionChart.js +1 -6
  20. package/lib/feature/feature-explanation/FeatureExplanation.js +8 -11
  21. package/lib/feature/feature-likes/{feature-likes.js → FeatureLikes.js} +3 -6
  22. package/lib/feature/feature-likes/index.js +1 -1
  23. package/lib/feature/feature-user-explanation/FeatureUserExplanation.js +14 -0
  24. package/lib/feature/feature-user-explanation/FeatureUserExplanationDisplay.js +23 -0
  25. package/lib/feature/feature-user-explanation/explanation-to-user-explanation.js +58 -0
  26. package/lib/{feature-descriptor/domains-descriptors-tree/context → feature/feature-user-explanation}/index.js +3 -2
  27. package/lib/feature-descriptor/domains-descriptions-tree/context/domains-descriptions-selection-context.js +1 -1
  28. package/lib/feature-descriptor/domains-descriptions-tree/context/domains-descriptions-tree-config-context.js +2 -1
  29. package/lib/feature-descriptor/domains-descriptions-tree/context/domains-descriptions-tree-item-selection-context.js +14 -6
  30. package/lib/feature-descriptor/domains-descriptions-tree/domains-descriptions-tree.js +1 -1
  31. package/lib/feature-descriptor/domains-descriptions-tree/index.js +1 -0
  32. package/lib/feature-descriptor/domains-descriptions-tree/models/domains-descriptions-tree.model.js +3 -6
  33. package/lib/feature-descriptor/feature-descriptor-editor/AggregationEditor.js +206 -109
  34. package/lib/feature-descriptor/feature-descriptor-editor/FeatureDescriptorEditor.js +32 -21
  35. package/lib/feature-descriptor/feature-descriptor-editor/FilterEditor.js +69 -61
  36. package/lib/feature-descriptor/feature-descriptor-editor/JoinEditor.js +50 -0
  37. package/lib/feature-descriptor/feature-descriptor-editor/components/EditorTemplateRenderer.js +14 -0
  38. package/lib/feature-descriptor/feature-descriptor-editor/components/aggregations/AggregationTypeSelection.js +11 -11
  39. package/lib/feature-descriptor/feature-descriptor-editor/components/aggregations/ColumnEditor.js +15 -0
  40. package/lib/feature-descriptor/feature-descriptor-editor/components/aggregations/DistanceEditor.js +30 -13
  41. package/lib/feature-descriptor/feature-descriptor-editor/components/aggregations/LastKEditor.js +17 -0
  42. package/lib/feature-descriptor/feature-descriptor-editor/components/aggregations/TemporalChangeEditor.js +19 -16
  43. package/lib/feature-descriptor/feature-descriptor-editor/components/aggregations/TopicEditor.js +16 -0
  44. package/lib/feature-descriptor/feature-descriptor-editor/components/aggregations/index.js +8 -7
  45. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/BooleanField.js +31 -0
  46. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/ChipField.js +27 -0
  47. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/ColumnField.js +47 -0
  48. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/NumberField.js +12 -20
  49. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/StringField.js +12 -20
  50. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/TableColumnField.js +30 -0
  51. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/TableField.js +17 -0
  52. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/_InlineEditorField.js +48 -0
  53. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/index.js +10 -7
  54. package/lib/feature-descriptor/feature-descriptor-editor/components/filter/FilterTypeSelection.js +14 -11
  55. package/lib/feature-descriptor/feature-descriptor-editor/components/filter/index.js +3 -5
  56. package/lib/feature-descriptor/feature-descriptor-editor/components/index.js +7 -8
  57. package/lib/feature-descriptor/feature-descriptor-editor/components/join/JoinConditionEditor.js +96 -0
  58. package/lib/feature-descriptor/feature-descriptor-editor/components/join/JoinConditionTypeSelection.js +15 -0
  59. package/lib/feature-descriptor/feature-descriptor-editor/components/join/JoinTableColumnSelector.js +15 -0
  60. package/lib/feature-descriptor/{domains-descriptors-tree/models → feature-descriptor-editor/components/join}/index.js +2 -1
  61. package/lib/feature-descriptor/feature-descriptor-editor/context/feature-descriptor-editor-context.js +38 -0
  62. package/lib/feature-descriptor/feature-descriptor-editor/context/feature-descriptor-editor.js +46 -0
  63. package/lib/feature-descriptor/{context → feature-descriptor-editor/context}/index.js +2 -1
  64. package/lib/feature-descriptor/feature-descriptor-editor/index.js +5 -5
  65. package/lib/feature-descriptor/feature-descriptor-editor/models/aggregation-draft.js +351 -0
  66. package/lib/feature-descriptor/feature-descriptor-editor/models/common-field-draft.js +13 -0
  67. package/lib/feature-descriptor/feature-descriptor-editor/models/feature-descriptor-editor.js +29 -0
  68. package/lib/feature-descriptor/feature-descriptor-editor/models/filter-draft.js +79 -0
  69. package/lib/feature-descriptor/feature-descriptor-editor/models/index.js +21 -0
  70. package/lib/feature-descriptor/feature-descriptor-editor/models/join-draft.js +78 -0
  71. package/lib/models/column/column.js +59 -0
  72. package/lib/models/column/field.js +2 -4
  73. package/lib/models/column/index.js +3 -0
  74. package/lib/models/column/table-columns.js +27 -0
  75. package/lib/models/column/table.js +2 -4
  76. package/lib/models/feature/feature.js +13 -0
  77. package/lib/models/feature-descriptor/fd_data/aggregation.js +86 -46
  78. package/lib/models/feature-descriptor/fd_data/filter.js +32 -20
  79. package/lib/models/feature-descriptor/fd_data/index.js +5 -7
  80. package/lib/models/feature-descriptor/fd_data/join.js +20 -4
  81. package/lib/models/feature-descriptor/fd_data/utils.js +25 -0
  82. package/lib/models/feature-descriptor/feature-descriptor.js +2 -4
  83. package/lib/models/feature-descriptor/index.js +4 -6
  84. package/lib/{feature-descriptors-domain/feature-descriptor-domain-descriptions/components/index.js → notebook.js} +2 -2
  85. package/lib/utils/asserations.js +1 -1
  86. package/lib/utils/crypto.js +28 -0
  87. package/lib/utils/index.js +2 -0
  88. package/lib/utils/localize.js +1 -1
  89. package/lib/utils/redux/action.js +35 -0
  90. package/lib/utils/redux/index.js +10 -0
  91. package/lib/{feature-descriptor/feature-descriptor-editor/components/field-widgets/widget-interface.js → utils/redux/models.js} +1 -1
  92. package/lib/utils/redux/reducer.js +30 -0
  93. package/lib/{feature-descriptor/feature-descriptor-editor/components/widgets/widget-interface.js → utils/types.js} +1 -1
  94. package/lib/utils/widget-api.js +47 -0
  95. package/lib/utils/widget-model/widget-model-context.js +1 -1
  96. package/lib/widgets/FeatureLeaderboardWidget.js +14 -21
  97. package/lib/widgets/FeatureSpaceWidget.js +3 -19
  98. package/lib/widgets/feature-leaderboard/FeatureLeaderboardView.js +45 -10
  99. package/lib/widgets/feature-leaderboard/components/{leaderboard-feature-likes.js → LeaderboardFeatureLikes.js} +4 -4
  100. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntryDrawer.js +88 -0
  101. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntryFeatureEditor.js +31 -0
  102. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntryHeader.js +15 -0
  103. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardUserExplanation.js +28 -0
  104. package/lib/widgets/feature-space/FeatureSpaceView.js +6 -6
  105. package/package.json +8 -10
  106. package/lib/components/input/input.js +0 -14
  107. package/lib/feature-descriptor/context/fd-domains-descriptions-selection.context.js +0 -37
  108. package/lib/feature-descriptor/domains-descriptors-tree/components/column-tree-item.js +0 -16
  109. package/lib/feature-descriptor/domains-descriptors-tree/components/descriptions-tree-item.js +0 -50
  110. package/lib/feature-descriptor/domains-descriptors-tree/components/tree-item-label.js +0 -56
  111. package/lib/feature-descriptor/domains-descriptors-tree/components/type-tree-item.js +0 -19
  112. package/lib/feature-descriptor/domains-descriptors-tree/config/index.js +0 -2
  113. package/lib/feature-descriptor/domains-descriptors-tree/context/domains-descriptions-tree-config-context.js +0 -43
  114. package/lib/feature-descriptor/domains-descriptors-tree/context/domains-descriptions-tree-context-provider.js +0 -53
  115. package/lib/feature-descriptor/domains-descriptors-tree/context/domains-descriptions-tree-item-selection-context.js +0 -56
  116. package/lib/feature-descriptor/domains-descriptors-tree/domains-descriptions-tree.js +0 -44
  117. package/lib/feature-descriptor/domains-descriptors-tree/index.js +0 -21
  118. package/lib/feature-descriptor/domains-descriptors-tree/models/domains-descriptions-tree.model.js +0 -37
  119. package/lib/feature-descriptor/domains-descriptors-tree/utils/create-domain-predicate.js +0 -16
  120. package/lib/feature-descriptor/domains-descriptors-tree/utils/filter-domains-descriptions-tree.js +0 -23
  121. package/lib/feature-descriptor/domains-descriptors-tree/utils/index.js +0 -19
  122. package/lib/feature-descriptor/feature-descriptor-editor/components/ItemSelection.js +0 -14
  123. package/lib/feature-descriptor/feature-descriptor-editor/components/StringAutocomplete.js +0 -13
  124. package/lib/feature-descriptor/feature-descriptor-editor/components/ValueInput.js +0 -2
  125. package/lib/feature-descriptor/feature-descriptor-editor/components/aggregations/AggregationSelection.js +0 -15
  126. package/lib/feature-descriptor/feature-descriptor-editor/components/aggregations/aggregation-context.js +0 -37
  127. package/lib/feature-descriptor/feature-descriptor-editor/components/explainer.js +0 -15
  128. package/lib/feature-descriptor/feature-descriptor-editor/components/fd-operation-context.js +0 -19
  129. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/FieldLabel.js +0 -17
  130. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/ItemSelection.js +0 -20
  131. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/StringSelectionField.js +0 -24
  132. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/ValueInput.js +0 -19
  133. package/lib/feature-descriptor/feature-descriptor-editor/components/widgets/ItemSelection.js +0 -20
  134. package/lib/feature-descriptor/feature-descriptor-editor/components/widgets/Label.js +0 -2
  135. package/lib/feature-descriptor/feature-descriptor-editor/components/widgets/ValueInput.js +0 -19
  136. package/lib/feature-descriptor/feature-descriptor-editor/components/widgets/index.js +0 -19
  137. package/lib/feature-descriptor/feature-details/FeatureCorrelatedFeaturesTable.js +0 -22
  138. package/lib/feature-descriptor/feature-details/FeatureDistributionChart.js +0 -218
  139. package/lib/feature-descriptor/feature-details/FeatureStatisticsTable.js +0 -44
  140. package/lib/feature-descriptor/feature-details/index.js +0 -20
  141. package/lib/feature-descriptor/feature-explanation/FeatureExplanation.js +0 -48
  142. package/lib/feature-descriptor/feature-explanation/components/ColoredExplanationBlock.js +0 -36
  143. package/lib/feature-descriptor/feature-explanation/components/ColumnExplanationBlock.js +0 -12
  144. package/lib/feature-descriptor/feature-explanation/components/DataSlotExplanationBlock.js +0 -12
  145. package/lib/feature-descriptor/feature-explanation/components/PetExplanationBlock.js +0 -11
  146. package/lib/feature-descriptor/feature-explanation/components/TextExplanationBlock.js +0 -10
  147. package/lib/feature-descriptor/feature-explanation/components/TextWithDataSlotContextExplanationBlock.js +0 -10
  148. package/lib/feature-descriptor/feature-explanation/components/TopicExplanationBlock.js +0 -10
  149. package/lib/feature-descriptor/feature-explanation/components/UnknownExplanationBlock.js +0 -10
  150. package/lib/feature-descriptors-domain/context/feature-domain-descriptions-selection.context.js +0 -37
  151. package/lib/feature-descriptors-domain/context/feature-domain-selection.context.js +0 -37
  152. package/lib/feature-descriptors-domain/context/index.js +0 -19
  153. package/lib/feature-descriptors-domain/exploration-path/exploration-path-header.js +0 -21
  154. package/lib/feature-descriptors-domain/exploration-path/exploration-path-join-list.js +0 -16
  155. package/lib/feature-descriptors-domain/exploration-path/index.js +0 -19
  156. package/lib/feature-descriptors-domain/fd-grouped-domain-tree.js +0 -81
  157. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/column-tree-item.js +0 -17
  158. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/descriptions-tree-item.js +0 -49
  159. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/selection-indicator-with-label.js +0 -40
  160. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/components/type-tree-item.js +0 -16
  161. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/feature-descriptor-domain-descriptions-context.js +0 -43
  162. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/feature-descriptor-domain-descriptions-tree.js +0 -57
  163. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions/index.js +0 -18
  164. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/column-tree-item.js +0 -17
  165. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/description-tree-item.js +0 -2
  166. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/descriptions-tree-item.js +0 -49
  167. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/index.js +0 -18
  168. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/selection-indicator-with-label.js +0 -19
  169. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/tree-item-label.js +0 -15
  170. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/tree-level-item.js +0 -54
  171. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/components/type-tree-item.js +0 -16
  172. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/feature-descriptor-domain-descriptions-tree.js +0 -55
  173. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/feature-descriptor-domain-descriptions-tree.model.js +0 -2
  174. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/index.js +0 -18
  175. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/utils/filter-domain-descriptions.js +0 -21
  176. package/lib/feature-descriptors-domain/feature-descriptor-domain-descriptions-tree/utils/index.js +0 -18
  177. package/lib/feature-descriptors-domain/feature-descriptor-grouped-domain-tree.js +0 -87
  178. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/column-tree-item.js +0 -16
  179. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/descriptions-tree-item.js +0 -50
  180. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/index.js +0 -18
  181. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/selection-indicator-with-label.js +0 -67
  182. package/lib/feature-descriptors-domain/feature-domain-descriptions/components/type-tree-item.js +0 -19
  183. package/lib/feature-descriptors-domain/feature-domain-descriptions/feature-domain-descriptions-context.js +0 -37
  184. package/lib/feature-descriptors-domain/feature-domain-descriptions/feature-domain-descriptions-tree.js +0 -51
  185. package/lib/feature-descriptors-domain/feature-domain-descriptions/index.js +0 -18
  186. package/lib/feature-descriptors-domain/feature-exploration-path/exploration-path-header.js +0 -38
  187. package/lib/feature-descriptors-domain/feature-exploration-path/exploration-path-join-list.js +0 -36
  188. package/lib/feature-descriptors-domain/feature-exploration-path/index.js +0 -19
  189. package/lib/feature-descriptors-domain/grouped-domains-descriptions-list.js +0 -58
  190. package/lib/feature-descriptors-domain/selected-feature-domain-context.js +0 -2
  191. package/lib/feature-descriptors-domain/utils/filter-domain-descriptions.js +0 -23
  192. package/lib/feature-descriptors-domain/utils/filter-grouped-domain-descriptions.js +0 -23
  193. package/lib/feature-descriptors-domain/utils/index.js +0 -18
  194. package/lib/models/feature/feature-leaderboard.js +0 -3
  195. package/lib/models/feature-descriptor/feature-descriptors-domain.js +0 -3
  196. package/lib/models/feature-descriptors-domain/fd-domain-description.js +0 -9
  197. package/lib/models/feature-descriptors-domain/fd-grouped-domain-descriptions.js +0 -3
  198. package/lib/models/feature-descriptors-domain/index.js +0 -19
  199. package/lib/models/feature-space/feature-space-description.js +0 -3
  200. package/lib/models/index.js +0 -2
  201. package/lib/utils/model-transform-hook.js +0 -21
  202. package/lib/utils/set.js +0 -14
  203. package/lib/utils/widget/index.js +0 -19
  204. package/lib/utils/widget/widget-model-context.js +0 -38
  205. package/lib/utils/widget/widget-model.js +0 -30
  206. package/lib/widgets/feature-leaderboard/FeatureLeaderboardEntries.js +0 -18
  207. package/lib/widgets/feature-leaderboard/entry-item/FeatureLeaderboardEntryDetails.js +0 -23
  208. package/lib/widgets/feature-leaderboard/entry-item/FeatureLeaderboardEntryHeader.js +0 -35
  209. package/lib/widgets/feature-leaderboard/entry-item/FeatureLeaderboardEntryItem.js +0 -22
  210. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntry.js +0 -19
  211. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntryRow.js +0 -23
  212. package/lib/widgets/feature-leaderboard/leaderboard-overview/overview-metric-slider.js +0 -2
  213. package/lib/widgets/feature-space/FeatureSpaceDomain.js +0 -75
  214. package/lib/widgets/feature-space/FeatureSpaceDomainDescriptions.js +0 -80
  215. package/lib/widgets/feature-space/FeatureSpaceDomainsDescriptions.js +0 -88
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./type-tree-item"), exports);
18
- //# sourceMappingURL=index.js.map
17
+ __exportStar(require("./index"), exports);
18
+ //# sourceMappingURL=notebook.js.map
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assertIsSet = void 0;
4
4
  function assertIsSet(obj, message) {
5
5
  if (obj === undefined || obj === null) {
6
- throw new Error(message ?? `Expected ${obj} to be defined`);
6
+ throw new Error(message !== null && message !== void 0 ? message : `Expected ${obj} to be defined`);
7
7
  }
8
8
  }
9
9
  exports.assertIsSet = assertIsSet;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.sha256 = exports.uuid4 = void 0;
13
+ const object_1 = require("./object");
14
+ function uuid4() {
15
+ return crypto.randomUUID();
16
+ }
17
+ exports.uuid4 = uuid4;
18
+ function sha256(message, length) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ const msgUint8 = new TextEncoder().encode(message);
21
+ const hashBuffer = yield crypto.subtle.digest('SHA-256', msgUint8);
22
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
23
+ const hashArray3 = (0, object_1.isSet)(length) ? hashArray.slice(0, length) : hashArray;
24
+ return hashArray3.map(b => b.toString(16).padStart(2, '0')).join('');
25
+ });
26
+ }
27
+ exports.sha256 = sha256;
28
+ //# sourceMappingURL=crypto.js.map
@@ -17,4 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./asserations"), exports);
18
18
  __exportStar(require("./object"), exports);
19
19
  __exportStar(require("./localize"), exports);
20
+ __exportStar(require("./transducer"), exports);
21
+ __exportStar(require("./crypto"), exports);
20
22
  //# sourceMappingURL=index.js.map
@@ -11,7 +11,7 @@ var Localize;
11
11
  function formatNumber(value, unsetSymbol) {
12
12
  return (0, object_1.isSet)(value)
13
13
  ? numberDefaultFormatter.format(value)
14
- : unsetSymbol ?? '';
14
+ : unsetSymbol !== null && unsetSymbol !== void 0 ? unsetSymbol : '';
15
15
  }
16
16
  Localize.formatNumber = formatNumber;
17
17
  })(Localize = exports.Localize || (exports.Localize = {}));
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.union = exports.props = exports.createAction = void 0;
4
+ function createAction(type, config) {
5
+ if (typeof config === 'function') {
6
+ return defineType(type, (...args) => (Object.assign(Object.assign({}, config(...args)), { type })));
7
+ }
8
+ const as = config ? config._as : 'empty';
9
+ switch (as) {
10
+ case 'empty':
11
+ return defineType(type, () => ({ type }));
12
+ case 'props':
13
+ return defineType(type, (props) => (Object.assign(Object.assign({}, props), { type })));
14
+ default:
15
+ throw new Error('Unexpected config.');
16
+ }
17
+ }
18
+ exports.createAction = createAction;
19
+ function props() {
20
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
21
+ return { _as: 'props', _p: undefined };
22
+ }
23
+ exports.props = props;
24
+ function union(creators) {
25
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
26
+ return undefined;
27
+ }
28
+ exports.union = union;
29
+ function defineType(type, creator) {
30
+ return Object.defineProperty(creator, 'type', {
31
+ value: type,
32
+ writable: false,
33
+ });
34
+ }
35
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.on = exports.createReducer = exports.props = exports.createAction = void 0;
4
+ var action_1 = require("./action");
5
+ Object.defineProperty(exports, "createAction", { enumerable: true, get: function () { return action_1.createAction; } });
6
+ Object.defineProperty(exports, "props", { enumerable: true, get: function () { return action_1.props; } });
7
+ var reducer_1 = require("./reducer");
8
+ Object.defineProperty(exports, "createReducer", { enumerable: true, get: function () { return reducer_1.createReducer; } });
9
+ Object.defineProperty(exports, "on", { enumerable: true, get: function () { return reducer_1.on; } });
10
+ //# sourceMappingURL=index.js.map
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=widget-interface.js.map
3
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createReducer = exports.on = void 0;
4
+ function on(...args) {
5
+ const reducer = args.pop();
6
+ const types = args.map(creator => creator.type);
7
+ return { reducer, types };
8
+ }
9
+ exports.on = on;
10
+ function createReducer(...ons) {
11
+ const map = new Map();
12
+ for (const on of ons) {
13
+ for (const type of on.types) {
14
+ const existingReducer = map.get(type);
15
+ if (existingReducer) {
16
+ const newReducer = (state, action) => on.reducer(existingReducer(state, action), action);
17
+ map.set(type, newReducer);
18
+ }
19
+ else {
20
+ map.set(type, on.reducer);
21
+ }
22
+ }
23
+ }
24
+ return function (state, action) {
25
+ const reducer = map.get(action.type);
26
+ return reducer ? reducer(state, action) : state;
27
+ };
28
+ }
29
+ exports.createReducer = createReducer;
30
+ //# sourceMappingURL=reducer.js.map
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=widget-interface.js.map
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WidgetApi = void 0;
13
+ const crypto_1 = require("./crypto");
14
+ var WidgetApi;
15
+ (function (WidgetApi) {
16
+ const events = new Map();
17
+ function init(modelContext) {
18
+ return {
19
+ callMethod: function callApiMethod(method, params) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ const id = (0, crypto_1.uuid4)();
22
+ const promise = new Promise((resolve, reject) => {
23
+ events.set(id, { resolve, reject });
24
+ });
25
+ modelContext.send({ id, method, params }, {});
26
+ return promise;
27
+ });
28
+ },
29
+ };
30
+ }
31
+ WidgetApi.init = init;
32
+ function handleEvent(event) {
33
+ const handler = events.get(event.id);
34
+ if (!handler) {
35
+ return;
36
+ }
37
+ if ('error' in event) {
38
+ handler.reject(event.error);
39
+ }
40
+ else {
41
+ handler.resolve(event.response);
42
+ }
43
+ events.delete(event.id);
44
+ }
45
+ WidgetApi.handleEvent = handleEvent;
46
+ })(WidgetApi = exports.WidgetApi || (exports.WidgetApi = {}));
47
+ //# sourceMappingURL=widget-api.js.map
@@ -36,7 +36,7 @@ function useWidgetModelContext() {
36
36
  exports.useWidgetModelContext = useWidgetModelContext;
37
37
  const WidgetModelContextProvider = (Component) => {
38
38
  return (props) => (react_1.default.createElement(exports.WidgetModelContext.Provider, { value: props.model },
39
- react_1.default.createElement(Component, { ...props })));
39
+ react_1.default.createElement(Component, Object.assign({}, props))));
40
40
  };
41
41
  exports.WidgetModelContextProvider = WidgetModelContextProvider;
42
42
  //# sourceMappingURL=widget-model-context.js.map
@@ -9,11 +9,12 @@ exports.FeatureLeaderboardWidgetView = exports.FeatureLeaderboardWidgetModel = v
9
9
  const react_1 = __importDefault(require("react"));
10
10
  const react_dom_1 = __importDefault(require("react-dom"));
11
11
  const base_1 = require("@jupyter-widgets/base");
12
+ const widget_model_1 = require("../utils/widget-model");
13
+ const widget_api_1 = require("../utils/widget-api");
12
14
  const version_1 = require("../version");
13
15
  const FeatureLeaderboardView_1 = require("./feature-leaderboard/FeatureLeaderboardView");
14
- const widget_model_1 = require("../utils/widget-model");
15
16
  const defaultState = {
16
- value: { allEntries: [] },
17
+ value: { allEntries: [], tableColumns: {} },
17
18
  confidence: 0.95,
18
19
  max_collinearity: 0.95,
19
20
  liked_features: [],
@@ -21,28 +22,11 @@ const defaultState = {
21
22
  };
22
23
  class FeatureLeaderboardWidgetModel extends base_1.DOMWidgetModel {
23
24
  defaults() {
24
- return {
25
- ...super.defaults(),
26
- _model_name: FeatureLeaderboardWidgetModel.model_name,
27
- _model_module: FeatureLeaderboardWidgetModel.model_module,
28
- _model_module_version: FeatureLeaderboardWidgetModel.model_module_version,
29
- _view_name: FeatureLeaderboardWidgetModel.view_name,
30
- _view_module: FeatureLeaderboardWidgetModel.view_module,
31
- _view_module_version: FeatureLeaderboardWidgetModel.view_module_version,
32
- ...defaultState,
33
- };
25
+ return Object.assign(Object.assign(Object.assign({}, super.defaults()), { _model_name: 'FeatureLeaderboardWidgetModel', _model_module: version_1.MODULE_NAME, _model_module_version: version_1.MODULE_VERSION, _view_name: 'FeatureLeaderboardWidgetView', _view_module: version_1.MODULE_NAME, _view_module_version: version_1.MODULE_VERSION }), defaultState);
34
26
  }
35
27
  }
36
28
  exports.FeatureLeaderboardWidgetModel = FeatureLeaderboardWidgetModel;
37
- FeatureLeaderboardWidgetModel.serializers = {
38
- ...base_1.DOMWidgetModel.serializers,
39
- };
40
- FeatureLeaderboardWidgetModel.model_name = 'FeatureLeaderboardWidgetModel';
41
- FeatureLeaderboardWidgetModel.model_module = version_1.MODULE_NAME;
42
- FeatureLeaderboardWidgetModel.model_module_version = version_1.MODULE_VERSION;
43
- FeatureLeaderboardWidgetModel.view_name = 'FeatureLeaderboardWidgetView'; // Set to null if no view
44
- FeatureLeaderboardWidgetModel.view_module = version_1.MODULE_NAME; // Set to null if no view
45
- FeatureLeaderboardWidgetModel.view_module_version = version_1.MODULE_VERSION;
29
+ FeatureLeaderboardWidgetModel.serializers = Object.assign({}, base_1.DOMWidgetModel.serializers);
46
30
  class FeatureLeaderboardWidgetView extends base_1.DOMWidgetView {
47
31
  render() {
48
32
  this.el.classList.add('dotdata-widget');
@@ -57,6 +41,15 @@ class FeatureLeaderboardWidgetView extends base_1.DOMWidgetView {
57
41
  console.error('FeatureSpaceWidgetView', err);
58
42
  }
59
43
  }
44
+ events() {
45
+ return {
46
+ create_feature: 'create_feature',
47
+ set_user_explanation: 'set_user_explanation',
48
+ };
49
+ }
50
+ handle_message(event) {
51
+ widget_api_1.WidgetApi.handleEvent(event);
52
+ }
60
53
  }
61
54
  exports.FeatureLeaderboardWidgetView = FeatureLeaderboardWidgetView;
62
55
  //# sourceMappingURL=FeatureLeaderboardWidget.js.map
@@ -18,34 +18,18 @@ const defaultState = {
18
18
  filters: { types: [] },
19
19
  aggregations: { types: [] },
20
20
  },
21
+ _selected_joins: [],
21
22
  _selected_filters: [],
22
23
  _selected_aggregations: [],
23
24
  configuration: { selectable: true, disabled: false },
24
25
  };
25
26
  class FeatureSpaceWidgetModel extends base_1.DOMWidgetModel {
26
27
  defaults() {
27
- return {
28
- ...super.defaults(),
29
- _model_name: FeatureSpaceWidgetModel.model_name,
30
- _model_module: FeatureSpaceWidgetModel.model_module,
31
- _model_module_version: FeatureSpaceWidgetModel.model_module_version,
32
- _view_name: FeatureSpaceWidgetModel.view_name,
33
- _view_module: FeatureSpaceWidgetModel.view_module,
34
- _view_module_version: FeatureSpaceWidgetModel.view_module_version,
35
- ...defaultState,
36
- };
28
+ return Object.assign(Object.assign(Object.assign({}, super.defaults()), { _model_name: 'FeatureSpaceWidgetModel', _model_module: version_1.MODULE_NAME, _model_module_version: version_1.MODULE_VERSION, _view_name: 'FeatureSpaceWidgetView', _view_module: version_1.MODULE_NAME, _view_module_version: version_1.MODULE_VERSION }), defaultState);
37
29
  }
38
30
  }
39
31
  exports.FeatureSpaceWidgetModel = FeatureSpaceWidgetModel;
40
- FeatureSpaceWidgetModel.serializers = {
41
- ...base_1.DOMWidgetModel.serializers,
42
- };
43
- FeatureSpaceWidgetModel.model_name = 'FeatureSpaceWidgetModel';
44
- FeatureSpaceWidgetModel.model_module = version_1.MODULE_NAME;
45
- FeatureSpaceWidgetModel.model_module_version = version_1.MODULE_VERSION;
46
- FeatureSpaceWidgetModel.view_name = 'FeatureSpaceWidgetView'; // Set to null if no view
47
- FeatureSpaceWidgetModel.view_module = version_1.MODULE_NAME; // Set to null if no view
48
- FeatureSpaceWidgetModel.view_module_version = version_1.MODULE_VERSION;
32
+ FeatureSpaceWidgetModel.serializers = Object.assign({}, base_1.DOMWidgetModel.serializers);
49
33
  class FeatureSpaceWidgetView extends base_1.DOMWidgetView {
50
34
  render() {
51
35
  this.el.classList.add('dotdata-widget');
@@ -6,13 +6,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.FeatureLeaderboardView = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const material_1 = require("@mui/material");
9
+ const column_1 = require("../../models/column");
10
+ const feature_1 = require("../../models/feature");
9
11
  const _utils_1 = require("../../utils");
10
12
  const widget_theme_1 = require("../../utils/widget-theme");
11
13
  const widget_model_1 = require("../../utils/widget-model");
12
14
  const transducer_1 = require("../../utils/transducer");
15
+ const FeatureLeaderboardEntryDrawer_1 = require("./leaderboard-entry/FeatureLeaderboardEntryDrawer");
13
16
  const FeatureLeaderboardOverview_1 = require("./FeatureLeaderboardOverview");
14
- const FeatureLeaderboardEntry_1 = require("./leaderboard-entry/FeatureLeaderboardEntry");
15
- const FeatureLeaderboardEntryRow_1 = require("./leaderboard-entry/FeatureLeaderboardEntryRow");
16
17
  const FeatureLeaderboardView = ({ model }) => {
17
18
  const [featureLeaderboard] = (0, widget_model_1.useModelState)('value');
18
19
  const isAssessed = (0, _utils_1.isNotSet)(featureLeaderboard.isAssessed) || featureLeaderboard.isAssessed;
@@ -20,20 +21,54 @@ const FeatureLeaderboardView = ({ model }) => {
20
21
  const [maxCollinearity, setMaxCollinearity] = (0, widget_model_1.useModelState)('max_collinearity');
21
22
  const [explanationSearch, setExplanationSearch] = react_1.default.useState(() => '');
22
23
  const featureEntries = react_1.default.useMemo(() => filterFeatures(featureLeaderboard, maxCollinearity, confidence, explanationSearch, isAssessed), [maxCollinearity, confidence, explanationSearch, featureLeaderboard]);
24
+ const tableColumns = react_1.default.useMemo(() => featureLeaderboard.tableColumns
25
+ ? column_1.TableColumns.fromSimplified(featureLeaderboard.tableColumns)
26
+ : {}, [featureLeaderboard.tableColumns]);
27
+ const [copiedFeature, setCopiedFeature] = react_1.default.useState(() => undefined);
23
28
  return (react_1.default.createElement(material_1.ThemeProvider, { theme: widget_theme_1.theme },
24
29
  react_1.default.createElement(FeatureLeaderboardOverview_1.FeatureLeaderboardOverview, { isAssessed: isAssessed, confidence: confidence, setConfidence: setConfidence, maxCollinearity: maxCollinearity, setMaxCollinearity: setMaxCollinearity, setSearch: setExplanationSearch }),
25
30
  react_1.default.createElement("br", null),
26
- react_1.default.createElement("div", { style: { display: 'inline-block', minWidth: '100%' } }, isAssessed
27
- ? featureEntries.map(featureEntry => (react_1.default.createElement(FeatureLeaderboardEntry_1.FeatureLeaderboardEntry, { key: featureEntry.feature.id, featureEntry: featureEntry })))
28
- : featureEntries.map(featureEntry => (react_1.default.createElement("div", { className: "feature-leaderboard-entry-row-wrapper", key: featureEntry.feature.id },
29
- react_1.default.createElement(FeatureLeaderboardEntryRow_1.FeatureLeaderboardEntryRow, { feature: featureEntry.feature })))))));
31
+ react_1.default.createElement("div", { className: "feature-entries-header", style: { display: 'flex' } },
32
+ react_1.default.createElement("span", { className: "feature-id", style: { marginLeft: isAssessed ? '30px' : 0 } }, "Feature ID"),
33
+ isAssessed ? react_1.default.createElement("span", { className: "confidence" }, "Confidence") : null,
34
+ react_1.default.createElement("span", { className: "explanation" }, "Explanation")),
35
+ react_1.default.createElement("div", { style: { display: 'inline-block', minWidth: '100%' } }, featureEntries.map(featureEntry => (react_1.default.createElement(react_1.default.Fragment, null,
36
+ react_1.default.createElement(FeatureLeaderboardEntryDrawer_1.FeatureLeaderboardEntryDrawer, { key: featureEntry.feature.id, featureEntry: featureEntry, tableColumn: tableColumns, isAssessed: isAssessed, config: {
37
+ onSetModel: mode => {
38
+ if (mode === FeatureLeaderboardEntryDrawer_1.DrawerMode.Copy) {
39
+ const originId = feature_1.FeatureId.getOriginId(featureEntry.feature.id);
40
+ (0, _utils_1.sha256)(`${new Date()}_${featureEntry.feature.id}`, 8).then(id => {
41
+ const feature = Object.assign(Object.assign({}, featureEntry), { isAssessed: false, feature: Object.assign(Object.assign({}, featureEntry.feature), { id: `${originId}_${id}` }) });
42
+ setCopiedFeature({
43
+ feature,
44
+ parentId: featureEntry.feature.id,
45
+ });
46
+ });
47
+ }
48
+ return mode !== FeatureLeaderboardEntryDrawer_1.DrawerMode.Copy;
49
+ },
50
+ } }),
51
+ (copiedFeature === null || copiedFeature === void 0 ? void 0 : copiedFeature.parentId) === featureEntry.feature.id ? (react_1.default.createElement("div", { style: { marginLeft: '30px' } },
52
+ react_1.default.createElement(FeatureLeaderboardEntryDrawer_1.FeatureLeaderboardEntryDrawer, { featureEntry: copiedFeature.feature, tableColumn: tableColumns, isAssessed: false, config: {
53
+ initMode: FeatureLeaderboardEntryDrawer_1.DrawerMode.Copy,
54
+ isWithLikes: false,
55
+ isWithActions: false,
56
+ onCancel: () => setCopiedFeature(undefined),
57
+ } }),
58
+ react_1.default.createElement("br", null))) : null))))));
30
59
  };
31
60
  exports.FeatureLeaderboardView = FeatureLeaderboardView;
32
61
  function filterFeatures(featureLeaderboard, maxCollinearity, confidence, explanationSearchPhrase, isAssessed) {
33
- const explanationSearchFilter = (entry) => !explanationSearchPhrase ||
34
- entry.feature.explanation_str?.includes(explanationSearchPhrase);
35
- const correlationFilter = (entry) => entry.maxAbsCorrelationOfSimplerFeature <= maxCollinearity;
36
- const confidenceFilter = (entry) => entry.signalConfidence >= confidence;
62
+ const shouldCheckIsAssessed = (entry) => (0, _utils_1.isSet)(entry.isAssessed) ? entry.isAssessed : true;
63
+ const explanationSearchFilter = (entry) => {
64
+ var _a;
65
+ return !explanationSearchPhrase ||
66
+ ((_a = entry.feature.explanation_str) === null || _a === void 0 ? void 0 : _a.includes(explanationSearchPhrase));
67
+ };
68
+ const correlationFilter = (entry) => shouldCheckIsAssessed(entry)
69
+ ? entry.maxAbsCorrelationOfSimplerFeature <= maxCollinearity
70
+ : true;
71
+ const confidenceFilter = (entry) => shouldCheckIsAssessed(entry) ? entry.signalConfidence >= confidence : true;
37
72
  const reduces = isAssessed
38
73
  ? (0, transducer_1.compose)((0, transducer_1.filter)(explanationSearchFilter), (0, transducer_1.filter)(correlationFilter), (0, transducer_1.filter)(confidenceFilter))
39
74
  : (0, transducer_1.compose)((0, transducer_1.filter)(explanationSearchFilter));
@@ -3,12 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LeaderBoardFeatureLikes = void 0;
6
+ exports.LeaderboardFeatureLikes = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const lodash_1 = require("lodash");
9
9
  const widget_model_1 = require("../../../utils/widget-model");
10
10
  const feature_likes_1 = require("../../../feature/feature-likes");
11
- const LeaderBoardFeatureLikes = ({ featureId, }) => {
11
+ const LeaderboardFeatureLikes = ({ featureId, }) => {
12
12
  const [likedFeatures, setLikedFeatures] = (0, widget_model_1.useModelState)('liked_features');
13
13
  const [dislikedFeatures, setDislikedFeatures] = (0, widget_model_1.useModelState)('disliked_features');
14
14
  const [liked, setLiked] = react_1.default.useState(() => feature_likes_1.FeatureLike.Neutral);
@@ -46,5 +46,5 @@ const LeaderBoardFeatureLikes = ({ featureId, }) => {
46
46
  }
47
47
  return (react_1.default.createElement(feature_likes_1.FeatureLikes, { liked: liked, toggleIsLiked: toggleIsLiked, toggleIsDisliked: toggleIsDisliked }));
48
48
  };
49
- exports.LeaderBoardFeatureLikes = LeaderBoardFeatureLikes;
50
- //# sourceMappingURL=leaderboard-feature-likes.js.map
49
+ exports.LeaderboardFeatureLikes = LeaderboardFeatureLikes;
50
+ //# sourceMappingURL=LeaderboardFeatureLikes.js.map
@@ -0,0 +1,88 @@
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.FeatureLeaderboardEntryDrawer = exports.DrawerMode = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const material_1 = require("@mui/material");
9
+ const Code_1 = __importDefault(require("@mui/icons-material/Code"));
10
+ const ModeEdit_1 = __importDefault(require("@mui/icons-material/ModeEdit"));
11
+ const CopyAll_1 = __importDefault(require("@mui/icons-material/CopyAll"));
12
+ const _utils_1 = require("../../../utils");
13
+ const LeaderboardFeatureLikes_1 = require("../components/LeaderboardFeatureLikes");
14
+ const FeatureLeaderboardEntryDetails_1 = require("./FeatureLeaderboardEntryDetails");
15
+ const FeatureLeaderboardEntryFeatureEditor_1 = require("./FeatureLeaderboardEntryFeatureEditor");
16
+ const FeatureLeaderboardEntryHeader_1 = require("./FeatureLeaderboardEntryHeader");
17
+ const DetailsToggle = (props) => (react_1.default.createElement("span", { className: "details-toggle", onClick: props.onClick },
18
+ react_1.default.createElement("span", null, "\u25B6")));
19
+ const FeatureLabel = (props) => (react_1.default.createElement("span", { className: "feature-name-label label-bold" },
20
+ react_1.default.createElement(material_1.Tooltip, { title: props.featureEntry.feature.id, placement: "bottom" },
21
+ react_1.default.createElement("span", null, props.featureEntry.feature.id))));
22
+ const FeatureActions = (props) => {
23
+ var _a, _b;
24
+ const isWithActions = (_a = props.isWithActions) !== null && _a !== void 0 ? _a : true;
25
+ const isWithLikes = (_b = props.isWithLikes) !== null && _b !== void 0 ? _b : true;
26
+ return (react_1.default.createElement("div", { style: { marginLeft: 'auto', display: 'flex', gap: '5px' } },
27
+ isWithActions ? (react_1.default.createElement("div", { className: "fl-entry-row-actions" },
28
+ react_1.default.createElement("div", { className: "fl-entry-row-hidden-actions" },
29
+ react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", onClick: () => props.setMode(DrawerMode.Edit) },
30
+ react_1.default.createElement(ModeEdit_1.default, { className: "action-btn" })),
31
+ react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", onClick: () => props.setMode(DrawerMode.Copy) },
32
+ react_1.default.createElement(CopyAll_1.default, { className: "action-btn" })),
33
+ react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", onClick: () => props.setMode(DrawerMode.Code) },
34
+ react_1.default.createElement(Code_1.default, { className: "action-btn" }))))) : null,
35
+ isWithLikes ? (react_1.default.createElement(LeaderboardFeatureLikes_1.LeaderboardFeatureLikes, { featureId: props.featureEntry.feature.id })) : null));
36
+ };
37
+ var DrawerMode;
38
+ (function (DrawerMode) {
39
+ DrawerMode["None"] = "none";
40
+ DrawerMode["Edit"] = "edit";
41
+ DrawerMode["Copy"] = "copy";
42
+ DrawerMode["Code"] = "code";
43
+ DrawerMode["Details"] = "details";
44
+ })(DrawerMode = exports.DrawerMode || (exports.DrawerMode = {}));
45
+ const FeatureLeaderboardEntryDrawer = props => {
46
+ var _a;
47
+ const [mode, setMode] = react_1.default.useState(() => { var _a, _b; return (_b = (_a = props.config) === null || _a === void 0 ? void 0 : _a.initMode) !== null && _b !== void 0 ? _b : DrawerMode.None; });
48
+ const isExpanded = mode === DrawerMode.Code || mode === DrawerMode.Details;
49
+ const isWithAssessment = props.isAssessed;
50
+ const isAssessed = (_a = props.featureEntry.isAssessed) !== null && _a !== void 0 ? _a : props.isAssessed;
51
+ const toggleModel = (toggledMode) => {
52
+ return () => onSetModel(mode === toggledMode ? DrawerMode.None : toggledMode);
53
+ };
54
+ const onSetModel = (mode) => {
55
+ var _a, _b;
56
+ if ((_a = props.config) === null || _a === void 0 ? void 0 : _a.onSetModel) {
57
+ const setInlineMode = (_b = props.config.onSetModel(mode)) !== null && _b !== void 0 ? _b : true;
58
+ if (setInlineMode) {
59
+ setMode(mode);
60
+ }
61
+ }
62
+ else {
63
+ setMode(mode);
64
+ }
65
+ };
66
+ const onCancel = () => {
67
+ var _a, _b;
68
+ setMode(DrawerMode.None);
69
+ (_b = (_a = props.config) === null || _a === void 0 ? void 0 : _a.onCancel) === null || _b === void 0 ? void 0 : _b.call(_a);
70
+ };
71
+ return (react_1.default.createElement("div", { className: `feature-leaderboard-entry-drawer ${isExpanded ? 'expanded' : ''}` },
72
+ react_1.default.createElement("div", { className: "feature-leaderboard-entry-drawer-header", style: { display: 'flex' } },
73
+ isAssessed && isWithAssessment ? (react_1.default.createElement(DetailsToggle, { onClick: toggleModel(DrawerMode.Details) })) : isWithAssessment ? (react_1.default.createElement("span", { style: { width: '30px', display: 'inline-block' } })) : null,
74
+ react_1.default.createElement(FeatureLabel, { featureEntry: props.featureEntry }),
75
+ isWithAssessment ? (react_1.default.createElement("span", { className: "confidence-label", style: {
76
+ '--fill': `${props.featureEntry.signalConfidence * 100}%`,
77
+ } }, _utils_1.Localize.formatNumber(props.featureEntry.signalConfidence))) : null,
78
+ react_1.default.createElement(FeatureLeaderboardEntryHeader_1.FeatureLeaderboardEntryHeader, { feature: props.featureEntry.feature, isEdited: mode === DrawerMode.Edit, onClose: onCancel }),
79
+ react_1.default.createElement(FeatureActions, Object.assign({ mode: mode, setMode: onSetModel, featureEntry: props.featureEntry }, props === null || props === void 0 ? void 0 : props.config))),
80
+ react_1.default.createElement("div", { className: "feature-leaderboard-entry-drawer-details" },
81
+ react_1.default.createElement(material_1.Collapse, { in: mode === DrawerMode.Code || mode === DrawerMode.Copy, unmountOnExit: true },
82
+ react_1.default.createElement("br", null),
83
+ react_1.default.createElement(FeatureLeaderboardEntryFeatureEditor_1.FeatureLeaderboardEntryFeatureEditor, { featureId: props.featureEntry.feature.id, featureDescriptor: props.featureEntry.featureDescriptor, tableColumns: props.tableColumn, onClose: onCancel })),
84
+ react_1.default.createElement(material_1.Collapse, { in: mode === DrawerMode.Details, unmountOnExit: true },
85
+ react_1.default.createElement(FeatureLeaderboardEntryDetails_1.FeatureLeaderboardEntryDetails, { entry: props.featureEntry })))));
86
+ };
87
+ exports.FeatureLeaderboardEntryDrawer = FeatureLeaderboardEntryDrawer;
88
+ //# sourceMappingURL=FeatureLeaderboardEntryDrawer.js.map
@@ -0,0 +1,31 @@
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.FeatureLeaderboardEntryFeatureEditor = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const widget_model_1 = require("../../../utils/widget-model");
9
+ const widget_api_1 = require("../../../utils/widget-api");
10
+ const ActionFooter_1 = require("../../../components/ActionFooter");
11
+ const feature_descriptor_editor_1 = require("../../../feature-descriptor/feature-descriptor-editor");
12
+ const Footer = (props) => {
13
+ const Widget = widget_api_1.WidgetApi.init((0, widget_model_1.useWidgetModelContext)());
14
+ const [editor] = (0, feature_descriptor_editor_1.useFeatureDescriptorEditorContext)();
15
+ const validatedDraft = react_1.default.useMemo(() => feature_descriptor_editor_1.FeatureDescriptorDraft.validate(editor), [editor]);
16
+ return (react_1.default.createElement(ActionFooter_1.ActionFooter, { primaryButton: { label: 'Save', isDisabled: !validatedDraft.success }, tertiaryButton: { label: 'Cancel' }, onTertiaryButtonClick: props.onClose, onPrimaryButtonClick: () => {
17
+ Widget.callMethod('save_feature', {
18
+ id: props.featureId,
19
+ descriptor: validatedDraft.data,
20
+ })
21
+ .then(() => props.onClose())
22
+ .catch(e => console.error(e));
23
+ } }));
24
+ };
25
+ const FeatureLeaderboardEntryFeatureEditor = (props) => {
26
+ return (react_1.default.createElement(feature_descriptor_editor_1.FeatureDescriptorEditorContextProvider, { initFeatureDescriptor: props.featureDescriptor, tableColumns: props.tableColumns },
27
+ react_1.default.createElement(feature_descriptor_editor_1.FeatureDescriptorEditor, { featureDescriptor: props.featureDescriptor, tableColumns: props.tableColumns }),
28
+ react_1.default.createElement(Footer, { featureId: props.featureId, onClose: props.onClose })));
29
+ };
30
+ exports.FeatureLeaderboardEntryFeatureEditor = FeatureLeaderboardEntryFeatureEditor;
31
+ //# sourceMappingURL=FeatureLeaderboardEntryFeatureEditor.js.map
@@ -0,0 +1,15 @@
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 feature_user_explanation_1 = require("../../../feature/feature-user-explanation");
9
+ const FeatureExplanation_1 = require("../../../feature/feature-explanation/FeatureExplanation");
10
+ const FeatureLeaderboardUserExplanation_1 = require("./FeatureLeaderboardUserExplanation");
11
+ const FeatureLeaderboardEntryHeader = (props) => {
12
+ return (react_1.default.createElement("div", { style: { flex: '1 0 auto' } }, props.isEdited ? (react_1.default.createElement(FeatureLeaderboardUserExplanation_1.FeatureLeaderboardUserExplanation, { feature: props.feature, onClose: props.onClose })) : props.feature.user_explanation ? (react_1.default.createElement(feature_user_explanation_1.FeatureUserExplanationDisplay, { userExplanation: props.feature.user_explanation })) : (react_1.default.createElement(FeatureExplanation_1.FeatureExplanation, { explanationBlocks: props.feature.explanation.tokens }))));
13
+ };
14
+ exports.FeatureLeaderboardEntryHeader = FeatureLeaderboardEntryHeader;
15
+ //# sourceMappingURL=FeatureLeaderboardEntryHeader.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.FeatureLeaderboardUserExplanation = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const widget_api_1 = require("../../../utils/widget-api");
9
+ const widget_model_1 = require("../../../utils/widget-model");
10
+ const ActionFooter_1 = require("../../../components/ActionFooter");
11
+ const feature_user_explanation_1 = require("../../../feature/feature-user-explanation");
12
+ const FeatureLeaderboardUserExplanation = (props) => {
13
+ const Widget = widget_api_1.WidgetApi.init((0, widget_model_1.useWidgetModelContext)());
14
+ const [userExplanation, setUserExplanation] = react_1.default.useState(props.feature.user_explanation ||
15
+ (0, feature_user_explanation_1.explanationToUserExplanation)(props.feature.explanation.tokens));
16
+ return (react_1.default.createElement("div", { style: { display: 'flex' } },
17
+ react_1.default.createElement(feature_user_explanation_1.FeatureUserExplanation, { userExplanation: userExplanation, onUserExplanationChange: setUserExplanation }),
18
+ react_1.default.createElement(ActionFooter_1.ActionFooter, { primaryButton: { label: 'Save' }, tertiaryButton: { label: 'Cancel' }, onTertiaryButtonClick: props.onClose, onPrimaryButtonClick: () => {
19
+ Widget.callMethod('set_user_explanation', {
20
+ id: props.feature.id,
21
+ user_explanation: userExplanation,
22
+ })
23
+ .then(() => props.onClose())
24
+ .catch(e => console.error(e));
25
+ } })));
26
+ };
27
+ exports.FeatureLeaderboardUserExplanation = FeatureLeaderboardUserExplanation;
28
+ //# sourceMappingURL=FeatureLeaderboardUserExplanation.js.map