@internetarchive/collection-browser 0.2.5 → 0.2.7-alpha.2

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 (89) hide show
  1. package/dist/src/{tiles/grid → assets/img}/icons/favorite-filled.d.ts +0 -0
  2. package/dist/src/{tiles/grid → assets/img}/icons/favorite-filled.js +0 -0
  3. package/dist/src/{tiles/grid → assets/img}/icons/favorite-filled.js.map +1 -1
  4. package/dist/src/assets/img/icons/login-required.d.ts +1 -0
  5. package/dist/src/assets/img/icons/login-required.js +30 -0
  6. package/dist/src/assets/img/icons/login-required.js.map +1 -0
  7. package/dist/src/{tiles/grid → assets/img}/icons/reviews.d.ts +0 -0
  8. package/dist/src/{tiles/grid → assets/img}/icons/reviews.js +0 -0
  9. package/dist/src/{tiles/grid → assets/img}/icons/reviews.js.map +1 -1
  10. package/dist/src/{tiles/grid → assets/img}/icons/upload.d.ts +0 -0
  11. package/dist/src/{tiles/grid → assets/img}/icons/upload.js +0 -0
  12. package/dist/src/{tiles/grid → assets/img}/icons/upload.js.map +1 -1
  13. package/dist/src/assets/img/icons/views.d.ts +1 -0
  14. package/dist/src/{tiles/grid → assets/img}/icons/views.js +1 -1
  15. package/dist/src/assets/img/icons/views.js.map +1 -0
  16. package/dist/src/collection-browser.js +15 -10
  17. package/dist/src/collection-browser.js.map +1 -1
  18. package/dist/src/tiles/grid/account-tile.d.ts +1 -0
  19. package/dist/src/tiles/grid/account-tile.js +45 -78
  20. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  21. package/dist/src/tiles/grid/item-tile.d.ts +7 -0
  22. package/dist/src/tiles/grid/item-tile.js +76 -122
  23. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  24. package/dist/src/tiles/grid/tile-stats.d.ts +10 -0
  25. package/dist/src/tiles/grid/tile-stats.js +134 -0
  26. package/dist/src/tiles/grid/tile-stats.js.map +1 -0
  27. package/dist/src/tiles/item-image.d.ts +5 -0
  28. package/dist/src/tiles/item-image.js +21 -3
  29. package/dist/src/tiles/item-image.js.map +1 -1
  30. package/dist/src/tiles/list/tile-list-compact.d.ts +1 -0
  31. package/dist/src/tiles/list/tile-list-compact.js +10 -1
  32. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  33. package/dist/src/tiles/list/tile-list.d.ts +1 -0
  34. package/dist/src/tiles/list/tile-list.js +5 -0
  35. package/dist/src/tiles/list/tile-list.js.map +1 -1
  36. package/dist/src/tiles/mediatype-icon.js +4 -0
  37. package/dist/src/tiles/mediatype-icon.js.map +1 -1
  38. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -0
  39. package/dist/src/tiles/overlay/icon-overlay.js +43 -0
  40. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -0
  41. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -0
  42. package/dist/src/tiles/overlay/text-overlay.js +53 -0
  43. package/dist/src/tiles/overlay/text-overlay.js.map +1 -0
  44. package/dist/src/tiles/tile-dispatcher.d.ts +1 -0
  45. package/dist/src/tiles/tile-dispatcher.js +7 -0
  46. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  47. package/dist/test/icon-overlay.test.d.ts +1 -0
  48. package/dist/test/icon-overlay.test.js +23 -0
  49. package/dist/test/icon-overlay.test.js.map +1 -0
  50. package/dist/test/item-image.test.d.ts +1 -0
  51. package/dist/test/item-image.test.js +75 -0
  52. package/dist/test/item-image.test.js.map +1 -0
  53. package/dist/test/text-overlay.test.d.ts +1 -0
  54. package/dist/test/text-overlay.test.js +37 -0
  55. package/dist/test/text-overlay.test.js.map +1 -0
  56. package/dist/test/tile-stats.test.d.ts +1 -0
  57. package/dist/test/tile-stats.test.js +42 -0
  58. package/dist/test/tile-stats.test.js.map +1 -0
  59. package/package.json +2 -2
  60. package/src/{tiles/grid → assets/img}/icons/favorite-filled.ts +0 -0
  61. package/src/assets/img/icons/login-required.ts +30 -0
  62. package/src/{tiles/grid → assets/img}/icons/reviews.ts +0 -0
  63. package/src/{tiles/grid → assets/img}/icons/upload.ts +0 -0
  64. package/src/{tiles/grid → assets/img}/icons/views.ts +1 -1
  65. package/src/collection-browser.ts +15 -10
  66. package/src/tiles/grid/account-tile.ts +44 -77
  67. package/src/tiles/grid/item-tile.ts +73 -123
  68. package/src/tiles/grid/tile-stats.ts +132 -0
  69. package/src/tiles/item-image.ts +22 -2
  70. package/src/tiles/list/tile-list-compact.ts +8 -1
  71. package/src/tiles/list/tile-list.ts +3 -0
  72. package/src/tiles/mediatype-icon.ts +4 -0
  73. package/src/tiles/overlay/icon-overlay.ts +34 -0
  74. package/src/tiles/overlay/text-overlay.ts +44 -0
  75. package/src/tiles/tile-dispatcher.ts +5 -0
  76. package/test/icon-overlay.test.ts +30 -0
  77. package/test/item-image.test.ts +85 -0
  78. package/test/text-overlay.test.ts +44 -0
  79. package/test/tile-stats.test.ts +57 -0
  80. package/dist/src/tiles/grid/icons/account.d.ts +0 -1
  81. package/dist/src/tiles/grid/icons/account.js +0 -12
  82. package/dist/src/tiles/grid/icons/account.js.map +0 -1
  83. package/dist/src/tiles/grid/icons/views.d.ts +0 -2
  84. package/dist/src/tiles/grid/icons/views.js.map +0 -1
  85. package/dist/src/tiles/item-tile-image.d.ts +0 -15
  86. package/dist/src/tiles/item-tile-image.js +0 -68
  87. package/dist/src/tiles/item-tile-image.js.map +0 -1
  88. package/src/tiles/grid/icons/account.ts +0 -12
  89. package/src/tiles/item-tile-image.ts +0 -61
