@internetarchive/collection-browser 0.0.1-alpha.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/README.md +8 -11
  2. package/demo/app-root.ts +16 -92
  3. package/dist/demo/app-root.d.ts +3 -5
  4. package/dist/demo/app-root.js +13 -83
  5. package/dist/demo/app-root.js.map +1 -1
  6. package/dist/index.d.ts +6 -0
  7. package/dist/index.js +6 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/src/assets/img/icons/chevron.d.ts +2 -0
  10. package/dist/src/assets/img/icons/chevron.js +4 -0
  11. package/dist/src/assets/img/icons/chevron.js.map +1 -0
  12. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -2
  13. package/dist/src/assets/img/icons/mediatype/account.js +6 -4
  14. package/dist/src/assets/img/icons/mediatype/account.js.map +1 -1
  15. package/dist/src/assets/img/icons/mediatype/audio.js +7 -4
  16. package/dist/src/assets/img/icons/mediatype/audio.js.map +1 -1
  17. package/dist/src/assets/img/icons/mediatype/collection.js +7 -4
  18. package/dist/src/assets/img/icons/mediatype/collection.js.map +1 -1
  19. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -0
  20. package/dist/src/assets/img/icons/mediatype/data.js +15 -0
  21. package/dist/src/assets/img/icons/mediatype/data.js.map +1 -0
  22. package/dist/src/assets/img/icons/mediatype/etree.js +10 -5
  23. package/dist/src/assets/img/icons/mediatype/etree.js.map +1 -1
  24. package/dist/src/assets/img/icons/mediatype/film.js +2 -1
  25. package/dist/src/assets/img/icons/mediatype/film.js.map +1 -1
  26. package/dist/src/assets/img/icons/mediatype/images.js +9 -6
  27. package/dist/src/assets/img/icons/mediatype/images.js.map +1 -1
  28. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -0
  29. package/dist/src/assets/img/icons/mediatype/radio.js +15 -0
  30. package/dist/src/assets/img/icons/mediatype/radio.js.map +1 -0
  31. package/dist/src/assets/img/icons/mediatype/software.js +9 -6
  32. package/dist/src/assets/img/icons/mediatype/software.js.map +1 -1
  33. package/dist/src/assets/img/icons/mediatype/texts.js +9 -6
  34. package/dist/src/assets/img/icons/mediatype/texts.js.map +1 -1
  35. package/dist/src/assets/img/icons/mediatype/tv.js +10 -5
  36. package/dist/src/assets/img/icons/mediatype/tv.js.map +1 -1
  37. package/dist/src/assets/img/icons/mediatype/video.js +10 -6
  38. package/dist/src/assets/img/icons/mediatype/video.js.map +1 -1
  39. package/dist/src/assets/img/icons/mediatype/web.js +9 -6
  40. package/dist/src/assets/img/icons/mediatype/web.js.map +1 -1
  41. package/dist/src/collection-browser.d.ts +53 -31
  42. package/dist/src/collection-browser.js +504 -166
  43. package/dist/src/collection-browser.js.map +1 -1
  44. package/dist/src/collection-facets.d.ts +28 -13
  45. package/dist/src/collection-facets.js +276 -160
  46. package/dist/src/collection-facets.js.map +1 -1
  47. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -0
  48. package/dist/src/language-code-handler/language-code-handler.js +27 -0
  49. package/dist/src/language-code-handler/language-code-handler.js.map +1 -0
  50. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -0
  51. package/dist/src/language-code-handler/language-code-mapping.js +563 -0
  52. package/dist/src/language-code-handler/language-code-mapping.js.map +1 -0
  53. package/dist/src/mediatype/mediatype-config.d.ts +3 -0
  54. package/dist/src/mediatype/mediatype-config.js +86 -0
  55. package/dist/src/mediatype/mediatype-config.js.map +1 -0
  56. package/dist/src/models.d.ts +72 -13
  57. package/dist/src/models.js +57 -1
  58. package/dist/src/models.js.map +1 -1
  59. package/dist/src/restoration-state-handler.d.ts +38 -0
  60. package/dist/src/restoration-state-handler.js +204 -0
  61. package/dist/src/restoration-state-handler.js.map +1 -0
  62. package/dist/src/sort-filter-bar/alpha-bar.d.ts +1 -1
  63. package/dist/src/sort-filter-bar/alpha-bar.js +9 -2
  64. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  65. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -0
  66. package/dist/src/sort-filter-bar/img/compact.js +5 -0
  67. package/dist/src/sort-filter-bar/img/compact.js.map +1 -0
  68. package/dist/src/sort-filter-bar/img/list.js +1 -1
  69. package/dist/src/sort-filter-bar/img/list.js.map +1 -1
  70. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -0
  71. package/dist/src/sort-filter-bar/img/tile.js +5 -0
  72. package/dist/src/sort-filter-bar/img/tile.js.map +1 -0
  73. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +71 -14
  74. package/dist/src/sort-filter-bar/sort-filter-bar.js +499 -216
  75. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  76. package/dist/src/tiles/{loading-tile.d.ts → collection-browser-loading-tile.d.ts} +1 -1
  77. package/dist/src/tiles/collection-browser-loading-tile.js +32 -0
  78. package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -0
  79. package/dist/src/tiles/grid/account-tile.d.ts +1 -1
  80. package/dist/src/tiles/grid/account-tile.js +5 -5
  81. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  82. package/dist/src/tiles/grid/collection-tile.js +1 -2
  83. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  84. package/dist/src/tiles/grid/icons/views.d.ts +1 -1
  85. package/dist/src/tiles/grid/icons/views.js +2 -2
  86. package/dist/src/tiles/grid/icons/views.js.map +1 -1
  87. package/dist/src/tiles/grid/item-tile.d.ts +2 -2
  88. package/dist/src/tiles/grid/item-tile.js +57 -151
  89. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  90. package/dist/src/tiles/item-image.d.ts +19 -0
  91. package/dist/src/tiles/item-image.js +204 -0
  92. package/dist/src/tiles/item-image.js.map +1 -0
  93. package/dist/src/tiles/list/account-label.d.ts +1 -0
  94. package/dist/src/tiles/list/account-label.js +7 -0
  95. package/dist/src/tiles/list/account-label.js.map +1 -0
  96. package/dist/src/tiles/list/date-label.d.ts +1 -0
  97. package/dist/src/tiles/list/date-label.js +13 -0
  98. package/dist/src/tiles/list/date-label.js.map +1 -0
  99. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -0
  100. package/dist/src/tiles/list/tile-list-compact-header.js +84 -0
  101. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -0
  102. package/dist/src/tiles/list/tile-list-compact.d.ts +12 -0
  103. package/dist/src/tiles/list/tile-list-compact.js +203 -6
  104. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  105. package/dist/src/tiles/list/tile-list.d.ts +35 -10
  106. package/dist/src/tiles/list/tile-list.js +368 -104
  107. package/dist/src/tiles/list/tile-list.js.map +1 -1
  108. package/dist/src/{mediatype-icon.d.ts → tiles/mediatype-icon.d.ts} +2 -2
  109. package/dist/src/tiles/mediatype-icon.js +78 -0
  110. package/dist/src/tiles/mediatype-icon.js.map +1 -0
  111. package/dist/src/tiles/tile-dispatcher.d.ts +11 -4
  112. package/dist/src/tiles/tile-dispatcher.js +56 -19
  113. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  114. package/dist/src/utils/format-date.js +2 -2
  115. package/dist/src/utils/format-date.js.map +1 -1
  116. package/dist/test/collection-browser.test.d.ts +1 -0
  117. package/dist/test/collection-browser.test.js +16 -2
  118. package/dist/test/collection-browser.test.js.map +1 -1
  119. package/dist/test/mediatype-config.test.d.ts +1 -0
  120. package/dist/test/mediatype-config.test.js +17 -0
  121. package/dist/test/mediatype-config.test.js.map +1 -0
  122. package/dist/test/utils/format-date.test.js +1 -1
  123. package/dist/test/utils/format-date.test.js.map +1 -1
  124. package/index.ts +6 -0
  125. package/local.archive.org.cert +86 -0
  126. package/local.archive.org.key +27 -0
  127. package/package.json +9 -5
  128. package/src/assets/img/icons/chevron.ts +4 -0
  129. package/src/assets/img/icons/mediatype/account.ts +6 -4
  130. package/src/assets/img/icons/mediatype/audio.ts +7 -4
  131. package/src/assets/img/icons/mediatype/collection.ts +7 -4
  132. package/src/assets/img/icons/mediatype/data.ts +15 -0
  133. package/src/assets/img/icons/mediatype/etree.ts +10 -5
  134. package/src/assets/img/icons/mediatype/film.ts +2 -1
  135. package/src/assets/img/icons/mediatype/images.ts +9 -6
  136. package/src/assets/img/icons/mediatype/radio.ts +15 -0
  137. package/src/assets/img/icons/mediatype/software.ts +9 -6
  138. package/src/assets/img/icons/mediatype/texts.ts +9 -6
  139. package/src/assets/img/icons/mediatype/tv.ts +10 -5
  140. package/src/assets/img/icons/mediatype/video.ts +10 -6
  141. package/src/assets/img/icons/mediatype/web.ts +9 -6
  142. package/src/collection-browser.ts +529 -163
  143. package/src/collection-facets.ts +307 -205
  144. package/src/language-code-handler/language-code-handler.ts +64 -0
  145. package/src/language-code-handler/language-code-mapping.ts +564 -0
  146. package/src/mediatype/mediatype-config.ts +86 -0
  147. package/src/models.ts +141 -13
  148. package/src/restoration-state-handler.ts +266 -0
  149. package/src/sort-filter-bar/alpha-bar.ts +9 -3
  150. package/src/sort-filter-bar/img/compact.ts +5 -0
  151. package/src/sort-filter-bar/img/list.ts +1 -1
  152. package/src/sort-filter-bar/img/tile.ts +5 -0
  153. package/src/sort-filter-bar/sort-filter-bar.ts +557 -225
  154. package/src/tiles/collection-browser-loading-tile.ts +29 -0
  155. package/src/tiles/grid/account-tile.ts +1 -1
  156. package/src/tiles/grid/collection-tile.ts +1 -2
  157. package/src/tiles/grid/icons/views.ts +2 -2
  158. package/src/tiles/grid/item-tile.ts +56 -163
  159. package/src/tiles/item-image.ts +206 -0
  160. package/src/tiles/list/account-label.ts +6 -0
  161. package/src/tiles/list/date-label.ts +12 -0
  162. package/src/tiles/list/tile-list-compact-header.ts +77 -0
  163. package/src/tiles/list/tile-list-compact.ts +218 -0
  164. package/src/tiles/list/tile-list.ts +412 -107
  165. package/src/tiles/mediatype-icon.ts +75 -0
  166. package/src/tiles/tile-dispatcher.ts +66 -18
  167. package/src/utils/format-date.ts +2 -2
  168. package/test/collection-browser.test.ts +20 -1
  169. package/test/mediatype-config.test.ts +18 -0
  170. package/test/utils/format-date.test.ts +1 -1
  171. package/web-dev-server.config.mjs +3 -1
  172. package/dist/src/mediatype-icon.js +0 -89
  173. package/dist/src/mediatype-icon.js.map +0 -1
  174. package/dist/src/sort-filter-bar/img/grid.d.ts +0 -1
  175. package/dist/src/sort-filter-bar/img/grid.js +0 -5
  176. package/dist/src/sort-filter-bar/img/grid.js.map +0 -1
  177. package/dist/src/tiles/list/tile-list-detail.d.ts +0 -7
  178. package/dist/src/tiles/list/tile-list-detail.js +0 -28
  179. package/dist/src/tiles/list/tile-list-detail.js.map +0 -1
  180. package/dist/src/tiles/loading-tile.js +0 -73
  181. package/dist/src/tiles/loading-tile.js.map +0 -1
  182. package/src/mediatype-icon.ts +0 -83
  183. package/src/sort-filter-bar/img/grid.ts +0 -5
  184. package/src/tiles/loading-tile.ts +0 -70
