@fluid-topics/ft-wc-utils 1.3.49 → 1.3.50

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.
@@ -1,3 +1,4 @@
1
+ import { accessResult } from "./search";
1
2
  export function formatHierarchicalValues(values, hierarchicalValueTruncatingLevel) {
2
3
  if (hierarchicalValueTruncatingLevel && hierarchicalValueTruncatingLevel > 1 && values.length >= hierarchicalValueTruncatingLevel) {
3
4
  return `... > ${values[values.length - 1]}`;
@@ -12,16 +13,15 @@ export class ClusteringHelper {
12
13
  this.metadataDescriptors = metadataDescriptors;
13
14
  }
14
15
  static extractResultMetadata(options) {
15
- var _a, _b, _c, _d, _e;
16
- let metadata = ((_d = (_b = (_a = options.result) === null || _a === void 0 ? void 0 : _a.map) !== null && _b !== void 0 ? _b : (_c = options.result) === null || _c === void 0 ? void 0 : _c.document) !== null && _d !== void 0 ? _d : (_e = options.result) === null || _e === void 0 ? void 0 : _e.topic).metadata;
16
+ const metadata = accessResult(options.result).metadata;
17
17
  if (options.key == null) {
18
18
  return ClusteringHelper.flattenMetadata(metadata, options.hierarchicalValueTruncatingLevel, options.dateFormatter);
19
19
  }
20
- return ClusteringHelper.flattenMetadata(metadata.find(m => m.key === options.key), options.hierarchicalValueTruncatingLevel, options.dateFormatter);
20
+ return ClusteringHelper.flattenMetadata(metadata.find((m) => m.key === options.key), options.hierarchicalValueTruncatingLevel, options.dateFormatter);
21
21
  }
22
22
  static flattenMetadata(metadata, hierarchicalValueTruncatingLevel, dateFormatter) {
23
23
  if (Array.isArray(metadata)) {
24
- return metadata.map(m => ClusteringHelper.flattenMetadata(m, hierarchicalValueTruncatingLevel, dateFormatter)).filter(m => m != null);
24
+ return metadata.map((m) => ClusteringHelper.flattenMetadata(m, hierarchicalValueTruncatingLevel, dateFormatter)).filter((m) => m != null);
25
25
  }
26
26
  const isHierarchical = (metadata === null || metadata === void 0 ? void 0 : metadata.hierarchicalValues) != null && metadata.hierarchicalValues.length > 0;
27
27
  if (metadata == null || (metadata.values.length == 0 && !isHierarchical)) {
@@ -30,7 +30,7 @@ export class ClusteringHelper {
30
30
  if (isHierarchical) {
31
31
  const values = [];
32
32
  const displayValues = [];
33
- metadata.hierarchicalValues.forEach(tree => {
33
+ metadata.hierarchicalValues.forEach((tree) => {
34
34
  values.push(formatHierarchicalValues(tree));
35
35
  displayValues.push(formatHierarchicalValues(tree, hierarchicalValueTruncatingLevel));
36
36
  });
@@ -46,7 +46,7 @@ export class ClusteringHelper {
46
46
  // Date metadata cannot be hierarchical
47
47
  const value = metadata.values.join(", ");
48
48
  const displayValue = metadata.values
49
- .map(value => dateFormatter ? dateFormatter(value) : value)
49
+ .map((value) => dateFormatter ? dateFormatter(value) : value)
50
50
  .join(", ");
51
51
  return {
52
52
  key: metadata.key,
@@ -59,16 +59,16 @@ export class ClusteringHelper {
59
59
  }
60
60
  computeClustersItemsForMetadata(key, locale, undefinedDisplayValue = "No value", hierarchicalValueTruncatingLevel, dateFormatter) {
61
61
  var _a, _b;
62
- let currentResultMetadataTargeted = ClusteringHelper.extractResultMetadata({ result: this.selectedResult, key, dateFormatter });
63
- let metadataLabel = (_a = currentResultMetadataTargeted === null || currentResultMetadataTargeted === void 0 ? void 0 : currentResultMetadataTargeted.label) !== null && _a !== void 0 ? _a : (_b = this.getMetadataDescriptor(key)) === null || _b === void 0 ? void 0 : _b.label;
62
+ const currentResultMetadataTargeted = ClusteringHelper.extractResultMetadata({ result: this.selectedResult, key, dateFormatter });
63
+ const metadataLabel = (_a = currentResultMetadataTargeted === null || currentResultMetadataTargeted === void 0 ? void 0 : currentResultMetadataTargeted.label) !== null && _a !== void 0 ? _a : (_b = this.getMetadataDescriptor(key)) === null || _b === void 0 ? void 0 : _b.label;
64
64
  const otherValues = this.allResults
65
- .map(result => ClusteringHelper.extractResultMetadata({ result, key, hierarchicalValueTruncatingLevel, dateFormatter }))
66
- .map(m => m !== null && m !== void 0 ? m : { key: key, label: metadataLabel, value: undefined, displayValue: undefinedDisplayValue })
67
- .filter(m => m.value != (currentResultMetadataTargeted === null || currentResultMetadataTargeted === void 0 ? void 0 : currentResultMetadataTargeted.value))
68
- .filter((flatMeta, index, array) => array.findIndex(i => i.value === flatMeta.value) === index); // for unicity
69
- return otherValues.map(meta => ({
65
+ .map((result) => ClusteringHelper.extractResultMetadata({ result, key, hierarchicalValueTruncatingLevel, dateFormatter }))
66
+ .map((m) => m !== null && m !== void 0 ? m : { key: key, label: metadataLabel, value: undefined, displayValue: undefinedDisplayValue })
67
+ .filter((m) => m.value != (currentResultMetadataTargeted === null || currentResultMetadataTargeted === void 0 ? void 0 : currentResultMetadataTargeted.value))
68
+ .filter((flatMeta, index, array) => array.findIndex((i) => i.value === flatMeta.value) === index); // for unicity
69
+ return otherValues.map((meta) => ({
70
70
  result: this.findBestResultForMetadataValue(key, meta.value),
71
- metadata: meta
71
+ metadata: meta,
72
72
  })).sort((a, b) => this.compareMetadata(a.metadata.value, b.metadata.value, key, locale));
73
73
  }
74
74
  compareMetadata(a, b, key, locale) {
@@ -78,11 +78,11 @@ export class ClusteringHelper {
78
78
  if (b == null) {
79
79
  return 1;
80
80
  }
81
- let descriptor = this.getMetadataDescriptor(key);
82
- let sortRule = (descriptor === null || descriptor === void 0 ? void 0 : descriptor.sortRule) || "NONE";
83
- let reverseOrder = (descriptor === null || descriptor === void 0 ? void 0 : descriptor.reverseSort) || false;
81
+ const descriptor = this.getMetadataDescriptor(key);
82
+ const sortRule = (descriptor === null || descriptor === void 0 ? void 0 : descriptor.sortRule) || "NONE";
83
+ const reverseOrder = (descriptor === null || descriptor === void 0 ? void 0 : descriptor.reverseSort) || false;
84
84
  if (sortRule == "ALPHABET" || sortRule == "VERSION") {
85
- let result = a.localeCompare(b, locale, { numeric: true });
85
+ const result = a.localeCompare(b, locale, { numeric: true });
86
86
  return reverseOrder ? result * -1 : result;
87
87
  }
88
88
  return 0;
@@ -92,14 +92,14 @@ export class ClusteringHelper {
92
92
  }
93
93
  findBestResultForMetadataValue(key, value) {
94
94
  const resultsMatchingRequiredValue = this.allResults
95
- .filter(result => { var _a; return ((_a = ClusteringHelper.extractResultMetadata({ result, key })) === null || _a === void 0 ? void 0 : _a.value) == value; });
96
- let currentResultMetadata = ClusteringHelper.extractResultMetadata({ result: this.selectedResult })
97
- .filter(m => this.clusteringMetadata.has(m.key));
98
- let wishedMetadata = [...currentResultMetadata.filter(m => m.key !== key)];
95
+ .filter((result) => { var _a; return ((_a = ClusteringHelper.extractResultMetadata({ result, key })) === null || _a === void 0 ? void 0 : _a.value) == value; });
96
+ const currentResultMetadata = ClusteringHelper.extractResultMetadata({ result: this.selectedResult })
97
+ .filter((m) => this.clusteringMetadata.has(m.key));
98
+ const wishedMetadata = [...currentResultMetadata.filter((m) => m.key !== key)];
99
99
  let bestResult;
100
100
  let bestResultScore = -1;
101
- for (let result of resultsMatchingRequiredValue) {
102
- let currentNumberMetadataMatching = this.countMatchingMetadata(result, wishedMetadata);
101
+ for (const result of resultsMatchingRequiredValue) {
102
+ const currentNumberMetadataMatching = this.countMatchingMetadata(result, wishedMetadata);
103
103
  if (currentNumberMetadataMatching > bestResultScore) {
104
104
  bestResultScore = currentNumberMetadataMatching;
105
105
  bestResult = result;
@@ -112,6 +112,6 @@ export class ClusteringHelper {
112
112
  }
113
113
  countMatchingMetadata(result, expectedMetadata) {
114
114
  return ClusteringHelper.extractResultMetadata({ result })
115
- .filter(m => expectedMetadata.some(em => em.key === m.key && em.value === m.value)).length;
115
+ .filter((m) => expectedMetadata.some((em) => em.key === m.key && em.value === m.value)).length;
116
116
  }
117
117
  }