{"version":3,"file":"browse.ec6a7f2d.js","sources":["../../../resources/js/components/FilterMenu.vue","../../../resources/js/components/BrowseMenuItem.vue","../../../resources/img/spinner.svg","../../../resources/img/preview_not_available.jpg","../../../resources/img/preview_not_available_flashcards.jpg","../../../resources/img/preview_not_available_bingo.jpg","../../../resources/js/mixins/Utils.js","../../../resources/js/components/DocumentPreviewer.vue","../../../resources/js/components/ActivityChooserModal.vue","../../../resources/js/components/Dropdown.vue","../../../resources/js/store/modules/browse.js","../../../resources/js/store/browse.js","../../../resources/js/pages/document/browse.js"],"sourcesContent":["\n\n\n\n","\n\n\n\n","export default \"__VITE_ASSET__09709ac6__\"","export default \"__VITE_ASSET__387b3b39__\"","export default \"__VITE_ASSET__f7a44461__\"","export default \"__VITE_ASSET__36e23290__\"","export default {\n methods: {\n formatSubjectName(value) {\n if (!value)\n return ''\n \n return value.split(\"/\").map(item => {\n let name = item.trim()\n switch (name.toLowerCase()) {\n case 'language arts':\n name = 'LA'\n break\n default:\n break\n }\n\n return name\n }).join(\"/\")\n },\n getOrdinal(n) {\n let s = [\"th\", \"st\", \"nd\", \"rd\"], v = n % 100\n return (s[(v - 20) % 10] || s[v] || s[0])\n },\n formatNumber(value) {\n if (value === undefined || value === null) return ''\n return value.toLocaleString()\n }\n },\n}\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n","import apiClient from '../../apis/apiClient'\nimport { dangerToast, successToast } from '../../helpers/toasts'\nimport EventApi from '../../apis/EventApi'\n\nexport const namespaced = true\nexport const state = {\n vue: null,\n grade_filters: [],\n activity_filters: [],\n subject_filters: [],\n rating_filter: 3,\n created_by_filters: [],\n is_loading: false,\n sort_by_options: [\n // {name: 'Most Relevant', value: 'relevance'},\n {name: 'Highest Rated', value: 'rating'},\n {name: 'Newest', value: 'latest'},\n // {name: 'Grade Level (Low > High)', value: 'grade-level-asc'},\n // {name: 'Grade Level (High > Low)', value: 'grade-level-desc'},\n ],\n created_by: [\n { name: 'Teachers', value: 'teacher' },\n { name: 'Homeschoolers', value: 'homeschoolers' },\n { name: 'Parents', value: 'parent' },\n { name: 'Others', value: 'other' }\n ],\n grades: [\n {\n name: 'Pre-K / Kindergaten',\n value: 'Pre-K K',\n },\n {\n name: '1st Grade',\n value: '1',\n },\n {\n name: '2nd Grade',\n value: '2',\n },\n {\n name: '3rd Grade',\n value: '3',\n },\n {\n name: '4th Grade',\n value: '4',\n },\n {\n name: '5th Grade',\n value: '5',\n },\n {\n name: '6th Grade',\n value: '6',\n },\n {\n name: '7th Grade',\n value: '7',\n },\n {\n name: '8th Grade',\n value: '8',\n },\n {\n name: '9th Grade',\n value: '9',\n },\n {\n name: '10th Grade',\n value: '10',\n },\n {\n name: '11th Grade',\n value: '11',\n },\n {\n name: '12th Grade',\n value: '12',\n },\n {\n name: 'College',\n value: 'College',\n },\n {\n name: 'Seniors',\n value: 'Adult 65+',\n },\n {\n name: 'Other',\n value: 'Other',\n },\n ],\n sort_by: 'rating',\n search_term: '',\n recent_searches: [],\n active_doc: null,\n unrated: true,\n}\n\nexport const mutations = {\n SET_VALUE(state, values) {\n Object.keys(values).forEach(value => {\n state[value] = values[value]\n })\n },\n}\n\nexport const actions = {\n setValue({ commit }, value) {\n commit('SET_VALUE', value)\n },\n search({commit, dispatch, getters, rootGetters}, searchTerm = null) {\n commit('SET_VALUE', {is_loading: true})\n let payload = { \n params : {\n grades: getters.gradeFilters,\n types: getters.activityFilters,\n subjects: getters.subjectFilters,\n rating: getters.ratingFilter ?? '',\n created_by: getters.createdByFilters,\n sort: getters.sortBy,\n query: searchTerm ?? getters.searchTerm,\n unrated: getters.unrated ?? true\n }\n }\n\n if (!rootGetters['user/isLoggedIn'] && searchTerm) {\n dispatch('updateLocalRecentSearches', {storage: localStorage, searchTerm, payload})\n dispatch('updateLocalRecentSearches', {storage: sessionStorage, searchTerm, payload})\n } else if (rootGetters['user/isLoggedIn']) {\n sessionStorage.setItem('last_search', JSON.stringify(payload.params))\n }\n\n return apiClient.get('/search', payload)\n },\n loadMoreItems({commit, dispatch, getters}, url) {\n // commit('SET_VALUE', {is_loading: true})\n let payload = { \n params : {\n grades: getters.gradeFilters,\n types: getters.activityFilters,\n subjects: getters.subjectFilters,\n rating: getters.ratingFilter ?? '',\n created_by: getters.createdByFilters,\n sort: getters.sortBy,\n query: getters.searchTerm,\n unrated: getters.unrated ?? true\n }\n }\n return apiClient.get(url, payload)\n },\n getRecentSearches({commit, dispatch, state, rootGetters}) {\n if (rootGetters['user/isLoggedIn']) {\n return apiClient.get('/search/recent').then(response => {\n commit('SET_VALUE', response.data)\n }).catch(error => {\n state.vue?.$bvToast.toast('There was an error retrieving recent searches', dangerToast)\n })\n } else {\n let arr = JSON.parse(localStorage.getItem('recent_searches')) ?? []\n if (arr.length) {\n arr = arr.map((item, index) => {\n return {\n id: index,\n payload: item\n }\n })\n commit('SET_VALUE', { recent_searches: arr })\n }\n }\n },\n updateLocalRecentSearches({state}, {storage, searchTerm, payload}) {\n let arr = JSON.parse(storage.getItem('recent_searches')) ?? []\n let index = arr.findIndex(item => item.query == searchTerm)\n if (index >= 0) {\n let params = {...arr[index], ...payload.params}\n arr.splice(index, 1)\n arr.unshift(params)\n } else {\n arr.unshift(payload.params)\n }\n storage.setItem('recent_searches', JSON.stringify(arr))\n }\n}\n\nexport const getters = {\n gradeFilters: state => state.grade_filters,\n subjectFilters: state => state.subject_filters,\n activityFilters: state => state.activity_filters,\n ratingFilter: state => state.rating_filter,\n createdByFilters: state => state.created_by_filters,\n sortByOptions: state => state.sort_by_options,\n createdBy: state => state.created_by,\n grades: state => state.grades,\n sortBy: state => state.sort_by,\n searchTerm: state => state.search_term,\n recentSearches: state => state.recent_searches,\n isLoading: state => state.is_loading,\n unrated: state => state.unrated,\n getFilters: (state, getters) => {\n return {\n query: getters.searchTerm,\n sort: getters.sortBy,\n grades: getters.gradeFilters,\n types: getters.activityFilters,\n subjects: getters.subjectFilters,\n rating: getters.ratingFilter ?? '',\n created_by: getters.createdByFilters,\n unrated: getters.unrated,\n }\n },\n activeDoc: state => state.active_doc,\n}","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nimport * as abtests from './modules/abtests.js'\nimport * as user from './modules/user.js'\nimport * as cards from './modules/cards.js'\nimport * as subscription from './modules/subscription.js'\nimport * as browse from './modules/browse.js'\nimport DocumentModule from './modules/document/document.js'\n\nVue.use(Vuex)\n\nconst document = new DocumentModule().getModules()\n\nexport default new Vuex.Store({\n modules: {\n abtests,\n user,\n cards,\n subscription,\n browse,\n document\n }\n})","// npm libraries\nimport Vue from 'vue'\nimport { mapGetters, mapState } from 'vuex'\n\nimport { Modals } from '../../repos/Modals'\nimport { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue'\n\nimport MainMenu from '../../widgets/main-menu.vue'\nimport modal from '../../widgets/modal.vue'\nimport Login from '../../components/Login.vue'\nimport FilterMenu from '../../components/FilterMenu.vue'\nimport BrowseMenuItem from '../../components/BrowseMenuItem.vue'\nimport DocViewer from '../../components/DocumentPreviewer.vue'\nimport ActivityChooser from '../../components/ActivityChooserModal.vue'\nimport Dropdown from '../../components/Dropdown.vue'\n\nimport store from '../../store/browse'\nimport { bingo_types, flashcard_types, worksheet_types } from '../../objects/Document'\n\nimport EventApi from '../../apis/EventApi'\n\n// Maintenance Alert\nimport MaintenanceAlert from '../../components/MaintenanceAlert.vue'\nimport StatsigHelper from '../../mixins/StatsigHelper'\nimport { dangerToast } from '../../helpers/toasts'\nimport loader from '../../widgets/loader.vue'\nimport Utils from '../../mixins/Utils'\nimport * as Sentry from '@sentry/vue'\nimport { BrowserTracing } from '@sentry/tracing'\nimport TopnavUtil from '../../mixins/TopnavUtil'\nimport PushListener from '../../mixins/PushListener'\nimport LogInWatcher from '../../mixins/LogInWatcher'\nimport Checkout from '../../components/Checkout.vue'\nimport OneClickSuccessModal from '../../components/OneClickSuccessModal.vue'\nimport Paywall from '../../components/Paywall.vue'\n\n//bootstrap components\nVue.use(BootstrapVue)\nVue.use(BootstrapVueIcons)\n\nVue.component('main-menu', MainMenu)\nVue.component('mwm-modal', modal)\nVue.component('login', Login)\nVue.component('filter-menu', FilterMenu)\nVue.component('browse-menu-item', BrowseMenuItem)\nVue.component('doc-viewer', DocViewer)\nVue.component('activity-chooser', ActivityChooser)\nVue.component('dropdown', Dropdown)\nVue.component('maintenance-alert', MaintenanceAlert)\nVue.component('loader', loader)\nVue.component('one-click-success', OneClickSuccessModal)\nVue.component('paywall', Paywall)\n\nVue.prototype.$eventApi = EventApi\nVue.prototype.$modals = Modals\nVue.prototype.$window = window\nVue.prototype.$app_url = window.app_url\n\nSentry.init({\n Vue,\n dsn: window.sentryDSN,\n integrations: [\n new BrowserTracing({\n tracingOrigins: [window.sentryTracingOrigin, /^\\//],\n }),\n new Sentry.Replay()\n\n ],\n logErrors: true,\n tracesSampleRate: window.sentryTraceSampleRate,\n replaysOnErrorSampleRate: 1.0,\n\n});\n\nwindow.app = new Vue({\n store,\n el: '#app',\n mixins: [StatsigHelper, Utils, TopnavUtil, PushListener, LogInWatcher],\n computed: {\n ...mapGetters({\n isLoggedIn: 'user/isLoggedIn',\n ratingFilter: 'browse/ratingFilter',\n createdByFilters: 'browse/createdByFilters',\n gradeFilters: 'browse/gradeFilters',\n subjectFilters: 'browse/subjectFilters',\n activityFilters: 'browse/activityFilters',\n createdBy: 'browse/createdBy',\n sortByOptions: 'browse/sortByOptions',\n gradesList: 'browse/grades',\n sortBy: 'browse/sortBy',\n searchTerm: 'browse/searchTerm',\n recentSearches: 'browse/recentSearches',\n loading: 'browse/isLoading',\n filters: 'browse/getFilters',\n activeDoc: 'browse/activeDoc',\n getUnrated: 'browse/unrated',\n hasPlans: 'subscription/hasPlans',\n }),\n ...mapState(['user']),\n documentTypes() {\n let types = {}\n const allDocTypes = [\n ...worksheet_types,\n ...bingo_types,\n ...flashcard_types,\n ]\n allDocTypes.forEach(type => {\n types[type.key] = type.name\n })\n return types\n },\n hasFilters() {\n return (\n this.created_by_filters.length +\n this.grade_filters.length +\n this.activity_filters.length +\n this.subject_filters.length +\n this.rating > 0\n )\n },\n subjectsList() {\n return Object.keys(this.subjects).map(sub => {\n return { name: this.formatSubjectName(this.subjects[sub].name), value: this.subjects[sub].name }\n })\n },\n typesList() {\n return Object.keys(this.documentTypes).map(type => {\n return { name: this.documentTypes[type], value: type }\n })\n },\n rating: {\n set(value) {\n this.$store.dispatch('browse/setValue', { 'rating_filter': value })\n },\n get() {\n return this.ratingFilter\n }\n },\n created_by_filters: {\n set(value) {\n this.$store.dispatch('browse/setValue', { 'created_by_filters': value })\n },\n get() {\n return this.createdByFilters\n }\n },\n sort_by: {\n set(value) {\n this.$store.dispatch('browse/setValue', { 'sort_by': value })\n },\n get() {\n return this.sortBy\n }\n },\n sortTitle() {\n let title = 'Recent'\n switch(this.sortBy) {\n case 'rating':\n title = 'Popular'\n break\n case 'relevant':\n title = 'Most Relevant'\n break\n case 'latest':\n title = 'Newest'\n break\n default:\n title = 'Community'\n }\n\n return title\n },\n search_term: {\n set(value) {\n this.$store.dispatch('browse/setValue', { 'search_term': value })\n },\n get() {\n return this.searchTerm\n }\n },\n grade_filters: {\n get() {\n return this.gradeFilters\n },\n set(value) {\n this.$store.dispatch('browse/setValue', { 'grade_filters': value })\n }\n },\n subject_filters: {\n get() {\n return this.subjectFilters\n },\n set(value) {\n this.$store.dispatch('browse/setValue', { 'subject_filters': value })\n }\n },\n activity_filters: {\n get() {\n return this.activityFilters\n },\n set(value) {\n this.$store.dispatch('browse/setValue', { 'activity_filters': value })\n }\n },\n category_url() {\n return this.category ? `${window.location.origin}/browse/${this.category.slug}?${new URLSearchParams(this.filters)}` : ''\n },\n sorting_by() {\n let sort_option = this.sortByOptions.find(item => {\n return item.value == this.sort_by\n })\n return sort_option?.name ?? ''\n },\n canClear() {\n return this.search_term || this.hasFilters\n },\n active_doc: {\n get() {\n return this.activeDoc\n },\n set(value) {\n this.$store.dispatch('browse/setValue', { 'active_doc': value })\n }\n },\n hasActiveDoc() {\n return this.active_doc !== null && this.active_doc !== undefined\n },\n unrated: {\n get() {\n return this.getUnrated\n },\n set(value) {\n this.$store.dispatch('browse/setValue', { 'unrated': value })\n }\n },\n brand() {\n return this.subdomain_brand_map[window.location.host.split('.')[0]] ?? 'worksheet'\n }\n },\n components: {\n Checkout,\n },\n data: {\n documents: [],\n list: [],\n subjects: window.subjects,\n themes: window.themes,\n previewDoc: 0,\n query: '',\n searching: false,\n category: null,\n processing: false,\n copyUrlTooltip: 'Copy page URL',\n observer: null,\n stickyTrigger: 85,\n hasSearched: false,\n meilisearchMaxHits: null,\n subdomain_brand_map: null\n },\n beforeCreate() {\n this.$store.dispatch('user/initialize')\n this.$store.dispatch('abtests/initialize', { completed: () => {\n this.logNavigation('browse documents')\n }})\n },\n created() {\n this.$store.dispatch('browse/getRecentSearches')\n this.category = window.category\n this.documents = window.documents\n this.list = this.documents.data.hits\n this.meilisearchMaxHits = window.meilisearchMaxHits\n this.subdomain_brand_map = window.subdomain_brand_map\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.loadMoreDocuments()\n }\n })\n }, {\n rootMargin: '0px 0px 250px 0px'\n })\n },\n mounted() {\n if (this.$refs?.landmark) {\n this.observer.observe(this.$refs.landmark)\n }\n\n this.$root.$on('enter::pressed', bvEvent => {\n this.search()\n }, false)\n\n this.loadLastSearch()\n\n window.addEventListener(\"popstate\", this.reloadFromHistory, false)\n\n this.monitorScrolling()\n },\n destroy() {\n window.removeEventListener(\"popstate\", this.reloadFromHistory)\n },\n methods: {\n getDocumentTypes(type) {\n for (let i = 0; i < worksheet_types.length; i++) {\n if (worksheet_types[i].key == type) {\n return worksheet_types[i].name\n }\n }\n },\n applyFilters() {\n window.history.pushState(this.filters, \"\", `${window.app_url}/browse/${this.category ? this.category.slug : ''}?${new URLSearchParams(this.filters)}`)\n },\n floatStars(ev) {\n let parent = ev.target.parentElement\n let children = parent.children\n let showBorder = false\n for (let i = 0; i < children.length; i++) {\n if (!showBorder) {\n children[i].classList.add('rating-hover-solid')\n } else {\n children[i].classList.add('rating-hover-border')\n }\n\n if (children[i] == ev.target) {\n showBorder = true\n }\n }\n },\n unfloatStars(ev) {\n let children = ev.target.parentElement.children\n for (let i = 0; i <= children.length; i++) {\n if (children[i]) {\n children[i].classList.remove('rating-hover-solid')\n children[i].classList.remove('rating-hover-border')\n }\n }\n },\n starTest(star) {\n let rating = parseFloat(this.rating ?? 0)\n\n if (star <= rating) {\n return 'star-fill'\n } else if (star == Math.ceil(rating)) {\n return 'star-half'\n } else {\n return 'star'\n }\n },\n setRatingFilter(value) {\n this.rating = value\n },\n showDocViewer(key) {\n this.$store.dispatch('browse/setValue', { 'active_doc': key }).then(() => this.$bvModal.show('doc-viewer-modal'))\n },\n updateSort(sort_by) {\n this.sort_by = sort_by\n this.get()\n },\n search() {\n if (this.searching) return\n this.searching = true\n this.hasSearched = true\n this.get({query: this.search_term})\n },\n handleResponse(response, saveBrowserHistory = true) {\n this.documents = response.data.documents\n this.category = response.data.category\n this.list = this.documents.data.hits\n\n if (saveBrowserHistory)\n this.applyFilters()\n },\n retrySearch(payload) {\n this.search_term = payload?.query ?? ''\n this.subject_filters = payload?.subjects ?? []\n this.activity_filters = payload?.types ?? []\n this.grade_filters = payload?.grades ?? []\n this.created_by_filters = payload?.created_by ?? []\n this.rating = payload?.rating ?? undefined\n this.sort_by = payload?.sort ?? 'rating'\n this.unrated = (payload.unrated === \"true\" || payload.unrated === true) ?? false\n },\n loadMoreDocuments() {\n if (!this.documents.next_page_url)\n return\n\n this.processing = true\n\n this.$store.dispatch('browse/loadMoreItems', this.documents.next_page_url)\n .then(response => {\n this.documents = response.data.documents\n this.list = [...this.list, ...this.documents.data.hits]\n this.processing = false\n })\n .catch(error => {\n this.$bvToast.toast('There was an error while loading more items', dangerToast)\n this.processing = false\n })\n },\n copyLink() {\n const storage = document.createElement('textarea')\n storage.value = this.category_url\n this.$refs.copydiv.appendChild(storage)\n storage.select()\n storage.setSelectionRange(0, 99999)\n document.execCommand('copy')\n this.$refs.copydiv.removeChild(storage)\n this.copyUrlTooltip = 'Copied!'\n setTimeout(() => {this.copyUrlTooltip = 'Copy page URL'}, 1200)\n },\n doSearch({ query }) {\n this.search_term = query\n this.get({query})\n },\n reloadFromHistory(event) {\n this.search_term = event?.state?.query ?? ''\n this.subject_filters = event?.state?.subjects ?? []\n this.activity_filters = event?.state?.types ?? []\n this.grade_filters = event?.state?.grades ?? []\n this.created_by_filters = event?.state?.created_by ?? []\n this.rating = event?.state?.rating ?? undefined\n this.sort_by = event?.state?.sort ?? 'rating'\n this.unrated = (event?.state?.unrated === \"true\" || event?.state?.unrated === true) ?? false\n\n this.get({query: this.search_term, keepHistory: false})\n },\n get(options = {query: null}) {\n this.$store.dispatch('browse/setValue', { 'is_loading': true })\n this.$store.dispatch('browse/search', options.query)\n .then(response => {\n this.handleResponse(response, options?.keepHistory ?? true)\n this.$store.dispatch('browse/setValue', { 'is_loading': false })\n this.searching = false\n })\n .catch(error => {\n this.$bvToast.toast('There was an error while retrieving activities', dangerToast)\n this.$store.dispatch('browse/setValue', { 'is_loading': false })\n })\n .finally(() => {\n this.$store.dispatch('browse/getRecentSearches')\n })\n },\n clearSearchParams() {\n this.search_term = ''\n this.grade_filters = []\n this.subject_filters = []\n this.activity_filters = []\n this.created_by_filters = []\n this.rating = 0\n },\n monitorScrolling() {\n let sidebar = document.getElementsByClassName('side-menu')[0]\n let sidebar_content = document.getElementsByClassName('content-wrapper')[0]\n let searchbar = document.getElementsByClassName('search-container')[0]\n let sidebar_position = sidebar_content.style.position\n\n window.onscroll = () => {\n let contentWidth = sidebar.getBoundingClientRect().width\n let scrollTop = window.scrollY\n let viewportHeight = window.innerHeight\n let sidebarTop = sidebar.getBoundingClientRect().top + window.pageYOffset\n let contentHeight = sidebar_content.getBoundingClientRect().height\n\n if (scrollTop > 5) {\n searchbar.style.boxShadow = \"0px 5px 2px -2px rgba(0,0,0,0.5)\"\n } else {\n searchbar.style.boxShadow = \"\"\n }\n\n if(scrollTop >= contentHeight - viewportHeight + sidebarTop + this.stickyTrigger) {\n sidebar_content.style.transform = `translateY(-${(contentHeight - viewportHeight + sidebarTop + this.stickyTrigger)}px)`\n sidebar_content.style.position = \"fixed\"\n sidebar_content.style.width = `${contentWidth}px`\n } else {\n sidebar_content.style.transform = `translateY(0px)`\n sidebar_content.style.position = sidebar_position\n sidebar_content.style.width = `${contentWidth}px`\n }\n }\n\n window.onresize = () => {\n let contentWidth = sidebar.getBoundingClientRect().width\n sidebar_content.style.width = `${contentWidth}px`\n }\n },\n loadLastSearch() {\n if (!this.isLoggedIn)\n return\n let params = JSON.parse(sessionStorage.getItem('last_search')) ?? null\n if (!params) return\n params.query = ''\n this.retrySearch(params)\n },\n },\n})\n"],"names":["_sfc_main","_a","_b","value","sel","id","newValue","term","Spinner","NoPreview","FlashcardsNoPreview","BingoNoPreview","Utils","item","name","n","s","v","Common","mapGetters","noPreview","focus","DocumentApi","response","successToast","dangerToast","ActivityChooser","bvEvent","isOpen","event","namespaced","state","mutations","values","actions","commit","dispatch","getters","rootGetters","searchTerm","payload","apiClient","url","error","arr","index","storage","params","Vue","Vuex","document","DocumentModule","store","abtests","user","cards","subscription","browse","BootstrapVue","BootstrapVueIcons","MainMenu","modal","Login","FilterMenu","BrowseMenuItem","DocViewer","Dropdown","MaintenanceAlert","loader","OneClickSuccessModal","Paywall","EventApi","Modals","Sentry.init","BrowserTracing","Sentry.Replay","StatsigHelper","TopnavUtil","PushListener","LogInWatcher","mapState","types","worksheet_types","bingo_types","flashcard_types","type","sub","title","sort_option","Checkout","entries","entry","i","ev","children","showBorder","star","rating","key","sort_by","saveBrowserHistory","_c","_d","_e","_f","_g","_h","query","_j","_i","_l","_k","_n","_m","_q","_o","_p","options","sidebar","sidebar_content","searchbar","sidebar_position","contentWidth","scrollTop","viewportHeight","sidebarTop","contentHeight"],"mappings":"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"}