{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/react/lesson/print/components/Menu/MenuItem.js","webpack:///./app/react/lesson/print/components/Menu/AudienceButton.js","webpack:///./app/react/lesson/print/components/Menu/pdfMenuItems.js","webpack:///./app/react/lesson/print/context/print.js","webpack:///./app/react/lesson/print/services/language.js","webpack:///./app/react/lesson/print/components/Menu/PdfMenu.js","webpack:///./app/react/lesson/print/components/illustrations/FlagUS.js","webpack:///./app/react/lesson/print/components/illustrations/FlagCAD.js","webpack:///./app/react/lesson/print/components/illustrations/FlagUK.js","webpack:///./app/react/lesson/print/components/illustrations/FlagAUS.js","webpack:///./app/react/lesson/print/components/Menu/AudioDownloadModal.js","webpack:///./app/react/lesson/print/components/Menu/AudioDownloadButton.js","webpack:///./app/react/lesson/print/components/Menu/AudioMenu.js","webpack:///./app/react/lesson/print/components/Menu/Menu.js","webpack:///./app/react/lesson/print/components/PdfToolbar/PdfExportModal.js","webpack:///./app/react/lesson/print/components/PdfToolbar/PdfShareModal.js","webpack:///./app/react/lesson/print/components/PdfToolbar/ToolbarDropdown.js","webpack:///./app/react/lesson/print/propShapes/pdfInstance.js","webpack:///./app/react/lesson/print/components/PdfToolbar/ModeDropdown.js","webpack:///./app/react/lesson/print/components/PdfToolbar/SidebarModeDropdown.js","webpack:///./app/react/lesson/print/components/PdfToolbar/ViewModeDropdown.js","webpack:///./app/react/lesson/print/components/PdfToolbar/Pager.js","webpack:///./app/react/lesson/print/components/PdfToolbar/AnnotationDropdown.js","webpack:///./app/react/lesson/print/components/PdfToolbar/PdfToolbar.js","webpack:///./app/react/lesson/print/components/Pdf.js","webpack:///./app/react/lesson/print/components/PrintTitleBar.js","webpack:///./app/react/lesson/print/App.js","webpack:///./app/react/jsPacks/lesson/print.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","e","Promise","resolve","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","MenuButton","styled","TransparentButton","attrs","py","px","textAlign","props","theme","colors","gray100","MotionIcon","motion","Icon","MenuItem","children","ghost","icon","isOpen","label","display","alignItems","color","opacity","width","position","top","mr","as","fontWeight","animate","rotate","ml","height","initial","overflowY","transition","type","duration","bg","fontSize","boxShadow","defaultProps","propTypes","PropTypes","node","bool","string","isRequired","AudienceButton","active","borderRadius","white","border","borderColor","blue500","black","flexGrow","marginRight","FlagButton","justifyContent","LanguageOption","selected","Flag","flag","onClick","elementType","func","AudienceOption","mb","findFile","files","language","audience","find","file","findFileUrl","foundFile","url","reducer","state","action","payload","activePdfFileUrl","pdfs","showAudioDownloadWarning","showPdfDownloadWarning","showPdfPrintWarning","Error","PrintState","createContext","PrintDispatch","usePrintContext","useContext","dispatch","undefined","PrintProvider","initialState","getInitialState","lesson","isSampling","activeFile","sample_pdf","formatedState","toolbarDropdownVisible","audios","settings","pspdfkit","stylesheet","backUrl","pdfShareToken","userIsStudent","hasStudentPdf","useReducer","setState","Provider","displayName","preferred_lang","xhr","method","message","response","setPreferredLang","languageOptions","version","viewBox","xmlns","x","y","fill","audienceOptions","PdfMenu","availableLanguages","filter","option","languageValue","availableAudiences","audienceValue","style","pointerEvents","map","setLanguage","analyticsTrack","spelling","lesson_id","id","lesson_title","title","mt","flexWrap","setAudience","small","href","pr","AudioDownloadModal","onClose","useState","termsAccepted","setTermsAccepted","dismiss","onBackgroundClick","onEscapeKeydown","target","checked","onChange","adaptive","disabled","StyledButton","paddingLeft","paddingRight","AudioDownloadButton","downloadUrl","isModalOpen","setModalOpen","dowloadLink","useRef","useSessionStorage","audioDownloadsCount","setAudioDownloadsCount","warnOnAudioDownloadAfterDate","setWarnOnAudioDownloadAfterDate","isAfter1h","dateToCompare","dateNow","Date","getTime","get1hFromNow","date","setHours","getHours","useEffect","download","current","click","toISOString","ref","confirm","AudioHeading","Heading","overflow","AudioMenu","audio","index","array","textOverflow","download_url","src","play_url","my","IconButton","open","media","xl","menuMachine","Machine","states","allClosed","on","pdfClicked","audioClicked","pdf","variants","closed","closedLg","MenuWrapper","SidebarWrapper","zIndex","Menu","startOpen","setOpen","useMachine","send","isLg","useMediaLayout","mediaQueries","lg","left","isCloseButton","matches","PdfExportModal","modalType","isResource","PdfShareModal","shareLink","copyButtonClicked","setCopyButtonClicked","flexDirection","textField","document","createElement","innerText","body","appendChild","select","execCommand","remove","setTimeout","alignSelf","shape","ToolbarButton","DropdownButton","padding","ToolbarDropdown","options","onSetToolbarDropdownVisibility","setIsOpen","clickToolbar","Popover","onClickOutside","positions","align","containerStyle","content","opt","onClickOption","pl","arrayOf","pdfInstanceShape","viewState","currentPageIndex","number","totalPageCount","ModeDropdown","pdfInstance","modeCategory","disableModeOnClickOutside","activeMode","setActiveMode","listener","addEventListener","event","instance","removeEventListener","changeSidebarMode","setViewState","set","modeOptions","PSPDFKitWeb","SidebarMode","DOCUMENT_OUTLINE","THUMBNAILS","SidebarModeDropdown","toolbarIconClickeable","viewModes","ViewModeDropdown","viewMode","setViewMode","dropdownOptions","ZoomMode","rotateRight","PagerButton","backgroundColor","yellow300","Pager","currentPage","totalPages","updatePager","goToPreviousPage","goToNextPage","InteractionMode","INK","INK_ERASER","TEXT","AnnotationDropdown","PdfToolbar","downloadLink","linkForSharing","setLinkForSharing","isShareModalOpen","setShareModalOpen","setModalType","pdfDownloadsCount","setPdfDownloadsCount","warnOnPdfDownloadAfterDate","setWarnOnPdfDownloadAfterDate","pdfPrintsCount","setPdfPrintsCount","warnOnPdfPrintAfterDate","setWarnOnPdfPrintAfterDate","location","lessonName","start","end","uploadedFileName","trackingPayload","exportPDF","buffer","blob","Blob","objectUrl","URL","createObjectURL","print","zoomOut","zoomIn","pascalCase","lastIndexOf","substring","is_resource","Pdf","container","setPdfInstance","setToolbarDropdownVisible","Options","IGNORE_DOCUMENT_PERMISSIONS","load","licenseKey","license_key","baseUrl","assets_url","toolbarItems","styleSheets","preventTextCopy","loadDocument","unload","visible","minWidth","right","bottom","PrintTitleBar","onInfo","showInfo","size","esl_thumbnail_url","alt","flex","HideBodyOverflow","createGlobalStyle","App","WebFont","google","families","ElliiThemeProvider","backgroundComponent","ModalBackground","ApplicationGrid","ReactDOM","render","querySelector"],"mappings":"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","file":"lesson/print.137bdf704267ad4b22ff.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"lesson/print\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// The chunk loading function for additional chunks\n \t// Since all referenced chunks are already included\n \t// in this file, this function is empty here.\n \t__webpack_require__.e = function requireEnsure() {\n \t\treturn Promise.resolve();\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"//d3uk5h2fsqai9v.cloudfront.net/js-packs/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1529,\"vendor\",\"package-common\",\"ellii\",\"react\",\"package-tasks\",\"endpoints\",\"package-assignments\",\"pspdfkit\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { motion } from 'framer-motion'\n\nimport {\n Box,\n Icon,\n MotionBox,\n Text,\n TransparentButton,\n} from '@redriverpress/system'\n\nconst MenuButton = styled(TransparentButton).attrs(() => ({\n py: 3,\n px: 0,\n textAlign: 'left',\n}))`\n flex-shrink: 0;\n &:hover {\n background: ${props => props.theme.colors.gray100};\n }\n\n &:focus {\n outline: none;\n }\n`\n\nconst MotionIcon = motion(Icon)\n\n// MenuItem ghost prop is for rendering the ghost button for closing the menu\nexport default function MenuItem({\n children,\n ghost,\n icon,\n isOpen,\n label,\n ...props\n}) {\n return (\n <>\n \n \n \n \n {label}\n \n \n \n \n {children && (\n \n {children}\n \n )}\n \n )\n}\n\nMenuItem.defaultProps = {\n children: null,\n ghost: false,\n isOpen: false,\n}\n\nMenuItem.propTypes = {\n children: PropTypes.node,\n ghost: PropTypes.bool,\n icon: PropTypes.string.isRequired,\n isOpen: PropTypes.bool,\n label: PropTypes.string.isRequired,\n}\n","import styled from 'styled-components'\nimport { border, boxShadow } from 'styled-system'\n\nimport { TransparentButton, theme } from '@redriverpress/system'\n\nconst AudienceButton = styled(TransparentButton).attrs(({ active }) => ({\n borderRadius: 'rounded',\n height: '3.563rem',\n bg: theme.colors.white,\n border: '2px solid',\n fontSize: 1,\n borderColor: active ? theme.colors.blue500 : 'transparent',\n color: active ? theme.colors.blue500 : theme.colors.black,\n boxShadow: active ? 'none !important' : '0 4px 10px 0 rgba(35, 31, 32, 0.04)',\n flexGrow: 1,\n marginRight: [0, null, 3, 0],\n width: [1, null, 'auto', 1],\n}))`\n &:hover {\n box-shadow: 0 4px 20px 0 rgba(173, 171, 171, 0.25);\n }\n &:focus {\n outline: none;\n }\n text-transform: capitalize;\n ${border}\n ${boxShadow}\n &:last-child {\n margin-right: 0;\n }\n`\n\nexport default AudienceButton\n","import PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { border } from 'styled-system'\n\nimport { Icon, TransparentButton, theme } from '@redriverpress/system'\n\nimport AudienceButton from './AudienceButton'\n\nconst FlagButton = styled(TransparentButton).attrs(({ active }) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 'rounded',\n border: '2px solid',\n borderColor: active ? theme.colors.blue500 : 'transparent',\n}))`\n &:hover {\n svg {\n opacity: 0.6;\n }\n }\n &:focus {\n outline: none;\n }\n ${border}\n`\n\nconst LanguageOption = ({ selected, flag: Flag, onClick }) => (\n \n \n \n)\n\nLanguageOption.propTypes = {\n selected: PropTypes.bool.isRequired,\n flag: PropTypes.elementType.isRequired,\n onClick: PropTypes.func.isRequired,\n}\n\nconst AudienceOption = ({ selected, icon, label, onClick }) => (\n \n \n {label}\n \n)\n\nAudienceOption.propTypes = {\n selected: PropTypes.bool.isRequired,\n icon: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n}\n\nexport { LanguageOption, AudienceOption }\n","import { createContext, useContext, useReducer } from 'react'\nimport PropTypes from 'prop-types'\nimport R from 'ramda'\n\nimport getInitialState from 'Common/utils/getInitialState'\n\n// ACTION CREATORS\n// These get passed to dispatch(), e.g. dispatch(setSpelling(foo))\nconst setLanguage = language => ({\n type: 'set language',\n payload: language,\n})\n\nconst setAudience = audience => ({\n type: 'set audience',\n payload: audience,\n})\n\nconst toggleAudioDownloadWarning = () => ({\n type: 'toggle audio download warning',\n})\n\nconst togglePdfDownloadWarning = () => ({\n type: 'toggle pdf download warning',\n})\n\nconst togglePdfPrintWarning = () => ({\n type: 'toggle pdf print warning',\n})\n\nconst findFile = (files, language, audience) => {\n return files.find(\n file => file.language === language && file.audience === audience\n )\n}\n\nconst findFileUrl = (files, language, audience) => {\n const foundFile = findFile(files, language, audience)\n return foundFile && foundFile.url\n}\n\n// THE REDUCER\nconst reducer = (state, action) =>\n R.cond([\n [\n R.equals('set language'),\n () =>\n R.mergeRight(state, {\n language: action.payload,\n activePdfFileUrl: findFileUrl(\n state.pdfs,\n action.payload,\n state.audience\n ),\n }),\n ],\n [\n R.equals('set audience'),\n () =>\n R.mergeRight(state, {\n audience: action.payload,\n activePdfFileUrl: findFileUrl(\n state.pdfs,\n state.language,\n action.payload\n ),\n }),\n ],\n [\n R.equals('toggle audio download warning'),\n () =>\n R.mergeRight(state, {\n showAudioDownloadWarning: false,\n }),\n ],\n [\n R.equals('toggle pdf download warning'),\n () =>\n R.mergeRight(state, {\n showPdfDownloadWarning: false,\n }),\n ],\n [\n R.equals('toggle pdf print warning'),\n () =>\n R.mergeRight(state, {\n showPdfPrintWarning: false,\n }),\n ],\n [\n R.T,\n () => {\n throw new Error(`Unhandled action type: ${action.type}`)\n },\n ],\n ])(action.type)\n\n// Context objects\nconst PrintState = createContext()\nconst PrintDispatch = createContext()\n\nPrintState.displayName = 'PrintState'\nPrintDispatch.displayName = 'PrintDispatch'\n\n// Context hook\nfunction usePrintContext() {\n const state = useContext(PrintState)\n const dispatch = useContext(PrintDispatch)\n\n if (state === undefined || dispatch === undefined) {\n throw new Error('usePrintContext must be used within a PrintProvider')\n }\n\n return [state, dispatch]\n}\n\n// CONTEXT PROVIDER\n\nfunction PrintProvider({ children }) {\n const initialState = getInitialState()\n const { pdfs } = initialState.lesson\n const { isSampling } = initialState\n\n const activeFile = isSampling\n ? initialState.lesson.sample_pdf\n : findFile(\n pdfs,\n initialState.language,\n initialState.audience || 'teacher'\n ) || pdfs[0]\n\n const { url: activePdfFileUrl, language, audience } = activeFile\n\n const formatedState = {\n ...initialState,\n showAudioDownloadWarning: true,\n showPdfDownloadWarning: true,\n showPdfPrintWarning: true,\n toolbarDropdownVisible: false,\n activePdfFileUrl,\n audios: initialState.lesson.audios,\n pdfs,\n language,\n audience,\n settings: initialState.pspdfkit.settings,\n stylesheet: initialState.pspdfkit.stylesheet,\n isSampling,\n backUrl: initialState.backUrl,\n pdfShareToken: initialState.pdfShareToken,\n userIsStudent: initialState.userIsStudent,\n hasStudentPdf: initialState.hasStudentPdf,\n }\n\n const [state, setState] = useReducer(reducer, formatedState)\n\n return (\n \n \n {children}\n \n \n )\n}\n\nPrintProvider.propTypes = {\n children: PropTypes.node.isRequired,\n}\n\nexport {\n PrintProvider,\n usePrintContext,\n setLanguage,\n setAudience,\n toggleAudioDownloadWarning,\n togglePdfDownloadWarning,\n togglePdfPrintWarning,\n}\n","import xhr from 'Common/utils/xhr'\n\nasync function setPreferredLang(language) {\n const url = '/set_preferred_lang'\n const data = { preferred_lang: language }\n\n try {\n return await xhr({\n url,\n method: 'PUT',\n data,\n })\n } catch (e) {\n const message = e.response?.data?.message\n\n throw new Error(message)\n }\n}\n\nexport default setPreferredLang\n","import PropTypes from 'prop-types'\n\nimport { Box, Button, Icon, Heading, Text } from '@redriverpress/system'\nimport analyticsTrack from 'Common/utils/analytics'\nimport MenuItem from './MenuItem'\nimport { LanguageOption, AudienceOption } from './pdfMenuItems'\nimport { FlagUS, FlagCAD, FlagUK, FlagAUS } from '../illustrations'\nimport { setLanguage, setAudience, usePrintContext } from '../../context/print'\nimport setPreferredLang from '../../services/language'\n\nconst languageOptions = [\n { language: 'US', flag: FlagUS },\n { language: 'CAD', flag: FlagCAD },\n { language: 'UK', flag: FlagUK },\n { language: 'AUS', flag: FlagAUS },\n]\n\nconst audienceOptions = [\n { audience: 'teacher', icon: 'chalkboard-teacher' },\n { audience: 'student', icon: 'users-class' },\n]\n\nexport default function PdfMenu({\n isOpen,\n onClick,\n isSampling,\n userIsStudent,\n}) {\n const [{ language, audience, pdfs, lesson }, dispatch] = usePrintContext()\n\n const handleLanguageChange = value => {\n if (value !== language) {\n dispatch(setLanguage(value))\n setPreferredLang(value)\n analyticsTrack('Changed PDF spelling', {\n spelling: value,\n lesson_id: lesson.id,\n lesson_title: lesson.title,\n })\n }\n }\n\n const handleAudienceChange = value => {\n if (value !== audience) {\n dispatch(setAudience(value))\n }\n }\n\n const isLanguageAvailable = languageValue => {\n const files = pdfs.filter(\n file => file.language === languageValue && file.url\n )\n return files && files.length > 0\n }\n\n const isAudienceAvailable = audienceValue => {\n const files = pdfs.filter(\n file =>\n file.language === language &&\n file.audience === audienceValue &&\n file.url\n )\n return files && files.length > 0\n }\n\n const availableLanguages = languageOptions.filter(option =>\n isLanguageAvailable(option.language)\n )\n const availableAudiences = audienceOptions.filter(option =>\n isAudienceAvailable(option.audience)\n )\n\n return (\n \n \n \n \n Spelling\n \n \n {availableLanguages.map(option => (\n handleLanguageChange(option.language)}\n selected={language === option.language}\n flag={option.flag}\n />\n ))}\n \n {!isSampling && !userIsStudent && (\n <>\n \n PDFs\n \n \n {availableAudiences.map(option => (\n handleAudienceChange(option.audience)}\n selected={audience === option.audience}\n icon={option.icon}\n label={option.audience}\n />\n ))}\n \n \n )}\n \n {isSampling && !userIsStudent && (\n <>\n \n To access all versions of this lesson, please subscribe.\n \n \n \n )}\n \n \n )\n}\n\nPdfMenu.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n isSampling: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n userIsStudent: PropTypes.bool.isRequired,\n}\n","import { Svg } from '@redriverpress/system'\n\nexport default function FlagUS(props) {\n return (\n \n \n \n \n \n \n \n \n )\n}\n","import { Svg } from '@redriverpress/system'\n\nexport default function FlagCAD(props) {\n return (\n \n \n \n \n \n \n \n )\n}\n","import { Svg } from '@redriverpress/system'\n\nexport default function FlagUK(props) {\n return (\n \n \n \n \n \n \n \n \n )\n}\n","import { Svg } from '@redriverpress/system'\n\nexport default function FlagAUS(props) {\n return (\n \n \n \n \n \n \n \n \n \n \n )\n}\n","import PropTypes from 'prop-types'\nimport { useState } from 'react'\n\nimport { Box, Icon, Button, Checkbox, Text, Link } from '@redriverpress/system'\n\nimport { Modal } from 'Common/components/modal'\n\nexport default function AudioDownloadModal({ isOpen, onClose }) {\n const [termsAccepted, setTermsAccepted] = useState(false)\n\n const dismiss = () => {\n onClose(false)\n }\n\n const confirm = () => {\n onClose(true)\n }\n\n return (\n \n \n \n Downloading and distributing Ellii audio files must always be done in\n accordance with our terms and conditions, which you agreed to when\n creating your subscription. Ellii audio files may only be used for\n educational purposes, and may only be distributed to your own set of\n students while you are an active subscriber of the Site. Audio files\n may not be hosted on external servers.\n \n \n \n Review our Terms\n \n \n setTermsAccepted(e.target.checked)}\n />\n \n \n \n \n \n )\n}\n\nAudioDownloadModal.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { useState, useRef, useEffect } from 'react'\nimport styled from 'styled-components'\n\nimport {\n Box,\n TransparentButton,\n Icon,\n Link,\n theme,\n} from '@redriverpress/system'\n\nimport useSessionStorage from 'Common/hooks/useSessionStorage'\nimport analyticsTrack from 'Common/utils/analytics'\n\nimport AudioDownloadModal from './AudioDownloadModal'\nimport {\n usePrintContext,\n toggleAudioDownloadWarning,\n} from '../../context/print'\n\nconst StyledButton = styled(TransparentButton).attrs(() => ({\n fontSize: '1rem',\n paddingLeft: 0,\n paddingRight: 0,\n width: '1.75rem',\n textAlign: 'right',\n}))`\n &:hover {\n color: ${theme.colors.blue500};\n }\n &:focus {\n outline: none;\n }\n`\n\nfunction AudioDownloadButton({ downloadUrl }) {\n const [{ showAudioDownloadWarning, lesson }, dispatch] = usePrintContext()\n const [isModalOpen, setModalOpen] = useState(false)\n const dowloadLink = useRef()\n\n // searches for values of the clicks counter in sessionStorage\n const [audioDownloadsCount, setAudioDownloadsCount] = useSessionStorage(\n 'audioDownloadsCount',\n 0\n )\n const [\n warnOnAudioDownloadAfterDate,\n setWarnOnAudioDownloadAfterDate,\n ] = useSessionStorage('warnOnAudioDownloadAfterDate', null)\n\n const isAfter1h = dateToCompare => {\n const dateNow = new Date()\n const dateExpiration = new Date(dateToCompare)\n if (dateExpiration.getTime() <= dateNow.getTime()) {\n return true\n }\n return false\n }\n\n const get1hFromNow = () => {\n const date = new Date()\n date.setHours(date.getHours() + 1)\n return date\n }\n\n useEffect(() => {\n // if there's a value set for clicks counter expiration date, should check if it is expired. If it is, reset values.\n if (warnOnAudioDownloadAfterDate !== null) {\n if (isAfter1h(warnOnAudioDownloadAfterDate)) {\n setAudioDownloadsCount(0)\n setWarnOnAudioDownloadAfterDate(null)\n }\n }\n }, [])\n\n const handleToggleAudioDownloadWarning = () => {\n dispatch(toggleAudioDownloadWarning())\n }\n\n const download = () => {\n dowloadLink.current.click()\n analyticsTrack('Downloaded Lesson audio', {\n lesson_id: lesson.id,\n lesson_title: lesson.title,\n })\n }\n\n const closeModal = confirm => {\n setModalOpen(false)\n if (confirm) {\n download()\n handleToggleAudioDownloadWarning()\n }\n }\n\n const downloadFile = () => {\n // Check if there is an expiration date for clicks counter set. If not, increment counter value and set a new expiration date.\n if (warnOnAudioDownloadAfterDate === null) {\n setAudioDownloadsCount(audioDownloadsCount + 1)\n setWarnOnAudioDownloadAfterDate(get1hFromNow().toISOString())\n }\n // If there's an date set, check if it's expired. If it is, reset clicks counter and set new date. If not, just increment the clicks counter.\n if (isAfter1h(warnOnAudioDownloadAfterDate)) {\n setAudioDownloadsCount(0)\n setWarnOnAudioDownloadAfterDate(get1hFromNow().toISOString())\n } else {\n setAudioDownloadsCount(audioDownloadsCount + 1)\n }\n\n // If the clicks counter is higher or equal to 9, show Modal. If not, just proceed.\n if (audioDownloadsCount >= 9) {\n if (showAudioDownloadWarning) {\n setModalOpen(true)\n } else {\n download()\n }\n } else {\n download()\n }\n }\n\n return (\n \n \n \n \n \n \n \n )\n}\n\nAudioDownloadButton.propTypes = {\n downloadUrl: PropTypes.string.isRequired,\n}\n\nexport default AudioDownloadButton\n","import PropTypes from 'prop-types'\nimport { Fragment } from 'react'\nimport styled from 'styled-components'\nimport { overflow } from 'styled-system'\n\nimport { Audio, Box, Heading, HR } from '@redriverpress/system'\nimport MenuItem from './MenuItem'\nimport AudioDownloadButton from './AudioDownloadButton'\nimport { usePrintContext } from '../../context/print'\n\nconst AudioHeading = styled(Heading).attrs(() => ({\n overflow: 'hidden',\n}))`\n text-overflow: ellipsis;\n ${overflow}\n`\n\nexport default function AudioMenu({ isOpen, onClick }) {\n const [{ audios }] = usePrintContext()\n if (audios.length === 0) {\n return null\n }\n\n return (\n \n \n \n {audios.map((audio, index, array) => (\n \n \n \n {`${index + 1}.`}\n \n \n \n \n {audio.title}\n \n \n \n \n \n {array.length > 1 && index + 1 < array.length && (\n
\n )}\n
\n ))}\n
\n
\n
\n )\n}\n\nAudioMenu.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n}\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Machine } from 'xstate'\nimport { useMachine } from '@xstate/react'\nimport { useMediaLayout } from 'use-media'\n\nimport {\n Box,\n IconButton,\n SidebarBody,\n SidebarItem,\n SidebarWrapper,\n media,\n mediaQueries,\n} from '@redriverpress/system'\n\nimport PdfMenu from './PdfMenu'\nimport AudioMenu from './AudioMenu'\nimport { usePrintContext } from '../../context/print'\n\n// Hide IconButton background when menu open, and disable pointer events\nconst MenuButton = styled(IconButton)`\n pointer-events: ${props => (props.open ? 'none' : 'auto')};\n z-index: 2;\n top: 5px; // Don’t blame me I didn’t build this app\n left: 0.25rem;\n\n ${media.xl`\n top: 6px; // See above\n `}\n`\n\nconst menuMachine = Machine({\n id: 'pdfMenu',\n initial: 'pdf',\n states: {\n allClosed: {\n on: {\n pdfClicked: 'pdf',\n audioClicked: 'audio',\n },\n },\n pdf: {\n on: {\n pdfClicked: 'allClosed',\n audioClicked: 'audio',\n },\n },\n audio: {\n on: {\n pdfClicked: 'pdf',\n audioClicked: 'allClosed',\n },\n },\n },\n})\n\nconst variants = {\n open: {\n x: 0,\n width: 'auto',\n },\n closed: {\n width: '2.875rem',\n },\n closedLg: {\n width: '5rem',\n },\n}\n\nconst MenuWrapper = styled(SidebarWrapper).attrs(() => ({\n variants,\n boxShadow: 2,\n opacity: 1,\n zIndex: 1,\n}))``\n\nexport default function Menu({ startOpen }) {\n const [open, setOpen] = useState(startOpen)\n\n const [state, send] = useMachine(menuMachine)\n const isLg = useMediaLayout(mediaQueries.lg, null)\n const [{ audios, isSampling, userIsStudent }] = usePrintContext()\n return (\n <>\n \n setOpen(x => !x)} open={open} />\n \n \n \n setOpen(false)}\n />\n send('pdfClicked')}\n isOpen={state.matches('pdf')}\n isSampling={isSampling}\n userIsStudent={userIsStudent}\n />\n {!!audios.length && (\n send('audioClicked')}\n isOpen={state.matches('audio')}\n />\n )}\n \n \n \n )\n}\n\nMenu.propTypes = {\n startOpen: PropTypes.bool.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { useState, useEffect } from 'react'\n\nimport { Box, Icon, Button, Checkbox, Text, Link } from '@redriverpress/system'\n\nimport { Modal } from 'Common/components/modal'\n\nexport default function PdfExportModal({\n isOpen,\n onClose,\n modalType,\n isResource,\n}) {\n const [termsAccepted, setTermsAccepted] = useState(false)\n\n useEffect(() => {\n setTermsAccepted(false)\n }, [isOpen])\n\n const dismiss = () => {\n onClose(false)\n }\n\n const confirm = () => {\n onClose(true)\n }\n\n const icon = modalType === 'print' ? 'print' : 'arrow-to-bottom'\n const action = modalType === 'print' ? 'Print' : 'Download'\n const type = isResource === true ? 'Resource' : 'Lesson'\n const title = `${action} ${type}`\n\n return (\n \n \n \n {modalType === 'print' ? (\n <>\n {/* Terms for printing */}\n Photocopying and distributing Ellii documents must always be done\n in accordance with our terms and conditions, which you agreed to\n when creating your subscription. Ellii materials may only be used\n for educational purposes, and may only be distributed to your own\n set of students while you are an active subscriber of\n the Site.\n \n ) : (\n <>\n {/* Terms for downloading */}\n Downloading, photocopying, and distributing Ellii documents must\n always be done in accordance with our terms and conditions, which\n you agreed to when creating your subscription. Ellii materials may\n only be used for educational purposes, and may only be distributed\n to your own set of students while you are an active subscriber of\n the Site. Materials that are downloaded may be emailed to your\n students but may not be hosted on external servers.\n \n )}\n \n \n \n Review our Terms\n \n \n setTermsAccepted(e.target.checked)}\n />\n \n \n \n \n \n )\n}\n\nPdfExportModal.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n isResource: PropTypes.bool.isRequired,\n modalType: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { useState } from 'react'\n\nimport { Box, Text, Button, Icon } from '@redriverpress/system'\n\nimport { Modal } from 'Common/components/modal'\nimport { ShareToGoogleClassRoom } from 'Packages/assignments'\n\nexport default function PdfShareModal({ isOpen, onClose, shareLink, lesson }) {\n const [copyButtonClicked, setCopyButtonClicked] = useState(false)\n\n const copyToClipboard = () => {\n // creates a textArea element with the innerText being the share link, so we can copy that to the clipboard and then deletes it\n const textField = document.createElement('textarea')\n textField.innerText = shareLink\n document.body.appendChild(textField)\n textField.select()\n document.execCommand('copy')\n textField.remove()\n // change the button after click\n setCopyButtonClicked(true)\n setTimeout(() => setCopyButtonClicked(false), 4000)\n }\n\n const closeModal = () => {\n setCopyButtonClicked(false)\n onClose()\n }\n\n return (\n \n \n \n You can share this PDF with your students by clicking an icon below.\n Please note that the link will be tokenized, meaning only your own\n students will be able to access it. Your students need to have an\n Ellii account.\n \n \n \n \n \n {copyButtonClicked ? 'Copied' : 'Copy Link'}\n \n \n \n Share to Google Classroom:\n \n \n \n \n\n {/* {}}\n >\n Link successfully copied to clipboard\n */}\n \n \n \n )\n}\n\nPdfShareModal.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n shareLink: PropTypes.string.isRequired,\n lesson: PropTypes.shape({ title: PropTypes.string.isRequired }).isRequired,\n}\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Popover } from 'react-tiny-popover'\n\nimport { TransparentButton, Box, Icon } from '@redriverpress/system'\n\nconst ToolbarButton = styled(TransparentButton).attrs(({ active }) => ({\n fontSize: 1,\n color: active ? 'blue500' : 'black',\n}))`\n &:hover {\n color: ${props => props.theme.colors.blue500};\n }\n &:focus {\n outline: none;\n }\n`\n\nconst DropdownButton = styled(TransparentButton).attrs(({ active }) => ({\n fontSize: 1,\n color: active ? 'blue500' : 'black',\n padding: '0.5rem',\n height: '2.25rem',\n fontWeight: 600,\n textAlign: 'left',\n}))`\n &:focus {\n outline: none;\n }\n`\n\nexport default function ToolbarDropdown({\n icon,\n active,\n options,\n onSetToolbarDropdownVisibility,\n display,\n}) {\n const [isOpen, setIsOpen] = useState(false)\n\n const clickToolbar = () => {\n onSetToolbarDropdownVisibility(!isOpen)\n setIsOpen(!isOpen)\n }\n\n const onClickOption = onClick => {\n onClick()\n clickToolbar()\n }\n\n return (\n \n {options.map(opt => (\n \n onClickOption(opt.onClick)}\n active={opt.active}\n >\n \n {opt.label}\n \n \n ))}\n \n }\n >\n \n \n \n \n \n )\n}\n\nToolbarDropdown.propTypes = {\n icon: PropTypes.string.isRequired,\n active: PropTypes.bool,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n icon: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n })\n ).isRequired,\n onSetToolbarDropdownVisibility: PropTypes.func.isRequired,\n display: PropTypes.arrayOf(PropTypes.string),\n}\n\nToolbarDropdown.defaultProps = {\n active: false,\n display: ['block'],\n}\n","import PropTypes from 'prop-types'\n\nconst pdfInstanceShape = {\n viewState: PropTypes.shape({\n currentPageIndex: PropTypes.number,\n }),\n totalPageCount: PropTypes.number,\n}\n\nexport default pdfInstanceShape\n","import { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ToolbarDropdown from './ToolbarDropdown'\nimport pdfInstanceShape from '../../propShapes/pdfInstance'\n\nexport default function ModeDropdown({\n pdfInstance,\n options,\n modeCategory,\n disableModeOnClickOutside,\n ...props\n}) {\n const [activeMode, setActiveMode] = useState()\n\n useEffect(() => {\n const listener = pdfInstance.addEventListener('viewState.change', event => {\n if (\n disableModeOnClickOutside &&\n !event.instance.viewState[modeCategory]\n ) {\n setActiveMode(null)\n }\n })\n return () => {\n pdfInstance.removeEventListener('viewState.change', listener)\n }\n }, [])\n\n const disableSidebarMode = () => {\n pdfInstance.setViewState(viewState => viewState.set(modeCategory, null))\n setActiveMode(null)\n }\n\n const changeSidebarMode = mode => {\n if (activeMode && activeMode.id === mode.id) {\n disableSidebarMode()\n } else {\n pdfInstance.setViewState(viewState =>\n viewState.set(modeCategory, mode.key)\n )\n setActiveMode(mode)\n }\n }\n\n const modeOptions = options.map(option => ({\n ...option,\n onClick: () => changeSidebarMode(option),\n active: activeMode && activeMode.id === option.id,\n }))\n\n return (\n \n )\n}\n\nModeDropdown.propTypes = {\n pdfInstance: PropTypes.shape(pdfInstanceShape).isRequired,\n modeCategory: PropTypes.string.isRequired,\n disableModeOnClickOutside: PropTypes.bool,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n icon: PropTypes.string.isRequired,\n key: PropTypes.string.isRequired,\n })\n ).isRequired,\n}\n\nModeDropdown.defaultProps = {\n disableModeOnClickOutside: false,\n}\n","import PropTypes from 'prop-types'\nimport PSPDFKitWeb from 'pspdfkit'\n\nimport ModeDropdown from './ModeDropdown'\nimport pdfInstanceShape from '../../propShapes/pdfInstance'\n\nconst options = [\n {\n id: 'BOOKMARKS',\n label: 'Bookmarks',\n icon: 'bookmark',\n key: PSPDFKitWeb.SidebarMode.DOCUMENT_OUTLINE,\n },\n {\n id: 'THUMBNAILS',\n label: 'Thumbnails',\n icon: 'copy',\n key: PSPDFKitWeb.SidebarMode.THUMBNAILS,\n },\n]\n\nexport default function SidebarModeDropdown({\n pdfInstance,\n onSetToolbarDropdownVisibility,\n}) {\n return (\n \n )\n}\n\nSidebarModeDropdown.propTypes = {\n pdfInstance: PropTypes.shape(pdfInstanceShape).isRequired,\n onSetToolbarDropdownVisibility: PropTypes.func.isRequired,\n}\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport PSPDFKitWeb from 'pspdfkit'\n\nimport ToolbarDropdown from './ToolbarDropdown'\nimport pdfInstanceShape from '../../propShapes/pdfInstance'\n\nconst viewModes = [\n { id: 'FIT_TO_WIDTH', label: 'Fit Width', icon: 'arrows-h' },\n { id: 'FIT_TO_VIEWPORT', label: 'Full Page', icon: 'file' },\n]\n\nexport default function ViewModeDropdown({\n pdfInstance,\n onSetToolbarDropdownVisibility,\n display,\n}) {\n const [viewMode, setViewMode] = useState(viewModes[0].id)\n\n const clickViewMode = mode => {\n setViewMode(mode.id)\n pdfInstance.setViewState(viewState =>\n viewState.set('zoom', PSPDFKitWeb.ZoomMode[mode.id])\n )\n }\n\n const clickRotate = () => {\n pdfInstance.setViewState(viewState => viewState.rotateRight())\n }\n\n const dropdownOptions = [\n ...viewModes.map(opt => ({\n id: opt.id,\n label: opt.label,\n icon: opt.icon,\n onClick: () => clickViewMode(opt),\n active: viewMode === opt.id,\n })),\n { id: 'rotate', label: 'Rotate', icon: 'redo', onClick: clickRotate },\n ]\n\n return (\n \n )\n}\n\nViewModeDropdown.propTypes = {\n pdfInstance: PropTypes.shape(pdfInstanceShape).isRequired,\n onSetToolbarDropdownVisibility: PropTypes.func.isRequired,\n display: PropTypes.arrayOf(PropTypes.string),\n}\n\nViewModeDropdown.defaultProps = {\n display: ['block'],\n}\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport { Box, Icon, TransparentButton, Text } from '@redriverpress/system'\nimport pdfInstanceShape from '../../propShapes/pdfInstance'\n\nconst PagerButton = styled(TransparentButton).attrs(({ disabled }) => ({\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '50%',\n width: '2.75rem',\n height: '2.75rem',\n fontSize: 1,\n backgroundColor: disabled ? 'gray300' : 'yellow500',\n padding: 0,\n}))`\n &:not([disabled]):hover {\n background-color: ${props => props.theme.colors.yellow300};\n }\n`\n\nexport default function Pager({ pdfInstance }) {\n const [state, setState] = useState({ currentPage: '', totalPages: '' })\n\n const updatePager = () => {\n setState({\n currentPage: pdfInstance\n ? pdfInstance.viewState.currentPageIndex + 1\n : '',\n totalPages: pdfInstance ? pdfInstance.totalPageCount : '',\n })\n }\n\n useEffect(() => {\n updatePager()\n pdfInstance.addEventListener('viewState.change', updatePager)\n return () => {\n pdfInstance.removeEventListener('viewState.change', updatePager)\n }\n }, [pdfInstance])\n\n const clickPrevPage = () => {\n pdfInstance.setViewState(viewState => viewState.goToPreviousPage())\n updatePager()\n }\n\n const clickNextPage = () => {\n pdfInstance.setViewState(viewState => viewState.goToNextPage())\n updatePager()\n }\n\n return (\n \n \n \n \n \n {`${state.currentPage} of ${state.totalPages}`}\n \n \n \n \n \n )\n}\n\nPager.propTypes = {\n pdfInstance: PropTypes.shape(pdfInstanceShape).isRequired,\n}\n","import PropTypes from 'prop-types'\nimport PSPDFKitWeb from 'pspdfkit'\n\nimport ModeDropdown from './ModeDropdown'\nimport pdfInstanceShape from '../../propShapes/pdfInstance'\n\nconst options = [\n {\n id: 'INK',\n label: 'Pen',\n icon: 'pencil',\n key: PSPDFKitWeb.InteractionMode.INK,\n },\n {\n id: 'INK_ERASER',\n label: 'Eraser',\n icon: 'eraser',\n key: PSPDFKitWeb.InteractionMode.INK_ERASER,\n },\n {\n id: 'TEXT',\n label: 'Text',\n icon: 'text',\n key: PSPDFKitWeb.InteractionMode.TEXT,\n },\n]\n\nexport default function AnnotationDropdown({\n pdfInstance,\n onSetToolbarDropdownVisibility,\n display,\n}) {\n return (\n \n )\n}\n\nAnnotationDropdown.propTypes = {\n pdfInstance: PropTypes.shape(pdfInstanceShape).isRequired,\n onSetToolbarDropdownVisibility: PropTypes.func.isRequired,\n display: PropTypes.arrayOf(PropTypes.string),\n}\n\nAnnotationDropdown.defaultProps = {\n display: ['block'],\n}\n","import { useRef, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { pascalCase } from 'pascal-case'\n\nimport { Box, Icon, Link, TransparentButton } from '@redriverpress/system'\n\nimport useSessionStorage from 'Common/hooks/useSessionStorage'\nimport analyticsTrack from 'Common/utils/analytics'\n\nimport PdfExportModal from './PdfExportModal'\nimport PdfShareModal from './PdfShareModal'\nimport SidebarModeDropdown from './SidebarModeDropdown'\nimport ViewModeDropdown from './ViewModeDropdown'\nimport Pager from './Pager'\nimport AnnotationDropdown from './AnnotationDropdown'\nimport {\n usePrintContext,\n togglePdfDownloadWarning,\n togglePdfPrintWarning,\n} from '../../context/print'\nimport pdfInstanceShape from '../../propShapes/pdfInstance'\n\nconst ToolbarButton = styled(TransparentButton).attrs(\n ({ active, ...props }) => ({\n display: props.display || 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '50%',\n fontSize: 1,\n width: '2.98rem',\n color: active ? 'blue500' : 'black',\n })\n)`\n &:hover {\n color: ${props => props.theme.colors.blue500};\n }\n &:focus {\n outline: none;\n }\n`\n\nexport default function PdfToolbar({\n pdfInstance,\n onSetToolbarDropdownVisibility,\n userIsStudent,\n}) {\n const [\n {\n activePdfFileUrl,\n isSampling,\n lesson,\n showPdfDownloadWarning,\n showPdfPrintWarning,\n pdfShareToken,\n hasStudentPdf,\n language,\n },\n dispatch,\n ] = usePrintContext()\n const downloadLink = useRef()\n const [isModalOpen, setModalOpen] = useState(false)\n const [linkForSharing, setLinkForSharing] = useState(null)\n const [isShareModalOpen, setShareModalOpen] = useState(false)\n const [modalType, setModalType] = useState('print')\n\n // searches for values of the downloads clicks counter in sessionStorage\n const [pdfDownloadsCount, setPdfDownloadsCount] = useSessionStorage(\n 'pdfDownloadsCount',\n 0\n )\n const [\n warnOnPdfDownloadAfterDate,\n setWarnOnPdfDownloadAfterDate,\n ] = useSessionStorage('warnOnPdfDownloadAfterDate', null)\n\n // searches for values of the prints clicks counter in sessionStorage\n const [pdfPrintsCount, setPdfPrintsCount] = useSessionStorage(\n 'pdfPrintsCount',\n 0\n )\n const [\n warnOnPdfPrintAfterDate,\n setWarnOnPdfPrintAfterDate,\n ] = useSessionStorage('warnOnPdfPrintAfterDate', null)\n\n const isAfter1h = dateToCompare => {\n const dateNow = new Date()\n const dateExpiration = new Date(dateToCompare)\n if (dateExpiration.getTime() <= dateNow.getTime()) {\n return true\n }\n return false\n }\n\n const get1hFromNow = () => {\n const date = new Date()\n date.setHours(date.getHours() + 1)\n return date\n }\n\n useEffect(() => {\n // if there's a value set for downloads clicks counter expiration date, should check if it is expired. If it is, reset values.\n setLinkForSharing(`${window.location.href}?shareToken=${pdfShareToken}`)\n\n if (warnOnPdfDownloadAfterDate !== null) {\n if (isAfter1h(warnOnPdfDownloadAfterDate)) {\n setPdfDownloadsCount(0)\n setWarnOnPdfDownloadAfterDate(null)\n }\n }\n\n // if there's a value set for prints clicks counter expiration date, should check if it is expired. If it is, reset values.\n if (warnOnPdfPrintAfterDate !== null) {\n if (isAfter1h(warnOnPdfPrintAfterDate)) {\n setPdfPrintsCount(0)\n setWarnOnPdfPrintAfterDate(null)\n }\n }\n }, [])\n\n const getFormattedFileName = () => {\n const lessonName = pascalCase(lesson.title)\n\n const start = activePdfFileUrl.lastIndexOf('/') + 1\n const end = activePdfFileUrl.lastIndexOf('.pdf') + 4\n const uploadedFileName = activePdfFileUrl.substring(start, end)\n\n const fileName = isSampling\n ? `ESLLibrary_${lessonName}_Sample.pdf`\n : uploadedFileName\n\n return fileName\n }\n\n const handleTogglePdfDownloadWarning = () => {\n dispatch(togglePdfDownloadWarning())\n }\n\n const handleTogglePdfPrintWarning = () => {\n dispatch(togglePdfPrintWarning())\n }\n\n const trackingPayload = {\n lesson_id: lesson.id,\n lesson_title: lesson.title,\n language,\n }\n\n const download = async () => {\n const buffer = await pdfInstance.exportPDF()\n const blob = new Blob([buffer], { type: 'application/pdf' })\n const objectUrl = window.URL.createObjectURL(blob)\n downloadLink.current.href = objectUrl\n downloadLink.current.click()\n downloadLink.current.href = '/'\n analyticsTrack('Downloaded Lesson PDF', trackingPayload)\n }\n\n const print = () => {\n pdfInstance.print()\n analyticsTrack('Printed Lesson PDF', trackingPayload)\n }\n\n const closeModal = confirm => {\n setModalOpen(false)\n if (confirm) {\n if (modalType === 'print') {\n print()\n handleTogglePdfPrintWarning()\n } else {\n download()\n handleTogglePdfDownloadWarning()\n }\n }\n }\n\n const closeShareModal = () => {\n setShareModalOpen(false)\n }\n\n const clickZoomOut = () => {\n pdfInstance.setViewState(viewState => viewState.zoomOut())\n }\n\n const clickZoomIn = () => {\n pdfInstance.setViewState(viewState => viewState.zoomIn())\n }\n\n const onClickPrint = () => {\n // Check if there is an expiration date for clicks counter set. If not, increment counter value and set a new expiration date.\n if (warnOnPdfPrintAfterDate === null) {\n setPdfPrintsCount(pdfPrintsCount + 1)\n setWarnOnPdfPrintAfterDate(get1hFromNow().toISOString())\n }\n // If there's an date set, check if it's expired. If it is, reset clicks counter and set new date. If not, just increment the clicks counter.\n if (isAfter1h(warnOnPdfPrintAfterDate)) {\n setPdfPrintsCount(0)\n setWarnOnPdfPrintAfterDate(get1hFromNow().toISOString())\n } else {\n setPdfPrintsCount(pdfPrintsCount + 1)\n }\n\n // If the clicks counter is higher or equal to 9, show Modal. If not, just proceed.\n if (pdfPrintsCount >= 9) {\n if (showPdfPrintWarning) {\n setModalType('print')\n setModalOpen(true)\n } else {\n print()\n }\n } else {\n print()\n }\n }\n\n const onClickDownload = () => {\n // Check if there is an expiration date for clicks counter set. If not, increment counter value and set a new expiration date.\n if (warnOnPdfDownloadAfterDate === null) {\n setPdfDownloadsCount(pdfDownloadsCount + 1)\n setWarnOnPdfDownloadAfterDate(get1hFromNow().toISOString())\n }\n // If there's an date set, check if it's expired. If it is, reset clicks counter and set new date. If not, just increment the clicks counter.\n if (isAfter1h(warnOnPdfDownloadAfterDate)) {\n setPdfDownloadsCount(0)\n setWarnOnPdfDownloadAfterDate(get1hFromNow().toISOString())\n } else {\n setPdfDownloadsCount(pdfDownloadsCount + 1)\n }\n\n // If the clicks counter is higher or equal to 9, show Modal. If not, just proceed.\n if (pdfDownloadsCount >= 9) {\n if (showPdfDownloadWarning) {\n setModalType('download')\n setModalOpen(true)\n } else {\n download()\n }\n } else {\n download()\n }\n }\n\n return (\n \n {pdfInstance && (\n <>\n \n \n\n \n \n \n \n \n \n \n \n {!userIsStudent && hasStudentPdf && !isSampling && (\n {\n setShareModalOpen(true)\n }}\n >\n \n \n )}\n \n \n \n \n \n \n \n \n \n \n )}\n \n )\n}\n\nPdfToolbar.propTypes = {\n pdfInstance: PropTypes.shape(pdfInstanceShape),\n onSetToolbarDropdownVisibility: PropTypes.func.isRequired,\n userIsStudent: PropTypes.bool.isRequired,\n}\n\nPdfToolbar.defaultProps = {\n pdfInstance: null,\n}\n","import { useEffect, useRef, useState } from 'react'\nimport PSPDFKitWeb from 'pspdfkit'\n\nimport { Box } from '@redriverpress/system'\nimport { usePrintContext } from '../context/print'\nimport PdfToolbar from './PdfToolbar/PdfToolbar'\n\nexport default function Pdf() {\n const container = useRef()\n const [\n { activePdfFileUrl, settings, stylesheet, userIsStudent },\n ] = usePrintContext()\n const [pdfInstance, setPdfInstance] = useState()\n const [toolbarDropdownVisible, setToolbarDropdownVisible] = useState(false)\n\n useEffect(() => {\n PSPDFKitWeb.Options.IGNORE_DOCUMENT_PERMISSIONS = true\n }, [])\n\n useEffect(() => {\n const loadDocument = async () => {\n const instance = await PSPDFKitWeb.load({\n document: activePdfFileUrl,\n container: container.current,\n licenseKey: settings.license_key,\n baseUrl: settings.assets_url,\n toolbarItems: [],\n styleSheets: [stylesheet],\n preventTextCopy: true,\n ...(settings.license_key && { licenseKey: settings.license_key }),\n })\n setPdfInstance(instance)\n }\n loadDocument()\n\n return () => {\n PSPDFKitWeb.unload(container && container.current)\n }\n }, [activePdfFileUrl, settings, container])\n\n const setToolbarDropdownVisibility = visible => {\n setToolbarDropdownVisible(visible)\n }\n\n // 1- we need to set a min-width to allow pdf re render. This a pspdfkit\n // limitation. If we don´t do this, in the moment we open the sidebar and hide\n // the file, the component crash\n\n // 2 - container is absolute to solve issue on safari. pspdfkit inject a div\n // with 100% of height does not work on safari\n return (\n \n \n \n \n {toolbarDropdownVisible && (\n \n )}\n \n \n )\n}\n","import { Heading, CoverImage, TitleBar } from '@redriverpress/system'\nimport { usePrintContext } from '../context/print'\n\n/**\n * [1]:\n * Forcing the z-index of the title bar because the MenuWrapper (Menu.js)\n * needs to sit at z-index 1 in order for its box shadow to be layered\n * over top of the PSPDFKit iframe\n */\nexport default function PrintTitleBar() {\n const [{ lesson, backUrl }] = usePrintContext()\n const goBack = () => {\n window.location.href = backUrl\n }\n\n return (\n null}\n showInfo={false}\n style={{ zIndex: 2 }} // [1]\n >\n \n \n {lesson.title}\n \n \n )\n}\n","import { Fragment } from 'react'\nimport WebFont from 'webfontloader'\nimport { ModalProvider } from 'styled-react-modal'\nimport { createGlobalStyle } from 'styled-components'\nimport { useMediaLayout } from 'use-media'\n\nimport { SidebarGrid, Toaster, mediaQueries } from '@redriverpress/system'\n\nimport ApplicationGrid from 'Common/components/ApplicationGrid'\nimport { ModalBackground } from 'Common/components/modal'\nimport ElliiThemeProvider from 'Common/components/ElliiThemeProvider'\n\nimport Menu from './components/Menu'\nimport Pdf from './components/Pdf'\nimport PrintTitleBar from './components/PrintTitleBar'\nimport { PrintProvider } from './context/print'\n\nconst HideBodyOverflow = createGlobalStyle`\n body {\n overflow: hidden\n }\n`\n\nexport default function App() {\n WebFont.load({\n google: {\n families: ['Open Sans:400italic,300,400,600,600italic,700,700italic'],\n },\n })\n\n const isLg = useMediaLayout(mediaQueries.lg, null)\n\n return (\n \n \n \n \n \n \n \n \n {isLg !== null && (\n \n \n \n \n )}\n \n \n \n \n \n \n )\n}\n","import ReactDOM from 'react-dom'\n\nimport App from '../../lesson/print/App'\n\ndocument.addEventListener('DOMContentLoaded', () => {\n ReactDOM.render(, document.querySelector('#root'))\n})\n"],"sourceRoot":""}