@@ -1,52 +1,37 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { css, html, LitElement } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
- import { accountIcon } from './icons/account';
5
- import { favoriteFilledIcon } from './icons/favorite-filled';
6
- import { reviewsIcon } from './icons/reviews';
7
- import { uploadIcon } from './icons/upload';
4
+ import './tile-stats';
8
5
  let AccountTile = class AccountTile extends LitElement {
9
6
  render() {
10
- var _a, _b, _c, _d, _e, _f, _g;
7
+ var _a, _b, _c, _d, _e, _f, _g, _h;
11
8
  return html `
12
- <div class="outer-holder">
13
- <div class="inner-holder">
14
- <div id="header-holder">
15
- <div id="title-holder">
16
- <h1 class="truncated">${(_a = this.model) === null || _a === void 0 ? void 0 : _a.identifier}</h1>
17
- </div>
18
- <div id="avatar-holder">
19
- <div
20
- id="avatar"
21
- style="background-image: url('https://archive.org/services/img/${(_b = this
22
- .model) === null || _b === void 0 ? void 0 : _b.identifier}')"
23
- ></div>
24
- </div>
25
- </div>
26
- <div id="year-holder">
27
- <div id="archivist-since">
28
- <h3>Archivist Since</h3>
29
- </div>
30
- <div id="year-holder">
31
- <h3>${(_d = (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateAdded) === null || _d === void 0 ? void 0 : _d.getFullYear()}</h3>
32
- </div>
33
- </div>
34
- <div id="status-holder">
35
- <div id="patron-icon">${accountIcon}</div>
36
- <div class="stat-icon">
37
- ${uploadIcon}
38
- <h3>${(_e = this.model) === null || _e === void 0 ? void 0 : _e.itemCount}</h3>
39
- </div>
40
- <div class="stat-icon">
41
- ${favoriteFilledIcon}
42
- <h3>${(_f = this.model) === null || _f === void 0 ? void 0 : _f.favCount}</h3>
43
- </div>
44
- <div class="stat-icon">
45
- ${reviewsIcon}
46
- <h3>${(_g = this.model) === null || _g === void 0 ? void 0 : _g.commentCount}</h3>
47
- </div>
9
+ <div class="account-tile-main">
10
+ <div id="title">
11
+ <h1 class="truncated">${(_a = this.model) === null || _a === void 0 ? void 0 : _a.identifier}</h1>
12
+ </div>
13
+
14
+ <div class="account-info">
15
+ <div id="avatar-info">
16
+ <img
17
+ id="avatar"
18
+ alt="patron-avatar"
19
+ src="https://archive.org/services/img/${(_b = this.model) === null || _b === void 0 ? void 0 : _b.identifier}"
20
+ />
48
21
  </div>
22
+
23
+ <span id="archivist-since">
24
+ Archivist since ${(_d = (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateAdded) === null || _d === void 0 ? void 0 : _d.getFullYear()}
25
+ </span>
49
26
  </div>
27
+
28
+ <tile-stats
29
+ .mediatype=${(_e = this.model) === null || _e === void 0 ? void 0 : _e.mediatype}
30
+ .itemCount=${(_f = this.model) === null || _f === void 0 ? void 0 : _f.itemCount}
31
+ .favCount=${(_g = this.model) === null || _g === void 0 ? void 0 : _g.favCount}
32
+ .commentCount=${(_h = this.model) === null || _h === void 0 ? void 0 : _h.commentCount}
33
+ >
34
+ </tile-stats>
50
35
  </div>
51
36
  `;
52
37
  }
@@ -58,41 +43,45 @@ let AccountTile = class AccountTile extends LitElement {
58
43
  margin: 0;
59
44
  }
60
45
 
61
- h3 {
46
+ span {
62
47
  font-size: 14px;
63
- font-weight: bold;
64
48
  color: #2c2c2c;
65
49
  margin: 0px;
66
50
  }
67
51
 
68
- .outer-holder {
52
+ .account-tile-main {
69
53
  background-color: #fcf5e6;
70
54
  border: 1px #2c2c2c;
71
55
  border-radius: 4px;
72
56
  box-shadow: 1px 1px 2px 0px;
73
57
  height: 100%;
74
58
  display: flex;
59
+ flex-direction: column;
75
60
  text-align: center;
76
61
  width: 100%;
77
62
  }
78
63
 
79
- .inner-holder {
80
- padding: 5px;
81
- width: 100%;
82
- display: flex;
83
- flex-direction: column;
64
+ .account-info {
65
+ flex-grow: 1;
84
66
  }
85
67
 
86
- #header-holder {
87
- flex: 1;
68
+ #title {
69
+ padding: 5px 5px 0px 5px;
70
+ flex-shrink: 0;
71
+ height: 40px;
88
72
  }
89
73
 
90
- #title-holder {
91
- height: 40px;
92
- margin-bottom: 5px;
74
+ .account-tile-main:hover > #title > .truncated {
75
+ text-decoration: underline;
76
+ }
77
+
78
+ /** this is a workaround for Safari 15 where the hover effects are not working */
79
+ #title:hover > .truncated {
80
+ text-decoration: underline;
93
81
  }
94
82
 
95
- #avatar-holder {
83
+ #avatar-info {
84
+ margin-top: 5px;
96
85
  margin-bottom: 5px;
97
86
  display: flex;
98
87
  align-items: center;
@@ -107,27 +96,11 @@ let AccountTile = class AccountTile extends LitElement {
107
96
  box-shadow: 1px 1px 2px #888888;
108
97
  }
109
98
 
110
- #year-holder {
99
+ #archivist-since {
111
100
  margin-bottom: 5px;
112
101
  height: 40px;
113
102
  }
