{"version":3,"file":"TagMain.7427e51b.js","sources":["app/assets/vite/factories/mediaQuery.ts","app/assets/vite/stores/Tag.ts","app/assets/vite/modules/home/views/TaggedCreators.ts","app/assets/vite/modules/home/views/TaggedUpcomingEvents.ts","app/assets/vite/modules/home/views/TaggedRecentEvents.ts","app/assets/vite/modules/website/views/VideoList.ts","app/assets/vite/modules/home/views/TagMain.ts"],"sourcesContent":["import { Descriptor } from \"hybrids\";\n\nexport default function mediaQuery(\n selector: string\n): Descriptor {\n const mq = window.matchMedia(selector);\n\n return {\n get: () => mq.matches,\n connect(host, key, invalidate) {\n invalidate();\n\n if (mq.addEventListener) {\n mq.addEventListener(\"change\", invalidate as () => {});\n return () => {\n mq.removeEventListener(\"change\", invalidate as () => {});\n };\n }\n\n mq.addListener(invalidate as () => {});\n return () => mq.removeListener(invalidate as () => {});\n },\n };\n}\n","import { store, Model } from \"hybrids\";\nimport { get } from \"~/utils/api\";\n\ninterface Tag {\n id: string;\n name: string;\n description: string;\n featured: boolean;\n}\n\nconst Tag: Model = {\n id: true,\n name: \"\",\n description: \"\",\n featured: false,\n [store.connect]: {\n get: (id) => get(\"/tags/:id\", id),\n list(query) {\n return get(\"/tags\", query);\n },\n offline: 1000 * 60 * 60 * 24 * 7, // 7 days\n },\n};\n\nexport default Tag;\n","import { define, html, store, router } from \"hybrids\";\nimport layout from \"~/factories/layout\";\nimport Tag from \"~/stores/Tag\";\nimport TagMain from \"./TagMain\";\nimport User from \"~/stores/User\";\n\ninterface VHomeTaggedCreatorsView {\n artists: User[];\n tagObject: Tag;\n}\n\nexport default define({\n [router.connect]: { url: \"/tags/:tagObject/creators\" },\n tag: \"v-home-tagged-creators-view\",\n tagObject: store(Tag),\n artists: store([User], { id: ({ tagObject }) => ({ filter: \"artists\", tag: tagObject.id }) }),\n render: layout(\"flex\"),\n content: ({ tagObject, artists }) => html`\n \n \n ${tagObject.featured && \"Explore\"}\n ${tagObject.name}\n \n ${tagObject.description &&\n html`\n ${tagObject.description}\n `}\n \n Creators\n \n \n \n `,\n});\n","import { define, html, store, router } from \"hybrids\";\nimport Course, { PER_PAGE } from \"~/stores/Course\";\nimport Tag from \"~/stores/Tag\";\nimport TagMain from \"./TagMain\";\n\ninterface VHomeTaggedUpcomingEventsView {\n page: number;\n courses: Course[];\n tagObject: Tag;\n}\n\nexport default define({\n [router.connect]: { url: \"/tags/:tagObject/upcoming\" },\n tag: \"v-home-tagged-upcoming-events-view\",\n page: 1,\n tagObject: store(Tag),\n courses: store([Course], { id: ({ tagObject, page }) => ({ page: page, tag: tagObject.id, past: false }) }),\n content: ({ tagObject, courses, page }) => html`\n \n \n ${tagObject.featured && \"Explore\"}\n ${tagObject.name}\n \n ${tagObject.description &&\n html`\n ${tagObject.description}\n `}\n \n Upcoming events\n \n \n ${store.ready(courses) &&\n courses.map((course) =>\n html``.key(course.id)\n )}\n \n \n \n `,\n});\n","import { define, html, store, router } from \"hybrids\";\nimport Course, { PER_PAGE } from \"~/stores/Course\";\nimport Tag from \"~/stores/Tag\";\nimport TagMain from \"./TagMain\";\n\ninterface VHomeTaggedRecentEventsView {\n page: number;\n courses: Course[];\n tagObject: Tag;\n}\n\nexport default define({\n [router.connect]: { url: \"/tags/:tagObject/recent\" },\n tag: \"v-home-tagged-recent-events-view\",\n page: 1,\n tagObject: store(Tag),\n courses: store([Course], { id: ({ tagObject, page }) => ({ page: page, tag: tagObject.id, past: true }) }),\n content: ({ tagObject, courses, page }) => html`\n \n \n ${tagObject.featured && \"Explore\"}\n ${tagObject.name}\n \n ${tagObject.description &&\n html`\n ${tagObject.description}\n `}\n \n Recent events\n \n \n ${store.ready(courses) &&\n courses.map((course) =>\n html``.key(course.id)\n )}\n \n \n \n `,\n});\n","import { define, html, router, store } from \"hybrids\";\n\nimport layout from \"~/factories/layout\";\nimport ArtistVideo from \"~/stores/ArtistVideo\";\nimport { PER_PAGE } from \"~/stores/Course\";\nimport Tag from \"~/stores/Tag\";\n\n// A utility function for formatting the list title\nconst capitalize = (word: string) => {\n return word[0].toUpperCase() + word.slice(1).toLowerCase();\n}\n\n// Represents the available lists,\n// so users can know what are the available lists.\nexport enum List {\n FAVORITES = \"favorites\",\n ONDEMAND = \"ondemand\",\n TAGGED = \"tagged\",\n}\n\n// Maps each list type, to the required parameter,\n// those parameters may be required by the server\n// or the ArtistVideo model, to make the request.\nconst listQueryParams = new Map any | any)>([\n [List.FAVORITES, (listId) => ({\n liked: true,\n user_id: listId,\n })],\n [List.ONDEMAND, {}],\n [List.TAGGED, (listId) => ({\n tag: listId,\n })]\n]);\n\nconst emptyListMessage = new Map([\n [List.FAVORITES, \"You don't have any favorite videos yet. Click the heart on videos to add them to your favorites.\"],\n [List.TAGGED, \"\"],\n [List.ONDEMAND, \"\"],\n]);\n\n// Simplifys the params retrieval from the listQueryParams map\nconst getListQueryParams = (listName, listId = \"\") => {\n if (listId) {\n return listQueryParams.get(listName)(listId);\n }\n return listQueryParams.get(listName);\n}\n\ninterface VVideoListMainView {\n page: number;\n listName: List;\n listId: string;\n tagObject: Tag;\n videosList: ArtistVideo[];\n}\n\nexport default define({\n [router.connect]: {\n url: \"/videos/:listName?listId\",\n },\n tag: \"v-video-list-view\",\n page: 1,\n listName: \"\",\n listId: \"\",\n tagObject: store(Tag, { id: \"listId\" }),\n videosList: store([ArtistVideo], {\n id: ({ page, listName, listId }) => ({\n page: page,\n ...(getListQueryParams(listName, listId))\n })\n }),\n title: ({ listName, tagObject }) => {\n if (store.ready(tagObject)) {\n if (tagObject.featured) return `Explore ${tagObject.name}`;\n return tagObject.name;\n } else if (listName == List.ONDEMAND) {\n return \"Videos\";\n }\n return capitalize(listName);\n },\n render: layout(\"block\"),\n content: ({ page, listName, listId, tagObject, title, videosList }) => html`\n \n \n ${title}\n \n ${store.ready(tagObject) && tagObject.description && html`\n \n ${tagObject.description}\n `}\n ${store.ready(tagObject) && html`\n \n Featured videos\n `}\n \n\n ${store.ready(videosList) && videosList.length > 0 && html`\n \n ${videosList.map((video) => html`\n `.key(video.id))}\n `}\n\n ${store.ready(videosList) && videosList.length === 0 && html`\n \n `}\n\n \n `\n});\n","import { define, html, router, store } from \"hybrids\";\n\nimport layout from \"~/factories/layout\";\nimport ArtistVideo from \"~/stores/ArtistVideo\";\nimport Course from \"~/stores/Course\";\nimport Tag from \"~/stores/Tag\";\nimport User from \"~/stores/User\";\n\nimport TaggedCreators from \"./TaggedCreators\";\nimport TaggedUpcomingEvents from \"./TaggedUpcomingEvents\";\nimport TaggedRecentEvents from \"./TaggedRecentEvents\";\nimport VideoList, { List } from \"~/modules/website/views/VideoList\";\n\ninterface VHomeTagMainView {\n tagObject: Tag;\n upcomingEvents: Course[];\n recentEvents: Course[];\n taggedVideos: ArtistVideo[];\n taggedCreators: User[];\n featuredTags: Tag[];\n}\n\nexport default define({\n [router.connect]: {\n url: \"/tags/:tagObject\",\n stack: [VideoList]\n },\n tagObject: store(Tag),\n tag: \"v-home-tag-main-view\",\n upcomingEvents: store([Course], { id: ({ tagObject }) => ({ page: 1, tag: tagObject.id, past: false }) }),\n recentEvents: store([Course], { id: ({ tagObject }) => ({ page: 1, tag: tagObject.id, past: true }) }),\n taggedVideos: store([ArtistVideo], { id: ({ tagObject }) => ({ page: 1, tag: tagObject.id }) }),\n taggedCreators: store([User], { id: ({ tagObject }) => ({ page: 1, filter: \"artists\", tag: tagObject.id }) }),\n featuredTags: store([Tag], { id: () => ({ featured: true }) }),\n render: layout(\"block\"),\n content: ({\n tagObject,\n upcomingEvents,\n recentEvents,\n taggedVideos,\n taggedCreators,\n featuredTags\n }) => html`\n ${store.ready(tagObject) &&\n html`\n \n \n ${tagObject.featured && \"Explore\"}\n ${tagObject.name}\n \n ${tagObject.description &&\n html`\n \n ${tagObject.description}\n `}\n \n ${store.ready(taggedVideos) &&\n !!taggedVideos.length &&\n html`\n \n \n Featured videos\n \n \n `}\n ${store.ready(upcomingEvents) &&\n !!upcomingEvents.length &&\n html`\n \n \n Upcoming events\n \n \n `}\n ${store.ready(recentEvents) &&\n !!recentEvents.length &&\n html`\n \n \n Recent events\n \n \n `}\n ${store.ready(taggedCreators) &&\n !!taggedCreators.length &&\n html`\n \n \n Creators\n \n \n ${taggedCreators.length > 12 &&\n html`\n \n \n `}\n \n `}\n `}\n ${!store.ready(tagObject) &&\n html`\n \n \n Oops! This tag doesn't exist. Try one of these!\n \n \n \n \n ${store.ready(featuredTags) && featuredTags.map(\n (featuredTag) => html`\n \n `\n )}\n \n \n `}\n `,\n});\n"],"names":["mediaQuery","selector","mq","window","matchMedia","get","matches","connect","host","key","invalidate","addEventListener","removeEventListener","addListener","removeListener","Tag","id","name","description","featured","store","list","query","offline","TaggedCreators","define","router","url","tag","tagObject","artists","User","filter","render","layout","content","html","TagMain","TaggedUpcomingEvents","page","courses","Course","past","pending","ready","map","course","length","PER_PAGE","TaggedRecentEvents","List","listQueryParams","Map","listId","liked","user_id","emptyListMessage","getListQueryParams","listName","VideoList","videosList","ArtistVideo","title","word","toUpperCase","slice","toLowerCase","video","stack","upcomingEvents","recentEvents","taggedVideos","taggedCreators","featuredTags","TAGGED","featuredTag"],"mappings":"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"}