@internetarchive/collection-browser 2.7.2-alpha.0 → 2.7.2-alpha.1
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.
- package/.github/workflows/ci.yml +2 -3
- package/dist/src/app-root.d.ts +0 -4
- package/dist/src/app-root.js +0 -15
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.d.ts +6 -3
- package/dist/src/collection-browser.js +22 -25
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source.js +7 -6
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/package.json +1 -1
- package/src/app-root.ts +0 -16
- package/src/collection-browser.ts +43 -21
- package/src/data-source/collection-browser-data-source.ts +14 -8
- package/dist/src/assets/img/icons/filter.d.ts +0 -2
- package/dist/src/assets/img/icons/filter.js +0 -10
- package/dist/src/assets/img/icons/filter.js.map +0 -1
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.d.ts +0 -5
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js +0 -45
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js.map +0 -1
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.d.ts +0 -5
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +0 -130
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js.map +0 -1
- package/dist/src/collection-facets/smart-facets/models.d.ts +0 -24
- package/dist/src/collection-facets/smart-facets/models.js +0 -2
- package/dist/src/collection-facets/smart-facets/models.js.map +0 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +0 -27
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +0 -240
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +0 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +0 -10
- package/dist/src/collection-facets/smart-facets/smart-facet-button.js +0 -108
- package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +0 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +0 -14
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +0 -112
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +0 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +0 -4
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +0 -11
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +0 -1
- package/src/assets/img/icons/filter.ts +0 -10
- package/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.ts +0 -55
- package/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.ts +0 -148
- package/src/collection-facets/smart-facets/models.ts +0 -30
- package/src/collection-facets/smart-facets/smart-facet-bar.ts +0 -281
- package/src/collection-facets/smart-facets/smart-facet-button.ts +0 -114
- package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +0 -109
- package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +0 -12
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../../src/assets/img/icons/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,eAAe,IAAI,CAAA;;;;;;;CAOlB,CAAC","sourcesContent":["import { html } from 'lit';\n\nexport default html`\n <svg viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"m 91.666668,8.3333328 v 0.9708343 l -35.3625,39.2916669 -2.137502,2.375 v 3.195832 32.350001 L 45.833334,82.35 V 54.166666 50.970834 l -2.1375,-2.375 L 8.3333328,9.3041671 V 8.3333328 H 91.666668 M 100,0 H 0 V 12.5 L 37.500001,54.166666 V 87.5 l 25,12.5 V 54.166666 L 100,12.5 Z\"\n fill=\"#000\"\n />\n </svg>\n`;\n"]}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// If the query contains X word but Y facet isn't selected, recommend facet Y
|
|
2
|
-
export class QueryKeywordsHeuristic {
|
|
3
|
-
async getRecommendedFacets(query) {
|
|
4
|
-
const recommendations = [];
|
|
5
|
-
for (const [keyword, facets] of Object.entries(QueryKeywordsHeuristic.KEYWORDS)) {
|
|
6
|
-
if (query.includes(keyword)) {
|
|
7
|
-
recommendations.push(...facets);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
return recommendations;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
QueryKeywordsHeuristic.KEYWORDS = {
|
|
14
|
-
text: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
|
|
15
|
-
book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
|
|
16
|
-
pdf: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
|
|
17
|
-
epub: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
|
|
18
|
-
audio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
|
|
19
|
-
song: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
|
|
20
|
-
music: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
|
|
21
|
-
listen: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
|
|
22
|
-
podcast: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
|
|
23
|
-
radio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
|
|
24
|
-
stream: [
|
|
25
|
-
{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] },
|
|
26
|
-
{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] },
|
|
27
|
-
],
|
|
28
|
-
video: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
|
|
29
|
-
movie: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
|
|
30
|
-
film: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
|
|
31
|
-
image: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
|
|
32
|
-
photo: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
|
|
33
|
-
picture: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
|
|
34
|
-
software: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
|
|
35
|
-
app: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
|
|
36
|
-
program: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
|
|
37
|
-
game: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
|
|
38
|
-
etree: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
|
|
39
|
-
concert: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
|
|
40
|
-
'live music': [
|
|
41
|
-
{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] },
|
|
42
|
-
],
|
|
43
|
-
dataset: [{ facets: [{ facetType: 'mediatype', bucketKey: 'data' }] }],
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=query-keywords-heuristic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-keywords-heuristic.js","sourceRoot":"","sources":["../../../../../src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n SmartQueryHeuristic,\n KeywordFacetMap,\n SmartFacet,\n} from '../models';\n\n// If the query contains X word but Y facet isn't selected, recommend facet Y\nexport class QueryKeywordsHeuristic implements SmartQueryHeuristic {\n private static readonly KEYWORDS: KeywordFacetMap = {\n text: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n pdf: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n epub: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n audio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n song: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n music: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n listen: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n podcast: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n radio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n stream: [\n { facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] },\n { facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] },\n ],\n video: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],\n movie: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],\n film: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],\n image: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],\n photo: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],\n picture: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],\n software: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],\n app: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],\n program: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],\n game: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],\n etree: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],\n concert: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],\n 'live music': [\n { facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] },\n ],\n dataset: [{ facets: [{ facetType: 'mediatype', bucketKey: 'data' }] }],\n };\n\n async getRecommendedFacets(query: string): Promise<SmartFacet[]> {\n const recommendations: SmartFacet[] = [];\n\n for (const [keyword, facets] of Object.entries(\n QueryKeywordsHeuristic.KEYWORDS\n )) {\n if (query.includes(keyword)) {\n recommendations.push(...facets);\n }\n }\n\n return recommendations;\n }\n}\n"]}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
// If wikidata says the query is an entity of type X, recommend facet Y, e.g.:
|
|
2
|
-
// X Y
|
|
3
|
-
// written work mt:texts
|
|
4
|
-
// film mt:movies
|
|
5
|
-
// author mt:texts and creator:<query>
|
|
6
|
-
// filmmaker mt:movies and creator:<query>
|
|
7
|
-
// photographer mt:image and creator:<query>
|
|
8
|
-
// visual artist mt:image and creator:<query>
|
|
9
|
-
export class WikidataEntityHeuristic {
|
|
10
|
-
async getRecommendedFacets(query) {
|
|
11
|
-
var _a;
|
|
12
|
-
const recommendations = [];
|
|
13
|
-
try {
|
|
14
|
-
const urlQuery = encodeURIComponent(query);
|
|
15
|
-
const wikidataResponse = await fetch(`https://www.wikidata.org/w/api.php?action=wbsearchentities&search=${urlQuery}&format=json&language=en&uselang=en&origin=*&type=item&limit=5`);
|
|
16
|
-
const searchResults = await wikidataResponse.json();
|
|
17
|
-
for (const [keyword, facets] of Object.entries(WikidataEntityHeuristic.ENTITIES)) {
|
|
18
|
-
if ((_a = searchResults.search[0]) === null || _a === void 0 ? void 0 : _a.description.includes(keyword)) {
|
|
19
|
-
const entityName = searchResults.search[0].label;
|
|
20
|
-
recommendations.push(...facets.map(sf => {
|
|
21
|
-
var _a;
|
|
22
|
-
return ({
|
|
23
|
-
label: (_a = sf.label) === null || _a === void 0 ? void 0 : _a.replace('__QUERY', entityName),
|
|
24
|
-
facets: sf.facets.map(f => {
|
|
25
|
-
var _a;
|
|
26
|
-
const replaced = {
|
|
27
|
-
...f,
|
|
28
|
-
bucketKey: f.bucketKey.replace('__QUERY', query),
|
|
29
|
-
};
|
|
30
|
-
if (f.displayText) {
|
|
31
|
-
replaced.displayText = (_a = replaced.displayText) === null || _a === void 0 ? void 0 : _a.replace('__QUERY', entityName);
|
|
32
|
-
}
|
|
33
|
-
return replaced;
|
|
34
|
-
}),
|
|
35
|
-
});
|
|
36
|
-
}));
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return recommendations;
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
return [];
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
WikidataEntityHeuristic.ENTITIES = {
|
|
47
|
-
literature: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
|
|
48
|
-
filmmaker: [
|
|
49
|
-
{
|
|
50
|
-
label: 'Films by __QUERY',
|
|
51
|
-
facets: [
|
|
52
|
-
{ facetType: 'mediatype', bucketKey: 'movies' },
|
|
53
|
-
{ facetType: 'creator', bucketKey: '__QUERY' },
|
|
54
|
-
],
|
|
55
|
-
},
|
|
56
|
-
],
|
|
57
|
-
author: [
|
|
58
|
-
{
|
|
59
|
-
label: 'Writing by __QUERY',
|
|
60
|
-
facets: [
|
|
61
|
-
{ facetType: 'mediatype', bucketKey: 'texts' },
|
|
62
|
-
{ facetType: 'creator', bucketKey: '__QUERY' },
|
|
63
|
-
],
|
|
64
|
-
},
|
|
65
|
-
],
|
|
66
|
-
writer: [
|
|
67
|
-
{
|
|
68
|
-
label: 'Writing by __QUERY',
|
|
69
|
-
facets: [
|
|
70
|
-
{ facetType: 'mediatype', bucketKey: 'texts' },
|
|
71
|
-
{ facetType: 'creator', bucketKey: '__QUERY' },
|
|
72
|
-
],
|
|
73
|
-
},
|
|
74
|
-
],
|
|
75
|
-
poet: [
|
|
76
|
-
{
|
|
77
|
-
label: 'Writing by __QUERY',
|
|
78
|
-
facets: [
|
|
79
|
-
{ facetType: 'mediatype', bucketKey: 'texts' },
|
|
80
|
-
{ facetType: 'creator', bucketKey: '__QUERY' },
|
|
81
|
-
],
|
|
82
|
-
},
|
|
83
|
-
],
|
|
84
|
-
photographer: [
|
|
85
|
-
{
|
|
86
|
-
label: 'Images by __QUERY',
|
|
87
|
-
facets: [
|
|
88
|
-
{ facetType: 'mediatype', bucketKey: 'image' },
|
|
89
|
-
{ facetType: 'creator', bucketKey: '__QUERY' },
|
|
90
|
-
],
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
painter: [
|
|
94
|
-
{
|
|
95
|
-
label: 'Images by __QUERY',
|
|
96
|
-
facets: [
|
|
97
|
-
{ facetType: 'mediatype', bucketKey: 'image' },
|
|
98
|
-
{ facetType: 'creator', bucketKey: '__QUERY' },
|
|
99
|
-
],
|
|
100
|
-
},
|
|
101
|
-
],
|
|
102
|
-
singer: [
|
|
103
|
-
{
|
|
104
|
-
label: 'Music by __QUERY',
|
|
105
|
-
facets: [
|
|
106
|
-
{ facetType: 'mediatype', bucketKey: 'audio' },
|
|
107
|
-
{ facetType: 'creator', bucketKey: '__QUERY' },
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
songwriter: [
|
|
112
|
-
{
|
|
113
|
-
label: 'Music by __QUERY',
|
|
114
|
-
facets: [
|
|
115
|
-
{ facetType: 'mediatype', bucketKey: 'audio' },
|
|
116
|
-
{ facetType: 'creator', bucketKey: '__QUERY' },
|
|
117
|
-
],
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
musician: [
|
|
121
|
-
{
|
|
122
|
-
label: 'Music by __QUERY',
|
|
123
|
-
facets: [
|
|
124
|
-
{ facetType: 'mediatype', bucketKey: 'audio' },
|
|
125
|
-
{ facetType: 'creator', bucketKey: '__QUERY' },
|
|
126
|
-
],
|
|
127
|
-
},
|
|
128
|
-
],
|
|
129
|
-
};
|
|
130
|
-
//# sourceMappingURL=wikidata-heuristic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wikidata-heuristic.js","sourceRoot":"","sources":["../../../../../src/collection-facets/smart-facets/heuristics/wikidata-heuristic.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n SmartQueryHeuristic,\n KeywordFacetMap,\n SmartFacet,\n} from '../models';\n\n// If wikidata says the query is an entity of type X, recommend facet Y, e.g.:\n// X Y\n// written work mt:texts\n// film mt:movies\n// author mt:texts and creator:<query>\n// filmmaker mt:movies and creator:<query>\n// photographer mt:image and creator:<query>\n// visual artist mt:image and creator:<query>\nexport class WikidataEntityHeuristic implements SmartQueryHeuristic {\n private static readonly ENTITIES: KeywordFacetMap = {\n literature: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n filmmaker: [\n {\n label: 'Films by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'movies' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n author: [\n {\n label: 'Writing by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'texts' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n writer: [\n {\n label: 'Writing by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'texts' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n poet: [\n {\n label: 'Writing by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'texts' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n photographer: [\n {\n label: 'Images by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'image' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n painter: [\n {\n label: 'Images by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'image' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n singer: [\n {\n label: 'Music by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'audio' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n songwriter: [\n {\n label: 'Music by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'audio' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n musician: [\n {\n label: 'Music by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'audio' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n };\n\n async getRecommendedFacets(query: string): Promise<SmartFacet[]> {\n const recommendations: SmartFacet[] = [];\n\n try {\n const urlQuery = encodeURIComponent(query);\n\n const wikidataResponse = await fetch(\n `https://www.wikidata.org/w/api.php?action=wbsearchentities&search=${urlQuery}&format=json&language=en&uselang=en&origin=*&type=item&limit=5`\n );\n const searchResults = await wikidataResponse.json();\n\n for (const [keyword, facets] of Object.entries(\n WikidataEntityHeuristic.ENTITIES\n )) {\n if (searchResults.search[0]?.description.includes(keyword)) {\n const entityName = searchResults.search[0].label;\n recommendations.push(\n ...facets.map(\n sf =>\n ({\n label: sf.label?.replace('__QUERY', entityName),\n facets: sf.facets.map(f => {\n const replaced = {\n ...f,\n bucketKey: f.bucketKey.replace('__QUERY', query),\n };\n\n if (f.displayText) {\n replaced.displayText = replaced.displayText?.replace(\n '__QUERY',\n entityName\n );\n }\n\n return replaced;\n }),\n } as SmartFacet)\n )\n );\n }\n }\n\n return recommendations;\n } catch (err) {\n return [];\n }\n }\n}\n"]}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { FacetEventDetails, FacetOption } from '../../models';
|
|
2
|
-
export interface FacetRef {
|
|
3
|
-
facetType: FacetOption;
|
|
4
|
-
bucketKey: string;
|
|
5
|
-
displayText?: string;
|
|
6
|
-
}
|
|
7
|
-
interface LabeledSmartFacet {
|
|
8
|
-
label: string;
|
|
9
|
-
facets: FacetRef[];
|
|
10
|
-
}
|
|
11
|
-
interface UnlabeledSmartFacet {
|
|
12
|
-
label?: string;
|
|
13
|
-
facets: [FacetRef];
|
|
14
|
-
}
|
|
15
|
-
export declare type SmartFacet = LabeledSmartFacet | UnlabeledSmartFacet;
|
|
16
|
-
export interface SmartFacetEvent {
|
|
17
|
-
smartFacet: SmartFacet;
|
|
18
|
-
details: FacetEventDetails[];
|
|
19
|
-
}
|
|
20
|
-
export declare type KeywordFacetMap = Record<string, SmartFacet[]>;
|
|
21
|
-
export interface SmartQueryHeuristic {
|
|
22
|
-
getRecommendedFacets(query: string): Promise<SmartFacet[]>;
|
|
23
|
-
}
|
|
24
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/collection-facets/smart-facets/models.ts"],"names":[],"mappings":"","sourcesContent":["import type { FacetEventDetails, FacetOption } from '../../models';\n\nexport interface FacetRef {\n facetType: FacetOption;\n bucketKey: string;\n displayText?: string;\n}\n\ninterface LabeledSmartFacet {\n label: string;\n facets: FacetRef[];\n}\n\ninterface UnlabeledSmartFacet {\n label?: string;\n facets: [FacetRef];\n}\n\nexport type SmartFacet = LabeledSmartFacet | UnlabeledSmartFacet;\n\nexport interface SmartFacetEvent {\n smartFacet: SmartFacet;\n details: FacetEventDetails[];\n}\n\nexport type KeywordFacetMap = Record<string, SmartFacet[]>;\n\nexport interface SmartQueryHeuristic {\n getRecommendedFacets(query: string): Promise<SmartFacet[]>;\n}\n"]}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { LitElement, TemplateResult, CSSResultGroup, PropertyValues } from 'lit';
|
|
2
|
-
import type { Aggregation } from '@internetarchive/search-service';
|
|
3
|
-
import type { CollectionTitles } from '../../data-source/models';
|
|
4
|
-
import type { SelectedFacets } from '../../models';
|
|
5
|
-
import './smart-facet-button';
|
|
6
|
-
import './smart-facet-dropdown';
|
|
7
|
-
export declare class SmartFacetBar extends LitElement {
|
|
8
|
-
query?: string;
|
|
9
|
-
aggregations?: Record<string, Aggregation>;
|
|
10
|
-
selectedFacets?: SelectedFacets;
|
|
11
|
-
/** The map from collection identifiers to their titles */
|
|
12
|
-
collectionTitles?: CollectionTitles;
|
|
13
|
-
filterToggleActive: boolean;
|
|
14
|
-
private heuristicRecs;
|
|
15
|
-
private smartFacets;
|
|
16
|
-
render(): TemplateResult<1>;
|
|
17
|
-
protected willUpdate(changed: PropertyValues): void;
|
|
18
|
-
private updateSmartFacets;
|
|
19
|
-
private makeSmartFacet;
|
|
20
|
-
private smartFacetButton;
|
|
21
|
-
private get filtersToggleTemplate();
|
|
22
|
-
private get facetsToDisplay();
|
|
23
|
-
private toSmartFacet;
|
|
24
|
-
private facetClicked;
|
|
25
|
-
private filterToggleClicked;
|
|
26
|
-
static get styles(): CSSResultGroup;
|
|
27
|
-
}
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-continue */
|
|
2
|
-
import { __decorate } from "tslib";
|
|
3
|
-
import { css, html, LitElement, nothing, } from 'lit';
|
|
4
|
-
import { repeat } from 'lit/directives/repeat.js';
|
|
5
|
-
import { customElement, property, state } from 'lit/decorators.js';
|
|
6
|
-
import { updateSelectedFacetBucket } from '../../utils/facet-utils';
|
|
7
|
-
import { SmartQueryHeuristicGroup } from './smart-facet-heuristics';
|
|
8
|
-
import filterIcon from '../../assets/img/icons/filter';
|
|
9
|
-
import './smart-facet-button';
|
|
10
|
-
import './smart-facet-dropdown';
|
|
11
|
-
const fieldPrefixes = {
|
|
12
|
-
collection: 'Collection: ',
|
|
13
|
-
creator: 'By: ',
|
|
14
|
-
subject: 'About: ',
|
|
15
|
-
};
|
|
16
|
-
function capitalize(str) {
|
|
17
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
18
|
-
}
|
|
19
|
-
let SmartFacetBar = class SmartFacetBar extends LitElement {
|
|
20
|
-
constructor() {
|
|
21
|
-
super(...arguments);
|
|
22
|
-
this.filterToggleActive = false;
|
|
23
|
-
this.heuristicRecs = [];
|
|
24
|
-
this.smartFacets = [];
|
|
25
|
-
}
|
|
26
|
-
//
|
|
27
|
-
// COMPONENT LIFECYCLE METHODS
|
|
28
|
-
//
|
|
29
|
-
render() {
|
|
30
|
-
return html `
|
|
31
|
-
<div id="smart-facets-container">
|
|
32
|
-
${this.filtersToggleTemplate}
|
|
33
|
-
${repeat(this.smartFacets, f => `${f.label}|${f.facets[0].facetType}|${f.facets[0].bucketKey}`, facet => this.makeSmartFacet([facet]))}
|
|
34
|
-
</div>
|
|
35
|
-
`;
|
|
36
|
-
}
|
|
37
|
-
willUpdate(changed) {
|
|
38
|
-
if (changed.has('query') ||
|
|
39
|
-
(changed.has('aggregations') &&
|
|
40
|
-
(!changed.get('aggregations') ||
|
|
41
|
-
Object.keys(changed.get('aggregations')).length === 0))) {
|
|
42
|
-
this.updateSmartFacets();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async updateSmartFacets() {
|
|
46
|
-
if (this.query) {
|
|
47
|
-
this.heuristicRecs =
|
|
48
|
-
await new SmartQueryHeuristicGroup().getRecommendedFacets(this.query);
|
|
49
|
-
this.smartFacets = this.facetsToDisplay;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//
|
|
53
|
-
// OTHER METHODS
|
|
54
|
-
//
|
|
55
|
-
makeSmartFacet(facets) {
|
|
56
|
-
if (facets.length === 0) {
|
|
57
|
-
return nothing;
|
|
58
|
-
}
|
|
59
|
-
return this.smartFacetButton(facets[0]);
|
|
60
|
-
// else {
|
|
61
|
-
// return this.smartFacetDropdown(facets);
|
|
62
|
-
// }
|
|
63
|
-
}
|
|
64
|
-
smartFacetButton(facet) {
|
|
65
|
-
return html `
|
|
66
|
-
<smart-facet-button
|
|
67
|
-
.facetInfo=${facet}
|
|
68
|
-
@facetClick=${this.facetClicked}
|
|
69
|
-
></smart-facet-button>
|
|
70
|
-
`;
|
|
71
|
-
}
|
|
72
|
-
// private smartFacetDropdown(facets: SmartFacet[]) {
|
|
73
|
-
// return html`
|
|
74
|
-
// <smart-facet-dropdown
|
|
75
|
-
// .facetType=${facets[0].facets[0].facetType}
|
|
76
|
-
// .buckets=${facets.map(sf => sf.facets.map(f => ({
|
|
77
|
-
// key: f.bucketKey,
|
|
78
|
-
// })))}
|
|
79
|
-
// .activeBucket=${facet.buckets[0]}
|
|
80
|
-
// @facetClick=${this.facetClicked}
|
|
81
|
-
// ></smart-facet-dropdown>
|
|
82
|
-
// `;
|
|
83
|
-
// }
|
|
84
|
-
get filtersToggleTemplate() {
|
|
85
|
-
return html `
|
|
86
|
-
<button
|
|
87
|
-
id="filters-toggle"
|
|
88
|
-
class=${this.filterToggleActive ? 'active' : ''}
|
|
89
|
-
title="${this.filterToggleActive ? 'Hide' : 'Show'} filters pane"
|
|
90
|
-
@click=${this.filterToggleClicked}
|
|
91
|
-
>
|
|
92
|
-
${filterIcon}
|
|
93
|
-
</button>
|
|
94
|
-
`;
|
|
95
|
-
}
|
|
96
|
-
get facetsToDisplay() {
|
|
97
|
-
if (!this.aggregations)
|
|
98
|
-
return [];
|
|
99
|
-
const facets = [];
|
|
100
|
-
if (this.heuristicRecs.length > 0) {
|
|
101
|
-
for (const rec of this.heuristicRecs) {
|
|
102
|
-
facets.push(rec);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
for (const [key, agg] of Object.entries(this.aggregations)) {
|
|
106
|
-
if (agg.buckets.length === 0)
|
|
107
|
-
continue;
|
|
108
|
-
if (['lending', 'year_histogram'].includes(key))
|
|
109
|
-
continue;
|
|
110
|
-
if (typeof agg.buckets[0] === 'number')
|
|
111
|
-
continue;
|
|
112
|
-
if (key === 'mediatype' &&
|
|
113
|
-
this.selectedFacets &&
|
|
114
|
-
Object.values(this.selectedFacets.mediatype).some(bucket => bucket.state !== 'none')) {
|
|
115
|
-
continue;
|
|
116
|
-
}
|
|
117
|
-
const facetType = key;
|
|
118
|
-
const buckets = agg.buckets;
|
|
119
|
-
const bestBucket = buckets.find(b => {
|
|
120
|
-
var _a;
|
|
121
|
-
const selectedFacetBucket = (_a = this.selectedFacets) === null || _a === void 0 ? void 0 : _a[facetType][b.key];
|
|
122
|
-
if (selectedFacetBucket && selectedFacetBucket.state !== 'none')
|
|
123
|
-
return false;
|
|
124
|
-
return true;
|
|
125
|
-
});
|
|
126
|
-
if (!bestBucket)
|
|
127
|
-
continue;
|
|
128
|
-
facets.push(this.toSmartFacet(facetType, [bestBucket]));
|
|
129
|
-
if (facetType === 'mediatype') {
|
|
130
|
-
facets.push(this.toSmartFacet(facetType, [buckets[1]]));
|
|
131
|
-
}
|
|
132
|
-
// if (facetType === 'collection' || facetType === 'subject') {
|
|
133
|
-
// facets[facets.length - 1].buckets.push(...buckets.slice(1, 4).map(b => this.toSmartFacet(facetType, [b], false).buckets[0]));
|
|
134
|
-
// }
|
|
135
|
-
}
|
|
136
|
-
return facets;
|
|
137
|
-
}
|
|
138
|
-
toSmartFacet(facetType, buckets, prefix = true) {
|
|
139
|
-
return {
|
|
140
|
-
facets: buckets.map(bucket => {
|
|
141
|
-
var _a;
|
|
142
|
-
let displayText = capitalize(bucket.key.toString());
|
|
143
|
-
if (facetType === 'collection') {
|
|
144
|
-
const title = (_a = this.collectionTitles) === null || _a === void 0 ? void 0 : _a.get(bucket.key.toString());
|
|
145
|
-
if (title)
|
|
146
|
-
displayText = title;
|
|
147
|
-
}
|
|
148
|
-
if (prefix && fieldPrefixes[facetType]) {
|
|
149
|
-
displayText = fieldPrefixes[facetType] + displayText;
|
|
150
|
-
}
|
|
151
|
-
return {
|
|
152
|
-
facetType,
|
|
153
|
-
bucketKey: bucket.key.toString(),
|
|
154
|
-
displayText,
|
|
155
|
-
};
|
|
156
|
-
}),
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
facetClicked(e) {
|
|
160
|
-
this.smartFacets = [
|
|
161
|
-
e.detail.smartFacet,
|
|
162
|
-
...this.smartFacets.filter(f => f !== e.detail.smartFacet),
|
|
163
|
-
];
|
|
164
|
-
for (const facet of e.detail.details) {
|
|
165
|
-
this.selectedFacets = updateSelectedFacetBucket(this.selectedFacets, facet.facetType, facet.bucket, true);
|
|
166
|
-
}
|
|
167
|
-
const event = new CustomEvent('facetsChanged', {
|
|
168
|
-
detail: this.selectedFacets,
|
|
169
|
-
});
|
|
170
|
-
this.dispatchEvent(event);
|
|
171
|
-
}
|
|
172
|
-
filterToggleClicked() {
|
|
173
|
-
this.dispatchEvent(new CustomEvent('filtersToggled'));
|
|
174
|
-
}
|
|
175
|
-
//
|
|
176
|
-
// STYLES
|
|
177
|
-
//
|
|
178
|
-
static get styles() {
|
|
179
|
-
return css `
|
|
180
|
-
#smart-facets-container {
|
|
181
|
-
display: flex;
|
|
182
|
-
align-items: center;
|
|
183
|
-
flex-wrap: wrap;
|
|
184
|
-
gap: 5px;
|
|
185
|
-
padding: 10px 0;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
#filters-toggle {
|
|
189
|
-
margin: 0;
|
|
190
|
-
border: 0;
|
|
191
|
-
padding: 5px 10px;
|
|
192
|
-
border-radius: 15px;
|
|
193
|
-
background: #194880;
|
|
194
|
-
color: white;
|
|
195
|
-
font-size: 1.6rem;
|
|
196
|
-
font-family: inherit;
|
|
197
|
-
text-decoration: none;
|
|
198
|
-
box-shadow: 1px 1px rgba(0, 0, 0, 0.4);
|
|
199
|
-
cursor: pointer;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
#filters-toggle.active {
|
|
203
|
-
background: #09294d;
|
|
204
|
-
box-shadow: -1px -1px rgba(0, 0, 0, 0.1);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
#filters-toggle > svg {
|
|
208
|
-
width: 15px;
|
|
209
|
-
filter: invert(1);
|
|
210
|
-
vertical-align: text-bottom;
|
|
211
|
-
}
|
|
212
|
-
`;
|
|
213
|
-
}
|
|
214
|
-
};
|
|
215
|
-
__decorate([
|
|
216
|
-
property({ type: String })
|
|
217
|
-
], SmartFacetBar.prototype, "query", void 0);
|
|
218
|
-
__decorate([
|
|
219
|
-
property({ type: Object })
|
|
220
|
-
], SmartFacetBar.prototype, "aggregations", void 0);
|
|
221
|
-
__decorate([
|
|
222
|
-
property({ type: Object })
|
|
223
|
-
], SmartFacetBar.prototype, "selectedFacets", void 0);
|
|
224
|
-
__decorate([
|
|
225
|
-
property({ type: Object })
|
|
226
|
-
], SmartFacetBar.prototype, "collectionTitles", void 0);
|
|
227
|
-
__decorate([
|
|
228
|
-
property({ type: Boolean })
|
|
229
|
-
], SmartFacetBar.prototype, "filterToggleActive", void 0);
|
|
230
|
-
__decorate([
|
|
231
|
-
state()
|
|
232
|
-
], SmartFacetBar.prototype, "heuristicRecs", void 0);
|
|
233
|
-
__decorate([
|
|
234
|
-
state()
|
|
235
|
-
], SmartFacetBar.prototype, "smartFacets", void 0);
|
|
236
|
-
SmartFacetBar = __decorate([
|
|
237
|
-
customElement('smart-facet-bar')
|
|
238
|
-
], SmartFacetBar);
|
|
239
|
-
export { SmartFacetBar };
|
|
240
|
-
//# sourceMappingURL=smart-facet-bar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"smart-facet-bar.js","sourceRoot":"","sources":["../../../../src/collection-facets/smart-facets/smart-facet-bar.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-continue */\n\nimport {\n css,\n html,\n LitElement,\n TemplateResult,\n CSSResultGroup,\n nothing,\n PropertyValues,\n} from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport type { Aggregation, Bucket } from '@internetarchive/search-service';\nimport type { CollectionTitles } from '../../data-source/models';\nimport type { FacetOption, SelectedFacets } from '../../models';\nimport { updateSelectedFacetBucket } from '../../utils/facet-utils';\nimport { SmartQueryHeuristicGroup } from './smart-facet-heuristics';\nimport type { SmartFacet, SmartFacetEvent } from './models';\nimport filterIcon from '../../assets/img/icons/filter';\n\nimport './smart-facet-button';\nimport './smart-facet-dropdown';\n\nconst fieldPrefixes: Partial<Record<FacetOption, string>> = {\n collection: 'Collection: ',\n creator: 'By: ',\n subject: 'About: ',\n};\n\nfunction capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n@customElement('smart-facet-bar')\nexport class SmartFacetBar extends LitElement {\n @property({ type: String }) query?: string;\n\n @property({ type: Object }) aggregations?: Record<string, Aggregation>;\n\n @property({ type: Object }) selectedFacets?: SelectedFacets;\n\n /** The map from collection identifiers to their titles */\n @property({ type: Object })\n collectionTitles?: CollectionTitles;\n\n @property({ type: Boolean }) filterToggleActive = false;\n\n @state() private heuristicRecs: SmartFacet[] = [];\n\n @state() private smartFacets: SmartFacet[] = [];\n\n //\n // COMPONENT LIFECYCLE METHODS\n //\n\n render() {\n return html`\n <div id=\"smart-facets-container\">\n ${this.filtersToggleTemplate}\n ${repeat(\n this.smartFacets,\n f => `${f.label}|${f.facets[0].facetType}|${f.facets[0].bucketKey}`,\n facet => this.makeSmartFacet([facet])\n )}\n </div>\n `;\n }\n\n protected willUpdate(changed: PropertyValues): void {\n if (\n changed.has('query') ||\n (changed.has('aggregations') &&\n (!changed.get('aggregations') ||\n Object.keys(changed.get('aggregations')).length === 0))\n ) {\n this.updateSmartFacets();\n }\n }\n\n private async updateSmartFacets(): Promise<void> {\n if (this.query) {\n this.heuristicRecs =\n await new SmartQueryHeuristicGroup().getRecommendedFacets(this.query);\n this.smartFacets = this.facetsToDisplay;\n }\n }\n\n //\n // OTHER METHODS\n //\n\n private makeSmartFacet(facets: SmartFacet[]) {\n if (facets.length === 0) {\n return nothing;\n }\n return this.smartFacetButton(facets[0]);\n // else {\n // return this.smartFacetDropdown(facets);\n // }\n }\n\n private smartFacetButton(facet: SmartFacet) {\n return html`\n <smart-facet-button\n .facetInfo=${facet}\n @facetClick=${this.facetClicked}\n ></smart-facet-button>\n `;\n }\n\n // private smartFacetDropdown(facets: SmartFacet[]) {\n // return html`\n // <smart-facet-dropdown\n // .facetType=${facets[0].facets[0].facetType}\n // .buckets=${facets.map(sf => sf.facets.map(f => ({\n // key: f.bucketKey,\n\n // })))}\n // .activeBucket=${facet.buckets[0]}\n // @facetClick=${this.facetClicked}\n // ></smart-facet-dropdown>\n // `;\n // }\n\n private get filtersToggleTemplate(): TemplateResult {\n return html`\n <button\n id=\"filters-toggle\"\n class=${this.filterToggleActive ? 'active' : ''}\n title=\"${this.filterToggleActive ? 'Hide' : 'Show'} filters pane\"\n @click=${this.filterToggleClicked}\n >\n ${filterIcon}\n </button>\n `;\n }\n\n private get facetsToDisplay(): SmartFacet[] {\n if (!this.aggregations) return [];\n\n const facets: SmartFacet[] = [];\n\n if (this.heuristicRecs.length > 0) {\n for (const rec of this.heuristicRecs) {\n facets.push(rec);\n }\n }\n\n for (const [key, agg] of Object.entries(this.aggregations)) {\n if (agg.buckets.length === 0) continue;\n if (['lending', 'year_histogram'].includes(key)) continue;\n if (typeof agg.buckets[0] === 'number') continue;\n\n if (\n key === 'mediatype' &&\n this.selectedFacets &&\n Object.values(this.selectedFacets.mediatype).some(\n bucket => bucket.state !== 'none'\n )\n ) {\n continue;\n }\n\n const facetType = key as FacetOption;\n const buckets = agg.buckets as Bucket[];\n\n const bestBucket = buckets.find(b => {\n const selectedFacetBucket = this.selectedFacets?.[facetType][b.key];\n if (selectedFacetBucket && selectedFacetBucket.state !== 'none')\n return false;\n return true;\n });\n if (!bestBucket) continue;\n\n facets.push(this.toSmartFacet(facetType, [bestBucket]));\n\n if (facetType === 'mediatype') {\n facets.push(this.toSmartFacet(facetType, [buckets[1]]));\n }\n\n // if (facetType === 'collection' || facetType === 'subject') {\n // facets[facets.length - 1].buckets.push(...buckets.slice(1, 4).map(b => this.toSmartFacet(facetType, [b], false).buckets[0]));\n // }\n }\n\n return facets;\n }\n\n private toSmartFacet(\n facetType: FacetOption,\n buckets: Bucket[],\n prefix = true\n ): SmartFacet {\n return {\n facets: buckets.map(bucket => {\n let displayText = capitalize(bucket.key.toString());\n if (facetType === 'collection') {\n const title = this.collectionTitles?.get(bucket.key.toString());\n if (title) displayText = title;\n }\n\n if (prefix && fieldPrefixes[facetType]) {\n displayText = fieldPrefixes[facetType] + displayText;\n }\n\n return {\n facetType,\n bucketKey: bucket.key.toString(),\n displayText,\n };\n }),\n } as SmartFacet;\n }\n\n private facetClicked(e: CustomEvent<SmartFacetEvent>): void {\n this.smartFacets = [\n e.detail.smartFacet,\n ...this.smartFacets.filter(f => f !== e.detail.smartFacet),\n ];\n\n for (const facet of e.detail.details) {\n this.selectedFacets = updateSelectedFacetBucket(\n this.selectedFacets,\n facet.facetType,\n facet.bucket,\n true\n );\n }\n\n const event = new CustomEvent<SelectedFacets>('facetsChanged', {\n detail: this.selectedFacets,\n });\n this.dispatchEvent(event);\n }\n\n private filterToggleClicked(): void {\n this.dispatchEvent(new CustomEvent('filtersToggled'));\n }\n\n //\n // STYLES\n //\n\n static get styles(): CSSResultGroup {\n return css`\n #smart-facets-container {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 5px;\n padding: 10px 0;\n }\n\n #filters-toggle {\n margin: 0;\n border: 0;\n padding: 5px 10px;\n border-radius: 15px;\n background: #194880;\n color: white;\n font-size: 1.6rem;\n font-family: inherit;\n text-decoration: none;\n box-shadow: 1px 1px rgba(0, 0, 0, 0.4);\n cursor: pointer;\n }\n\n #filters-toggle.active {\n background: #09294d;\n box-shadow: -1px -1px rgba(0, 0, 0, 0.1);\n }\n\n #filters-toggle > svg {\n width: 15px;\n filter: invert(1);\n vertical-align: text-bottom;\n }\n `;\n }\n}\n"]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { LitElement, CSSResultGroup, nothing } from 'lit';
|
|
2
|
-
import type { SmartFacet } from './models';
|
|
3
|
-
export declare class SmartFacetButton extends LitElement {
|
|
4
|
-
facetInfo?: SmartFacet;
|
|
5
|
-
selected: boolean;
|
|
6
|
-
render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
7
|
-
private get href();
|
|
8
|
-
private facetClicked;
|
|
9
|
-
static get styles(): CSSResultGroup;
|
|
10
|
-
}
|