114
103
 
115
- #year-holder {
116
- margin: 0px;
117
- }
118
-
119
- #status-holder {
120
- height: 25px;
121
- display: flex;
122
- justify-content: space-evenly;
123
- line-height: initial;
124
- }
125
-
126
- #patron-icon {
127
- height: 25px;
128
- width: 25px;
129
- }
130
-
131
104
  .truncated {
132
105
  flex: 1;
133
106
  min-width: 0; /* Important for long words! */
@@ -137,15 +110,9 @@ let AccountTile = class AccountTile extends LitElement {
137
110
  display: -webkit-box;
138
111
  -webkit-box-orient: vertical;
139
112
  word-wrap: break-word;
140
- word-break: break-all;
141
113
  line-height: 2rem;
142
114
  text-align: center;
143
115
  }
144
-
145
- .stat-icon {
146
- height: 10px;
147
- width: 10px;
148
- }
149
116
  `;
150
117
  }
151
118
  };
@@ -1 +1 @@
1
- {"version":3,"file":"account-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/account-tile.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;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,UAAU;IAGzC,MAAM;;QACJ,OAAO,IAAI,CAAA;;;;;sCAKuB,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU;;;;;iFAKqB,MAAA,IAAI;aAClE,KAAK,0CAAE,UAAU;;;;;;;;;oBAShB,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,0CAAE,WAAW,EAAE;;;;oCAIpB,WAAW;;gBAE/B,UAAU;oBACN,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;;;gBAGzB,kBAAkB;oBACd,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ;;;gBAGxB,WAAW;oBACP,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY;;;;;KAKvC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+FT,CAAC;IACJ,CAAC;CACF,CAAA;AAhJ6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAmB;AADnC,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAiJvB;SAjJY,WAAW","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { TileModel } from '../../models';\n\nimport { accountIcon } from './icons/account';\nimport { favoriteFilledIcon } from './icons/favorite-filled';\nimport { reviewsIcon } from './icons/reviews';\nimport { uploadIcon } from './icons/upload';\n\n@customElement('account-tile')\nexport class AccountTile extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n render() {\n return html`\n <div class=\"outer-holder\">\n <div class=\"inner-holder\">\n <div id=\"header-holder\">\n <div id=\"title-holder\">\n <h1 class=\"truncated\">${this.model?.identifier}</h1>\n </div>\n <div id=\"avatar-holder\">\n <div\n id=\"avatar\"\n style=\"background-image: url('https://archive.org/services/img/${this\n .model?.identifier}')\"\n ></div>\n </div>\n </div>\n <div id=\"year-holder\">\n <div id=\"archivist-since\">\n <h3>Archivist Since</h3>\n </div>\n <div id=\"year-holder\">\n <h3>${this.model?.dateAdded?.getFullYear()}</h3>\n </div>\n </div>\n <div id=\"status-holder\">\n <div id=\"patron-icon\">${accountIcon}</div>\n <div class=\"stat-icon\">\n ${uploadIcon}\n <h3>${this.model?.itemCount}</h3>\n </div>\n <div class=\"stat-icon\">\n ${favoriteFilledIcon}\n <h3>${this.model?.favCount}</h3>\n </div>\n <div class=\"stat-icon\">\n ${reviewsIcon}\n <h3>${this.model?.commentCount}</h3>\n </div>\n </div>\n </div>\n </div>\n `;\n }\n\n static get styles() {\n return css`\n h1 {\n color: black;\n font-size: 16px;\n margin: 0;\n }\n\n h3 {\n font-size: 14px;\n font-weight: bold;\n color: #2c2c2c;\n margin: 0px;\n }\n\n .outer-holder {\n background-color: #fcf5e6;\n border: 1px #2c2c2c;\n border-radius: 4px;\n box-shadow: 1px 1px 2px 0px;\n height: 100%;\n display: flex;\n text-align: center;\n width: 100%;\n }\n\n .inner-holder {\n padding: 5px;\n width: 100%;\n display: flex;\n flex-direction: column;\n }\n\n #header-holder {\n flex: 1;\n }\n\n #title-holder {\n height: 40px;\n margin-bottom: 5px;\n }\n\n #avatar-holder {\n margin-bottom: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n #avatar {\n background-position: 50% 50%;\n border-radius: 50%;\n width: 160px;\n height: 160px;\n box-shadow: 1px 1px 2px #888888;\n }\n\n #year-holder {\n margin-bottom: 5px;\n height: 40px;\n }\n\n #year-holder {\n margin: 0px;\n }\n\n #status-holder {\n height: 25px;\n display: flex;\n justify-content: space-evenly;\n line-height: initial;\n }\n\n #patron-icon {\n height: 25px;\n width: 25px;\n }\n\n .truncated {\n flex: 1;\n min-width: 0; /* Important for long words! */\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n word-wrap: break-word;\n word-break: break-all;\n line-height: 2rem;\n text-align: center;\n }\n\n .stat-icon {\n height: 10px;\n width: 10px;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"account-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/account-tile.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;AAG5D,OAAO,cAAc,CAAC;AAGtB,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,UAAU;IAGzC,MAAM;;QACJ,OAAO,IAAI,CAAA;;;kCAGmB,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU;;;;;;;;sDAQF,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU;;;;;8BAK9C,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,0CAAE,WAAW,EAAE;;;;;uBAK3C,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;uBACrB,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;sBACtB,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ;0BAChB,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY;;;;KAI7C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6ET,CAAC;IACJ,CAAC;CACF,CAAA;AAlH6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAmB;AADnC,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAmHvB;SAnHY,WAAW","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { TileModel } from '../../models';\n\nimport './tile-stats';\n\n@customElement('account-tile')\nexport class AccountTile extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n render() {\n return html`\n <div class=\"account-tile-main\">\n <div id=\"title\">\n <h1 class=\"truncated\">${this.model?.identifier}</h1>\n </div>\n\n <div class=\"account-info\">\n <div id=\"avatar-info\">\n <img\n id=\"avatar\"\n alt=\"patron-avatar\"\n src=\"https://archive.org/services/img/${this.model?.identifier}\"\n />\n </div>\n\n <span id=\"archivist-since\">\n Archivist since ${this.model?.dateAdded?.getFullYear()}\n </span>\n </div>\n\n <tile-stats\n .mediatype=${this.model?.mediatype}\n .itemCount=${this.model?.itemCount}\n .favCount=${this.model?.favCount}\n .commentCount=${this.model?.commentCount}\n >\n </tile-stats>\n </div>\n `;\n }\n\n static get styles() {\n return css`\n h1 {\n color: black;\n font-size: 16px;\n margin: 0;\n }\n\n span {\n font-size: 14px;\n color: #2c2c2c;\n margin: 0px;\n }\n\n .account-tile-main {\n background-color: #fcf5e6;\n border: 1px #2c2c2c;\n border-radius: 4px;\n box-shadow: 1px 1px 2px 0px;\n height: 100%;\n display: flex;\n flex-direction: column;\n text-align: center;\n width: 100%;\n }\n\n .account-info {\n flex-grow: 1;\n }\n\n #title {\n padding: 5px 5px 0px 5px;\n flex-shrink: 0;\n height: 40px;\n }\n\n .account-tile-main:hover > #title > .truncated {\n text-decoration: underline;\n }\n\n /** this is a workaround for Safari 15 where the hover effects are not working */\n #title:hover > .truncated {\n text-decoration: underline;\n }\n\n #avatar-info {\n margin-top: 5px;\n margin-bottom: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n #avatar {\n background-position: 50% 50%;\n border-radius: 50%;\n width: 160px;\n height: 160px;\n box-shadow: 1px 1px 2px #888888;\n }\n\n #archivist-since {\n margin-bottom: 5px;\n height: 40px;\n }\n\n .truncated {\n flex: 1;\n min-width: 0; /* Important for long words! */\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n word-wrap: break-word;\n line-height: 2rem;\n text-align: center;\n }\n `;\n }\n}\n"]}
@@ -2,9 +2,16 @@ import { CSSResultGroup, LitElement } from 'lit';
2
2
  import { TileModel } from '../../models';
