@openrails/contentkit-ui 0.93.0 → 0.94.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -4
- package/dist/client/browser-reader-preferences.d.ts +38 -0
- package/dist/client/browser-reader-preferences.js +172 -0
- package/dist/client/browser-reader-preferences.js.map +1 -0
- package/dist/client/client.d.ts +3 -0
- package/dist/client/client.js +27 -25
- package/dist/client/client.js.map +1 -1
- package/dist/client/discovery.js +24 -23
- package/dist/client/discovery.js.map +1 -1
- package/dist/client/generated/routes.d.ts +15 -2
- package/dist/client/generated/routes.js +18 -2
- package/dist/client/generated/routes.js.map +1 -1
- package/dist/client/generated/wire.d.ts +5 -0
- package/dist/client/generated/wire.js.map +1 -1
- package/dist/client/http.d.ts +18 -1
- package/dist/client/http.js +67 -26
- package/dist/client/http.js.map +1 -1
- package/dist/client/index.d.ts +2 -0
- package/dist/client/reader-preferences.d.ts +46 -0
- package/dist/client/reader-preferences.js +147 -0
- package/dist/client/reader-preferences.js.map +1 -0
- package/dist/client.js +8 -6
- package/dist/components/content/filters.d.ts +1 -1
- package/dist/components/content/filters.js +1 -5
- package/dist/components/content/filters.js.map +1 -1
- package/dist/components/content/reader-settings.d.ts +1 -1
- package/dist/components/content/reader-settings.js +67 -44
- package/dist/components/content/reader-settings.js.map +1 -1
- package/dist/locales/discovery/de.js +2 -0
- package/dist/locales/discovery/de.js.map +1 -1
- package/dist/locales/discovery/en.d.ts +2 -0
- package/dist/locales/discovery/en.js +2 -0
- package/dist/locales/discovery/en.js.map +1 -1
- package/dist/locales/discovery/es.js +2 -0
- package/dist/locales/discovery/es.js.map +1 -1
- package/dist/locales/discovery/ja.js +2 -0
- package/dist/locales/discovery/ja.js.map +1 -1
- package/dist/locales/discovery/ko.js +2 -0
- package/dist/locales/discovery/ko.js.map +1 -1
- package/dist/locales/discovery/zh.js +2 -0
- package/dist/locales/discovery/zh.js.map +1 -1
- package/dist/locales/en.d.ts +2 -0
- package/dist/react/context.d.ts +1 -1
- package/dist/react/context.js.map +1 -1
- package/dist/react/discovery.d.ts +2 -2
- package/dist/react/discovery.js +187 -149
- package/dist/react/discovery.js.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/provider.d.ts +4 -1
- package/dist/react/provider.js +38 -31
- package/dist/react/provider.js.map +1 -1
- package/dist/react/reader-preferences.d.ts +13 -0
- package/dist/react/reader-preferences.js +15 -0
- package/dist/react/reader-preferences.js.map +1 -0
- package/dist/react.js +3 -2
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reader-preferences.js","names":[],"sources":["../../src/client/reader-preferences.ts"],"sourcesContent":["import { ContentKitError, toContentKitError } from \"./errors.js\";\nimport type { ContentFilters, ContentFiltersUpdate } from \"./generated/wire.js\";\nimport type { Http } from \"./http.js\";\nimport { call } from \"./route.js\";\n\n/** The host's account-owned preferred language, without a route fallback. */\nexport interface LanguagePreference {\n load(accountId: string): Promise<string | null | undefined>;\n save(language: string, accountId: string): Promise<void>;\n}\n\nexport interface ReaderPreferenceState {\n language?: string;\n loading: boolean;\n saving: boolean;\n pending: boolean;\n error?: ContentKitError;\n}\n\n/** Guest storage and explicit, retryable registration inheritance. */\nexport class ReaderPreferencesClient {\n readonly browser;\n private viewer?: string | null;\n private adapter?: LanguagePreference;\n private accountLanguage?: string;\n private loading = false;\n private saving = false;\n private failure?: ContentKitError;\n private generation = 0;\n private syncing?: Promise<void>;\n private syncingGeneration = -1;\n private state: ReaderPreferenceState = Object.freeze({ loading: false, saving: false, pending: false });\n private readonly listeners = new Set<() => void>();\n private stopBrowser?: () => void;\n private guestValue: string;\n\n constructor(private readonly http: Http) {\n this.browser = http.browserPreferences;\n this.guestValue = JSON.stringify(this.browser.snapshot());\n }\n\n readonly snapshot = (): ReaderPreferenceState => this.state;\n readonly subscribe = (listener: () => void): (() => void) => {\n if (!this.listeners.size) {\n this.stopBrowser = this.browser.subscribe(this.browserChanged);\n if (typeof window !== \"undefined\") window.addEventListener(\"online\", this.retryOnline);\n }\n this.listeners.add(listener);\n this.refresh();\n return () => {\n this.listeners.delete(listener);\n if (!this.listeners.size) {\n this.stopBrowser?.();\n if (typeof window !== \"undefined\") window.removeEventListener(\"online\", this.retryOnline);\n }\n };\n };\n\n configure(viewer: string | null | undefined, adapter?: LanguagePreference): void {\n this.http.setViewer(viewer);\n if (viewer === this.viewer && adapter === this.adapter) return;\n this.viewer = viewer;\n this.adapter = adapter;\n const generation = ++this.generation;\n this.accountLanguage = undefined;\n this.failure = undefined;\n this.saving = false;\n this.loading = !!viewer && !!adapter;\n this.refresh();\n if (viewer) void this.activate(generation).catch(() => {});\n }\n\n async setLanguage(language: string): Promise<void> {\n try { language = Intl.getCanonicalLocales(language)[0]!; }\n catch { throw new ContentKitError(\"invalid_request\", \"Invalid preferred language.\"); }\n if (!language) throw new ContentKitError(\"invalid_request\", \"Invalid preferred language.\");\n const account = this.viewer;\n if (account == null) { this.browser.setLanguage(language); this.refresh(); return; }\n if (!this.adapter) throw new Error(\"contentkit: account language preference adapter is required\");\n const generation = this.generation;\n this.saving = true;\n this.failure = undefined;\n this.refresh();\n try {\n await this.adapter.save(language, account);\n if (generation !== this.generation) throw new ContentKitError(\"aborted\", \"The account changed.\");\n this.accountLanguage = language;\n this.browser.complete(account, \"language\");\n } catch (error) {\n if (generation === this.generation) this.failure = toContentKitError(error);\n throw error;\n } finally {\n if (generation === this.generation) { this.saving = false; this.refresh(); }\n }\n }\n\n /** Call only after a confirmed registration event, never on ordinary login. */\n async inheritAfterRegistration(account: string): Promise<void> {\n this.browser.register(account);\n this.refresh();\n return this.viewer === account ? this.retryInheritance() : Promise.resolve();\n }\n\n async retry(): Promise<void> {\n if (!this.viewer) return;\n const generation = this.generation;\n this.failure = undefined;\n this.loading = true;\n this.refresh();\n await this.activate(generation);\n if (generation === this.generation && this.failure) throw this.failure;\n }\n\n retryInheritance(): Promise<void> {\n if (!this.viewer || !this.browser.pending(this.viewer)) return Promise.resolve();\n if (this.syncing && this.syncingGeneration === this.generation) return this.syncing;\n const account = this.viewer, generation = this.generation;\n const task = this.inherit(account, generation).finally(() => {\n if (this.syncing === task) this.syncing = undefined;\n this.refresh();\n });\n this.syncing = task;\n this.syncingGeneration = generation;\n this.refresh();\n return this.syncing;\n }\n\n private async activate(generation: number): Promise<void> {\n try {\n await this.retryInheritance();\n if (generation !== this.generation) return;\n const language = this.viewer ? await this.adapter?.load(this.viewer) : undefined;\n if (generation === this.generation) this.accountLanguage = language ?? undefined;\n } catch (error) {\n if (generation === this.generation) this.failure = toContentKitError(error);\n } finally {\n if (generation === this.generation) { this.loading = false; this.refresh(); }\n }\n }\n\n private async inherit(account: string, generation: number): Promise<void> {\n this.failure = undefined;\n try {\n let pending = this.browser.pending(account)!;\n if (!pending.languageDone) {\n if (!this.adapter) throw new Error(\"contentkit: account language preference adapter is required\");\n const language = (await this.adapter.load(account)) ?? null;\n if (generation !== this.generation) return;\n const live = this.browser.pending(account);\n if (live && !live.languageDone) {\n if (!live.languageObserved) this.browser.observeLanguage(account, language);\n pending = this.browser.pending(account)!;\n // The initial registration default may be non-null. A later different\n // choice wins over a retry of the captured guest preference.\n const changedLater = language !== pending.initialLanguage && language !== pending.language;\n if (!changedLater && language !== pending.language && pending.language) await this.adapter.save(pending.language, account);\n if (generation !== this.generation) return;\n this.accountLanguage = changedLater ? language ?? undefined : pending.language;\n this.browser.complete(account, \"language\");\n }\n }\n pending = this.browser.pending(account)!;\n if (pending && !pending.filtersDone) {\n if (generation !== this.generation) return;\n const inventory = await this.http.request<ContentFilters>(`${this.http.mount(\"discovery\")}/content-filters`, { guestPreferences: false });\n if (generation !== this.generation) return;\n const known = new Set(inventory.filters.map((f) => f.entity.id));\n await call<\"POST\", \"/me/content-filters/initialize\", ContentFilters>(this.http, \"POST\", \"/me/content-filters/initialize\", {\n body: { account_id: account, filters: pending.filters.filter((f) => known.has(f.group_id)), include_deleted: false } satisfies ContentFiltersUpdate & { account_id: string },\n });\n if (generation !== this.generation) return;\n this.browser.complete(account, \"filters\");\n }\n if (generation === this.generation) this.http.captureChanges()({ type: \"contentFilters.changed\" });\n } catch (error) {\n if (generation === this.generation) this.failure = toContentKitError(error);\n throw error;\n }\n }\n\n private readonly retryOnline = (): void => {\n if (this.state.pending || this.state.error) void this.retry().catch(() => {});\n };\n private readonly browserChanged = (): void => {\n const value = JSON.stringify(this.browser.snapshot());\n if (this.viewer === null && value !== this.guestValue) this.http.captureChanges()({ type: \"contentFilters.changed\" });\n this.guestValue = value;\n this.refresh();\n };\n\n private refresh(): void {\n const next: ReaderPreferenceState = {\n language: this.viewer == null ? this.browser.snapshot().language : this.accountLanguage,\n loading: this.loading, saving: this.saving,\n pending: !!this.viewer && !!this.browser.pending(this.viewer), error: this.failure,\n };\n if (next.language === this.state.language && next.loading === this.state.loading && next.saving === this.state.saving && next.pending === this.state.pending && next.error === this.state.error) return;\n this.state = Object.freeze(next);\n for (const listener of this.listeners) { try { listener(); } catch { /* Observers do not own persistence. */ } }\n }\n}\n"],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -34,9 +34,11 @@ import { EntitiesClient as et } from "./client/entities.js";
|
|
|
34
34
|
import { OffersClient as tt } from "./client/offers.js";
|
|
35
35
|
import { StatsClient as nt } from "./client/stats.js";
|
|
36
36
|
import { VersionsClient as rt, isPending as it } from "./client/versions.js";
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
42
|
-
|
|
37
|
+
import { BrowserReaderPreferences as at } from "./client/browser-reader-preferences.js";
|
|
38
|
+
import { NotificationsClient as ot } from "./client/notifications.js";
|
|
39
|
+
import { ReaderPreferencesClient as st } from "./client/reader-preferences.js";
|
|
40
|
+
import { createContentKitClient as ct } from "./client/client.js";
|
|
41
|
+
import { LETTERS as lt, attributeInput as ut, fold as dt, fromLocalInput as ft, humanize as pt, letterOf as mt, parseAttribute as ht, parseAttributes as gt, slugify as _t, toLocalInput as vt } from "./client/group-fields.js";
|
|
42
|
+
import { Beacons as yt, eventId as bt, readerSession as xt } from "./client/beacons.js";
|
|
43
|
+
import { emptyReaderMeta as St, matchAudio as Ct, readerMetaProblems as wt, readerNames as Tt } from "./client/reader-meta.js";
|
|
44
|
+
export { he as ABR_DEFAULTS, qe as BansClient, yt as Beacons, at as BrowserReaderPreferences, i as CLIENT_ERROR_CODES, Ve as CatalogClient, He as CodesClient, Je as CommentsClient, a as ContentKitError, Ue as ContentsClient, e as DEFAULT_DENSITY, Ye as DiscoveryClient, o as ERROR_CODES, et as EntitiesClient, Xe as FavoritesClient, We as IMAGE_SCHEME, ae as ItemUploadQueue, lt as LETTERS, T as MAX_PART_SIZE, E as MAX_SINGLE_PUT, D as MIN_PART_SIZE, w as MediaApi, N as MediaClient, Ze as ModerationClient, ge as NETWORK_FAILURES_BEFORE_ERROR, ot as NotificationsClient, tt as OffersClient, Fe as PLAYBACK_SPEEDS, Ie as PLAYER_TRACKS_KEY, Le as PLAYER_VOLUME_KEY, k as Pacer, Qe as PollsClient, ue as READ_CHUNK, _e as REFRESH_BEFORE_EXPIRY, $e as ReactionsClient, st as ReaderPreferencesClient, nt as StatsClient, rt as VersionsClient, ve as abrHlsConfig, L as acceptOf, g as aspectOf, ut as attributeInput, P as backoff, v as call, ye as capRung, Y as centeredCrop, b as checkRef, de as chunkOffsets, be as classifyHlsError, xe as classifyMediaError, X as constrainCrop, ct as createContentKitClient, oe as decodeImage, R as defaultImage, A as defaultTransport, t as densityFor, Z as editOf, Q as editedSize, St as emptyReaderMeta, ie as encodeRemaining, bt as eventId, Se as expiryDelay, s as failureError, j as fetchTransport, z as filesFor, f as fill, dt as fold, Oe as formatDuration, ft as fromLocalInput, $ as fromRotated, ke as galleryItems, Ce as hlsConfig, pt as humanize, Ge as imageRef, Ke as imageRefs, we as initialEstimate, se as isAnimatedImage, Ae as isAudioType, x as isContentId, c as isContentKitError, je as isImageType, B as isPattern, it as isPending, fe as isProcessing, Me as isSubtitleType, Ne as isVideoType, S as itemKey, mt as letterOf, Ct as matchAudio, pe as mergeReads, ht as parseAttribute, gt as parseAttributes, Re as parseSpriteVtt, n as pickRendition, ze as playerKeyAction, me as processing, p as publicRenditions, m as publicURL, _ as ratio, V as ratioLabel, ce as reactionVerb, l as readContentKitError, wt as readerMetaProblems, Tt as readerNames, xt as readerSession, Te as refreshable, Be as resumeAt, ee as rotation, y as routeURL, H as ruleDir, U as ruleFor, te as sameEdit, C as sameItem, F as samePath, le as sameTarget, W as screenFiles, O as sha256Hex, _t as slugify, r as sortRenditions, h as srcSet, G as stableImage, Pe as stageAspect, Ee as startRung, De as statusKind, I as stem, u as toContentKitError, vt as toLocalInput, ne as toOriginal, re as toRotated, d as transportFailure, K as uniqueName, q as uploadRules, J as withMediaType, M as xhrTransport };
|
|
@@ -12,7 +12,7 @@ export interface ContentFilterSettingsProps {
|
|
|
12
12
|
className?: string;
|
|
13
13
|
appearance?: ContentKitUiAppearance;
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
15
|
+
/** Show or hide configured content for this browser or signed-in account. */
|
|
16
16
|
export declare function ContentFilterSettings(p: ContentFilterSettingsProps): import('react').JSX.Element | null;
|
|
17
17
|
export interface ReleaseDateIndexProps {
|
|
18
18
|
/** Which contents count: the listing's filters. */
|
|
@@ -21,10 +21,6 @@ function v(r) {
|
|
|
21
21
|
"data-ckui": "content-filters",
|
|
22
22
|
children: e
|
|
23
23
|
});
|
|
24
|
-
if (b?.viewer === null) return C(/* @__PURE__ */ h("p", {
|
|
25
|
-
className: "text-muted-foreground",
|
|
26
|
-
children: v("contents.filtersSignedOut")
|
|
27
|
-
}));
|
|
28
24
|
if (!x.filters) return x.error ? C(/* @__PURE__ */ h(o, { children: s(d, x.error) })) : C(/* @__PURE__ */ h(a, { className: "h-24 w-full" }));
|
|
29
25
|
let w = x.filters;
|
|
30
26
|
return !w.filters.length && r.includeDeleted === !1 ? null : C(/* @__PURE__ */ g(m, { children: [
|
|
@@ -47,7 +43,7 @@ function v(r) {
|
|
|
47
43
|
})]
|
|
48
44
|
}, e.entity.id))
|
|
49
45
|
}) : null,
|
|
50
|
-
r.includeDeleted !== !1 && /* @__PURE__ */ g("div", {
|
|
46
|
+
r.includeDeleted !== !1 && b?.viewer !== null && /* @__PURE__ */ g("div", {
|
|
51
47
|
className: "flex items-center gap-3",
|
|
52
48
|
children: [/* @__PURE__ */ h(l, {
|
|
53
49
|
id: `${y}-deleted`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.js","names":[],"sources":["../../../src/components/content/filters.tsx"],"sourcesContent":["import { cn } from \"cn\";\nimport { useContext, useId } from \"react\";\nimport type { ContentKitUiAppearance } from \"../../appearance.js\";\nimport type { ContentKitClient } from \"../../client/client.js\";\nimport type { ReleaseDatesQuery } from \"../../client/discovery.js\";\nimport { useMessages } from \"../../i18n/context.js\";\nimport { ContentKitContext, type ContentKitErrorHandler } from \"../../react/context.js\";\nimport { useContentFilters, useReleaseDates } from \"../../react/discovery.js\";\nimport { ContentKitUiRoot } from \"../../scope.js\";\nimport { Button } from \"#ckui/ui/button\";\nimport { Label } from \"#ckui/ui/label\";\nimport { Skeleton } from \"#ckui/ui/skeleton\";\nimport { Switch } from \"#ckui/ui/switch\";\nimport { contentError, ErrorLine, useAction } from \"../social/parts.js\";\n\nexport interface ContentFilterSettingsProps {\n /** Labels and group names in this language; default the provider's. */\n language?: string;\n /** Offer listing deleted content the reader holds. Default true. */\n includeDeleted?: boolean;\n client?: ContentKitClient;\n onError?: ContentKitErrorHandler;\n className?: string;\n appearance?: ContentKitUiAppearance;\n}\n\n/**
|
|
1
|
+
{"version":3,"file":"filters.js","names":[],"sources":["../../../src/components/content/filters.tsx"],"sourcesContent":["import { cn } from \"cn\";\nimport { useContext, useId } from \"react\";\nimport type { ContentKitUiAppearance } from \"../../appearance.js\";\nimport type { ContentKitClient } from \"../../client/client.js\";\nimport type { ReleaseDatesQuery } from \"../../client/discovery.js\";\nimport { useMessages } from \"../../i18n/context.js\";\nimport { ContentKitContext, type ContentKitErrorHandler } from \"../../react/context.js\";\nimport { useContentFilters, useReleaseDates } from \"../../react/discovery.js\";\nimport { ContentKitUiRoot } from \"../../scope.js\";\nimport { Button } from \"#ckui/ui/button\";\nimport { Label } from \"#ckui/ui/label\";\nimport { Skeleton } from \"#ckui/ui/skeleton\";\nimport { Switch } from \"#ckui/ui/switch\";\nimport { contentError, ErrorLine, useAction } from \"../social/parts.js\";\n\nexport interface ContentFilterSettingsProps {\n /** Labels and group names in this language; default the provider's. */\n language?: string;\n /** Offer listing deleted content the reader holds. Default true. */\n includeDeleted?: boolean;\n client?: ContentKitClient;\n onError?: ContentKitErrorHandler;\n className?: string;\n appearance?: ContentKitUiAppearance;\n}\n\n/** Show or hide configured content for this browser or signed-in account. */\nexport function ContentFilterSettings(p: ContentFilterSettingsProps) {\n const m = useMessages();\n const { t } = m;\n const id = useId();\n const ctx = useContext(ContentKitContext);\n const f = useContentFilters({ language: p.language, client: p.client });\n const save = useAction(\"filters.save\", p.onError);\n const root = (children: React.ReactNode) => (\n <ContentKitUiRoot appearance={p.appearance} className={cn(\"grid gap-3 text-sm\", p.className)} data-ckui=\"content-filters\">\n {children}\n </ContentKitUiRoot>\n );\n if (!f.filters) {\n if (f.error) return root(<ErrorLine>{contentError(m, f.error)}</ErrorLine>);\n return root(<Skeleton className=\"h-24 w-full\" />);\n }\n const filters = f.filters;\n if (!filters.filters.length && p.includeDeleted === false) return null;\n return root(\n <>\n {filters.filters.length ? (\n <ul className=\"grid divide-y divide-border rounded-lg border border-border\">\n {filters.filters.map((x) => (\n <li key={x.entity.id} className=\"flex flex-wrap items-center gap-3 p-3\" data-ckui=\"content-filter\" data-slug={x.entity.slug} data-visible={x.visible}>\n <Switch id={`${id}-${x.entity.id}`} checked={x.visible} disabled={save.pending} onCheckedChange={(v) => void save.run(() => f.setVisible(x.entity.id, v))} />\n <Label htmlFor={`${id}-${x.entity.id}`} className=\"min-w-0 flex-1\">\n {x.label || x.entity.name}\n </Label>\n </li>\n ))}\n </ul>\n ) : null}\n {p.includeDeleted !== false && ctx?.viewer !== null && (\n <div className=\"flex items-center gap-3\">\n <Switch id={`${id}-deleted`} checked={filters.include_deleted} disabled={save.pending} onCheckedChange={(v) => void save.run(() => f.setIncludeDeleted(v))} />\n <Label htmlFor={`${id}-deleted`}>{t(\"contents.includeDeleted\")}</Label>\n </div>\n )}\n <ErrorLine error={save.error} />\n </>,\n );\n}\n\nexport interface ReleaseDateIndexProps {\n /** Which contents count: the listing's filters. */\n query?: ReleaseDatesQuery;\n /** The bucket chosen (a day YYYY-MM-DD or month YYYY-MM): list with released_on set to it. */\n selected?: string;\n onSelect?: (date: string) => void;\n client?: ContentKitClient;\n className?: string;\n appearance?: ContentKitUiAppearance;\n}\n\n/** The release date index: per month or day, newest first, how many contents and how many free. */\nexport function ReleaseDateIndex({ query = {}, selected, onSelect, client, className, appearance }: ReleaseDateIndexProps) {\n const m = useMessages();\n const { t } = m;\n const dates = useReleaseDates(query, { client });\n const label = (date: string) => {\n const [y, mo, d] = date.split(\"-\").map(Number);\n const at = new Date(Date.UTC(y!, (mo ?? 1) - 1, d ?? 1));\n return new Intl.DateTimeFormat(m.language, d ? { dateStyle: \"medium\", timeZone: \"UTC\" } : { year: \"numeric\", month: \"long\", timeZone: \"UTC\" }).format(at);\n };\n return (\n <ContentKitUiRoot appearance={appearance} className={cn(\"grid gap-2 text-sm\", className)} data-ckui=\"release-dates\">\n {dates.loading && !dates.items.length ? (\n <Skeleton className=\"h-24 w-full\" />\n ) : dates.error && !dates.items.length ? (\n <ErrorLine>{contentError(m, dates.error)}</ErrorLine>\n ) : !dates.items.length ? (\n <p className=\"text-muted-foreground\">{t(\"contents.noDates\")}</p>\n ) : (\n <ul className=\"grid gap-1\">\n {dates.items.map((d) => (\n <li key={d.date}>\n <button\n type=\"button\"\n aria-pressed={selected === d.date}\n className={cn(\"flex w-full items-center justify-between gap-3 rounded-md px-2 py-1.5 text-start hover:bg-muted\", selected === d.date && \"bg-muted font-medium\")}\n onClick={() => onSelect?.(d.date)}\n data-ckui=\"release-date\"\n data-date={d.date}\n >\n <span>{label(d.date)}</span>\n <span className=\"text-xs text-muted-foreground tabular-nums\">\n {m.plural(\"contents.items\", d.count)}\n {d.free < d.count && ` · ${m.plural(\"contents.free\", d.free)}`}\n </span>\n </button>\n </li>\n ))}\n </ul>\n )}\n {dates.hasMore && (\n <Button variant=\"outline\" size=\"sm\" className=\"justify-self-center\" disabled={dates.loadingMore} onClick={() => void dates.loadMore()}>\n {t(\"contents.loadMore\")}\n </Button>\n )}\n </ContentKitUiRoot>\n );\n}\n"],"mappings":"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"}
|
|
@@ -15,5 +15,5 @@ export interface ReaderSettingsProps {
|
|
|
15
15
|
className?: string;
|
|
16
16
|
appearance?: ContentKitUiAppearance;
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
18
|
+
/** Language preferences and filters for both guests and signed-in readers. */
|
|
19
19
|
export declare function ReaderSettings(p: ReaderSettingsProps): import('react').JSX.Element;
|
|
@@ -1,95 +1,118 @@
|
|
|
1
1
|
import { useMessages as e } from "../../i18n/context.js";
|
|
2
2
|
import { AppearanceContext as t, ContentKitUiRoot as n } from "../../scope.js";
|
|
3
|
-
import {
|
|
3
|
+
import { useOptionalContentKitClient as r } from "../../react/context.js";
|
|
4
4
|
import { Button as i } from "../../ui/button.js";
|
|
5
5
|
import { Dialog as a, DialogContent as o, DialogDescription as s, DialogHeader as c, DialogTitle as l, DialogTrigger as u } from "../../ui/dialog.js";
|
|
6
6
|
import { Label as d } from "../../ui/label.js";
|
|
7
7
|
import { Select as f, SelectContent as p, SelectItem as m, SelectTrigger as h, SelectValue as g } from "../../ui/select.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
8
|
+
import { ErrorLine as _, useAction as v } from "../social/parts.js";
|
|
9
|
+
import { useContentFilters as y } from "../../react/discovery.js";
|
|
10
|
+
import { ContentFilterSettings as b } from "./filters.js";
|
|
11
|
+
import { useContext as x, useId as S, useSyncExternalStore as C } from "react";
|
|
12
|
+
import { jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
13
|
+
import { Settings01Icon as E } from "@hugeicons/core-free-icons";
|
|
14
|
+
import { HugeiconsIcon as D } from "@hugeicons/react";
|
|
14
15
|
//#region src/components/content/reader-settings.tsx
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
var O = Object.freeze({
|
|
17
|
+
loading: !1,
|
|
18
|
+
saving: !1,
|
|
19
|
+
pending: !1
|
|
20
|
+
}), k = () => O, A = () => () => {};
|
|
21
|
+
function j(y) {
|
|
22
|
+
let { t: b } = e(), O = S(), j = r(y.client), N = j?.preferences, P = C(N?.subscribe ?? A, N?.snapshot ?? k, k), F = y.language, I = v("preferences.save", y.onError), L = x(t), R = y.appearance ?? L;
|
|
23
|
+
return /* @__PURE__ */ w(t.Provider, {
|
|
24
|
+
value: R,
|
|
25
|
+
children: /* @__PURE__ */ w(n, {
|
|
26
|
+
className: y.className,
|
|
27
|
+
appearance: R,
|
|
22
28
|
"data-ckui": "reader-settings",
|
|
23
|
-
children: /* @__PURE__ */
|
|
24
|
-
render: /* @__PURE__ */
|
|
29
|
+
children: /* @__PURE__ */ T(a, { children: [/* @__PURE__ */ T(u, {
|
|
30
|
+
render: /* @__PURE__ */ w(i, {
|
|
25
31
|
type: "button",
|
|
26
32
|
variant: "ghost",
|
|
27
33
|
size: "sm",
|
|
28
|
-
"aria-label":
|
|
34
|
+
"aria-label": b("readerSettings.title"),
|
|
29
35
|
"data-ckui": "reader-settings-trigger"
|
|
30
36
|
}),
|
|
31
|
-
children: [/* @__PURE__ */
|
|
32
|
-
icon:
|
|
37
|
+
children: [/* @__PURE__ */ w(D, {
|
|
38
|
+
icon: E,
|
|
33
39
|
strokeWidth: 2,
|
|
34
40
|
className: "size-4",
|
|
35
41
|
"aria-hidden": !0
|
|
36
|
-
}), /* @__PURE__ */
|
|
37
|
-
}), /* @__PURE__ */
|
|
42
|
+
}), /* @__PURE__ */ w("span", { children: y.language.toUpperCase() })]
|
|
43
|
+
}), /* @__PURE__ */ T(o, {
|
|
38
44
|
className: "max-h-[calc(100dvh-2rem)] overflow-y-auto",
|
|
39
45
|
children: [
|
|
40
|
-
/* @__PURE__ */
|
|
46
|
+
/* @__PURE__ */ T(c, { children: [/* @__PURE__ */ w(l, { children: b("readerSettings.title") }), /* @__PURE__ */ w(s, {
|
|
41
47
|
className: "sr-only",
|
|
42
|
-
children:
|
|
48
|
+
children: b("readerSettings.description")
|
|
43
49
|
})] }),
|
|
44
|
-
/* @__PURE__ */
|
|
50
|
+
/* @__PURE__ */ T("div", {
|
|
45
51
|
className: "grid gap-3",
|
|
46
|
-
children: [/* @__PURE__ */
|
|
47
|
-
htmlFor: `${
|
|
48
|
-
children:
|
|
49
|
-
}), /* @__PURE__ */
|
|
50
|
-
value:
|
|
52
|
+
children: [/* @__PURE__ */ w(d, {
|
|
53
|
+
htmlFor: `${O}-language`,
|
|
54
|
+
children: b("listing.language")
|
|
55
|
+
}), /* @__PURE__ */ T(f, {
|
|
56
|
+
value: F,
|
|
57
|
+
disabled: I.pending || P.loading,
|
|
51
58
|
onValueChange: (e) => {
|
|
52
|
-
e && e !==
|
|
59
|
+
e && e !== F && I.run(async () => {
|
|
60
|
+
await N?.setLanguage(e), y.onLanguageChange(e);
|
|
61
|
+
});
|
|
53
62
|
},
|
|
54
|
-
children: [/* @__PURE__ */
|
|
55
|
-
id: `${
|
|
63
|
+
children: [/* @__PURE__ */ w(h, {
|
|
64
|
+
id: `${O}-language`,
|
|
56
65
|
className: "w-full",
|
|
57
|
-
children: /* @__PURE__ */
|
|
58
|
-
}), /* @__PURE__ */
|
|
66
|
+
children: /* @__PURE__ */ w(g, { children: y.languages.find((e) => e.value === F)?.label ?? F })
|
|
67
|
+
}), /* @__PURE__ */ w(p, { children: y.languages.map((e) => /* @__PURE__ */ w(m, {
|
|
59
68
|
value: e.value,
|
|
60
69
|
children: e.label
|
|
61
70
|
}, e.value)) })]
|
|
62
71
|
})]
|
|
63
72
|
}),
|
|
64
|
-
|
|
65
|
-
language:
|
|
66
|
-
client:
|
|
67
|
-
onError:
|
|
73
|
+
j && /* @__PURE__ */ w(M, {
|
|
74
|
+
language: y.language,
|
|
75
|
+
client: j,
|
|
76
|
+
onError: y.onError
|
|
77
|
+
}),
|
|
78
|
+
(P.pending || I.pending) && !P.error && /* @__PURE__ */ w("p", {
|
|
79
|
+
className: "text-sm text-muted-foreground",
|
|
80
|
+
role: "status",
|
|
81
|
+
children: b("readerSettings.savingPreferences")
|
|
82
|
+
}),
|
|
83
|
+
/* @__PURE__ */ w(_, { children: P.error || I.error ? b("readerSettings.preferencesNotSaved") : null }),
|
|
84
|
+
P.error && N && /* @__PURE__ */ w(i, {
|
|
85
|
+
type: "button",
|
|
86
|
+
variant: "outline",
|
|
87
|
+
onClick: () => {
|
|
88
|
+
I.run(() => N.retry());
|
|
89
|
+
},
|
|
90
|
+
children: b("common.retry")
|
|
68
91
|
})
|
|
69
92
|
]
|
|
70
93
|
})] })
|
|
71
94
|
})
|
|
72
95
|
});
|
|
73
96
|
}
|
|
74
|
-
function
|
|
75
|
-
let { t: n } = e(), r =
|
|
97
|
+
function M(t) {
|
|
98
|
+
let { t: n } = e(), r = S(), { filters: i } = y({
|
|
76
99
|
language: t.language,
|
|
77
100
|
client: t.client
|
|
78
101
|
});
|
|
79
|
-
return i?.filters.length === 0 ? null : /* @__PURE__ */
|
|
102
|
+
return i?.filters.length === 0 ? null : /* @__PURE__ */ T("section", {
|
|
80
103
|
"aria-labelledby": r,
|
|
81
104
|
className: "grid gap-3",
|
|
82
|
-
children: [/* @__PURE__ */
|
|
105
|
+
children: [/* @__PURE__ */ w("h3", {
|
|
83
106
|
id: r,
|
|
84
107
|
className: "font-medium",
|
|
85
108
|
children: n("readerSettings.filters")
|
|
86
|
-
}), /* @__PURE__ */
|
|
109
|
+
}), /* @__PURE__ */ w(b, {
|
|
87
110
|
...t,
|
|
88
111
|
includeDeleted: !1
|
|
89
112
|
})]
|
|
90
113
|
});
|
|
91
114
|
}
|
|
92
115
|
//#endregion
|
|
93
|
-
export {
|
|
116
|
+
export { j as ReaderSettings };
|
|
94
117
|
|
|
95
118
|
//# sourceMappingURL=reader-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader-settings.js","names":[],"sources":["../../../src/components/content/reader-settings.tsx"],"sourcesContent":["import { Settings01Icon } from \"@hugeicons/core-free-icons\";\nimport { HugeiconsIcon } from \"@hugeicons/react\";\nimport { useContext, useId } from \"react\";\nimport type { ContentKitUiAppearance } from \"../../appearance.js\";\nimport type { ContentKitClient } from \"../../client/client.js\";\nimport { useMessages } from \"../../i18n/context.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"reader-settings.js","names":[],"sources":["../../../src/components/content/reader-settings.tsx"],"sourcesContent":["import { Settings01Icon } from \"@hugeicons/core-free-icons\";\nimport { HugeiconsIcon } from \"@hugeicons/react\";\nimport { useContext, useId, useSyncExternalStore } from \"react\";\nimport type { ContentKitUiAppearance } from \"../../appearance.js\";\nimport type { ContentKitClient } from \"../../client/client.js\";\nimport { useMessages } from \"../../i18n/context.js\";\nimport { useOptionalContentKitClient, type ContentKitErrorHandler } from \"../../react/context.js\";\nimport { useContentFilters } from \"../../react/discovery.js\";\nimport { AppearanceContext, ContentKitUiRoot } from \"../../scope.js\";\nimport { Button } from \"#ckui/ui/button\";\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from \"#ckui/ui/dialog\";\nimport { Label } from \"#ckui/ui/label\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"#ckui/ui/select\";\nimport { ContentFilterSettings } from \"./filters.js\";\nimport { ErrorLine, useAction } from \"../social/parts.js\";\nimport type { ReaderPreferenceState } from \"../../client/reader-preferences.js\";\n\nconst EMPTY_PREFERENCES: ReaderPreferenceState = Object.freeze({ loading: false, saving: false, pending: false });\nconst noPreferences = () => EMPTY_PREFERENCES;\nconst noSubscription = () => () => {};\n\nexport interface ReaderSettingsProps {\n languages: readonly { value: string; label: string }[];\n /** The current language, controlled by the host. */\n language: string;\n /** The host applies its own route and preference changes. */\n onLanguageChange: (language: string) => void;\n client?: ContentKitClient;\n onError?: ContentKitErrorHandler;\n className?: string;\n appearance?: ContentKitUiAppearance;\n}\n\n/** Language preferences and filters for both guests and signed-in readers. */\nexport function ReaderSettings(p: ReaderSettingsProps) {\n const messages = useMessages();\n const { t } = messages;\n const id = useId();\n const client = useOptionalContentKitClient(p.client);\n const preferences = client?.preferences;\n const state = useSyncExternalStore(preferences?.subscribe ?? noSubscription, preferences?.snapshot ?? noPreferences, noPreferences);\n // The selector describes the current view. A saved default must not make a\n // localized deep link look selected in a language it is not displaying.\n const selectedLanguage = p.language;\n const save = useAction(\"preferences.save\", p.onError);\n const inheritedAppearance = useContext(AppearanceContext);\n const appearance = p.appearance ?? inheritedAppearance;\n return (\n <AppearanceContext.Provider value={appearance}>\n <ContentKitUiRoot className={p.className} appearance={appearance} data-ckui=\"reader-settings\">\n <Dialog>\n <DialogTrigger render={<Button type=\"button\" variant=\"ghost\" size=\"sm\" aria-label={t(\"readerSettings.title\")} data-ckui=\"reader-settings-trigger\" />}>\n <HugeiconsIcon icon={Settings01Icon} strokeWidth={2} className=\"size-4\" aria-hidden />\n <span>{p.language.toUpperCase()}</span>\n </DialogTrigger>\n <DialogContent className=\"max-h-[calc(100dvh-2rem)] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>{t(\"readerSettings.title\")}</DialogTitle>\n <DialogDescription className=\"sr-only\">{t(\"readerSettings.description\")}</DialogDescription>\n </DialogHeader>\n <div className=\"grid gap-3\">\n <Label htmlFor={`${id}-language`}>{t(\"listing.language\")}</Label>\n <Select value={selectedLanguage} disabled={save.pending || state.loading} onValueChange={(value) => {\n if (!value || value === selectedLanguage) return;\n void save.run(async () => { await preferences?.setLanguage(value); p.onLanguageChange(value); });\n }}>\n <SelectTrigger id={`${id}-language`} className=\"w-full\">\n <SelectValue>{p.languages.find((item) => item.value === selectedLanguage)?.label ?? selectedLanguage}</SelectValue>\n </SelectTrigger>\n <SelectContent>\n {p.languages.map((item) => <SelectItem key={item.value} value={item.value}>{item.label}</SelectItem>)}\n </SelectContent>\n </Select>\n </div>\n {client && <ReaderFilters language={p.language} client={client} onError={p.onError} />}\n {(state.pending || save.pending) && !state.error && <p className=\"text-sm text-muted-foreground\" role=\"status\">{t(\"readerSettings.savingPreferences\")}</p>}\n <ErrorLine>{state.error || save.error ? t(\"readerSettings.preferencesNotSaved\") : null}</ErrorLine>\n {state.error && preferences && <Button type=\"button\" variant=\"outline\" onClick={() => { void save.run(() => preferences.retry()); }}>{t(\"common.retry\")}</Button>}\n </DialogContent>\n </Dialog>\n </ContentKitUiRoot>\n </AppearanceContext.Provider>\n );\n}\n\nfunction ReaderFilters(p: Pick<ReaderSettingsProps, \"language\" | \"client\" | \"onError\">) {\n const { t } = useMessages();\n const id = useId();\n const { filters } = useContentFilters({ language: p.language, client: p.client });\n if (filters?.filters.length === 0) return null;\n return (\n <section aria-labelledby={id} className=\"grid gap-3\">\n <h3 id={id} className=\"font-medium\">{t(\"readerSettings.filters\")}</h3>\n <ContentFilterSettings {...p} includeDeleted={false} />\n </section>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
//#region src/locales/discovery/de.ts
|
|
2
2
|
var e = {
|
|
3
3
|
readerSettings: {
|
|
4
|
+
savingPreferences: "Deine Einstellungen werden gespeichert…",
|
|
5
|
+
preferencesNotSaved: "Deine Einstellungen wurden noch nicht gespeichert.",
|
|
4
6
|
title: "Leseeinstellungen",
|
|
5
7
|
description: "Wähle deine Sprache und die angezeigten Inhalte.",
|
|
6
8
|
filters: "Inhalte anzeigen:"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de.js","names":[],"sources":["../../../src/locales/discovery/de.ts"],"sourcesContent":["import type { discovery as en } from \"./en.js\";\n\nexport const discovery: typeof en = {\n readerSettings: {\n title: \"Leseeinstellungen\",\n description: \"Wähle deine Sprache und die angezeigten Inhalte.\",\n filters: \"Inhalte anzeigen:\",\n },\n contents: {\n unknownAccess: \"Gerade nicht verfügbar\",\n members: \"Mitglieder\",\n joinFree: \"Kostenlos beitreten\",\n forSale: \"Zu kaufen\",\n locked: \"Gesperrt\",\n pages_one: \"{count} Seite\",\n pages_other: \"{count} Seiten\",\n minutes_one: \"{count} Min.\",\n minutes_other: \"{count} Min.\",\n completed: \"Beendet\",\n freeFrom: \"Kostenlos ab {date}\",\n favorites: \"Favoriten\",\n likes: \"Likes\",\n empty: \"Hier ist noch nichts.\",\n loading: \"Wird geladen…\",\n loadMore: \"Mehr laden\",\n lockedShow_one: \"{count} gesperrten Eintrag zeigen\",\n lockedShow_other: \"{count} gesperrte Einträge zeigen\",\n lockedHide: \"Gesperrte Einträge ausblenden\",\n noResults: \"Nichts passt zu „{q}“.\",\n historySignedOut: \"Melde dich an, um deinen Verlauf zu sehen.\",\n clearHistory: \"Verlauf löschen\",\n historyEmpty: \"Dein Verlauf ist leer.\",\n removeFromHistory: \"Aus dem Verlauf entfernen\",\n search: \"Suche\",\n searchPlaceholder: \"Suchen…\",\n clearSearch: \"Suche löschen\",\n suggestions: \"Vorschläge\",\n filtersSignedOut: \"Melde dich an, um zu wählen, was du siehst.\",\n shown: \"Angezeigt\",\n hidden: \"Ausgeblendet\",\n useDefault: \"Standard verwenden\",\n noFilters: \"Diese Website hat keine Inhaltsfilter.\",\n includeDeleted: \"Entfernte Inhalte zeigen, die ich gekauft habe\",\n noDates: \"Keine Erscheinungsdaten.\",\n items_one: \"{count} Eintrag\",\n items_other: \"{count} Einträge\",\n free_one: \"{count} kostenlos\",\n free_other: \"{count} kostenlos\",\n recentSearches: \"Letzte Suchen\",\n noRecentSearches: \"Noch keine letzten Suchanfragen.\",\n searchHint: \"Tippe, um zu suchen.\",\n clearRecent: \"Löschen\",\n clearAllRecent: \"Alle löschen\",\n removeRecent: \"„{q}“ entfernen\",\n },\n listing: {\n sort: \"Sortieren\",\n sort_newest: \"Neueste\",\n sort_oldest: \"Älteste\",\n sort_title: \"Titel\",\n sort_popular: \"Beliebt\",\n sort_top_rated: \"Bestbewertet\",\n sort_most_favorited: \"Meiste Favoriten\",\n sort_most_viewed: \"Meistgesehen\",\n sort_random: \"Zufällig\",\n sort_position: \"Reihenfolge\",\n period_7d: \"diese Woche\",\n period_30d: \"diesen Monat\",\n period_90d: \"letzte 3 Monate\",\n period_365d: \"dieses Jahr\",\n period_all: \"insgesamt\",\n sortPeriod: \"{sort}, {period}\",\n language: \"Sprache\",\n anyLanguage: \"Alle Sprachen\",\n any: \"Alle\",\n filters: \"Filter\",\n clear: \"Filter zurücksetzen\",\n },\n};\n"],"mappings":";AAEA,IAAa,IAAuB;CAClC,gBAAgB;EACd,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
1
|
+
{"version":3,"file":"de.js","names":[],"sources":["../../../src/locales/discovery/de.ts"],"sourcesContent":["import type { discovery as en } from \"./en.js\";\n\nexport const discovery: typeof en = {\n readerSettings: {\n savingPreferences: \"Deine Einstellungen werden gespeichert…\",\n preferencesNotSaved: \"Deine Einstellungen wurden noch nicht gespeichert.\",\n title: \"Leseeinstellungen\",\n description: \"Wähle deine Sprache und die angezeigten Inhalte.\",\n filters: \"Inhalte anzeigen:\",\n },\n contents: {\n unknownAccess: \"Gerade nicht verfügbar\",\n members: \"Mitglieder\",\n joinFree: \"Kostenlos beitreten\",\n forSale: \"Zu kaufen\",\n locked: \"Gesperrt\",\n pages_one: \"{count} Seite\",\n pages_other: \"{count} Seiten\",\n minutes_one: \"{count} Min.\",\n minutes_other: \"{count} Min.\",\n completed: \"Beendet\",\n freeFrom: \"Kostenlos ab {date}\",\n favorites: \"Favoriten\",\n likes: \"Likes\",\n empty: \"Hier ist noch nichts.\",\n loading: \"Wird geladen…\",\n loadMore: \"Mehr laden\",\n lockedShow_one: \"{count} gesperrten Eintrag zeigen\",\n lockedShow_other: \"{count} gesperrte Einträge zeigen\",\n lockedHide: \"Gesperrte Einträge ausblenden\",\n noResults: \"Nichts passt zu „{q}“.\",\n historySignedOut: \"Melde dich an, um deinen Verlauf zu sehen.\",\n clearHistory: \"Verlauf löschen\",\n historyEmpty: \"Dein Verlauf ist leer.\",\n removeFromHistory: \"Aus dem Verlauf entfernen\",\n search: \"Suche\",\n searchPlaceholder: \"Suchen…\",\n clearSearch: \"Suche löschen\",\n suggestions: \"Vorschläge\",\n filtersSignedOut: \"Melde dich an, um zu wählen, was du siehst.\",\n shown: \"Angezeigt\",\n hidden: \"Ausgeblendet\",\n useDefault: \"Standard verwenden\",\n noFilters: \"Diese Website hat keine Inhaltsfilter.\",\n includeDeleted: \"Entfernte Inhalte zeigen, die ich gekauft habe\",\n noDates: \"Keine Erscheinungsdaten.\",\n items_one: \"{count} Eintrag\",\n items_other: \"{count} Einträge\",\n free_one: \"{count} kostenlos\",\n free_other: \"{count} kostenlos\",\n recentSearches: \"Letzte Suchen\",\n noRecentSearches: \"Noch keine letzten Suchanfragen.\",\n searchHint: \"Tippe, um zu suchen.\",\n clearRecent: \"Löschen\",\n clearAllRecent: \"Alle löschen\",\n removeRecent: \"„{q}“ entfernen\",\n },\n listing: {\n sort: \"Sortieren\",\n sort_newest: \"Neueste\",\n sort_oldest: \"Älteste\",\n sort_title: \"Titel\",\n sort_popular: \"Beliebt\",\n sort_top_rated: \"Bestbewertet\",\n sort_most_favorited: \"Meiste Favoriten\",\n sort_most_viewed: \"Meistgesehen\",\n sort_random: \"Zufällig\",\n sort_position: \"Reihenfolge\",\n period_7d: \"diese Woche\",\n period_30d: \"diesen Monat\",\n period_90d: \"letzte 3 Monate\",\n period_365d: \"dieses Jahr\",\n period_all: \"insgesamt\",\n sortPeriod: \"{sort}, {period}\",\n language: \"Sprache\",\n anyLanguage: \"Alle Sprachen\",\n any: \"Alle\",\n filters: \"Filter\",\n clear: \"Filter zurücksetzen\",\n },\n};\n"],"mappings":";AAEA,IAAa,IAAuB;CAClC,gBAAgB;EACd,mBAAmB;EACnB,qBAAqB;EACrB,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
//#region src/locales/discovery/en.ts
|
|
2
2
|
var e = {
|
|
3
3
|
readerSettings: {
|
|
4
|
+
savingPreferences: "Saving your preferences…",
|
|
5
|
+
preferencesNotSaved: "Your preferences haven't been saved yet.",
|
|
4
6
|
title: "Reader settings",
|
|
5
7
|
description: "Choose your language and the content you see.",
|
|
6
8
|
filters: "Show Content:"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.js","names":[],"sources":["../../../src/locales/discovery/en.ts"],"sourcesContent":["// Discovery: cards, grids, rails, search, content filters, history, release dates.\nexport const discovery = {\n readerSettings: {\n title: \"Reader settings\",\n description: \"Choose your language and the content you see.\",\n filters: \"Show Content:\",\n },\n contents: {\n unknownAccess: \"Unavailable right now\",\n members: \"Members\",\n joinFree: \"Free to join\",\n forSale: \"For sale\",\n locked: \"Locked\",\n pages_one: \"{count} page\",\n pages_other: \"{count} pages\",\n minutes_one: \"{count} min\",\n minutes_other: \"{count} min\",\n completed: \"Finished\",\n freeFrom: \"Free from {date}\",\n favorites: \"Favorites\",\n likes: \"Likes\",\n empty: \"Nothing here yet.\",\n loading: \"Loading…\",\n loadMore: \"Load more\",\n lockedShow_one: \"Show {count} locked item\",\n lockedShow_other: \"Show {count} locked items\",\n lockedHide: \"Hide locked items\",\n noResults: \"Nothing matches “{q}”.\",\n historySignedOut: \"Sign in to see your history.\",\n clearHistory: \"Clear history\",\n historyEmpty: \"Your history is empty.\",\n removeFromHistory: \"Remove from history\",\n search: \"Search\",\n searchPlaceholder: \"Search…\",\n clearSearch: \"Clear search\",\n suggestions: \"Suggestions\",\n filtersSignedOut: \"Sign in to choose what you see.\",\n shown: \"Shown\",\n hidden: \"Hidden\",\n useDefault: \"Use the default\",\n noFilters: \"This site has no content filters.\",\n includeDeleted: \"Show removed content I bought\",\n noDates: \"No release dates.\",\n items_one: \"{count} item\",\n items_other: \"{count} items\",\n free_one: \"{count} free\",\n free_other: \"{count} free\",\n recentSearches: \"Recent searches\",\n noRecentSearches: \"No recent searches yet.\",\n searchHint: \"Start typing to search.\",\n clearRecent: \"Clear\",\n clearAllRecent: \"Clear all\",\n removeRecent: \"Remove “{q}”\",\n },\n listing: {\n sort: \"Sort\",\n sort_newest: \"Newest\",\n sort_oldest: \"Oldest\",\n sort_title: \"Title\",\n sort_popular: \"Popular\",\n sort_top_rated: \"Top rated\",\n sort_most_favorited: \"Most favorited\",\n sort_most_viewed: \"Most viewed\",\n sort_random: \"Random\",\n sort_position: \"In order\",\n period_7d: \"this week\",\n period_30d: \"this month\",\n period_90d: \"last 3 months\",\n period_365d: \"this year\",\n period_all: \"all time\",\n sortPeriod: \"{sort}, {period}\",\n language: \"Language\",\n anyLanguage: \"Any language\",\n any: \"Any\",\n filters: \"Filters\",\n clear: \"Clear filters\",\n },\n};\n"],"mappings":";AACA,IAAa,IAAY;CACvB,gBAAgB;EACd,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
1
|
+
{"version":3,"file":"en.js","names":[],"sources":["../../../src/locales/discovery/en.ts"],"sourcesContent":["// Discovery: cards, grids, rails, search, content filters, history, release dates.\nexport const discovery = {\n readerSettings: {\n savingPreferences: \"Saving your preferences…\",\n preferencesNotSaved: \"Your preferences haven't been saved yet.\",\n title: \"Reader settings\",\n description: \"Choose your language and the content you see.\",\n filters: \"Show Content:\",\n },\n contents: {\n unknownAccess: \"Unavailable right now\",\n members: \"Members\",\n joinFree: \"Free to join\",\n forSale: \"For sale\",\n locked: \"Locked\",\n pages_one: \"{count} page\",\n pages_other: \"{count} pages\",\n minutes_one: \"{count} min\",\n minutes_other: \"{count} min\",\n completed: \"Finished\",\n freeFrom: \"Free from {date}\",\n favorites: \"Favorites\",\n likes: \"Likes\",\n empty: \"Nothing here yet.\",\n loading: \"Loading…\",\n loadMore: \"Load more\",\n lockedShow_one: \"Show {count} locked item\",\n lockedShow_other: \"Show {count} locked items\",\n lockedHide: \"Hide locked items\",\n noResults: \"Nothing matches “{q}”.\",\n historySignedOut: \"Sign in to see your history.\",\n clearHistory: \"Clear history\",\n historyEmpty: \"Your history is empty.\",\n removeFromHistory: \"Remove from history\",\n search: \"Search\",\n searchPlaceholder: \"Search…\",\n clearSearch: \"Clear search\",\n suggestions: \"Suggestions\",\n filtersSignedOut: \"Sign in to choose what you see.\",\n shown: \"Shown\",\n hidden: \"Hidden\",\n useDefault: \"Use the default\",\n noFilters: \"This site has no content filters.\",\n includeDeleted: \"Show removed content I bought\",\n noDates: \"No release dates.\",\n items_one: \"{count} item\",\n items_other: \"{count} items\",\n free_one: \"{count} free\",\n free_other: \"{count} free\",\n recentSearches: \"Recent searches\",\n noRecentSearches: \"No recent searches yet.\",\n searchHint: \"Start typing to search.\",\n clearRecent: \"Clear\",\n clearAllRecent: \"Clear all\",\n removeRecent: \"Remove “{q}”\",\n },\n listing: {\n sort: \"Sort\",\n sort_newest: \"Newest\",\n sort_oldest: \"Oldest\",\n sort_title: \"Title\",\n sort_popular: \"Popular\",\n sort_top_rated: \"Top rated\",\n sort_most_favorited: \"Most favorited\",\n sort_most_viewed: \"Most viewed\",\n sort_random: \"Random\",\n sort_position: \"In order\",\n period_7d: \"this week\",\n period_30d: \"this month\",\n period_90d: \"last 3 months\",\n period_365d: \"this year\",\n period_all: \"all time\",\n sortPeriod: \"{sort}, {period}\",\n language: \"Language\",\n anyLanguage: \"Any language\",\n any: \"Any\",\n filters: \"Filters\",\n clear: \"Clear filters\",\n },\n};\n"],"mappings":";AACA,IAAa,IAAY;CACvB,gBAAgB;EACd,mBAAmB;EACnB,qBAAqB;EACrB,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
//#region src/locales/discovery/es.ts
|
|
2
2
|
var e = {
|
|
3
3
|
readerSettings: {
|
|
4
|
+
savingPreferences: "Guardando tus preferencias…",
|
|
5
|
+
preferencesNotSaved: "Tus preferencias aún no se han guardado.",
|
|
4
6
|
title: "Ajustes de lectura",
|
|
5
7
|
description: "Elige tu idioma y el contenido que ves.",
|
|
6
8
|
filters: "Mostrar contenido:"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.js","names":[],"sources":["../../../src/locales/discovery/es.ts"],"sourcesContent":["import type { discovery as en } from \"./en.js\";\n\nexport const discovery: typeof en = {\n readerSettings: {\n title: \"Ajustes de lectura\",\n description: \"Elige tu idioma y el contenido que ves.\",\n filters: \"Mostrar contenido:\",\n },\n contents: {\n unknownAccess: \"No disponible ahora\",\n members: \"Miembros\",\n joinFree: \"Unirse gratis\",\n forSale: \"A la venta\",\n locked: \"Bloqueado\",\n pages_one: \"{count} página\",\n pages_other: \"{count} páginas\",\n minutes_one: \"{count} min\",\n minutes_other: \"{count} min\",\n completed: \"Terminado\",\n freeFrom: \"Gratis desde el {date}\",\n favorites: \"Favoritos\",\n likes: \"Me gusta\",\n empty: \"Aún no hay nada aquí.\",\n loading: \"Cargando…\",\n loadMore: \"Cargar más\",\n lockedShow_one: \"Mostrar {count} elemento bloqueado\",\n lockedShow_other: \"Mostrar {count} elementos bloqueados\",\n lockedHide: \"Ocultar elementos bloqueados\",\n noResults: \"Nada coincide con «{q}».\",\n historySignedOut: \"Inicia sesión para ver tu historial.\",\n clearHistory: \"Borrar historial\",\n historyEmpty: \"Tu historial está vacío.\",\n removeFromHistory: \"Quitar del historial\",\n search: \"Buscar\",\n searchPlaceholder: \"Buscar…\",\n clearSearch: \"Borrar búsqueda\",\n suggestions: \"Sugerencias\",\n filtersSignedOut: \"Inicia sesión para elegir lo que ves.\",\n shown: \"Visible\",\n hidden: \"Oculto\",\n useDefault: \"Usar el predeterminado\",\n noFilters: \"Este sitio no tiene filtros de contenido.\",\n includeDeleted: \"Mostrar contenido retirado que compré\",\n noDates: \"No hay fechas de publicación.\",\n items_one: \"{count} elemento\",\n items_other: \"{count} elementos\",\n free_one: \"{count} gratis\",\n free_other: \"{count} gratis\",\n recentSearches: \"Búsquedas recientes\",\n noRecentSearches: \"Aún no hay búsquedas recientes.\",\n searchHint: \"Empieza a escribir para buscar.\",\n clearRecent: \"Borrar\",\n clearAllRecent: \"Borrar todo\",\n removeRecent: \"Quitar «{q}»\",\n },\n listing: {\n sort: \"Ordenar\",\n sort_newest: \"Más recientes\",\n sort_oldest: \"Más antiguos\",\n sort_title: \"Título\",\n sort_popular: \"Populares\",\n sort_top_rated: \"Mejor valorados\",\n sort_most_favorited: \"Más favoritos\",\n sort_most_viewed: \"Más vistos\",\n sort_random: \"Aleatorio\",\n sort_position: \"En orden\",\n period_7d: \"esta semana\",\n period_30d: \"este mes\",\n period_90d: \"últimos 3 meses\",\n period_365d: \"este año\",\n period_all: \"siempre\",\n sortPeriod: \"{sort}, {period}\",\n language: \"Idioma\",\n anyLanguage: \"Cualquier idioma\",\n any: \"Cualquiera\",\n filters: \"Filtros\",\n clear: \"Quitar filtros\",\n },\n};\n"],"mappings":";AAEA,IAAa,IAAuB;CAClC,gBAAgB;EACd,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
1
|
+
{"version":3,"file":"es.js","names":[],"sources":["../../../src/locales/discovery/es.ts"],"sourcesContent":["import type { discovery as en } from \"./en.js\";\n\nexport const discovery: typeof en = {\n readerSettings: {\n savingPreferences: \"Guardando tus preferencias…\",\n preferencesNotSaved: \"Tus preferencias aún no se han guardado.\",\n title: \"Ajustes de lectura\",\n description: \"Elige tu idioma y el contenido que ves.\",\n filters: \"Mostrar contenido:\",\n },\n contents: {\n unknownAccess: \"No disponible ahora\",\n members: \"Miembros\",\n joinFree: \"Unirse gratis\",\n forSale: \"A la venta\",\n locked: \"Bloqueado\",\n pages_one: \"{count} página\",\n pages_other: \"{count} páginas\",\n minutes_one: \"{count} min\",\n minutes_other: \"{count} min\",\n completed: \"Terminado\",\n freeFrom: \"Gratis desde el {date}\",\n favorites: \"Favoritos\",\n likes: \"Me gusta\",\n empty: \"Aún no hay nada aquí.\",\n loading: \"Cargando…\",\n loadMore: \"Cargar más\",\n lockedShow_one: \"Mostrar {count} elemento bloqueado\",\n lockedShow_other: \"Mostrar {count} elementos bloqueados\",\n lockedHide: \"Ocultar elementos bloqueados\",\n noResults: \"Nada coincide con «{q}».\",\n historySignedOut: \"Inicia sesión para ver tu historial.\",\n clearHistory: \"Borrar historial\",\n historyEmpty: \"Tu historial está vacío.\",\n removeFromHistory: \"Quitar del historial\",\n search: \"Buscar\",\n searchPlaceholder: \"Buscar…\",\n clearSearch: \"Borrar búsqueda\",\n suggestions: \"Sugerencias\",\n filtersSignedOut: \"Inicia sesión para elegir lo que ves.\",\n shown: \"Visible\",\n hidden: \"Oculto\",\n useDefault: \"Usar el predeterminado\",\n noFilters: \"Este sitio no tiene filtros de contenido.\",\n includeDeleted: \"Mostrar contenido retirado que compré\",\n noDates: \"No hay fechas de publicación.\",\n items_one: \"{count} elemento\",\n items_other: \"{count} elementos\",\n free_one: \"{count} gratis\",\n free_other: \"{count} gratis\",\n recentSearches: \"Búsquedas recientes\",\n noRecentSearches: \"Aún no hay búsquedas recientes.\",\n searchHint: \"Empieza a escribir para buscar.\",\n clearRecent: \"Borrar\",\n clearAllRecent: \"Borrar todo\",\n removeRecent: \"Quitar «{q}»\",\n },\n listing: {\n sort: \"Ordenar\",\n sort_newest: \"Más recientes\",\n sort_oldest: \"Más antiguos\",\n sort_title: \"Título\",\n sort_popular: \"Populares\",\n sort_top_rated: \"Mejor valorados\",\n sort_most_favorited: \"Más favoritos\",\n sort_most_viewed: \"Más vistos\",\n sort_random: \"Aleatorio\",\n sort_position: \"En orden\",\n period_7d: \"esta semana\",\n period_30d: \"este mes\",\n period_90d: \"últimos 3 meses\",\n period_365d: \"este año\",\n period_all: \"siempre\",\n sortPeriod: \"{sort}, {period}\",\n language: \"Idioma\",\n anyLanguage: \"Cualquier idioma\",\n any: \"Cualquiera\",\n filters: \"Filtros\",\n clear: \"Quitar filtros\",\n },\n};\n"],"mappings":";AAEA,IAAa,IAAuB;CAClC,gBAAgB;EACd,mBAAmB;EACnB,qBAAqB;EACrB,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja.js","names":[],"sources":["../../../src/locales/discovery/ja.ts"],"sourcesContent":["import type { discovery as en } from \"./en.js\";\n\nexport const discovery: typeof en = {\n readerSettings: {\n title: \"閲覧設定\",\n description: \"言語と表示するコンテンツを選択します。\",\n filters: \"表示するコンテンツ:\",\n },\n contents: {\n unknownAccess: \"現在利用できません\",\n members: \"メンバー限定\",\n joinFree: \"無料で参加\",\n forSale: \"販売中\",\n locked: \"ロック中\",\n pages_one: \"{count} ページ\",\n pages_other: \"{count} ページ\",\n minutes_one: \"{count} 分\",\n minutes_other: \"{count} 分\",\n completed: \"読了\",\n freeFrom: \"{date} から無料\",\n favorites: \"お気に入り\",\n likes: \"いいね\",\n empty: \"まだ何もありません。\",\n loading: \"読み込み中…\",\n loadMore: \"さらに読み込む\",\n lockedShow_one: \"ロック中の{count}件を表示\",\n lockedShow_other: \"ロック中の{count}件を表示\",\n lockedHide: \"ロック中の項目を隠す\",\n noResults: \"「{q}」に一致するものはありません。\",\n historySignedOut: \"履歴を見るにはサインインしてください。\",\n clearHistory: \"履歴を消去\",\n historyEmpty: \"履歴はありません。\",\n removeFromHistory: \"履歴から削除\",\n search: \"検索\",\n searchPlaceholder: \"検索…\",\n clearSearch: \"検索をクリア\",\n suggestions: \"候補\",\n filtersSignedOut: \"表示する内容を選ぶにはサインインしてください。\",\n shown: \"表示\",\n hidden: \"非表示\",\n useDefault: \"既定に戻す\",\n noFilters: \"このサイトにはコンテンツフィルターがありません。\",\n includeDeleted: \"購入済みの削除されたコンテンツを表示\",\n noDates: \"公開日はありません。\",\n items_one: \"{count} 件\",\n items_other: \"{count} 件\",\n free_one: \"無料 {count} 件\",\n free_other: \"無料 {count} 件\",\n recentSearches: \"最近の検索\",\n noRecentSearches: \"最近の検索はまだありません。\",\n searchHint: \"キーワードを入力して検索します。\",\n clearRecent: \"消去\",\n clearAllRecent: \"すべて消去\",\n removeRecent: \"「{q}」を削除\",\n },\n listing: {\n sort: \"並べ替え\",\n sort_newest: \"新着\",\n sort_oldest: \"古い順\",\n sort_title: \"タイトル\",\n sort_popular: \"人気\",\n sort_top_rated: \"高評価\",\n sort_most_favorited: \"お気に入り数\",\n sort_most_viewed: \"閲覧数\",\n sort_random: \"ランダム\",\n sort_position: \"順番\",\n period_7d: \"今週\",\n period_30d: \"今月\",\n period_90d: \"過去3か月\",\n period_365d: \"今年\",\n period_all: \"全期間\",\n sortPeriod: \"{sort}({period})\",\n language: \"言語\",\n anyLanguage: \"すべての言語\",\n any: \"すべて\",\n filters: \"絞り込み\",\n clear: \"絞り込みを解除\",\n },\n};\n"],"mappings":";AAEA,IAAa,IAAuB;CAClC,gBAAgB;EACd,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
1
|
+
{"version":3,"file":"ja.js","names":[],"sources":["../../../src/locales/discovery/ja.ts"],"sourcesContent":["import type { discovery as en } from \"./en.js\";\n\nexport const discovery: typeof en = {\n readerSettings: {\n savingPreferences: \"設定を保存しています…\",\n preferencesNotSaved: \"設定はまだ保存されていません。\",\n title: \"閲覧設定\",\n description: \"言語と表示するコンテンツを選択します。\",\n filters: \"表示するコンテンツ:\",\n },\n contents: {\n unknownAccess: \"現在利用できません\",\n members: \"メンバー限定\",\n joinFree: \"無料で参加\",\n forSale: \"販売中\",\n locked: \"ロック中\",\n pages_one: \"{count} ページ\",\n pages_other: \"{count} ページ\",\n minutes_one: \"{count} 分\",\n minutes_other: \"{count} 分\",\n completed: \"読了\",\n freeFrom: \"{date} から無料\",\n favorites: \"お気に入り\",\n likes: \"いいね\",\n empty: \"まだ何もありません。\",\n loading: \"読み込み中…\",\n loadMore: \"さらに読み込む\",\n lockedShow_one: \"ロック中の{count}件を表示\",\n lockedShow_other: \"ロック中の{count}件を表示\",\n lockedHide: \"ロック中の項目を隠す\",\n noResults: \"「{q}」に一致するものはありません。\",\n historySignedOut: \"履歴を見るにはサインインしてください。\",\n clearHistory: \"履歴を消去\",\n historyEmpty: \"履歴はありません。\",\n removeFromHistory: \"履歴から削除\",\n search: \"検索\",\n searchPlaceholder: \"検索…\",\n clearSearch: \"検索をクリア\",\n suggestions: \"候補\",\n filtersSignedOut: \"表示する内容を選ぶにはサインインしてください。\",\n shown: \"表示\",\n hidden: \"非表示\",\n useDefault: \"既定に戻す\",\n noFilters: \"このサイトにはコンテンツフィルターがありません。\",\n includeDeleted: \"購入済みの削除されたコンテンツを表示\",\n noDates: \"公開日はありません。\",\n items_one: \"{count} 件\",\n items_other: \"{count} 件\",\n free_one: \"無料 {count} 件\",\n free_other: \"無料 {count} 件\",\n recentSearches: \"最近の検索\",\n noRecentSearches: \"最近の検索はまだありません。\",\n searchHint: \"キーワードを入力して検索します。\",\n clearRecent: \"消去\",\n clearAllRecent: \"すべて消去\",\n removeRecent: \"「{q}」を削除\",\n },\n listing: {\n sort: \"並べ替え\",\n sort_newest: \"新着\",\n sort_oldest: \"古い順\",\n sort_title: \"タイトル\",\n sort_popular: \"人気\",\n sort_top_rated: \"高評価\",\n sort_most_favorited: \"お気に入り数\",\n sort_most_viewed: \"閲覧数\",\n sort_random: \"ランダム\",\n sort_position: \"順番\",\n period_7d: \"今週\",\n period_30d: \"今月\",\n period_90d: \"過去3か月\",\n period_365d: \"今年\",\n period_all: \"全期間\",\n sortPeriod: \"{sort}({period})\",\n language: \"言語\",\n anyLanguage: \"すべての言語\",\n any: \"すべて\",\n filters: \"絞り込み\",\n clear: \"絞り込みを解除\",\n },\n};\n"],"mappings":";AAEA,IAAa,IAAuB;CAClC,gBAAgB;EACd,mBAAmB;EACnB,qBAAqB;EACrB,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ko.js","names":[],"sources":["../../../src/locales/discovery/ko.ts"],"sourcesContent":["import type { discovery as en } from \"./en.js\";\n\nexport const discovery: typeof en = {\n readerSettings: {\n title: \"열람 설정\",\n description: \"언어와 표시할 콘텐츠를 선택하세요.\",\n filters: \"표시할 콘텐츠:\",\n },\n contents: {\n unknownAccess: \"지금은 이용할 수 없음\",\n members: \"멤버 전용\",\n joinFree: \"무료 가입\",\n forSale: \"판매 중\",\n locked: \"잠김\",\n pages_one: \"{count}쪽\",\n pages_other: \"{count}쪽\",\n minutes_one: \"{count}분\",\n minutes_other: \"{count}분\",\n completed: \"완료\",\n freeFrom: \"{date}부터 무료\",\n favorites: \"즐겨찾기\",\n likes: \"좋아요\",\n empty: \"아직 아무것도 없습니다.\",\n loading: \"불러오는 중…\",\n loadMore: \"더 불러오기\",\n lockedShow_one: \"잠긴 항목 {count}개 보기\",\n lockedShow_other: \"잠긴 항목 {count}개 보기\",\n lockedHide: \"잠긴 항목 숨기기\",\n noResults: \"“{q}”와(과) 일치하는 항목이 없습니다.\",\n historySignedOut: \"기록을 보려면 로그인하세요.\",\n clearHistory: \"기록 지우기\",\n historyEmpty: \"기록이 없습니다.\",\n removeFromHistory: \"기록에서 삭제\",\n search: \"검색\",\n searchPlaceholder: \"검색…\",\n clearSearch: \"검색 지우기\",\n suggestions: \"추천 검색어\",\n filtersSignedOut: \"볼 콘텐츠를 선택하려면 로그인하세요.\",\n shown: \"표시\",\n hidden: \"숨김\",\n useDefault: \"기본값 사용\",\n noFilters: \"이 사이트에는 콘텐츠 필터가 없습니다.\",\n includeDeleted: \"구매한 삭제된 콘텐츠 표시\",\n noDates: \"공개일이 없습니다.\",\n items_one: \"{count}개\",\n items_other: \"{count}개\",\n free_one: \"무료 {count}개\",\n free_other: \"무료 {count}개\",\n recentSearches: \"최근 검색\",\n noRecentSearches: \"최근 검색이 아직 없습니다.\",\n searchHint: \"검색어를 입력하세요.\",\n clearRecent: \"지우기\",\n clearAllRecent: \"모두 지우기\",\n removeRecent: \"“{q}” 삭제\",\n },\n listing: {\n sort: \"정렬\",\n sort_newest: \"최신순\",\n sort_oldest: \"오래된순\",\n sort_title: \"제목\",\n sort_popular: \"인기\",\n sort_top_rated: \"높은 평점\",\n sort_most_favorited: \"즐겨찾기순\",\n sort_most_viewed: \"조회수순\",\n sort_random: \"무작위\",\n sort_position: \"순서\",\n period_7d: \"이번 주\",\n period_30d: \"이번 달\",\n period_90d: \"최근 3개월\",\n period_365d: \"올해\",\n period_all: \"전체 기간\",\n sortPeriod: \"{sort} ({period})\",\n language: \"언어\",\n anyLanguage: \"모든 언어\",\n any: \"전체\",\n filters: \"필터\",\n clear: \"필터 지우기\",\n },\n};\n"],"mappings":";AAEA,IAAa,IAAuB;CAClC,gBAAgB;EACd,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
1
|
+
{"version":3,"file":"ko.js","names":[],"sources":["../../../src/locales/discovery/ko.ts"],"sourcesContent":["import type { discovery as en } from \"./en.js\";\n\nexport const discovery: typeof en = {\n readerSettings: {\n savingPreferences: \"환경설정을 저장하는 중…\",\n preferencesNotSaved: \"환경설정이 아직 저장되지 않았습니다.\",\n title: \"열람 설정\",\n description: \"언어와 표시할 콘텐츠를 선택하세요.\",\n filters: \"표시할 콘텐츠:\",\n },\n contents: {\n unknownAccess: \"지금은 이용할 수 없음\",\n members: \"멤버 전용\",\n joinFree: \"무료 가입\",\n forSale: \"판매 중\",\n locked: \"잠김\",\n pages_one: \"{count}쪽\",\n pages_other: \"{count}쪽\",\n minutes_one: \"{count}분\",\n minutes_other: \"{count}분\",\n completed: \"완료\",\n freeFrom: \"{date}부터 무료\",\n favorites: \"즐겨찾기\",\n likes: \"좋아요\",\n empty: \"아직 아무것도 없습니다.\",\n loading: \"불러오는 중…\",\n loadMore: \"더 불러오기\",\n lockedShow_one: \"잠긴 항목 {count}개 보기\",\n lockedShow_other: \"잠긴 항목 {count}개 보기\",\n lockedHide: \"잠긴 항목 숨기기\",\n noResults: \"“{q}”와(과) 일치하는 항목이 없습니다.\",\n historySignedOut: \"기록을 보려면 로그인하세요.\",\n clearHistory: \"기록 지우기\",\n historyEmpty: \"기록이 없습니다.\",\n removeFromHistory: \"기록에서 삭제\",\n search: \"검색\",\n searchPlaceholder: \"검색…\",\n clearSearch: \"검색 지우기\",\n suggestions: \"추천 검색어\",\n filtersSignedOut: \"볼 콘텐츠를 선택하려면 로그인하세요.\",\n shown: \"표시\",\n hidden: \"숨김\",\n useDefault: \"기본값 사용\",\n noFilters: \"이 사이트에는 콘텐츠 필터가 없습니다.\",\n includeDeleted: \"구매한 삭제된 콘텐츠 표시\",\n noDates: \"공개일이 없습니다.\",\n items_one: \"{count}개\",\n items_other: \"{count}개\",\n free_one: \"무료 {count}개\",\n free_other: \"무료 {count}개\",\n recentSearches: \"최근 검색\",\n noRecentSearches: \"최근 검색이 아직 없습니다.\",\n searchHint: \"검색어를 입력하세요.\",\n clearRecent: \"지우기\",\n clearAllRecent: \"모두 지우기\",\n removeRecent: \"“{q}” 삭제\",\n },\n listing: {\n sort: \"정렬\",\n sort_newest: \"최신순\",\n sort_oldest: \"오래된순\",\n sort_title: \"제목\",\n sort_popular: \"인기\",\n sort_top_rated: \"높은 평점\",\n sort_most_favorited: \"즐겨찾기순\",\n sort_most_viewed: \"조회수순\",\n sort_random: \"무작위\",\n sort_position: \"순서\",\n period_7d: \"이번 주\",\n period_30d: \"이번 달\",\n period_90d: \"최근 3개월\",\n period_365d: \"올해\",\n period_all: \"전체 기간\",\n sortPeriod: \"{sort} ({period})\",\n language: \"언어\",\n anyLanguage: \"모든 언어\",\n any: \"전체\",\n filters: \"필터\",\n clear: \"필터 지우기\",\n },\n};\n"],"mappings":";AAEA,IAAa,IAAuB;CAClC,gBAAgB;EACd,mBAAmB;EACnB,qBAAqB;EACrB,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh.js","names":[],"sources":["../../../src/locales/discovery/zh.ts"],"sourcesContent":["import type { discovery as en } from \"./en.js\";\n\nexport const discovery: typeof en = {\n readerSettings: {\n title: \"阅读设置\",\n description: \"选择语言和要显示的内容。\",\n filters: \"显示内容:\",\n },\n contents: {\n unknownAccess: \"暂时无法访问\",\n members: \"会员专享\",\n joinFree: \"免费加入\",\n forSale: \"可购买\",\n locked: \"已锁定\",\n pages_one: \"{count} 页\",\n pages_other: \"{count} 页\",\n minutes_one: \"{count} 分钟\",\n minutes_other: \"{count} 分钟\",\n completed: \"已完成\",\n freeFrom: \"{date} 起免费\",\n favorites: \"收藏\",\n likes: \"点赞\",\n empty: \"这里还没有内容。\",\n loading: \"加载中…\",\n loadMore: \"加载更多\",\n lockedShow_one: \"显示 {count} 个锁定项目\",\n lockedShow_other: \"显示 {count} 个锁定项目\",\n lockedHide: \"隐藏锁定项目\",\n noResults: \"没有与“{q}”匹配的内容。\",\n historySignedOut: \"登录后查看你的历史记录。\",\n clearHistory: \"清除历史记录\",\n historyEmpty: \"你的历史记录为空。\",\n removeFromHistory: \"从历史记录中移除\",\n search: \"搜索\",\n searchPlaceholder: \"搜索…\",\n clearSearch: \"清除搜索\",\n suggestions: \"建议\",\n filtersSignedOut: \"登录后选择你想看的内容。\",\n shown: \"显示\",\n hidden: \"隐藏\",\n useDefault: \"使用默认设置\",\n noFilters: \"此站点没有内容过滤器。\",\n includeDeleted: \"显示我已购买但已移除的内容\",\n noDates: \"没有发布日期。\",\n items_one: \"{count} 项\",\n items_other: \"{count} 项\",\n free_one: \"{count} 项免费\",\n free_other: \"{count} 项免费\",\n recentSearches: \"最近搜索\",\n noRecentSearches: \"还没有最近搜索。\",\n searchHint: \"输入关键词开始搜索。\",\n clearRecent: \"清除\",\n clearAllRecent: \"全部清除\",\n removeRecent: \"移除“{q}”\",\n },\n listing: {\n sort: \"排序\",\n sort_newest: \"最新\",\n sort_oldest: \"最早\",\n sort_title: \"标题\",\n sort_popular: \"热门\",\n sort_top_rated: \"高分\",\n sort_most_favorited: \"最多收藏\",\n sort_most_viewed: \"最多观看\",\n sort_random: \"随机\",\n sort_position: \"顺序\",\n period_7d: \"本周\",\n period_30d: \"本月\",\n period_90d: \"近3个月\",\n period_365d: \"今年\",\n period_all: \"全部时间\",\n sortPeriod: \"{sort}({period})\",\n language: \"语言\",\n anyLanguage: \"所有语言\",\n any: \"全部\",\n filters: \"筛选\",\n clear: \"清除筛选\",\n },\n};\n"],"mappings":";AAEA,IAAa,IAAuB;CAClC,gBAAgB;EACd,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|
|
1
|
+
{"version":3,"file":"zh.js","names":[],"sources":["../../../src/locales/discovery/zh.ts"],"sourcesContent":["import type { discovery as en } from \"./en.js\";\n\nexport const discovery: typeof en = {\n readerSettings: {\n savingPreferences: \"正在保存偏好设置…\",\n preferencesNotSaved: \"偏好设置尚未保存。\",\n title: \"阅读设置\",\n description: \"选择语言和要显示的内容。\",\n filters: \"显示内容:\",\n },\n contents: {\n unknownAccess: \"暂时无法访问\",\n members: \"会员专享\",\n joinFree: \"免费加入\",\n forSale: \"可购买\",\n locked: \"已锁定\",\n pages_one: \"{count} 页\",\n pages_other: \"{count} 页\",\n minutes_one: \"{count} 分钟\",\n minutes_other: \"{count} 分钟\",\n completed: \"已完成\",\n freeFrom: \"{date} 起免费\",\n favorites: \"收藏\",\n likes: \"点赞\",\n empty: \"这里还没有内容。\",\n loading: \"加载中…\",\n loadMore: \"加载更多\",\n lockedShow_one: \"显示 {count} 个锁定项目\",\n lockedShow_other: \"显示 {count} 个锁定项目\",\n lockedHide: \"隐藏锁定项目\",\n noResults: \"没有与“{q}”匹配的内容。\",\n historySignedOut: \"登录后查看你的历史记录。\",\n clearHistory: \"清除历史记录\",\n historyEmpty: \"你的历史记录为空。\",\n removeFromHistory: \"从历史记录中移除\",\n search: \"搜索\",\n searchPlaceholder: \"搜索…\",\n clearSearch: \"清除搜索\",\n suggestions: \"建议\",\n filtersSignedOut: \"登录后选择你想看的内容。\",\n shown: \"显示\",\n hidden: \"隐藏\",\n useDefault: \"使用默认设置\",\n noFilters: \"此站点没有内容过滤器。\",\n includeDeleted: \"显示我已购买但已移除的内容\",\n noDates: \"没有发布日期。\",\n items_one: \"{count} 项\",\n items_other: \"{count} 项\",\n free_one: \"{count} 项免费\",\n free_other: \"{count} 项免费\",\n recentSearches: \"最近搜索\",\n noRecentSearches: \"还没有最近搜索。\",\n searchHint: \"输入关键词开始搜索。\",\n clearRecent: \"清除\",\n clearAllRecent: \"全部清除\",\n removeRecent: \"移除“{q}”\",\n },\n listing: {\n sort: \"排序\",\n sort_newest: \"最新\",\n sort_oldest: \"最早\",\n sort_title: \"标题\",\n sort_popular: \"热门\",\n sort_top_rated: \"高分\",\n sort_most_favorited: \"最多收藏\",\n sort_most_viewed: \"最多观看\",\n sort_random: \"随机\",\n sort_position: \"顺序\",\n period_7d: \"本周\",\n period_30d: \"本月\",\n period_90d: \"近3个月\",\n period_365d: \"今年\",\n period_all: \"全部时间\",\n sortPeriod: \"{sort}({period})\",\n language: \"语言\",\n anyLanguage: \"所有语言\",\n any: \"全部\",\n filters: \"筛选\",\n clear: \"清除筛选\",\n },\n};\n"],"mappings":";AAEA,IAAa,IAAuB;CAClC,gBAAgB;EACd,mBAAmB;EACnB,qBAAqB;EACrB,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,UAAU;EACR,eAAe;EACf,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,cAAc;EACd,cAAc;EACd,mBAAmB;EACnB,QAAQ;EACR,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,cAAc;CAChB;CACA,SAAS;EACP,MAAM;EACN,aAAa;EACb,aAAa;EACb,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,aAAa;EACb,KAAK;EACL,SAAS;EACT,OAAO;CACT;AACF"}
|