@internetarchive/collection-browser 0.3.5-alpha.1 → 0.3.6
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/.editorconfig +29 -29
- package/.github/workflows/ci.yml +26 -26
- package/.github/workflows/gh-pages-main.yml +39 -39
- package/.github/workflows/npm-publish.yml +39 -39
- package/.github/workflows/pr-preview.yml +38 -38
- package/.husky/pre-commit +4 -4
- package/LICENSE +661 -661
- package/README.md +83 -83
- package/dist/index.d.ts +9 -9
- package/dist/index.js +9 -9
- package/dist/src/app-root.d.ts +47 -43
- package/dist/src/app-root.js +331 -285
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-left.js +2 -2
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-right.js +2 -2
- package/dist/src/assets/img/icons/chevron.d.ts +2 -2
- package/dist/src/assets/img/icons/chevron.js +2 -2
- package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
- package/dist/src/assets/img/icons/empty-query.js +2 -2
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
- package/dist/src/assets/img/icons/eye-closed.js +2 -2
- package/dist/src/assets/img/icons/eye.d.ts +2 -2
- package/dist/src/assets/img/icons/eye.js +2 -2
- package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
- package/dist/src/assets/img/icons/favorite-filled.js +2 -2
- package/dist/src/assets/img/icons/login-required.d.ts +1 -1
- package/dist/src/assets/img/icons/login-required.js +2 -2
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/account.js +2 -2
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
- package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/data.js +2 -2
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/film.js +2 -2
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/images.js +2 -2
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/software.js +2 -2
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/video.js +2 -2
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/web.js +2 -2
- package/dist/src/assets/img/icons/null-result.d.ts +2 -2
- package/dist/src/assets/img/icons/null-result.js +2 -2
- package/dist/src/assets/img/icons/restricted.d.ts +1 -1
- package/dist/src/assets/img/icons/restricted.js +2 -2
- package/dist/src/assets/img/icons/reviews.d.ts +1 -1
- package/dist/src/assets/img/icons/reviews.js +2 -2
- package/dist/src/assets/img/icons/upload.d.ts +1 -1
- package/dist/src/assets/img/icons/upload.js +2 -2
- package/dist/src/assets/img/icons/views.d.ts +1 -1
- package/dist/src/assets/img/icons/views.js +2 -2
- package/dist/src/circular-activity-indicator.d.ts +5 -5
- package/dist/src/circular-activity-indicator.js +17 -17
- package/dist/src/collection-browser.d.ts +246 -245
- package/dist/src/collection-browser.js +1370 -1359
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
- package/dist/src/collection-facets/facet-tombstone-row.js +42 -42
- package/dist/src/collection-facets/facet-tombstone-row.js.map +1 -1
- package/dist/src/collection-facets/facets-template.d.ts +16 -16
- package/dist/src/collection-facets/facets-template.js +130 -128
- package/dist/src/collection-facets/facets-template.js.map +1 -1
- package/dist/src/collection-facets/more-facets-content.d.ts +76 -76
- package/dist/src/collection-facets/more-facets-content.js +353 -353
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
- package/dist/src/collection-facets/more-facets-pagination.js +192 -192
- package/dist/src/collection-facets.d.ts +77 -77
- package/dist/src/collection-facets.js +551 -551
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/empty-placeholder.d.ts +11 -11
- package/dist/src/empty-placeholder.js +42 -42
- package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
- package/dist/src/language-code-handler/language-code-handler.js +26 -26
- package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
- package/dist/src/language-code-handler/language-code-mapping.js +562 -562
- package/dist/src/mediatype/mediatype-config.d.ts +3 -3
- package/dist/src/mediatype/mediatype-config.js +85 -85
- package/dist/src/models.d.ts +103 -102
- package/dist/src/models.js +117 -117
- package/dist/src/models.js.map +1 -1
- package/dist/src/restoration-state-handler.d.ts +46 -45
- package/dist/src/restoration-state-handler.js +230 -220
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
- package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/compact.js +2 -2
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/list.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/tile.js +2 -2
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
- package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
- package/dist/src/styles/item-image-styles.d.ts +8 -8
- package/dist/src/styles/item-image-styles.js +9 -9
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
- package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
- package/dist/src/tiles/grid/account-tile.d.ts +8 -8
- package/dist/src/tiles/grid/account-tile.js +20 -20
- package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
- package/dist/src/tiles/grid/collection-tile.js +23 -23
- package/dist/src/tiles/grid/item-tile.d.ts +24 -24
- package/dist/src/tiles/grid/item-tile.js +87 -87
- package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
- package/dist/src/tiles/grid/tile-stats.js +46 -40
- package/dist/src/tiles/grid/tile-stats.js.map +1 -1
- package/dist/src/tiles/image-block.d.ts +17 -17
- package/dist/src/tiles/image-block.js +69 -69
- package/dist/src/tiles/item-image.d.ts +31 -31
- package/dist/src/tiles/item-image.js +103 -103
- package/dist/src/tiles/list/account-label.d.ts +1 -1
- package/dist/src/tiles/list/account-label.js +6 -6
- package/dist/src/tiles/list/date-label.d.ts +1 -1
- package/dist/src/tiles/list/date-label.js +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
- package/dist/src/tiles/list/tile-list-compact.d.ts +21 -20
- package/dist/src/tiles/list/tile-list-compact.js +94 -90
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
- package/dist/src/tiles/list/tile-list.d.ts +50 -50
- package/dist/src/tiles/list/tile-list.js +271 -268
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/mediatype-icon.d.ts +9 -9
- package/dist/src/tiles/mediatype-icon.js +49 -47
- package/dist/src/tiles/mediatype-icon.js.map +1 -1
- package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
- package/dist/src/tiles/overlay/icon-overlay.js +30 -30
- package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
- package/dist/src/tiles/overlay/text-overlay.js +31 -31
- package/dist/src/tiles/text-snippet-block.d.ts +29 -29
- package/dist/src/tiles/text-snippet-block.js +81 -81
- package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
- package/dist/src/tiles/tile-dispatcher.js +128 -128
- package/dist/src/utils/analytics-events.d.ts +22 -22
- package/dist/src/utils/analytics-events.js +24 -24
- package/dist/src/utils/format-count.d.ts +7 -7
- package/dist/src/utils/format-count.js +76 -76
- package/dist/src/utils/format-date.d.ts +2 -2
- package/dist/src/utils/format-date.js +23 -23
- package/dist/test/collection-browser.test.d.ts +1 -1
- package/dist/test/collection-browser.test.js +481 -415
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
- package/dist/test/collection-facets/facets-template.test.js +62 -62
- package/dist/test/collection-facets/facets-template.test.js.map +1 -1
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +114 -114
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
- package/dist/test/collection-facets.test.d.ts +2 -2
- package/dist/test/collection-facets.test.js +498 -498
- package/dist/test/empty-placeholder.test.d.ts +1 -1
- package/dist/test/empty-placeholder.test.js +33 -33
- package/dist/test/icon-overlay.test.d.ts +1 -1
- package/dist/test/icon-overlay.test.js +24 -24
- package/dist/test/image-block.test.d.ts +1 -1
- package/dist/test/image-block.test.js +48 -48
- package/dist/test/item-image.test.d.ts +1 -1
- package/dist/test/item-image.test.js +56 -56
- package/dist/test/mediatype-config.test.d.ts +1 -1
- package/dist/test/mediatype-config.test.js +16 -16
- package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
- package/dist/test/mocks/mock-analytics-handler.js +15 -15
- package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
- package/dist/test/mocks/mock-collection-name-cache.js +13 -13
- package/dist/test/mocks/mock-search-responses.d.ts +8 -8
- package/dist/test/mocks/mock-search-responses.js +198 -198
- package/dist/test/mocks/mock-search-responses.js.map +1 -1
- package/dist/test/mocks/mock-search-service.d.ts +13 -13
- package/dist/test/mocks/mock-search-service.js +32 -32
- package/dist/test/mocks/mock-search-service.js.map +1 -1
- package/dist/test/restoration-state-handler.test.d.ts +1 -1
- package/dist/test/restoration-state-handler.test.js +126 -117
- package/dist/test/restoration-state-handler.test.js.map +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
- package/dist/test/text-overlay.test.d.ts +1 -1
- package/dist/test/text-overlay.test.js +41 -41
- package/dist/test/text-snippet-block.test.d.ts +1 -1
- package/dist/test/text-snippet-block.test.js +57 -57
- package/dist/test/tile-stats.test.d.ts +1 -1
- package/dist/test/tile-stats.test.js +33 -33
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +107 -107
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +125 -26
- package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list.test.js +79 -47
- package/dist/test/tiles/list/tile-list.test.js.map +1 -1
- package/dist/test/utils/format-count.test.d.ts +1 -1
- package/dist/test/utils/format-count.test.js +23 -23
- package/dist/test/utils/format-date.test.d.ts +1 -1
- package/dist/test/utils/format-date.test.js +17 -17
- package/index.html +24 -24
- package/local.archive.org.cert +86 -86
- package/local.archive.org.key +27 -27
- package/package.json +115 -115
- package/renovate.json +6 -6
- package/src/app-root.ts +104 -55
- package/src/collection-browser.ts +1503 -1488
- package/src/collection-facets/facet-tombstone-row.ts +40 -40
- package/src/collection-facets/facets-template.ts +5 -3
- package/src/collection-facets.ts +635 -635
- package/src/models.ts +1 -0
- package/src/restoration-state-handler.ts +19 -1
- package/src/tiles/grid/tile-stats.ts +18 -5
- package/src/tiles/list/tile-list-compact.ts +7 -3
- package/src/tiles/list/tile-list.ts +6 -1
- package/src/tiles/mediatype-icon.ts +2 -0
- package/test/collection-browser.test.ts +679 -599
- package/test/collection-facets/facets-template.test.ts +5 -3
- package/test/mocks/mock-search-responses.ts +226 -226
- package/test/mocks/mock-search-service.ts +61 -61
- package/test/restoration-state-handler.test.ts +12 -0
- package/test/tiles/list/tile-list-compact.test.ts +110 -0
- package/test/tiles/list/tile-list.test.ts +36 -0
- package/tsconfig.json +21 -21
- package/web-dev-server.config.mjs +30 -30
- package/web-test-runner.config.mjs +41 -41
package/src/models.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {
|
|
2
|
+
SearchType,
|
|
3
|
+
SortDirection,
|
|
4
|
+
SortParam,
|
|
5
|
+
} from '@internetarchive/search-service';
|
|
2
6
|
import { getCookie, setCookie } from 'typescript-cookie';
|
|
3
7
|
import {
|
|
4
8
|
MetadataFieldToSortField,
|
|
@@ -14,6 +18,7 @@ import {
|
|
|
14
18
|
|
|
15
19
|
export interface RestorationState {
|
|
16
20
|
displayMode?: CollectionDisplayMode;
|
|
21
|
+
searchType?: SearchType;
|
|
17
22
|
sortParam?: SortParam;
|
|
18
23
|
selectedSort?: SortField;
|
|
19
24
|
sortDirection?: SortDirection;
|
|
@@ -87,12 +92,20 @@ export class RestorationStateHandler
|
|
|
87
92
|
private persistQueryStateToUrl(state: RestorationState) {
|
|
88
93
|
const url = new URL(window.location.href);
|
|
89
94
|
const { searchParams } = url;
|
|
95
|
+
searchParams.delete('sin');
|
|
90
96
|
searchParams.delete('sort');
|
|
91
97
|
searchParams.delete('query');
|
|
92
98
|
searchParams.delete('page');
|
|
93
99
|
searchParams.delete('and[]');
|
|
94
100
|
searchParams.delete('not[]');
|
|
95
101
|
|
|
102
|
+
if (state.searchType) {
|
|
103
|
+
searchParams.set(
|
|
104
|
+
'sin',
|
|
105
|
+
state.searchType === SearchType.FULLTEXT ? 'TXT' : ''
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
96
109
|
if (state.sortParam) {
|
|
97
110
|
const prefix = state.sortParam.direction === 'desc' ? '-' : '';
|
|
98
111
|
searchParams.set('sort', `${prefix}${state.sortParam.field}`);
|
|
@@ -155,6 +168,7 @@ export class RestorationStateHandler
|
|
|
155
168
|
|
|
156
169
|
private loadQueryStateFromUrl(): RestorationState {
|
|
157
170
|
const url = new URL(window.location.href);
|
|
171
|
+
const searchInside = url.searchParams.get('sin');
|
|
158
172
|
const pageNumber = url.searchParams.get('page');
|
|
159
173
|
const searchQuery = url.searchParams.get('query');
|
|
160
174
|
const sortQuery = url.searchParams.get('sort');
|
|
@@ -173,6 +187,10 @@ export class RestorationStateHandler
|
|
|
173
187
|
},
|
|
174
188
|
};
|
|
175
189
|
|
|
190
|
+
if (searchInside) {
|
|
191
|
+
restorationState.searchType =
|
|
192
|
+
searchInside === 'TXT' ? SearchType.FULLTEXT : SearchType.METADATA;
|
|
193
|
+
}
|
|
176
194
|
if (pageNumber) {
|
|
177
195
|
const parsed = parseInt(pageNumber, 10);
|
|
178
196
|
restorationState.currentPage = parsed;
|
|
@@ -21,6 +21,18 @@ export class TileStats extends LitElement {
|
|
|
21
21
|
@property({ type: Number }) commentCount?: number;
|
|
22
22
|
|
|
23
23
|
render() {
|
|
24
|
+
const formattedFavCount = formatCount(this.favCount, 'short', 'short');
|
|
25
|
+
const formattedReviewCount = formatCount(
|
|
26
|
+
this.commentCount,
|
|
27
|
+
'short',
|
|
28
|
+
'short'
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
const uploadsOrViewsTitle =
|
|
32
|
+
this.mediatype === 'account'
|
|
33
|
+
? `${this.itemCount} uploads`
|
|
34
|
+
: `${this.viewCount} all-time views`;
|
|
35
|
+
|
|
24
36
|
return html`
|
|
25
37
|
<div class="item-stats">
|
|
26
38
|
<p class="sr-only">
|
|
@@ -31,7 +43,7 @@ export class TileStats extends LitElement {
|
|
|
31
43
|
<p class="sr-only">Mediatype:</p>
|
|
32
44
|
<mediatype-icon .mediatype=${this.mediatype}></mediatype-icon>
|
|
33
45
|
</li>
|
|
34
|
-
<li class="col">
|
|
46
|
+
<li class="col" title="${uploadsOrViewsTitle}">
|
|
35
47
|
${this.mediatype === 'account' ? uploadIcon : viewsIcon}
|
|
36
48
|
<p class="status-text">
|
|
37
49
|
<span class="sr-only">
|
|
@@ -44,18 +56,18 @@ export class TileStats extends LitElement {
|
|
|
44
56
|
)}
|
|
45
57
|
</p>
|
|
46
58
|
</li>
|
|
47
|
-
<li class="col">
|
|
59
|
+
<li class="col" title="${formattedFavCount} favorites">
|
|
48
60
|
${favoriteFilledIcon}
|
|
49
61
|
<p class="status-text">
|
|
50
62
|
<span class="sr-only">Favorites:</span>
|
|
51
|
-
${
|
|
63
|
+
${formattedFavCount}
|
|
52
64
|
</p>
|
|
53
65
|
</li>
|
|
54
|
-
<li class="col">
|
|
66
|
+
<li class="col" title="${formattedReviewCount} reviews">
|
|
55
67
|
${reviewsIcon}
|
|
56
68
|
<p class="status-text">
|
|
57
69
|
<span class="sr-only">Reviews:</span>
|
|
58
|
-
${
|
|
70
|
+
${formattedReviewCount}
|
|
59
71
|
</p>
|
|
60
72
|
</li>
|
|
61
73
|
</ul>
|
|
@@ -116,6 +128,7 @@ export class TileStats extends LitElement {
|
|
|
116
128
|
width: 10px;
|
|
117
129
|
display: block;
|
|
118
130
|
margin: auto;
|
|
131
|
+
pointer-events: none;
|
|
119
132
|
}
|
|
120
133
|
|
|
121
134
|
.status-text {
|
|
@@ -55,9 +55,7 @@ export class TileListCompact extends LitElement {
|
|
|
55
55
|
>
|
|
56
56
|
</mediatype-icon>
|
|
57
57
|
</div>
|
|
58
|
-
<div id="views">
|
|
59
|
-
${formatCount(this.model?.viewCount ?? 0, this.formatSize)}
|
|
60
|
-
</div>
|
|
58
|
+
<div id="views">${formatCount(this.views ?? 0, this.formatSize)}</div>
|
|
61
59
|
</div>
|
|
62
60
|
`;
|
|
63
61
|
}
|
|
@@ -80,6 +78,12 @@ export class TileListCompact extends LitElement {
|
|
|
80
78
|
}
|
|
81
79
|
}
|
|
82
80
|
|
|
81
|
+
private get views(): number | undefined {
|
|
82
|
+
return this.sortParam?.field === 'week'
|
|
83
|
+
? this.model?.weeklyViewCount // weekly views
|
|
84
|
+
: this.model?.viewCount; // all-time views
|
|
85
|
+
}
|
|
86
|
+
|
|
83
87
|
private get classSize(): string {
|
|
84
88
|
if (
|
|
85
89
|
this.mobileBreakpoint &&
|
|
@@ -247,8 +247,13 @@ export class TileList extends LitElement {
|
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
private get viewsTemplate() {
|
|
250
|
+
const viewCount =
|
|
251
|
+
this.sortParam?.field === 'week'
|
|
252
|
+
? this.model?.weeklyViewCount // weekly views
|
|
253
|
+
: this.model?.viewCount; // all-time views
|
|
254
|
+
|
|
250
255
|
return this.metadataTemplate(
|
|
251
|
-
`${formatCount(
|
|
256
|
+
`${formatCount(viewCount ?? 0, this.formatSize)}`,
|
|
252
257
|
'Views'
|
|
253
258
|
);
|
|
254
259
|
}
|
|
@@ -40,6 +40,7 @@ export class MediatypeIcon extends LitElement {
|
|
|
40
40
|
<div
|
|
41
41
|
id="icon"
|
|
42
42
|
class="${this.showText ? 'show-text' : 'hide-text'}"
|
|
43
|
+
title="${config.text}"
|
|
43
44
|
style="--iconFillColor: ${config.color}"
|
|
44
45
|
>
|
|
45
46
|
${config.icon}
|
|
@@ -69,6 +70,7 @@ export class MediatypeIcon extends LitElement {
|
|
|
69
70
|
svg {
|
|
70
71
|
height: var(--iconHeight, 10px);
|
|
71
72
|
width: var(--iconWidth, 10px);
|
|
73
|
+
pointer-events: none;
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
.fill-color {
|