3
3
  import '../mediatype-icon';
4
4
  import '../item-image';
5
+ import './tile-stats';
6
+ import '../overlay/text-overlay';
5
7
  export declare class ItemTile extends LitElement {
8
+ loggedIn: boolean;
6
9
  model?: TileModel;
7
10
  baseImageUrl?: string;
8
11
  render(): import("lit-html").TemplateResult<1>;
12
+ /**
13
+ * Templates
14
+ */
15
+ private get textOverlayTemplate();
9
16
  static get styles(): CSSResultGroup;
10
17
  }
@@ -2,193 +2,147 @@ import { __decorate } from "tslib";
2
2
  /* eslint-disable import/no-duplicates */
3
3
  import { css, html, LitElement, nothing } from 'lit';
4
4
  import { customElement, property } from 'lit/decorators.js';
5
- import { formatCount } from '../../utils/format-count';
6
- import { favoriteFilledIcon } from './icons/favorite-filled';
7
- import { reviewsIcon } from './icons/reviews';
8
- import viewsIcon from './icons/views';
5
+ import { ifDefined } from 'lit/directives/if-defined.js';
9
6
  import '../mediatype-icon';
10
7
  import '../item-image';
8
+ import './tile-stats';
9
+ import '../overlay/text-overlay';
11
10
  let ItemTile = class ItemTile extends LitElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.loggedIn = false;
