UNPKG

@caspingus/lt

Version:

A utility library of helpers and extensions useful when working with Learnosity APIs.

754 lines (741 loc) 18.1 kB
import { c as p } from "../../extensionsFactory-BHOEyOSK.js"; function m() { } function h(t, i) { const e = q(), d = LRNCKEDITOR.currentInstance.getSelectedHtml().getHtml(), l = LRNCKEDITOR.currentInstance.getData(), o = b(); document.querySelector(".learnosity-question-editor").insertAdjacentHTML("beforeend", o); const r = document.getElementById("lrn__ltd_language"), s = document.getElementById("lrn__ltd_notranslate"); for (let n = 0; n < e.length; n++) { let a; n === 0 && (a = document.createElement("option"), a.value = "", a.text = "--", r.add(a)), a = document.createElement("option"), a.value = e[n].code, a.text = e[n].language, a.setAttribute("data-dir", e[n].direction), r.add(a); } const c = []; c.push(document.querySelector("#ltLanguageModal .lrn-qe-btn-default")), c.push(document.querySelector("#ltLanguageModal .lrn-qe-modal-btn-close")); for (let n = 0; n < c.length; n++) c[n].addEventListener("click", () => { i(d), document.getElementById("ltLanguageModal").remove(); }); document.querySelector("#ltLanguageModal .lrn-qe-btn-primary").addEventListener("click", () => { const n = v(d), a = {}; document.getElementById("ltLanguageModal").remove(), r.selectedIndex > 0 && (a.direction = r.options[r.selectedIndex].getAttribute("data-dir"), a.code = r.options[r.selectedIndex].value), s.checked && (a.noTranslate = !0); const u = f(a, n, d, l); return i(u); }); } function b() { return ` <div class="lrn-qe lrn-qe-modal lt__languageModal" style="display: block;" id="ltLanguageModal"> <div class="lrn-qe-ui"> <div class="lrn-qe-modal-dialog"> <div class="lrn-qe-modal-dialog-inner"> <div class="lrn-qe-modal-header"> <div class="lrn-qe-form-label lrn-qe-h4 lrn-qe-section-header"> <h4 class="lrn-qe-heading">Language support</h4> </div> <button type="button" class="lrn-qe-btn lrn-qe-modal-btn-close" aria-label="Close" tabindex="0"> <span class="lrn-qe-sr-only">Close</span> <span aria-role="presentation" class="lrn-qe-i-cross"></span> </button> </div> <div data-lrn-qe-selector="modal-outlet"> <div class="lrn-qe-modal-content" data-lrn-qe-modal-section="content"> <div class="lrn-qe-form-group-wrapper"> <div class="lrn-qe-form-group"> <p><label class="lrn-qe-label lrn-qe-form-label" for="lrn__ltd_language">Choose language</label></p> <p>Specify the language for different parts of your content to enable accurate reading by screen readers and other accessibility tools.</p> <div class="lrn-qe-custom-select"> <select name="lrn__ltd_language" id="lrn__ltd_language" class="lrn__combobox lrn-qe-select lrn-qe-form-control"></select> </div> </div> <div class="lrn-qe-form-group lrn-qe-padding-sm lt__border lrn-qe-margin-top-md"> <p><input id="lrn__ltd_notranslate" type="checkbox" class="lrn-qe-input"> <label class="lrn-qe-label lrn-qe-form-label lrn-qe-padding-left-xs" for="lrn__ltd_notranslate">Disable translation</label></p> <p>Adding this flag will turn off translation, preventing Google Translate and Author Aide from translating selected text.</p> </div> </div> <p class="lrn-qe-padding-top-sm"><label class="lrn-qe-label lrn-qe-form-label">Removing these settings</label></p> <ul> <li>For words or sentences, highlight the text and use the clear formatting button in the toolbar.</li> <li>For entire paragraph(s), right click anywhere in the text and choose "Remove Style" from the menu.</li> </ul> </div> <div class="lrn-qe-modal-footer"> <ul class="lrn-qe-ul"> <li class="lrn-qe-li lrn-qe-modal-footer-item lrn-qe-float-left"> <button type="button" class="lrn-qe-btn lrn-qe-btn-default"><span>Cancel</span></button> </li>&nbsp; <li class="lrn-qe-li lrn-qe-modal-footer-item"> <button type="button" class="lrn-qe-btn lrn-qe-btn-primary" data-lrn-qe-modal-action="confirm"><span>Apply</span></button> </li> </ul> </div> </div> </div> </div> </div> </div> `; } function f(t, i, e, d) { let l = "", o = ""; if (t?.code && (l += ` lang="${t.code}" dir="${t.direction}"`), t?.noTranslate && (l += ' translate="no"'), i === "block") switch (g(e)) { // Selecting a single line strips the surrounding <p></p>. // We add an empty <p> so that we can add the correct // attributes to the <p> element. case 0: o = `<p${l}>${e}</p><p>&nbsp;</p>`; break; case 1: o = e.replace("<p", `<p${l}`); break; default: o = `<div${l}>${e}</div>`; break; } else d.replace(/&nbsp;/g, "").includes(`<p>${e.replace(/&nbsp;/g, "")}</p>`) ? o = `<div${l}><p>${e}</p></div>` : e.length && (o = `<span${l}>${e}</span>`); return o; } function q() { return [ { language: "Afrikaans", code: "af", direction: "ltr" }, { language: "Albanian", code: "sq", direction: "ltr" }, { language: "Amharic", code: "am", direction: "ltr" }, { language: "Arabic", code: "ar", direction: "rtl" }, { language: "Armenian", code: "hy", direction: "ltr" }, { language: "Azerbaijani", code: "az", direction: "ltr" }, { language: "Basque", code: "eu", direction: "ltr" }, { language: "Belarusian", code: "be", direction: "ltr" }, { language: "Bengali", code: "bn", direction: "ltr" }, { language: "Bosnian", code: "bs", direction: "ltr" }, { language: "Bulgarian", code: "bg", direction: "ltr" }, { language: "Catalan", code: "ca", direction: "ltr" }, { language: "Cebuano", code: "ceb", direction: "ltr" }, { language: "Chichewa", code: "ny", direction: "ltr" }, { language: "Chinese (Simplified)", code: "zh-Hans", direction: "ltr" }, { language: "Chinese (Traditional)", code: "zh-Hant", direction: "ltr" }, { language: "Corsican", code: "co", direction: "ltr" }, { language: "Haitian Creole", code: "ht", direction: "ltr" }, { language: "Croatian", code: "hr", direction: "ltr" }, { language: "Czech", code: "cs", direction: "ltr" }, { language: "Danish", code: "da", direction: "ltr" }, { language: "Dutch", code: "nl", direction: "ltr" }, { language: "English", code: "en", direction: "ltr" }, { language: "Esperanto", code: "eo", direction: "ltr" }, { language: "Estonian", code: "et", direction: "ltr" }, { language: "Finnish", code: "fi", direction: "ltr" }, { language: "French", code: "fr", direction: "ltr" }, { language: "Frisian", code: "fy", direction: "ltr" }, { language: "Galician", code: "gl", direction: "ltr" }, { language: "Georgian", code: "ka", direction: "ltr" }, { language: "German", code: "de", direction: "ltr" }, { language: "Greek", code: "el", direction: "ltr" }, { language: "Gujarati", code: "gu", direction: "ltr" }, { language: "Hausa", code: "ha", direction: "ltr" }, { language: "Hawaiian", code: "haw", direction: "ltr" }, { language: "Hebrew", code: "he", direction: "rtl" }, { language: "Hindi", code: "hi", direction: "ltr" }, { language: "Hmong", code: "hmn", direction: "ltr" }, { language: "Hungarian", code: "hu", direction: "ltr" }, { language: "Icelandic", code: "is", direction: "ltr" }, { language: "Igbo", code: "ig", direction: "ltr" }, { language: "Indonesian", code: "id", direction: "ltr" }, { language: "Irish", code: "ga", direction: "ltr" }, { language: "Italian", code: "it", direction: "ltr" }, { language: "Japanese", code: "ja", direction: "ltr" }, { language: "Javanese", code: "jv", direction: "ltr" }, { language: "Kannada", code: "kn", direction: "ltr" }, { language: "Kazakh", code: "kk", direction: "ltr" }, { language: "Khmer", code: "km", direction: "ltr" }, { language: "Kinyarwanda", code: "rw", direction: "ltr" }, { language: "Korean", code: "ko", direction: "ltr" }, { language: "Kurdish (Kurmanji)", code: "ku", direction: "ltr" }, { language: "Kyrgyz", code: "ky", direction: "ltr" }, { language: "Lao", code: "lo", direction: "ltr" }, { language: "Latin", code: "la", direction: "ltr" }, { language: "Latvian", code: "lv", direction: "ltr" }, { language: "Lithuanian", code: "lt", direction: "ltr" }, { language: "Luxembourgish", code: "lb", direction: "ltr" }, { language: "Macedonian", code: "mk", direction: "ltr" }, { language: "Malagasy", code: "mg", direction: "ltr" }, { language: "Malay", code: "ms", direction: "ltr" }, { language: "Malayalam", code: "ml", direction: "ltr" }, { language: "Maltese", code: "mt", direction: "ltr" }, { language: "Maori", code: "mi", direction: "ltr" }, { language: "Marathi", code: "mr", direction: "ltr" }, { language: "Mongolian", code: "mn", direction: "ltr" }, { language: "Myanmar (Burmese)", code: "my", direction: "ltr" }, { language: "Nepali", code: "ne", direction: "ltr" }, { language: "Norwegian", code: "no", direction: "ltr" }, { language: "Odia", code: "or", direction: "ltr" }, { language: "Pashto", code: "ps", direction: "rtl" }, { language: "Persian", code: "fa", direction: "rtl" }, { language: "Polish", code: "pl", direction: "ltr" }, { language: "Portuguese", code: "pt", direction: "ltr" }, { language: "Punjabi", code: "pa", direction: "ltr" }, { language: "Romanian", code: "ro", direction: "ltr" }, { language: "Russian", code: "ru", direction: "ltr" }, { language: "Samoan", code: "sm", direction: "ltr" }, { language: "Scots Gaelic", code: "gd", direction: "ltr" }, { language: "Serbian Cyrilic", code: "sr-Cyrl", direction: "ltr" }, { language: "Sesotho", code: "st", direction: "ltr" }, { language: "Shona", code: "sn", direction: "ltr" }, { language: "Sindhi", code: "sd", direction: "rtl" }, { language: "Sinhala", code: "si", direction: "ltr" }, { language: "Slovak", code: "sk", direction: "ltr" }, { language: "Slovenian", code: "sl", direction: "ltr" }, { language: "Somali", code: "so", direction: "ltr" }, { language: "Spanish", code: "es", direction: "ltr" }, { language: "Sundanese", code: "su", direction: "ltr" }, { language: "Swahili", code: "sw", direction: "ltr" }, { language: "Swedish", code: "sv", direction: "ltr" }, { language: "Filipino (Tagalog)", code: "tl", direction: "ltr" }, { language: "Tajik", code: "tg", direction: "ltr" }, { language: "Tamil", code: "ta", direction: "ltr" }, { language: "Tatar", code: "tt", direction: "ltr" }, { language: "Telugu", code: "te", direction: "ltr" }, { language: "Thai", code: "th", direction: "ltr" }, { language: "Turkish", code: "tr", direction: "ltr" }, { language: "Turkmen", code: "tk", direction: "ltr" }, { language: "Ukrainian", code: "uk", direction: "ltr" }, { language: "Urdu", code: "ur", direction: "rtl" }, { language: "Uyghur", code: "ug", direction: "rtl" }, { language: "Uzbek", code: "uz", direction: "ltr" }, { language: "Vietnamese", code: "vi", direction: "ltr" }, { language: "Welsh", code: "cy", direction: "ltr" }, { language: "Xhosa", code: "xh", direction: "ltr" }, { language: "Yiddish", code: "yi", direction: "rtl" }, { language: "Yoruba", code: "yo", direction: "ltr" }, { language: "Zulu", code: "zu", direction: "ltr" } ]; } function g(t) { const i = /<p>.*?<\/p>/gs, e = t.match(i); return e ? e.length : 0; } function v(t) { return g(t) <= 1 ? "inline" : "block"; } function y() { return ` /* Learnosity language and no translation styles */ /* Used to see elements inside the rich-text editor that have language or translate styles applied */ .lrn.lrn-author .lt__languageModal { h4 { font-size: 1.43em; } label { font-weight: bold; } input[type="checkbox"] { height: 16px; width: 16px; vertical-align: text-bottom; margin: 0; } .lt__border { border: 1px solid #eaeaea; } } .lrn-qe-form-group-wrapper { .lrn-qe-form-control-ckeditor *[translate], .lrn-qe-form-control-ckeditor *[lang] { border: 2px dashed #696969; padding: 5px; position: relative; } .lrn-qe .lrn-qe-ui div[translate], .lrn-qe .lrn-qe-ui div[lang] { margin-bottom: 1em; p:last-child { margin-bottom: 0; } } .lrn-qe-form-control-ckeditor *[translate]::after, .lrn-qe-form-control-ckeditor *[lang]::after { content: "No translate"; position: absolute; left: 100px; top: 0; transform: translateX(-50%); background-color: #333; color: #fff; padding: 5px; border-radius: 4px; white-space: nowrap; opacity: 0; visibility: hidden; transition: opacity 0.3s; z-index: 10000000; } .lrn-qe-form-control-ckeditor *[lang]::after { content: "Language"; } .lrn-qe-form-control-ckeditor *[translate][lang]::after { content: "No translate and Language"; } /* Show tooltip on hover */ .lrn-qe-form-control-ckeditor *[translate]:hover::after, .lrn-qe-form-control-ckeditor *[lang]:hover::after { opacity: 1; visibility: visible; } /* Force the icon to be the right size */ .lrn-qe-ckeditor-toolbar .cke_button__addlanguageattribute .cke_button__addlanguageattribute_icon { background-position: -3px !important; background-size: 22px !important; } /* Size the "content" textarea and make is resizable */ .lrn-qe .lrn-qe-modal-content .lrn-qe-form-group-wrapper textarea#lrn__ltd_content { resize: vertical; min-height: 4em; } } `; } const x = p("languageTextDirection", m, { addLanguageAttribute: h, getStyles: y }); export { x as languageTextDirection };