{"version":3,"file":"audiobook-_id_-_...slug_-layout.svelte.553a34fe.js","sources":["../../../../../../../../packages/ui/components/ArtistBio.svelte","../../../../../../../../packages/ui/components/ArtistTopList.svelte","../../../../../../../../packages/ui/components/RatingStars.svelte","../../../../../../../../packages/ui/components/RatingsGrid.svelte","../../../../../../../../packages/ui/components/RatingSummary.svelte","../../../../../../../../packages/ui/components/ReleaseCover.svelte","../../../../../../../../packages/ui/components/TabNav.svelte","../../../../../../../../packages/ui/components/Tabs.svelte","../../../../../../../../packages/ui/components/TabItem.svelte","../../../../../../../../packages/ui/components/ReleaseMetadata.svelte","../../../../../../../../node_modules/dayjs/plugin/isToday.js","../../../../../../../../packages/ui/components/Bookmarks.svelte","../../../../../../../../packages/ui/pages/release/Layout.svelte","../../../../../../src/routes/audiobook/[id]/[...slug]/+layout.svelte"],"sourcesContent":["\n\n
\n\t
\n\t\t\n\t\t

\n\t\t\t{artist.name}\n\t\t

\n\t
\n\n\t{#if bio.content}\n\t\t\n\t{/if}\n</div>\n","<script lang=\"ts\">\n\timport { type ArtistBase, type ReleaseBase } from '@beat-no/sdk/api';\n\timport BannerList from '@beat-no/ui/components/BannerList.svelte';\n\timport ReleaseBanner from '@beat-no/ui/components/ReleaseBanner.svelte';\n\timport type { BannerStyle } from '@beat-no/ui/components/Banner.svelte';\n\timport { getDispatcher } from '@beat-no/ui/helpers/events';\n\timport { getRouteConfiguration } from '@beat-no/ui/helpers/routing';\n\n\texport let artist: ArtistBase;\n\texport let releases: ReleaseBase[];\n\texport let title: string;\n\texport let hasMoreButton: boolean = true;\n\texport let exceptReleases: String[] = [];\n\texport let bannerListStyle: BannerStyle = 'image_small';\n\texport let bannerStyle: BannerStyle = 'image_small';\n\texport let showType: boolean = true;\n\n\t$: filteredReleases = releases.filter((r) => !exceptReleases.includes(r.id));\n\tconst routes = getRouteConfiguration();\n\tconst dispatch = getDispatcher();\n\n\tdispatch('impression', { type: 'releases', releases: filteredReleases });\n</script>\n\n{#if filteredReleases.length > 0}\n\t<BannerList style={bannerListStyle} {title} link={hasMoreButton ? routes.catalog.artist(artist) : undefined}>\n\t\t{#each filteredReleases as release}\n\t\t\t<ReleaseBanner {release} style={bannerStyle} {showType} />\n\t\t{/each}\n\t</BannerList>\n{/if}\n","<script lang=\"ts\">\n\timport Icon from '@beat-no/ui/components/Icon.svelte';\n\texport let rating = 0;\n\n\t$: stars = getStarsList(rating);\n\n\tfunction getStarsList(rating) {\n\t\tconst stars = Array.from({ length: Math.floor(rating) }, () => 'starFilled');\n\t\tif (rating % 1 > 0) stars.push('starHalfFilled');\n\t\tif (stars.length < 5) stars.push(...Array.from({ length: 5 - stars.length }, () => 'starOutline'));\n\t\treturn stars;\n\t}\n</script>\n\n{#each stars as star}\n\t<Icon name={star} class=\"w-3.5 fill-warning-icon-default align-middle mr-1.5\" />\n{/each}\n","<script lang=\"ts\">\n\timport { _ } from 'svelte-intl-precompile';\n\timport RatingStars from '@beat-no/ui/components/RatingStars.svelte';\n\timport TextShortener from '@beat-no/ui/components/TextShortener.svelte';\n\timport PlainText from '@beat-no/ui/components/PlainText.svelte';\n\timport type { Rating } from '@beat-no/sdk/api';\n\n\texport let ratings: Array<Rating>;\n\texport let limit: number = 0;\n\texport let maxLines: number = 2;\n\n\tconst toggle = () => (truncated = !truncated);\n\tlet truncated = true;\n\t$: loadMoreLabel = truncated ? $_('ui.components.ratings_grid.see_more') : $_('ui.components.ratings_grid.see_less');\n</script>\n\n<section class=\"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 grid gap-x-28 my-10 gap-y-5 border-b-red-50\">\n\t{#each ratings as rating, i}\n\t\t{#if limit === 0 || i < limit || !truncated}\n\t\t\t<article class=\"border-b border-neutrals-border-weak pb-2\">\n\t\t\t\t<RatingStars rating={rating.value} />\n\t\t\t\t{#if maxLines > 0}\n\t\t\t\t\t<TextShortener text={rating.note} {maxLines} />\n\t\t\t\t{:else}\n\t\t\t\t\t<div class=\"whitespace-pre-wrap text-justify mt-2\">\n\t\t\t\t\t\t<PlainText text={rating.note} />\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\t\t\t</article>\n\t\t{/if}\n\t{/each}\n</section>\n\n{#if limit > 0 && limit < ratings.length}\n\t<button\n\t\tclass=\"w-full h-16 text-center border-t border-neutrals-background-strong-medium font-mono text-sm\"\n\t\ton:click={toggle}>{loadMoreLabel}</button\n\t>\n{/if}\n","<script lang=\"ts\">\n\timport type { Rating, ReleaseExtended } from '@beat-no/sdk/api';\n\timport RatingStars from '@beat-no/ui/components/RatingStars.svelte';\n\timport { _ } from 'svelte-intl-precompile';\n\n\texport let ratings: Rating[];\n\texport let release: ReleaseExtended = undefined;\n\texport let showEmptyRatings: boolean = false;\n\n\t$: average = release?.rating\n\t\t? Math.round(release.rating.value * 100) / 100\n\t\t: ratings?.length > 0\n\t\t? Math.round((ratings.reduce((acc, rating) => acc + rating.value, 0) / ratings.length) * 100) / 100\n\t\t: 0;\n\t$: count = release?.rating ? release.rating.total : ratings.length;\n</script>\n\n{#if (ratings?.length > 0 || release?.rating) || showEmptyRatings}\n\t<p class=\"mb-1 text-sm\">\n\t\t<RatingStars rating={average} />\n\t\t{average} ({$_('ui.components.rating_summary.ratings', {\n\t\t\tvalues: { count }\n\t\t})})\n\t</p>\n{/if}\n","<script lang=\"ts\">\n\timport { _ } from 'svelte-intl-precompile';\n\timport type { ReleaseExtended } from '@beat-no/sdk/api';\n\timport { isSignedIn } from '@beat-no/stores/credentials';\n\timport Icon from '@beat-no/ui/components/Icon.svelte';\n\timport Button from '@beat-no/ui/components/Button.svelte';\n\timport { getSkin } from '@beat-no/ui/helpers/skin';\n\timport PurchasedBadge from '@beat-no/ui/components/PurchasedBadge.svelte';\n\timport { getRouteConfiguration } from '@beat-no/ui/helpers/routing';\n\timport { isFavorite } from '@beat-no/stores/favorites';\n\timport { isBorrowed } from '@beat-no/stores/borrowed';\n\n\tconst skin = getSkin();\n\tconst routes = getRouteConfiguration();\n\n\texport let release: ReleaseExtended;\n\texport let durationIcon: boolean = true;\n\texport let showType: boolean = true;\n\texport let ctaLink: string = getRouteConfiguration().signup({});\n\n\t$: authors = release.actors ? release.actors.filter((r) => r.role === 'author') : undefined;\n\t$: narrators = release.actors ? release.actors.filter((r) => r.role === 'narrator') : undefined;\n\t$: duration = release.tracks ? release.tracks.reduce((acc, track) => acc + track.duration, 0) : 0;\n\t$: hours = Math.floor(duration / 3600);\n\t$: mins = Math.round((duration - hours * 3600) / 60);\n\t$: favorite = isFavorite(release);\n\t$: borrowed = isBorrowed(release);\n\t// there is a bug in the core API, in that it sometimes does not return a w500 image\n\t// but will return, a w800 image with a 500px image in it.\n\t// See https://beattech.atlassian.net/browse/PLAT-3642\n\t$: image = release.cover.w500 ?? release.cover.w800;\n\n\tfunction handleChangeFavoriteState(): void {\n\t\t$favorite = !$favorite;\n\t}\n</script>\n\n<article class={skin.releaseCover.article}>\n\t<div class={skin.releaseCover.imageContainer}>\n\t\t<img src={image} alt={release.title} class={skin.releaseCover.image} />\n\t\t{#if $borrowed}\n\t\t\t<PurchasedBadge />\n\t\t{/if}\n\t</div>\n\t<section class={skin.releaseCover.informationSection}>\n\t\t{#if showType}\n\t\t\t<p class=\"text-sm text-neutrals-text-weak\">\n\t\t\t\t{$_('ui.components.release_cover.format')}\n\t\t\t\t<span class=\"text-primary-text-default\">{$_('ui.globals.release_type.' + release.type.replace('-', ''))}</span>\n\t\t\t</p>\n\t\t{/if}\n\t\t<h2 class={skin.releaseCover.title} data-testid=\"release-title\">{release.title}</h2>\n\t\t<slot name=\"ratings\" />\n\t\t<div class=\"text-sm\">\n {#if authors?.length > 0}\n\t\t\t<p class=\"mb-1\">\n\t\t\t\t<span class=\"text-neutrals-text-weak font-normal\">{$_('ui.components.release_cover.written_by')}</span>\n {#each authors as author, index}\n {#if index > 0}, {/if}\n <a class=\"text-primary-text-default\" href={routes.catalog.artist(author)} data-testid=\"release-artist\">{author.name}</a>\n {/each}\n\t\t\t</p>\n {/if}\n\t\t\t{#if narrators?.length > 0}\n\t\t\t\t<p class=\"mb-1\">\n\t\t\t\t\t<span class=\"text-neutrals-text-weak font-normal mr-1\">{$_('ui.components.release_cover.narrated_by')}</span>\n {#each narrators as narrator, index }\n {#if index > 0}, {/if}\n <a class=\"text-primary-text-default\" href={routes.catalog.actor(narrator)}>{narrator.name}</a>\n {/each}\n\t\t\t\t</p>\n\t\t\t{/if}\n\t\t\t{#if duration}\n\t\t\t\t<p>\n\t\t\t\t\t{#if durationIcon}\n\t\t\t\t\t\t<Icon name=\"duration\" class=\"h-4 fill-neutrals-icon-default align-middle\" />\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<span class=\"text-neutrals-text-weak font-normal\">{$_('ui.components.release_cover.duration_label')}</span>\n\t\t\t\t\t{/if}\n\t\t\t\t\t<span class=\"ml-1\"\n\t\t\t\t\t\t>{$_('ui.components.release_cover.duration', {\n\t\t\t\t\t\t\tvalues: { hours, mins }\n\t\t\t\t\t\t})}</span\n\t\t\t\t\t>\n\t\t\t\t</p>\n\t\t\t{/if}\n\t\t</div>\n\t\t{#if $isSignedIn && !$borrowed}\n\t\t\t{#if $favorite}\n\t\t\t\t<Button\n\t\t\t\t\ttext={$_('ui.components.release_cover.button_unfavorite')}\n\t\t\t\t\tclasses=\"mt-3 w-full justify-center\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\ticon=\"favoriteOutline\"\n\t\t\t\t\ton:click={handleChangeFavoriteState}\n\t\t\t\t/>\n\t\t\t{:else}\n\t\t\t\t<Button\n\t\t\t\t\ttext={$_('ui.components.release_cover.button_favorite')}\n\t\t\t\t\tclasses=\"mt-3 w-full justify-center\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\ticon=\"favourite\"\n\t\t\t\t\ton:click={handleChangeFavoriteState}\n\t\t\t\t/>\n\t\t\t{/if}\n\t\t\t{#if release?.prices[0]?.price}\n\t\t\t\t<slot name=\"purchase\" />\n\t\t\t{/if}\n\t\t\t<slot name=\"open-book\" />\n\t\t{:else if !$isSignedIn}\n\t\t\t<p class=\"mt-3\">\n\t\t\t\t<Button\n\t\t\t\t\ttext={$_('ui.components.release_cover.create_account')}\n\t\t\t\t\tclasses=\"mt-3 w-full justify-center\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\thref={ctaLink}\n\t\t\t\t/>\n\t\t\t</p>\n\t\t{/if}\n\t\t<slot name=\"addition\" />\n\t</section>\n</article>\n","<script lang=\"ts\">\n\timport { getSkin } from \"@beat-no/ui/helpers/skin\";\n\timport { getContext } from \"svelte\";\n\timport { tabsContext } from \"@beat-no/ui/components/Tabs.svelte\";\n\n\tconst skin = getSkin();\n\n\texport let tabs: [Symbol, string] | [] = [];\n export let hiddenTabs: Record<symbol, boolean> = {};\n\n export let tabsPosition: 'default' | 'left' | 'center' = 'default';\n\n\tconst tab: Symbol = Symbol(\"tab\");\n\tconst { selectTab, selectedTab } = getContext(tabsContext);\n\n\tfunction getClasses(position: 'default' | 'left' | 'center'): string {\n\t\tswitch (position) {\n\t\t\tcase 'left':\n\t\t\t\treturn skin.tabNav.default.containerLeft;\n\t\t\tcase 'center':\n\t\t\t\treturn skin.tabNav.default.containerCenter;\n\t\t\tdefault:\n\t\t\t\treturn skin.tabNav.default.container;\n\t\t}\n\t}\n\n\t$: tabsClass = getClasses(tabsPosition);\n</script>\n\n<div class={tabsClass}>\n\t{#each tabs as tab}\n\t\t<button\n\t\t\tclass={$selectedTab === tab[0] ? skin.tabNav.tab.active : skin.tabNav.tab.default}\n style=\"-webkit-tap-highlight-color: transparent\"\n class:hidden={hiddenTabs[tab[0]]}\n\t\t\ton:click={() => selectTab(tab[0])}\n\t\t\tdata-testid='tab-button'\n\t\t>\n\t\t\t{tab[1]}\n\t\t</button>\n\t{/each}\n</div>\n","<script context=\"module\" lang=\"ts\">\n\texport const tabsContext: symbol = Symbol(\"tabs\");\n</script>\n\n<script lang=\"ts\">\n\timport { setContext, onDestroy, getContext } from 'svelte';\n\timport { type Writable, writable } from \"svelte/store\";\n\timport TabNav from \"@beat-no/ui/components/TabNav.svelte\";\n\n\tlet localTabs: [symbol, string][] = [];\n\tconst panels: symbol[] = [];\n\tconst hiddenTabs: Record<symbol, boolean> = {};\n\tconst selectedTab: Writable<symbol> = writable(null);\n\tconst selectedPanel: Writable<symbol> = writable(null);\n\n\texport let hasBorder: boolean = false;\n\texport let hasTopBorder: boolean = false;\n\texport let hasPadding: boolean = true;\n\texport let isBorderLight: boolean = false;\n\texport let isFullScreenWidth: boolean = false;\n\texport let fullScreenClasses: string = \"px-6 md:px-20\";\n\texport let tabsPosition: 'default' | 'left' | 'center' = 'default';\n\texport function openTab(tabIndex: number): void {\n\t\tselectTab(localTabs[tabIndex][0]);\n\t}\n\n\tsetContext(tabsContext, {\n\t\tregisterTab: (tab: symbol, name: string) => {\n\t\t\tlocalTabs = [...localTabs, [tab, name]];\n\t\t\tselectedTab.update((current: symbol) => current || tab);\n\n\t\t\tonDestroy(() => {\n\t\t\t\tconst i: number = localTabs.findIndex(\n\t\t\t\t\t([item]: [symbol, string]) => item === tab\n\t\t\t\t);\n\t\t\t\tlocalTabs = [...localTabs.splice(i, 1)];\n\t\t\t\tselectedTab.update((current) =>\n\t\t\t\t\ti >= 0 && current === tab\n\t\t\t\t\t\t? localTabs[i][0] || localTabs[localTabs.length - 1][0]\n\t\t\t\t\t\t: current\n\t\t\t\t);\n\t\t\t});\n\t\t},\n\n\t\tregisterPanel: (panel: symbol) => {\n\t\t\tpanels.push(panel);\n\t\t\tselectedPanel.update((current: symbol) => current || panel);\n\n\t\t\tonDestroy(() => {\n\t\t\t\tconst i: number = panels.indexOf(panel);\n\t\t\t\tpanels.splice(i, 1);\n\t\t\t\tselectedPanel.update((current: symbol) =>\n\t\t\t\t\tcurrent === panel\n\t\t\t\t\t\t? panels[i] || panels[panels.length - 1]\n\t\t\t\t\t\t: current\n\t\t\t\t);\n\t\t\t});\n\t\t},\n\n\t\tselectTab: (tab: symbol) => {\n\t\t\tconst i: number = localTabs.findIndex(\n\t\t\t\t([item]: [symbol, string]) => item === tab\n\t\t\t);\n\t\t\tselectedTab.set(tab);\n\t\t\tselectedPanel.set(panels[i]);\n\t\t},\n\n hiddenState: (tab: symbol, state: boolean) => {\n if ($selectedTab === tab) {\n const nextTab: [symbol, string] = localTabs.filter(([item]) => item !== tab)[0];\n if (nextTab) {\n selectTab(nextTab[0]);\n }\n }\n hiddenTabs[tab] = state;\n },\n\n selectedTab,\n\t\tselectedPanel,\n\t});\n\n\tconst { selectTab } = getContext(tabsContext);\n</script>\n\n<div class:w-full={isFullScreenWidth} data-testid=\"tab-area\">\n\t<div class={isFullScreenWidth ? fullScreenClasses : \"\"}>\n\t\t<div class=\"mx-auto\" class:max-w-screen-xl={isFullScreenWidth}>\n\t\t\t<TabNav tabs={localTabs} {tabsPosition} {hiddenTabs} />\n\t\t</div>\n\t</div>\n\t<div\n\t\tclass:border-t={hasTopBorder || hasBorder}\n\t\tclass:border-b={hasBorder}\n\t\tclass:border-neutrals-background-strong-medium={!isBorderLight}\n\t\tclass:border-neutrals-background-weak={isBorderLight}\n\t\tclass:w-full={isFullScreenWidth}\n\t\tclass=\"border-solid\"\n\t>\n\t\t<div class={isFullScreenWidth ? fullScreenClasses : \"\"}>\n\t\t\t<div\n\t\t\t\tclass=\"mx-auto\"\n\t\t\t\tclass:my-10={hasPadding}\n\t\t\t\tclass:max-w-screen-xl={isFullScreenWidth}\n\t\t\t>\n\t\t\t\t<slot />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n","<script lang=\"ts\">\n\texport let name: string = \"\";\n\texport let hidden: boolean = false;\n\timport { getContext } from \"svelte\";\n\timport { tabsContext } from \"@beat-no/ui/components/Tabs.svelte\";\n\n\tconst tab: symbol = Symbol(\"tab\");\n\tconst { registerTab, selectedTab, hiddenState } = getContext(tabsContext);\n\n\tregisterTab(tab, name);\n $: hiddenState(tab, hidden);\n</script>\n\n{#if $selectedTab === tab}\n\t<slot />\n{/if}\n","<script lang=\"ts\">\n\timport { configuration } from '@beat-no/ui/helpers/contexts';\n\timport { locale } from 'svelte-intl-precompile';\n\timport type { ReleaseExtended } from '@beat-no/sdk/api';\n\timport { getRouteConfiguration } from '@beat-no/ui/helpers/routing';\n\n\tconst routes = getRouteConfiguration();\n\n\texport let release: ReleaseExtended;\n\n\tconst {\n\t\tmetadata: { titleFormatter, baseUrl }\n\t} = configuration.get();\n\n\t$: formattedTitle = titleFormatter(release.title);\n\t$: url = `${baseUrl}${routes.catalog.release(release)}`;\n</script>\n\n<svelte:head>\n\t<title>{formattedTitle}</title>\n\t<meta name=\"description\" content={release.description} />\n\t<link rel=\"canonical\" href={url} />\n\n\t<!-- OpenGraph -->\n\t<meta property=\"og:title\" content={release.title} />\n\t<meta property=\"og:url\" content={url} />\n\t<meta property=\"og:image\" content={release.cover.w500} />\n\t<meta property=\"og:type\" content=\"book\" />\n\t<meta property=\"og:description\" content={release.description} />\n\t<meta property=\"og:locale\" content={release.language ?? $locale} />\n\t{#if release.ids.isbn}\n\t\t<meta property=\"book:isbn\" content={release.ids.isbn} />\n\t{/if}\n\t{#each release.actors as actor}\n\t\t<meta property=\"book:{actor.role}\" content={actor.name} />\n\t{/each}\n\t<meta property=\"book:release_date\" content={release.releaseDate} />\n\t{#each release?.genres ?? [] as genre}\n\t\t<meta property=\"book:tag\" content={genre.join(',')} />\n\t{/each}\n\n\t<!-- Twitter -->\n\t<meta name=\"twitter:card\" content=\"summary_large_image\" />\n\t<meta name=\"twitter:title\" content={formattedTitle} />\n\t<meta name=\"twitter:description\" content={release.description} />\n\t<meta name=\"twitter:image\" content={release.cover.w500} />\n\t<meta name=\"twitter:image:alt\" content={formattedTitle} />\n</svelte:head>\n","!function(e,o){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=o():\"function\"==typeof define&&define.amd?define(o):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isToday=o()}(this,(function(){\"use strict\";return function(e,o,t){o.prototype.isToday=function(){var e=\"YYYY-MM-DD\",o=t();return this.format(e)===o.format(e)}}}));","<script lang='ts'>\n import Button from '@beat-no/ui/components/Button.svelte';\n import { getDispatcher } from '@beat-no/ui/helpers/events';\n import type { Bookmark } from '@beat-no/sdk/api';\n import Icon from './Icon.svelte';\n import dayjs from 'dayjs';\n import isToday from 'dayjs/plugin/isToday';\n import { _ } from 'svelte-intl-precompile';\n\n dayjs.extend(isToday);\n export let bookmarks: Array<Bookmark>;\n export let isReadonly: boolean = false;\n export let hasScroll: boolean = false;\n export let screenMode: string = 'light';\n\n const dispatch = getDispatcher();\n let isEditMode: boolean = false;\n\n function removeBookmark(bookmark: Bookmark): void {\n if (bookmarks.length <= 1) {\n isEditMode = false;\n }\n\n dispatch('removeBookmark', bookmark);\n }\n</script>\n\n<section class='flex justify-between py-1 items-center'>\n <section class='text-lg'>{$_(\"ui.pages.ereader.bookmarks.count\", { values: { count: bookmarks?.length ?? 0 } })}</section>\n <section class='hidden mr-[-1rem]' class:touch:block={!isReadonly}>\n <Button\n text={isEditMode ? $_(\"ui.pages.ereader.bookmarks.button_edit_done\") : $_(\"ui.pages.ereader.bookmarks.button_edit_init\")}\n classes='border-0 hover:bg-transparent'\n type={ screenMode === 'dark' ? 'outline' : 'text-contrast' }\n on:click={() => isEditMode = !isEditMode}\n />\n </section>\n</section>\n<section\n class:h-[calc(100vh-200px)]={hasScroll}\n class:overflow-auto={hasScroll}\n class='flex-1 ml-[-52px] touch:ml-0'\n>\n {#each bookmarks as item}\n <div class='group flex items-center'>\n <section\n class='px-4 touch:pl-0 pt-2 w-14 touch:w-10'\n class:touch:hidden={!isEditMode}\n >\n <span\n class='cursor-pointer'\n class:group-hover:block={!isReadonly}\n class:touch:group-hover:hidden={isReadonly || !isEditMode}\n class:hidden={isReadonly || !isEditMode}\n on:click={() => removeBookmark(item)}\n >\n <Icon name='cancel' class='w-5 fill-neutrals-icon-danger' />\n </span>\n </section>\n <section class='py-1 border-b flex-1'>\n <section\n class='cursor-pointer'\n on:click={() => { dispatch('gotoSelector', { selector: item.readerPositionSelector }); dispatch('close', undefined); }}\n >\n <section\n class='group-hover:text-primary-text-default text-base font-medium'\n class:text-primary-text-default={isEditMode}\n >{item.note}</section>\n <section class='flex justify-between text-sm'>\n <section>{dayjs(item.added).isToday() ? 'Today' : dayjs(item.added).format('MMMM d')}</section>\n <section>{Number.parseFloat(item.readerPositionRatio * 100).toFixed(2)}%</section>\n </section>\n </section>\n </section>\n </div>\n {/each}\n</section>\n","<script lang=\"ts\">\n\timport { _ } from 'svelte-intl-precompile';\n\timport { getRouteConfiguration } from '@beat-no/ui/helpers/routing';\n\timport type {\n\t\tBiography,\n\t\tReleaseBase,\n\t\tReleaseExtended,\n\t\tSubscriptionExtended,\n\t\tRating,\n\t\tBookmark,\n\t\tFeature\n\t} from '@beat-no/sdk/api';\n\timport ArtistBio from '@beat-no/ui/components/ArtistBio.svelte';\n\timport ArtistTopList from '@beat-no/ui/components/ArtistTopList.svelte';\n\timport BreadCrumbs from '@beat-no/ui/components/BreadCrumbs.svelte';\n\timport RatingsGrid from '@beat-no/ui/components/RatingsGrid.svelte';\n\timport RatingSummary from '@beat-no/ui/components/RatingSummary.svelte';\n\timport ReleaseCover from '@beat-no/ui/components/ReleaseCover.svelte';\n\timport Tabs from '@beat-no/ui/components/Tabs.svelte';\n\timport TabItem from '@beat-no/ui/components/TabItem.svelte';\n\timport TextShortener from '@beat-no/ui/components/TextShortener.svelte';\n\timport { getDispatcher } from '@beat-no/ui/helpers/events';\n\timport { onMount } from 'svelte/internal';\n\timport ReleaseMetadata from '../../components/ReleaseMetadata.svelte';\n\timport Button from '../../components/Button.svelte';\n\timport { SubscriptionState } from '@beat-no/sdk/types';\n\timport { afterNavigate, goto } from '$app/navigation';\n\timport Bookmarks from '@beat-no/ui/components/Bookmarks.svelte';\n\timport { getSkin } from '@beat-no/ui/helpers/skin';\n\n\tconst dispatch = getDispatcher();\n\n\texport let ratings: Rating[];\n\texport let bookmarks: Array<Bookmark>;\n\texport let release: ReleaseExtended;\n\texport let biography: Biography;\n\texport let top_releases: ReleaseBase[];\n\texport let features: Record<string, Feature> = undefined;\n\texport let subscriptions: SubscriptionExtended[];\n\texport let borrowed: ReleaseBase[];\n\texport let showType: boolean = true;\n\texport let maxLinesReviews: number = 2;\n\texport let hasBookReader: boolean = false;\n\texport let ctaLink: string | undefined = undefined;\n\texport let tabsPosition: 'default' | 'left' | 'center' = 'default';\n\texport let showEmptyRatings: boolean = false;\n\n\tconst skin = getSkin();\n\t// hack for bug in safari that causes weird scroll behaviour when comming from wishlist page\n\tafterNavigate(() => document.getElementById('page')?.scrollTo(0, 0));\n\n\t$: author = release?.actors.find((a) => a.role === 'author');\n\n\t$: breadcrumbs = [\n\t\t{\n\t\t\tlabel: $_('ui.pages.release.breadcrumbs_library'),\n\t\t\thref: getRouteConfiguration().common.library\n\t\t},\n\t\t{ label: release.title }\n\t];\n\n\tonMount(() => dispatch('impression', { type: 'release', release }));\n\n\t$: isActiveSubscription =\n\t\tsubscriptions && subscriptions[0] && SubscriptionState.Incomplete !== subscriptions[0]?.state;\n\t$: isBorrowed = !!borrowed?.find(({ id }: ReleaseBase) => id === release?.id);\n\t$: isUpcomingRelease = new Date(release?.releaseDate).getTime() > new Date().getTime();\n</script>\n\n<ReleaseMetadata {release} />\n\n<slot />\n\n<section id=\"page\" class=\"my-5 lg:mx-auto max-w-6xl md:px-20 px-5\">\n\t<BreadCrumbs items={breadcrumbs} />\n\t<ReleaseCover {release} durationIcon={false} {showType} {ctaLink}>\n\t\t<span slot=\"ratings\">\t\t\t\n\t\t\t<RatingSummary {ratings} {release} {showEmptyRatings}/>\n\t\t</span>\n\t\t<svelte:fragment slot=\"purchase\">\n\t\t\t{#if !isBorrowed && features?.borrowing?.enabled && isActiveSubscription}\n\t\t\t\t<Button\n\t\t\t\t\tclasses=\"w-full justify-center my-2\"\n\t\t\t\t\ticon=\"plus\"\n\t\t\t\t\ttext={$_('ui.pages.release.borrowing.button_buy_release', { values: { price: release?.prices[0]?.price } })}\n\t\t\t\t\thref={getRouteConfiguration().catalog.release_purchase_release(release)}\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t/>\n\t\t\t{/if}\n\t\t</svelte:fragment>\n\t\t<svelte:fragment slot=\"addition\">\n\t\t\t<slot name=\"releaseCoverAddition\" {isActiveSubscription} {release} />\n\t\t</svelte:fragment>\n\t\t<svelte:fragment slot=\"open-book\">\n\t\t\t{#if hasBookReader && isActiveSubscription && release?.type === 'ebook' && !isUpcomingRelease}\n\t\t\t\t<div class=\"text-center\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclasses=\"w-full justify-center my-2\"\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\ttext={$_('ui.pages.release.read_now')}\n\t\t\t\t\t\thref={getRouteConfiguration().catalog?.reader({ release })}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</svelte:fragment>\n\t</ReleaseCover>\n</section>\n<Tabs\n\thasBorder={true}\n\thasPadding={false}\n\tisFullScreenWidth={true}\n\tisBorderLight={true}\n\tfullScreenClasses=\"lg:mx-auto max-w-6xl md:px-20 px-5\"\n\t{tabsPosition}\n>\n\t<TabItem name={$_('ui.pages.release.tabs.overview')}>\n\t\t<div class={skin.releaseCover.tabBioContent}>\n\t\t\t<TextShortener text={release.description} maxLines={6} hasFade={false} />\n\t\t</div>\n\t</TabItem>\n\t<TabItem name={$_('ui.pages.release.tabs.author')}>\n\t\t<ArtistBio artist={author} bio={biography} />\n\t</TabItem>\n\t<TabItem name={$_('ui.pages.release.tabs.reviews')} hidden={ratings.length === 0}>\n\t\t<RatingsGrid {ratings} limit={9} maxLines={maxLinesReviews} />\n\t</TabItem>\n\t<TabItem name=\"Bookmarks\" hidden={!hasBookReader || !bookmarks?.length}>\n\t\t<div class=\"max-w-xs mx-auto\">\n\t\t\t{#if bookmarks}\n\t\t\t\t<Bookmarks\n\t\t\t\t\tisReadonly={true}\n\t\t\t\t\t{bookmarks}\n\t\t\t\t\ton:gotoSelector={({ detail: { selector } }) =>\n\t\t\t\t\t\tgoto(getRouteConfiguration().catalog.reader({ release, selector: selector.replaceAll('/', '~') }))}\n\t\t\t\t/>\n\t\t\t{/if}\n\t\t</div>\n\t</TabItem>\n</Tabs>\n<section class=\"m-5 lg:mx-auto max-w-6xl md:px-20\">\n\t<ArtistTopList\n\t\tartist={author}\n\t\treleases={top_releases}\n\t\texceptReleases={[release.id]}\n\t\ttitle={$_('ui.pages.release.more_by_author')}\n\t\t{showType}\n\t/>\n</section>\n","<script lang=\"ts\">\n\timport Layout from '@beat-no/ui/pages/release/Layout.svelte';\n\timport { getRouteConfiguration } from '@beat-no/ui/helpers/routing';\n\timport type { PageData } from './$types';\n\n\tconst routes = getRouteConfiguration();\n\n\texport let data: PageData;\n</script>\n\n<Layout {...data} tabsPosition=\"left\" maxLinesReviews={7} showType={false} ctaLink={routes.signup({})}>\n\t<slot />\n</Layout>\n"],"names":["plaintext","PlainText","ctx","dirty","plaintext_changes","t1_value","if_block","create_if_block","attr","a_href_value","getRouteConfiguration","insert_hydration","target","div","anchor","append_hydration","section","h2","bannerimage_changes","current","set_data","t1","i","each_blocks","article","ratingstars_changes","textshortener_changes","create_if_block_1","button","t3_value","p","t3","_a","_b","t0_value","span","t0","t2","t2_value","create_if_block_9","a","create_if_block_7","t_value","t","button_changes","if_block1","create_if_block_11","create_if_block_10","create_if_block_8","create_if_block_6","create_if_block_4","img","img_src_value","img_alt_value","div0","div1","selectTab","tab","toggle_class","div4","div5","div3","div2","tabsContext","name","$$props","meta","meta_property_value","meta_content_value","each_value_1","each_value","meta0","meta0_content_value","meta1","meta1_content_value","meta5","meta5_content_value","meta7","meta7_content_value","meta10","meta10_content_value","link","meta2","meta3","meta4","meta6","meta8","meta9","meta11","meta12","e","o","module","this","dayjs","section0","section6","section5","section1","section4","section2","section3","t5","t5_value","click_handler","$$invalidate","isEditMode","click_handler_1","item","removeBookmark","dispatch","create_if_block_2","tabitem0_changes","tabitem1_changes","tabitem2_changes","artisttoplist_changes","selector","goto","release","routes","data"],"mappings":"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","x_google_ignoreList":[10]}