14
+ }
12
15
  render() {
13
- var _a, _b, _c, _d, _e, _f, _g;
14
- const itemTitle = ((_a = this.model) === null || _a === void 0 ? void 0 : _a.title) || nothing;
16
+ var _a, _b, _c, _d, _e, _f;
17
+ const itemTitle = (_a = this.model) === null || _a === void 0 ? void 0 : _a.title;
15
18
  const itemCreator = (_b = this.model) === null || _b === void 0 ? void 0 : _b.creator;
16
19
  return html `
17
- <div id="container">
18
- <div id="title-image-container">
19
- <h1 id="item-title" title=${itemTitle}>${itemTitle}</h1>
20
- <div id="item-image-container">
21
- <item-image .model=${this.model} .baseImageUrl=${this.baseImageUrl}>
20
+ <div class="container">
21
+ <div class="item-info">
22
+ <div id="title">
23
+ <h1 class="truncated" title=${ifDefined(itemTitle)}>${itemTitle}</h1>
24
+ </div>
25
+
26
+ <div id="image">
27
+ <item-image
28
+ .model=${this.model}
29
+ .baseImageUrl=${this.baseImageUrl}>
22
30
  </item-image>
31
+ ${this.textOverlayTemplate}
23
32
  </div>
24
- <div class="item-creator">
25
- <div class="truncated">
26
- ${itemCreator
27
- ? html `<span>by&nbsp;${itemCreator}</span>`
28
- : nothing}
29
- </div>
33
+
34
+ <div class="created-by truncated">
35
+ ${itemCreator ? html `<span>by&nbsp;${itemCreator}</span>` : nothing}
30
36
  </div>
31
37
  </div>
32
38
 
33
- <div class="hr"></div>
34
-
35
- <div id="item-stats-container">
36
- <div id="stats-holder">
37
- <div class="col">
38
- <mediatype-icon
39
- .mediatype=${(_c = this.model) === null || _c === void 0 ? void 0 : _c.mediatype}
40
- .collection=${(_d = this.model) === null || _d === void 0 ? void 0 : _d.collections}
41
- style="--iconHeight:25px; --iconWidth:25px;"
42
- >
43
- </mediatype-icon>
44
- </div>
45
- <div class="col">
46
- ${viewsIcon}
47
- <p class="status-text">
48
- ${formatCount((_e = this.model) === null || _e === void 0 ? void 0 : _e.viewCount, 'short', 'short')}
49
- </p>
50
- </div>
51
- <div class="col">
52
- ${favoriteFilledIcon}
53
- <p class="status-text">
54
- ${formatCount((_f = this.model) === null || _f === void 0 ? void 0 : _f.itemCount, 'short', 'short')}
55
- </p>
56
- </div>
57
- <div class="col">
58
- ${reviewsIcon}
59
- <p class="status-text">
60
- ${formatCount((_g = this.model) === null || _g === void 0 ? void 0 : _g.favCount, 'short', 'short')}
61
- </p>
62
- </div>
63
- </div>
39
+ <tile-stats
40
+ .mediatype=${(_c = this.model) === null || _c === void 0 ? void 0 : _c.mediatype}
41
+ .viewCount=${(_d = this.model) === null || _d === void 0 ? void 0 : _d.viewCount}
42
+ .favCount=${(_e = this.model) === null || _e === void 0 ? void 0 : _e.favCount}
43
+ .commentCount=${(_f = this.model) === null || _f === void 0 ? void 0 : _f.commentCount}>
44
+ </tile-stats>
64
45
  </div>
65
46
  </div>
66
47
  `;
67
48
  }
