@internetarchive/collection-browser 0.0.1-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/.editorconfig +29 -0
- package/.github/workflows/ci.yml +26 -0
- package/.husky/pre-commit +4 -0
- package/LICENSE +661 -0
- package/README.md +68 -0
- package/demo/app-root.ts +414 -0
- package/demo/index.html +26 -0
- package/dist/demo/app-root.d.ts +43 -0
- package/dist/demo/app-root.js +385 -0
- package/dist/demo/app-root.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/src/assets/img/icons/audio.d.ts +1 -0
- package/dist/src/assets/img/icons/audio.js +9 -0
- package/dist/src/assets/img/icons/audio.js.map +1 -0
- package/dist/src/assets/img/icons/collection.d.ts +1 -0
- package/dist/src/assets/img/icons/collection.js +9 -0
- package/dist/src/assets/img/icons/collection.js.map +1 -0
- package/dist/src/assets/img/icons/etree.d.ts +1 -0
- package/dist/src/assets/img/icons/etree.js +9 -0
- package/dist/src/assets/img/icons/etree.js.map +1 -0
- package/dist/src/assets/img/icons/images.d.ts +1 -0
- package/dist/src/assets/img/icons/images.js +10 -0
- package/dist/src/assets/img/icons/images.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/account.d.ts +2 -0
- package/dist/src/assets/img/icons/mediatype/account.js +12 -0
- package/dist/src/assets/img/icons/mediatype/account.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/audio.js +11 -0
- package/dist/src/assets/img/icons/mediatype/audio.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/collection.js +9 -0
- package/dist/src/assets/img/icons/mediatype/collection.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/etree copy.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/etree copy.js +9 -0
- package/dist/src/assets/img/icons/mediatype/etree copy.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/etree.js +9 -0
- package/dist/src/assets/img/icons/mediatype/etree.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/film.js +13 -0
- package/dist/src/assets/img/icons/mediatype/film.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/images.js +10 -0
- package/dist/src/assets/img/icons/mediatype/images.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/livemusic.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/livemusic.js +7 -0
- package/dist/src/assets/img/icons/mediatype/livemusic.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/photos.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/photos.js +7 -0
- package/dist/src/assets/img/icons/mediatype/photos.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/software.js +10 -0
- package/dist/src/assets/img/icons/mediatype/software.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/texts.js +10 -0
- package/dist/src/assets/img/icons/mediatype/texts.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/tv.js +9 -0
- package/dist/src/assets/img/icons/mediatype/tv.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/video.js +10 -0
- package/dist/src/assets/img/icons/mediatype/video.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/web.js +10 -0
- package/dist/src/assets/img/icons/mediatype/web.js.map +1 -0
- package/dist/src/assets/img/icons/software.d.ts +1 -0
- package/dist/src/assets/img/icons/software.js +10 -0
- package/dist/src/assets/img/icons/software.js.map +1 -0
- package/dist/src/assets/img/icons/texts.d.ts +1 -0
- package/dist/src/assets/img/icons/texts.js +10 -0
- package/dist/src/assets/img/icons/texts.js.map +1 -0
- package/dist/src/assets/img/icons/tv.d.ts +1 -0
- package/dist/src/assets/img/icons/tv.js +9 -0
- package/dist/src/assets/img/icons/tv.js.map +1 -0
- package/dist/src/assets/img/icons/video.d.ts +1 -0
- package/dist/src/assets/img/icons/video.js +10 -0
- package/dist/src/assets/img/icons/video.js.map +1 -0
- package/dist/src/assets/img/icons/web.d.ts +1 -0
- package/dist/src/assets/img/icons/web.js +10 -0
- package/dist/src/assets/img/icons/web.js.map +1 -0
- package/dist/src/circular-activity-indicator.d.ts +5 -0
- package/dist/src/circular-activity-indicator.js +66 -0
- package/dist/src/circular-activity-indicator.js.map +1 -0
- package/dist/src/collection-browser.d.ts +151 -0
- package/dist/src/collection-browser.js +697 -0
- package/dist/src/collection-browser.js.map +1 -0
- package/dist/src/collection-facets.d.ts +34 -0
- package/dist/src/collection-facets.js +245 -0
- package/dist/src/collection-facets.js.map +1 -0
- package/dist/src/mediatype-icon.d.ts +9 -0
- package/dist/src/mediatype-icon.js +89 -0
- package/dist/src/mediatype-icon.js.map +1 -0
- package/dist/src/models.d.ts +23 -0
- package/dist/src/models.js +2 -0
- package/dist/src/models.js.map +1 -0
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +10 -0
- package/dist/src/sort-filter-bar/alpha-bar.js +88 -0
- package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +24 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.js +257 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -0
- package/dist/src/tiles/grid/account-tile.d.ts +7 -0
- package/dist/src/tiles/grid/account-tile.js +144 -0
- package/dist/src/tiles/grid/account-tile.js.map +1 -0
- package/dist/src/tiles/grid/collection-tile.d.ts +7 -0
- package/dist/src/tiles/grid/collection-tile.js +160 -0
- package/dist/src/tiles/grid/collection-tile.js.map +1 -0
- package/dist/src/tiles/grid/icons/account.d.ts +1 -0
- package/dist/src/tiles/grid/icons/account.js +12 -0
- package/dist/src/tiles/grid/icons/account.js.map +1 -0
- package/dist/src/tiles/grid/icons/favorite-filled.d.ts +1 -0
- package/dist/src/tiles/grid/icons/favorite-filled.js +11 -0
- package/dist/src/tiles/grid/icons/favorite-filled.js.map +1 -0
- package/dist/src/tiles/grid/icons/reviews.d.ts +1 -0
- package/dist/src/tiles/grid/icons/reviews.js +11 -0
- package/dist/src/tiles/grid/icons/reviews.js.map +1 -0
- package/dist/src/tiles/grid/icons/upload.d.ts +1 -0
- package/dist/src/tiles/grid/icons/upload.js +12 -0
- package/dist/src/tiles/grid/icons/upload.js.map +1 -0
- package/dist/src/tiles/grid/icons/views.d.ts +2 -0
- package/dist/src/tiles/grid/icons/views.js +11 -0
- package/dist/src/tiles/grid/icons/views.js.map +1 -0
- package/dist/src/tiles/grid/item-tile.d.ts +9 -0
- package/dist/src/tiles/grid/item-tile.js +240 -0
- package/dist/src/tiles/grid/item-tile.js.map +1 -0
- package/dist/src/tiles/list/tile-list-compact.d.ts +16 -0
- package/dist/src/tiles/list/tile-list-compact.js +125 -0
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -0
- package/dist/src/tiles/list/tile-list-detail.d.ts +17 -0
- package/dist/src/tiles/list/tile-list-detail.js +181 -0
- package/dist/src/tiles/list/tile-list-detail.js.map +1 -0
- package/dist/src/tiles/list/tile-list.d.ts +21 -0
- package/dist/src/tiles/list/tile-list.js +229 -0
- package/dist/src/tiles/list/tile-list.js.map +1 -0
- package/dist/src/tiles/loading-tile.d.ts +5 -0
- package/dist/src/tiles/loading-tile.js +73 -0
- package/dist/src/tiles/loading-tile.js.map +1 -0
- package/dist/src/tiles/tile-dispatcher.d.ts +27 -0
- package/dist/src/tiles/tile-dispatcher.js +160 -0
- package/dist/src/tiles/tile-dispatcher.js.map +1 -0
- package/dist/src/utils/format-count.d.ts +7 -0
- package/dist/src/utils/format-count.js +76 -0
- package/dist/src/utils/format-count.js.map +1 -0
- package/dist/src/utils/format-date.d.ts +2 -0
- package/dist/src/utils/format-date.js +24 -0
- package/dist/src/utils/format-date.js.map +1 -0
- package/dist/src/utils/format-string.d.ts +2 -0
- package/dist/src/utils/format-string.js +7 -0
- package/dist/src/utils/format-string.js.map +1 -0
- package/dist/test/collection-browser.test.d.ts +0 -0
- package/dist/test/collection-browser.test.js +3 -0
- package/dist/test/collection-browser.test.js.map +1 -0
- package/dist/test/utils/format-count.test.d.ts +1 -0
- package/dist/test/utils/format-count.test.js +24 -0
- package/dist/test/utils/format-count.test.js.map +1 -0
- package/dist/test/utils/format-date.test.d.ts +1 -0
- package/dist/test/utils/format-date.test.js +18 -0
- package/dist/test/utils/format-date.test.js.map +1 -0
- package/dist/test/utils/format-string.test.d.ts +1 -0
- package/dist/test/utils/format-string.test.js +17 -0
- package/dist/test/utils/format-string.test.js.map +1 -0
- package/index.ts +3 -0
- package/package.json +95 -0
- package/src/assets/img/icons/mediatype/account.ts +12 -0
- package/src/assets/img/icons/mediatype/audio.ts +11 -0
- package/src/assets/img/icons/mediatype/collection.ts +9 -0
- package/src/assets/img/icons/mediatype/etree.ts +9 -0
- package/src/assets/img/icons/mediatype/film.ts +13 -0
- package/src/assets/img/icons/mediatype/foo.svg +5 -0
- package/src/assets/img/icons/mediatype/images.ts +10 -0
- package/src/assets/img/icons/mediatype/software.ts +10 -0
- package/src/assets/img/icons/mediatype/texts.ts +10 -0
- package/src/assets/img/icons/mediatype/tv.ts +9 -0
- package/src/assets/img/icons/mediatype/video.ts +10 -0
- package/src/assets/img/icons/mediatype/web.ts +10 -0
- package/src/circular-activity-indicator.ts +64 -0
- package/src/collection-browser.ts +756 -0
- package/src/collection-facets.ts +285 -0
- package/src/mediatype-icon.ts +83 -0
- package/src/models.ts +25 -0
- package/src/sort-filter-bar/alpha-bar.ts +86 -0
- package/src/sort-filter-bar/sort-filter-bar.ts +256 -0
- package/src/tiles/grid/account-tile.ts +141 -0
- package/src/tiles/grid/collection-tile.ts +157 -0
- package/src/tiles/grid/icons/account.ts +12 -0
- package/src/tiles/grid/icons/favorite-filled.ts +11 -0
- package/src/tiles/grid/icons/reviews.ts +11 -0
- package/src/tiles/grid/icons/upload.ts +12 -0
- package/src/tiles/grid/icons/views.ts +11 -0
- package/src/tiles/grid/item-tile.ts +254 -0
- package/src/tiles/list/tile-list.ts +227 -0
- package/src/tiles/loading-tile.ts +70 -0
- package/src/tiles/tile-dispatcher.ts +160 -0
- package/src/utils/format-count.ts +95 -0
- package/src/utils/format-date.ts +36 -0
- package/test/collection-browser.test.ts +1 -0
- package/test/utils/format-count.test.ts +32 -0
- package/test/utils/format-date.test.ts +22 -0
- package/tsconfig.json +20 -0
- package/web-dev-server.config.mjs +28 -0
- package/web-test-runner.config.mjs +41 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { css, html, LitElement, nothing } from 'lit';
|
|
3
|
+
import { customElement, property, query } from 'lit/decorators.js';
|
|
4
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
5
|
+
import './grid/collection-tile';
|
|
6
|
+
import './grid/item-tile';
|
|
7
|
+
import './grid/account-tile';
|
|
8
|
+
import './list/tile-list';
|
|
9
|
+
let TileDispatcher = class TileDispatcher extends LitElement {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.displayMode = 'grid';
|
|
13
|
+
this.showDeleteButton = false;
|
|
14
|
+
}
|
|
15
|
+
render() {
|
|
16
|
+
var _a, _b;
|
|
17
|
+
return html `
|
|
18
|
+
<div id="container">
|
|
19
|
+
${this.showDeleteButton
|
|
20
|
+
? html `<button id="delete-button">X</button>`
|
|
21
|
+
: nothing}
|
|
22
|
+
<a
|
|
23
|
+
href="${this.baseNavigationUrl}/details/${(_a = this.model) === null || _a === void 0 ? void 0 : _a.identifier}"
|
|
24
|
+
title=${ifDefined((_b = this.model) === null || _b === void 0 ? void 0 : _b.title)}
|
|
25
|
+
>
|
|
26
|
+
${this.tile}
|
|
27
|
+
</a>
|
|
28
|
+
</div>
|
|
29
|
+
`;
|
|
30
|
+
}
|
|
31
|
+
handleResize(entry) {
|
|
32
|
+
this.currentWidth = entry.contentRect.width;
|
|
33
|
+
this.currentHeight = entry.contentRect.height;
|
|
34
|
+
}
|
|
35
|
+
disconnectedCallback() {
|
|
36
|
+
this.stopResizeObservation(this.resizeObserver);
|
|
37
|
+
}
|
|
38
|
+
stopResizeObservation(observer) {
|
|
39
|
+
observer === null || observer === void 0 ? void 0 : observer.removeObserver({
|
|
40
|
+
handler: this,
|
|
41
|
+
target: this.container,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
startResizeObservation() {
|
|
45
|
+
var _a;
|
|
46
|
+
this.stopResizeObservation(this.resizeObserver);
|
|
47
|
+
(_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.addObserver({
|
|
48
|
+
handler: this,
|
|
49
|
+
target: this.container,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
updated(props) {
|
|
53
|
+
if (props.has('resizeObserver')) {
|
|
54
|
+
const previousObserver = props.get('resizeObserver');
|
|
55
|
+
this.stopResizeObservation(previousObserver);
|
|
56
|
+
this.startResizeObservation();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
get tile() {
|
|
60
|
+
const { model, baseNavigationUrl, currentWidth, currentHeight, sortParam } = this;
|
|
61
|
+
if (!model)
|
|
62
|
+
return nothing;
|
|
63
|
+
switch (this.displayMode) {
|
|
64
|
+
case 'grid':
|
|
65
|
+
switch (model.mediatype) {
|
|
66
|
+
case 'collection':
|
|
67
|
+
return html `<collection-tile
|
|
68
|
+
.model=${model}
|
|
69
|
+
.currentWidth=${currentWidth}
|
|
70
|
+
.currentHeight=${currentHeight}
|
|
71
|
+
>
|
|
72
|
+
</collection-tile>`;
|
|
73
|
+
case 'account':
|
|
74
|
+
return html `<account-tile
|
|
75
|
+
.model=${model}
|
|
76
|
+
.currentWidth=${currentWidth}
|
|
77
|
+
.currentHeight=${currentHeight}
|
|
78
|
+
></account-tile>`;
|
|
79
|
+
default:
|
|
80
|
+
return html `<item-tile
|
|
81
|
+
.model=${model}
|
|
82
|
+
.currentWidth=${currentWidth}
|
|
83
|
+
.currentHeight=${currentHeight}
|
|
84
|
+
></item-tile>`;
|
|
85
|
+
}
|
|
86
|
+
case 'list-compact':
|
|
87
|
+
case 'list-detail':
|
|
88
|
+
return html `<tile-list
|
|
89
|
+
.model=${model}
|
|
90
|
+
.currentWidth=${currentWidth}
|
|
91
|
+
.currentHeight=${currentHeight}
|
|
92
|
+
.baseNavigationUrl=${baseNavigationUrl}
|
|
93
|
+
.sortParam=${sortParam}
|
|
94
|
+
.displayMode=${this.displayMode}
|
|
95
|
+
></tile-list>`;
|
|
96
|
+
default:
|
|
97
|
+
return nothing;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
static get styles() {
|
|
101
|
+
return css `
|
|
102
|
+
:host {
|
|
103
|
+
display: block;
|
|
104
|
+
height: 100%;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
#container {
|
|
108
|
+
height: 100%;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
#delete-button {
|
|
112
|
+
float: right;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
a {
|
|
116
|
+
display: block;
|
|
117
|
+
height: 100%;
|
|
118
|
+
color: unset;
|
|
119
|
+
text-decoration: none;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
a :first-child {
|
|
123
|
+
display: block;
|
|
124
|
+
height: 100%;
|
|
125
|
+
}
|
|
126
|
+
`;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
__decorate([
|
|
130
|
+
property({ type: String })
|
|
131
|
+
], TileDispatcher.prototype, "displayMode", void 0);
|
|
132
|
+
__decorate([
|
|
133
|
+
property({ type: Object })
|
|
134
|
+
], TileDispatcher.prototype, "model", void 0);
|
|
135
|
+
__decorate([
|
|
136
|
+
property({ type: String })
|
|
137
|
+
], TileDispatcher.prototype, "baseNavigationUrl", void 0);
|
|
138
|
+
__decorate([
|
|
139
|
+
property({ type: Boolean })
|
|
140
|
+
], TileDispatcher.prototype, "showDeleteButton", void 0);
|
|
141
|
+
__decorate([
|
|
142
|
+
property({ type: Number })
|
|
143
|
+
], TileDispatcher.prototype, "currentWidth", void 0);
|
|
144
|
+
__decorate([
|
|
145
|
+
property({ type: Number })
|
|
146
|
+
], TileDispatcher.prototype, "currentHeight", void 0);
|
|
147
|
+
__decorate([
|
|
148
|
+
property({ type: Object })
|
|
149
|
+
], TileDispatcher.prototype, "resizeObserver", void 0);
|
|
150
|
+
__decorate([
|
|
151
|
+
property({ type: Object })
|
|
152
|
+
], TileDispatcher.prototype, "sortParam", void 0);
|
|
153
|
+
__decorate([
|
|
154
|
+
query('#container')
|
|
155
|
+
], TileDispatcher.prototype, "container", void 0);
|
|
156
|
+
TileDispatcher = __decorate([
|
|
157
|
+
customElement('tile-dispatcher')
|
|
158
|
+
], TileDispatcher);
|
|
159
|
+
export { TileDispatcher };
|
|
160
|
+
//# sourceMappingURL=tile-dispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tile-dispatcher.js","sourceRoot":"","sources":["../../../src/tiles/tile-dispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement, nothing, PropertyValues } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport {\n SharedResizeObserverInterface,\n SharedResizeObserverResizeHandlerInterface,\n} from '@internetarchive/shared-resize-observer';\nimport { SortParam } from '@internetarchive/search-service';\nimport type { CollectionDisplayMode, TileModel } from '../models';\nimport './grid/collection-tile';\nimport './grid/item-tile';\nimport './grid/account-tile';\nimport './list/tile-list';\n\n@customElement('tile-dispatcher')\nexport class TileDispatcher\n extends LitElement\n implements SharedResizeObserverResizeHandlerInterface\n{\n @property({ type: String }) displayMode: CollectionDisplayMode = 'grid';\n\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: String }) baseNavigationUrl?: string;\n\n @property({ type: Boolean }) showDeleteButton = false;\n\n @property({ type: Number }) currentWidth?: number;\n\n @property({ type: Number }) currentHeight?: number;\n\n @property({ type: Object }) resizeObserver?: SharedResizeObserverInterface;\n\n @property({ type: Object }) sortParam?: SortParam;\n\n @query('#container') private container!: HTMLDivElement;\n\n render() {\n return html`\n <div id=\"container\">\n ${this.showDeleteButton\n ? html`<button id=\"delete-button\">X</button>`\n : nothing}\n <a\n href=\"${this.baseNavigationUrl}/details/${this.model?.identifier}\"\n title=${ifDefined(this.model?.title)}\n >\n ${this.tile}\n </a>\n </div>\n `;\n }\n\n handleResize(entry: ResizeObserverEntry): void {\n this.currentWidth = entry.contentRect.width;\n this.currentHeight = entry.contentRect.height;\n }\n\n disconnectedCallback(): void {\n this.stopResizeObservation(this.resizeObserver);\n }\n\n private stopResizeObservation(observer?: SharedResizeObserverInterface) {\n observer?.removeObserver({\n handler: this,\n target: this.container,\n });\n }\n\n private startResizeObservation() {\n this.stopResizeObservation(this.resizeObserver);\n this.resizeObserver?.addObserver({\n handler: this,\n target: this.container,\n });\n }\n\n updated(props: PropertyValues) {\n if (props.has('resizeObserver')) {\n const previousObserver = props.get(\n 'resizeObserver'\n ) as SharedResizeObserverInterface;\n this.stopResizeObservation(previousObserver);\n this.startResizeObservation();\n }\n }\n\n private get tile() {\n const { model, baseNavigationUrl, currentWidth, currentHeight, sortParam } =\n this;\n\n if (!model) return nothing;\n\n switch (this.displayMode) {\n case 'grid':\n switch (model.mediatype) {\n case 'collection':\n return html`<collection-tile\n .model=${model}\n .currentWidth=${currentWidth}\n .currentHeight=${currentHeight}\n >\n </collection-tile>`;\n case 'account':\n return html`<account-tile\n .model=${model}\n .currentWidth=${currentWidth}\n .currentHeight=${currentHeight}\n ></account-tile>`;\n default:\n return html`<item-tile\n .model=${model}\n .currentWidth=${currentWidth}\n .currentHeight=${currentHeight}\n ></item-tile>`;\n }\n case 'list-compact':\n case 'list-detail':\n return html`<tile-list\n .model=${model}\n .currentWidth=${currentWidth}\n .currentHeight=${currentHeight}\n .baseNavigationUrl=${baseNavigationUrl}\n .sortParam=${sortParam}\n .displayMode=${this.displayMode}\n ></tile-list>`;\n default:\n return nothing;\n }\n }\n\n static get styles() {\n return css`\n :host {\n display: block;\n height: 100%;\n }\n\n #container {\n height: 100%;\n }\n\n #delete-button {\n float: right;\n }\n\n a {\n display: block;\n height: 100%;\n color: unset;\n text-decoration: none;\n }\n\n a :first-child {\n display: block;\n height: 100%;\n }\n `;\n }\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare type NumberFormat = 'short' | 'long';
|
|
2
|
+
export declare type LabelFormat = 'short' | 'long';
|
|
3
|
+
/**
|
|
4
|
+
* Format a "count" number into short "icon" or longer text string.
|
|
5
|
+
* For positive numbers only.
|
|
6
|
+
*/
|
|
7
|
+
export declare function formatCount(count: number | undefined, numberFormat?: NumberFormat, labelFormat?: LabelFormat, locale?: string): string;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Replaces Petabox www/common/Util::number_format()
|
|
3
|
+
* For positive numbers only.
|
|
4
|
+
*/
|
|
5
|
+
import { msg, str } from '@lit/localize';
|
|
6
|
+
/**
|
|
7
|
+
* Return the magnitude of a number.
|
|
8
|
+
*/
|
|
9
|
+
function magnitude(number, numberFormat) {
|
|
10
|
+
let divisor = 1;
|
|
11
|
+
if (number >= 1000000000) {
|
|
12
|
+
divisor = 1000000000;
|
|
13
|
+
}
|
|
14
|
+
else if (number >= 1000000) {
|
|
15
|
+
divisor = 1000000;
|
|
16
|
+
}
|
|
17
|
+
else if (number >= 1000 && numberFormat === 'short') {
|
|
18
|
+
divisor = 1000;
|
|
19
|
+
}
|
|
20
|
+
return divisor;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Round a number given passed magnitude.
|
|
24
|
+
* Significant digits of value less than 10 get a decimal.
|
|
25
|
+
*/
|
|
26
|
+
function round(number = 0, divisor) {
|
|
27
|
+
const result = number / divisor;
|
|
28
|
+
const roundToOne = result < 10;
|
|
29
|
+
let rounded = 0;
|
|
30
|
+
if (roundToOne) {
|
|
31
|
+
rounded = Math.round((result + Number.EPSILON) * 10) / 10;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
rounded = Math.round(result);
|
|
35
|
+
}
|
|
36
|
+
return rounded;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Return a label for a number and format.
|
|
40
|
+
*/
|
|
41
|
+
function labelize(rounded, divisor, format, locale) {
|
|
42
|
+
switch (divisor) {
|
|
43
|
+
case 1000000000:
|
|
44
|
+
if (format === 'short') {
|
|
45
|
+
return msg(str `${rounded}B`);
|
|
46
|
+
}
|
|
47
|
+
return msg(str `${rounded} billion`);
|
|
48
|
+
case 1000000:
|
|
49
|
+
if (format === 'short') {
|
|
50
|
+
return msg(str `${rounded}M`);
|
|
51
|
+
}
|
|
52
|
+
return msg(str `${rounded} million`);
|
|
53
|
+
case 1000:
|
|
54
|
+
if (format === 'short') {
|
|
55
|
+
return msg(str `${rounded}K`);
|
|
56
|
+
}
|
|
57
|
+
return msg(str `${rounded} thousand`);
|
|
58
|
+
default:
|
|
59
|
+
return new Intl.NumberFormat(locale).format(rounded);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Format a "count" number into short "icon" or longer text string.
|
|
64
|
+
* For positive numbers only.
|
|
65
|
+
*/
|
|
66
|
+
export function formatCount(count, numberFormat = 'long', labelFormat = 'short', locale = 'en-US') {
|
|
67
|
+
// Return blank if undefined
|
|
68
|
+
const number = count !== null && count !== void 0 ? count : -1;
|
|
69
|
+
if (number < 0) {
|
|
70
|
+
return '';
|
|
71
|
+
}
|
|
72
|
+
const divisor = magnitude(number, numberFormat);
|
|
73
|
+
const rounded = round(number, divisor);
|
|
74
|
+
return labelize(rounded, divisor, labelFormat, locale);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=format-count.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-count.js","sourceRoot":"","sources":["../../../src/utils/format-count.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAUzC;;GAEG;AACH,SAAS,SAAS,CAAC,MAAc,EAAE,YAA0B;IAC3D,IAAI,OAAO,GAAY,CAAC,CAAC;IACzB,IAAI,MAAM,IAAI,UAAa,EAAE;QAC3B,OAAO,GAAG,UAAa,CAAC;KACzB;SAAM,IAAI,MAAM,IAAI,OAAS,EAAE;QAC9B,OAAO,GAAG,OAAS,CAAC;KACrB;SAAM,IAAI,MAAM,IAAI,IAAK,IAAI,YAAY,KAAK,OAAO,EAAE;QACtD,OAAO,GAAG,IAAK,CAAC;KACjB;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,KAAK,CAAC,SAAiB,CAAC,EAAE,OAAgB;IACjD,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;IAC/B,IAAI,OAAO,GAAW,CAAC,CAAC;IACxB,IAAI,UAAU,EAAE;QACd,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;KAC3D;SAAM;QACL,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAC9B;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CACf,OAAe,EACf,OAAgB,EAChB,MAAmB,EACnB,MAAc;IAEd,QAAQ,OAAO,EAAE;QACf,KAAK,UAAa;YAChB,IAAI,MAAM,KAAK,OAAO,EAAE;gBACtB,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,GAAG,CAAC,CAAC;aAC9B;YACD,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,UAAU,CAAC,CAAC;QACtC,KAAK,OAAS;YACZ,IAAI,MAAM,KAAK,OAAO,EAAE;gBACtB,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,GAAG,CAAC,CAAC;aAC9B;YACD,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,UAAU,CAAC,CAAC;QACtC,KAAK,IAAK;YACR,IAAI,MAAM,KAAK,OAAO,EAAE;gBACtB,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,GAAG,CAAC,CAAC;aAC9B;YACD,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,WAAW,CAAC,CAAC;QAEvC;YACE,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACxD;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,KAAyB,EACzB,eAA6B,MAAM,EACnC,cAA2B,OAAO,EAClC,SAAiB,OAAO;IAExB,4BAA4B;IAC5B,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,CAAC,CAAC;IAC3B,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,OAAO,EAAE,CAAC;KACX;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC","sourcesContent":["/*\n * Replaces Petabox www/common/Util::number_format()\n * For positive numbers only.\n */\nimport { msg, str } from '@lit/localize';\n\nexport type NumberFormat =\n | 'short' // 1.2 [K | thousand]\n | 'long'; // 1,200 [No label for numbers < 1,000,000]\nexport type LabelFormat =\n | 'short' // [1.2]K\n | 'long'; // [1.2] thousand\ntype Divisor = 1_000_000_000 | 1_000_000 | 1_000 | 1;\n\n/**\n * Return the magnitude of a number.\n */\nfunction magnitude(number: number, numberFormat: NumberFormat): Divisor {\n let divisor: Divisor = 1;\n if (number >= 1_000_000_000) {\n divisor = 1_000_000_000;\n } else if (number >= 1_000_000) {\n divisor = 1_000_000;\n } else if (number >= 1_000 && numberFormat === 'short') {\n divisor = 1_000;\n }\n return divisor;\n}\n\n/**\n * Round a number given passed magnitude.\n * Significant digits of value less than 10 get a decimal.\n */\nfunction round(number: number = 0, divisor: Divisor): number {\n const result = number / divisor;\n const roundToOne = result < 10;\n let rounded: number = 0;\n if (roundToOne) {\n rounded = Math.round((result + Number.EPSILON) * 10) / 10;\n } else {\n rounded = Math.round(result);\n }\n return rounded;\n}\n\n/**\n * Return a label for a number and format.\n */\nfunction labelize(\n rounded: number,\n divisor: Divisor,\n format: LabelFormat,\n locale: string\n): string {\n switch (divisor) {\n case 1_000_000_000:\n if (format === 'short') {\n return msg(str`${rounded}B`);\n }\n return msg(str`${rounded} billion`);\n case 1_000_000:\n if (format === 'short') {\n return msg(str`${rounded}M`);\n }\n return msg(str`${rounded} million`);\n case 1_000:\n if (format === 'short') {\n return msg(str`${rounded}K`);\n }\n return msg(str`${rounded} thousand`);\n\n default:\n return new Intl.NumberFormat(locale).format(rounded);\n }\n}\n\n/**\n * Format a \"count\" number into short \"icon\" or longer text string.\n * For positive numbers only.\n */\nexport function formatCount(\n count: number | undefined,\n numberFormat: NumberFormat = 'long',\n labelFormat: LabelFormat = 'short',\n locale: string = 'en-US'\n): string {\n // Return blank if undefined\n const number = count ?? -1;\n if (number < 0) {\n return '';\n }\n const divisor = magnitude(number, numberFormat);\n const rounded = round(number, divisor);\n return labelize(rounded, divisor, labelFormat, locale);\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export function formatDate(date, format = 'short', locale = 'en-US') {
|
|
2
|
+
// Return blank if undefined
|
|
3
|
+
if (!date)
|
|
4
|
+
return '';
|
|
5
|
+
const options = {
|
|
6
|
+
timeZone: 'UTC', // Override browser timezone
|
|
7
|
+
};
|
|
8
|
+
switch (format) {
|
|
9
|
+
case 'short':
|
|
10
|
+
options.month = '2-digit';
|
|
11
|
+
options.year = '2-digit';
|
|
12
|
+
break;
|
|
13
|
+
case 'long':
|
|
14
|
+
options.year = 'numeric';
|
|
15
|
+
options.month = 'short';
|
|
16
|
+
options.day = '2-digit';
|
|
17
|
+
break;
|
|
18
|
+
default:
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
const dateFormatter = new Intl.DateTimeFormat(locale, options);
|
|
22
|
+
return dateFormatter.format(date);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=format-date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../../src/utils/format-date.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,UAAU,CACxB,IAAsB,EACtB,SAAqB,OAAO,EAC5B,SAAiB,OAAO;IAExB,4BAA4B;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,OAAO,GAA+B;QAC1C,QAAQ,EAAE,KAAK,EAAE,4BAA4B;KAC9C,CAAC;IACF,QAAQ,MAAM,EAAE;QACd,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;YAC1B,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;YACzB,MAAM;QACR,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;YACzB,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;YACxB,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;YACxB,MAAM;QACR;YACE,MAAM;KACT;IAED,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/D,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC","sourcesContent":["/*\n * Display date\n * Override browser timezone to always display same date as in data\n */\nexport type DateFormat =\n | 'short' // 12/20\n | 'long'; // Dec 20, 2020\n\nexport function formatDate(\n date: Date | undefined,\n format: DateFormat = 'short',\n locale: string = 'en-US'\n): string {\n // Return blank if undefined\n if (!date) return '';\n\n const options: Intl.DateTimeFormatOptions = {\n timeZone: 'UTC', // Override browser timezone\n };\n switch (format) {\n case 'short':\n options.month = '2-digit';\n options.year = '2-digit';\n break;\n case 'long':\n options.year = 'numeric';\n options.month = 'short';\n options.day = '2-digit';\n break;\n default:\n break;\n }\n\n const dateFormatter = new Intl.DateTimeFormat(locale, options);\n return dateFormatter.format(date);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-string.js","sourceRoot":"","sources":["../../../src/utils/format-string.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;AAC/C,CAAC","sourcesContent":["export function strHasSpace(str: string): boolean {\n return /\\s/.test(str);\n}\n\nexport function isStrOneLiner(str: string): boolean {\n return !strHasSpace(str) && str.length >= 24;\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-browser.test.js","sourceRoot":"","sources":["../../test/collection-browser.test.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC","sourcesContent":["describe('YourWebComponent', () => {});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { formatCount } from '../../src/utils/format-count';
|
|
3
|
+
const testCount = 805342;
|
|
4
|
+
describe('formatCount', () => {
|
|
5
|
+
it('returns blank when undefined number', () => {
|
|
6
|
+
expect(formatCount(undefined)).to.equal('');
|
|
7
|
+
});
|
|
8
|
+
it('returns blank when negative number', () => {
|
|
9
|
+
expect(formatCount(testCount * -1)).to.equal('');
|
|
10
|
+
});
|
|
11
|
+
it('returns long number when no NumberFormat', () => {
|
|
12
|
+
expect(formatCount(testCount)).to.equal('805,342');
|
|
13
|
+
});
|
|
14
|
+
it('returns short number when short NumberFormat', () => {
|
|
15
|
+
expect(formatCount(testCount, 'short')).to.equal('805K');
|
|
16
|
+
});
|
|
17
|
+
it('returns decimal when value of significant digits < 10', () => {
|
|
18
|
+
expect(formatCount(testCount * 10, 'short', 'long')).to.equal('8.1 million');
|
|
19
|
+
});
|
|
20
|
+
it('returns locale formatted number', () => {
|
|
21
|
+
expect(formatCount(testCount, 'long', 'long', 'de-DE')).to.equal('805.342');
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=format-count.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-count.test.js","sourceRoot":"","sources":["../../../test/utils/format-count.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAC3D,aAAa,CACd,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { formatCount } from '../../src/utils/format-count';\n\nconst testCount = 805342;\n\ndescribe('formatCount', () => {\n it('returns blank when undefined number', () => {\n expect(formatCount(undefined)).to.equal('');\n });\n\n it('returns blank when negative number', () => {\n expect(formatCount(testCount * -1)).to.equal('');\n });\n\n it('returns long number when no NumberFormat', () => {\n expect(formatCount(testCount)).to.equal('805,342');\n });\n\n it('returns short number when short NumberFormat', () => {\n expect(formatCount(testCount, 'short')).to.equal('805K');\n });\n\n it('returns decimal when value of significant digits < 10', () => {\n expect(formatCount(testCount * 10, 'short', 'long')).to.equal(\n '8.1 million'\n );\n });\n\n it('returns locale formatted number', () => {\n expect(formatCount(testCount, 'long', 'long', 'de-DE')).to.equal('805.342');\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { formatDate } from '../../src/utils/format-date';
|
|
3
|
+
const testDate = new Date(Date.UTC(2020, 11, 9));
|
|
4
|
+
describe('formatDate', () => {
|
|
5
|
+
it('returns blank when undefined date', () => {
|
|
6
|
+
expect(formatDate(undefined)).to.equal('');
|
|
7
|
+
});
|
|
8
|
+
it('returns short date when no DateFormat', () => {
|
|
9
|
+
expect(formatDate(testDate)).to.equal('12/20');
|
|
10
|
+
});
|
|
11
|
+
it('returns long date when long DateFormat', () => {
|
|
12
|
+
expect(formatDate(testDate, 'long')).to.equal('Dec 09, 2020');
|
|
13
|
+
});
|
|
14
|
+
it('returns locale formatted date', () => {
|
|
15
|
+
expect(formatDate(testDate, 'long', 'de-DE')).to.equal('09. Dez. 2020');
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=format-date.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-date.test.js","sourceRoot":"","sources":["../../../test/utils/format-date.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAEjD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { formatDate } from '../../src/utils/format-date';\n\nconst testDate = new Date(Date.UTC(2020, 11, 9));\n\ndescribe('formatDate', () => {\n it('returns blank when undefined date', () => {\n expect(formatDate(undefined)).to.equal('');\n });\n\n it('returns short date when no DateFormat', () => {\n expect(formatDate(testDate)).to.equal('12/20');\n });\n\n it('returns long date when long DateFormat', () => {\n expect(formatDate(testDate, 'long')).to.equal('Dec 09, 2020');\n });\n\n it('returns locale formatted date', () => {\n expect(formatDate(testDate, 'long', 'de-DE')).to.equal('09. Dez. 2020');\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { isStrOneLiner } from '../../src/utils/format-string';
|
|
3
|
+
const testShortTextNoSpaces = 'Loremipsumdolorsitamet';
|
|
4
|
+
const testLongText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua';
|
|
5
|
+
const testLongOnelineText = 'Loremipsumdolorsitamet,consecteturadipiscingelit,seddoeiusmodtemporincididuntutlaboreetdoloremagnaaliqua';
|
|
6
|
+
describe('isStrOneLiner', () => {
|
|
7
|
+
it('returns true if string has no spaces and have long text', () => {
|
|
8
|
+
expect(isStrOneLiner(testLongOnelineText)).to.equal(true);
|
|
9
|
+
});
|
|
10
|
+
it('returns false if string has no spaces but text length not more than 24', () => {
|
|
11
|
+
expect(isStrOneLiner(testShortTextNoSpaces)).to.equal(false);
|
|
12
|
+
});
|
|
13
|
+
it('returns false if string has spaces', () => {
|
|
14
|
+
expect(isStrOneLiner(testLongText)).to.equal(false);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=format-string.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-string.test.js","sourceRoot":"","sources":["../../../test/utils/format-string.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AACvD,MAAM,YAAY,GAChB,4HAA4H,CAAC;AAC/H,MAAM,mBAAmB,GACvB,0GAA0G,CAAC;AAE7G,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { isStrOneLiner } from '../../src/utils/format-string';\n\nconst testShortTextNoSpaces = 'Loremipsumdolorsitamet';\nconst testLongText =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua';\nconst testLongOnelineText =\n 'Loremipsumdolorsitamet,consecteturadipiscingelit,seddoeiusmodtemporincididuntutlaboreetdoloremagnaaliqua';\n\ndescribe('isStrOneLiner', () => {\n it('returns true if string has no spaces and have long text', () => {\n expect(isStrOneLiner(testLongOnelineText)).to.equal(true);\n });\n\n it('returns false if string has no spaces but text length not more than 24', () => {\n expect(isStrOneLiner(testShortTextNoSpaces)).to.equal(false);\n });\n\n it('returns false if string has spaces', () => {\n expect(isStrOneLiner(testLongText)).to.equal(false);\n });\n});\n"]}
|
package/index.ts
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@internetarchive/collection-browser",
|
|
3
|
+
"description": "The Internet Archive Collection Browser.",
|
|
4
|
+
"license": "AGPL-3.0-only",
|
|
5
|
+
"author": "Internet Archive",
|
|
6
|
+
"version": "0.0.1-alpha.1",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"module": "dist/index.js",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"start": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wds\"",
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"prepare": "tsc && husky install",
|
|
13
|
+
"lint": "eslint --ext .ts,.html . --ignore-path .gitignore && prettier \"**/*.ts\" --check --ignore-path .gitignore",
|
|
14
|
+
"format": "eslint --ext .ts,.html . --fix --ignore-path .gitignore && prettier \"**/*.ts\" --write --ignore-path .gitignore",
|
|
15
|
+
"circular": "madge --circular --extensions ts .",
|
|
16
|
+
"test": "tsc && yarn run lint && yarn run circular && wtr --coverage",
|
|
17
|
+
"test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""
|
|
18
|
+
},
|
|
19
|
+
"types": "dist/index.d.ts",
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@internetarchive/field-parsers": "0.1.1-alpha.1",
|
|
22
|
+
"@internetarchive/histogram-date-range": "^0.1.6",
|
|
23
|
+
"@internetarchive/infinite-scroller": "0.0.1-alpha.17",
|
|
24
|
+
"@internetarchive/search-service": "0.3.0-alpha.2",
|
|
25
|
+
"@internetarchive/shared-resize-observer": "^0.2.0",
|
|
26
|
+
"@lit/localize": "^0.11.2",
|
|
27
|
+
"dompurify": "^2.3.6",
|
|
28
|
+
"lit": "^2.0.2"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@open-wc/eslint-config": "^7.0.0",
|
|
32
|
+
"@open-wc/testing": "^3.0.3",
|
|
33
|
+
"@types/dompurify": "^2.3.3",
|
|
34
|
+
"@typescript-eslint/eslint-plugin": "^5.3.1",
|
|
35
|
+
"@typescript-eslint/parser": "^5.3.1",
|
|
36
|
+
"@web/dev-server": "^0.1.28",
|
|
37
|
+
"@web/test-runner": "^0.13.22",
|
|
38
|
+
"concurrently": "^6.3.0",
|
|
39
|
+
"eslint": "^8.2.0",
|
|
40
|
+
"eslint-config-prettier": "^8.3.0",
|
|
41
|
+
"eslint-plugin-import": "^2.25.3",
|
|
42
|
+
"eslint-plugin-lit-a11y": "^2.2.0",
|
|
43
|
+
"eslint-plugin-wc": "^1.3.2",
|
|
44
|
+
"husky": "^7.0.0",
|
|
45
|
+
"madge": "^5.0.1",
|
|
46
|
+
"prettier": "^2.4.1",
|
|
47
|
+
"sinon": "^12.0.1",
|
|
48
|
+
"tslib": "^2.3.1",
|
|
49
|
+
"typescript": "^4.4.4"
|
|
50
|
+
},
|
|
51
|
+
"publishConfig": {
|
|
52
|
+
"access": "public"
|
|
53
|
+
},
|
|
54
|
+
"eslintConfig": {
|
|
55
|
+
"parser": "@typescript-eslint/parser",
|
|
56
|
+
"extends": [
|
|
57
|
+
"@open-wc",
|
|
58
|
+
"prettier"
|
|
59
|
+
],
|
|
60
|
+
"plugins": [
|
|
61
|
+
"@typescript-eslint"
|
|
62
|
+
],
|
|
63
|
+
"rules": {
|
|
64
|
+
"no-unused-vars": "off",
|
|
65
|
+
"@typescript-eslint/no-unused-vars": [
|
|
66
|
+
"error"
|
|
67
|
+
],
|
|
68
|
+
"no-shadow": "off",
|
|
69
|
+
"@typescript-eslint/no-shadow": [
|
|
70
|
+
"error"
|
|
71
|
+
],
|
|
72
|
+
"class-methods-use-this": "off",
|
|
73
|
+
"import/no-unresolved": "off",
|
|
74
|
+
"import/extensions": [
|
|
75
|
+
"off",
|
|
76
|
+
"ignorePackages",
|
|
77
|
+
{
|
|
78
|
+
"js": "never",
|
|
79
|
+
"ts": "never"
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"prettier": {
|
|
85
|
+
"singleQuote": true,
|
|
86
|
+
"arrowParens": "avoid"
|
|
87
|
+
},
|
|
88
|
+
"lint-staged": {
|
|
89
|
+
"*.ts": [
|
|
90
|
+
"eslint --fix",
|
|
91
|
+
"prettier --write",
|
|
92
|
+
"git add"
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
|
|
3
|
+
export default html`
|
|
4
|
+
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
|
5
|
+
<path
|
|
6
|
+
d="m89.6854559 79.6500588c1.7300364 6.4823648 2.180423 13.3122689 3.3145441 20.3499412h-86c.5683151-15.8558542 2.98334063-30.7849367 15.1676149-41.6581341 22.9948067-20.518674 59.250299-9.0032844 67.517841 21.3081929zm-40.0998307-79.6500588c10.872402.0493248 19.9700408 9.25722341 19.917959 20.1421788-.0829413 11.042868-8.9616237 19.8492523-20.0602807 19.8578212-11.1181198 0-19.9397193-8.7904706-19.9397193-19.8908727-.0327543-11.11998815 9.0125781-20.17487063 20.082041-20.1091273z"
|
|
7
|
+
fill="#333"
|
|
8
|
+
fill-rule="evenodd"
|
|
9
|
+
/>
|
|
10
|
+
<title>Icon of a person</title>
|
|
11
|
+
</svg>
|
|
12
|
+
`;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
|
|
3
|
+
export const audioIcon = svg`
|
|
4
|
+
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
|
|
5
|
+
<path
|
|
6
|
+
d="m225.568345 20c20.949641 0 28.431655 8.5714286 28.431655 28.5714286-.928802 21.2807881-.704608 42.5615763-.400898 63.8423644l.153512 10.640394c.13351 9.458128.247386 18.916256.247386 28.374384v100c0 18.571429-5.985612 28.571429-28.431655 28.571429-50.877698-1.428571-100.258992-1.428571-151.1366903 0-20.9496403 0-28.4316547-8.571429-28.4316547-28.571429v-202.8571424c0-18.5714286 5.9856115-28.5714286 28.4316547-28.5714286 50.8776983 1.4285714 100.2589923 1.4285714 151.1366903 0zm-74.268345 127.4c-30.251351 0-53.3 24.489189-53.3 53.3 0 30.251351 24.489189 53.3 53.3 53.3 30.251351 0 53.3-24.489189 53.3-53.3s-24.489189-53.3-53.3-53.3zm0 39c7.897672 0 14.3 6.402328 14.3 14.3s-6.402328 14.3-14.3 14.3-14.3-6.402328-14.3-14.3 6.402328-14.3 14.3-14.3zm-1.3-137.8c-20.384 0-36.4 16.016-36.4 36.4s16.016 36.4 36.4 36.4 36.4-16.016 36.4-36.4-17.472-36.4-36.4-36.4z" fill="gray"
|
|
7
|
+
fill-rule="evenodd"/>
|
|
8
|
+
/>
|
|
9
|
+
<title>Icon of a speaker</title>
|
|
10
|
+
</svg>
|
|
11
|
+
`;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
|
|
3
|
+
export const collectionIcon = svg`
|
|
4
|
+
<svg viewBox="0 0 300 300"
|
|
5
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
6
|
+
<path d="m280 262.122891v-156.834044c0-4.877026-2.063112-9.1444235-6.189337-12.8021929s-8.220563-5.4866541-12.283013-5.4866541h-225.4946834c-4.4642309 0-8.2524498 1.726748-11.3646565 5.1802441s-4.6683101 7.8230299-4.6683101 13.1086029v156.834044c0 5.279189 1.5210273 9.578505 4.5630818 12.897946 3.0420545 3.319442 6.8653495 4.979163 11.4698848 4.979163h225.4946834c4.06245 0 8.156788-1.726748 12.283013-5.180244s6.189337-7.685784 6.189337-12.696865zm-200.9382244-131.440315v7.918783c0 1.487366-.7780516 3.00984-2.334155 4.567424-1.5561034 1.557585-3.1472828 2.336377-4.7735384 2.336377h-14.8180581c-1.7601825 0-3.4183254-.743683-4.9744288-2.231048-1.5561033-1.487365-2.334155-3.044949-2.334155-4.672753v-7.918783c0-1.761858.8131278-3.964179 2.4393834-6.606966 1.6262555-2.642786 3.2493223-3.964179 4.8692004-3.964179h14.8180581c1.4859512 0 3.0420545 1.321393 4.6683101 3.964179 1.6262556 2.642787 2.4393833 4.845108 2.4393833 6.606966zm169.2740724 0v7.918783c0 1.627804-.711089 3.185388-2.133265 4.672753-1.422177 1.487365-3.080319 2.231048-4.974429 2.231048h-131.114463c-2.028037 0-3.753143-.743683-5.175319-2.231048-1.422177-1.487365-2.133265-3.044949-2.133265-4.672753v-7.918783c0-1.895912.742975-4.130152 2.228927-6.702719 1.485951-2.572567 3.175981-3.858851 5.070091-3.858851h131.114463c1.760182 0 3.383249 1.286284 4.8692 3.858851 1.485952 2.572567 2.228927 4.806807 2.228927 6.702719zm-169.2740724 50.988539v7.918784c0 1.487365-.7780516 2.977922-2.334155 4.471671s-3.1472828 2.237431-4.7735384 2.231088h-14.8180581c-1.7601825 0-3.4183254-.743723-4.9744288-2.231088-1.5561033-1.487365-2.334155-2.977922-2.334155-4.471671v-7.918784c0-1.895912.8131278-4.165261 2.4393834-6.808047 1.6262555-2.642786 3.2493223-3.964179 4.8692004-3.964179h14.8180581c1.4859512 0 3.0420545 1.353311 4.6683101 4.059932 1.6262556 2.706622 2.4393833 4.940861 2.4393833 6.702719zm169.2740724 0v7.918784c0 1.487365-.711089 2.977922-2.133265 4.471671-1.422177 1.493749-3.080319 2.237431-4.974429 2.231088h-131.114463c-2.028037 0-3.753143-.743723-5.175319-2.231088-1.422177-1.487365-2.133265-2.977922-2.133265-4.471671v-7.918784c0-2.029966.742975-4.331233 2.228927-6.9038 1.485951-2.572567 3.175981-3.858851 5.070091-3.858851h131.114463c1.760182 0 3.383249 1.321393 4.8692 3.964179 1.485952 2.642787 2.228927 4.912136 2.228927 6.808048zm-169.2740724 51.400278v6.9038c0 1.761858-.7780516 3.421579-2.334155 4.979163s-3.1472828 2.336376-4.7735384 2.336376h-14.8180581c-1.7601825 0-3.4183254-.778792-4.9744288-2.336376-1.5561033-1.557584-2.334155-3.217305-2.334155-4.979163v-6.9038c0-2.029966.7780517-4.366342 2.334155-7.009129 1.5561034-2.642786 3.2142463-3.964179 4.9744288-3.964179h14.8180581c1.4859512 0 3.0420545 1.321393 4.6683101 3.964179 1.6262556 2.642787 2.4393833 4.979163 2.4393833 7.009129zm169.2740724 0v6.9038c0 1.761858-.711089 3.421579-2.133265 4.979163-1.422177 1.557584-3.080319 2.336376-4.974429 2.336376h-131.114463c-2.028037 0-3.753143-.778792-5.175319-2.336376-1.422177-1.557584-2.133265-3.217305-2.133265-4.979163v-6.9038c0-2.170404.742975-4.54189 2.228927-7.114457 1.485951-2.572567 3.175981-3.858851 5.070091-3.858851h131.114463c1.760182 0 3.383249 1.321393 4.8692 3.964179 1.485952 2.642787 2.228927 4.979163 2.228927 7.009129z" fill="black"/>
|
|
7
|
+
|
|
8
|
+
</svg>
|
|
9
|
+
`;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
|
|
3
|
+
export const etreeIcon = svg`
|
|
4
|
+
<svg viewBox="0 0 300 300"
|
|
5
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
6
|
+
<path d="m136.125893 117.288073c14.41013-4.850562 27.83316-2.109766 39.480173 7.796632 10.335962 8.792594 14.330094 20.428621 14.288498 33.809481-.091795 25.476855-.015572 50.965113-.049872 76.441968-.003811 2.805419-.034301 5.648851-.457344 8.401051-3.376719 21.854139-21.133078 36.299386-43.127486 35.204588-20.210769-1.003564-37.307792-18.132586-37.799436-38.393946-.346818-14.513672-.060979-29.057755-.301084-43.586633 0-12.597776-.06479-25.191751.034301-37.789527.0343-3.656928.16007-7.401288.903253-10.963182 3.18997-15.36138 12.272049-25.963431 27.028997-30.920432zm69.082871-95.288073v20.8201628h-42.6892v27.2482979s2.61448.5740085 3.574902.8363038c23.797103 6.5155667 41.073252 15.8669636 55.262332 37.0824705 8.594246 12.852468 11.643202 31.380398 11.643202 46.760785v15.304359h-20.889162c0-5.538611.099091-10.750305-.038112-15.961998-.099091-3.896415-.167692-7.857454-.842274-11.689246-5.328051-30.262793-30.775402-49.8170956-57.026916-51.5315184-29.311903-1.9120945-57.1907972 18.1858064-64.1500399 46.8520184-1.6657464 6.843753-1.7799637 13.736569-1.7780383 20.63947l.0023262 1.88283c.0030489 1.883022.0050308 3.76653-.0231721 5.649734-.0228671 1.364696 0 2.72559 0 4.052272h-20.5918884c-5.5529117-51.542923 24.3078039-93.7420516 70.1221835-99.8660762v-27.3889489h-42.6205979v-20.6909159z" fill="black" fill-rule="evenodd" transform="matrix(1 0 0 -1 0 301)"/>
|
|
7
|
+
|
|
8
|
+
</svg>
|
|
9
|
+
`;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
|
|
3
|
+
export const filmIcon = svg`
|
|
4
|
+
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
|
|
5
|
+
<path
|
|
6
|
+
d="m272 280h-9.268431c.276116-.74734.440961-1.53597.440961-2.365889v-6.775607c0-3.831666-3.082608-6.920121-6.882294-6.920121h-12.701336c-3.795565 0-6.882294 3.100842-6.882294 6.920121v6.775607c0 .829919.164845 1.626807.432719 2.365889h-172.3623223c.2678738-.74734.4368403-1.53597.4368403-2.365889v-6.775607c0-3.831666-3.0826085-6.920121-6.8864155-6.920121h-12.6930937c-3.803807 0-6.8905366 3.100842-6.8905366 6.920121v6.775607c0 .829919.1689665 1.626807.4368402 2.365889h-11.1806374v-260h11.1806374c-.2678737.74734-.4368402 1.5359695-.4368402 2.3700175v6.7673495c0 3.8399238 3.0826085 6.9242496 6.8905366 6.9242496h12.6930937c3.7955647 0 6.8864155-3.0967127 6.8864155-6.9242496v-6.7673495c0-.8381769-.1689665-1.6309354-.4368403-2.3700175h172.3664433c-.271995.74734-.43684 1.5359695-.43684 2.3700175v6.7673495c0 3.8399238 3.078487 6.9242496 6.882294 6.9242496h12.701336c3.795565 0 6.882294-3.0967127 6.882294-6.9242496v-6.7673495c0-.8381769-.164845-1.6309354-.43684-2.3700175h9.26431zm-206.786157-222.1333969c0-3.8357948-3.0826085-6.9242496-6.8864155-6.9242496h-12.6930937c-3.803807 0-6.8905366 3.1008417-6.8905366 6.9242496v6.7714785c0 3.8399238 3.0826085 6.9283786 6.8905366 6.9283786h12.6930937c3.7955647 0 6.8864155-3.1008417 6.8864155-6.9283786zm0 35.5007147c0-3.8357949-3.0826085-6.9242497-6.8864155-6.9242497h-12.6930937c-3.803807 0-6.8905366 3.1008417-6.8905366 6.9242497v6.7714782c0 3.835795 3.0826085 6.920121 6.8905366 6.920121h12.6930937c3.7955647 0 6.8864155-3.096713 6.8864155-6.920121zm0 35.4965852c0-3.839923-3.0826085-6.924249-6.8864155-6.924249h-12.6930937c-3.803807 0-6.8905366 3.100841-6.8905366 6.924249v6.771479c0 3.839924 3.0826085 6.92425 6.8905366 6.92425h12.6930937c3.7955647 0 6.8864155-3.100842 6.8864155-6.92425zm0 35.500715c0-3.839924-3.0826085-6.92425-6.8864155-6.92425h-12.6930937c-3.803807 0-6.8905366 3.096713-6.8905366 6.92425v6.771479c0 3.839923 3.0826085 6.928378 6.8905366 6.928378h12.6930937c3.7955647 0 6.8864155-3.10497 6.8864155-6.928378zm0 35.496586c0-3.827537-3.0826085-6.92425-6.8864155-6.92425h-12.6930937c-3.803807 0-6.8905366 3.104971-6.8905366 6.92425v6.771478c0 3.839924 3.0826085 6.928379 6.8905366 6.928379h12.6930937c3.7955647 0 6.8864155-3.104971 6.8864155-6.928379zm0 35.500714c0-3.835794-3.0826085-6.924249-6.8864155-6.924249h-12.6930937c-3.803807 0-6.8905366 3.10497-6.8905366 6.924249v6.771479c0 3.835795 3.0826085 6.928378 6.8905366 6.928378h12.6930937c3.7955647 0 6.8864155-3.10497 6.8864155-6.928378zm155.247251-186.2734632c0-5.8672383-4.805242-10.6692075-10.673738-10.6692075h-119.5788334c-5.8684952 0-10.6737379 4.8019692-10.6737379 10.6692075v74.7009692c0 5.867238 4.8052427 10.665078 10.6737379 10.665078h119.5788334c5.868496 0 10.673738-4.79784 10.673738-10.665078zm.366781 121.3663652c0-5.90027-4.83409-10.727013-10.731434-10.727013h-120.1970034c-5.8973433 0-10.7273127 4.826743-10.7273127 10.727013v75.084961c0 5.896141 4.8299694 10.718755 10.7273127 10.718755h120.1970034c5.897344 0 10.731434-4.822614 10.731434-10.718755zm42.344655-112.5882169c0-3.8357948-3.082608-6.9242496-6.882294-6.9242496h-12.701336c-3.795565 0-6.882294 3.1008417-6.882294 6.9242496v6.7714785c0 3.8399238 3.078487 6.9283786 6.882294 6.9283786h12.701336c3.795565 0 6.882294-3.1008417 6.882294-6.9283786zm0 35.5007147c0-3.8357949-3.082608-6.9242497-6.882294-6.9242497h-12.701336c-3.795565 0-6.882294 3.1008417-6.882294 6.9242497v6.7714782c0 3.835795 3.078487 6.920121 6.882294 6.920121h12.701336c3.795565 0 6.882294-3.096713 6.882294-6.920121zm0 35.4965852c0-3.839923-3.082608-6.924249-6.882294-6.924249h-12.701336c-3.795565 0-6.882294 3.100841-6.882294 6.924249v6.771479c0 3.839924 3.078487 6.92425 6.882294 6.92425h12.701336c3.795565 0 6.882294-3.100842 6.882294-6.92425zm0 35.500715c0-3.839924-3.082608-6.92425-6.882294-6.92425h-12.701336c-3.795565 0-6.882294 3.096713-6.882294 6.92425v6.771479c0 3.839923 3.078487 6.928378 6.882294 6.928378h12.701336c3.795565 0 6.882294-3.10497 6.882294-6.928378zm0 35.496586c0-3.827537-3.082608-6.92425-6.882294-6.92425h-12.701336c-3.795565 0-6.882294 3.104971-6.882294 6.92425v6.771478c0 3.839924 3.078487 6.928379 6.882294 6.928379h12.701336c3.795565 0 6.882294-3.104971 6.882294-6.928379zm0 35.500714c0-3.835794-3.082608-6.924249-6.882294-6.924249h-12.701336c-3.795565 0-6.882294 3.10497-6.882294 6.924249v6.771479c0 3.835795 3.078487 6.928378 6.882294 6.928378h12.701336c3.795565 0 6.882294-3.10497 6.882294-6.928378z"
|
|
7
|
+
fill="gray"
|
|
8
|
+
fill-rule="evenodd"
|
|
9
|
+
transform="matrix(1 0 0 -1 0 300)"
|
|
10
|
+
/>
|
|
11
|
+
<title>Icon of a film</title>
|
|
12
|
+
</svg>
|
|
13
|
+
`;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg viewBox="0 0 300 300"
|
|
2
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
3
|
+
<path d="m136.125893 117.288073c14.41013-4.850562 27.83316-2.109766 39.480173 7.796632 10.335962 8.792594 14.330094 20.428621 14.288498 33.809481-.091795 25.476855-.015572 50.965113-.049872 76.441968-.003811 2.805419-.034301 5.648851-.457344 8.401051-3.376719 21.854139-21.133078 36.299386-43.127486 35.204588-20.210769-1.003564-37.307792-18.132586-37.799436-38.393946-.346818-14.513672-.060979-29.057755-.301084-43.586633 0-12.597776-.06479-25.191751.034301-37.789527.0343-3.656928.16007-7.401288.903253-10.963182 3.18997-15.36138 12.272049-25.963431 27.028997-30.920432zm69.082871-95.288073v20.8201628h-42.6892v27.2482979s2.61448.5740085 3.574902.8363038c23.797103 6.5155667 41.073252 15.8669636 55.262332 37.0824705 8.594246 12.852468 11.643202 31.380398 11.643202 46.760785v15.304359h-20.889162c0-5.538611.099091-10.750305-.038112-15.961998-.099091-3.896415-.167692-7.857454-.842274-11.689246-5.328051-30.262793-30.775402-49.8170956-57.026916-51.5315184-29.311903-1.9120945-57.1907972 18.1858064-64.1500399 46.8520184-1.6657464 6.843753-1.7799637 13.736569-1.7780383 20.63947l.0023262 1.88283c.0030489 1.883022.0050308 3.76653-.0231721 5.649734-.0228671 1.364696 0 2.72559 0 4.052272h-20.5918884c-5.5529117-51.542923 24.3078039-93.7420516 70.1221835-99.8660762v-27.3889489h-42.6205979v-20.6909159z" fill="black" fill-rule="evenodd"/>
|
|
4
|
+
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
|
|
3
|
+
export const imagesIcon = svg`
|
|
4
|
+
<svg viewBox="0 0 300 300"
|
|
5
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
6
|
+
<path d="m43.0952612 181.159979c2.1744514 0 21.7161099 3.336499 21.7161099 3.336499v21.030628l-44.8113711-6.289709c4.5382599-51.29161 9.6729948-105.5332879 14.6089046-156.237397 66.1329874 6.484496 144.5110704 16.1138469 211.0385514 22.4035567-.987813 6.4876377-1.581132 21.8160564-1.972471 28.3005524-4.939065-.5906421-15.599873 0-20.535783-.5906421v-9.0418506c-56.065498-5.3032118-112.326666-12.180422-168.3953197-17.6847035 0 0-7.7005244 74.2858081-11.6486211 114.7730661zm31.7867547-81.562016h205.1179841v158.402037h-205.1179841zm18.9514955 140.126691h167.8051566v-64.461671l-21.122791 35.963191-28.428821-67.408598-24.2819 28.891194-66.530637-54.634392h-27.4410076zm64.5550106-40.487257c0-11.394994-9.082832-20.436845-20.731453-20.436845-11.250971 0-20.923965 9.041851-20.923965 20.436845 0 11.203349 9.672994 20.439986 20.923965 20.439986 11.648621 0 20.731453-9.236637 20.731453-20.439986z" fill="black" transform="matrix(1 0 0 -1 0 301)"/>
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
</svg>
|
|
10
|
+
`;
|