@internetarchive/collection-browser 4.8.1-webdev-9227.2 → 4.8.1-webdev-9227.3

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.
@@ -2,6 +2,7 @@ import { css, html, nothing } from 'lit';
2
2
  import eyeIcon from '../assets/img/icons/eye';
3
3
  import eyeClosedIcon from '../assets/img/icons/eye-closed';
4
4
  import { msg, str } from '@lit/localize';
5
+ import { getLocale } from '../utils/get-locale';
5
6
  import { facetPluralTitles, facetTitles, } from '../models';
6
7
  /**
7
8
  * Returns the composed facet state corresponding to a positive or negative facet's checked state
@@ -31,7 +32,9 @@ export function facetRowTemplate({ facetType, bucket, collectionTitles, omitHide
31
32
  : html `<a href="/details/${bucket.key}">
32
33
  ${collectionTitles?.get(bucket.key) ?? bucket.key}
33
34
  </a> `;
34
- const bucketCountText = bucket.count > 0 ? bucket.count.toLocaleString() : '';
35
+ const bucketCountText = bucket.count > 0
36
+ ? new Intl.NumberFormat(getLocale()).format(bucket.count)
37
+ : '';
35
38
  const facetHidden = bucket.state === 'hidden';
36
39
  const facetSelected = bucket.state === 'selected';
37
40
  const groupTitle = facetTitles[facetType];
@@ -43,7 +46,7 @@ export function facetRowTemplate({ facetType, bucket, collectionTitles, omitHide
43
46
  const hideText = msg(str `Hide ${titleText}`);
44
47
  const unhideText = msg(str `Unhide ${titleText}`);
45
48
  const showHideText = facetHidden ? unhideText : hideText;
46
- const ariaLabel = msg(str `${titleText}, ${bucket.count} results`);
49
+ const ariaLabel = msg(str `${titleText}, ${new Intl.NumberFormat(getLocale()).format(bucket.count)} results`);
47
50
  const showOnlyClicked = onCheckboxClick
48
51
  ? (e) => onCheckboxClick(e, false)
49
52
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"facet-row-template.js","sourceRoot":"","sources":["../../../src/collection-facets/facet-row-template.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, nothing, TemplateResult } from 'lit';\nimport eyeIcon from '../assets/img/icons/eye';\nimport eyeClosedIcon from '../assets/img/icons/eye-closed';\nimport { msg, str } from '@lit/localize';\nimport {\n facetPluralTitles,\n facetTitles,\n type FacetOption,\n type FacetBucket,\n type FacetState,\n} from '../models';\nimport type { CollectionTitles } from '../data-source/models';\n\nexport type FacetRowTemplateOptions = {\n /** The name of the facet group to which this facet belongs (e.g., \"mediatype\") */\n facetType: FacetOption;\n\n /** The facet bucket containing details about the state, count, and key for this row */\n bucket: FacetBucket;\n\n /** The collection name cache for converting collection identifiers to titles */\n collectionTitles?: CollectionTitles;\n\n /**\n * Whether to omit the negative/hide button from this facet row if possible.\n * Has no effect if the facet bucket is itself hidden, in which case the hide\n * button *must* be shown to represent the state accurately.\n */\n omitHideButton?: boolean;\n\n /**\n * Called when either checkbox is clicked. Leave it out when an ancestor\n * handles the rows' clicks by delegation instead.\n */\n onCheckboxClick?: (e: Event, negative: boolean) => void;\n};\n\n/**\n * Returns the composed facet state corresponding to a positive or negative facet's checked state\n */\nexport function getFacetState(checked: boolean, negative: boolean): FacetState {\n if (!checked) return 'none';\n return negative ? 'hidden' : 'selected';\n}\n\n/**\n * Template for a full facet row, including the positive/negative checks,\n * the display name, and the count. The row is plain DOM so that long lists\n * (e.g. the More... dialog) can render many rows without creating an\n * element per row. Render it inside a shadow root that includes\n * `facetRowStyles`.\n */\nexport function facetRowTemplate({\n facetType,\n bucket,\n collectionTitles,\n omitHideButton = false,\n onCheckboxClick,\n}: FacetRowTemplateOptions): TemplateResult {\n const showOnlyCheckboxId = `${facetType}:${bucket.key}-show-only`;\n const negativeCheckboxId = `${facetType}:${bucket.key}-negative`;\n\n const extraNoteSpan = bucket.extraNote\n ? html`<span class=\"facet-note\">${bucket.extraNote}</span>`\n : nothing;\n\n // For collections, we render the collection title as a link.\n // For other facet types, we just have a static value to use.\n const bucketTextDisplay =\n facetType !== 'collection'\n ? html`${bucket.displayText ?? bucket.key} ${extraNoteSpan}`\n : html`<a href=\"/details/${bucket.key}\">\n ${collectionTitles?.get(bucket.key) ?? bucket.key}\n </a> `;\n\n const bucketCountText = bucket.count > 0 ? bucket.count.toLocaleString() : '';\n\n const facetHidden = bucket.state === 'hidden';\n const facetSelected = bucket.state === 'selected';\n\n const groupTitle = facetTitles[facetType];\n const groupPluralTitle = facetPluralTitles[facetType];\n const titleText = `${groupTitle}: ${bucket.displayText ?? bucket.key}`;\n const onlyShowText = facetSelected\n ? msg(str`Show all ${groupPluralTitle}`)\n : msg(str`Only show ${titleText}`);\n const hideText = msg(str`Hide ${titleText}`);\n const unhideText = msg(str`Unhide ${titleText}`);\n const showHideText = facetHidden ? unhideText : hideText;\n const ariaLabel = msg(str`${titleText}, ${bucket.count} results`);\n\n const showOnlyClicked = onCheckboxClick\n ? (e: Event) => onCheckboxClick(e, false)\n : undefined;\n const hideClicked = onCheckboxClick\n ? (e: Event) => onCheckboxClick(e, true)\n : undefined;\n\n // Added data-testid for Playwright testing\n return html`\n <div class=\"facet-row-container\">\n <div class=\"facet-checkboxes\">\n <input\n type=\"checkbox\"\n .name=${facetType}\n .value=${bucket.key}\n @click=${showOnlyClicked}\n .checked=${facetSelected}\n class=\"select-facet-checkbox\"\n title=${onlyShowText}\n id=${showOnlyCheckboxId}\n data-testid=${showOnlyCheckboxId}\n />\n <div\n class=\"hide-facet-container\"\n ?hidden=${omitHideButton && !facetHidden}\n >\n <input\n type=\"checkbox\"\n id=${negativeCheckboxId}\n .name=${facetType}\n .value=${bucket.key}\n @click=${hideClicked}\n .checked=${facetHidden}\n class=\"hide-facet-checkbox\"\n />\n <label\n for=${negativeCheckboxId}\n class=\"hide-facet-icon${facetHidden ? ' active' : ''}\"\n title=${showHideText}\n data-testid=${negativeCheckboxId}\n >\n <span class=\"sr-only\">${showHideText}</span>\n <span class=\"eye eye-open\">${eyeIcon}</span>\n <span class=\"eye eye-closed\">${eyeClosedIcon}</span>\n </label>\n </div>\n </div>\n <label\n for=${showOnlyCheckboxId}\n class=\"facet-info-display\"\n title=${onlyShowText}\n aria-label=${ariaLabel}\n >\n <div class=\"facet-title\">${bucketTextDisplay}</div>\n <div class=\"facet-count\">${bucketCountText}</div>\n </label>\n </div>\n `;\n}\n\nconst facetRowBorderTop = css`var(--facet-row-border-top, 1px solid transparent)`;\nconst facetRowBorderBottom = css`var(--facet-row-border-bottom, 1px solid transparent)`;\nconst checkboxHeight = css`15px`;\n\n/**\n * Styles for `facetRowTemplate`. Include `srOnlyStyle` alongside these.\n */\nexport const facetRowStyles = css`\n .facet-checkboxes {\n margin: 0 5px 0 0;\n display: flex;\n height: ${checkboxHeight};\n }\n .facet-checkboxes input:first-child {\n margin-right: 5px;\n }\n .facet-checkboxes input {\n height: ${checkboxHeight};\n width: ${checkboxHeight};\n margin: 0;\n }\n .facet-row-container {\n display: flex;\n font-weight: 500;\n font-size: 1.2rem;\n margin: 0 auto;\n padding: 0.25rem 0;\n height: auto;\n border-top: ${facetRowBorderTop};\n border-bottom: ${facetRowBorderBottom};\n }\n .facet-info-display {\n display: flex;\n flex: 1 1 0%;\n cursor: pointer;\n flex-wrap: wrap;\n }\n .facet-title {\n word-break: break-word;\n display: inline-block;\n flex: 1 1 0%;\n }\n .facet-note {\n color: #bbb;\n }\n .facet-count {\n text-align: right;\n }\n .select-facet-checkbox {\n cursor: pointer;\n display: inline-block;\n }\n .hide-facet-checkbox {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n }\n .hide-facet-checkbox:focus-visible + .hide-facet-icon {\n outline-style: auto;\n outline-offset: 2px;\n }\n .hide-facet-icon {\n width: ${checkboxHeight};\n height: ${checkboxHeight};\n cursor: pointer;\n display: flex;\n }\n .eye {\n width: ${checkboxHeight};\n height: ${checkboxHeight};\n opacity: 0.3;\n }\n .hide-facet-icon:hover .eye,\n .active .eye {\n opacity: 1;\n }\n .hide-facet-icon:hover .eye-open,\n .hide-facet-icon .eye-closed {\n display: none;\n }\n .hide-facet-icon:hover .eye-closed,\n .hide-facet-icon.active .eye-closed {\n display: inline;\n }\n .hide-facet-icon.active .eye-open {\n display: none;\n }\n .sorting-icon {\n cursor: pointer;\n }\n\n a:link,\n a:visited {\n text-decoration: none;\n color: var(--ia-theme-link-color, #4b64ff);\n }\n a:hover {\n text-decoration: underline;\n }\n`;\n"]}
1
+ {"version":3,"file":"facet-row-template.js","sourceRoot":"","sources":["../../../src/collection-facets/facet-row-template.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, nothing, TemplateResult } from 'lit';\nimport eyeIcon from '../assets/img/icons/eye';\nimport eyeClosedIcon from '../assets/img/icons/eye-closed';\nimport { msg, str } from '@lit/localize';\nimport { getLocale } from '../utils/get-locale';\nimport {\n facetPluralTitles,\n facetTitles,\n type FacetOption,\n type FacetBucket,\n type FacetState,\n} from '../models';\nimport type { CollectionTitles } from '../data-source/models';\n\nexport type FacetRowTemplateOptions = {\n /** The name of the facet group to which this facet belongs (e.g., \"mediatype\") */\n facetType: FacetOption;\n\n /** The facet bucket containing details about the state, count, and key for this row */\n bucket: FacetBucket;\n\n /** The collection name cache for converting collection identifiers to titles */\n collectionTitles?: CollectionTitles;\n\n /**\n * Whether to omit the negative/hide button from this facet row if possible.\n * Has no effect if the facet bucket is itself hidden, in which case the hide\n * button *must* be shown to represent the state accurately.\n */\n omitHideButton?: boolean;\n\n /**\n * Called when either checkbox is clicked. Leave it out when an ancestor\n * handles the rows' clicks by delegation instead.\n */\n onCheckboxClick?: (e: Event, negative: boolean) => void;\n};\n\n/**\n * Returns the composed facet state corresponding to a positive or negative facet's checked state\n */\nexport function getFacetState(checked: boolean, negative: boolean): FacetState {\n if (!checked) return 'none';\n return negative ? 'hidden' : 'selected';\n}\n\n/**\n * Template for a full facet row, including the positive/negative checks,\n * the display name, and the count. The row is plain DOM so that long lists\n * (e.g. the More... dialog) can render many rows without creating an\n * element per row. Render it inside a shadow root that includes\n * `facetRowStyles`.\n */\nexport function facetRowTemplate({\n facetType,\n bucket,\n collectionTitles,\n omitHideButton = false,\n onCheckboxClick,\n}: FacetRowTemplateOptions): TemplateResult {\n const showOnlyCheckboxId = `${facetType}:${bucket.key}-show-only`;\n const negativeCheckboxId = `${facetType}:${bucket.key}-negative`;\n\n const extraNoteSpan = bucket.extraNote\n ? html`<span class=\"facet-note\">${bucket.extraNote}</span>`\n : nothing;\n\n // For collections, we render the collection title as a link.\n // For other facet types, we just have a static value to use.\n const bucketTextDisplay =\n facetType !== 'collection'\n ? html`${bucket.displayText ?? bucket.key} ${extraNoteSpan}`\n : html`<a href=\"/details/${bucket.key}\">\n ${collectionTitles?.get(bucket.key) ?? bucket.key}\n </a> `;\n\n const bucketCountText =\n bucket.count > 0\n ? new Intl.NumberFormat(getLocale()).format(bucket.count)\n : '';\n\n const facetHidden = bucket.state === 'hidden';\n const facetSelected = bucket.state === 'selected';\n\n const groupTitle = facetTitles[facetType];\n const groupPluralTitle = facetPluralTitles[facetType];\n const titleText = `${groupTitle}: ${bucket.displayText ?? bucket.key}`;\n const onlyShowText = facetSelected\n ? msg(str`Show all ${groupPluralTitle}`)\n : msg(str`Only show ${titleText}`);\n const hideText = msg(str`Hide ${titleText}`);\n const unhideText = msg(str`Unhide ${titleText}`);\n const showHideText = facetHidden ? unhideText : hideText;\n const ariaLabel = msg(\n str`${titleText}, ${new Intl.NumberFormat(getLocale()).format(bucket.count)} results`,\n );\n\n const showOnlyClicked = onCheckboxClick\n ? (e: Event) => onCheckboxClick(e, false)\n : undefined;\n const hideClicked = onCheckboxClick\n ? (e: Event) => onCheckboxClick(e, true)\n : undefined;\n\n // Added data-testid for Playwright testing\n return html`\n <div class=\"facet-row-container\">\n <div class=\"facet-checkboxes\">\n <input\n type=\"checkbox\"\n .name=${facetType}\n .value=${bucket.key}\n @click=${showOnlyClicked}\n .checked=${facetSelected}\n class=\"select-facet-checkbox\"\n title=${onlyShowText}\n id=${showOnlyCheckboxId}\n data-testid=${showOnlyCheckboxId}\n />\n <div\n class=\"hide-facet-container\"\n ?hidden=${omitHideButton && !facetHidden}\n >\n <input\n type=\"checkbox\"\n id=${negativeCheckboxId}\n .name=${facetType}\n .value=${bucket.key}\n @click=${hideClicked}\n .checked=${facetHidden}\n class=\"hide-facet-checkbox\"\n />\n <label\n for=${negativeCheckboxId}\n class=\"hide-facet-icon${facetHidden ? ' active' : ''}\"\n title=${showHideText}\n data-testid=${negativeCheckboxId}\n >\n <span class=\"sr-only\">${showHideText}</span>\n <span class=\"eye eye-open\">${eyeIcon}</span>\n <span class=\"eye eye-closed\">${eyeClosedIcon}</span>\n </label>\n </div>\n </div>\n <label\n for=${showOnlyCheckboxId}\n class=\"facet-info-display\"\n title=${onlyShowText}\n aria-label=${ariaLabel}\n >\n <div class=\"facet-title\">${bucketTextDisplay}</div>\n <div class=\"facet-count\">${bucketCountText}</div>\n </label>\n </div>\n `;\n}\n\nconst facetRowBorderTop = css`var(--facet-row-border-top, 1px solid transparent)`;\nconst facetRowBorderBottom = css`var(--facet-row-border-bottom, 1px solid transparent)`;\nconst checkboxHeight = css`15px`;\n\n/**\n * Styles for `facetRowTemplate`. Include `srOnlyStyle` alongside these.\n */\nexport const facetRowStyles = css`\n .facet-checkboxes {\n margin: 0 5px 0 0;\n display: flex;\n height: ${checkboxHeight};\n }\n .facet-checkboxes input:first-child {\n margin-right: 5px;\n }\n .facet-checkboxes input {\n height: ${checkboxHeight};\n width: ${checkboxHeight};\n margin: 0;\n }\n .facet-row-container {\n display: flex;\n font-weight: 500;\n font-size: 1.2rem;\n margin: 0 auto;\n padding: 0.25rem 0;\n height: auto;\n border-top: ${facetRowBorderTop};\n border-bottom: ${facetRowBorderBottom};\n }\n .facet-info-display {\n display: flex;\n flex: 1 1 0%;\n cursor: pointer;\n flex-wrap: wrap;\n }\n .facet-title {\n word-break: break-word;\n display: inline-block;\n flex: 1 1 0%;\n }\n .facet-note {\n color: #bbb;\n }\n .facet-count {\n text-align: right;\n }\n .select-facet-checkbox {\n cursor: pointer;\n display: inline-block;\n }\n .hide-facet-checkbox {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n }\n .hide-facet-checkbox:focus-visible + .hide-facet-icon {\n outline-style: auto;\n outline-offset: 2px;\n }\n .hide-facet-icon {\n width: ${checkboxHeight};\n height: ${checkboxHeight};\n cursor: pointer;\n display: flex;\n }\n .eye {\n width: ${checkboxHeight};\n height: ${checkboxHeight};\n opacity: 0.3;\n }\n .hide-facet-icon:hover .eye,\n .active .eye {\n opacity: 1;\n }\n .hide-facet-icon:hover .eye-open,\n .hide-facet-icon .eye-closed {\n display: none;\n }\n .hide-facet-icon:hover .eye-closed,\n .hide-facet-icon.active .eye-closed {\n display: inline;\n }\n .hide-facet-icon.active .eye-open {\n display: none;\n }\n .sorting-icon {\n cursor: pointer;\n }\n\n a:link,\n a:visited {\n text-decoration: none;\n color: var(--ia-theme-link-color, #4b64ff);\n }\n a:hover {\n text-decoration: underline;\n }\n`;\n"]}
@@ -9,9 +9,7 @@ export declare const templates: {
9
9
  s078f25f106da59fe: string;
10
10
  s08118dc8355966af: string;
11
11
  s0864063d5cb2f8f1: string;
12
- s087d0e07b52a8c19: import("@lit/localize").StrResult;
13
- s087d1507b52a97fe: import("@lit/localize").StrResult;
14
- s087d1707b52a9b64: import("@lit/localize").StrResult;
12
+ s088e3807b53946aa: string;
15
13
  s089297421a0eedd6: string;
16
14
  s08e6bd98452e6bb9: string;
17
15
  s09134b07b5aacab4: string;
@@ -94,7 +92,6 @@ export declare const templates: {
94
92
  s76f86c7568d51abc: string;
95
93
  s77fd410a7f33bb55: string;
96
94
  s7abf4f48abeedddb: string;
97
- s7ac239996dd6d909: import("@lit/localize").StrResult;
98
95
  s7cd7aa6578a69dab: string;
99
96
  s7da36f2d9999ec0f: string;
100
97
  s7f3437809d931336: string;
@@ -178,7 +175,6 @@ export declare const templates: {
178
175
  sd8c92230dc431a1b: import("@lit/localize").StrResult;
179
176
  sdbf79727b3cfcbae: string;
180
177
  sdd1743c69f17706e: import("@lit/localize").StrResult;
181
- sddc27cc22328fbf0: import("@lit/localize").StrResult;
182
178
  sdf69091630b88e37: import("@lit/localize").StrResult;
183
179
  sdf6c22ec03252c91: import("@lit/localize").StrResult;
184
180
  se0ce95409b2f48b1: import("@lit/localize").StrResult;
@@ -196,7 +192,6 @@ export declare const templates: {
196
192
  sefcf950b3cc4fc3b: string;
197
193
  sf40c9c2d1e9606c6: string;
198
194
  sf4ef1c44841c44e6: string;
199
- sf95b96048b8e537d: import("@lit/localize").StrResult;
200
195
  sfaa12ceed0995556: import("@lit/localize").StrResult;
201
196
  sfc4264fee3bf9b72: string;
202
197
  sfcc069f51592918b: string;
@@ -23,9 +23,7 @@ export const templates = {
23
23
  s078f25f106da59fe: `Borrar todos los filtros`,
24
24
  s08118dc8355966af: `Tu búsqueda no coincide con ningún elemento de esta colección. Prueba con otras palabras o una búsqueda más general.`,
25
25
  s0864063d5cb2f8f1: `Tipo de medio`,
26
- s087d0e07b52a8c19: str `${0}B`,
27
- s087d1507b52a97fe: str `${0}K`,
28
- s087d1707b52a9b64: str `${0}M`,
26
+ s088e3807b53946aa: `es`,
29
27
  s089297421a0eedd6: `reseñas`,
30
28
  s08e6bd98452e6bb9: `Audio`,
31
29
  s09134b07b5aacab4: `Por`,
@@ -108,7 +106,6 @@ export const templates = {
108
106
  s76f86c7568d51abc: `Lo sentimos, no se pudieron cargar estos valores. Inténtalo de nuevo más tarde.`,
109
107
  s77fd410a7f33bb55: `Los filtros no están disponibles temporalmente.`,
110
108
  s7abf4f48abeedddb: `Nota: este elemento puede tardar unos minutos en dejar de aparecer en tu lista de favoritos.`,
111
- s7ac239996dd6d909: str `${0} millones`,
112
109
  s7cd7aa6578a69dab: `Programa`,
113
110
  s7da36f2d9999ec0f: `Cita de TV`,
114
111
  s7f3437809d931336: `Reseñas`,
@@ -192,7 +189,6 @@ export const templates = {
192
189
  sd8c92230dc431a1b: str `${0}, ${1} resultados`,
193
190
  sdbf79727b3cfcbae: `Patrocinadores`,
194
191
  sdd1743c69f17706e: str `${0} gigabytes`,
195
- sddc27cc22328fbf0: str `${0} mil millones`,
196
192
  sdf69091630b88e37: str `${0} megabyte`,
197
193
  sdf6c22ec03252c91: str `Filtrar ${0}`,
198
194
  se0ce95409b2f48b1: str `${0} petabyte`,
@@ -210,7 +206,6 @@ export const templates = {
210
206
  sefcf950b3cc4fc3b: `Idioma`,
211
207
  sf40c9c2d1e9606c6: `Selecciona los filtros`,
212
208
  sf4ef1c44841c44e6: `Tipos de medio`,
213
- sf95b96048b8e537d: str `${0} mil`,
214
209
  sfaa12ceed0995556: str `Archivista desde ${0}`,
215
210
  sfc4264fee3bf9b72: `Difuminado`,
216
211
  sfcc069f51592918b: `Películas de __QUERY`,
@@ -1 +1 @@
1
- {"version":3,"file":"es.js","sourceRoot":"","sources":["../../../src/locales/es.ts"],"names":[],"mappings":"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","sourcesContent":["// Do not modify this file by hand!\n// Re-generate this file by running lit-localize\n\nimport { html } from 'lit';\nimport { str } from '@lit/localize';\n\n/* eslint-disable no-irregular-whitespace */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const templates = {\n h13064d5156c615de: html`El motor de búsqueda encontró un error al cargar esta\n colección. Si el problema continúa, avísanos en\n <a href=\"mailto:info@archive.org\">info@archive.org</a>.`,\n h920c92659184f0bc: html`El motor de búsqueda encontró un error, que puede\n tener que ver con tu búsqueda.\n <a\n href=\"https://help.archive.org/help/search-building-powerful-complex-queries/\"\n >\n Consejos para construir búsquedas.\n </a> `,\n s01a8d1dbd588ac19: `Mostrar la página anterior de valores`,\n s027d72711d00e2ff: `Estadísticas de la cuenta`,\n s03c4a59d394f8285: `Deseleccionar todo`,\n s04a2e4a6caf07c66: `Selecciona los elementos que quieres quitar`,\n s05b4f5c0ceaf9a4c: `Creadores`,\n s078f25f106da59fe: `Borrar todos los filtros`,\n s08118dc8355966af: `Tu búsqueda no coincide con ningún elemento de esta colección. Prueba con otras palabras o una búsqueda más general.`,\n s0864063d5cb2f8f1: `Tipo de medio`,\n s087d0e07b52a8c19: str`${0}B`,\n s087d1507b52a97fe: str`${0}K`,\n s087d1707b52a9b64: str`${0}M`,\n s089297421a0eedd6: `reseñas`,\n s08e6bd98452e6bb9: `Audio`,\n s09134b07b5aacab4: `Por`,\n s09352207b5c76b6f: `TV`,\n s10badbbb7458756b: str`Buscar ${0}…`,\n s10c473ba9d85039c: `Aplicar el rango de fechas`,\n s1228605ee65ddefa: str`${0} resultado`,\n s125a86b2f45bbb25: str`${0} elementos`,\n s1348f0497a99fe1b: `Quitar este elemento de la lista`,\n s1649fb48f787df05: str`${0}: ${1} resultados`,\n s169b68b0d70d64f4: str`${0} terabytes`,\n s16a6528db8e36fe5: `Mostrar la página siguiente de valores`,\n s1895d4e46cff35f9: `Ocultos:`,\n s190e4571d3f17068: str`${0} zettabytes`,\n s1aa21b9c0ffa83c2: `Filtrar por la letra del título`,\n s1b6ac21f2337d642: `Fecha de reseña`,\n s2037bf213b8e419b: `Error: no se pudieron quitar los elementos`,\n s22759aae8f547d20: `Borrar el filtro`,\n s2492f5fb1b05b45e: `Texto`,\n s24d45627f1e95f7a: `favoritos`,\n s26a52753e6884683: `Mostrar el panel de filtros`,\n s2805bb246d30384a: `Seleccionados:`,\n s2c6298bfef78c37e: `Vista de mosaico`,\n s2ceb11be2290bb1b: `Cancelar`,\n s2e505ec7b158a1a6: str`${0} petabytes`,\n s320992e58900cc86: str`${0} seleccionados`,\n s321d1672949e1c4c: `filtros`,\n s322628256693c6d8: `No se pudieron cargar las opciones, inténtalo de nuevo más tarde`,\n s3297cc6f08d7b40a: `Imágenes de __QUERY`,\n s350e83d078cf47d6: `Gestionar los elementos en Item Manager`,\n s355c4153fe27a589: `No se han encontrado valores que coincidan.`,\n s3659ff5488b62143: `Nota: estos elementos pueden tardar unos minutos en dejar de aparecer en tu lista de archivos web.`,\n s37c1658491ef819c: str`${0} yottabyte`,\n s387a4a41718122cb: str`${0} resultados`,\n s3d93f9ea0c5a13fa: `Imagen`,\n s3f5390ecd7d14626: `Colecciones`,\n s40d76f1f51639ec0: `Persona`,\n s42b68a1842b8ae58: `Idiomas`,\n s4369ef9b51b71a0b: `Pulsa la flecha abajo para ver la vista previa del elemento`,\n s45a359a3fa397256: `Vista de lista`,\n s46728ac92301a821: `Estadísticas del elemento`,\n s471bd7615c164fb6: `Año de publicación`,\n s47d3bb78437e7f74: `Radio`,\n s4854cd48f30ff8ee: `Personas`,\n s4a8d47364336fa6e: str`Mostrar solo ${0}`,\n s4bfc4d609ee1ab33: `Archivado`,\n s4c1025a7d399cd6b: `Más filtros de:`,\n s4d53add3007ee36d: str`${0} kilobytes`,\n s4d5665b24e24b9e3: `Vista de lista compacta`,\n s4e1b7bc897f8c089: `Quitar elementos`,\n s4f11a5992a021fa2: `Filtrar por cadena`,\n s4f7142f34f35ed6d: `Inicia sesión para ver este elemento`,\n s5523f131e71b785c: str`${0} exabytes`,\n s5643568b7c038f43: `Resultados de la búsqueda`,\n s576d4967e1ff7986: str`${0} bytes`,\n s5808b4b4c999bd8c: str`${0} megabytes`,\n s583ff43301fa7817: `Nota: estos elementos pueden tardar unos minutos en dejar de aparecer en tu lista de favoritos.`,\n s5b528a7f6c0c40af: `Volumen`,\n s5c225a179e34f704: `Valoración media`,\n s5c73979f691e7fcc: `volumen|número`,\n s5d929ff1619ac0c9: `Buscar`,\n s5f43af3669b1e098: `Fuente`,\n s60b34c3c17dc35bd: `Años`,\n s60ca4026935af5bd: `Forma parte de`,\n s621283dc7bb413cf: `Fecha Agregada`,\n s640f3c29000a4c59: str`Mostrar todo: ${0}`,\n s6471716d93a86047: str`${0} exabyte`,\n s675ca32d5ae11dcc: `Nota: estos elementos pueden tardar unos minutos en dejar de aparecer en tu lista de subidas.`,\n s6793629c1db37a66: str`por ${0}`,\n s6a3c8edbec8d73b4: str`${0} elemento`,\n s6b35590c360852a5: `Fecha de archivo`,\n s6be3ee5386181ff1: `Anuncio político`,\n s6d3b5b0561ba34c9: `Publicado`,\n s6e42e5e330244f67: `Nota: este elemento puede tardar unos minutos en dejar de aparecer en tu lista de archivos web.`,\n s6fc9985cacb3eaa2: str`Ver ${0}`,\n s70a5d875c5467e57: `Cita`,\n s71a5c9f4b68ef4d4: `Cantidad`,\n s74aa0119e62b2b51: `Web`,\n s74cba6ca50670aa9: str`${0} gigabyte`,\n s76f86c7568d51abc: `Lo sentimos, no se pudieron cargar estos valores. Inténtalo de nuevo más tarde.`,\n s77fd410a7f33bb55: `Los filtros no están disponibles temporalmente.`,\n s7abf4f48abeedddb: `Nota: este elemento puede tardar unos minutos en dejar de aparecer en tu lista de favoritos.`,\n s7ac239996dd6d909: str`${0} millones`,\n s7cd7aa6578a69dab: `Programa`,\n s7da36f2d9999ec0f: `Cita de TV`,\n s7f3437809d931336: `Reseñas`,\n s819258a281266f50: `visualizaciones semanales`,\n s846b3790b6e25c1c: `Cuenta`,\n s84d3dbcd121dd01b: `descendente`,\n s85186a61e0d55bac: `Vídeo`,\n s879330fe73e46610: str`Deseleccionar ${0}`,\n s8865f02d9ebbd0f5: `Temas`,\n s890e983a7be64da4: `Resultado`,\n s8b153325befe824b: `Fecha de publicación`,\n s8c6eb24d88673ed6: `Obras escritas de __QUERY`,\n s8ca015950940c078: `clips`,\n s8cda828dac449ea5: `Borrar todo`,\n s8e68b824b99140a1: `ascendente`,\n s8ef9b6c2af31a130: `Visualizaciones semanales`,\n s8f87ca21cd0e0907: str`Ver más: ${0}`,\n s8fd53d9e642d729c: `Ocultar el panel de filtros`,\n s9027f0f301703c8b: str`Ocultar ${0}`,\n s90a8434ed9c2a23f: `Verificación de datos`,\n s919c97efeda9854f: str`${0} terabyte`,\n s91c95e3f33defa93: `Tipo de medio:`,\n s963a29c7019722e9: `Patrocinador`,\n s984a5e18d85b6d57: str`${0} ${1}`,\n s99181a7e454a7a81: `Ampliar el histograma de fechas`,\n s99f110d27e30b289: `Título`,\n s9b288e9b7f945b0c: `Ordenar por:`,\n s9ce6e713435f440c: `Filtrar por la letra del creador`,\n s9cfa7823fc62aba3: `Buscando…`,\n s9dc9dd05aab83a09: `Tipo de clip`,\n s9fb0e3bc7de4bf8f: `Siempre disponible`,\n sa052f7f79d739859: `Anuncio político de TV`,\n sa4610b7e117b7870: `Para empezar a buscar, escribe un término en el cuadro de arriba y pulsa \"Ir\".`,\n sa471309f46635717: `Verificación de datos de TV`,\n sa508c606cd13dcc5: `Filtrar por programa`,\n sa63f9a6193ff70ad: `Opciones de orden`,\n sa666712981e141a5: `Fecha de favorito`,\n sa6f2645578b2d2bc: `Año`,\n sa731b8677f830182: `El contenido puede ser inapropiado`,\n sa7eea45fe1e4d231: `Colección`,\n sa8beb6b1182241ac: `Filtros`,\n sab1e212a875eb996: `Tu búsqueda no coincide con ningún elemento del Archive. Prueba con otras palabras o una búsqueda más general.`,\n sabc57021558fd9c2: `(Búsqueda guardada en favoritos)`,\n sac8256732f2ee1e5: `Datos`,\n sad216f43f9f9c91d: str`${0} yottabytes`,\n saf30fc1eade20268: `Relevancia`,\n sb0ff4efb0328eb4b: `Detalles del error:`,\n sb200fe325d3e0ab3: `La opción de orden actual no tiene direcciones`,\n sb37c0f28ca696ddf: `Música de __QUERY`,\n sb3f922fbbc355ef7: `Creador`,\n sb5228c24c24cc18a: `Esta colección no contiene elementos que se puedan ver.`,\n sb58c82618718d16e: `Quitar los elementos seleccionados`,\n sb5b8614f47ae519d: `subidas`,\n sb7adab38b780c834: str`Cambiar a orden ${0}`,\n sb89d8d8bc0c08e98: `Reseñado`,\n sbb362f844e236028: `Préstamo de 14 días`,\n sbbc53e0e54d7946f: `Tema`,\n sbea4e386905763f6: `Disponibilidad`,\n sc1a39f411862864b: `Biblioteca de préstamo`,\n sc32bb2e1a8047c9a: `Filtrar por:`,\n sc6432b98425e5737: `Pulsa la flecha arriba para salir de la vista previa del elemento`,\n sc81c9ceea4c97767: `Quitando los elementos seleccionados...`,\n sc914626c031e3608: `Programas`,\n sca1a826088564455: `Resultados`,\n scc44d457ed96108c: `Visualizaciones totales`,\n scff6c3b650f37317: `Elemento sin título`,\n sd01d6e9b9f301ee6: `Más...`,\n sd0b6082239185272: `Seleccionar todo`,\n sd0d55e8a5b30ddbc: `Más información`,\n sd1d0f1053fc888f0: `filtro de rango`,\n sd1f81a84eeb7c29b: `Película`,\n sd2223afb7d6b100d: `Tipo`,\n sd2dc41d0d42a188b: `¿Seguro que quieres quitar estos elementos?`,\n sd574f2d5de170480: `Aplicar los filtros`,\n sd58c6c0227ea9fc3: `Selecciona un rango de fechas`,\n sd63d0aa1170b5d4e: `Tipos de clip`,\n sd6ac8009a2a7effb: `E-tree`,\n sd6dcb78ea83e6111: str`${0} byte`,\n sd733957613ccaa59: str`Valores de ${0}`,\n sd8adbc60f2886b80: `Número`,\n sd8c92230dc431a1b: str`${0}, ${1} resultados`,\n sdbf79727b3cfcbae: `Patrocinadores`,\n sdd1743c69f17706e: str`${0} gigabytes`,\n sddc27cc22328fbf0: str`${0} mil millones`,\n sdf69091630b88e37: str`${0} megabyte`,\n sdf6c22ec03252c91: str`Filtrar ${0}`,\n se0ce95409b2f48b1: str`${0} petabyte`,\n se1c1137c3638e1eb: `Fecha de publicación`,\n se1dd81cd767b2b98: `Nota: este elemento puede tardar unos minutos en dejar de aparecer en tu lista de subidas.`,\n se35de1f96af7ec6f: `Película`,\n se7bc8e5a2a50ab94: `Temas`,\n se871c20e39ace2a5: `Añadido`,\n se9ab756faba48167: `Se ha producido un error al quitar los elementos. Inténtalo de nuevo dentro de unos minutos.`,\n sea80c016fb691d2e: `de 5 estrellas`,\n seaa8073d775d898b: str`${0} zettabyte`,\n seb88e51c2513b62c: str`${0} kilobyte`,\n sebd0f6fd006a98ac: `visualizaciones totales`,\n see0d40a42ac78160: str`Mostrar ${0}`,\n sefcf950b3cc4fc3b: `Idioma`,\n sf40c9c2d1e9606c6: `Selecciona los filtros`,\n sf4ef1c44841c44e6: `Tipos de medio`,\n sf95b96048b8e537d: str`${0} mil`,\n sfaa12ceed0995556: str`Archivista desde ${0}`,\n sfc4264fee3bf9b72: `Difuminado`,\n sfcc069f51592918b: `Películas de __QUERY`,\n sfdaff50162b13cc2: str`Volumen ${0}, número ${1}`,\n sfec0c302ab140e30: `Software`,\n};\n"]}
1
+ {"version":3,"file":"es.js","sourceRoot":"","sources":["../../../src/locales/es.ts"],"names":[],"mappings":"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","sourcesContent":["// Do not modify this file by hand!\n// Re-generate this file by running lit-localize\n\nimport { html } from 'lit';\nimport { str } from '@lit/localize';\n\n/* eslint-disable no-irregular-whitespace */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const templates = {\n h13064d5156c615de: html`El motor de búsqueda encontró un error al cargar esta\n colección. Si el problema continúa, avísanos en\n <a href=\"mailto:info@archive.org\">info@archive.org</a>.`,\n h920c92659184f0bc: html`El motor de búsqueda encontró un error, que puede\n tener que ver con tu búsqueda.\n <a\n href=\"https://help.archive.org/help/search-building-powerful-complex-queries/\"\n >\n Consejos para construir búsquedas.\n </a> `,\n s01a8d1dbd588ac19: `Mostrar la página anterior de valores`,\n s027d72711d00e2ff: `Estadísticas de la cuenta`,\n s03c4a59d394f8285: `Deseleccionar todo`,\n s04a2e4a6caf07c66: `Selecciona los elementos que quieres quitar`,\n s05b4f5c0ceaf9a4c: `Creadores`,\n s078f25f106da59fe: `Borrar todos los filtros`,\n s08118dc8355966af: `Tu búsqueda no coincide con ningún elemento de esta colección. Prueba con otras palabras o una búsqueda más general.`,\n s0864063d5cb2f8f1: `Tipo de medio`,\n s088e3807b53946aa: `es`,\n s089297421a0eedd6: `reseñas`,\n s08e6bd98452e6bb9: `Audio`,\n s09134b07b5aacab4: `Por`,\n s09352207b5c76b6f: `TV`,\n s10badbbb7458756b: str`Buscar ${0}…`,\n s10c473ba9d85039c: `Aplicar el rango de fechas`,\n s1228605ee65ddefa: str`${0} resultado`,\n s125a86b2f45bbb25: str`${0} elementos`,\n s1348f0497a99fe1b: `Quitar este elemento de la lista`,\n s1649fb48f787df05: str`${0}: ${1} resultados`,\n s169b68b0d70d64f4: str`${0} terabytes`,\n s16a6528db8e36fe5: `Mostrar la página siguiente de valores`,\n s1895d4e46cff35f9: `Ocultos:`,\n s190e4571d3f17068: str`${0} zettabytes`,\n s1aa21b9c0ffa83c2: `Filtrar por la letra del título`,\n s1b6ac21f2337d642: `Fecha de reseña`,\n s2037bf213b8e419b: `Error: no se pudieron quitar los elementos`,\n s22759aae8f547d20: `Borrar el filtro`,\n s2492f5fb1b05b45e: `Texto`,\n s24d45627f1e95f7a: `favoritos`,\n s26a52753e6884683: `Mostrar el panel de filtros`,\n s2805bb246d30384a: `Seleccionados:`,\n s2c6298bfef78c37e: `Vista de mosaico`,\n s2ceb11be2290bb1b: `Cancelar`,\n s2e505ec7b158a1a6: str`${0} petabytes`,\n s320992e58900cc86: str`${0} seleccionados`,\n s321d1672949e1c4c: `filtros`,\n s322628256693c6d8: `No se pudieron cargar las opciones, inténtalo de nuevo más tarde`,\n s3297cc6f08d7b40a: `Imágenes de __QUERY`,\n s350e83d078cf47d6: `Gestionar los elementos en Item Manager`,\n s355c4153fe27a589: `No se han encontrado valores que coincidan.`,\n s3659ff5488b62143: `Nota: estos elementos pueden tardar unos minutos en dejar de aparecer en tu lista de archivos web.`,\n s37c1658491ef819c: str`${0} yottabyte`,\n s387a4a41718122cb: str`${0} resultados`,\n s3d93f9ea0c5a13fa: `Imagen`,\n s3f5390ecd7d14626: `Colecciones`,\n s40d76f1f51639ec0: `Persona`,\n s42b68a1842b8ae58: `Idiomas`,\n s4369ef9b51b71a0b: `Pulsa la flecha abajo para ver la vista previa del elemento`,\n s45a359a3fa397256: `Vista de lista`,\n s46728ac92301a821: `Estadísticas del elemento`,\n s471bd7615c164fb6: `Año de publicación`,\n s47d3bb78437e7f74: `Radio`,\n s4854cd48f30ff8ee: `Personas`,\n s4a8d47364336fa6e: str`Mostrar solo ${0}`,\n s4bfc4d609ee1ab33: `Archivado`,\n s4c1025a7d399cd6b: `Más filtros de:`,\n s4d53add3007ee36d: str`${0} kilobytes`,\n s4d5665b24e24b9e3: `Vista de lista compacta`,\n s4e1b7bc897f8c089: `Quitar elementos`,\n s4f11a5992a021fa2: `Filtrar por cadena`,\n s4f7142f34f35ed6d: `Inicia sesión para ver este elemento`,\n s5523f131e71b785c: str`${0} exabytes`,\n s5643568b7c038f43: `Resultados de la búsqueda`,\n s576d4967e1ff7986: str`${0} bytes`,\n s5808b4b4c999bd8c: str`${0} megabytes`,\n s583ff43301fa7817: `Nota: estos elementos pueden tardar unos minutos en dejar de aparecer en tu lista de favoritos.`,\n s5b528a7f6c0c40af: `Volumen`,\n s5c225a179e34f704: `Valoración media`,\n s5c73979f691e7fcc: `volumen|número`,\n s5d929ff1619ac0c9: `Buscar`,\n s5f43af3669b1e098: `Fuente`,\n s60b34c3c17dc35bd: `Años`,\n s60ca4026935af5bd: `Forma parte de`,\n s621283dc7bb413cf: `Fecha Agregada`,\n s640f3c29000a4c59: str`Mostrar todo: ${0}`,\n s6471716d93a86047: str`${0} exabyte`,\n s675ca32d5ae11dcc: `Nota: estos elementos pueden tardar unos minutos en dejar de aparecer en tu lista de subidas.`,\n s6793629c1db37a66: str`por ${0}`,\n s6a3c8edbec8d73b4: str`${0} elemento`,\n s6b35590c360852a5: `Fecha de archivo`,\n s6be3ee5386181ff1: `Anuncio político`,\n s6d3b5b0561ba34c9: `Publicado`,\n s6e42e5e330244f67: `Nota: este elemento puede tardar unos minutos en dejar de aparecer en tu lista de archivos web.`,\n s6fc9985cacb3eaa2: str`Ver ${0}`,\n s70a5d875c5467e57: `Cita`,\n s71a5c9f4b68ef4d4: `Cantidad`,\n s74aa0119e62b2b51: `Web`,\n s74cba6ca50670aa9: str`${0} gigabyte`,\n s76f86c7568d51abc: `Lo sentimos, no se pudieron cargar estos valores. Inténtalo de nuevo más tarde.`,\n s77fd410a7f33bb55: `Los filtros no están disponibles temporalmente.`,\n s7abf4f48abeedddb: `Nota: este elemento puede tardar unos minutos en dejar de aparecer en tu lista de favoritos.`,\n s7cd7aa6578a69dab: `Programa`,\n s7da36f2d9999ec0f: `Cita de TV`,\n s7f3437809d931336: `Reseñas`,\n s819258a281266f50: `visualizaciones semanales`,\n s846b3790b6e25c1c: `Cuenta`,\n s84d3dbcd121dd01b: `descendente`,\n s85186a61e0d55bac: `Vídeo`,\n s879330fe73e46610: str`Deseleccionar ${0}`,\n s8865f02d9ebbd0f5: `Temas`,\n s890e983a7be64da4: `Resultado`,\n s8b153325befe824b: `Fecha de publicación`,\n s8c6eb24d88673ed6: `Obras escritas de __QUERY`,\n s8ca015950940c078: `clips`,\n s8cda828dac449ea5: `Borrar todo`,\n s8e68b824b99140a1: `ascendente`,\n s8ef9b6c2af31a130: `Visualizaciones semanales`,\n s8f87ca21cd0e0907: str`Ver más: ${0}`,\n s8fd53d9e642d729c: `Ocultar el panel de filtros`,\n s9027f0f301703c8b: str`Ocultar ${0}`,\n s90a8434ed9c2a23f: `Verificación de datos`,\n s919c97efeda9854f: str`${0} terabyte`,\n s91c95e3f33defa93: `Tipo de medio:`,\n s963a29c7019722e9: `Patrocinador`,\n s984a5e18d85b6d57: str`${0} ${1}`,\n s99181a7e454a7a81: `Ampliar el histograma de fechas`,\n s99f110d27e30b289: `Título`,\n s9b288e9b7f945b0c: `Ordenar por:`,\n s9ce6e713435f440c: `Filtrar por la letra del creador`,\n s9cfa7823fc62aba3: `Buscando…`,\n s9dc9dd05aab83a09: `Tipo de clip`,\n s9fb0e3bc7de4bf8f: `Siempre disponible`,\n sa052f7f79d739859: `Anuncio político de TV`,\n sa4610b7e117b7870: `Para empezar a buscar, escribe un término en el cuadro de arriba y pulsa \"Ir\".`,\n sa471309f46635717: `Verificación de datos de TV`,\n sa508c606cd13dcc5: `Filtrar por programa`,\n sa63f9a6193ff70ad: `Opciones de orden`,\n sa666712981e141a5: `Fecha de favorito`,\n sa6f2645578b2d2bc: `Año`,\n sa731b8677f830182: `El contenido puede ser inapropiado`,\n sa7eea45fe1e4d231: `Colección`,\n sa8beb6b1182241ac: `Filtros`,\n sab1e212a875eb996: `Tu búsqueda no coincide con ningún elemento del Archive. Prueba con otras palabras o una búsqueda más general.`,\n sabc57021558fd9c2: `(Búsqueda guardada en favoritos)`,\n sac8256732f2ee1e5: `Datos`,\n sad216f43f9f9c91d: str`${0} yottabytes`,\n saf30fc1eade20268: `Relevancia`,\n sb0ff4efb0328eb4b: `Detalles del error:`,\n sb200fe325d3e0ab3: `La opción de orden actual no tiene direcciones`,\n sb37c0f28ca696ddf: `Música de __QUERY`,\n sb3f922fbbc355ef7: `Creador`,\n sb5228c24c24cc18a: `Esta colección no contiene elementos que se puedan ver.`,\n sb58c82618718d16e: `Quitar los elementos seleccionados`,\n sb5b8614f47ae519d: `subidas`,\n sb7adab38b780c834: str`Cambiar a orden ${0}`,\n sb89d8d8bc0c08e98: `Reseñado`,\n sbb362f844e236028: `Préstamo de 14 días`,\n sbbc53e0e54d7946f: `Tema`,\n sbea4e386905763f6: `Disponibilidad`,\n sc1a39f411862864b: `Biblioteca de préstamo`,\n sc32bb2e1a8047c9a: `Filtrar por:`,\n sc6432b98425e5737: `Pulsa la flecha arriba para salir de la vista previa del elemento`,\n sc81c9ceea4c97767: `Quitando los elementos seleccionados...`,\n sc914626c031e3608: `Programas`,\n sca1a826088564455: `Resultados`,\n scc44d457ed96108c: `Visualizaciones totales`,\n scff6c3b650f37317: `Elemento sin título`,\n sd01d6e9b9f301ee6: `Más...`,\n sd0b6082239185272: `Seleccionar todo`,\n sd0d55e8a5b30ddbc: `Más información`,\n sd1d0f1053fc888f0: `filtro de rango`,\n sd1f81a84eeb7c29b: `Película`,\n sd2223afb7d6b100d: `Tipo`,\n sd2dc41d0d42a188b: `¿Seguro que quieres quitar estos elementos?`,\n sd574f2d5de170480: `Aplicar los filtros`,\n sd58c6c0227ea9fc3: `Selecciona un rango de fechas`,\n sd63d0aa1170b5d4e: `Tipos de clip`,\n sd6ac8009a2a7effb: `E-tree`,\n sd6dcb78ea83e6111: str`${0} byte`,\n sd733957613ccaa59: str`Valores de ${0}`,\n sd8adbc60f2886b80: `Número`,\n sd8c92230dc431a1b: str`${0}, ${1} resultados`,\n sdbf79727b3cfcbae: `Patrocinadores`,\n sdd1743c69f17706e: str`${0} gigabytes`,\n sdf69091630b88e37: str`${0} megabyte`,\n sdf6c22ec03252c91: str`Filtrar ${0}`,\n se0ce95409b2f48b1: str`${0} petabyte`,\n se1c1137c3638e1eb: `Fecha de publicación`,\n se1dd81cd767b2b98: `Nota: este elemento puede tardar unos minutos en dejar de aparecer en tu lista de subidas.`,\n se35de1f96af7ec6f: `Película`,\n se7bc8e5a2a50ab94: `Temas`,\n se871c20e39ace2a5: `Añadido`,\n se9ab756faba48167: `Se ha producido un error al quitar los elementos. Inténtalo de nuevo dentro de unos minutos.`,\n sea80c016fb691d2e: `de 5 estrellas`,\n seaa8073d775d898b: str`${0} zettabyte`,\n seb88e51c2513b62c: str`${0} kilobyte`,\n sebd0f6fd006a98ac: `visualizaciones totales`,\n see0d40a42ac78160: str`Mostrar ${0}`,\n sefcf950b3cc4fc3b: `Idioma`,\n sf40c9c2d1e9606c6: `Selecciona los filtros`,\n sf4ef1c44841c44e6: `Tipos de medio`,\n sfaa12ceed0995556: str`Archivista desde ${0}`,\n sfc4264fee3bf9b72: `Difuminado`,\n sfcc069f51592918b: `Películas de __QUERY`,\n sfdaff50162b13cc2: str`Volumen ${0}, número ${1}`,\n sfec0c302ab140e30: `Software`,\n};\n"]}
@@ -2,19 +2,21 @@ import { __decorate } from "tslib";
2
2
  import { LitElement, html, css } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
4
  import { localized, msg, str } from '@lit/localize';
5
+ import { getLocale } from '../utils/get-locale';
5
6
  let AlphaBarTooltip = class AlphaBarTooltip extends LitElement {
6
7
  constructor() {
7
8
  super(...arguments);
8
9
  this.numResults = 0;
9
10
  }
10
11
  render() {
12
+ const formattedCount = new Intl.NumberFormat(getLocale()).format(this.numResults);
11
13
  return html `
12
14
  <div id="tooltip-container" role="tooltip">
13
15
  <div id="arrow"></div>
14
16
  <div id="tooltip-text">
15
17
  ${this.numResults === 1
16
- ? msg(str `${this.numResults} result`)
17
- : msg(str `${this.numResults} results`)}
18
+ ? msg(str `${formattedCount} result`)
19
+ : msg(str `${formattedCount} results`)}
18
20
  </div>
19
21
  </div>
20
22
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"alpha-bar-tooltip.js","sourceRoot":"","sources":["../../../src/sort-filter-bar/alpha-bar-tooltip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAkB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAI7C,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,UAAU;IAAxC;;QACuB,eAAU,GAAW,CAAC,CAAC;IAiDrD,CAAC;IA/CC,MAAM;QACJ,OAAO,IAAI,CAAA;;;;YAIH,IAAI,CAAC,UAAU,KAAK,CAAC;YACrB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAA,GAAG,IAAI,CAAC,UAAU,SAAS,CAAC;YACrC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAA,GAAG,IAAI,CAAC,UAAU,UAAU,CAAC;;;KAG7C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,MAAM,SAAS,GAAG,GAAG,CAAA,8BAA8B,CAAC;QACpD,MAAM,WAAW,GAAG,GAAG,CAAA,gCAAgC,CAAC;QAExD,OAAO,GAAG,CAAA;;;;;;;;;2BASa,WAAW;;;;gCAIN,SAAS;iCACR,SAAS;kBACxB,SAAS;;;;;;;;;;;;;KAatB,CAAC;IACJ,CAAC;CACF,CAAA;AAjD6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDAAwB;AADxC,eAAe;IAF3B,aAAa,CAAC,mBAAmB,CAAC;IAClC,SAAS,EAAE;GACC,eAAe,CAkD3B","sourcesContent":["import { LitElement, html, css, CSSResultGroup } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { localized, msg, str } from '@lit/localize';\n\n@customElement('alpha-bar-tooltip')\n@localized()\nexport class AlphaBarTooltip extends LitElement {\n @property({ type: Number }) numResults: number = 0;\n\n render() {\n return html`\n <div id=\"tooltip-container\" role=\"tooltip\">\n <div id=\"arrow\"></div>\n <div id=\"tooltip-text\">\n ${this.numResults === 1\n ? msg(str`${this.numResults} result`)\n : msg(str`${this.numResults} results`)}\n </div>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n const arrowSize = css`var(--tooltipArrowSize, 5px)`;\n const arrowOffset = css`var(--tooltipArrowOffset, 0px)`;\n\n return css`\n #tooltip-container {\n width: max-content;\n max-width: 200px;\n pointer-events: none;\n }\n\n #arrow {\n position: relative;\n left: calc(50% + ${arrowOffset});\n top: 0;\n width: 0;\n height: 0;\n margin-top: calc(-1 * ${arrowSize});\n margin-left: calc(-1 * ${arrowSize});\n border: ${arrowSize} solid transparent;\n border-bottom-color: black;\n }\n\n #tooltip-text {\n padding: 3px 8px;\n border-radius: 4px;\n background-color: #000;\n color: white;\n font-size: 1.2rem;\n text-align: center;\n text-decoration: none;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"alpha-bar-tooltip.js","sourceRoot":"","sources":["../../../src/sort-filter-bar/alpha-bar-tooltip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAkB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIzC,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,UAAU;IAAxC;;QACuB,eAAU,GAAW,CAAC,CAAC;IAoDrD,CAAC;IAlDC,MAAM;QACJ,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAC9D,IAAI,CAAC,UAAU,CAChB,CAAC;QACF,OAAO,IAAI,CAAA;;;;YAIH,IAAI,CAAC,UAAU,KAAK,CAAC;YACrB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAA,GAAG,cAAc,SAAS,CAAC;YACpC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAA,GAAG,cAAc,UAAU,CAAC;;;KAG5C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,MAAM,SAAS,GAAG,GAAG,CAAA,8BAA8B,CAAC;QACpD,MAAM,WAAW,GAAG,GAAG,CAAA,gCAAgC,CAAC;QAExD,OAAO,GAAG,CAAA;;;;;;;;;2BASa,WAAW;;;;gCAIN,SAAS;iCACR,SAAS;kBACxB,SAAS;;;;;;;;;;;;;KAatB,CAAC;IACJ,CAAC;CACF,CAAA;AApD6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDAAwB;AADxC,eAAe;IAF3B,aAAa,CAAC,mBAAmB,CAAC;IAClC,SAAS,EAAE;GACC,eAAe,CAqD3B","sourcesContent":["import { LitElement, html, css, CSSResultGroup } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { localized, msg, str } from '@lit/localize';\nimport { getLocale } from '../utils/get-locale';\n\n@customElement('alpha-bar-tooltip')\n@localized()\nexport class AlphaBarTooltip extends LitElement {\n @property({ type: Number }) numResults: number = 0;\n\n render() {\n const formattedCount = new Intl.NumberFormat(getLocale()).format(\n this.numResults,\n );\n return html`\n <div id=\"tooltip-container\" role=\"tooltip\">\n <div id=\"arrow\"></div>\n <div id=\"tooltip-text\">\n ${this.numResults === 1\n ? msg(str`${formattedCount} result`)\n : msg(str`${formattedCount} results`)}\n </div>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n const arrowSize = css`var(--tooltipArrowSize, 5px)`;\n const arrowOffset = css`var(--tooltipArrowOffset, 0px)`;\n\n return css`\n #tooltip-container {\n width: max-content;\n max-width: 200px;\n pointer-events: none;\n }\n\n #arrow {\n position: relative;\n left: calc(50% + ${arrowOffset});\n top: 0;\n width: 0;\n height: 0;\n margin-top: calc(-1 * ${arrowSize});\n margin-left: calc(-1 * ${arrowSize});\n border: ${arrowSize} solid transparent;\n border-bottom-color: black;\n }\n\n #tooltip-text {\n padding: 3px 8px;\n border-radius: 4px;\n background-color: #000;\n color: white;\n font-size: 1.2rem;\n text-align: center;\n text-decoration: none;\n }\n `;\n }\n}\n"]}
@@ -2,6 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { LitElement, html, css, nothing } from 'lit';
3
3
  import { customElement, property, state, query } from 'lit/decorators.js';
4
4
  import { localized, msg, str } from '@lit/localize';
5
+ import { getLocale } from '../utils/get-locale';
5
6
  import './alpha-bar-tooltip';
6
7
  let AlphaBar = class AlphaBar extends LitElement {
7
8
  constructor() {
@@ -35,7 +36,8 @@ let AlphaBar = class AlphaBar extends LitElement {
35
36
  }
36
37
  letterButtonTemplate(letter) {
37
38
  const count = this.letterCounts?.[letter] ?? 0;
38
- const ariaLabel = msg(str `${letter}: ${count} results`);
39
+ const formattedCount = new Intl.NumberFormat(getLocale()).format(count);
40
+ const ariaLabel = msg(str `${letter}: ${formattedCount} results`);
39
41
  return html `
40
42
  <button
41
43
  aria-label=${ariaLabel}
@@ -1 +1 @@
1
- {"version":3,"file":"alpha-bar.js","sourceRoot":"","sources":["../../../src/sort-filter-bar/alpha-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css, nothing, TemplateResult } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { localized, msg, str } from '@lit/localize';\nimport type { PrefixFilterCounts } from '../models';\n\nimport './alpha-bar-tooltip';\nimport type { AlphaBarTooltip } from './alpha-bar-tooltip';\n\n@customElement('alpha-bar')\n@localized()\nexport class AlphaBar extends LitElement {\n @property({ type: String }) selectedLetter: string | null = null;\n\n @property({ type: Object }) letterCounts?: PrefixFilterCounts;\n\n @property({ type: String }) ariaLandmarkLabel?: string;\n\n @state()\n private tooltipShown: boolean = false;\n\n @state()\n private hoveredLetter?: string;\n\n @query('alpha-bar-tooltip')\n private tooltip?: AlphaBarTooltip;\n\n private readonly alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n\n private get selectedUppercaseLetter(): string | undefined {\n return this.selectedLetter?.toUpperCase();\n }\n\n render() {\n return html`\n <section id=\"container\" aria-label=${this.ariaLandmarkLabel ?? nothing}>\n <ul>\n ${this.alphabet.map(\n letter => html`\n <li\n class=${letter === this.selectedUppercaseLetter\n ? 'selected'\n : nothing}\n @mousemove=${this.handleMouseMove}\n @mouseleave=${this.handleMouseLeave}\n >\n ${this.letterButtonTemplate(letter)}\n ${this.tooltipTemplate(letter)}\n </li>\n `,\n )}\n </ul>\n </section>\n `;\n }\n\n private letterButtonTemplate(letter: string) {\n const count = this.letterCounts?.[letter] ?? 0;\n const ariaLabel = msg(str`${letter}: ${count} results`);\n return html`\n <button\n aria-label=${ariaLabel}\n ?disabled=${!this.letterCounts?.[letter]}\n @click=${() => {\n this.letterClicked(letter);\n }}\n >\n ${letter}\n </button>\n `;\n }\n\n private tooltipTemplate(letter: string): TemplateResult | typeof nothing {\n if (this.hoveredLetter !== letter) return nothing;\n\n return this.tooltipShown\n ? html`<alpha-bar-tooltip\n data-letter=${letter}\n .numResults=${this.letterCounts?.[this.hoveredLetter] ?? 0}\n ></alpha-bar-tooltip>`\n : nothing;\n }\n\n private letterClicked(letter: string) {\n if (letter === this.selectedUppercaseLetter) {\n this.selectedLetter = null;\n } else {\n this.selectedLetter = letter;\n }\n this.dispatchEvent(\n new CustomEvent('letterChanged', {\n detail: { selectedLetter: this.selectedUppercaseLetter },\n }),\n );\n }\n\n private async handleMouseMove(e: MouseEvent) {\n const target = e.target as HTMLLIElement;\n if (target && !this.tooltipShown) {\n const targetLetter = target.textContent?.trim() ?? undefined;\n this.tooltipShown = true;\n this.hoveredLetter = targetLetter;\n\n await this.updateComplete;\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n if (this.tooltip && this.tooltip.dataset.letter === targetLetter) {\n this.positionTooltip(target);\n }\n }\n }\n\n private handleMouseLeave() {\n this.tooltipShown = false;\n this.hoveredLetter = undefined;\n }\n\n private positionTooltip(targetElmt: HTMLElement) {\n if (!this.tooltip) return;\n\n // Basic positioning is just to center the whole tooltip on the letter box.\n const tooltipWidth = this.tooltip.clientWidth;\n const letterWidth = targetElmt.clientWidth;\n let left = letterWidth / 2 - tooltipWidth / 2;\n\n // But we also need to ensure the tooltip doesn't flow outside the viewport.\n // First, calculate the full width of the document body, including margins\n // (but not including any scrollbar).\n const bodyStyle = getComputedStyle(document.body);\n const bodyMarginLeft = parseFloat(\n bodyStyle.getPropertyValue('margin-left'),\n );\n const bodyMarginRight = parseFloat(\n bodyStyle.getPropertyValue('margin-right'),\n );\n const bodyWidthWithMargin =\n document.body.clientWidth + bodyMarginLeft + bodyMarginRight;\n\n // Calculate the positions of the tooltip's left/right edges, and determine\n // how much they overflow the viewport by (if at all).\n const targetRect = targetElmt.getBoundingClientRect();\n const tooltipLeft = targetRect.left + left;\n const tooltipRight = tooltipLeft + tooltipWidth;\n const offset = 1; // How many pixels the tooltip must be offset from the left/right edges\n let overflowAmt;\n if (tooltipLeft < offset) {\n // Tooltip overflows left edge of viewport\n overflowAmt = tooltipLeft - offset;\n } else if (tooltipRight > bodyWidthWithMargin - offset) {\n // Tooltip overflows right edge of viewport\n overflowAmt = tooltipRight - bodyWidthWithMargin + offset;\n }\n\n // Apply any needed adjustment to the tooltip and its arrow to keep it in the viewport\n if (overflowAmt) {\n left -= overflowAmt;\n this.tooltip.style.setProperty(\n '--tooltipArrowOffset',\n `${overflowAmt}px`,\n );\n }\n\n this.tooltip.style.left = `${left}px`;\n this.tooltip.classList.add('fade-in');\n }\n\n static styles = css`\n h1 {\n font-size: 1.2rem;\n }\n\n #container {\n background-color: #ddd;\n color: #333;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.5);\n }\n\n ul {\n list-style: none;\n display: flex;\n margin: 0;\n padding: 0.5rem 1rem;\n justify-content: space-between;\n }\n\n ul li {\n position: relative;\n flex: 1;\n text-align: center;\n max-width: 2.5rem;\n border-radius: 4px;\n }\n\n li:hover:not(.selected) button:not(:disabled) {\n background-color: #c0c0c0;\n }\n\n button {\n display: flex;\n justify-content: center;\n align-items: center;\n aspect-ratio: 1 / 1;\n }\n\n button {\n width: 100%;\n height: 100%;\n color: #333;\n appearance: none;\n background: none;\n border: none;\n border-radius: 4px;\n font-family: inherit;\n font-size: 1.2rem;\n cursor: pointer;\n }\n\n button:disabled {\n color: #aaa;\n cursor: default;\n }\n\n .selected {\n background-color: #2c2c2c;\n }\n\n .selected button {\n color: white;\n }\n\n alpha-bar-tooltip {\n position: absolute;\n top: 100%;\n left: -9999px;\n margin-top: 3px;\n z-index: 1;\n\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n\n alpha-bar-tooltip.fade-in {\n opacity: 1;\n }\n\n /* Make alphabet bar a 2-row container in small screen widths */\n @media screen and (max-width: 768px) {\n ul {\n display: grid;\n grid-template-columns: repeat(13, 1fr);\n }\n }\n `;\n}\n"]}
1
+ {"version":3,"file":"alpha-bar.js","sourceRoot":"","sources":["../../../src/sort-filter-bar/alpha-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css, nothing, TemplateResult } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { localized, msg, str } from '@lit/localize';\nimport type { PrefixFilterCounts } from '../models';\nimport { getLocale } from '../utils/get-locale';\n\nimport './alpha-bar-tooltip';\nimport type { AlphaBarTooltip } from './alpha-bar-tooltip';\n\n@customElement('alpha-bar')\n@localized()\nexport class AlphaBar extends LitElement {\n @property({ type: String }) selectedLetter: string | null = null;\n\n @property({ type: Object }) letterCounts?: PrefixFilterCounts;\n\n @property({ type: String }) ariaLandmarkLabel?: string;\n\n @state()\n private tooltipShown: boolean = false;\n\n @state()\n private hoveredLetter?: string;\n\n @query('alpha-bar-tooltip')\n private tooltip?: AlphaBarTooltip;\n\n private readonly alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n\n private get selectedUppercaseLetter(): string | undefined {\n return this.selectedLetter?.toUpperCase();\n }\n\n render() {\n return html`\n <section id=\"container\" aria-label=${this.ariaLandmarkLabel ?? nothing}>\n <ul>\n ${this.alphabet.map(\n letter => html`\n <li\n class=${letter === this.selectedUppercaseLetter\n ? 'selected'\n : nothing}\n @mousemove=${this.handleMouseMove}\n @mouseleave=${this.handleMouseLeave}\n >\n ${this.letterButtonTemplate(letter)}\n ${this.tooltipTemplate(letter)}\n </li>\n `,\n )}\n </ul>\n </section>\n `;\n }\n\n private letterButtonTemplate(letter: string) {\n const count = this.letterCounts?.[letter] ?? 0;\n const formattedCount = new Intl.NumberFormat(getLocale()).format(count);\n const ariaLabel = msg(str`${letter}: ${formattedCount} results`);\n return html`\n <button\n aria-label=${ariaLabel}\n ?disabled=${!this.letterCounts?.[letter]}\n @click=${() => {\n this.letterClicked(letter);\n }}\n >\n ${letter}\n </button>\n `;\n }\n\n private tooltipTemplate(letter: string): TemplateResult | typeof nothing {\n if (this.hoveredLetter !== letter) return nothing;\n\n return this.tooltipShown\n ? html`<alpha-bar-tooltip\n data-letter=${letter}\n .numResults=${this.letterCounts?.[this.hoveredLetter] ?? 0}\n ></alpha-bar-tooltip>`\n : nothing;\n }\n\n private letterClicked(letter: string) {\n if (letter === this.selectedUppercaseLetter) {\n this.selectedLetter = null;\n } else {\n this.selectedLetter = letter;\n }\n this.dispatchEvent(\n new CustomEvent('letterChanged', {\n detail: { selectedLetter: this.selectedUppercaseLetter },\n }),\n );\n }\n\n private async handleMouseMove(e: MouseEvent) {\n const target = e.target as HTMLLIElement;\n if (target && !this.tooltipShown) {\n const targetLetter = target.textContent?.trim() ?? undefined;\n this.tooltipShown = true;\n this.hoveredLetter = targetLetter;\n\n await this.updateComplete;\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n if (this.tooltip && this.tooltip.dataset.letter === targetLetter) {\n this.positionTooltip(target);\n }\n }\n }\n\n private handleMouseLeave() {\n this.tooltipShown = false;\n this.hoveredLetter = undefined;\n }\n\n private positionTooltip(targetElmt: HTMLElement) {\n if (!this.tooltip) return;\n\n // Basic positioning is just to center the whole tooltip on the letter box.\n const tooltipWidth = this.tooltip.clientWidth;\n const letterWidth = targetElmt.clientWidth;\n let left = letterWidth / 2 - tooltipWidth / 2;\n\n // But we also need to ensure the tooltip doesn't flow outside the viewport.\n // First, calculate the full width of the document body, including margins\n // (but not including any scrollbar).\n const bodyStyle = getComputedStyle(document.body);\n const bodyMarginLeft = parseFloat(\n bodyStyle.getPropertyValue('margin-left'),\n );\n const bodyMarginRight = parseFloat(\n bodyStyle.getPropertyValue('margin-right'),\n );\n const bodyWidthWithMargin =\n document.body.clientWidth + bodyMarginLeft + bodyMarginRight;\n\n // Calculate the positions of the tooltip's left/right edges, and determine\n // how much they overflow the viewport by (if at all).\n const targetRect = targetElmt.getBoundingClientRect();\n const tooltipLeft = targetRect.left + left;\n const tooltipRight = tooltipLeft + tooltipWidth;\n const offset = 1; // How many pixels the tooltip must be offset from the left/right edges\n let overflowAmt;\n if (tooltipLeft < offset) {\n // Tooltip overflows left edge of viewport\n overflowAmt = tooltipLeft - offset;\n } else if (tooltipRight > bodyWidthWithMargin - offset) {\n // Tooltip overflows right edge of viewport\n overflowAmt = tooltipRight - bodyWidthWithMargin + offset;\n }\n\n // Apply any needed adjustment to the tooltip and its arrow to keep it in the viewport\n if (overflowAmt) {\n left -= overflowAmt;\n this.tooltip.style.setProperty(\n '--tooltipArrowOffset',\n `${overflowAmt}px`,\n );\n }\n\n this.tooltip.style.left = `${left}px`;\n this.tooltip.classList.add('fade-in');\n }\n\n static styles = css`\n h1 {\n font-size: 1.2rem;\n }\n\n #container {\n background-color: #ddd;\n color: #333;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.5);\n }\n\n ul {\n list-style: none;\n display: flex;\n margin: 0;\n padding: 0.5rem 1rem;\n justify-content: space-between;\n }\n\n ul li {\n position: relative;\n flex: 1;\n text-align: center;\n max-width: 2.5rem;\n border-radius: 4px;\n }\n\n li:hover:not(.selected) button:not(:disabled) {\n background-color: #c0c0c0;\n }\n\n button {\n display: flex;\n justify-content: center;\n align-items: center;\n aspect-ratio: 1 / 1;\n }\n\n button {\n width: 100%;\n height: 100%;\n color: #333;\n appearance: none;\n background: none;\n border: none;\n border-radius: 4px;\n font-family: inherit;\n font-size: 1.2rem;\n cursor: pointer;\n }\n\n button:disabled {\n color: #aaa;\n cursor: default;\n }\n\n .selected {\n background-color: #2c2c2c;\n }\n\n .selected button {\n color: white;\n }\n\n alpha-bar-tooltip {\n position: absolute;\n top: 100%;\n left: -9999px;\n margin-top: 3px;\n z-index: 1;\n\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n\n alpha-bar-tooltip.fade-in {\n opacity: 1;\n }\n\n /* Make alphabet bar a 2-row container in small screen widths */\n @media screen and (max-width: 768px) {\n ul {\n display: grid;\n grid-template-columns: repeat(13, 1fr);\n }\n }\n `;\n}\n"]}
@@ -5,6 +5,7 @@ import { classMap } from 'lit/directives/class-map.js';
5
5
  import { localized, msg, str } from '@lit/localize';
6
6
  import { collectionIcon } from '../../assets/img/icons/mediatype/collection';
7
7
  import { formatUnitSize } from '../../utils/format-unit-size';
8
+ import { getLocale } from '../../utils/get-locale';
8
9
  import { baseTileStyles } from './styles/tile-grid-shared-styles';
9
10
  import { BaseTileComponent } from '../base-tile-component';
10
11
  import '../image-block';
@@ -76,7 +77,9 @@ let CollectionTile = class CollectionTile extends BaseTileComponent {
76
77
  }
77
78
  get getItemsTemplate() {
78
79
  const itemCount = this.model?.itemCount;
79
- const formattedCount = itemCount?.toLocaleString();
80
+ const formattedCount = itemCount === undefined
81
+ ? undefined
82
+ : new Intl.NumberFormat(getLocale()).format(itemCount);
80
83
  const itemsLabel = itemCount === 1
81
84
  ? msg(str `${formattedCount} item`)
82
85
  : msg(str `${formattedCount} items`);
@@ -1 +1 @@
1
- {"version":3,"file":"collection-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/collection-tile.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, CSSResultGroup, html, nothing, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { localized, msg, str } from '@lit/localize';\nimport { collectionIcon } from '../../assets/img/icons/mediatype/collection';\nimport { formatUnitSize } from '../../utils/format-unit-size';\nimport { baseTileStyles } from './styles/tile-grid-shared-styles';\nimport { BaseTileComponent } from '../base-tile-component';\nimport { LayoutType } from '../models';\nimport '../image-block';\n\n@customElement('collection-tile')\n@localized()\nexport class CollectionTile extends BaseTileComponent {\n /*\n * Reactive properties inherited from BaseTileComponent:\n * - model?: TileModel;\n * - currentWidth?: number;\n * - currentHeight?: number;\n * - baseNavigationUrl?: string;\n * - baseImageUrl?: string;\n * - collectionPagePath?: string;\n * - sortParam: SortParam | null = null;\n * - creatorFilter?: string;\n * - mobileBreakpoint?: number;\n * - loggedIn = false;\n * - suppressBlurring = false;\n * - useLocalTime = false;\n */\n\n @property({ type: Boolean }) showInfoButton = false;\n\n @property({ type: String }) layoutType: LayoutType = 'default';\n\n render() {\n const containerClasses = classMap({\n container: true,\n minimal: this.layoutType === 'minimal',\n });\n\n return html`\n <div class=${containerClasses}>\n ${this.infoButtonTemplate}\n <div class=\"tile-details\">\n <div class=\"item-info\">\n ${this.getImageBlockTemplate} ${this.getTitleTemplate}\n </div>\n </div>\n\n ${this.getTileStatsTemplate}\n </div>\n `;\n }\n\n private get getImageBlockTemplate(): TemplateResult {\n return html`\n <image-block\n .model=${this.model}\n .baseImageUrl=${this.baseImageUrl}\n .viewSize=${'grid'}\n .suppressBlurring=${this.suppressBlurring}\n >\n </image-block>\n `;\n }\n\n private get getTitleTemplate() {\n return html`<div id=\"title\">\n <h3 class=\"truncated\">${this.model?.title}</h3>\n </div>`;\n }\n\n private get getTileStatsTemplate() {\n return html`\n <div id=\"item-stats\">\n <div id=\"item-mediatype\">${collectionIcon}</div>\n\n <div id=\"stats-row\">\n ${this.getItemsTemplate} ${this.getSizeTemplate}\n </div>\n </div>\n `;\n }\n\n private get getItemsTemplate() {\n const itemCount = this.model?.itemCount;\n const formattedCount = itemCount?.toLocaleString();\n const itemsLabel =\n itemCount === 1\n ? msg(str`${formattedCount} item`)\n : msg(str`${formattedCount} items`);\n\n return html`<span id=\"item-count\">${itemsLabel}</span>`;\n }\n\n private get getSizeTemplate() {\n const collectionSize = this.model?.collectionSize ?? 0;\n\n return collectionSize\n ? html`<span id=\"item-size\">${formatUnitSize(collectionSize, 1)}</span>`\n : ``;\n }\n\n private get infoButtonTemplate(): TemplateResult | typeof nothing {\n // &#9432; is an information icon\n return this.showInfoButton\n ? html`<button class=\"info-button\" @click=${this.infoButtonPressed}>\n &#9432;\n <span class=\"sr-only\">${msg('More info')}</span>\n </button>`\n : nothing;\n }\n\n private infoButtonPressed(e: PointerEvent) {\n e.preventDefault();\n const event = new CustomEvent<{ x: number; y: number }>(\n 'infoButtonPressed',\n { detail: { x: e.clientX, y: e.clientY } },\n );\n this.dispatchEvent(event);\n }\n\n static get styles(): CSSResultGroup {\n const tileBorderColor = css`var(--tileBorderColor, #555555)`;\n const tileBackgroundColor = css`var(--tileBackgroundColor, #666666)`;\n const whiteColor = css`#fff`;\n\n return [\n baseTileStyles,\n css`\n .container {\n background-color: ${tileBackgroundColor};\n border: 1px solid ${tileBorderColor};\n }\n\n .item-info {\n flex-grow: initial;\n }\n\n h4.truncated,\n h3.truncated {\n color: ${whiteColor};\n }\n\n #item-mediatype svg {\n filter: invert(100%);\n height: 2.5rem;\n align-items: baseline;\n }\n\n .container:hover > #title {\n text-decoration: underline;\n }\n\n /* this is a workaround for Safari 15 where the hover effects are not working */\n image-block:hover > #title {\n text-decoration: underline;\n }\n\n #item-stats {\n display: flex;\n padding: 0 5px 5px;\n align-items: center;\n }\n\n #stats-row {\n display: flex;\n align-items: baseline;\n color: ${whiteColor};\n flex-direction: column;\n margin-left: 10px;\n }\n\n .minimal #item-stats {\n display: none;\n }\n\n .minimal .truncated {\n -webkit-line-clamp: initial;\n }\n\n .minimal .item-info {\n padding-bottom: 5px;\n }\n `,\n ];\n }\n}\n"]}
1
+ {"version":3,"file":"collection-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/collection-tile.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, CSSResultGroup, html, nothing, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { localized, msg, str } from '@lit/localize';\nimport { collectionIcon } from '../../assets/img/icons/mediatype/collection';\nimport { formatUnitSize } from '../../utils/format-unit-size';\nimport { getLocale } from '../../utils/get-locale';\nimport { baseTileStyles } from './styles/tile-grid-shared-styles';\nimport { BaseTileComponent } from '../base-tile-component';\nimport { LayoutType } from '../models';\nimport '../image-block';\n\n@customElement('collection-tile')\n@localized()\nexport class CollectionTile extends BaseTileComponent {\n /*\n * Reactive properties inherited from BaseTileComponent:\n * - model?: TileModel;\n * - currentWidth?: number;\n * - currentHeight?: number;\n * - baseNavigationUrl?: string;\n * - baseImageUrl?: string;\n * - collectionPagePath?: string;\n * - sortParam: SortParam | null = null;\n * - creatorFilter?: string;\n * - mobileBreakpoint?: number;\n * - loggedIn = false;\n * - suppressBlurring = false;\n * - useLocalTime = false;\n */\n\n @property({ type: Boolean }) showInfoButton = false;\n\n @property({ type: String }) layoutType: LayoutType = 'default';\n\n render() {\n const containerClasses = classMap({\n container: true,\n minimal: this.layoutType === 'minimal',\n });\n\n return html`\n <div class=${containerClasses}>\n ${this.infoButtonTemplate}\n <div class=\"tile-details\">\n <div class=\"item-info\">\n ${this.getImageBlockTemplate} ${this.getTitleTemplate}\n </div>\n </div>\n\n ${this.getTileStatsTemplate}\n </div>\n `;\n }\n\n private get getImageBlockTemplate(): TemplateResult {\n return html`\n <image-block\n .model=${this.model}\n .baseImageUrl=${this.baseImageUrl}\n .viewSize=${'grid'}\n .suppressBlurring=${this.suppressBlurring}\n >\n </image-block>\n `;\n }\n\n private get getTitleTemplate() {\n return html`<div id=\"title\">\n <h3 class=\"truncated\">${this.model?.title}</h3>\n </div>`;\n }\n\n private get getTileStatsTemplate() {\n return html`\n <div id=\"item-stats\">\n <div id=\"item-mediatype\">${collectionIcon}</div>\n\n <div id=\"stats-row\">\n ${this.getItemsTemplate} ${this.getSizeTemplate}\n </div>\n </div>\n `;\n }\n\n private get getItemsTemplate() {\n const itemCount = this.model?.itemCount;\n const formattedCount =\n itemCount === undefined\n ? undefined\n : new Intl.NumberFormat(getLocale()).format(itemCount);\n const itemsLabel =\n itemCount === 1\n ? msg(str`${formattedCount} item`)\n : msg(str`${formattedCount} items`);\n\n return html`<span id=\"item-count\">${itemsLabel}</span>`;\n }\n\n private get getSizeTemplate() {\n const collectionSize = this.model?.collectionSize ?? 0;\n\n return collectionSize\n ? html`<span id=\"item-size\">${formatUnitSize(collectionSize, 1)}</span>`\n : ``;\n }\n\n private get infoButtonTemplate(): TemplateResult | typeof nothing {\n // &#9432; is an information icon\n return this.showInfoButton\n ? html`<button class=\"info-button\" @click=${this.infoButtonPressed}>\n &#9432;\n <span class=\"sr-only\">${msg('More info')}</span>\n </button>`\n : nothing;\n }\n\n private infoButtonPressed(e: PointerEvent) {\n e.preventDefault();\n const event = new CustomEvent<{ x: number; y: number }>(\n 'infoButtonPressed',\n { detail: { x: e.clientX, y: e.clientY } },\n );\n this.dispatchEvent(event);\n }\n\n static get styles(): CSSResultGroup {\n const tileBorderColor = css`var(--tileBorderColor, #555555)`;\n const tileBackgroundColor = css`var(--tileBackgroundColor, #666666)`;\n const whiteColor = css`#fff`;\n\n return [\n baseTileStyles,\n css`\n .container {\n background-color: ${tileBackgroundColor};\n border: 1px solid ${tileBorderColor};\n }\n\n .item-info {\n flex-grow: initial;\n }\n\n h4.truncated,\n h3.truncated {\n color: ${whiteColor};\n }\n\n #item-mediatype svg {\n filter: invert(100%);\n height: 2.5rem;\n align-items: baseline;\n }\n\n .container:hover > #title {\n text-decoration: underline;\n }\n\n /* this is a workaround for Safari 15 where the hover effects are not working */\n image-block:hover > #title {\n text-decoration: underline;\n }\n\n #item-stats {\n display: flex;\n padding: 0 5px 5px;\n align-items: center;\n }\n\n #stats-row {\n display: flex;\n align-items: baseline;\n color: ${whiteColor};\n flex-direction: column;\n margin-left: 10px;\n }\n\n .minimal #item-stats {\n display: none;\n }\n\n .minimal .truncated {\n -webkit-line-clamp: initial;\n }\n\n .minimal .item-info {\n padding-bottom: 5px;\n }\n `,\n ];\n }\n}\n"]}
@@ -10,6 +10,7 @@ import DOMPurify from 'dompurify';
10
10
  import { suppressedCollections } from '../../models';
11
11
  import { BaseTileComponent } from '../base-tile-component';
12
12
  import { formatCount } from '../../utils/format-count';
13
+ import { getLocale } from '../../utils/get-locale';
13
14
  import { isFirstMillisecondOfUTCYear } from '../../utils/local-date-from-utc';
14
15
  import { tileActionStyles } from '../../styles/tile-action-styles';
15
16
  import '../image-block';
@@ -225,10 +226,18 @@ let TileList = class TileList extends BaseTileComponent {
225
226
  return this.metadataTemplate(`${formatCount(viewCount, this.formatSize)}`, this.displayValueProvider.viewsLabel);
226
227
  }
227
228
  get ratingTemplate() {
228
- return this.metadataTemplate(this.model?.averageRating, msg('Avg Rating'));
229
+ const { averageRating } = this.model ?? {};
230
+ const formattedRating = averageRating
231
+ ? new Intl.NumberFormat(getLocale()).format(averageRating)
232
+ : averageRating;
233
+ return this.metadataTemplate(formattedRating, msg('Avg Rating'));
229
234
  }
230
235
  get reviewsTemplate() {
231
- return this.metadataTemplate(this.model?.commentCount, msg('Reviews'));
236
+ const { commentCount } = this.model ?? {};
237
+ const formattedCount = commentCount
238
+ ? new Intl.NumberFormat(getLocale()).format(commentCount)
239
+ : commentCount;
240
+ return this.metadataTemplate(formattedCount, msg('Reviews'));
232
241
  }
233
242
  get topicsTemplate() {
234
243
  if (!this.model?.subjects || this.model.subjects.length === 0) {