49
+ /**
50
+ * Templates
51
+ */
52
+ get textOverlayTemplate() {
53
+ var _a, _b, _c, _d;
54
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.loginRequired) && !((_b = this.model) === null || _b === void 0 ? void 0 : _b.contentWarning)) {
55
+ return nothing;
56
+ }
57
+ return html `
58
+ <text-overlay
59
+ .loggedIn=${this.loggedIn}
60
+ .loginRequired=${(_c = this.model) === null || _c === void 0 ? void 0 : _c.loginRequired}
61
+ .contentWarning=${(_d = this.model) === null || _d === void 0 ? void 0 : _d.contentWarning}
62
+ ></text-overlay>
63
+ `;
64
+ }
68
65
  static get styles() {
69
- const cornerRadiusCss = css `var(--collectionTileCornerRadius, 4px)`;
70
66
  return css `
71
- #container {
67
+ .container {
72
68
  background-color: #ffffff;
73
- border-radius: ${cornerRadiusCss};
69
+ border-radius: var(--collectionTileCornerRadius, 4px);
74
70
  box-shadow: 1px 1px 2px 0px;
75
71
  display: flex;
76
72
  flex-direction: column;
77
73
  height: 100%;
78
- position: relative;
79
74
  }
80
75
 
81
- #title-image-container {
82
- display: flex;
83
- flex: 1;
84
- flex-direction: column;
85
- padding: 0.5rem 0.5rem 0 0.5rem;
76
+ .item-info {
77
+ padding: 5px 5px 0 5px;
78
+ flex-grow: 1;
86
79
  }
87
80
 
88
- #item-title {
89
- color: #2c2c2c;
90
- font-size: 1.6rem;
91
- text-align: center;
92
- margin-top: 0rem;
93
- margin-bottom: 0.5rem;
94
- overflow: hidden;
95
- text-overflow: ellipsis;
96
- display: -webkit-box;
97
- -webkit-line-clamp: 2;
98
- -webkit-box-orient: vertical;
99
- line-height: 2rem;
100
- height: 4rem;
81
+ #title {
82
+ flex-shrink: 0;
101
83
  }
102
84
 
103
- #item-image-container {
85
+ #image {
104
86
  display: flex;
105
87
  justify-content: center;
106
88
  flex: 1;
89
+ height: 16rem;
90
+ position: relative;
107
91
  }
108
92
 
109
93
  .hidden {
110
94
  display: none;
111
95
  }
112
96
 
113
- #container:hover > #title-image-container > .item-title {
97
+ .container:hover > .item-info > #title > .truncated {
114
98
  text-decoration: underline;
115
99
  }
116
100
 
117
101
  /** this is a workaround for Safari 15 where the hover effects are not working */
118
- #title-image-container:hover > #item-title {
102
+ #title:hover > .truncated {
119
103
  text-decoration: underline;
120
104
  }
121
105
 
122
- #container:hover > #item-title {
123
- background-color: #fcfcfc;
124
- }
125
-
126
- .item-creator {
106
+ .created-by {
127
107
  display: flex;
128
108
  justify-content: center;
129
109
  align-items: flex-end; /* Important to start text from bottom */
130
110
  height: 3rem;
131
111
  padding-top: 1rem;
112
+ margin-top: 5px;
132
113
  }
133
114
 
134
115
  .truncated {
135
116
  flex: 1;
136
- min-width: 0; /* Important for long words! */
137
- }
138
-
139
- .truncated span {
140
- font-size: 1.4rem;
141
117
  color: #2c2c2c;
142
- -webkit-line-clamp: 2;
118
+ min-width: 0; /* Important for long words! */
119
+ text-align: center;
120
+ line-height: 2rem;
143
121
  text-overflow: ellipsis;
144
122
  overflow: hidden;
145
- display: -webkit-box;
146
- -webkit-box-orient: vertical;
147
123
  word-wrap: break-word;
148
- line-height: 2rem;
149
- text-align: center;
150
- }
151
-
152
- .hr {
153
- border: 0.5px solid #ccc;
154
- }
155
-
156
- #item-stats-container {
157
- align-items: center;
158
- display: flex;
159
- height: 5.5rem;
160
- padding-left: 1rem;
161
- padding-right: 0.5rem;
162
- }
163
-
164
- #stats-holder {
165
- align-items: center;
166
- display: flex;
167
- flex: 1;
168
- justify-content: space-evenly;
169
- text-align: center;
170
- width: 100%;
171
- }
172
-
173
- svg {
174
- height: 10px;
175
- width: 10px;
124
+ -webkit-line-clamp: 2;
125
+ -webkit-box-orient: vertical;
176
126
  }
177
127
 
178
- .status-text {
179
- font-size: 14px;
180
- color: #2c2c2c;
181
- margin: auto;
182
- display: block;
183
- text-align: center;
128
+ .truncated span {
129
+ font-size: 1.4rem;
130
+ display: -webkit-box;
184
131
  }
185
132
 
186
- .col {
187
- width: 25%;
133
+ h1.truncated {
134
+ margin-top: 0rem;
135
+ margin-bottom: 0.5rem;
136
+ font-size: 1.6rem;
137
+ height: 4rem;
138
+ display: -webkit-box;
188
139
  }
189
140
  `;
190
141
  }
191
142
  };
