{"version":3,"sources":["webpack://musicforyouth.cms/webpack/runtime/chunk loaded","webpack://musicforyouth.cms/./ClientApp/helpers/number-helpers.ts","webpack://musicforyouth.cms/./ClientApp/hooks/use-onchange-effect.ts","webpack://musicforyouth.cms/./ClientApp/index.ts","webpack://musicforyouth.cms/./ClientApp/react/video-listing/app.tsx","webpack://musicforyouth.cms/./ClientApp/react/video-listing/hooks/use-videos.ts","webpack://musicforyouth.cms/./ClientApp/react/video-listing/index.tsx","webpack://musicforyouth.cms/./ClientApp/react/video-listing/not-found/index.tsx","webpack://musicforyouth.cms/./ClientApp/react/video-listing/tag-filter/index.tsx","webpack://musicforyouth.cms/./ClientApp/react/video-listing/video-grid/index.tsx","webpack://musicforyouth.cms/webpack/bootstrap","webpack://musicforyouth.cms/webpack/runtime/define property getters","webpack://musicforyouth.cms/webpack/runtime/hasOwnProperty shorthand","webpack://musicforyouth.cms/webpack/runtime/make namespace object","webpack://musicforyouth.cms/webpack/runtime/jsonp chunk loading","webpack://musicforyouth.cms/webpack/startup"],"names":["deferred","NumberHelper","tryParseInt","value","defaultValue","parsedValue","Number","parseInt","isNaN","useOnChangeEffect","func","deps","firstRun","useRef","useEffect","current","tags","pageId","initialPageSize","pageSize","hidePageTitle","pageTitle","pageSubtitle","pageTitleText","selectedTag","setSelectedTag","useState","state","loadNextPage","useVideos","loading","videos","hasMore","useMemo","className","length","TagFilter","onTagSelected","tag","VideoGrid","NotFound","type","onClick","DEFAULT_STATE","totalCount","pageNumber","setState","getVideos","skip","take","replace","model","url","resp","fetch","json","loadVideos","mergeTagState","prevState","listings","document","querySelectorAll","listing","getAttribute","tagsString","split","filter","x","render","map","key","AnimatePresence","exitBeforeEnter","motion","div","initial","opacity","y","animate","exit","video","i","a","id","href","src","thumbnailImageUrl","alt","actName","actLocation","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","splice","d","definition","o","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","installedChunks","641","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"mappings":"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","file":"site.bundle.js","sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tresult = fn();\n\t\t}\n\t}\n\treturn result;\n};","export const NumberHelper = {\r\n tryParseInt: (value: any, defaultValue: number): number => {\r\n const parsedValue = Number.parseInt(value);\r\n return isNaN(parsedValue) ? defaultValue : parsedValue;\r\n }\r\n}","import {useEffect, useRef} from \"react\";\r\n\r\nexport const useOnChangeEffect = (func: () => void, deps: Array) => {\r\n \r\n const firstRun = useRef(true);\r\n \r\n useEffect(() => {\r\n if(firstRun.current) {\r\n firstRun.current = false;\r\n return;\r\n }\r\n \r\n func()\r\n }, [...deps]);\r\n \r\n}","import \"./react/video-listing\";\r\nimport \"./sass/site.scss\";\r\n\r\nif (module.hot) {\r\n __webpack_public_path__ = 'https://localhost:8010/';\r\n module.hot.accept();\r\n}","import React, {useMemo, useState} from \"react\";\r\nimport {TagFilter} from \"./tag-filter\";\r\nimport {useVideos} from \"./hooks/use-videos\";\r\nimport {VideoGrid} from \"./video-grid\";\r\nimport clsx from \"clsx\";\r\nimport {NotFound} from \"./not-found\";\r\n\r\ntype AppProps = {\r\n tags: string[],\r\n pageId: string | null,\r\n initialPageSize: number,\r\n pageSize: number,\r\n hidePageTitle: boolean,\r\n pageTitle: string | null,\r\n pageSubtitle: string | null,\r\n pageTitleText: string | null\r\n}\r\n\r\nconst App = ({ tags, pageId, initialPageSize, pageSize, hidePageTitle, pageTitle, pageSubtitle, pageTitleText }: AppProps) => {\r\n \r\n const [selectedTag, setSelectedTag] = useState(\"all\");\r\n const { \r\n state,\r\n loadNextPage\r\n } = useVideos(pageId, selectedTag, initialPageSize, pageSize);\r\n const {\r\n loading,\r\n videos,\r\n hasMore\r\n } = useMemo(() => state[selectedTag] ?? { loading: true, videos: [], hasMore: false }, [selectedTag, state]);\r\n \r\n const handleTagSelected = (tag: string) => {\r\n setSelectedTag(tag);\r\n }\r\n \r\n const loadMore = () => {\r\n if(!loading) {\r\n loadNextPage();\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {!hidePageTitle && (\r\n
\r\n
\r\n

