{"version":3,"file":"flashcardPreviewForCollections-c04bf669.js","sources":["../../../app/frontend/entrypoints/flashcardPreviewForCollections.js"],"sourcesContent":["// JavaScript for collection print previews\n// Handle both picture only and picture flashcards on the same page\n\n// Constants\n\nconst MAX_PAGES_FOR_PRINTING = 35;\nconst MAX_FLASHCARDS_FOR_PRINTING = 150;\n\n// Helpers\n\nfunction addClassToElements(className, elements) {\n for (let i = 0; i < elements.length; i++) {\n elements[i].classList.add(className);\n }\n}\n\nfunction removeClassFromElements(className, elements) {\n for (let i = 0; i < elements.length; i++) {\n elements[i].classList.remove(className);\n }\n}\n\nconst initialize = (flashcardType) => {\n // Prevent multiple PDFs at the same time\n const printForm = document.getElementById(\n `${flashcardType}-flashcards-print-form`\n );\n printForm.addEventListener('submit', (e) => disableButtonTemporarily(e));\n\n function disableButtonTemporarily(e) {\n if (e.submitter.id === `${flashcardType}-flashcards-pdf-button`) {\n const pdfButton = document.getElementById(\n `${flashcardType}-flashcards-pdf-button`\n );\n\n pdfButton.disabled = true;\n document.getElementById(\n `${flashcardType}-download-message`\n ).style.display = 'block';\n\n window.setTimeout(function () {\n pdfButton.disabled = false;\n }, 4000);\n }\n }\n // End prevent multiple PDFs at the same time\n\n // Characters\n const defaultRadio = document.getElementById('characters_default');\n if (defaultRadio) {\n defaultRadio.addEventListener('change', (e) => changeToDefault());\n }\n\n const readingRadio = document.getElementById('characters_reading');\n if (readingRadio) {\n readingRadio.addEventListener('change', (e) => changeToReading());\n }\n\n const container = document.getElementById('preview-flashcards-container');\n\n function changeToDefault() {\n container.classList.remove('show-reading-text');\n }\n\n function changeToReading() {\n container.classList.add('show-reading-text');\n }\n //\n\n // Border color preview\n const flashcards = document.querySelectorAll(\n `[data-${flashcardType}-flashcard]`\n );\n\n const borderDropdown = document.getElementById(\n `${flashcardType}-border-color`\n );\n\n if (borderDropdown) {\n borderDropdown.addEventListener('change', (e) => {\n removeClassFromElements('border-red', flashcards);\n removeClassFromElements('border-blue', flashcards);\n removeClassFromElements('border-green', flashcards);\n removeClassFromElements('border-purple', flashcards);\n addClassToElements(`border-${e.target.value}`, flashcards);\n });\n }\n // End Border color preview\n\n // Font change handling\n if (flashcardType === 'vocabulary') {\n const changeFontsToBold = () => {\n removeClassFromElements('flashcard-font-handwritten', flashcardTexts);\n addClassToElements('flashcard-font-bold', flashcardTexts);\n };\n\n const changeFontsToHandwritten = () => {\n removeClassFromElements('flashcard-font-bold', flashcardTexts);\n addClassToElements('flashcard-font-handwritten', flashcardTexts);\n };\n\n const flashcardTexts = document.getElementsByClassName('flashcard-text');\n const boldFontRadio = document.getElementById('flashcard_font_regular');\n const handwrittenFontRadio = document.getElementById(\n 'flashcard_font_handwritten'\n );\n\n if (boldFontRadio) {\n boldFontRadio.addEventListener('change', (e) => changeFontsToBold());\n }\n if (handwrittenFontRadio) {\n handwrittenFontRadio.addEventListener('change', (e) =>\n changeFontsToHandwritten()\n );\n }\n }\n // End font change handling\n\n //\n // Hide PDF Button when there are too many pages\n //\n\n const previewFlashcardSelector = `[data-${flashcardType}-flashcard]`;\n\n const pdfButton = document.getElementById(\n `${flashcardType}-flashcards-pdf-button`\n );\n const pdfMessage = document.getElementById(\n `${flashcardType}-flashcards-pdf-too-many-message`\n );\n\n const flashcardSizeInputs = document.querySelectorAll(\n 'input[name=\"flashcard_size\"]'\n );\n\n const getFlashcardCount = () => {\n let count = 0;\n const visibleFlashcard = document.querySelectorAll(\n previewFlashcardSelector\n );\n\n visibleFlashcard.forEach((f) => {\n if (f.style.display !== 'none') {\n count++;\n }\n });\n\n return count;\n };\n\n const selectedFlashcardSize = () => {\n return printForm.querySelector('input[name=\"flashcard_size\"]:checked')\n .value;\n };\n\n const flashcardsPerPage = () => {\n if (selectedFlashcardSize() === 'large') {\n return 1;\n } else if (selectedFlashcardSize() === 'medium') {\n return 4;\n } else {\n return 9;\n }\n };\n\n const printPageCount = () => {\n return Math.ceil(getFlashcardCount() / flashcardsPerPage());\n };\n\n const updatePdfButton = () => {\n if (\n printPageCount() <= MAX_PAGES_FOR_PRINTING &&\n getFlashcardCount() <= MAX_FLASHCARDS_FOR_PRINTING\n ) {\n // enable PDFs\n pdfButton.style.display = 'block';\n pdfMessage.style.display = 'none';\n } else {\n // prevent PDFs\n pdfButton.style.display = 'none';\n pdfMessage.style.display = 'block';\n }\n };\n\n // Update showing PDF button on flashcard size change\n if (flashcardSizeInputs) {\n flashcardSizeInputs.forEach((input) => {\n input.addEventListener('change', (e) => {\n updatePdfButton();\n });\n });\n }\n\n // Set PDF button visibility on page load\n updatePdfButton();\n};\n\nconst pictureOnlyPrintForm = document.getElementById(\n 'picture-only-flashcards-print-form'\n);\n\nif (pictureOnlyPrintForm) {\n initialize('picture-only');\n}\n\nconst vocabularyFlashcardsPrintForm = document.getElementById(\n 'vocabulary-flashcards-print-form'\n);\n\nif (vocabularyFlashcardsPrintForm) {\n initialize('vocabulary');\n}\n"],"names":["addClassToElements","className","elements","i","removeClassFromElements","initialize","flashcardType","printForm","e","disableButtonTemporarily","pdfButton","defaultRadio","changeToDefault","readingRadio","changeToReading","container","flashcards","borderDropdown","changeFontsToBold","flashcardTexts","changeFontsToHandwritten","boldFontRadio","handwrittenFontRadio","previewFlashcardSelector","pdfMessage","flashcardSizeInputs","getFlashcardCount","count","f","selectedFlashcardSize","flashcardsPerPage","printPageCount","updatePdfButton","input","pictureOnlyPrintForm","vocabularyFlashcardsPrintForm"],"mappings":"AAUA,SAASA,EAAmBC,EAAWC,EAAU,CAC/C,QAASC,EAAI,EAAGA,EAAID,EAAS,OAAQC,IACnCD,EAASC,CAAC,EAAE,UAAU,IAAIF,CAAS,CAEvC,CAEA,SAASG,EAAwBH,EAAWC,EAAU,CACpD,QAASC,EAAI,EAAGA,EAAID,EAAS,OAAQC,IACnCD,EAASC,CAAC,EAAE,UAAU,OAAOF,CAAS,CAE1C,CAEA,MAAMI,EAAcC,GAAkB,CAEpC,MAAMC,EAAY,SAAS,eACzB,GAAGD,CAAa,wBACpB,EACEC,EAAU,iBAAiB,SAAWC,GAAMC,EAAyBD,CAAC,CAAC,EAEvE,SAASC,EAAyBD,EAAG,CACnC,GAAIA,EAAE,UAAU,KAAO,GAAGF,CAAa,yBAA0B,CAC/D,MAAMI,EAAY,SAAS,eACzB,GAAGJ,CAAa,wBACxB,EAEMI,EAAU,SAAW,GACrB,SAAS,eACP,GAAGJ,CAAa,mBACxB,EAAQ,MAAM,QAAU,QAElB,OAAO,WAAW,UAAY,CAC5BI,EAAU,SAAW,EACtB,EAAE,GAAI,CACR,CACF,CAID,MAAMC,EAAe,SAAS,eAAe,oBAAoB,EAC7DA,GACFA,EAAa,iBAAiB,SAAWH,GAAMI,EAAiB,CAAA,EAGlE,MAAMC,EAAe,SAAS,eAAe,oBAAoB,EAC7DA,GACFA,EAAa,iBAAiB,SAAWL,GAAMM,EAAiB,CAAA,EAGlE,MAAMC,EAAY,SAAS,eAAe,8BAA8B,EAExE,SAASH,GAAkB,CACzBG,EAAU,UAAU,OAAO,mBAAmB,CAC/C,CAED,SAASD,GAAkB,CACzBC,EAAU,UAAU,IAAI,mBAAmB,CAC5C,CAID,MAAMC,EAAa,SAAS,iBAC1B,SAASV,CAAa,aAC1B,EAEQW,EAAiB,SAAS,eAC9B,GAAGX,CAAa,eACpB,EAcE,GAZIW,GACFA,EAAe,iBAAiB,SAAWT,GAAM,CAC/CJ,EAAwB,aAAcY,CAAU,EAChDZ,EAAwB,cAAeY,CAAU,EACjDZ,EAAwB,eAAgBY,CAAU,EAClDZ,EAAwB,gBAAiBY,CAAU,EACnDhB,EAAmB,UAAUQ,EAAE,OAAO,KAAK,GAAIQ,CAAU,CAC/D,CAAK,EAKCV,IAAkB,aAAc,CAClC,MAAMY,EAAoB,IAAM,CAC9Bd,EAAwB,6BAA8Be,CAAc,EACpEnB,EAAmB,sBAAuBmB,CAAc,CAC9D,EAEUC,EAA2B,IAAM,CACrChB,EAAwB,sBAAuBe,CAAc,EAC7DnB,EAAmB,6BAA8BmB,CAAc,CACrE,EAEUA,EAAiB,SAAS,uBAAuB,gBAAgB,EACjEE,EAAgB,SAAS,eAAe,wBAAwB,EAChEC,EAAuB,SAAS,eACpC,4BACN,EAEQD,GACFA,EAAc,iBAAiB,SAAWb,GAAMU,EAAmB,CAAA,EAEjEI,GACFA,EAAqB,iBAAiB,SAAWd,GAC/CY,EAA0B,CAClC,CAEG,CAOD,MAAMG,EAA2B,SAASjB,CAAa,cAEjDI,EAAY,SAAS,eACzB,GAAGJ,CAAa,wBACpB,EACQkB,EAAa,SAAS,eAC1B,GAAGlB,CAAa,kCACpB,EAEQmB,EAAsB,SAAS,iBACnC,8BACJ,EAEQC,EAAoB,IAAM,CAC9B,IAAIC,EAAQ,EAKZ,OAJyB,SAAS,iBAChCJ,CACN,EAEqB,QAASK,GAAM,CAC1BA,EAAE,MAAM,UAAY,QACtBD,GAER,CAAK,EAEMA,CACX,EAEQE,EAAwB,IACrBtB,EAAU,cAAc,sCAAsC,EAClE,MAGCuB,EAAoB,IACpBD,EAAuB,IAAK,QACvB,EACEA,EAAuB,IAAK,SAC9B,EAEA,EAILE,EAAiB,IACd,KAAK,KAAKL,EAAiB,EAAKI,EAAmB,CAAA,EAGtDE,EAAkB,IAAM,CAE1BD,EAAgB,GAAI,IACpBL,EAAmB,GAAI,KAGvBhB,EAAU,MAAM,QAAU,QAC1Bc,EAAW,MAAM,QAAU,SAG3Bd,EAAU,MAAM,QAAU,OAC1Bc,EAAW,MAAM,QAAU,QAEjC,EAGMC,GACFA,EAAoB,QAASQ,GAAU,CACrCA,EAAM,iBAAiB,SAAWzB,GAAM,CACtCwB,GACR,CAAO,CACP,CAAK,EAIHA,GACF,EAEME,EAAuB,SAAS,eACpC,oCACF,EAEIA,GACF7B,EAAW,cAAc,EAG3B,MAAM8B,EAAgC,SAAS,eAC7C,kCACF,EAEIA,GACF9B,EAAW,YAAY"}