{"version":3,"file":"TeachingMaterialsFragments-CNrxRydm.js","sources":["../../src/composables/TeachingMaterials.js","../../src/components/teachingMaterials/TeachingMaterialsArticle.vue","../../src/components/teachingMaterials/TeachingMaterialsDrawer.vue","../../src/components/teachingMaterials/TeachingMaterialsFeaturedItems.vue","../../src/components/teachingMaterials/TeachingMaterialsFeatureShowcase.vue","../../src/queries/TeachingMaterialsFragments.js"],"sourcesContent":["export function useTeachingMaterials() {\n const metaDescription =\n 'Free teaching materials for educators to use during visits to the museum and in the classroom.';\n\n const findInfo = (key, item, instance) => {\n const type = key.split('_')[1];\n const resource = item === 'tmPackage' ? 'tmPackagePageElements' : 'tmTopicPageElements';\n\n if (instance.exposed[item] && instance.exposed[item].value[resource]) {\n return instance.exposed[item].value[resource][key][type];\n }\n\n return [];\n };\n\n const getPromptCount = ({ associatedTopics: topics }) => {\n let count = 0;\n\n if (topics && topics.length) {\n topics.forEach((item) => {\n if (\n (item.topic.caCount || item.topic.vdCount) &&\n (item.topic.caCount > 0 || item.topic.vdCount > 0)\n ) {\n count += 1;\n }\n });\n }\n\n return count;\n };\n\n return { metaDescription, findInfo, getPromptCount };\n}\n","<template>\n <div>\n <article v-for=\"(item, index) in items\" :key=\"index\" class=\"space-48-64-above\">\n <div :class=\"$style.results\">\n <router-link\n v-if=\"item.featuredImage\"\n :to=\"getPath(item)\"\n :class=\"[isFiltered ? 'span-six' : 'span-eight', 'aspect-container']\"\n :ga4-event=\"\n JSON.stringify({\n click_type: 'hero',\n component: 'TeachingMaterialsArticle',\n content_group: 'teaching_materials',\n gtm_tag: 'linked_image',\n file_name: `${item.featuredImage.node.sourceUrl.split('/').pop()}`,\n link_url: `${getPath(item)}`,\n })\n \"\n >\n <picture>\n <img\n v-if=\"item.featuredImage\"\n :alt=\"item.featuredImage.node.altText\"\n :src=\"proxySource(item.featuredImage.node.sourceUrl, 840)\"\n :srcset=\"item.imageSrcset\"\n class=\"aspect-image\"\n loading=\"lazy\"\n sizes=\"(min-width: 960px) 870px, 100vw\"\n />\n </picture>\n </router-link>\n <div :class=\"[$style.info, isFiltered ? 'span-six' : 'span-four', 'space-12-16-above']\">\n <h3>\n <router-link :to=\"getPath(item)\" v-html=\"item.title\"> </router-link>\n </h3>\n <p\n v-if=\"item.packageParent\"\n :class=\"$style.from\"\n v-html=\"`From: ${item.packageParent.title}`\"\n ></p>\n <p v-if=\"!isModule\" :class=\"$style.from\">Includes: {{ getIncluded(item) }}</p>\n <div :class=\"[$style.excerpt, 'space-12-16-above']\" v-html=\"item.excerpt\"></div>\n <router-link :to=\"getPath(item)\" :class=\"[moreLink, $style.explore]\">\n Explore the materials\n </router-link>\n <div\n v-if=\"\n (item.imageCount && item.__typename !== 'Tm_package') ||\n (item.videoCount && item.__typename !== 'Tm_package') ||\n (item.associatedTopics && item.associatedTopics.length)\n \"\n :class=\"$style.resources\"\n >\n <p v-if=\"item.imageCount && item.__typename !== 'Tm_package'\">\n Images: {{ item.imageCount }}\n </p>\n <p v-if=\"item.videoCount && item.__typename !== 'Tm_package'\">\n Video: {{ item.videoCount }}\n </p>\n <p v-if=\"item.associatedTopics && item.associatedTopics.length\">\n Topics with View and Discuss and Classroom Activities Prompts:\n {{ getPromptCount(item) }}\n </p>\n <p\n v-if=\"item.type === 'survey' && item.tmPackagePageElements.whats_included\"\n v-html=\"item.tmPackagePageElements.whats_included\"\n ></p>\n </div>\n </div>\n </div>\n </article>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { moreLink } from '@/styles/links.module.scss';\nimport { Package } from '@/types/teachingMaterials.interface';\nimport { useImageProxy } from '@/composables/Common.js';\nimport { useTeachingMaterials } from '@/composables/TeachingMaterials.js';\n\ninterface Path {\n name: string;\n params: {\n parent?: string;\n slug: string;\n };\n}\n\nconst props = withDefaults(\n defineProps<{\n content: Array<Package>;\n filters?: Array<string>;\n isFiltered?: boolean;\n isFull?: boolean;\n isModule?: boolean;\n type?: string;\n }>(),\n {\n isFiltered: false,\n isFull: true,\n isModule: false,\n }\n);\n\nconst { getPromptCount } = useTeachingMaterials();\nconst { proxySource } = useImageProxy();\n\nconst items = computed(() => {\n if (!props.isFull) {\n return props.content.slice(0, 2);\n }\n\n return props.content;\n});\n\nfunction getIncluded(resource: Package): string {\n if (props.filters && props.filters.length) {\n const matches = props.filters\n .filter((filter) =>\n resource[`teachingMaterial${props.type}`].nodes.find((item) => item.slug === filter)\n )\n .map((match) => match.replace(/-/g, ' '));\n\n return matches.length ? matches.join(', ') : '';\n }\n\n return '';\n}\n\nfunction getPath(item: Package): Path {\n if (item.packageParent && Object.keys(item.packageParent).length) {\n return {\n name: 'TeachingMaterialsTopic',\n params: { parent: item.packageParent.slug, slug: decodeURI(item.slug) },\n };\n }\n\n return { name: 'TeachingMaterialsPackage', params: { slug: item.slug } };\n}\n</script>\n\n<style lang=\"scss\" module>\n.border-bottom {\n border-bottom: 1px solid $black;\n display: block;\n margin-top: 1rem;\n padding-bottom: 1rem;\n text-decoration: none;\n}\n\n.excerpt {\n p {\n margin-top: 0;\n }\n}\n\n.explore {\n display: inline-block;\n margin-top: 1rem;\n}\n\n.from {\n @include info;\n\n & {\n line-height: 1rem;\n }\n\n &:first-of-type {\n margin-top: 0;\n }\n}\n\n.info {\n a {\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n\n.resources {\n border-top: 1px solid $black;\n\n p {\n @include info;\n\n & {\n line-height: 1rem;\n }\n\n &:first-of-type {\n @include space-8-10-above;\n }\n }\n}\n\n@media (min-width: $break-point) {\n .results {\n @include grid;\n\n > a {\n @include space-5-above;\n }\n\n .info {\n margin-top: 0;\n\n h3 {\n margin: 0;\n }\n }\n }\n}\n</style>\n","<template>\n <section\n v-if=\"props.content.length\"\n ref=\"drawer\"\n :class=\"[{ [$style.show]: state }, $style.drawer]\"\n >\n <button\n v-if=\"!state\"\n :id=\"handleId\"\n :aria-controls=\"contentId\"\n aria-expanded=\"false\"\n class=\"button-reset button-tertiary plus-sign\"\n :ga4-event=\"\n JSON.stringify({\n click_type: 'show',\n component: 'TeachingMaterialsDrawer',\n content_group: 'teaching_materials',\n gtm_tag: 'interaction',\n link_text: `${preparedTitle}`,\n })\n \"\n type=\"button\"\n @keydown.enter=\"keyed = !keyed\"\n @click.prevent=\"state = !state\"\n >\n {{ treatedTitle }}\n </button>\n <transition\n enter-from-class=\"drawer-enter-from\"\n enter-active-class=\"drawer-enter-active\"\n leave-to-class=\"drawer-leave-to\"\n leave-active-class=\"drawer-leave-active\"\n @after-enter=\"afterEnter\"\n >\n <div v-show=\"state\">\n <section v-if=\"props.isModule\">\n <TeachingMaterialsArticle\n :id=\"contentId\"\n :aria-hidden=\"hidden && false\"\n :aria-labelledby=\"handleId\"\n :content=\"props.content\"\n :filters=\"props.filters\"\n :inert=\"hidden\"\n :is-module=\"true\"\n :type=\"props.type\"\n ></TeachingMaterialsArticle>\n </section>\n <section v-else-if=\"props.isFiltered\">\n <TeachingMaterialsArticle\n :id=\"contentId\"\n :aria-hidden=\"hidden && false\"\n :aria-labelledby=\"handleId\"\n :content=\"props.content\"\n :filters=\"props.filters\"\n :inert=\"hidden\"\n :is-filtered=\"true\"\n :type=\"props.type\"\n ></TeachingMaterialsArticle>\n </section>\n <section\n v-else\n :id=\"contentId\"\n :aria-hidden=\"hidden && false\"\n :aria-labelledby=\"handleId\"\n :class=\"[$style.terms, { [term]: props.content[0].__typename === 'Tm_term' }]\"\n :inert=\"hidden\"\n >\n <article v-for=\"(item, key) in props.content\" :key=\"key\">\n <h3 v-html=\"item.title\"></h3>\n <a\n v-for=\"(link, index) in item.links\"\n :key=\"index\"\n :class=\"[$style.links, moreLink]\"\n @click.prevent=\"clickLink(link)\"\n v-html=\"getLinkLabel(link)\"\n ></a>\n <p v-if=\"item.term\" v-html=\"item.term\"></p>\n <ProcessContent v-if=\"item.text\" :content=\"item.text\"></ProcessContent>\n </article>\n </section>\n </div>\n </transition>\n <button\n v-if=\"state\"\n :id=\"handleId\"\n :aria-controls=\"contentId\"\n aria-expanded=\"true\"\n class=\"button-reset button-tertiary minus-sign\"\n type=\"button\"\n :ga4-event=\"\n JSON.stringify({\n click_type: 'hide',\n component: 'TeachingMaterialsDrawer',\n content_group: 'teaching_materials',\n gtm_tag: 'interaction',\n link_text: `${preparedTitle}`,\n })\n \"\n @click.prevent=\"closeDrawer()\"\n >\n {{ treatedTitle }}\n </button>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { Link, Package } from '@/types/teachingMaterials.interface';\nimport { moreLink } from '@/styles/links.module.scss';\nimport { term } from '@/styles/teachingMaterials.module.scss';\nimport { useA11y, useUniqueIdentifier } from '@/composables/Common.js';\nimport { useRoute } from 'vue-router';\n\nimport ProcessContent from '@/components/common/ProcessContent.vue';\nimport TeachingMaterialsArticle from '@/components/teachingMaterials/TeachingMaterialsArticle.vue';\n\nconst emit = defineEmits({\n 'link-opened': (payload) =>\n typeof payload.video === 'string' || typeof payload.image === 'string',\n});\nconst props = withDefaults(\n defineProps<{\n content: Array<Package>;\n filters?: Array<string>;\n group?: string;\n isFiltered?: boolean;\n isModule?: boolean;\n title?: string;\n type?: string;\n }>(),\n {\n isFiltered: false,\n isModule: false,\n }\n);\n\nconst route = useRoute();\n\nconst { focusFirstChild } = useA11y();\nconst { uid } = useUniqueIdentifier();\n\nconst drawer = ref(null);\nconst hidden = ref(true);\nconst keyed = ref(false);\nconst state = ref(false);\n\nconst contentId = computed(() => `content-${props.group}-${uid}`);\nconst handleId = computed(() => `handle-${props.group}-${uid}`);\nconst preparedTitle = computed(() => {\n if (state.value && props.title) {\n return props.title.split(' ').join('-');\n }\n\n const lessTitle = props.title && `${props.title.replace(/\"/g, '').split(' ').shift()} Less`;\n\n return lessTitle && lessTitle.split(' ').join('-');\n});\nconst treatedTitle = computed(() => {\n if (state.value && props.title) {\n return `${props.title.replace(/\"/g, '').split(' ').shift()} Less`;\n }\n\n return props.title && props.title.replace(/\"/g, '');\n});\n\nwatch(state, (val) => (hidden.value = val ? false : true));\n\nonMounted(() => {\n if (route.hash) {\n const anchors = drawer.value?.querySelectorAll(`[name='${route.hash.substr(1)}']`);\n\n if (anchors && anchors.length) {\n anchors.forEach((anchor) => {\n state.value = anchor.hasAttribute('isdrawer');\n });\n }\n }\n});\n\nfunction afterEnter(): void {\n if (keyed.value) {\n focusFirstChild(contentId);\n keyed.value = false;\n }\n}\n\nfunction closeDrawer(): void {\n const { top: bodyTop } = document.body.getBoundingClientRect();\n const { top } = drawer.value?.getBoundingClientRect();\n const offset = Math.abs(bodyTop) - Math.abs(top);\n\n window.scrollTo(0, offset);\n state.value = !state.value;\n}\n\nfunction clickLink(link: Link): void {\n emit('link-opened', link);\n}\n\nfunction getLinkLabel(link: Link): string {\n if (link.label) {\n return link.label;\n }\n\n return link.video ? 'View Video' : 'View Photo';\n}\n</script>\n\n<style lang=\"scss\" module>\n.border-bottom {\n border-bottom: 1px solid $black;\n display: block;\n margin-bottom: 2rem;\n padding-bottom: 1rem;\n text-decoration: none;\n}\n\n.drawer {\n button {\n cursor: pointer;\n margin-top: 0.75rem;\n padding: 0.75rem 0;\n }\n\n section {\n overflow: hidden;\n max-height: 0;\n }\n\n &.show {\n > a {\n &::after {\n border-bottom: 2px solid $black;\n border-top: none;\n }\n\n &:hover {\n &::after {\n border-bottom: 2px solid $white;\n border-top: none;\n }\n }\n }\n\n section {\n max-height: 100%;\n min-height: 0;\n overflow: visible;\n }\n }\n}\n\n.terms {\n h3 {\n margin: 0;\n }\n\n p {\n margin: 0.5rem 0 0;\n }\n}\n\n@media (min-width: $break-point) {\n .terms {\n margin-top: 2rem;\n }\n}\n</style>\n","<template>\n <section>\n <article v-for=\"(item, key) in items\" :key=\"key\" class=\"space-48-64-above\">\n <router-link\n :to=\"{\n name: 'TeachingMaterialsTopic',\n params: {\n parent: getParentSlug(item),\n slug: decodeURI(item[type].slug),\n },\n }\"\n >\n <picture v-if=\"item[type].featuredImage\" class=\"aspect-container\">\n <img\n :alt=\"item[type].featuredImage.node.altText\"\n :src=\"proxySource(item[type].featuredImage.node.sourceUrl, 640)\"\n :srcset=\"item[type].imageSrcset\"\n class=\"aspect-image\"\n loading=\"lazy\"\n sizes=\"(min-width: 960px) 640px, 100vw\"\n />\n </picture>\n <h4 v-html=\"item[type].title\"></h4>\n </router-link>\n <div :class=\"tmExcerpt\" v-html=\"item[type].excerpt\"></div>\n <p v-if=\"item[type].imageCount\" :class=\"tmLabel\">Images: {{ item[type].imageCount }}</p>\n <p v-if=\"item[type].videoCount\" :class=\"tmLabel\">Videos: {{ item[type].videoCount }}</p>\n <p v-if=\"item[type].vdCount\" :class=\"tmLabel\">View and Discuss: {{ item[type].vdCount }}</p>\n <p v-if=\"item[type].caCount\" :class=\"tmLabel\">\n Classroom Activities: {{ item[type].caCount }}\n </p>\n </article>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { Artist, Topic } from '@/types/teachingMaterials.interface';\nimport { tmExcerpt, tmLabel } from '@/styles/teachingMaterials.module.scss';\nimport { useImageProxy } from '@/composables/Common.js';\n\nconst props = defineProps<{\n items: Array<Artist> | Array<Topic>;\n parentSlug?: string;\n type: string;\n}>();\n\nconst { proxySource } = useImageProxy();\n\nfunction getParentSlug(item: Artist | Topic): string | undefined {\n if (!props.parentSlug && item.topic && item.topic.packageParent) {\n return item.topic.packageParent.slug;\n }\n\n if (!props.parentSlug && item.packageParent) {\n return item.packageParent.slug;\n }\n\n return props.parentSlug;\n}\n</script>\n","<template>\n <TeachingMaterialsFeaturedItems\n v-if=\"\n (showcase && showcase.type === 'artists' && showcase.artists.length) ||\n (associated && associatedType === 'artists' && associated.length)\n \"\n :class=\"[$style.showcase, 'space-12-16-above']\"\n :items=\"getArtistValue\"\n :parent-slug=\"parentSlug\"\n type=\"artist\"\n ></TeachingMaterialsFeaturedItems>\n <TeachingMaterialsFeaturedItems\n v-else-if=\"\n (showcase && showcase.type === 'topics' && showcase.topics.length) ||\n (associated && associatedType === 'topics' && associated.length)\n \"\n :class=\"[$style.showcase, 'space-12-16-above']\"\n :items=\"getTopicValue\"\n :parent-slug=\"parentSlug\"\n type=\"topic\"\n ></TeachingMaterialsFeaturedItems>\n <section v-else :class=\"[$style.showcase, 'space-12-16-above']\">\n <article v-for=\"(item, key) in associated\" :key=\"key\" class=\"space-48-64-above\">\n <router-link\n v-if=\"isTopic(item)\"\n :to=\"{\n name: 'TeachingMaterialsTopic',\n params: {\n parent: getParentSlug(item),\n slug: decodeURI(item.slug),\n },\n }\"\n >\n <picture class=\"aspect-container\">\n <img\n v-if=\"item.featuredImage\"\n :alt=\"item.featuredImage.node.altText\"\n :src=\"proxySource(item.featuredImage.node.sourceUrl, 400)\"\n :srcset=\"item.imageSrcset\"\n class=\"aspect-image\"\n loading=\"lazy\"\n sizes=\"(min-width: 960px) 470px, 100vw\"\n />\n </picture>\n <h4 class=\"space-12-16-above\" v-html=\"item.title\"></h4>\n </router-link>\n <router-link\n v-else\n :to=\"{\n name: 'TeachingMaterialsPackage',\n params: {\n slug: item.slug,\n },\n }\"\n >\n <picture class=\"aspect-container\">\n <img\n v-if=\"item.featuredImage\"\n :alt=\"item.featuredImage.node.altText\"\n :src=\"proxySource(item.featuredImage.node.sourceUrl, 400)\"\n :srcset=\"item.imageSrcset\"\n class=\"aspect-image\"\n loading=\"lazy\"\n sizes=\"(min-width: 960px) 470px, 100vw\"\n />\n </picture>\n <h4 class=\"space-12-16-above\" v-html=\"item.title\"></h4>\n </router-link>\n <div :class=\"[tmExcerpt, 'space-8-10-above']\" v-html=\"item.excerpt\"></div>\n <div v-if=\"isTopic(item)\" class=\"space-8-10-above\">\n <p v-if=\"item.imageCount\" :class=\"tmLabel\">Images: {{ item.imageCount }}</p>\n <p v-if=\"item.videoCount\" :class=\"tmLabel\">Videos: {{ item.videoCount }}</p>\n <p v-if=\"item.vdCount\" :class=\"tmLabel\">View and Discuss: {{ item.vdCount }}</p>\n <p v-if=\"item.caCount\" :class=\"tmLabel\">Classroom Activities: {{ item.caCount }}</p>\n </div>\n <div v-else :class=\"[$style.included, 'space-8-10-above']\">\n <p\n v-if=\"item.tmPackagePageElements && item.tmPackagePageElements.whats_included\"\n v-html=\"item.tmPackagePageElements.whats_included\"\n ></p>\n <p v-else>\n Topics with View and Discuss and Classroom Activities prompts: {{ getPromptCount(item) }}\n </p>\n </div>\n </article>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { Artist, Package, Topic } from '@/types/teachingMaterials.interface';\nimport { computed } from 'vue';\nimport TeachingMaterialsFeaturedItems from '@/components/teachingMaterials/TeachingMaterialsFeaturedItems.vue';\nimport { tmExcerpt, tmLabel } from '@/styles/teachingMaterials.module.scss';\nimport { useImageProxy } from '@/composables/Common.js';\nimport { useTeachingMaterials } from '@/composables/TeachingMaterials.js';\n\nconst props = defineProps<{\n associated?: Array<Package | Topic>;\n associatedType?: string;\n parentSlug?: string;\n showcase?: {\n artists: Array<Artist>;\n packages: Array<Package>;\n topics: Array<Topic>;\n type: string;\n };\n}>();\n\nconst { getPromptCount } = useTeachingMaterials();\nconst { proxySource } = useImageProxy();\n\nconst getArtistValue = computed(() => {\n return props.showcase ? props.showcase.artists : props.associated;\n});\nconst getTopicValue = computed(() => {\n return props.showcase ? props.showcase.topics : props.associated;\n});\n\nfunction getParentSlug(item: Package | Topic): string {\n if (!props.parentSlug && item.topic && item.topic.packageParent) {\n return item.topic.packageParent.slug;\n }\n\n if (!props.parentSlug && item.packageParent) {\n return item.packageParent.slug;\n }\n\n if (props.parentSlug) {\n return props.parentSlug;\n }\n\n return '';\n}\n\nfunction isTopic(item: Package | Topic): boolean {\n return item.__typename === 'Tm_topic';\n}\n</script>\n\n<style lang=\"scss\" module>\n.included {\n p {\n @include info;\n }\n}\n.showcase {\n a {\n display: block;\n text-decoration: none;\n\n &:hover {\n h4 {\n text-decoration: underline;\n }\n }\n &:focus {\n background-color: $white;\n color: $black;\n\n picture,\n h4 {\n @include focus-outline;\n }\n h4 {\n background-color: $black;\n color: $white;\n }\n }\n }\n article {\n &:first-of-type {\n margin-top: 0;\n }\n }\n}\n\n@media (min-width: $break-point) {\n .showcase {\n @include grid;\n grid-row-gap: 2rem;\n\n article {\n grid-column: span 4;\n margin-top: 0;\n }\n }\n}\n</style>\n","import gql from 'graphql-tag';\n\nexport const sharedPackageQuery = gql`\n fragment sharedPackage on Tm_package {\n associatedTopics {\n topic {\n caCount\n vdCount\n }\n }\n excerpt\n featuredImage {\n node {\n altText\n sourceUrl\n }\n }\n imageSrcset\n imageCount\n slug\n teachingMaterialArtists(first: 100) {\n nodes {\n name\n slug\n }\n }\n teachingMaterialMedia(first: 100) {\n nodes {\n name\n slug\n }\n }\n teachingMaterialSubjects(first: 100) {\n nodes {\n name\n slug\n }\n }\n teachingMaterialThemes(first: 100) {\n nodes {\n name\n slug\n }\n }\n title\n tmPackagePageElements {\n whats_included\n }\n type\n videoCount\n }\n`;\n\nexport const sharedTopicQuery = gql`\n fragment sharedTopic on Tm_topic {\n caCount\n excerpt\n featuredImage {\n node {\n altText\n sourceUrl\n }\n }\n imageSrcset\n imageCount\n packageParent {\n slug\n title\n }\n slug\n teachingMaterialArtists(first: 100) {\n nodes {\n name\n slug\n }\n }\n teachingMaterialMedia(first: 100) {\n nodes {\n name\n slug\n }\n }\n teachingMaterialSubjects(first: 100) {\n nodes {\n name\n slug\n }\n }\n teachingMaterialThemes(first: 100) {\n nodes {\n name\n slug\n }\n }\n title\n vdCount\n videoCount\n }\n`;\n\nexport const associatedInfo = `\n caCount\n imageCount\n slug\n vdCount\n videoCount\n`;\n\nexport const tmArtists = `\n teachingMaterialArtists(first: 100, where: { sortOrder: true }) {\n nodes {\n name\n slug\n }\n }\n`;\n\nexport const tmMedia = `\n teachingMaterialMedia(first: 100) {\n nodes {\n name\n slug\n }\n }\n`;\n\nexport const tmSubjects = `\n teachingMaterialSubjects(first: 100) {\n nodes {\n name\n slug\n }\n }\n`;\n\nexport const tmThemes = `\n teachingMaterialThemes(first: 100) {\n nodes {\n name\n slug\n }\n }\n`;\n"],"names":["useTeachingMaterials","key","item","instance","type","resource","topics","count","props","__props","getPromptCount","proxySource","useImageProxy","items","computed","getIncluded","matches","filter","match","getPath","emit","__emit","route","useRoute","focusFirstChild","useA11y","uid","useUniqueIdentifier","drawer","ref","hidden","keyed","state","contentId","handleId","preparedTitle","lessTitle","treatedTitle","watch","val","onMounted","anchors","_a","anchor","afterEnter","closeDrawer","bodyTop","top","offset","clickLink","link","getLinkLabel","getParentSlug","getArtistValue","getTopicValue","isTopic","sharedPackageQuery","gql","sharedTopicQuery","associatedInfo","tmArtists","tmMedia","tmSubjects","tmThemes"],"mappings":"0eAAO,SAASA,GAAuB,CAgCrC,MAAO,CAAE,gBA9BP,iGA8BwB,SA5BT,CAACC,EAAKC,EAAMC,IAAa,CACxC,MAAMC,EAAOH,EAAI,MAAM,GAAG,EAAE,CAAC,EACvBI,EAAWH,IAAS,YAAc,wBAA0B,sBAElE,OAAIC,EAAS,QAAQD,CAAI,GAAKC,EAAS,QAAQD,CAAI,EAAE,MAAMG,CAAQ,EAC1DF,EAAS,QAAQD,CAAI,EAAE,MAAMG,CAAQ,EAAEJ,CAAG,EAAEG,CAAI,EAGlD,CAAE,CACV,EAmBmC,eAjBb,CAAC,CAAE,iBAAkBE,CAAM,IAAO,CACvD,IAAIC,EAAQ,EAEZ,OAAID,GAAUA,EAAO,QACnBA,EAAO,QAASJ,GAAS,EAEpBA,EAAK,MAAM,SAAWA,EAAK,MAAM,WACjCA,EAAK,MAAM,QAAU,GAAKA,EAAK,MAAM,QAAU,KAEhDK,GAAS,EAEnB,CAAO,EAGIA,CACR,CAEmD,CACtD,qTCwDA,MAAMC,EAAQC,EAgBR,CAAE,eAAAC,CAAe,EAAIV,EAAqB,EAC1C,CAAE,YAAAW,CAAY,EAAIC,EAAc,EAEhCC,EAAQC,EAAS,IAChBN,EAAM,OAIJA,EAAM,QAHJA,EAAM,QAAQ,MAAM,EAAG,CAAC,CAIlC,EAED,SAASO,EAAYV,EAA2B,CAC9C,GAAIG,EAAM,SAAWA,EAAM,QAAQ,OAAQ,CACnC,MAAAQ,EAAUR,EAAM,QACnB,OAAQS,GACPZ,EAAS,mBAAmBG,EAAM,IAAI,EAAE,EAAE,MAAM,KAAMN,GAASA,EAAK,OAASe,CAAM,CAAA,EAEpF,IAAKC,GAAUA,EAAM,QAAQ,KAAM,GAAG,CAAC,EAE1C,OAAOF,EAAQ,OAASA,EAAQ,KAAK,IAAI,EAAI,EAAA,CAGxC,MAAA,EAAA,CAGT,SAASG,EAAQjB,EAAqB,CACpC,OAAIA,EAAK,eAAiB,OAAO,KAAKA,EAAK,aAAa,EAAE,OACjD,CACL,KAAM,yBACN,OAAQ,CAAE,OAAQA,EAAK,cAAc,KAAM,KAAM,UAAUA,EAAK,IAAI,CAAE,CACxE,EAGK,CAAE,KAAM,2BAA4B,OAAQ,CAAE,KAAMA,EAAK,KAAO,CAAA,s4FCtBzE,MAAMkB,EAAOC,EAIPb,EAAQC,EAgBRa,EAAQC,EAAS,EAEjB,CAAE,gBAAAC,CAAgB,EAAIC,GAAQ,EAC9B,CAAE,IAAAC,CAAI,EAAIC,GAAoB,EAE9BC,EAASC,EAAI,IAAI,EACjBC,EAASD,EAAI,EAAI,EACjBE,EAAQF,EAAI,EAAK,EACjBG,EAAQH,EAAI,EAAK,EAEjBI,EAAYnB,EAAS,IAAM,WAAWN,EAAM,KAAK,IAAIkB,CAAG,EAAE,EAC1DQ,EAAWpB,EAAS,IAAM,UAAUN,EAAM,KAAK,IAAIkB,CAAG,EAAE,EACxDS,EAAgBrB,EAAS,IAAM,CAC/B,GAAAkB,EAAM,OAASxB,EAAM,MACvB,OAAOA,EAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAGxC,MAAM4B,EAAY5B,EAAM,OAAS,GAAGA,EAAM,MAAM,QAAQ,KAAM,EAAE,EAAE,MAAM,GAAG,EAAE,MAAO,CAAA,QAEpF,OAAO4B,GAAaA,EAAU,MAAM,GAAG,EAAE,KAAK,GAAG,CAAA,CAClD,EACKC,EAAevB,EAAS,IACxBkB,EAAM,OAASxB,EAAM,MAChB,GAAGA,EAAM,MAAM,QAAQ,KAAM,EAAE,EAAE,MAAM,GAAG,EAAE,MAAA,CAAO,QAGrDA,EAAM,OAASA,EAAM,MAAM,QAAQ,KAAM,EAAE,CACnD,EAED8B,EAAMN,EAAQO,GAAST,EAAO,MAAQ,CAAAS,CAAmB,EAEzDC,GAAU,IAAM,OACd,GAAIlB,EAAM,KAAM,CACR,MAAAmB,GAAUC,EAAAd,EAAO,QAAP,YAAAc,EAAc,iBAAiB,UAAUpB,EAAM,KAAK,OAAO,CAAC,CAAC,MAEzEmB,GAAWA,EAAQ,QACbA,EAAA,QAASE,GAAW,CACpBX,EAAA,MAAQW,EAAO,aAAa,UAAU,CAAA,CAC7C,CACH,CACF,CACD,EAED,SAASC,GAAmB,CACtBb,EAAM,QACRP,EAAgBS,CAAS,EACzBF,EAAM,MAAQ,GAChB,CAGF,SAASc,GAAoB,OAC3B,KAAM,CAAE,IAAKC,CAAA,EAAY,SAAS,KAAK,sBAAsB,EACvD,CAAE,IAAAC,CAAQ,GAAAL,EAAAd,EAAO,QAAP,YAAAc,EAAc,wBACxBM,EAAS,KAAK,IAAIF,CAAO,EAAI,KAAK,IAAIC,CAAG,EAExC,OAAA,SAAS,EAAGC,CAAM,EACnBhB,EAAA,MAAQ,CAACA,EAAM,KAAA,CAGvB,SAASiB,EAAUC,EAAkB,CACnC9B,EAAK,cAAe8B,CAAI,CAAA,CAG1B,SAASC,EAAaD,EAAoB,CACxC,OAAIA,EAAK,MACAA,EAAK,MAGPA,EAAK,MAAQ,aAAe,YAAA,izFCpKrC,MAAM1C,EAAQC,EAMR,CAAE,YAAAE,CAAY,EAAIC,EAAc,EAEtC,SAASwC,EAAclD,EAA0C,CAC/D,MAAI,CAACM,EAAM,YAAcN,EAAK,OAASA,EAAK,MAAM,cACzCA,EAAK,MAAM,cAAc,KAG9B,CAACM,EAAM,YAAcN,EAAK,cACrBA,EAAK,cAAc,KAGrBM,EAAM,UAAA,i7CCuCf,MAAMA,EAAQC,EAYR,CAAE,eAAAC,CAAe,EAAIV,EAAqB,EAC1C,CAAE,YAAAW,CAAY,EAAIC,EAAc,EAEhCyC,EAAiBvC,EAAS,IACvBN,EAAM,SAAWA,EAAM,SAAS,QAAUA,EAAM,UACxD,EACK8C,EAAgBxC,EAAS,IACtBN,EAAM,SAAWA,EAAM,SAAS,OAASA,EAAM,UACvD,EAED,SAAS4C,EAAclD,EAA+B,CACpD,MAAI,CAACM,EAAM,YAAcN,EAAK,OAASA,EAAK,MAAM,cACzCA,EAAK,MAAM,cAAc,KAG9B,CAACM,EAAM,YAAcN,EAAK,cACrBA,EAAK,cAAc,KAGxBM,EAAM,WACDA,EAAM,WAGR,EAAA,CAGT,SAAS+C,EAAQrD,EAAgC,CAC/C,OAAOA,EAAK,aAAe,UAAA,8hFCrIhBsD,GAAqBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmDrBC,GAAmBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+CnBE,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjBC,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASZC,GAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASVC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}