{pageSubtitle}

\r\n

{pageTitle}

\r\n
\r\n

{pageTitleText}

\r\n
\r\n
\r\n
\r\n )}\r\n {tags.length > 0 && (\r\n \r\n )}\r\n \r\n {(!videos || videos.length < 1) && !loading && (\r\n \r\n )}\r\n {hasMore && (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default App;","import {useEffect, useMemo, useState} from \"react\";\r\nimport {useOnChangeEffect} from \"../../../hooks/use-onchange-effect\";\r\n\r\nexport type VideoModel = {\r\n id: string,\r\n title: string,\r\n description: string,\r\n actName: string,\r\n actLocation: string,\r\n thumbnailImageUrl: string,\r\n videoUrl: string,\r\n categories: string[],\r\n url: string\r\n}\r\n\r\nexport type ApiModel = {\r\n totalCount: number,\r\n pageNumber: number,\r\n pageSize: number,\r\n hasMore: boolean,\r\n videos: VideoModel[]\r\n}\r\n\r\nexport interface VideoState {\r\n totalCount: number,\r\n pageNumber: number,\r\n pageSize: number,\r\n loading: boolean,\r\n hasMore: boolean,\r\n videos: Array\r\n}\r\n\r\nexport interface UseVideosState {\r\n [key: string]: VideoState\r\n}\r\n\r\nexport interface UseVideosResponse {\r\n loadNextPage: () => void,\r\n state: UseVideosState\r\n}\r\n\r\nconst loadVideos = async (pageId: string | null, skip: number, take: number, tag: string) => {\r\n let url = `/umbraco/api/videos/search?pageId=${pageId}&skip=${skip}&take=${take}`;\r\n if(tag != ALL_KEY) {\r\n url += `&tag=${tag}`;\r\n }\r\n const resp = await fetch(url);\r\n return await resp.json() as ApiModel;\r\n};\r\n\r\nconst ALL_KEY = \"all\";\r\nconst DEFAULT_STATE: VideoState = {\r\n totalCount: 0,\r\n pageNumber: 0,\r\n pageSize: 0,\r\n loading: true,\r\n hasMore: true,\r\n videos: []\r\n}\r\n\r\nexport const useVideos = (pageId: string | null, selectedTag: string, initialPageSize: number, pageSize: number): UseVideosResponse => {\r\n \r\n const [state, setState] = useState({\r\n [ALL_KEY]: { ...DEFAULT_STATE }\r\n });\r\n \r\n /**\r\n * Get Videos and set state\r\n */\r\n const getVideos = async (pageId: string | null, skip: number, take: number, tag: string, replace: boolean = false): Promise => {\r\n const model = await loadVideos(pageId, skip, take, tag);\r\n mergeTagState(tag, {\r\n hasMore: model.hasMore,\r\n loading: false,\r\n pageNumber: model.pageNumber,\r\n pageSize: model.pageSize,\r\n totalCount: model.totalCount,\r\n videos: model.videos\r\n });\r\n }\r\n\r\n /**\r\n * Merge tag state\r\n */\r\n const mergeTagState = (tag: string, state: Partial) : void => {\r\n setState(prevState => ({\r\n ...prevState,\r\n [tag]: {\r\n ...prevState[tag],\r\n ...state,\r\n videos: [\r\n ...prevState[tag]?.videos ?? [],\r\n ...state.videos ?? []\r\n ]\r\n }\r\n }));\r\n }\r\n \r\n /**\r\n * First load\r\n */\r\n useEffect(() => {\r\n getVideos(pageId, 0, initialPageSize, selectedTag);\r\n }, []);\r\n\r\n /**\r\n * When tag changes\r\n */\r\n useOnChangeEffect(() => {\r\n const selected = state[selectedTag];\r\n \r\n // If already initialised, show cached results\r\n if(!!selected) return;\r\n \r\n // Init default state\r\n mergeTagState(selectedTag, DEFAULT_STATE);\r\n \r\n // Load videos\r\n getVideos(pageId, 0, initialPageSize, selectedTag, true);\r\n }, [selectedTag]);\r\n\r\n /**\r\n * Load next page of results\r\n */\r\n const loadNextPage = () => {\r\n mergeTagState(selectedTag, { loading: true })\r\n getVideos(pageId, state[selectedTag].pageSize * state[selectedTag].pageNumber, pageSize, selectedTag)\r\n }\r\n \r\n return {\r\n state,\r\n loadNextPage\r\n };\r\n}","import ReactDOM from \"react-dom\";\r\nimport React from \"react\";\r\nimport App from \"./app\";\r\nimport {NumberHelper} from \"../../helpers/number-helpers\";\r\n\r\nconst listings = document.querySelectorAll(\".video-listing\");\r\n\r\nfor(const listing of listings) {\r\n\r\n const pageId = listing.getAttribute(\"data-page-id\");\r\n const tagsString = listing.getAttribute(\"data-tags\");\r\n const tags = tagsString == null ? [] : tagsString.split(\",\").filter(x => x);\r\n const initialPageSize = NumberHelper.tryParseInt(listing.getAttribute(\"data-initial-page-size\"), 8);\r\n const pageSize = NumberHelper.tryParseInt(listing.getAttribute(\"data-page-size\"), 4);\r\n const hidePageTitle = listing.getAttribute(\"data-hide-title\") === \"True\";\r\n const pageTitle = listing.getAttribute(\"data-page-title\");\r\n const pageSubtitle = listing.getAttribute(\"data-page-subtitle\");\r\n const pageTitleText = listing.getAttribute(\"data-page-title-text\");\r\n \r\n ReactDOM.render(\r\n , \r\n listing);\r\n}","import React from \"react\";\r\n\r\nexport const NotFound: React.FC<{}> = () => {\r\n return (\r\n

No videos found

\r\n )\r\n}","import React from \"react\";\r\nimport clsx from \"clsx\";\r\n\r\ntype TagFilterProps = {\r\n tags: string[],\r\n onTagSelected: (tag: string) => void,\r\n selectedTag: string\r\n}\r\n\r\nexport const TagFilter = ({ tags, onTagSelected, selectedTag }: TagFilterProps) => {\r\n return (\r\n
\r\n
\r\n
onTagSelected(\"all\")}>All
\r\n {tags.map(tag => (\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n )\r\n}","import React from \"react\";\r\nimport {VideoModel} from \"../hooks/use-videos\";\r\nimport {motion, AnimatePresence} from \"framer-motion\";\r\n\r\nexport type VideoGridProps = {\r\n videos: VideoModel[],\r\n selectedTag: string\r\n}\r\nexport const VideoGrid = ({ videos, selectedTag }:VideoGridProps) => {\r\n return (\r\n \r\n \r\n {videos.map((video, i) => (\r\n \r\n
\r\n \"thumb\"\r\n
\r\n

{video.actName}

\r\n
\r\n

{video.actLocation}

\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n );\r\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t641: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmusicforyouth_cms\"] = self[\"webpackChunkmusicforyouth_cms\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(93)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"sourceRoot":""}