@@ -5,52 +5,84 @@ import {
5
5
  SharedResizeObserverInterface,
6
6
  SharedResizeObserverResizeHandlerInterface,
7
7
  } from '@internetarchive/shared-resize-observer';
8
+ import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
8
9
  import { SortParam } from '@internetarchive/search-service';
9
- import type { CollectionDisplayMode, TileModel } from '../models';
10
+ import type { TileDisplayMode, TileModel } from '../models';
10
11
  import './grid/collection-tile';
11
12
  import './grid/item-tile';
12
13
  import './grid/account-tile';
13
14
  import './list/tile-list';
15
+ import './list/tile-list-compact';
16
+ import './list/tile-list-compact-header';
14
17
 
15
18
  @customElement('tile-dispatcher')
16
19
  export class TileDispatcher
17
20
  extends LitElement
18
21
  implements SharedResizeObserverResizeHandlerInterface
19
22
  {
20
- @property({ type: String }) displayMode: CollectionDisplayMode = 'grid';
23
+ @property({ type: String }) tileDisplayMode?: TileDisplayMode;
21
24
 
22
25
  @property({ type: Object }) model?: TileModel;
23
26
 
24
27
  @property({ type: String }) baseNavigationUrl?: string;
25
28
 
26
- @property({ type: Boolean }) showDeleteButton = false;
27
-
28
29
  @property({ type: Number }) currentWidth?: number;
29
30
 
30
31
  @property({ type: Number }) currentHeight?: number;
31
32
 
32
33
  @property({ type: Object }) resizeObserver?: SharedResizeObserverInterface;
33
34
 
34
- @property({ type: Object }) sortParam?: SortParam;
35
+ @property({ type: Object })
36
+ collectionNameCache?: CollectionNameCacheInterface;
37
+
38
+ @property({ type: Object }) sortParam: SortParam | null = null;
35
39
 
36
40
  @query('#container') private container!: HTMLDivElement;
37
41
 
42
+ @property({ type: Number }) mobileBreakpoint?: number;
43
+
38
44
  render() {
39
45
  return html`
40
46
  <div id="container">
41
- ${this.showDeleteButton
42
- ? html`<button id="delete-button">X</button>`
43
- : nothing}
44
- <a
45
- href="${this.baseNavigationUrl}/details/${this.model?.identifier}"
46
- title=${ifDefined(this.model?.title)}
47
- >
48
- ${this.tile}
49
- </a>
47
+ ${this.tileDisplayMode === 'list-header'
48
+ ? this.headerTemplate
49
+ : this.tileTemplate}
50
50
  </div>
51
51
  `;
52
52
  }
53
53
 
54
+ private get headerTemplate() {
55
+ const { currentWidth, sortParam, mobileBreakpoint } = this;
56
+ return html`
57
+ <tile-list-compact-header
58
+ class="header"
59
+ .currentWidth=${currentWidth}
60
+ .sortParam=${sortParam}
61
+ .mobileBreakpoint=${mobileBreakpoint}
62
+ >
63
+ </tile-list-compact-header>
64
+ `;
65
+ }
66
+
67
+ private get tileTemplate() {
68
+ return html`
69
+ ${this.tileDisplayMode === 'list-detail'
70
+ ? this.tile
71
+ : this.linkTileTemplate}
72
+ `;
73
+ }
74
+
75
+ private get linkTileTemplate() {
76
+ return html`
77
+ <a
78
+ href="${this.baseNavigationUrl}/details/${this.model?.identifier}"
79
+ title=${ifDefined(this.model?.title)}
80
+ >
81
+ ${this.tile}
82
+ </a>
83
+ `;
84
+ }
85
+
54
86
  handleResize(entry: ResizeObserverEntry): void {
55
87
  this.currentWidth = entry.contentRect.width;
56
88
  this.currentHeight = entry.contentRect.height;
@@ -86,12 +118,18 @@ export class TileDispatcher
86
118
  }
87
119
 
88
120
  private get tile() {
89
- const { model, baseNavigationUrl, currentWidth, currentHeight, sortParam } =
90
- this;
121
+ const {
122
+ model,
123
+ baseNavigationUrl,
124
+ currentWidth,
125
+ currentHeight,
126
+ sortParam,
127
+ mobileBreakpoint,
128
+ } = this;
91
129
 
92
130
  if (!model) return nothing;
93
131
 
94
- switch (this.displayMode) {
132
+ switch (this.tileDisplayMode) {
95
133
  case 'grid':
96
134
  switch (model.mediatype) {
97
135
  case 'collection':
@@ -113,17 +151,27 @@ export class TileDispatcher
113
151
  .baseNavigationUrl=${this.baseNavigationUrl}
114
152
  .currentWidth=${this.currentWidth}
115
153
  .currentHeight=${this.currentHeight}
154
+ .collectionNameCache=${this.collectionNameCache}
116
155
  ></item-tile>`;
117
156
  }
118
157
  case 'list-compact':
158
+ return html`<tile-list-compact
159
+ .model=${model}
160
+ .currentWidth=${currentWidth}
161
+ .currentHeight=${currentHeight}
162
+ .baseNavigationUrl=${baseNavigationUrl}
163
+ .sortParam=${sortParam}
164
+ .mobileBreakpoint=${mobileBreakpoint}
165
+ ></tile-list-compact>`;
119
166
  case 'list-detail':
120
167
  return html`<tile-list
121
168
  .model=${model}
169
+ .collectionNameCache=${this.collectionNameCache}
122
170
  .currentWidth=${currentWidth}
123
171
  .currentHeight=${currentHeight}
124
172
  .baseNavigationUrl=${baseNavigationUrl}
125
173
  .sortParam=${sortParam}
126
- .displayMode=${this.displayMode}
174
+ .mobileBreakpoint=${mobileBreakpoint}
127
175
  ></tile-list>`;
128
176
  default:
129
177
  return nothing;
@@ -19,8 +19,8 @@ export function formatDate(
19
19
  };
20
20
  switch (format) {
21
21
  case 'short':
22
- options.month = '2-digit';
23
- options.year = '2-digit';
22
+ options.month = 'short';
23
+ options.year = 'numeric';
24
24
  break;
25
25
  case 'long':
26
26
  options.year = 'numeric';
@@ -1 +1,20 @@
1
- describe('YourWebComponent', () => {});
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import { CollectionBrowser } from '../src/collection-browser';
5
+ import '../src/collection-browser';
6
+
7
+ describe('Collection Browser', () => {
8
+ it('should render with a sort bar, facets, and infinite scroller', async () => {
9
+ const el = await fixture<CollectionBrowser>(
10
+ html`<collection-browser></collection-browser>`
11
+ );
12
+
13
+ const facets = el.shadowRoot?.querySelector('collection-facets');
14
+ const sortBar = el.shadowRoot?.querySelector('sort-filter-bar');
15
+ const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');
16
+ expect(facets).to.exist;
17
+ expect(sortBar).to.exist;
18
+ expect(infiniteScroller).to.exist;
19
+ });
20
+ });
@@ -0,0 +1,18 @@
1
+ import { expect } from '@open-wc/testing';
2
+ import { mediatypeConfig } from '../src/mediatype/mediatype-config';
3
+
4
+ describe('mediatypeConfig', () => {
5
+ it('returns undefined', () => {
6
+ expect(mediatypeConfig['']).to.equal(undefined);
7
+ expect(mediatypeConfig.test).to.equal(undefined);
8
+ expect(mediatypeConfig.media).to.equal(undefined);
9
+ expect(mediatypeConfig.testing).to.equal(undefined);
10
+ });
11
+
12
+ it('returns audio', () => {
13
+ expect(mediatypeConfig.audio).to.exist;
14
+ expect(mediatypeConfig.audio.color).to.exist;
15
+ expect(mediatypeConfig.audio.icon).to.exist;
16
+ expect(mediatypeConfig.audio.text).to.exist;
17
+ });
18
+ });
@@ -9,7 +9,7 @@ describe('formatDate', () => {
9
9
  });
10
10
 
11
11
  it('returns short date when no DateFormat', () => {
12
- expect(formatDate(testDate)).to.equal('12/20');
12
+ expect(formatDate(testDate)).to.equal('Dec 2020');
13
13
  });
14
14
 
15
15
  it('returns long date when long DateFormat', () => {
@@ -24,5 +24,7 @@ export default /** @type {import('@web/dev-server').DevServerConfig} */ ({
24
24
  // hmr && hmrPlugin({ exclude: ['**/*/node_modules/**/*'], presets: [presets.litElement] }),
25
25
  ],
26
26
 
27
- // See documentation for all available options
27
+ http2: true,
28
+ sslCert: './local.archive.org.cert',
29
+ sslKey: './local.archive.org.key',
28
30
  });
@@ -1,89 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- import { audioIcon } from './assets/img/icons/mediatype/audio';
5
- import { etreeIcon } from './assets/img/icons/mediatype/etree';
6
- import { imagesIcon } from './assets/img/icons/mediatype/images';
7
- import { filmIcon } from './assets/img/icons/mediatype/film';
8
- import { softwareIcon } from './assets/img/icons/mediatype/software';
9
- import { textsIcon } from './assets/img/icons/mediatype/texts';
10
- import { tvIcon } from './assets/img/icons/mediatype/tv';
11
- import { videoIcon } from './assets/img/icons/mediatype/video';
12
- import { webIcon } from './assets/img/icons/mediatype/web';
13
- import { collectionIcon } from './assets/img/icons/mediatype/collection';
14
- let MediatypeIcon = class MediatypeIcon extends LitElement {
15
- constructor() {
16
- super(...arguments);
17
- this.showText = false;
18
- this.mediatypeIcons = {
19
- audio: audioIcon,
20
- collection: collectionIcon,
21
- data: etreeIcon,
22
- etree: etreeIcon,
23
- film: filmIcon,
24
- image: imagesIcon,
25
- movies: filmIcon,
26
- software: softwareIcon,
27
- texts: textsIcon,
28
- tv: tvIcon,
29
- video: videoIcon,
30
- web: webIcon,
31
- };
32
- this.mediatypeText = {
33
- audio: 'Audio',
34
- collection: 'Collection',
35
- data: 'Data',
36
- etree: 'E-tree',
37
- film: 'Film',
38
- image: 'Image',
39
- movies: 'Movie',
40
- software: 'Software',
41
- texts: 'Text',
42
- tv: 'TV',
43
- video: 'Video',
44
- web: 'Web',
45
- };
46
- }
47
- render() {
48
- if (!this.mediatype) {
49
- return html ``;
50
- }
51
- return html `
52
- <div id="icon" class="${this.showText ? 'show-text' : 'hide-text'}">
53
- ${this.mediatypeIcons[this.mediatype]}
54
- <p class="status-text">${this.mediatypeText[this.mediatype]}</p>
55
- </div>
56
- `;
57
- }
58
- static get styles() {
59
- return css `
60
- .status-text {
61
- font-size: 14px;
62
- color: #2c2c2c;
63
- margin: auto;
64
- display: block;
65
- text-align: center;
66
- }
67
-
68
- #icon.hide-text p {
69
- display: none;
70
- }
71
-
72
- #icon.show-text svg {
73
- height: 10px;
74
- width: 10px;
75
- }
76
- `;
77
- }
78
- };
79
- __decorate([
80
- property({ type: String })
81
- ], MediatypeIcon.prototype, "mediatype", void 0);
82
- __decorate([
83
- property({ type: Boolean })
84
- ], MediatypeIcon.prototype, "showText", void 0);
85
- MediatypeIcon = __decorate([
86
- customElement('mediatype-icon')
87
- ], MediatypeIcon);
88
- export { MediatypeIcon };
89
- //# sourceMappingURL=mediatype-icon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mediatype-icon.js","sourceRoot":"","sources":["../../src/mediatype-icon.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAkB,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAGzE,IAAa,aAAa,GAA1B,MAAa,aAAc,SAAQ,UAAU;IAA7C;;QAG+B,aAAQ,GAAG,KAAK,CAAC;QAE7B,mBAAc,GAA2B;YACxD,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,cAAc;YAC1B,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,SAAS;YAChB,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO;SACb,CAAC;QAEe,kBAAa,GAA2B;YACvD,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,YAAY;YACxB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,MAAM;YACb,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,KAAK;SACX,CAAC;IAkCJ,CAAC;IAhCC,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO,IAAI,CAAA,EAAE,CAAC;SACf;QACD,OAAO,IAAI,CAAA;8BACe,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;UAC7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;iCACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;;KAE9D,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;KAiBT,CAAC;IACJ,CAAC;CACF,CAAA;AAlE6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDAA+B;AAE7B;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;+CAAkB;AAHnC,aAAa;IADzB,aAAa,CAAC,gBAAgB,CAAC;GACnB,aAAa,CAmEzB;SAnEY,aAAa","sourcesContent":["import { css, CSSResultGroup, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { audioIcon } from './assets/img/icons/mediatype/audio';\nimport { etreeIcon } from './assets/img/icons/mediatype/etree';\nimport { imagesIcon } from './assets/img/icons/mediatype/images';\nimport { filmIcon } from './assets/img/icons/mediatype/film';\nimport { softwareIcon } from './assets/img/icons/mediatype/software';\nimport { textsIcon } from './assets/img/icons/mediatype/texts';\nimport { tvIcon } from './assets/img/icons/mediatype/tv';\nimport { videoIcon } from './assets/img/icons/mediatype/video';\nimport { webIcon } from './assets/img/icons/mediatype/web';\nimport { collectionIcon } from './assets/img/icons/mediatype/collection';\n\n@customElement('mediatype-icon')\nexport class MediatypeIcon extends LitElement {\n @property({ type: String }) mediatype: string | undefined;\n\n @property({ type: Boolean }) showText = false;\n\n private readonly mediatypeIcons: { [key: string]: any } = {\n audio: audioIcon,\n collection: collectionIcon,\n data: etreeIcon,\n etree: etreeIcon,\n film: filmIcon,\n image: imagesIcon,\n movies: filmIcon,\n software: softwareIcon,\n texts: textsIcon,\n tv: tvIcon,\n video: videoIcon,\n web: webIcon,\n };\n\n private readonly mediatypeText: { [key: string]: any } = {\n audio: 'Audio',\n collection: 'Collection',\n data: 'Data',\n etree: 'E-tree',\n film: 'Film',\n image: 'Image',\n movies: 'Movie',\n software: 'Software',\n texts: 'Text',\n tv: 'TV',\n video: 'Video',\n web: 'Web',\n };\n\n render() {\n if (!this.mediatype) {\n return html``;\n }\n return html`\n <div id=\"icon\" class=\"${this.showText ? 'show-text' : 'hide-text'}\">\n ${this.mediatypeIcons[this.mediatype]}\n <p class=\"status-text\">${this.mediatypeText[this.mediatype]}</p>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n return css`\n .status-text {\n font-size: 14px;\n color: #2c2c2c;\n margin: auto;\n display: block;\n text-align: center;\n }\n\n #icon.hide-text p {\n display: none;\n }\n\n #icon.show-text svg {\n height: 10px;\n width: 10px;\n }\n `;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- export declare const gridIcon: import("lit-html").TemplateResult<2>;
@@ -1,5 +0,0 @@
1
- import { svg } from 'lit';
2
- export const gridIcon = svg `
3
- <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><path d="m45 13h-45v60h45zm55 0h-45v32h45zm0 42h-45v32h45z"/></svg>
4
- `;
5
- //# sourceMappingURL=grid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../../src/sort-filter-bar/img/grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAA;;CAE1B,CAAC","sourcesContent":["import { svg } from 'lit';\n\nexport const gridIcon = svg`\n<svg viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m45 13h-45v60h45zm55 0h-45v32h45zm0 42h-45v32h45z\"/></svg>\n`;\n"]}
@@ -1,7 +0,0 @@
1
- import { LitElement } from 'lit';
2
- import { TileModel } from '../../models';
3
- export declare class TileListDetail extends LitElement {
4
- model?: TileModel;
5
- render(): import("lit-html").TemplateResult<1>;
6
- static get styles(): import("lit").CSSResult;
7
- }
@@ -1,28 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- let TileListDetail = class TileListDetail extends LitElement {
5
- render() {
6
- var _a, _b, _c, _d;
7
- return html `
8
- <h1>${(_a = this.model) === null || _a === void 0 ? void 0 : _a.title}</h1>
9
- <h2>${(_c = (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished) === null || _c === void 0 ? void 0 : _c.toDateString()}</h2>
10
- <p>${(_d = this.model) === null || _d === void 0 ? void 0 : _d.description}</p>
11
- `;
12
- }
13
- static get styles() {
14
- return css `
15
- h1 {
16
- margin-top: 0;
17
- }
18
- `;
19
- }
20
- };
21
- __decorate([
22
- property({ type: Object })
23
- ], TileListDetail.prototype, "model", void 0);
24
- TileListDetail = __decorate([
25
- customElement('tile-list-detail')
26
- ], TileListDetail);
27
- export { TileListDetail };
28
- //# sourceMappingURL=tile-list-detail.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile-list-detail.js","sourceRoot":"","sources":["../../../../src/tiles/list/tile-list-detail.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI5D,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,UAAU;IAG5C,MAAM;;QACJ,OAAO,IAAI,CAAA;YACH,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK;YACjB,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,0CAAE,YAAY,EAAE;WAC1C,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW;KAC7B,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;KAIT,CAAC;IACJ,CAAC;CACF,CAAA;AAjB6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAmB;AADnC,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CAkB1B;SAlBY,cAAc","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { TileModel } from '../../models';\n\n@customElement('tile-list-detail')\nexport class TileListDetail extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n render() {\n return html`\n <h1>${this.model?.title}</h1>\n <h2>${this.model?.datePublished?.toDateString()}</h2>\n <p>${this.model?.description}</p>\n `;\n }\n\n static get styles() {\n return css`\n h1 {\n margin-top: 0;\n }\n `;\n }\n}\n"]}
@@ -1,73 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- let LoadingTile = class LoadingTile extends LitElement {
5
- render() {
6
- return html ` <div id="container"></div> `;
7
- }
8
- static get styles() {
9
- return css `
10
- :host {
11
- display: block;
12
- height: 100%;
13
- }
14
-
15
- #container {
16
- background: linear-gradient(
17
- to right,
18
- rgba(25, 69, 154, 0.1),
19
- rgb(105, 161, 234, 0.2)
20
- );
21
- background-size: 400% 400%;
22
-
23
- -webkit-animation: AnimationName 4s ease infinite;
24
- -moz-animation: AnimationName 4s ease infinite;
25
- animation: AnimationName 4s ease infinite;
26
-
27
- display: block;
28
- height: 100%;
29
- }
30
-
31
- @-webkit-keyframes AnimationName {
32
- 0% {
33
- background-position: 0% 50%;
34
- }
35
- 50% {
36
- background-position: 100% 50%;
37
- }
38
- 100% {
39
- background-position: 0% 50%;
40
- }
41
- }
42
-
43
- @-moz-keyframes AnimationName {
44
- 0% {
45
- background-position: 0% 50%;
46
- }
47
- 50% {
48
- background-position: 100% 50%;
49
- }
50
- 100% {
51
- background-position: 0% 50%;
52
- }
53
- }
54
-
55
- @keyframes AnimationName {
56
- 0% {
57
- background-position: 0% 50%;
58
- }
59
- 50% {
60
- background-position: 100% 50%;
61
- }
62
- 100% {
63
- background-position: 0% 50%;
64
- }
65
- }
66
- `;
67
- }
68
- };
69
- LoadingTile = __decorate([
70
- customElement('loading-tile')
71
- ], LoadingTile);
72
- export { LoadingTile };
73
- //# sourceMappingURL=loading-tile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loading-tile.js","sourceRoot":"","sources":["../../../src/tiles/loading-tile.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,UAAU;IACzC,MAAM;QACJ,OAAO,IAAI,CAAA,8BAA8B,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyDT,CAAC;IACJ,CAAC;CACF,CAAA;AAjEY,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAiEvB;SAjEY,WAAW","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\n@customElement('loading-tile')\nexport class LoadingTile extends LitElement {\n render() {\n return html` <div id=\"container\"></div> `;\n }\n\n static get styles() {\n return css`\n :host {\n display: block;\n height: 100%;\n }\n\n #container {\n background: linear-gradient(\n to right,\n rgba(25, 69, 154, 0.1),\n rgb(105, 161, 234, 0.2)\n );\n background-size: 400% 400%;\n\n -webkit-animation: AnimationName 4s ease infinite;\n -moz-animation: AnimationName 4s ease infinite;\n animation: AnimationName 4s ease infinite;\n\n display: block;\n height: 100%;\n }\n\n @-webkit-keyframes AnimationName {\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n }\n\n @-moz-keyframes AnimationName {\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n }\n\n @keyframes AnimationName {\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n }\n `;\n }\n}\n"]}
@@ -1,83 +0,0 @@
1
- import { css, CSSResultGroup, html, LitElement } from 'lit';
2
- import { customElement, property } from 'lit/decorators.js';
3
-
4
- import { audioIcon } from './assets/img/icons/mediatype/audio';
5
- import { etreeIcon } from './assets/img/icons/mediatype/etree';
6
- import { imagesIcon } from './assets/img/icons/mediatype/images';
7
- import { filmIcon } from './assets/img/icons/mediatype/film';
8
- import { softwareIcon } from './assets/img/icons/mediatype/software';
9
- import { textsIcon } from './assets/img/icons/mediatype/texts';
10
- import { tvIcon } from './assets/img/icons/mediatype/tv';
11
- import { videoIcon } from './assets/img/icons/mediatype/video';
12
- import { webIcon } from './assets/img/icons/mediatype/web';
13
- import { collectionIcon } from './assets/img/icons/mediatype/collection';
14
-
15
- @customElement('mediatype-icon')
16
- export class MediatypeIcon extends LitElement {
17
- @property({ type: String }) mediatype: string | undefined;
18
-
19
- @property({ type: Boolean }) showText = false;
20
-
21
- private readonly mediatypeIcons: { [key: string]: any } = {
22
- audio: audioIcon,
23
- collection: collectionIcon,
24
- data: etreeIcon,
25
- etree: etreeIcon,
26
- film: filmIcon,
27
- image: imagesIcon,
28
- movies: filmIcon,
29
- software: softwareIcon,
30
- texts: textsIcon,
31
- tv: tvIcon,
32
- video: videoIcon,
33
- web: webIcon,
34
- };
35
-
36
- private readonly mediatypeText: { [key: string]: any } = {
37
- audio: 'Audio',
38
- collection: 'Collection',
39
- data: 'Data',
40
- etree: 'E-tree',
41
- film: 'Film',
42
- image: 'Image',
43
- movies: 'Movie',
44
- software: 'Software',
45
- texts: 'Text',
46
- tv: 'TV',
47
- video: 'Video',
48
- web: 'Web',
49
- };
50
-
51
- render() {
52
- if (!this.mediatype) {
53
- return html``;
54
- }
55
- return html`
56
- <div id="icon" class="${this.showText ? 'show-text' : 'hide-text'}">
57
- ${this.mediatypeIcons[this.mediatype]}
58
- <p class="status-text">${this.mediatypeText[this.mediatype]}</p>
59
- </div>
60
- `;
61
- }
62
-
63
- static get styles(): CSSResultGroup {
64
- return css`
65
- .status-text {
66
- font-size: 14px;
67
- color: #2c2c2c;
68
- margin: auto;
69
- display: block;
70
- text-align: center;
71
- }
72
-
73
- #icon.hide-text p {
74
- display: none;
75
- }
76
-
77
- #icon.show-text svg {
78
- height: 10px;
79
- width: 10px;
80
- }
81
- `;
82
- }
83
- }
@@ -1,5 +0,0 @@
1
- import { svg } from 'lit';
2
-
3
- export const gridIcon = svg`
4
- <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><path d="m45 13h-45v60h45zm55 0h-45v32h45zm0 42h-45v32h45z"/></svg>
5
- `;
@@ -1,70 +0,0 @@
1
- import { css, html, LitElement } from 'lit';
2
- import { customElement } from 'lit/decorators.js';
3
-
4
- @customElement('loading-tile')
5
- export class LoadingTile extends LitElement {
6
- render() {
7
- return html` <div id="container"></div> `;
8
- }
9
-
10
- static get styles() {
11
- return css`
12
- :host {
13
- display: block;
14
- height: 100%;
15
- }
16
-
17
- #container {
18
- background: linear-gradient(
19
- to right,
20
- rgba(25, 69, 154, 0.1),
21
- rgb(105, 161, 234, 0.2)
22
- );
23
- background-size: 400% 400%;
24
-
25
- -webkit-animation: AnimationName 4s ease infinite;
26
- -moz-animation: AnimationName 4s ease infinite;
27
- animation: AnimationName 4s ease infinite;
28
-
29
- display: block;
30
- height: 100%;
31
- }
32
-
33
- @-webkit-keyframes AnimationName {
34
- 0% {
35
- background-position: 0% 50%;
36
- }
37
- 50% {
38
- background-position: 100% 50%;
39
- }
40
- 100% {
41
- background-position: 0% 50%;
42
- }
43
- }
44
-
45
- @-moz-keyframes AnimationName {
46
- 0% {
47
- background-position: 0% 50%;
48
- }
49
- 50% {
50
- background-position: 100% 50%;
51
- }
52
- 100% {
53
- background-position: 0% 50%;
54
- }
55
- }
56
-
57
- @keyframes AnimationName {
58
- 0% {
59
- background-position: 0% 50%;
60
- }
61
- 50% {
62
- background-position: 100% 50%;
63
- }
64
- 100% {
65
- background-position: 0% 50%;
66
- }
67
- }
68
- `;
69
- }
70
- }