143
+ __decorate([
144
+ property({ type: Boolean })
145
+ ], ItemTile.prototype, "loggedIn", void 0);
192
146
  __decorate([
193
147
  property({ type: Object })
194
148
  ], ItemTile.prototype, "model", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"item-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/item-tile.ts"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,EAAE,GAAG,EAAkB,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC,OAAO,mBAAmB,CAAC;AAC3B,OAAO,eAAe,CAAC;AAGvB,IAAa,QAAQ,GAArB,MAAa,QAAS,SAAQ,UAAU;IAKtC,MAAM;;QACJ,MAAM,SAAS,GAAG,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,KAAI,OAAO,CAAC;QAC/C,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,CAAC;QACxC,OAAO,IAAI,CAAA;;;sCAGuB,SAAS,IAAI,SAAS;;iCAE3B,IAAI,CAAC,KAAK,kBAAkB,IAAI,CAAC,YAAY;;;;;gBAK9D,WAAW;YACX,CAAC,CAAC,IAAI,CAAA,iBAAiB,WAAW,SAAS;YAC3C,CAAC,CAAC,OAAO;;;;;;;;;;;6BAWI,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;8BACpB,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW;;;;;;gBAMrC,SAAS;;kBAEP,WAAW,CAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;;;;gBAItD,kBAAkB;;kBAEhB,WAAW,CAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;;;;gBAItD,WAAW;;kBAET,WAAW,CAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;;;;;;KAMhE,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,MAAM,eAAe,GAAG,GAAG,CAAA,wCAAwC,CAAC;QAEpE,OAAO,GAAG,CAAA;;;yBAGW,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoHnC,CAAC;IACJ,CAAC;CACF,CAAA;AAxL6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uCAAmB;AAElB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAAuB;AAHvC,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAyLpB;SAzLY,QAAQ","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { css, CSSResultGroup, html, LitElement, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { TileModel } from '../../models';\nimport { formatCount } from '../../utils/format-count';\n\nimport { favoriteFilledIcon } from './icons/favorite-filled';\nimport { reviewsIcon } from './icons/reviews';\nimport viewsIcon from './icons/views';\n\nimport '../mediatype-icon';\nimport '../item-image';\n\n@customElement('item-tile')\nexport class ItemTile extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: String }) baseImageUrl?: string;\n\n render() {\n const itemTitle = this.model?.title || nothing;\n const itemCreator = this.model?.creator;\n return html`\n <div id=\"container\">\n <div id=\"title-image-container\">\n <h1 id=\"item-title\" title=${itemTitle}>${itemTitle}</h1>\n <div id=\"item-image-container\">\n <item-image .model=${this.model} .baseImageUrl=${this.baseImageUrl}>\n </item-image>\n </div>\n <div class=\"item-creator\">\n <div class=\"truncated\">\n ${itemCreator\n ? html`<span>by&nbsp;${itemCreator}</span>`\n : nothing}\n </div>\n </div>\n </div>\n\n <div class=\"hr\"></div>\n\n <div id=\"item-stats-container\">\n <div id=\"stats-holder\">\n <div class=\"col\">\n <mediatype-icon\n .mediatype=${this.model?.mediatype}\n .collection=${this.model?.collections}\n style=\"--iconHeight:25px; --iconWidth:25px;\"\n >\n </mediatype-icon>\n </div>\n <div class=\"col\">\n ${viewsIcon}\n <p class=\"status-text\">\n ${formatCount(this.model?.viewCount, 'short', 'short')}\n </p>\n </div>\n <div class=\"col\">\n ${favoriteFilledIcon}\n <p class=\"status-text\">\n ${formatCount(this.model?.itemCount, 'short', 'short')}\n </p>\n </div>\n <div class=\"col\">\n ${reviewsIcon}\n <p class=\"status-text\">\n ${formatCount(this.model?.favCount, 'short', 'short')}\n </p>\n </div>\n </div>\n </div>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n const cornerRadiusCss = css`var(--collectionTileCornerRadius, 4px)`;\n\n return css`\n #container {\n background-color: #ffffff;\n border-radius: ${cornerRadiusCss};\n box-shadow: 1px 1px 2px 0px;\n display: flex;\n flex-direction: column;\n height: 100%;\n position: relative;\n }\n\n #title-image-container {\n display: flex;\n flex: 1;\n flex-direction: column;\n padding: 0.5rem 0.5rem 0 0.5rem;\n }\n\n #item-title {\n color: #2c2c2c;\n font-size: 1.6rem;\n text-align: center;\n margin-top: 0rem;\n margin-bottom: 0.5rem;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-height: 2rem;\n height: 4rem;\n }\n\n #item-image-container {\n display: flex;\n justify-content: center;\n flex: 1;\n }\n\n .hidden {\n display: none;\n }\n\n #container:hover > #title-image-container > .item-title {\n text-decoration: underline;\n }\n\n /** this is a workaround for Safari 15 where the hover effects are not working */\n #title-image-container:hover > #item-title {\n text-decoration: underline;\n }\n\n #container:hover > #item-title {\n background-color: #fcfcfc;\n }\n\n .item-creator {\n display: flex;\n justify-content: center;\n align-items: flex-end; /* Important to start text from bottom */\n height: 3rem;\n padding-top: 1rem;\n }\n\n .truncated {\n flex: 1;\n min-width: 0; /* Important for long words! */\n }\n\n .truncated span {\n font-size: 1.4rem;\n color: #2c2c2c;\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n word-wrap: break-word;\n line-height: 2rem;\n text-align: center;\n }\n\n .hr {\n border: 0.5px solid #ccc;\n }\n\n #item-stats-container {\n align-items: center;\n display: flex;\n height: 5.5rem;\n padding-left: 1rem;\n padding-right: 0.5rem;\n }\n\n #stats-holder {\n align-items: center;\n display: flex;\n flex: 1;\n justify-content: space-evenly;\n text-align: center;\n width: 100%;\n }\n\n svg {\n height: 10px;\n width: 10px;\n }\n\n .status-text {\n font-size: 14px;\n color: #2c2c2c;\n margin: auto;\n display: block;\n text-align: center;\n }\n\n .col {\n width: 25%;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"item-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/item-tile.ts"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,EAAE,GAAG,EAAkB,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAIzD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,yBAAyB,CAAC;AAGjC,IAAa,QAAQ,GAArB,MAAa,QAAS,SAAQ,UAAU;IAAxC;;QAC+B,aAAQ,GAAG,KAAK,CAAC;IAwIhD,CAAC;IAlIC,MAAM;;QACJ,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAC;QACpC,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,CAAC;QAExC,OAAO,IAAI,CAAA;;;;0CAI2B,SAAS,CACrC,SAAS,CACV,IAAI,SAAS;;;;;uBAKH,IAAI,CAAC,KAAK;8BACH,IAAI,CAAC,YAAY;;cAEjC,IAAI,CAAC,mBAAmB;;;;cAIxB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA,iBAAiB,WAAW,SAAS,CAAC,CAAC,CAAC,OAAO;;;;;uBAKxD,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;uBACrB,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;sBACtB,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ;0BAChB,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY;;;;KAI7C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAY,mBAAmB;;QAC7B,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,CAAA,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,cAAc,CAAA,EAAE;YAC7D,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,IAAI,CAAA;;oBAEK,IAAI,CAAC,QAAQ;yBACR,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa;0BACxB,MAAA,IAAI,CAAC,KAAK,0CAAE,cAAc;;KAE/C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0ET,CAAC;IACJ,CAAC;CACF,CAAA;AAxI8B;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0CAAkB;AAElB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uCAAmB;AAElB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAAuB;AALvC,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAyIpB;SAzIY,QAAQ","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { css, CSSResultGroup, html, LitElement, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport { TileModel } from '../../models';\n\nimport '../mediatype-icon';\nimport '../item-image';\nimport './tile-stats';\nimport '../overlay/text-overlay';\n\n@customElement('item-tile')\nexport class ItemTile extends LitElement {\n @property({ type: Boolean }) loggedIn = false;\n\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: String }) baseImageUrl?: string;\n\n render() {\n const itemTitle = this.model?.title;\n const itemCreator = this.model?.creator;\n\n return html`\n <div class=\"container\">\n <div class=\"item-info\">\n <div id=\"title\">\n <h1 class=\"truncated\" title=${ifDefined(\n itemTitle\n )}>${itemTitle}</h1>\n </div>\n\n <div id=\"image\">\n <item-image\n .model=${this.model}\n .baseImageUrl=${this.baseImageUrl}>\n </item-image>\n ${this.textOverlayTemplate}\n </div>\n\n <div class=\"created-by truncated\">\n ${itemCreator ? html`<span>by&nbsp;${itemCreator}</span>` : nothing}\n </div>\n </div>\n\n <tile-stats \n .mediatype=${this.model?.mediatype}\n .viewCount=${this.model?.viewCount}\n .favCount=${this.model?.favCount}\n .commentCount=${this.model?.commentCount}>\n </tile-stats>\n </div>\n </div>\n `;\n }\n\n /**\n * Templates\n */\n private get textOverlayTemplate() {\n if (!this.model?.loginRequired && !this.model?.contentWarning) {\n return nothing;\n }\n return html`\n <text-overlay\n .loggedIn=${this.loggedIn}\n .loginRequired=${this.model?.loginRequired}\n .contentWarning=${this.model?.contentWarning}\n ></text-overlay>\n `;\n }\n\n static get styles(): CSSResultGroup {\n return css`\n .container {\n background-color: #ffffff;\n border-radius: var(--collectionTileCornerRadius, 4px);\n box-shadow: 1px 1px 2px 0px;\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .item-info {\n padding: 5px 5px 0 5px;\n flex-grow: 1;\n }\n\n #title {\n flex-shrink: 0;\n }\n\n #image {\n display: flex;\n justify-content: center;\n flex: 1;\n height: 16rem;\n position: relative;\n }\n\n .hidden {\n display: none;\n }\n\n .container:hover > .item-info > #title > .truncated {\n text-decoration: underline;\n }\n\n /** this is a workaround for Safari 15 where the hover effects are not working */\n #title:hover > .truncated {\n text-decoration: underline;\n }\n\n .created-by {\n display: flex;\n justify-content: center;\n align-items: flex-end; /* Important to start text from bottom */\n height: 3rem;\n padding-top: 1rem;\n margin-top: 5px;\n }\n\n .truncated {\n flex: 1;\n color: #2c2c2c;\n min-width: 0; /* Important for long words! */\n text-align: center;\n line-height: 2rem;\n text-overflow: ellipsis;\n overflow: hidden;\n word-wrap: break-word;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n\n .truncated span {\n font-size: 1.4rem;\n display: -webkit-box;\n }\n\n h1.truncated {\n margin-top: 0rem;\n margin-bottom: 0.5rem;\n font-size: 1.6rem;\n height: 4rem;\n display: -webkit-box;\n }\n `;\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { CSSResultGroup, LitElement } from 'lit';
2
+ export declare class TileStats extends LitElement {
3
+ mediatype?: string;
4
+ itemCount?: number;
5
+ viewCount?: number;
6
+ favCount?: number;
7
+ commentCount?: number;
8
+ render(): import("lit-html").TemplateResult<1>;
9
+ static get styles(): CSSResultGroup;
10
+ }