scratch
//quickload/js/trumbowyg/langs/ar.min.js |
---|
@@ -0,0 +1,11 @@ |
/* =========================================================== |
* ar.js |
* Arabic translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Abo Mokh ahmed (abomokhahmed) |
* Github : https://github.com/abomokhahmed |
* Reviewed by : Abdellah Chadidi (chadidi) |
* Github : https://github.com/chadidi |
*/ |
jQuery.trumbowyg.langs.ar={_dir:"rtl",viewHTML:"إعرض-HTML",undo:"تراجع",redo:"إعادة",formatting:"تنسيق",p:"فقرة",blockquote:"اقتباس",code:"كود",header:"رأس",bold:"عريض",italic:"مائل",strikethrough:"مشطوب",underline:"خطّ سفلي",strong:"بارز",em:"تغميق",del:"حذف",superscript:"الأس",subscript:"أس سفلي",unorderedList:"قائمة غير مرتّبة",orderedList:"قائمة مرتّبة",insertImage:"إدراج صورة",insertVideo:"إدراج فيديو",link:"رابط",createLink:"انشاء رابط",unlink:"حذف رابط",justifyLeft:"تصحيح للشمال",justifyCenter:"توسيط",justifyRight:"تصحيح لليمين",justifyFull:"تصحيح لكلا الإتّجاهين",horizontalRule:"إدراج خطّ أفقي",fullscreen:"ملء الشاشة",close:"إغلاق",submit:"إرسال",reset:"إعادة تعيين",required:"إلزامي",description:"وصف",title:"عنوان",text:"نصّ",target:"الهدف"}; |
//quickload/js/trumbowyg/langs/bg.min.js |
---|
@@ -0,0 +1,8 @@ |
/* =========================================================== |
* bg.js |
* Bulgarian translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Aleksandar Dimitrov |
*/ |
jQuery.trumbowyg.langs.bg={viewHTML:"Прегледай HTML",formatting:"Форматиране",p:"Параграф",blockquote:"Цитат",code:"Код",header:"Заглавие",bold:"Удебелен",italic:"Наклонен",strikethrough:"Зачеркнат",underline:"Подчертан",strong:"Удебелен",em:"Наклонен",del:"Зачеркнат",unorderedList:"Обикновен списък",orderedList:"Номериран списък",insertImage:"Добави изображение",insertVideo:"Добави видео",link:"Връзка",createLink:"Създай връзка",unlink:"Премахни връзката",justifyLeft:"Подравни от ляво",justifyCenter:"Центрирай",justifyRight:"Подравни от дясно",justifyFull:"Подравни по ширина",horizontalRule:"Хоризонтална линия",fullscreen:"На цял екран",close:"Затвори",submit:"Впиши",reset:"Отмени",required:"Задължително",description:"Описание",title:"Заглавие",text:"Текст"}; |
//quickload/js/trumbowyg/langs/ca.min.js |
---|
@@ -0,0 +1,11 @@ |
/* =========================================================== |
* ca.js |
* Catalan translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Àlfons Sánchez (alsanan) |
* Twitter : @alsanan |
* Website : about.me/alsanan |
* Github : https://github.com/alsanan |
*/ |
jQuery.trumbowyg.langs.ca={viewHTML:"Veure HTML",formatting:"Formatar",p:"Paragraf",blockquote:"Citació",code:"Codi",header:"Títol",bold:"Negreta",italic:"Itàlica",strikethrough:"Suprimir",underline:"Subratllat",strong:"Forta",em:"Èmfasi",del:"Apagar",unorderedList:"Lista desordenada",orderedList:"Lista ordenada",insertImage:"Inserir imatge",insertVideo:"Inserir vídeo",link:"Enllaç",createLink:"Crear un enllaç",unlink:"Eliminar enllaç",justifyLeft:"Alinear a esquerra",justifyCenter:"Centrar",justifyRight:"Alinear a dreta",justifyFull:"Justificar",horizontalRule:"Inserir separador horitzontal",fullscreen:"Pantalla completa",close:"Tancar",submit:"Enviar",reset:"Reiniciar",required:"Obligatori",description:"Descripció",title:"Títol",text:"Text"}; |
//quickload/js/trumbowyg/langs/cs.min.js |
---|
@@ -0,0 +1,8 @@ |
/* =========================================================== |
* cs.js |
* Czech translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Jan Svoboda (https://github.com/svoboda-jan) |
*/ |
jQuery.trumbowyg.langs.cs={viewHTML:"Zobrazit HTML",formatting:"Formátování",p:"Odstavec",blockquote:"Citace",code:"Kód",header:"Nadpis",bold:"Tučné",italic:"Kurzíva",strikethrough:"Přeškrtnuté",underline:"Podtržené",strong:"Tučné",em:"Zvýraznit",del:"Smazat",unorderedList:"Netříděný seznam",orderedList:"Tříděný seznam",insertImage:"Vložit obrázek",insertVideo:"Vložit video",link:"Odkaz",createLink:"Vložit odkaz",unlink:"Smazat odkaz",justifyLeft:"Zarovnat doleva",justifyCenter:"Zarovnat na střed",justifyRight:"Zarovnat doprava",justifyFull:"Zarovnat do bloku",horizontalRule:"Vložit vodorovnou čáru",fullscreen:"Režim celé obrazovky",close:"Zavřít",submit:"Potvrdit",reset:"Zrušit",required:"Povinné",description:"Popis",title:"Nadpis",text:"Text"}; |
//quickload/js/trumbowyg/langs/da.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* da.js |
* Danish translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Christian Pedersen |
* Github : https://github.com/chripede |
*/ |
jQuery.trumbowyg.langs.da={viewHTML:"Vis HTML",formatting:"Formatter",p:"Afsnit",blockquote:"Citat",code:"Kode",header:"Overskrift",bold:"Fed",italic:"Kursiv",strikethrough:"Gennemstreg",underline:"Understreg",strong:"Vigtig",em:"Fremhæv",del:"Slettet",unorderedList:"Uordnet liste",orderedList:"Ordnet liste",insertImage:"Indsæt billede",insertVideo:"Indsæt video",link:"Link",createLink:"Indsæt link",unlink:"Fjern link",justifyLeft:"Venstrestil",justifyCenter:"Centrer",justifyRight:"Højrestil",justifyFull:"Lige margener",horizontalRule:"Horisontal linie",fullscreen:"Fuld skærm",close:"Luk",submit:"Bekræft",reset:"Annuller",required:"Påkrævet",description:"Beskrivelse",title:"Titel",text:"Tekst"}; |
//quickload/js/trumbowyg/langs/de.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* de.js |
* German translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Manfred Timm |
* Github : https://github.com/Manfred62 |
*/ |
jQuery.trumbowyg.langs.de={viewHTML:"HTML anzeigen",formatting:"Formatieren",p:"Absatz",blockquote:"Zitat",code:"Code",header:"Überschrift",bold:"Fett",italic:"Kursiv",strikethrough:"Durchgestrichen",underline:"Unterstrichen",strong:"Wichtig",em:"Betont",del:"Gelöscht",unorderedList:"Ungeordnete Liste",orderedList:"Geordnete Liste",insertImage:"Bild einfügen",insertVideo:"Video einfügen",link:"Link",createLink:"Link einfügen",unlink:"Link entfernen",justifyLeft:"Links ausrichten",justifyCenter:"Zentrieren",justifyRight:"Rechts ausrichten",justifyFull:"Blocksatz",horizontalRule:"Horizontale Linie einfügen",fullscreen:"Vollbild",close:"Schliessen",submit:"Bestätigen",reset:"Rücksetzen",required:"Erforderlich",description:"Beschreibung",title:"Titel",text:"Text"}; |
//quickload/js/trumbowyg/langs/el.min.js |
---|
@@ -0,0 +1,12 @@ |
/* =========================================================== |
* el.js |
* Greek translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Merianos Nikos |
* Twitter : @_webresources |
* Website : http://www.wp-lion.com |
* LinkedIn: https://gr.linkedin.com/in/merianosnikos |
* Behance: https://www.behance.net/web_design_blog |
*/ |
jQuery.trumbowyg.langs.es={viewHTML:"Προβολή κώδικα HTML",formatting:"Μορφοποίηση",p:"Παράγραφος",blockquote:"Παράθεση",code:"Κώδικας",header:"Επικεφαλίδα",bold:"Έντονα",italic:"Πλάγια",strikethrough:"Διαγραφή",underline:"Υπογράμμιση",strong:"Έντονα",em:"Πλάγια",del:"Διαγραφή",unorderedList:"Αταξινόμητη λίστα",orderedList:"Ταξινομημένη λίστα",insertImage:"Εισαγωγή εικόνας",insertVideo:"Εισαγωγή βίντεο",link:"Σύνδεσμος",createLink:"Δημιουργία συνδέσμου",unlink:"Διαγραφή συνδέσμου",justifyLeft:"Στοίχιση αριστερά",justifyCenter:"Στοίχιση στο κέντρο",justifyRight:"Στοίχιση δεξιά",justifyFull:"Πλήρης στοίχιση",horizontalRule:"Οριζόντια γραμμή",fullscreen:"Πλήρης οθόνη",close:"Κλείσιμο",submit:"Υποβολή",reset:"Επαναφορά",required:"Απαραίτητο",description:"Περιγραφή",title:"Τίτλος",text:"Κείμενο"}; |
//quickload/js/trumbowyg/langs/es.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* es.js |
* Spanish translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Moisés Márquez |
* Email : moises.marquez.g@gmail.com |
*/ |
jQuery.trumbowyg.langs.es={viewHTML:"Ver HTML",undo:"Desfazer",redo:"Refazer",formatting:"Formato",p:"Párrafo",blockquote:"Cita",code:"Código",header:"Título",bold:"Negrita",italic:"Cursiva",strikethrough:"Tachado",underline:"Subrayado",strong:"Negrita",em:"Énfasis",del:"Borrar",superscript:"Sobrescrito",subscript:"Subíndice",unorderedList:"Lista Desordenada",orderedList:"Lista Ordenada",insertImage:"Insertar una imagen",insertVideo:"Insertar un vídeo",link:"Enlace",createLink:"Insertar un enlace",unlink:"Suprimir un enlace",justifyLeft:"Izquierda",justifyCenter:"Centrar",justifyRight:"Derecha",justifyFull:"Justificado",horizontalRule:"Insertar separador horizontal",removeformat:"Eliminar formato",fullscreen:"Pantalla completa",close:"Cerrar",submit:"Enviar",reset:"Cancelar",required:"Obligatorio",description:"Descripción",title:"Título",text:"Texto",target:"Target"}; |
//quickload/js/trumbowyg/langs/es_ar.min.js |
---|
@@ -0,0 +1,10 @@ |
/* =========================================================== |
* es_ar.js |
* Spanish (Argentina) translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Félix Vera |
* Email : felix.vera@gmail.com |
*/ |
// jshint camelcase:false |
jQuery.trumbowyg.langs.es_ar={viewHTML:"Ver HTML",formatting:"Formato",p:"Párrafo",blockquote:"Cita",code:"Código",header:"Título",bold:"Negrita",italic:"Itálica",strikethrough:"Tachado",underline:"Subrayado",strong:"Fuere",em:"Énfasis",del:"Borrar",unorderedList:"Lista Desordenada",orderedList:"Lista Ordenada",insertImage:"Insertar una imagen",insertVideo:"Insertar un video",link:"Vínculo",createLink:"Insertar un vínculo",unlink:"Suprimir un vínculo",justifyLeft:"Alinear a la Izquierda",justifyCenter:"Centrar",justifyRight:"Alinear a la Derecha",justifyFull:"Justificado",horizontalRule:"Insertar separado Horizontal",fullscreen:"Pantalla Completa",close:"Cerrar",submit:"Enviar",reset:"Cancelar",required:"Obligatorio",description:"Descripción",title:"Título",text:"Texto"}; |
//quickload/js/trumbowyg/langs/fa.min.js |
---|
@@ -0,0 +1,10 @@ |
/* =========================================================== |
* fa.js |
* Persian translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Kiarash Soleimanzadeh |
* Github : https://github.com/kiyarash |
* Email : kiarash.s@hotmail.com |
*/ |
jQuery.trumbowyg.langs.fa={viewHTML:"نمایش کد اچ تی ام ال",formatting:"قالب بندی",p:"پاراگراف",blockquote:"نقل قول",code:"کد",header:"سر تیتر",bold:"ضخیم",italic:"مورب",strikethrough:"میان خط دار",underline:"زیر خط دار",strong:"برجسته",em:"مورب",del:"حذف شده",unorderedList:"لیست نامرتب",orderedList:"لیست مرتب",insertImage:"درج تصویر",insertVideo:"درج ویدئو",link:"لینک",createLink:"درج لینک",unlink:"حذف لینک",justifyLeft:"تراز به چپ",justifyCenter:"تراز به وسط",justifyRight:"تراز به راست",justifyFull:"تراز به چپ و راست",horizontalRule:"درج خط افقی",fullscreen:"تمام صفحه",close:"بستن",submit:"تائید",reset:"انصراف",required:"اجباری",description:"توضیحات",title:"عنوان",text:"متن"}; |
//quickload/js/trumbowyg/langs/fi.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* fi.js |
* Finnish translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Teppo Koivula (teppokoivula) |
* Github : https://github.com/teppokoivula |
*/ |
jQuery.trumbowyg.langs.fi={viewHTML:"Näytä HTML",undo:"Kumoa",redo:"Tee uudelleen",formatting:"Muotoilu",p:"Kappale",blockquote:"Lainaus",code:"Koodi",header:"Otsikko",bold:"Lihavointi",italic:"Kursivointi",strikethrough:"Yliviivaus",underline:"Allevivaus",strong:"Vahvennus",em:"Painotus",del:"Poistettu",unorderedList:"Luettelo",orderedList:"Numeroitu luettelo",insertImage:"Lisää kuva",insertVideo:"Lisää video",link:"Linkki",createLink:"Luo linkki",unlink:"Poista linkki",justifyLeft:"Tasaa vasemmalle",justifyCenter:"Keskitä",justifyRight:"Tasaa oikealle",justifyFull:"Tasaa",horizontalRule:"Vaakaviiva",fullscreen:"Kokoruutu",close:"Sulje",submit:"Lisää",reset:"Palauta",required:"Pakollinen",description:"Kuvaus",title:"Otsikko",text:"Teksti"}; |
//quickload/js/trumbowyg/langs/fr.min.js |
---|
@@ -0,0 +1,10 @@ |
/* =========================================================== |
* fr.js |
* French translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
jQuery.trumbowyg.langs.fr={viewHTML:"Voir le HTML",undo:"Annuler",redo:"Refaire",formatting:"Format",p:"Paragraphe",blockquote:"Citation",code:"Code",header:"Titre",bold:"Gras",italic:"Italique",strikethrough:"Rayé",underline:"Souligné",strong:"Fort",em:"Emphase",del:"Supprimé",superscript:"Exposant",subscript:"Indice",unorderedList:"Liste à puces",orderedList:"Liste ordonnée",insertImage:"Insérer une image",insertVideo:"Insérer une video",link:"Lien",createLink:"Insérer un lien",unlink:"Supprimer le lien",justifyLeft:"Aligner à gauche",justifyCenter:"Centrer",justifyRight:"Aligner à droite",justifyFull:"Justifier",horizontalRule:"Insérer un séparateur horizontal",removeformat:"Supprimer formatage",fullscreen:"Plein écran",close:"Fermer",submit:"Valider",reset:"Annuler",required:"Obligatoire",description:"Description",title:"Titre",text:"Texte",target:"Cible"}; |
//quickload/js/trumbowyg/langs/he.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* he.js |
* Hebrew translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Udi Doron (udidoron) |
* Github : https://github.com/udidoron |
*/ |
jQuery.trumbowyg.langs.he={_dir:"rtl",viewHTML:"צפה ב-HTML",formatting:"פורמט",p:"פסקה",blockquote:"ציטוט",code:"קוד",header:"ראשית",bold:"מודגש",italic:"נטוי",strikethrough:"קו חוצה",underline:"קו תחתון",strong:"בולט",em:"הדגשה",del:"נמחק",unorderedList:"רשימה ללא סדר",orderedList:"רשימה מסודרת",insertImage:"הכנס תמונה",insertVideo:"הכנס סרטון",link:"קישור",createLink:"צור קישור",unlink:"הסר קישור",justifyLeft:"ישר לשמאל",justifyCenter:"מרכז",justifyRight:"ישר לימין",justifyFull:"ישר לשני הצדדים",horizontalRule:"הכנס קו אופקי",fullscreen:"מסך מלא",close:"סגור",submit:"שלח",reset:"אתחל מחדש",required:"נחוץ",description:"תיאור",title:"כותרת",text:"טקסט"}; |
//quickload/js/trumbowyg/langs/hr.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* hr.js |
* Croatian translation for Trumbowyg |
* https://www.github.com/Buda9 |
* =========================================================== |
* Author : Davor Budimir (https://www.github.com/Buda9) |
*/ |
// jshint camelcase:false |
jQuery.trumbowyg.langs.hr={viewHTML:"Poglеdaj HTML kód",formatting:"Formatiranjе",p:"Odlomak",blockquote:"Citat",code:"Kód",header:"Zaglavlje",bold:"Podеbljano",italic:"NakoÅ¡eno",strikethrough:"Prеcrtano",underline:"PodvuÄеno",strong:"Podеbljano",em:"Istaknuto",del:"Obrisano",unorderedList:"NeureÄ‘en popis",orderedList:"UreÄ‘en popis",insertImage:"Dodaj sliku",insertVideo:"Dodaj vidеo",link:"Povezica",createLink:"Dodaj povezicu",unlink:"Ukloni povezicu",justifyLeft:"Lijеvo poravnanjе",justifyCenter:"SrediÅ¡nje poravnanjе",justifyRight:"Dеsno poravnanjе",justifyFull:"Obostrano poravnanjе",horizontalRule:"Horizontalna crta",fullscreen:"Puni zaslon",close:"Zatvori",submit:"Unеsi",reset:"Otkaži",required:"Obavеzno poljе",description:"Opis",title:"Naslov",text:"Tеkst"}; |
//quickload/js/trumbowyg/langs/hu.min.js |
---|
@@ -0,0 +1,10 @@ |
/* =========================================================== |
* hu.js |
* Hungarian translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Peter MATO |
* Web: http://fixme.hu |
* GitHub: https://github.com/matopeter |
*/ |
jQuery.trumbowyg.langs.hu={viewHTML:"HTML nézet",formatting:"Stílusok",p:"Bekezdés",blockquote:"Idézet",code:"Kód",header:"Címsor",bold:"Félkövér",italic:"Dőlt",strikethrough:"Áthúzott",underline:"Aláhúzott",strong:"Vastag",em:"Kiemelt",del:"Törölt",unorderedList:"Felsorolás",orderedList:"Számozás",insertImage:"Kép beszúrása",insertVideo:"Video beszúrása",link:"Link",createLink:"Link létrehozása",unlink:"Link eltávolítása",justifyLeft:"Balra igazítás",justifyCenter:"Középre igazítás",justifyRight:"Jobbra igazítás",justifyFull:"Sorkizárt",horizontalRule:"Vízszintes vonal",fullscreen:"Teljes képernyő",close:"Bezár",submit:"Beküldés",reset:"Alaphelyzet",required:"Kötelező",description:"Leírás",title:"Cím",text:"Szöveg",removeformat:"Formázás eltávolítása"}; |
//quickload/js/trumbowyg/langs/id.min.js |
---|
@@ -0,0 +1,11 @@ |
/* =========================================================== |
* id.js |
* Indonesian translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Rezha Julio (kimiamania) |
* Twitter : @kimiamania |
* Website : http://rezhajulio.web.id |
* Github : https://github.com/kimiamania |
*/ |
jQuery.trumbowyg.langs.id={viewHTML:"Lihat HTML",formatting:"Penyusunan",p:"Paragraf",blockquote:"Kutipan",code:"Kode",header:"Kepala",bold:"Tebal",italic:"Miring",strikethrough:"Coret",underline:"Garis bawah",strong:"Tebal",em:"Miring",del:"Dicoret",unorderedList:"Daftar tak teratur",orderedList:"Daftar teratur",insertImage:"Sisipkan gambar",insertVideo:"Sisipkan video",link:"Tautan",createLink:"Sisipkan Tautan",unlink:"Singkirkan tautan",justifyLeft:"Rata kiri",justifyCenter:"Rata Tengah",justifyRight:"Rata kanan",justifyFull:"Rata kiri dan kanan",horizontalRule:"Sisipkan garis mendatar",fullscreen:"Layar penuh",close:"Tutup",submit:"Setuju",reset:"Batal",required:"Diperlukan",description:"Deskripsi",title:"Judul",text:"Teks"}; |
//quickload/js/trumbowyg/langs/it.min.js |
---|
@@ -0,0 +1,8 @@ |
/* =========================================================== |
* it.js |
* Italian translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Mirko Buffoni |
*/ |
jQuery.trumbowyg.langs.it={viewHTML:"Mostra HTML",formatting:"Formattazione",p:"Paragrafo",blockquote:"Citazione",code:"Codice",header:"Intestazione",bold:"Grassetto",italic:"Italico",strikethrough:"Barrato",underline:"Sottolineato",strong:"Rafforza",em:"Enfatizza",del:"Cancella",unorderedList:"Elenco puntato",orderedList:"Elenco numerato",insertImage:"Inserisci immagine",insertVideo:"Inserisci video",link:"Collegamento",createLink:"Crea un collegamento",unlink:"Elimina collegamento",justifyLeft:"Allinea a sinistra",justifyCenter:"Centra",justifyRight:"Allinea a destra",justifyFull:"Giustifica",horizontalRule:"Inserisci un separatore orizzontale",fullscreen:"Schermo intero",close:"Chiudi",submit:"Invia",reset:"Annulla",required:"Obbligatorio",description:"Descrizione",title:"Titolo",text:"Testo"}; |
//quickload/js/trumbowyg/langs/ja.min.js |
---|
@@ -0,0 +1,10 @@ |
/* =========================================================== |
* ja.js |
* Japanese translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Kouta Fukuhara (foo9) |
* Twitter : @foo9 |
* Website : https://github.com/foo9 |
*/ |
jQuery.trumbowyg.langs.ja={viewHTML:"HTML表示",formatting:"フォーマット",p:"段落",blockquote:"引用",code:"コード",header:"見出し",bold:"太字",italic:"斜体",strikethrough:"取り消し線",underline:"下線",strong:"太字",em:"斜体",del:"取り消し線",unorderedList:"順序なしリスト",orderedList:"順序ありリスト",insertImage:"画像の挿入",insertVideo:"動画の挿入",link:"リンク",createLink:"リンクの作成",unlink:"リンクの削除",justifyLeft:"左揃え",justifyCenter:"中央揃え",justifyRight:"右揃え",justifyFull:"両端揃え",horizontalRule:"横罫線",fullscreen:"全画面表示",close:"閉じる",submit:"送信",reset:"キャンセル",required:"必須",description:"説明",title:"タイトル",text:"テキスト"}; |
//quickload/js/trumbowyg/langs/ko.min.js |
---|
@@ -0,0 +1,10 @@ |
/* =========================================================== |
* ko.js |
* Korean translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : JoongSeob Vito Kim (dorajistyle) |
* Blog : http://dorajistyle.pe.kr |
* Github : https://github.com/dorajistyle |
*/ |
jQuery.trumbowyg.langs.ko={viewHTML:"HTML로 보기",formatting:"양식",p:"문단",blockquote:"인용부호",code:"코드",header:"머릿말",bold:"진하게",italic:"기울임",strikethrough:"취소선",underline:"밑줄",strong:"굵게",em:"강조",del:"취소",unorderedList:"순차 목록",orderedList:"비순차 목록",insertImage:"이미지 넣기",insertVideo:"비디오 넣기",link:"링크",createLink:"링크 넣기",unlink:"링크 없애기",justifyLeft:"왼쪽 정렬",justifyCenter:"가운데 정렬",justifyRight:"오른쪽 정렬",justifyFull:"혼합 정렬",horizontalRule:"가로줄 넣기",fullscreen:"전체 화면",close:"닫기",submit:"전송",reset:"초기화",required:"꼭 입력해야 합니다.",description:"설명",title:"제목",text:"본문 내용"}; |
//quickload/js/trumbowyg/langs/my.min.js |
---|
@@ -0,0 +1,8 @@ |
/* =========================================================== |
* my.js |
* Malaysian translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : JohnPozy |
*/ |
jQuery.trumbowyg.langs.id={viewHTML:"Lihat HTML",formatting:"Pemformatan",p:"Perenggan",blockquote:"Blockquote",code:"Kod",header:"Pengepala",bold:"Tebal",italic:"Condong",strikethrough:"Garis batal",underline:"Garis bawah",strong:"Kuat",em:"Condong",del:"Hapus",unorderedList:"Senarai tidak tertib",orderedList:"Senarai tertib",insertImage:"Masukkan imej",insertVideo:"Masukkan video",link:"Pautan",createLink:"Cipta pautan",unlink:"Hapus pautan",justifyLeft:"Mengimbangkan ke kiri",justifyCenter:"Mengimbangkan ke tengah",justifyRight:"Mengimbangkan ke kanan",justifyFull:"Mengimbangkan ke kiri dan kanan",horizontalRule:"Masukkan garis mendatar",fullscreen:"Skrin penuh",close:"Tutup",submit:"Hantar",reset:"Batal",required:"Diperlukan",description:"Perihal",title:"Tajuk",text:"Teks"}; |
//quickload/js/trumbowyg/langs/nl.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* nl.js |
* Dutch translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Danny Hiemstra |
* Github : https://github.com/dhiemstra |
*/ |
jQuery.trumbowyg.langs.nl={viewHTML:"HTML bekijken",formatting:"Opmaak",p:"Paragraaf",blockquote:"Citaat",code:"Code",header:"Kop",bold:"Vet",italic:"Cursief",strikethrough:"Doorhalen",underline:"Onderlijnen",strong:"Sterk",em:"Nadruk",del:"Verwijderd",unorderedList:"Ongenummerde lijst",orderedList:"Genummerde lijst",insertImage:"Afbeelding invoegen",insertVideo:"Video invoegen",link:"Link",createLink:"Link maken",unlink:"Link verwijderen",justifyLeft:"Links uitlijnen",justifyCenter:"Centreren",justifyRight:"Rechts uitlijnen",justifyFull:"Uitvullen",horizontalRule:"Horizontale lijn",removeFormat:"Opmaak verwijderen",fullscreen:"Volledig scherm",close:"Sluiten",submit:"Verzenden",reset:"Herstellen",required:"Verplicht",description:"Omschrijving",title:"Titel",text:"Tekst"}; |
//quickload/js/trumbowyg/langs/no_nb.min.js |
---|
@@ -0,0 +1,10 @@ |
/* =========================================================== |
* no_nb.js |
* Norwegian Bokmål translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Jon Severin Eivik Jakobsen |
* Github : https://github.com/jsejakobsen |
*/ |
// jshint camelcase:false |
jQuery.trumbowyg.langs.no_nb={viewHTML:"Vis HTML",formatting:"Formater",p:"Avsnitt",blockquote:"Sitat",code:"Kode",header:"Overskrift",bold:"Fet",italic:"Kursiv",strikethrough:"Gjennomstreking",underline:"Understreking",strong:"Viktig",em:"Fremhevet",del:"Slettet",unorderedList:"Uordnet liste",orderedList:"Ordnet liste",insertImage:"Sett inn bilde",insertVideo:"Sett inn video",link:"Lenke",createLink:"Sett inn lenke",unlink:"Fjern lenke",justifyLeft:"Venstrejuster",justifyCenter:"Midtstill",justifyRight:"Høyrejuster",justifyFull:"Blokkjuster",horizontalRule:"Horisontal linje",fullscreen:"Full skjerm",close:"Lukk",submit:"Bekreft",reset:"Avbryt",required:"Påkrevd",description:"Beskrivelse",title:"Tittel",text:"Tekst"}; |
//quickload/js/trumbowyg/langs/ph.min.js |
---|
@@ -0,0 +1,8 @@ |
/* =========================================================== |
* ph.js |
* Filipino translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : @leogono |
*/ |
jQuery.trumbowyg.langs.ph={viewHTML:"Tumingin sa HTML",formatting:"Formatting",p:"Talata",blockquote:"Blockquote",code:"Kowd",header:"Header",bold:"Makapal",italic:"Hilig",strikethrough:"Strikethrough",underline:"Salungguhit",strong:"Malakas",em:"Hilig",del:"Tinanggal",unorderedList:"Hindi nakahanay na listahan",orderedList:"Nakahanay na listahan",insertImage:"Ilagay ang larawan",insertVideo:"Ilagay ang video",link:"Koneksyon",createLink:"Iugnay",unlink:"Tanggalin ang koneksyon",justifyLeft:"Ihanay sa kaliwa",justifyCenter:"Ihanay sa gitna",justifyRight:"Ihanay sa kanan",justifyFull:"Ihanay sa kaliwa at kanan",horizontalRule:"Pahalang na linya",fullscreen:"Fullscreen",close:"Isara",submit:"Ipasa",reset:"I-reset",required:"Kailangan",description:"Paglalarawan",title:"Pamagat",text:"Teksto"}; |
//quickload/js/trumbowyg/langs/pl.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* pl.js |
* Polish translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Paweł Abramowicz |
* Github : https://github.com/pawelabrams |
*/ |
jQuery.trumbowyg.langs.pl={viewHTML:"Pokaż HTML",formatting:"Format",p:"Akapit",blockquote:"Cytat",code:"Kod",header:"Nagłówek",bold:"Pogrubienie",italic:"Pochylenie",strikethrough:"Przekreślenie",underline:"Podkreślenie",strong:"Wytłuszczenie",em:"Uwydatnienie",del:"Usunięte",unorderedList:"Lista nieuporządkowana",orderedList:"Lista uporządkowana",insertImage:"Wstaw obraz",insertVideo:"Wstaw film",link:"Link",createLink:"Wstaw link",unlink:"Usuń link",justifyLeft:"Wyrównaj do lewej",justifyCenter:"Wyśrodkuj",justifyRight:"Wyrównaj do prawej",justifyFull:"Wyjustuj",horizontalRule:"Odkreśl linią",fullscreen:"Pełny ekran",close:"Zamknij",submit:"Zastosuj",reset:"Przywróć",required:"Wymagane",description:"Opis",title:"Tytuł",text:"Tekst"}; |
//quickload/js/trumbowyg/langs/pt.min.js |
---|
@@ -0,0 +1,11 @@ |
/* =========================================================== |
* pt.js |
* Portuguese translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Ramiro Varandas Jr (ramirovjr) |
* Twitter : @ramirovjnr |
* Website : about.me/ramirovjnr |
* Github : https://github.com/ramirovjr |
*/ |
jQuery.trumbowyg.langs.pt={viewHTML:"Ver HTML",undo:"Desfazer",redo:"Refazer",formatting:"Formatar",p:"Paragráfo",blockquote:"Citação",code:"Código",header:"Título",bold:"Negrito",italic:"Itálico",strikethrough:"Suprimir",underline:"Sublinhado",strong:"Negrito",em:"Ênfase",del:"Apagar",superscript:"Sobrescrito",subscript:"Subscrito",unorderedList:"Lista não ordenada",orderedList:"Lista ordenada",insertImage:"Inserir imagem",insertVideo:"Inserir vídeo",link:"Link",createLink:"Criar um link",unlink:"Remover link",justifyLeft:"Alinhar a esquerda",justifyCenter:"Centralizar",justifyRight:"Alinhar a direita",justifyFull:"Justificar",horizontalRule:"Inserir separador horizontal",removeformat:"Remover formatação",fullscreen:"Tela cheia",close:"Fechar",submit:"Enviar",reset:"Limpar",required:"Obrigatório",description:"Descrição",title:"Título",text:"Texto",target:"Target"}; |
//quickload/js/trumbowyg/langs/ro.min.js |
---|
@@ -0,0 +1,12 @@ |
/* =========================================================== |
* ro.js |
* Romanian translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Vladut Radulescu (pacMakaveli) |
* Email: pacMakaveli90@gmail.com |
* Twitter : @pacMakaveli90 |
* Website : creative-studio51.co.uk |
* Github : https://github.com/pacMakaveli |
*/ |
jQuery.trumbowyg.langs.pt={viewHTML:"Vizualizare HTML",formatting:"Format",p:"Paragraf",blockquote:"Citație",code:"Cod",header:"Titlu",bold:"Bold",italic:"Italic",strikethrough:"Tăiat",underline:"Subliniat",strong:"Puternic",em:"Accentuat",del:"Sterge",unorderedList:"Lista dezordonată",orderedList:"Liste ordonată",insertImage:"Adăugare Imagine",insertVideo:"Adăugare Video",link:"Link",createLink:"Crează link",unlink:"Remover link",justifyLeft:"Aliniază stânga",justifyCenter:"Aliniază centru",justifyRight:"Aliniază dreapta",justifyFull:"Justificare",horizontalRule:"Linie orizontală",fullscreen:"Tot ecranul",close:"Închide",submit:"Procesează",reset:"Resetează",required:"Obligatoriu",description:"Descriere",title:"Titlu",text:"Text"}; |
//quickload/js/trumbowyg/langs/rs.min.js |
---|
@@ -0,0 +1,8 @@ |
/* =========================================================== |
* rs.js |
* Serbian (Cyrlic) translation for Trumbowyg |
* https://www.github.com/johonunu |
* =========================================================== |
* Author : Nikola Trifunovic (https://www.github.com/johonunu) |
*/ |
jQuery.trumbowyg.langs.rs={viewHTML:"Погледај HTML кóд",formatting:"Форматирање",p:"Параграф",blockquote:"Цитат",code:"Кóд",header:"Наслов",bold:"Подебљано",italic:"Курзив",strikethrough:"Прецртано",underline:"Подвучено",strong:"Подебљано",em:"Истакнуто",del:"Обрисано",unorderedList:"Ненабројива листа",orderedList:"Набројива листа",insertImage:"Унеси слику",insertVideo:"Унеси видео",link:"Линк",createLink:"Унеси линк",unlink:"Уклони линк",justifyLeft:"Лево равнање",justifyCenter:"Централно равнање",justifyRight:"Десно равнање",justifyFull:"Обострано равнање",horizontalRule:"Хоризонтална линија",fullscreen:"Режим читавог екрана",close:"Затвори",submit:"Унеси",reset:"Откажи",required:"Обавезно поље",description:"Опис",title:"Наслов",text:"Текст"}; |
//quickload/js/trumbowyg/langs/rs_latin.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* rs_latin.js |
* Serbian (Latin) translation for Trumbowyg |
* https://www.github.com/johonunu |
* =========================================================== |
* Author : Nikola Trifunovic (https://www.github.com/johonunu) |
*/ |
// jshint camelcase:false |
jQuery.trumbowyg.langs.rs_latin={viewHTML:"Poglеdaj HTML kód",formatting:"Formatiranjе",p:"Paragraf",blockquote:"Citat",code:"Kód",header:"Naslov",bold:"Podеbljano",italic:"Kurziv",strikethrough:"Prеcrtano",underline:"Podvučеno",strong:"Podеbljano",em:"Istaknuto",del:"Obrisano",unorderedList:"Nеnabrojiva lista",orderedList:"Nabrojiva lista",insertImage:"Unеsi sliku",insertVideo:"Unеsi vidеo",link:"Link",createLink:"Unеsi link",unlink:"Ukloni link",justifyLeft:"Lеvo ravnanjе",justifyCenter:"Cеntralno ravnanjе",justifyRight:"Dеsno ravnanjе",justifyFull:"Obostrano ravnanjе",horizontalRule:"Horizontalna linija",fullscreen:"Rеžim čitavog еkrana",close:"Zatvori",submit:"Unеsi",reset:"Otkaži",required:"Obavеzno poljе",description:"Opis",title:"Naslov",text:"Tеkst"}; |
//quickload/js/trumbowyg/langs/ru.min.js |
---|
@@ -0,0 +1,8 @@ |
/* =========================================================== |
* ru.js |
* Russion translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Yuri Lya |
*/ |
jQuery.trumbowyg.langs.ru={viewHTML:"Посмотреть HTML",undo:"Отменить",redo:"Повторить",formatting:"Форматирование",p:"Обычный",blockquote:"Цитата",code:"Код",header:"Заголовок",bold:"Полужирный",italic:"Курсив",strikethrough:"Зачеркнутый",underline:"Подчеркнутый",strong:"Полужирный",em:"Курсив",del:"Зачеркнутый",superscript:"Надстрочный",subscript:"Подстрочный",unorderedList:"Обычный список",orderedList:"Нумерованный список",insertImage:"Вставить изображение",insertVideo:"Вставить видео",link:"Ссылка",createLink:"Вставить ссылку",unlink:"Удалить ссылку",justifyLeft:"По левому краю",justifyCenter:"По центру",justifyRight:"По правому краю",justifyFull:"По ширине",horizontalRule:"Горизонтальная линия",removeformat:"Очистить форматирование",fullscreen:"Во весь экран",close:"Закрыть",submit:"Вставить",reset:"Отменить",required:"Обязательное",description:"Описание",title:"Подсказка",text:"Текст"}; |
//quickload/js/trumbowyg/langs/sk.min.js |
---|
@@ -0,0 +1,8 @@ |
/* =========================================================== |
* sk.js |
* Slovak translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : VeeeneX (https://github.com/VeeeneX) |
*/ |
jQuery.trumbowyg.langs.sk={viewHTML:"Zobraziť HTML",formatting:"Formátovanie",p:"Paragraf",blockquote:"Citácia",code:"Kód",header:"Nadpis",bold:"Tučné",italic:"Kurzíva",strikethrough:"Preškrtnuté",underline:"Podčiarknuté",strong:"Tučné",em:"Zvýrazniť",del:"Zmazať",unorderedList:"Netriedený zoznam",orderedList:"Triedený zoznam",insertImage:"Vložiť obrázok",insertVideo:"Vložiť video",link:"Odkaz",createLink:"Vložiť odkaz",unlink:"Zmazať odkaz",justifyLeft:"Zarovnať doľava",justifyCenter:"Zarovnať na stred",justifyRight:"Zarovnať doprava",justifyFull:"Zarovnať do bloku",horizontalRule:"Vložit vodorovnú čiaru",fullscreen:"Režim celej obrazovky",close:"Zavrieť",submit:"Potvrdiť",reset:"Zrušiť",required:"Povinné",description:"Popis",title:"Nadpis",text:"Text"}; |
//quickload/js/trumbowyg/langs/sv.min.js |
---|
@@ -0,0 +1,12 @@ |
/* =========================================================== |
* sv.js |
* Swedish translation for Trumbowyg |
* http://www.tim-international.net |
* =========================================================== |
* Author : T. Almroth |
* Github : https://github.com/timint |
* |
* Review : M Hagberg |
* Github : https://github.com/pestbarn |
*/ |
jQuery.trumbowyg.langs.sv={viewHTML:"Visa HTML",formatting:"Formatering",p:"Paragraf",blockquote:"Citat",code:"Kod",header:"Rubrik",bold:"Fet",italic:"Kursiv",strikethrough:"Genomstruken",underline:"Understruken",strong:"Fet",em:"Kursiv",del:"Rensa formatering",unorderedList:"Punktlista",orderedList:"Numrerad lista",insertImage:"Infoga bild",insertVideo:"Infoga video",link:"Länk",createLink:"Infoga länk",unlink:"Ta bort länk",justifyLeft:"Vänsterjustera",justifyCenter:"Centrera",justifyRight:"Högerjustera",justifyFull:"Marginaljustera",horizontalRule:"Horisontell linje",fullscreen:"Fullskärm",close:"Stäng",submit:"Bekräfta",reset:"Återställ",required:"Obligatorisk",description:"Beskrivning",title:"Titel",text:"Text"}; |
//quickload/js/trumbowyg/langs/tr.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* tr.js |
* Turkish translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Emrah Bilbay (munzur) |
* Github : https://github.com/munzur |
*/ |
jQuery.trumbowyg.langs.tr={viewHTML:"HTML Kodu",formatting:"Biçimlendirme",p:"Paragraf",blockquote:"Alıntı",code:"Kod",header:"Başlık",bold:"Kalın",italic:"İtalik",strikethrough:"Üzeri çizgili",underline:"Altı çizgili",strong:"Koyu",em:"Vurgulu",del:"Üzeri çizgili",unorderedList:"Simgeli liste",orderedList:"Numaralı liste",insertImage:"Resim yerleştir",insertVideo:"Video yerleştir",link:"Link",createLink:"Link yerleştir",unlink:"Linki sil",justifyLeft:"Sola hizala",justifyCenter:"Ortaya hizala",justifyRight:"Sağa hizala",justifyFull:"Yasla",horizontalRule:"Yatay satır ekle",fullscreen:"Tam ekran",close:"Kapat",submit:"Onayla",reset:"Sıfırla",required:"Gerekli",description:"Açıklama",title:"Başlık",text:"Metin"}; |
//quickload/js/trumbowyg/langs/ua.min.js |
---|
@@ -0,0 +1,8 @@ |
/* =========================================================== |
* ua.js |
* Ukrainian translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Igor Buksha |
*/ |
jQuery.trumbowyg.langs.ua={viewHTML:"Подивитись HTML",formatting:"Форматування",p:"Звичайний",blockquote:"Витяг",code:"Код",header:"Заголовок",bold:"Напівжирний",italic:"Курсив",strikethrough:"Закреслений",underline:"Підкреслений",strong:"Напівжирний",em:"Курсив",del:"Закреслений",unorderedList:"Звичайний список",orderedList:"Нумерований список",insertImage:"Вставити зображення",insertVideo:"Вставити відео",link:"Посилання",createLink:"Вставити посилання",unlink:"Видалити посилання",justifyLeft:"По лівому краю",justifyCenter:"В центрі",justifyRight:"По правому краю",justifyFull:"По ширині",horizontalRule:"Горизонтальна лінія",fullscreen:"На весь екран",close:"Закрити",submit:"Вставити",reset:"Скасувати",required:"Обов'язкове",description:"Опис",title:"Підказка",text:"Текст"}; |
//quickload/js/trumbowyg/langs/vi.min.js |
---|
@@ -0,0 +1,9 @@ |
/* =========================================================== |
* vi.js |
* Vietnamese translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : heocoi |
* Github: https://github.com/heocoi |
*/ |
jQuery.trumbowyg.langs.vi={viewHTML:"Hiển thị HTML",formatting:"Äịnh dạng",p:"Äoạn",blockquote:"TrÃch dẫn",code:"Code",header:"Äầu trang",bold:"In Ä‘áºm",italic:"In nghiêng",strikethrough:"Gạch ngang",underline:"Gạch chân",strong:"In Ä‘áºm",em:"In nghiêng",del:"Gạch ngang",unorderedList:"Danh sách không thứ tá»±",orderedList:"Danh sách có thứ tá»±",insertImage:"Chèn hình ảnh",insertVideo:"Chèn video",link:"ÄÆ°á»ng dẫn",createLink:"Tạo Ä‘Æ°á»ng dẫn",unlink:"Hủy Ä‘Æ°á»ng dẫn",justifyLeft:"Canh lá» trái",justifyCenter:"Canh giữa",justifyRight:"Canh lá» phải",justifyFull:"Canh Ä‘á»u",horizontalRule:"Thêm Ä‘Æ°á»ng kẻ ngang",fullscreen:"Toà n mà n hình",close:"Äóng",submit:"Äồng ý",reset:"Hủy bá»",required:"Bắt buá»™c",description:"Mô tả",title:"Tiêu Ä‘á»",text:"Ná»™i dung"}; |
//quickload/js/trumbowyg/langs/zh_cn.min.js |
---|
@@ -0,0 +1,11 @@ |
/* =========================================================== |
* zh_cn.js |
* Simplified Chinese translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Liu Kai (akai) |
* Twitter : @akai404 |
* Github : https://github.com/akai |
*/ |
// jshint camelcase:false |
jQuery.trumbowyg.langs.zh_cn={viewHTML:"源代码",formatting:"格式",p:"段落",blockquote:"引用",code:"代码",header:"标题",bold:"加粗",italic:"斜体",strikethrough:"删除线",underline:"下划线",strong:"加粗",em:"斜体",del:"删除线",unorderedList:"无序列表",orderedList:"有序列表",insertImage:"插入图片",insertVideo:"插入视频",link:"超链接",createLink:"插入链接",unlink:"取消链接",justifyLeft:"居左对齐",justifyCenter:"居中对齐",justifyRight:"居右对齐",justifyFull:"两端对齐",horizontalRule:"插入分隔线",fullscreen:"全屏",close:"关闭",submit:"确定",reset:"取消",required:"必需的",description:"描述",title:"标题",text:"文字"}; |
//quickload/js/trumbowyg/langs/zh_tw.min.js |
---|
@@ -0,0 +1,11 @@ |
/* =========================================================== |
* zh_tw.js |
* Traditional Chinese translation for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Peter Dave Hello (PeterDaveHello) |
* Twitter : @PeterDaveHello |
* Github : https://github.com/PeterDaveHello |
*/ |
// jshint camelcase:false |
jQuery.trumbowyg.langs.zh_tw={viewHTML:"原始碼",formatting:"格式",p:"段落",blockquote:"引用",code:"代碼",header:"標題",bold:"加粗",italic:"斜體",strikethrough:"刪除線",underline:"底線",strong:"加粗",em:"斜體",del:"刪除線",unorderedList:"無序列表",orderedList:"有序列表",insertImage:"插入圖片",insertVideo:"插入影片",link:"超連結",createLink:"插入連結",unlink:"取消連結",justifyLeft:"靠左對齊",justifyCenter:"置中對齊",justifyRight:"靠右對齊",justifyFull:"左右對齊",horizontalRule:"插入分隔線",fullscreen:"全螢幕",close:"關閉",submit:"確定",reset:"取消",required:"必需的",description:"描述",title:"標題",text:"文字"}; |
//quickload/js/trumbowyg/plugins/base64/trumbowyg.base64.js |
---|
@@ -0,0 +1,109 @@ |
/* =========================================================== |
* trumbowyg.base64.js v1.0 |
* Base64 plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Cyril Biencourt (lizardK) |
*/ |
(function ($) { |
'use strict'; |
var isSupported = function () { |
return typeof FileReader !== 'undefined'; |
}; |
var isValidImage = function (type) { |
return /^data:image\/[a-z]?/i.test(type); |
}; |
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
en: { |
base64: 'Image as base64', |
file: 'File', |
errFileReaderNotSupported: 'FileReader is not supported by your browser.', |
errInvalidImage: 'Invalid image file.' |
}, |
fr: { |
base64: 'Image en base64', |
file: 'Fichier' |
}, |
cs: { |
base64: 'Vložit obrázek', |
file: 'Soubor' |
}, |
zh_cn: { |
base64: '图片(Base64编码)', |
file: '文件' |
}, |
nl: { |
errFileReaderNotSupported: 'Uw browser ondersteunt deze functionaliteit niet.', |
errInvalidImage: 'De gekozen afbeelding is ongeldig.' |
} |
}, |
// jshint camelcase:true |
plugins: { |
base64: { |
shouldInit: isSupported, |
init: function (trumbowyg) { |
var btnDef = { |
isSupported: isSupported, |
fn: function () { |
trumbowyg.saveRange(); |
var file; |
var $modal = trumbowyg.openModalInsert( |
// Title |
trumbowyg.lang.base64, |
// Fields |
{ |
file: { |
type: 'file', |
required: true, |
attributes: { |
accept: 'image/*' |
} |
}, |
alt: { |
label: 'description', |
value: trumbowyg.getRangeText() |
} |
}, |
// Callback |
function (values) { |
var fReader = new FileReader(); |
fReader.onloadend = function (e) { |
if (isValidImage(e.target.result)) { |
trumbowyg.execCmd('insertImage', fReader.result); |
$(['img[src="', fReader.result, '"]:not([alt])'].join(''), trumbowyg.$box).attr('alt', values.alt); |
trumbowyg.closeModal(); |
} else { |
trumbowyg.addErrorOnModalField( |
$('input[type=file]', $modal), |
trumbowyg.lang.errInvalidImage |
); |
} |
}; |
fReader.readAsDataURL(file); |
} |
); |
$('input[type=file]').on('change', function (e) { |
file = e.target.files[0]; |
}); |
} |
}; |
trumbowyg.addBtnDef('base64', btnDef); |
} |
} |
} |
}); |
})(jQuery); |
//quickload/js/trumbowyg/plugins/base64/trumbowyg.base64.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";var a=function(){return"undefined"!=typeof FileReader},t=function(e){return/^data:image\/[a-z]?/i.test(e)};e.extend(!0,e.trumbowyg,{langs:{en:{base64:"Image as base64",file:"File",errFileReaderNotSupported:"FileReader is not supported by your browser.",errInvalidImage:"Invalid image file."},fr:{base64:"Image en base64",file:"Fichier"},cs:{base64:"Vložit obrázek",file:"Soubor"},zh_cn:{base64:"图片(Base64编码)",file:"文件"},nl:{errFileReaderNotSupported:"Uw browser ondersteunt deze functionaliteit niet.",errInvalidImage:"De gekozen afbeelding is ongeldig."}},plugins:{base64:{shouldInit:a,init:function(n){var i={isSupported:a,fn:function(){n.saveRange();var a,i=n.openModalInsert(n.lang.base64,{file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:n.getRangeText()}},function(r){var l=new FileReader;l.onloadend=function(a){t(a.target.result)?(n.execCmd("insertImage",l.result),e(['img[src="',l.result,'"]:not([alt])'].join(""),n.$box).attr("alt",r.alt),n.closeModal()):n.addErrorOnModalField(e("input[type=file]",i),n.lang.errInvalidImage)},l.readAsDataURL(a)});e("input[type=file]").on("change",function(e){a=e.target.files[0]})}};n.addBtnDef("base64",i)}}}})}(jQuery); |
//quickload/js/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.js |
---|
@@ -0,0 +1,179 @@ |
/* =========================================================== |
* trumbowyg.cleanpaste.js v1.0 |
* Font Clean paste plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Eric Radin |
*/ |
/** |
* This plugin will perform a "cleaning" on any paste, in particular |
* it will clean pasted content of microsoft word document tags and classes. |
*/ |
(function ($) { |
'use strict'; |
function reverse(sentString) { |
var theString = ''; |
for (var i = sentString.length - 1; i >= 0; i -= 1) { |
theString += sentString.charAt(i); |
} |
return theString; |
} |
function checkValidTags(snippet) { |
var theString = snippet; |
// Replace uppercase element names with lowercase |
theString = theString.replace(/<[^> ]*/g, function (match) { |
return match.toLowerCase(); |
}); |
// Replace uppercase attribute names with lowercase |
theString = theString.replace(/<[^>]*>/g, function (match) { |
match = match.replace(/ [^=]+=/g, function (match2) { |
return match2.toLowerCase(); |
}); |
return match; |
}); |
// Put quotes around unquoted attributes |
theString = theString.replace(/<[^>]*>/g, function (match) { |
match = match.replace(/( [^=]+=)([^"][^ >]*)/g, '$1\"$2\"'); |
return match; |
}); |
return theString; |
} |
function cleanIt(htmlBefore, htmlAfter) { |
var matchedHead = ''; |
var matchedTail = ''; |
var afterStart; |
var afterFinish; |
var newSnippet; |
// we need to extract the inserted block |
for (afterStart = 0; htmlAfter.charAt(afterStart) === htmlBefore.charAt(afterStart); afterStart += 1) { |
matchedHead += htmlAfter.charAt(afterStart); |
} |
// If afterStart is inside a HTML tag, move to opening brace of tag |
for (var i = afterStart; i >= 0; i -= 1) { |
if (htmlBefore.charAt(i) === '<') { |
afterStart = i; |
matchedHead = htmlBefore.substring(0, afterStart); |
break; |
} else if (htmlBefore.charAt(i) === '>') { |
break; |
} |
} |
// now reverse string and work from the end in |
htmlAfter = reverse(htmlAfter); |
htmlBefore = reverse(htmlBefore); |
// Find end of both strings that matches |
for (afterFinish = 0; htmlAfter.charAt(afterFinish) === htmlBefore.charAt(afterFinish); afterFinish += 1) { |
matchedTail += htmlAfter.charAt(afterFinish); |
} |
// If afterFinish is inside a HTML tag, move to closing brace of tag |
for (var j = afterFinish; j >= 0; j -= 1) { |
if (htmlBefore.charAt(j) === '>') { |
afterFinish = j; |
matchedTail = htmlBefore.substring(0, afterFinish); |
break; |
} else if (htmlBefore.charAt(j) === '<') { |
break; |
} |
} |
matchedTail = reverse(matchedTail); |
// If there's no difference in pasted content |
if (afterStart === (htmlAfter.length - afterFinish)) { |
return false; |
} |
htmlAfter = reverse(htmlAfter); |
newSnippet = htmlAfter.substring(afterStart, htmlAfter.length - afterFinish); |
// first make sure all tags and attributes are made valid |
newSnippet = checkValidTags(newSnippet); |
// Replace opening bold tags with strong |
newSnippet = newSnippet.replace(/<b(\s+|>)/g, '<strong$1'); |
// Replace closing bold tags with closing strong |
newSnippet = newSnippet.replace(/<\/b(\s+|>)/g, '</strong$1'); |
// Replace italic tags with em |
newSnippet = newSnippet.replace(/<i(\s+|>)/g, '<em$1'); |
// Replace closing italic tags with closing em |
newSnippet = newSnippet.replace(/<\/i(\s+|>)/g, '</em$1'); |
// strip out comments -cgCraft |
newSnippet = newSnippet.replace(/<!(?:--[\s\S]*?--\s*)?>\s*/g, ''); |
// strip out -cgCraft |
newSnippet = newSnippet.replace(/ /gi, ' '); |
// strip out extra spaces -cgCraft |
newSnippet = newSnippet.replace(/ <\//gi, '</'); |
while (newSnippet.indexOf(' ') !== -1) { |
var anArray = newSnippet.split(' '); |
newSnippet = anArray.join(' '); |
} |
// strip -cgCraft |
newSnippet = newSnippet.replace(/^\s*|\s*$/g, ''); |
// Strip out unaccepted attributes |
newSnippet = newSnippet.replace(/<[^>]*>/g, function (match) { |
match = match.replace(/ ([^=]+)="[^"]*"/g, function (match2, attributeName) { |
if (['alt', 'href', 'src', 'title'].indexOf(attributeName) !== -1) { |
return match2; |
} |
return ''; |
}); |
return match; |
}); |
// Final cleanout for MS Word crud |
newSnippet = newSnippet.replace(/<\?xml[^>]*>/g, ''); |
newSnippet = newSnippet.replace(/<[^ >]+:[^>]*>/g, ''); |
newSnippet = newSnippet.replace(/<\/[^ >]+:[^>]*>/g, ''); |
// remove unwanted tags |
newSnippet = newSnippet.replace(/<(div|span|style|meta|link){1}.*?>/gi, ''); |
htmlAfter = matchedHead + newSnippet + matchedTail; |
return htmlAfter; |
} |
// clean editor |
// this will clean the inserted contents |
// it does a compare, before and after paste to determine the |
// pasted contents |
$.extend(true, $.trumbowyg, { |
plugins: { |
cleanPaste: { |
init: function (trumbowyg) { |
trumbowyg.pasteHandlers.push(function () { |
try { |
var contentBefore = trumbowyg.$ed.html(); |
setTimeout(function () { |
var contentAfter = trumbowyg.$ed.html(); |
contentAfter = cleanIt(contentBefore, contentAfter); |
trumbowyg.$ed.html(contentAfter); |
}, 0); |
} catch (c) { |
} |
}); |
} |
} |
} |
}); |
})(jQuery); |
//quickload/js/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.min.js |
---|
@@ -0,0 +1 @@ |
!function(r){"use strict";function e(r){for(var e="",t=r.length-1;t>=0;t-=1)e+=r.charAt(t);return e}function t(r){var e=r;return e=e.replace(/<[^> ]*/g,function(r){return r.toLowerCase()}),e=e.replace(/<[^>]*>/g,function(r){return r=r.replace(/ [^=]+=/g,function(r){return r.toLowerCase()})}),e=e.replace(/<[^>]*>/g,function(r){return r=r.replace(/( [^=]+=)([^"][^ >]*)/g,'$1"$2"')})}function n(r,n){var a,c,i,l="",s="";for(a=0;n.charAt(a)===r.charAt(a);a+=1)l+=n.charAt(a);for(var u=a;u>=0;u-=1){if("<"===r.charAt(u)){a=u,l=r.substring(0,a);break}if(">"===r.charAt(u))break}for(n=e(n),r=e(r),c=0;n.charAt(c)===r.charAt(c);c+=1)s+=n.charAt(c);for(var g=c;g>=0;g-=1){if(">"===r.charAt(g)){c=g,s=r.substring(0,c);break}if("<"===r.charAt(g))break}if(s=e(s),a===n.length-c)return!1;for(n=e(n),i=n.substring(a,n.length-c),i=t(i),i=i.replace(/<b(\s+|>)/g,"<strong$1"),i=i.replace(/<\/b(\s+|>)/g,"</strong$1"),i=i.replace(/<i(\s+|>)/g,"<em$1"),i=i.replace(/<\/i(\s+|>)/g,"</em$1"),i=i.replace(/<!(?:--[\s\S]*?--\s*)?>\s*/g,""),i=i.replace(/ /gi," "),i=i.replace(/ <\//gi,"</");-1!==i.indexOf(" ");){var o=i.split(" ");i=o.join(" ")}return i=i.replace(/^\s*|\s*$/g,""),i=i.replace(/<[^>]*>/g,function(r){return r=r.replace(/ ([^=]+)="[^"]*"/g,function(r,e){return-1!==["alt","href","src","title"].indexOf(e)?r:""})}),i=i.replace(/<\?xml[^>]*>/g,""),i=i.replace(/<[^ >]+:[^>]*>/g,""),i=i.replace(/<\/[^ >]+:[^>]*>/g,""),i=i.replace(/<(div|span|style|meta|link){1}.*?>/gi,""),n=l+i+s}r.extend(!0,r.trumbowyg,{plugins:{cleanPaste:{init:function(r){r.pasteHandlers.push(function(){try{var e=r.$ed.html();setTimeout(function(){var t=r.$ed.html();t=n(e,t),r.$ed.html(t)},0)}catch(t){}})}}}})}(jQuery); |
//quickload/js/trumbowyg/plugins/colors/trumbowyg.colors.js |
---|
@@ -0,0 +1,168 @@ |
/* =========================================================== |
* trumbowyg.colors.js v1.2 |
* Colors picker plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
(function ($) { |
'use strict'; |
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
cs: { |
foreColor: 'Barva textu', |
backColor: 'Barva pozadí' |
}, |
en: { |
foreColor: 'Text color', |
backColor: 'Background color' |
}, |
fr: { |
foreColor: 'Couleur du texte', |
backColor: 'Couleur de fond' |
}, |
sk: { |
foreColor: 'Farba textu', |
backColor: 'Farba pozadia' |
}, |
zh_cn: { |
foreColor: '文字颜色', |
backColor: '背景颜色' |
} |
} |
}); |
// jshint camelcase:true |
function hex(x) { |
return ('0' + parseInt(x).toString(16)).slice(-2); |
} |
function colorToHex(rgb) { |
if (rgb.search('rgb') === -1) { |
return rgb.replace('#', ''); |
} else if (rgb === 'rgba(0, 0, 0, 0)') { |
return 'transparent'; |
} else { |
rgb = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/); |
return hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); |
} |
} |
function colorTagHandler(element, trumbowyg) { |
var tags = []; |
if(!element.style){ |
return tags; |
} |
// background color |
if (element.style.backgroundColor !== '') { |
var backColor = colorToHex(element.style.backgroundColor); |
if (trumbowyg.o.plugins.colors.colorList.indexOf(backColor) >= 0) { |
tags.push('backColor' + backColor); |
} else { |
tags.push('backColorFree'); |
} |
} |
// text color |
var foreColor; |
if (element.style.color !== '') { |
foreColor = colorToHex(element.style.color); |
} else if (element.hasAttribute('color')) { |
foreColor = colorToHex(element.getAttribute('color')); |
} |
if (foreColor) { |
if (trumbowyg.o.plugins.colors.colorList.indexOf(foreColor) >= 0) { |
tags.push('foreColor' + foreColor); |
} else { |
tags.push('foreColorFree'); |
} |
} |
return tags; |
} |
var defaultOptions = { |
colorList: ['ffffff', '000000', 'eeece1', '1f497d', '4f81bd', 'c0504d', '9bbb59', '8064a2', '4bacc6', 'f79646', 'ffff00', 'f2f2f2', '7f7f7f', 'ddd9c3', 'c6d9f0', 'dbe5f1', 'f2dcdb', 'ebf1dd', 'e5e0ec', 'dbeef3', 'fdeada', 'fff2ca', 'd8d8d8', '595959', 'c4bd97', '8db3e2', 'b8cce4', 'e5b9b7', 'd7e3bc', 'ccc1d9', 'b7dde8', 'fbd5b5', 'ffe694', 'bfbfbf', '3f3f3f', '938953', '548dd4', '95b3d7', 'd99694', 'c3d69b', 'b2a2c7', 'b7dde8', 'fac08f', 'f2c314', 'a5a5a5', '262626', '494429', '17365d', '366092', '953734', '76923c', '5f497a', '92cddc', 'e36c09', 'c09100', '7f7f7f', '0c0c0c', '1d1b10', '0f243e', '244061', '632423', '4f6128', '3f3151', '31859b', '974806', '7f6000'] |
}; |
// Add all colors in two dropdowns |
$.extend(true, $.trumbowyg, { |
plugins: { |
color: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.colors = trumbowyg.o.plugins.colors || defaultOptions; |
var foreColorBtnDef = { |
dropdown: buildDropdown('foreColor', trumbowyg) |
}, |
backColorBtnDef = { |
dropdown: buildDropdown('backColor', trumbowyg) |
}; |
trumbowyg.addBtnDef('foreColor', foreColorBtnDef); |
trumbowyg.addBtnDef('backColor', backColorBtnDef); |
}, |
tagHandler: colorTagHandler |
} |
} |
}); |
function buildDropdown(fn, trumbowyg) { |
var dropdown = []; |
$.each(trumbowyg.o.plugins.colors.colorList, function (i, color) { |
var btn = fn + color, |
btnDef = { |
fn: fn, |
forceCss: true, |
param: '#' + color, |
style: 'background-color: #' + color + ';' |
}; |
trumbowyg.addBtnDef(btn, btnDef); |
dropdown.push(btn); |
}); |
var removeColorButtonName = fn + 'Remove', |
removeColorBtnDef = { |
fn: 'removeFormat', |
param: fn, |
style: 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);' |
}; |
trumbowyg.addBtnDef(removeColorButtonName, removeColorBtnDef); |
dropdown.push(removeColorButtonName); |
// add free color btn |
var freeColorButtonName = fn + 'Free', |
freeColorBtnDef = { |
fn: function () { |
trumbowyg.openModalInsert(trumbowyg.lang[fn], |
{ |
color: { |
label: fn, |
value: '#FFFFFF' |
} |
}, |
// callback |
function (values) { |
trumbowyg.execCmd(fn, values.color); |
return true; |
} |
); |
}, |
text: '#', |
// style adjust for displaying the text |
style: 'text-indent: 0;line-height: 20px;padding: 0 5px;' |
}; |
trumbowyg.addBtnDef(freeColorButtonName, freeColorBtnDef); |
dropdown.push(freeColorButtonName); |
return dropdown; |
} |
})(jQuery); |
//quickload/js/trumbowyg/plugins/colors/trumbowyg.colors.min.js |
---|
@@ -0,0 +1 @@ |
!function(o){"use strict";function r(o){return("0"+parseInt(o).toString(16)).slice(-2)}function e(o){return-1===o.search("rgb")?o.replace("#",""):"rgba(0, 0, 0, 0)"===o?"transparent":(o=o.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/),r(o[1])+r(o[2])+r(o[3]))}function f(o,r){var f=[];if(!o.style)return f;if(""!==o.style.backgroundColor){var c=e(o.style.backgroundColor);r.o.plugins.colors.colorList.indexOf(c)>=0?f.push("backColor"+c):f.push("backColorFree")}var a;return""!==o.style.color?a=e(o.style.color):o.hasAttribute("color")&&(a=e(o.getAttribute("color"))),a&&(r.o.plugins.colors.colorList.indexOf(a)>=0?f.push("foreColor"+a):f.push("foreColorFree")),f}function c(r,e){var f=[];o.each(e.o.plugins.colors.colorList,function(o,c){var a=r+c,d={fn:r,forceCss:!0,param:"#"+c,style:"background-color: #"+c+";"};e.addBtnDef(a,d),f.push(a)});var c=r+"Remove",a={fn:"removeFormat",param:r,style:"background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);"};e.addBtnDef(c,a),f.push(c);var d=r+"Free",t={fn:function(){e.openModalInsert(e.lang[r],{color:{label:r,value:"#FFFFFF"}},function(o){return e.execCmd(r,o.color),!0})},text:"#",style:"text-indent: 0;line-height: 20px;padding: 0 5px;"};return e.addBtnDef(d,t),f.push(d),f}o.extend(!0,o.trumbowyg,{langs:{cs:{foreColor:"Barva textu",backColor:"Barva pozadí"},en:{foreColor:"Text color",backColor:"Background color"},fr:{foreColor:"Couleur du texte",backColor:"Couleur de fond"},sk:{foreColor:"Farba textu",backColor:"Farba pozadia"},zh_cn:{foreColor:"文字颜色",backColor:"背景颜色"}}});var a={colorList:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646","ffff00","f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada","fff2ca","d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5","ffe694","bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","b7dde8","fac08f","f2c314","a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","92cddc","e36c09","c09100","7f7f7f","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","31859b","974806","7f6000"]};o.extend(!0,o.trumbowyg,{plugins:{color:{init:function(o){o.o.plugins.colors=o.o.plugins.colors||a;var r={dropdown:c("foreColor",o)},e={dropdown:c("backColor",o)};o.addBtnDef("foreColor",r),o.addBtnDef("backColor",e)},tagHandler:f}}})}(jQuery); |
//quickload/js/trumbowyg/plugins/colors/ui/sass/trumbowyg.colors.scss |
---|
@@ -0,0 +1,49 @@ |
/** |
* Trumbowyg v2.5.1 - A lightweight WYSIWYG editor |
* Colors plugin stylesheet for Trumbowyg editor |
* ------------------------ |
* @link http://alex-d.github.io/Trumbowyg |
* @license MIT |
* @author Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
.trumbowyg-dropdown-foreColor, |
.trumbowyg-dropdown-backColor { |
width: 276px; |
padding: 7px 5px; |
svg { |
display: none !important; |
} |
button { |
display: block; |
position: relative; |
float: left; |
text-indent: -9999px; |
height: 20px; |
width: 20px; |
border: 1px solid #333; |
padding: 0; |
margin: 2px; |
&:hover, |
&:focus { |
&::after { |
content: " "; |
display: block; |
position: absolute; |
top: -5px; |
left: -5px; |
height: 27px; |
width: 27px; |
background: inherit; |
border: 1px solid #FFF; |
box-shadow: #000 0 0 2px; |
z-index: 10; |
} |
} |
} |
} |
//quickload/js/trumbowyg/plugins/colors/ui/trumbowyg.colors.css |
---|
@@ -0,0 +1,43 @@ |
/** |
* Trumbowyg v2.5.1 - A lightweight WYSIWYG editor |
* Colors plugin stylesheet for Trumbowyg editor |
* ------------------------ |
* @link http://alex-d.github.io/Trumbowyg |
* @license MIT |
* @author Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
.trumbowyg-dropdown-foreColor, |
.trumbowyg-dropdown-backColor { |
width: 276px; |
padding: 7px 5px; } |
.trumbowyg-dropdown-foreColor svg, |
.trumbowyg-dropdown-backColor svg { |
display: none !important; } |
.trumbowyg-dropdown-foreColor button, |
.trumbowyg-dropdown-backColor button { |
display: block; |
position: relative; |
float: left; |
text-indent: -9999px; |
height: 20px; |
width: 20px; |
border: 1px solid #333; |
padding: 0; |
margin: 2px; } |
.trumbowyg-dropdown-foreColor button:hover::after, .trumbowyg-dropdown-foreColor button:focus::after, |
.trumbowyg-dropdown-backColor button:hover::after, |
.trumbowyg-dropdown-backColor button:focus::after { |
content: " "; |
display: block; |
position: absolute; |
top: -5px; |
left: -5px; |
height: 27px; |
width: 27px; |
background: inherit; |
border: 1px solid #FFF; |
box-shadow: #000 0 0 2px; |
z-index: 10; } |
//quickload/js/trumbowyg/plugins/colors/ui/trumbowyg.colors.min.css |
---|
@@ -0,0 +1,2 @@ |
/** Trumbowyg v2.5.1 - A lightweight WYSIWYG editor - alex-d.github.io/Trumbowyg - License MIT - Author : Alexandre Demode (Alex-D) / alex-d.fr */ |
.trumbowyg-dropdown-backColor,.trumbowyg-dropdown-foreColor{width:276px;padding:7px 5px}.trumbowyg-dropdown-backColor svg,.trumbowyg-dropdown-foreColor svg{display:none!important}.trumbowyg-dropdown-backColor button,.trumbowyg-dropdown-foreColor button{display:block;position:relative;float:left;text-indent:-9999px;height:20px;width:20px;border:1px solid #333;padding:0;margin:2px}.trumbowyg-dropdown-backColor button:focus::after,.trumbowyg-dropdown-backColor button:hover::after,.trumbowyg-dropdown-foreColor button:focus::after,.trumbowyg-dropdown-foreColor button:hover::after{content:" ";display:block;position:absolute;top:-5px;left:-5px;height:27px;width:27px;background:inherit;border:1px solid #FFF;box-shadow:#000 0 0 2px;z-index:10} |
//quickload/js/trumbowyg/plugins/emoji/trumbowyg.emoji.js |
---|
@@ -0,0 +1,940 @@ |
/* =========================================================== |
* trumbowyg.emoji.js v0.1 |
* Emoji picker plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Nicolas Pion |
* Twitter : @nicolas_pion |
*/ |
(function ($) { |
'use strict'; |
var defaultOptions = { |
emojiList: [ |
':bowtie:', |
':smile:', |
':laughing:', |
':blush:', |
':smiley:', |
':relaxed:', |
':smirk:', |
':heart_eyes:', |
':kissing_heart:', |
':kissing_closed_eyes:', |
':flushed:', |
':relieved:', |
':satisfied:', |
':grin:', |
':wink:', |
':stuck_out_tongue_winking_eye:', |
':stuck_out_tongue_closed_eyes:', |
':grinning:', |
':kissing:', |
':kissing_smiling_eyes:', |
':stuck_out_tongue:', |
':sleeping:', |
':worried:', |
':frowning:', |
':anguished:', |
':open_mouth:', |
':grimacing:', |
':confused:', |
':hushed:', |
':expressionless:', |
':unamused:', |
':sweat_smile:', |
':sweat:', |
':disappointed_relieved:', |
':weary:', |
':pensive:', |
':disappointed:', |
':confounded:', |
':fearful:', |
':cold_sweat:', |
':persevere:', |
':cry:', |
':sob:', |
':joy:', |
':astonished:', |
':scream:', |
':neckbeard:', |
':tired_face:', |
':angry:', |
':rage:', |
':triumph:', |
':sleepy:', |
':yum:', |
':mask:', |
':sunglasses:', |
':dizzy_face:', |
':imp:', |
':smiling_imp:', |
':neutral_face:', |
':no_mouth:', |
':innocent:', |
':alien:', |
':yellow_heart:', |
':blue_heart:', |
':purple_heart:', |
':heart:', |
':green_heart:', |
':broken_heart:', |
':heartbeat:', |
':heartpulse:', |
':two_hearts:', |
':revolving_hearts:', |
':cupid:', |
':sparkling_heart:', |
':sparkles:', |
':star:', |
':star2:', |
':dizzy:', |
':boom:', |
':collision:', |
':anger:', |
':exclamation:', |
':question:', |
':grey_exclamation:', |
':grey_question:', |
':zzz:', |
':dash:', |
':sweat_drops:', |
':notes:', |
':musical_note:', |
':fire:', |
':hankey:', |
':poop:', |
':shit:', |
':+1:', |
':thumbsup:', |
':-1:', |
':thumbsdown:', |
':ok_hand:', |
':punch:', |
':facepunch:', |
':fist:', |
':v:', |
':wave:', |
':hand:', |
':raised_hand:', |
':open_hands:', |
':point_up:', |
':point_down:', |
':point_left:', |
':point_right:', |
':raised_hands:', |
':pray:', |
':point_up_2:', |
':clap:', |
':muscle:', |
':metal:', |
':fu:', |
':runner:', |
':running:', |
':couple:', |
':family:', |
':two_men_holding_hands:', |
':two_women_holding_hands:', |
':dancer:', |
':dancers:', |
':ok_woman:', |
':no_good:', |
':information_desk_person:', |
':raising_hand:', |
':bride_with_veil:', |
':person_with_pouting_face:', |
':person_frowning:', |
':bow:', |
':couplekiss:', |
':couple_with_heart:', |
':massage:', |
':haircut:', |
':nail_care:', |
':boy:', |
':girl:', |
':woman:', |
':man:', |
':baby:', |
':older_woman:', |
':older_man:', |
':person_with_blond_hair:', |
':man_with_gua_pi_mao:', |
':man_with_turban:', |
':construction_worker:', |
':cop:', |
':angel:', |
':princess:', |
':smiley_cat:', |
':smile_cat:', |
':heart_eyes_cat:', |
':kissing_cat:', |
':smirk_cat:', |
':scream_cat:', |
':crying_cat_face:', |
':joy_cat:', |
':pouting_cat:', |
':japanese_ogre:', |
':japanese_goblin:', |
':see_no_evil:', |
':hear_no_evil:', |
':speak_no_evil:', |
':guardsman:', |
':skull:', |
':feet:', |
':lips:', |
':kiss:', |
':droplet:', |
':ear:', |
':eyes:', |
':nose:', |
':tongue:', |
':love_letter:', |
':bust_in_silhouette:', |
':busts_in_silhouette:', |
':speech_balloon:', |
':thought_balloon:', |
':feelsgood:', |
':finnadie:', |
':goberserk:', |
':godmode:', |
':hurtrealbad:', |
':rage1:', |
':rage2:', |
':rage3:', |
':rage4:', |
':suspect:', |
':trollface:', |
':sunny:', |
':umbrella:', |
':cloud:', |
':snowflake:', |
':snowman:', |
':zap:', |
':cyclone:', |
':foggy:', |
':ocean:', |
':cat:', |
':dog:', |
':mouse:', |
':hamster:', |
':rabbit:', |
':wolf:', |
':frog:', |
':tiger:', |
':koala:', |
':bear:', |
':pig:', |
':pig_nose:', |
':cow:', |
':boar:', |
':monkey_face:', |
':monkey:', |
':horse:', |
':racehorse:', |
':camel:', |
':sheep:', |
':elephant:', |
':panda_face:', |
':snake:', |
':bird:', |
':baby_chick:', |
':hatched_chick:', |
':hatching_chick:', |
':chicken:', |
':penguin:', |
':turtle:', |
':bug:', |
':honeybee:', |
':ant:', |
':beetle:', |
':snail:', |
':octopus:', |
':tropical_fish:', |
':fish:', |
':whale:', |
':whale2:', |
':dolphin:', |
':cow2:', |
':ram:', |
':rat:', |
':water_buffalo:', |
':tiger2:', |
':rabbit2:', |
':dragon:', |
':goat:', |
':rooster:', |
':dog2:', |
':pig2:', |
':mouse2:', |
':ox:', |
':dragon_face:', |
':blowfish:', |
':crocodile:', |
':dromedary_camel:', |
':leopard:', |
':cat2:', |
':poodle:', |
':paw_prints:', |
':bouquet:', |
':cherry_blossom:', |
':tulip:', |
':four_leaf_clover:', |
':rose:', |
':sunflower:', |
':hibiscus:', |
':maple_leaf:', |
':leaves:', |
':fallen_leaf:', |
':herb:', |
':mushroom:', |
':cactus:', |
':palm_tree:', |
':evergreen_tree:', |
':deciduous_tree:', |
':chestnut:', |
':seedling:', |
':blossom:', |
':ear_of_rice:', |
':shell:', |
':globe_with_meridians:', |
':sun_with_face:', |
':full_moon_with_face:', |
':new_moon_with_face:', |
':new_moon:', |
':waxing_crescent_moon:', |
':first_quarter_moon:', |
':waxing_gibbous_moon:', |
':full_moon:', |
':waning_gibbous_moon:', |
':last_quarter_moon:', |
':waning_crescent_moon:', |
':last_quarter_moon_with_face:', |
':first_quarter_moon_with_face:', |
':crescent_moon:', |
':earth_africa:', |
':earth_americas:', |
':earth_asia:', |
':volcano:', |
':milky_way:', |
':partly_sunny:', |
':octocat:', |
':squirrel:', |
':bamboo:', |
':gift_heart:', |
':dolls:', |
':school_satchel:', |
':mortar_board:', |
':flags:', |
':fireworks:', |
':sparkler:', |
':wind_chime:', |
':rice_scene:', |
':jack_o_lantern:', |
':ghost:', |
':santa:', |
':christmas_tree:', |
':gift:', |
':bell:', |
':no_bell:', |
':tanabata_tree:', |
':tada:', |
':confetti_ball:', |
':balloon:', |
':crystal_ball:', |
':cd:', |
':dvd:', |
':floppy_disk:', |
':camera:', |
':video_camera:', |
':movie_camera:', |
':computer:', |
':tv:', |
':iphone:', |
':phone:', |
':telephone:', |
':telephone_receiver:', |
':pager:', |
':fax:', |
':minidisc:', |
':vhs:', |
':sound:', |
':speaker:', |
':mute:', |
':loudspeaker:', |
':mega:', |
':hourglass:', |
':hourglass_flowing_sand:', |
':alarm_clock:', |
':watch:', |
':radio:', |
':satellite:', |
':loop:', |
':mag:', |
':mag_right:', |
':unlock:', |
':lock:', |
':lock_with_ink_pen:', |
':closed_lock_with_key:', |
':key:', |
':bulb:', |
':flashlight:', |
':high_brightness:', |
':low_brightness:', |
':electric_plug:', |
':battery:', |
':calling:', |
':email:', |
':mailbox:', |
':postbox:', |
':bath:', |
':bathtub:', |
':shower:', |
':toilet:', |
':wrench:', |
':nut_and_bolt:', |
':hammer:', |
':seat:', |
':moneybag:', |
':yen:', |
':dollar:', |
':pound:', |
':euro:', |
':credit_card:', |
':money_with_wings:', |
':e-mail:', |
':inbox_tray:', |
':outbox_tray:', |
':envelope:', |
':incoming_envelope:', |
':postal_horn:', |
':mailbox_closed:', |
':mailbox_with_mail:', |
':mailbox_with_no_mail:', |
':package:', |
':door:', |
':smoking:', |
':bomb:', |
':gun:', |
':hocho:', |
':pill:', |
':syringe:', |
':page_facing_up:', |
':page_with_curl:', |
':bookmark_tabs:', |
':bar_chart:', |
':chart_with_upwards_trend:', |
':chart_with_downwards_trend:', |
':scroll:', |
':clipboard:', |
':calendar:', |
':date:', |
':card_index:', |
':file_folder:', |
':open_file_folder:', |
':scissors:', |
':pushpin:', |
':paperclip:', |
':black_nib:', |
':pencil2:', |
':straight_ruler:', |
':triangular_ruler:', |
':closed_book:', |
':green_book:', |
':blue_book:', |
':orange_book:', |
':notebook:', |
':notebook_with_decorative_cover:', |
':ledger:', |
':books:', |
':bookmark:', |
':name_badge:', |
':microscope:', |
':telescope:', |
':newspaper:', |
':football:', |
':basketball:', |
':soccer:', |
':baseball:', |
':tennis:', |
':8ball:', |
':rugby_football:', |
':bowling:', |
':golf:', |
':mountain_bicyclist:', |
':bicyclist:', |
':horse_racing:', |
':snowboarder:', |
':swimmer:', |
':surfer:', |
':ski:', |
':spades:', |
':hearts:', |
':clubs:', |
':diamonds:', |
':gem:', |
':ring:', |
':trophy:', |
':musical_score:', |
':musical_keyboard:', |
':violin:', |
':space_invader:', |
':video_game:', |
':black_joker:', |
':flower_playing_cards:', |
':game_die:', |
':dart:', |
':mahjong:', |
':clapper:', |
':memo:', |
':pencil:', |
':book:', |
':art:', |
':microphone:', |
':headphones:', |
':trumpet:', |
':saxophone:', |
':guitar:', |
':shoe:', |
':sandal:', |
':high_heel:', |
':lipstick:', |
':boot:', |
':shirt:', |
':tshirt:', |
':necktie:', |
':womans_clothes:', |
':dress:', |
':running_shirt_with_sash:', |
':jeans:', |
':kimono:', |
':bikini:', |
':ribbon:', |
':tophat:', |
':crown:', |
':womans_hat:', |
':mans_shoe:', |
':closed_umbrella:', |
':briefcase:', |
':handbag:', |
':pouch:', |
':purse:', |
':eyeglasses:', |
':fishing_pole_and_fish:', |
':coffee:', |
':tea:', |
':sake:', |
':baby_bottle:', |
':beer:', |
':beers:', |
':cocktail:', |
':tropical_drink:', |
':wine_glass:', |
':fork_and_knife:', |
':pizza:', |
':hamburger:', |
':fries:', |
':poultry_leg:', |
':meat_on_bone:', |
':spaghetti:', |
':curry:', |
':fried_shrimp:', |
':bento:', |
':sushi:', |
':fish_cake:', |
':rice_ball:', |
':rice_cracker:', |
':rice:', |
':ramen:', |
':stew:', |
':oden:', |
':dango:', |
':egg:', |
':bread:', |
':doughnut:', |
':custard:', |
':icecream:', |
':ice_cream:', |
':shaved_ice:', |
':birthday:', |
':cake:', |
':cookie:', |
':chocolate_bar:', |
':candy:', |
':lollipop:', |
':honey_pot:', |
':apple:', |
':green_apple:', |
':tangerine:', |
':lemon:', |
':cherries:', |
':grapes:', |
':watermelon:', |
':strawberry:', |
':peach:', |
':melon:', |
':banana:', |
':pear:', |
':pineapple:', |
':sweet_potato:', |
':eggplant:', |
':tomato:', |
':corn:', |
':house:', |
':house_with_garden:', |
':school:', |
':office:', |
':post_office:', |
':hospital:', |
':bank:', |
':convenience_store:', |
':love_hotel:', |
':hotel:', |
':wedding:', |
':church:', |
':department_store:', |
':european_post_office:', |
':city_sunrise:', |
':city_sunset:', |
':japanese_castle:', |
':european_castle:', |
':tent:', |
':factory:', |
':tokyo_tower:', |
':japan:', |
':mount_fuji:', |
':sunrise_over_mountains:', |
':sunrise:', |
':stars:', |
':statue_of_liberty:', |
':bridge_at_night:', |
':carousel_horse:', |
':rainbow:', |
':ferris_wheel:', |
':fountain:', |
':roller_coaster:', |
':ship:', |
':speedboat:', |
':boat:', |
':sailboat:', |
':rowboat:', |
':anchor:', |
':rocket:', |
':airplane:', |
':helicopter:', |
':steam_locomotive:', |
':tram:', |
':mountain_railway:', |
':bike:', |
':aerial_tramway:', |
':suspension_railway:', |
':mountain_cableway:', |
':tractor:', |
':blue_car:', |
':oncoming_automobile:', |
':car:', |
':red_car:', |
':taxi:', |
':oncoming_taxi:', |
':articulated_lorry:', |
':bus:', |
':oncoming_bus:', |
':rotating_light:', |
':police_car:', |
':oncoming_police_car:', |
':fire_engine:', |
':ambulance:', |
':minibus:', |
':truck:', |
':train:', |
':station:', |
':train2:', |
':bullettrain_front:', |
':bullettrain_side:', |
':light_rail:', |
':monorail:', |
':railway_car:', |
':trolleybus:', |
':ticket:', |
':fuelpump:', |
':vertical_traffic_light:', |
':traffic_light:', |
':warning:', |
':construction:', |
':beginner:', |
':atm:', |
':slot_machine:', |
':busstop:', |
':barber:', |
':hotsprings:', |
':checkered_flag:', |
':crossed_flags:', |
':izakaya_lantern:', |
':moyai:', |
':circus_tent:', |
':performing_arts:', |
':round_pushpin:', |
':triangular_flag_on_post:', |
':jp:', |
':kr:', |
':cn:', |
':us:', |
':fr:', |
':es:', |
':it:', |
':ru:', |
':gb:', |
':uk:', |
':de:', |
':one:', |
':two:', |
':three:', |
':four:', |
':five:', |
':six:', |
':seven:', |
':eight:', |
':nine:', |
':keycap_ten:', |
':1234:', |
':zero:', |
':hash:', |
':symbols:', |
':arrow_backward:', |
':arrow_down:', |
':arrow_forward:', |
':arrow_left:', |
':capital_abcd:', |
':abcd:', |
':abc:', |
':arrow_lower_left:', |
':arrow_lower_right:', |
':arrow_right:', |
':arrow_up:', |
':arrow_upper_left:', |
':arrow_upper_right:', |
':arrow_double_down:', |
':arrow_double_up:', |
':arrow_down_small:', |
':arrow_heading_down:', |
':arrow_heading_up:', |
':leftwards_arrow_with_hook:', |
':arrow_right_hook:', |
':left_right_arrow:', |
':arrow_up_down:', |
':arrow_up_small:', |
':arrows_clockwise:', |
':arrows_counterclockwise:', |
':rewind:', |
':fast_forward:', |
':information_source:', |
':ok:', |
':twisted_rightwards_arrows:', |
':repeat:', |
':repeat_one:', |
':new:', |
':top:', |
':up:', |
':cool:', |
':free:', |
':ng:', |
':cinema:', |
':koko:', |
':signal_strength:', |
':u5272:', |
':u5408:', |
':u55b6:', |
':u6307:', |
':u6708:', |
':u6709:', |
':u6e80:', |
':u7121:', |
':u7533:', |
':u7a7a:', |
':u7981:', |
':sa:', |
':restroom:', |
':mens:', |
':womens:', |
':baby_symbol:', |
':no_smoking:', |
':parking:', |
':wheelchair:', |
':metro:', |
':baggage_claim:', |
':accept:', |
':wc:', |
':potable_water:', |
':put_litter_in_its_place:', |
':secret:', |
':congratulations:', |
':m:', |
':passport_control:', |
':left_luggage:', |
':customs:', |
':ideograph_advantage:', |
':cl:', |
':sos:', |
':id:', |
':no_entry_sign:', |
':underage:', |
':no_mobile_phones:', |
':do_not_litter:', |
':non-potable_water:', |
':no_bicycles:', |
':no_pedestrians:', |
':children_crossing:', |
':no_entry:', |
':eight_spoked_asterisk:', |
':sparkle:', |
':eight_pointed_black_star:', |
':heart_decoration:', |
':vs:', |
':vibration_mode:', |
':mobile_phone_off:', |
':chart:', |
':currency_exchange:', |
':aries:', |
':taurus:', |
':gemini:', |
':cancer:', |
':leo:', |
':virgo:', |
':libra:', |
':scorpius:', |
':sagittarius:', |
':capricorn:', |
':aquarius:', |
':pisces:', |
':ophiuchus:', |
':six_pointed_star:', |
':negative_squared_cross_mark:', |
':a:', |
':b:', |
':ab:', |
':o2:', |
':diamond_shape_with_a_dot_inside:', |
':recycle:', |
':end:', |
':back:', |
':on:', |
':soon:', |
':clock1:', |
':clock130:', |
':clock10:', |
':clock1030:', |
':clock11:', |
':clock1130:', |
':clock12:', |
':clock1230:', |
':clock2:', |
':clock230:', |
':clock3:', |
':clock330:', |
':clock4:', |
':clock430:', |
':clock5:', |
':clock530:', |
':clock6:', |
':clock630:', |
':clock7:', |
':clock730:', |
':clock8:', |
':clock830:', |
':clock9:', |
':clock930:', |
':heavy_dollar_sign:', |
':copyright:', |
':registered:', |
':tm:', |
':x:', |
':heavy_exclamation_mark:', |
':bangbang:', |
':interrobang:', |
':o:', |
':heavy_multiplication_x:', |
':heavy_plus_sign:', |
':heavy_minus_sign:', |
':heavy_division_sign:', |
':white_flower:', |
':100:', |
':heavy_check_mark:', |
':ballot_box_with_check:', |
':radio_button:', |
':link:', |
':curly_loop:', |
':wavy_dash:', |
':part_alternation_mark:', |
':trident:', |
':black_small_square:', |
':white_small_square:', |
':black_medium_small_square:', |
':white_medium_small_square:', |
':black_medium_square:', |
':white_medium_square:', |
':black_large_square:', |
':white_large_square:', |
':white_check_mark:', |
':black_square_button:', |
':white_square_button:', |
':black_circle:', |
':white_circle:', |
':red_circle:', |
':large_blue_circle:', |
':large_blue_diamond:', |
':large_orange_diamond:', |
':small_blue_diamond:', |
':small_orange_diamond:', |
':small_red_triangle:', |
':small_red_triangle_down:', |
':shipit:' |
] |
}; |
// Add all emoji in a dropdown |
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
en: { |
emoji: 'Add an emoji' |
}, |
fr: { |
emoji: 'Ajouter un emoji' |
}, |
zh_cn: { |
emoji: '添加表情' |
} |
}, |
// jshint camelcase:true |
plugins: { |
emoji: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.emoji = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.emoji || {}); |
var emojiBtnDef = { |
dropdown: buildDropdown(trumbowyg) |
}; |
trumbowyg.addBtnDef('emoji', emojiBtnDef); |
} |
} |
} |
}); |
function buildDropdown(trumbowyg) { |
var dropdown = []; |
$.each(trumbowyg.o.plugins.emoji.emojiList, function (i, emoji) { |
var btn = emoji, |
btnDef = { |
param: emoji, |
fn: function () { |
trumbowyg.execCmd('insertText', emoji); |
return true; |
} |
}; |
trumbowyg.addBtnDef(btn, btnDef); |
dropdown.push(btn); |
}); |
return dropdown; |
} |
})(jQuery); |
//quickload/js/trumbowyg/plugins/emoji/trumbowyg.emoji.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";function a(a){var o=[];return e.each(a.o.plugins.emoji.emojiList,function(e,r){var i=r,n={param:r,fn:function(){return a.execCmd("insertText",r),!0}};a.addBtnDef(i,n),o.push(i)}),o}var o={emojiList:[":bowtie:",":smile:",":laughing:",":blush:",":smiley:",":relaxed:",":smirk:",":heart_eyes:",":kissing_heart:",":kissing_closed_eyes:",":flushed:",":relieved:",":satisfied:",":grin:",":wink:",":stuck_out_tongue_winking_eye:",":stuck_out_tongue_closed_eyes:",":grinning:",":kissing:",":kissing_smiling_eyes:",":stuck_out_tongue:",":sleeping:",":worried:",":frowning:",":anguished:",":open_mouth:",":grimacing:",":confused:",":hushed:",":expressionless:",":unamused:",":sweat_smile:",":sweat:",":disappointed_relieved:",":weary:",":pensive:",":disappointed:",":confounded:",":fearful:",":cold_sweat:",":persevere:",":cry:",":sob:",":joy:",":astonished:",":scream:",":neckbeard:",":tired_face:",":angry:",":rage:",":triumph:",":sleepy:",":yum:",":mask:",":sunglasses:",":dizzy_face:",":imp:",":smiling_imp:",":neutral_face:",":no_mouth:",":innocent:",":alien:",":yellow_heart:",":blue_heart:",":purple_heart:",":heart:",":green_heart:",":broken_heart:",":heartbeat:",":heartpulse:",":two_hearts:",":revolving_hearts:",":cupid:",":sparkling_heart:",":sparkles:",":star:",":star2:",":dizzy:",":boom:",":collision:",":anger:",":exclamation:",":question:",":grey_exclamation:",":grey_question:",":zzz:",":dash:",":sweat_drops:",":notes:",":musical_note:",":fire:",":hankey:",":poop:",":shit:",":+1:",":thumbsup:",":-1:",":thumbsdown:",":ok_hand:",":punch:",":facepunch:",":fist:",":v:",":wave:",":hand:",":raised_hand:",":open_hands:",":point_up:",":point_down:",":point_left:",":point_right:",":raised_hands:",":pray:",":point_up_2:",":clap:",":muscle:",":metal:",":fu:",":runner:",":running:",":couple:",":family:",":two_men_holding_hands:",":two_women_holding_hands:",":dancer:",":dancers:",":ok_woman:",":no_good:",":information_desk_person:",":raising_hand:",":bride_with_veil:",":person_with_pouting_face:",":person_frowning:",":bow:",":couplekiss:",":couple_with_heart:",":massage:",":haircut:",":nail_care:",":boy:",":girl:",":woman:",":man:",":baby:",":older_woman:",":older_man:",":person_with_blond_hair:",":man_with_gua_pi_mao:",":man_with_turban:",":construction_worker:",":cop:",":angel:",":princess:",":smiley_cat:",":smile_cat:",":heart_eyes_cat:",":kissing_cat:",":smirk_cat:",":scream_cat:",":crying_cat_face:",":joy_cat:",":pouting_cat:",":japanese_ogre:",":japanese_goblin:",":see_no_evil:",":hear_no_evil:",":speak_no_evil:",":guardsman:",":skull:",":feet:",":lips:",":kiss:",":droplet:",":ear:",":eyes:",":nose:",":tongue:",":love_letter:",":bust_in_silhouette:",":busts_in_silhouette:",":speech_balloon:",":thought_balloon:",":feelsgood:",":finnadie:",":goberserk:",":godmode:",":hurtrealbad:",":rage1:",":rage2:",":rage3:",":rage4:",":suspect:",":trollface:",":sunny:",":umbrella:",":cloud:",":snowflake:",":snowman:",":zap:",":cyclone:",":foggy:",":ocean:",":cat:",":dog:",":mouse:",":hamster:",":rabbit:",":wolf:",":frog:",":tiger:",":koala:",":bear:",":pig:",":pig_nose:",":cow:",":boar:",":monkey_face:",":monkey:",":horse:",":racehorse:",":camel:",":sheep:",":elephant:",":panda_face:",":snake:",":bird:",":baby_chick:",":hatched_chick:",":hatching_chick:",":chicken:",":penguin:",":turtle:",":bug:",":honeybee:",":ant:",":beetle:",":snail:",":octopus:",":tropical_fish:",":fish:",":whale:",":whale2:",":dolphin:",":cow2:",":ram:",":rat:",":water_buffalo:",":tiger2:",":rabbit2:",":dragon:",":goat:",":rooster:",":dog2:",":pig2:",":mouse2:",":ox:",":dragon_face:",":blowfish:",":crocodile:",":dromedary_camel:",":leopard:",":cat2:",":poodle:",":paw_prints:",":bouquet:",":cherry_blossom:",":tulip:",":four_leaf_clover:",":rose:",":sunflower:",":hibiscus:",":maple_leaf:",":leaves:",":fallen_leaf:",":herb:",":mushroom:",":cactus:",":palm_tree:",":evergreen_tree:",":deciduous_tree:",":chestnut:",":seedling:",":blossom:",":ear_of_rice:",":shell:",":globe_with_meridians:",":sun_with_face:",":full_moon_with_face:",":new_moon_with_face:",":new_moon:",":waxing_crescent_moon:",":first_quarter_moon:",":waxing_gibbous_moon:",":full_moon:",":waning_gibbous_moon:",":last_quarter_moon:",":waning_crescent_moon:",":last_quarter_moon_with_face:",":first_quarter_moon_with_face:",":crescent_moon:",":earth_africa:",":earth_americas:",":earth_asia:",":volcano:",":milky_way:",":partly_sunny:",":octocat:",":squirrel:",":bamboo:",":gift_heart:",":dolls:",":school_satchel:",":mortar_board:",":flags:",":fireworks:",":sparkler:",":wind_chime:",":rice_scene:",":jack_o_lantern:",":ghost:",":santa:",":christmas_tree:",":gift:",":bell:",":no_bell:",":tanabata_tree:",":tada:",":confetti_ball:",":balloon:",":crystal_ball:",":cd:",":dvd:",":floppy_disk:",":camera:",":video_camera:",":movie_camera:",":computer:",":tv:",":iphone:",":phone:",":telephone:",":telephone_receiver:",":pager:",":fax:",":minidisc:",":vhs:",":sound:",":speaker:",":mute:",":loudspeaker:",":mega:",":hourglass:",":hourglass_flowing_sand:",":alarm_clock:",":watch:",":radio:",":satellite:",":loop:",":mag:",":mag_right:",":unlock:",":lock:",":lock_with_ink_pen:",":closed_lock_with_key:",":key:",":bulb:",":flashlight:",":high_brightness:",":low_brightness:",":electric_plug:",":battery:",":calling:",":email:",":mailbox:",":postbox:",":bath:",":bathtub:",":shower:",":toilet:",":wrench:",":nut_and_bolt:",":hammer:",":seat:",":moneybag:",":yen:",":dollar:",":pound:",":euro:",":credit_card:",":money_with_wings:",":e-mail:",":inbox_tray:",":outbox_tray:",":envelope:",":incoming_envelope:",":postal_horn:",":mailbox_closed:",":mailbox_with_mail:",":mailbox_with_no_mail:",":package:",":door:",":smoking:",":bomb:",":gun:",":hocho:",":pill:",":syringe:",":page_facing_up:",":page_with_curl:",":bookmark_tabs:",":bar_chart:",":chart_with_upwards_trend:",":chart_with_downwards_trend:",":scroll:",":clipboard:",":calendar:",":date:",":card_index:",":file_folder:",":open_file_folder:",":scissors:",":pushpin:",":paperclip:",":black_nib:",":pencil2:",":straight_ruler:",":triangular_ruler:",":closed_book:",":green_book:",":blue_book:",":orange_book:",":notebook:",":notebook_with_decorative_cover:",":ledger:",":books:",":bookmark:",":name_badge:",":microscope:",":telescope:",":newspaper:",":football:",":basketball:",":soccer:",":baseball:",":tennis:",":8ball:",":rugby_football:",":bowling:",":golf:",":mountain_bicyclist:",":bicyclist:",":horse_racing:",":snowboarder:",":swimmer:",":surfer:",":ski:",":spades:",":hearts:",":clubs:",":diamonds:",":gem:",":ring:",":trophy:",":musical_score:",":musical_keyboard:",":violin:",":space_invader:",":video_game:",":black_joker:",":flower_playing_cards:",":game_die:",":dart:",":mahjong:",":clapper:",":memo:",":pencil:",":book:",":art:",":microphone:",":headphones:",":trumpet:",":saxophone:",":guitar:",":shoe:",":sandal:",":high_heel:",":lipstick:",":boot:",":shirt:",":tshirt:",":necktie:",":womans_clothes:",":dress:",":running_shirt_with_sash:",":jeans:",":kimono:",":bikini:",":ribbon:",":tophat:",":crown:",":womans_hat:",":mans_shoe:",":closed_umbrella:",":briefcase:",":handbag:",":pouch:",":purse:",":eyeglasses:",":fishing_pole_and_fish:",":coffee:",":tea:",":sake:",":baby_bottle:",":beer:",":beers:",":cocktail:",":tropical_drink:",":wine_glass:",":fork_and_knife:",":pizza:",":hamburger:",":fries:",":poultry_leg:",":meat_on_bone:",":spaghetti:",":curry:",":fried_shrimp:",":bento:",":sushi:",":fish_cake:",":rice_ball:",":rice_cracker:",":rice:",":ramen:",":stew:",":oden:",":dango:",":egg:",":bread:",":doughnut:",":custard:",":icecream:",":ice_cream:",":shaved_ice:",":birthday:",":cake:",":cookie:",":chocolate_bar:",":candy:",":lollipop:",":honey_pot:",":apple:",":green_apple:",":tangerine:",":lemon:",":cherries:",":grapes:",":watermelon:",":strawberry:",":peach:",":melon:",":banana:",":pear:",":pineapple:",":sweet_potato:",":eggplant:",":tomato:",":corn:",":house:",":house_with_garden:",":school:",":office:",":post_office:",":hospital:",":bank:",":convenience_store:",":love_hotel:",":hotel:",":wedding:",":church:",":department_store:",":european_post_office:",":city_sunrise:",":city_sunset:",":japanese_castle:",":european_castle:",":tent:",":factory:",":tokyo_tower:",":japan:",":mount_fuji:",":sunrise_over_mountains:",":sunrise:",":stars:",":statue_of_liberty:",":bridge_at_night:",":carousel_horse:",":rainbow:",":ferris_wheel:",":fountain:",":roller_coaster:",":ship:",":speedboat:",":boat:",":sailboat:",":rowboat:",":anchor:",":rocket:",":airplane:",":helicopter:",":steam_locomotive:",":tram:",":mountain_railway:",":bike:",":aerial_tramway:",":suspension_railway:",":mountain_cableway:",":tractor:",":blue_car:",":oncoming_automobile:",":car:",":red_car:",":taxi:",":oncoming_taxi:",":articulated_lorry:",":bus:",":oncoming_bus:",":rotating_light:",":police_car:",":oncoming_police_car:",":fire_engine:",":ambulance:",":minibus:",":truck:",":train:",":station:",":train2:",":bullettrain_front:",":bullettrain_side:",":light_rail:",":monorail:",":railway_car:",":trolleybus:",":ticket:",":fuelpump:",":vertical_traffic_light:",":traffic_light:",":warning:",":construction:",":beginner:",":atm:",":slot_machine:",":busstop:",":barber:",":hotsprings:",":checkered_flag:",":crossed_flags:",":izakaya_lantern:",":moyai:",":circus_tent:",":performing_arts:",":round_pushpin:",":triangular_flag_on_post:",":jp:",":kr:",":cn:",":us:",":fr:",":es:",":it:",":ru:",":gb:",":uk:",":de:",":one:",":two:",":three:",":four:",":five:",":six:",":seven:",":eight:",":nine:",":keycap_ten:",":1234:",":zero:",":hash:",":symbols:",":arrow_backward:",":arrow_down:",":arrow_forward:",":arrow_left:",":capital_abcd:",":abcd:",":abc:",":arrow_lower_left:",":arrow_lower_right:",":arrow_right:",":arrow_up:",":arrow_upper_left:",":arrow_upper_right:",":arrow_double_down:",":arrow_double_up:",":arrow_down_small:",":arrow_heading_down:",":arrow_heading_up:",":leftwards_arrow_with_hook:",":arrow_right_hook:",":left_right_arrow:",":arrow_up_down:",":arrow_up_small:",":arrows_clockwise:",":arrows_counterclockwise:",":rewind:",":fast_forward:",":information_source:",":ok:",":twisted_rightwards_arrows:",":repeat:",":repeat_one:",":new:",":top:",":up:",":cool:",":free:",":ng:",":cinema:",":koko:",":signal_strength:",":u5272:",":u5408:",":u55b6:",":u6307:",":u6708:",":u6709:",":u6e80:",":u7121:",":u7533:",":u7a7a:",":u7981:",":sa:",":restroom:",":mens:",":womens:",":baby_symbol:",":no_smoking:",":parking:",":wheelchair:",":metro:",":baggage_claim:",":accept:",":wc:",":potable_water:",":put_litter_in_its_place:",":secret:",":congratulations:",":m:",":passport_control:",":left_luggage:",":customs:",":ideograph_advantage:",":cl:",":sos:",":id:",":no_entry_sign:",":underage:",":no_mobile_phones:",":do_not_litter:",":non-potable_water:",":no_bicycles:",":no_pedestrians:",":children_crossing:",":no_entry:",":eight_spoked_asterisk:",":sparkle:",":eight_pointed_black_star:",":heart_decoration:",":vs:",":vibration_mode:",":mobile_phone_off:",":chart:",":currency_exchange:",":aries:",":taurus:",":gemini:",":cancer:",":leo:",":virgo:",":libra:",":scorpius:",":sagittarius:",":capricorn:",":aquarius:",":pisces:",":ophiuchus:",":six_pointed_star:",":negative_squared_cross_mark:",":a:",":b:",":ab:",":o2:",":diamond_shape_with_a_dot_inside:",":recycle:",":end:",":back:",":on:",":soon:",":clock1:",":clock130:",":clock10:",":clock1030:",":clock11:",":clock1130:",":clock12:",":clock1230:",":clock2:",":clock230:",":clock3:",":clock330:",":clock4:",":clock430:",":clock5:",":clock530:",":clock6:",":clock630:",":clock7:",":clock730:",":clock8:",":clock830:",":clock9:",":clock930:",":heavy_dollar_sign:",":copyright:",":registered:",":tm:",":x:",":heavy_exclamation_mark:",":bangbang:",":interrobang:",":o:",":heavy_multiplication_x:",":heavy_plus_sign:",":heavy_minus_sign:",":heavy_division_sign:",":white_flower:",":100:",":heavy_check_mark:",":ballot_box_with_check:",":radio_button:",":link:",":curly_loop:",":wavy_dash:",":part_alternation_mark:",":trident:",":black_small_square:",":white_small_square:",":black_medium_small_square:",":white_medium_small_square:",":black_medium_square:",":white_medium_square:",":black_large_square:",":white_large_square:",":white_check_mark:",":black_square_button:",":white_square_button:",":black_circle:",":white_circle:",":red_circle:",":large_blue_circle:",":large_blue_diamond:",":large_orange_diamond:",":small_blue_diamond:",":small_orange_diamond:",":small_red_triangle:",":small_red_triangle_down:",":shipit:"]};e.extend(!0,e.trumbowyg,{langs:{en:{emoji:"Add an emoji"},fr:{emoji:"Ajouter un emoji"},zh_cn:{emoji:"添加表情"}},plugins:{emoji:{init:function(r){r.o.plugins.emoji=e.extend(!0,{},o,r.o.plugins.emoji||{});var i={dropdown:a(r)};r.addBtnDef("emoji",i)}}}})}(jQuery); |
//quickload/js/trumbowyg/plugins/insertaudio/trumbowyg.insertaudio.js |
---|
@@ -0,0 +1,77 @@ |
/*/* =========================================================== |
* trumbowyg.insertaudio.js v1.0 |
* InsertAudio plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Adam Hess (AdamHess) |
*/ |
(function ($) { |
'use strict'; |
var insertAudioOptions = { |
src: { |
label: 'URL', |
required: true |
}, |
autoplay: { |
label: 'AutoPlay', |
required: false, |
type: 'checkbox' |
}, |
muted: { |
label: 'Muted', |
required: false, |
type: 'checkbox' |
}, |
preload: { |
label: 'preload options', |
required: false |
} |
}; |
$.extend(true, $.trumbowyg, { |
langs: { |
en: { |
insertAudio: 'Insert Audio' |
} |
}, |
plugins: { |
insertAudio: { |
init: function (trumbowyg) { |
var btnDef = { |
fn: function () { |
var insertAudioCallback = function (v) { |
// controls should always be show otherwise the audio will |
// be invisible defeating the point of a wysiwyg |
var html = '<audio controls'; |
if (v.src) { |
html += ' src=\'' + v.src + '\''; |
} |
if (v.autoplay) { |
html += ' autoplay'; |
} |
if (v.muted) { |
html += ' muted'; |
} |
if (v.preload) { |
html += ' preload=\'' + v + '\''; |
} |
html += '></audio>'; |
var node = $(html)[0]; |
trumbowyg.range.deleteContents(); |
trumbowyg.range.insertNode(node); |
return true; |
}; |
trumbowyg.openModalInsert(trumbowyg.lang.insertAudio, insertAudioOptions, insertAudioCallback); |
} |
}; |
trumbowyg.addBtnDef('insertAudio', btnDef); |
} |
} |
} |
}); |
})(jQuery); |
//quickload/js/trumbowyg/plugins/insertaudio/trumbowyg.insertaudio.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";var r={src:{label:"URL",required:!0},autoplay:{label:"AutoPlay",required:!1,type:"checkbox"},muted:{label:"Muted",required:!1,type:"checkbox"},preload:{label:"preload options",required:!1}};e.extend(!0,e.trumbowyg,{langs:{en:{insertAudio:"Insert Audio"}},plugins:{insertAudio:{init:function(t){var n={fn:function(){var n=function(r){var n="<audio controls";r.src&&(n+=" src='"+r.src+"'"),r.autoplay&&(n+=" autoplay"),r.muted&&(n+=" muted"),r.preload&&(n+=" preload='"+r+"'"),n+="></audio>";var o=e(n)[0];return t.range.deleteContents(),t.range.insertNode(o),!0};t.openModalInsert(t.lang.insertAudio,r,n)}};t.addBtnDef("insertAudio",n)}}}})}(jQuery); |
//quickload/js/trumbowyg/plugins/noembed/trumbowyg.noembed.js |
---|
@@ -0,0 +1,96 @@ |
/* =========================================================== |
* trumbowyg.noembed.js v1.0 |
* noEmbed plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Jake Johns (jakejohns) |
*/ |
(function ($) { |
'use strict'; |
var defaultOptions = { |
proxy: 'https://noembed.com/embed?nowrap=on', |
urlFiled: 'url', |
data: [], |
success: undefined, |
error: undefined |
}; |
$.extend(true, $.trumbowyg, { |
langs: { |
en: { |
noembed: 'noEmbed', |
noembedError: 'Error' |
}, |
sk: { |
noembedError: 'Chyba' |
}, |
fr: { |
noembed: 'noEmbed', |
noembedError: 'Erreur' |
}, |
cs: { |
noembedError: 'Chyba' |
} |
}, |
plugins: { |
noembed: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.noembed = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.noembed || {}); |
var btnDef = { |
fn: function () { |
var $modal = trumbowyg.openModalInsert( |
// Title |
trumbowyg.lang.noembed, |
// Fields |
{ |
url: { |
label: 'URL', |
required: true |
} |
}, |
// Callback |
function (data) { |
$.ajax({ |
url: trumbowyg.o.plugins.noembed.proxy, |
type: 'GET', |
data: data, |
cache: false, |
dataType: 'json', |
success: trumbowyg.o.plugins.noembed.success || function (data) { |
if (data.html) { |
trumbowyg.execCmd('insertHTML', data.html); |
setTimeout(function () { |
trumbowyg.closeModal(); |
}, 250); |
} else { |
trumbowyg.addErrorOnModalField( |
$('input[type=text]', $modal), |
data.error |
); |
} |
}, |
error: trumbowyg.o.plugins.noembed.error || function () { |
trumbowyg.addErrorOnModalField( |
$('input[type=text]', $modal), |
trumbowyg.lang.noembedError |
); |
} |
}); |
} |
); |
} |
}; |
trumbowyg.addBtnDef('noembed', btnDef); |
} |
} |
} |
}); |
})(jQuery); |
//quickload/js/trumbowyg/plugins/noembed/trumbowyg.noembed.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";var o={proxy:"https://noembed.com/embed?nowrap=on",urlFiled:"url",data:[],success:void 0,error:void 0};e.extend(!0,e.trumbowyg,{langs:{en:{noembed:"noEmbed",noembedError:"Error"},sk:{noembedError:"Chyba"},fr:{noembed:"noEmbed",noembedError:"Erreur"},cs:{noembedError:"Chyba"}},plugins:{noembed:{init:function(n){n.o.plugins.noembed=e.extend(!0,{},o,n.o.plugins.noembed||{});var r={fn:function(){var o=n.openModalInsert(n.lang.noembed,{url:{label:"URL",required:!0}},function(r){e.ajax({url:n.o.plugins.noembed.proxy,type:"GET",data:r,cache:!1,dataType:"json",success:n.o.plugins.noembed.success||function(r){r.html?(n.execCmd("insertHTML",r.html),setTimeout(function(){n.closeModal()},250)):n.addErrorOnModalField(e("input[type=text]",o),r.error)},error:n.o.plugins.noembed.error||function(){n.addErrorOnModalField(e("input[type=text]",o),n.lang.noembedError)}})})}};n.addBtnDef("noembed",r)}}}})}(jQuery); |
//quickload/js/trumbowyg/plugins/pasteimage/trumbowyg.pasteimage.js |
---|
@@ -0,0 +1,41 @@ |
/* =========================================================== |
* trumbowyg.pasteimage.js v1.0 |
* Basic base64 paste plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
(function ($) { |
'use strict'; |
$.extend(true, $.trumbowyg, { |
plugins: { |
pasteImage: { |
init: function (trumbowyg) { |
trumbowyg.pasteHandlers.push(function (pasteEvent) { |
try { |
var items = (pasteEvent.originalEvent || pasteEvent).clipboardData.items, |
reader; |
for (var i = items.length -1; i >= 0; i += 1) { |
if (items[i].type.match(/^image\//)) { |
reader = new FileReader(); |
/* jshint -W083 */ |
reader.onloadend = function (event) { |
trumbowyg.execCmd('insertImage', event.target.result, undefined, true); |
}; |
/* jshint +W083 */ |
reader.readAsDataURL(items[i].getAsFile()); |
} |
} |
} catch (c) { |
} |
}); |
} |
} |
} |
}); |
})(jQuery); |
//quickload/js/trumbowyg/plugins/pasteimage/trumbowyg.pasteimage.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{pasteImage:{init:function(e){e.pasteHandlers.push(function(t){try{for(var a,n=(t.originalEvent||t).clipboardData.items,i=n.length-1;i>=0;i+=1)n[i].type.match(/^image\//)&&(a=new FileReader,a.onloadend=function(t){e.execCmd("insertImage",t.target.result,void 0,!0)},a.readAsDataURL(n[i].getAsFile()))}catch(r){}})}}}})}(jQuery); |
//quickload/js/trumbowyg/plugins/preformatted/trumbowyg.preformatted.js |
---|
@@ -0,0 +1,117 @@ |
/* =========================================================== |
* trumbowyg.preformatted.js v1.0 |
* Preformatted plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Casella Edoardo (Civile) |
*/ |
(function ($) { |
'use strict'; |
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
en: { |
preformatted: 'Code sample <pre>' |
}, |
fr: { |
preformatted: 'Exemple de code' |
}, |
it: { |
preformatted: 'Codice <pre>' |
}, |
zh_cn: { |
preformatted: '代码示例 <pre>' |
} |
}, |
// jshint camelcase:true |
plugins: { |
preformatted: { |
init: function (trumbowyg) { |
var btnDef = { |
fn: function () { |
trumbowyg.saveRange(); |
var text = trumbowyg.getRangeText(); |
if (text.replace(/\s/g, '') !== '') { |
try { |
var curtag = getSelectionParentElement().tagName.toLowerCase(); |
if (curtag === 'code' || curtag === 'pre') { |
return unwrapCode(); |
} |
else { |
trumbowyg.execCmd('insertHTML', '<pre><code>' + strip(text) + '</code></pre>'); |
} |
} catch (e) { |
} |
} |
}, |
tag: 'pre' |
}; |
trumbowyg.addBtnDef('preformatted', btnDef); |
} |
} |
} |
}); |
/* |
* GetSelectionParentElement |
*/ |
function getSelectionParentElement() { |
var parentEl = null, |
selection; |
if (window.getSelection) { |
selection = window.getSelection(); |
if (selection.rangeCount) { |
parentEl = selection.getRangeAt(0).commonAncestorContainer; |
if (parentEl.nodeType !== 1) { |
parentEl = parentEl.parentNode; |
} |
} |
} else if ((selection = document.selection) && selection.type !== 'Control') { |
parentEl = selection.createRange().parentElement(); |
} |
return parentEl; |
} |
/* |
* Strip |
* returns a text without HTML tags |
*/ |
function strip(html) { |
var tmp = document.createElement('DIV'); |
tmp.innerHTML = html; |
return tmp.textContent || tmp.innerText || ''; |
} |
/* |
* UnwrapCode |
* ADD/FIX: to improve, works but can be better |
* "paranoic" solution |
*/ |
function unwrapCode() { |
var container = null; |
if (document.selection) { //for IE |
container = document.selection.createRange().parentElement(); |
} else { |
var select = window.getSelection(); |
if (select.rangeCount > 0) { |
container = select.getRangeAt(0).startContainer.parentNode; |
} |
} |
//'paranoic' unwrap |
var ispre = $(container).contents().closest('pre').length; |
var iscode = $(container).contents().closest('code').length; |
if (ispre && iscode) { |
$(container).contents().unwrap('code').unwrap('pre'); |
} else if (ispre) { |
$(container).contents().unwrap('pre'); |
} else if (iscode) { |
$(container).contents().unwrap('code'); |
} |
} |
})(jQuery); |
//quickload/js/trumbowyg/plugins/preformatted/trumbowyg.preformatted.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";function t(){var e,t=null;return window.getSelection?(e=window.getSelection(),e.rangeCount&&(t=e.getRangeAt(0).commonAncestorContainer,1!==t.nodeType&&(t=t.parentNode))):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement()),t}function n(e){var t=document.createElement("DIV");return t.innerHTML=e,t.textContent||t.innerText||""}function r(){var t=null;if(document.selection)t=document.selection.createRange().parentElement();else{var n=window.getSelection();n.rangeCount>0&&(t=n.getRangeAt(0).startContainer.parentNode)}var r=e(t).contents().closest("pre").length,o=e(t).contents().closest("code").length;r&&o?e(t).contents().unwrap("code").unwrap("pre"):r?e(t).contents().unwrap("pre"):o&&e(t).contents().unwrap("code")}e.extend(!0,e.trumbowyg,{langs:{en:{preformatted:"Code sample <pre>"},fr:{preformatted:"Exemple de code"},it:{preformatted:"Codice <pre>"},zh_cn:{preformatted:"代码示例 <pre>"}},plugins:{preformatted:{init:function(e){var o={fn:function(){e.saveRange();var o=e.getRangeText();if(""!==o.replace(/\s/g,""))try{var a=t().tagName.toLowerCase();if("code"===a||"pre"===a)return r();e.execCmd("insertHTML","<pre><code>"+n(o)+"</code></pre>")}catch(c){}},tag:"pre"};e.addBtnDef("preformatted",o)}}}})}(jQuery); |
//quickload/js/trumbowyg/plugins/table/trumbowyg.table.js |
---|
@@ -0,0 +1,136 @@ |
/* =========================================================== |
* trumbowyg.table.js v1.2 |
* Table plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Lawrence Meckan |
* Twitter : @absalomedia |
* Website : absalom.biz |
*/ |
(function ($) { |
'use strict'; |
var defaultOptions = { |
rows: 0, |
columns: 0, |
styler: '' |
}; |
$.extend(true, $.trumbowyg, { |
langs: { |
en: { |
table: 'Insert table', |
tableAddRow: 'Add rows', |
tableAddColumn: 'Add columns', |
rows: 'Rows', |
columns: 'Columns', |
styler: 'Table class', |
error: 'Error' |
}, |
sk: { |
table: 'Vytvoriť tabuľky', |
tableAddRow: 'Pridať riadok', |
tableAddColumn: 'Pridať stĺpec', |
rows: 'Riadky', |
columns: 'Stĺpce', |
styler: 'Tabuľku triedy', |
error: 'Chyba' |
}, |
fr: { |
table: 'Insérer un tableau', |
tableAddRow: 'Ajouter des lignes', |
tableAddColumn: 'Ajouter des colonnes', |
rows: 'Lignes', |
columns: 'Colonnes', |
styler: 'Classes CSS sur la table', |
error: 'Erreur' |
}, |
cs: { |
table: 'Vytvořit příkaz Table', |
tableAddRow: 'Přidat řádek', |
tableAddColumn: 'Přidat sloupec', |
rows: 'Řádky', |
columns: 'Sloupce', |
styler: 'Tabulku třída', |
error: 'Chyba' |
} |
}, |
plugins: { |
table: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.table = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.table || {}); |
var tableBuild = { |
fn: function () { |
trumbowyg.saveRange(); |
trumbowyg.openModalInsert( |
// Title |
trumbowyg.lang.table, |
// Fields |
{ |
rows: { |
type: 'number', |
required: true |
}, |
columns: { |
type: 'number', |
required: true |
}, |
styler: { |
label: trumbowyg.lang.styler, |
type: 'text' |
} |
}, |
function (v) { // v is value |
var tabler = $('<table></table>'); |
if (v.styler.length !== 0) { |
tabler.addClass(v.styler); |
} |
for (var i = 0; i < v.rows; i += 1) { |
var row = $('<tr></tr>').appendTo(tabler); |
for (var j = 0; j < v.columns; j += 1) { |
$('<td></td>').appendTo(row); |
} |
} |
trumbowyg.range.deleteContents(); |
trumbowyg.range.insertNode(tabler[0]); |
return true; |
}); |
} |
}; |
var addRow = { |
fn: function () { |
trumbowyg.saveRange(); |
var rower = $('<tr></tr>'); |
trumbowyg.range.deleteContents(); |
trumbowyg.range.insertNode(rower[0]); |
return true; |
} |
}; |
var addColumn = { |
fn: function () { |
trumbowyg.saveRange(); |
var columner = $('<td></td>'); |
trumbowyg.range.deleteContents(); |
trumbowyg.range.insertNode(columner[0]); |
return true; |
} |
}; |
trumbowyg.addBtnDef('table', tableBuild); |
trumbowyg.addBtnDef('tableAddRow', addRow); |
trumbowyg.addBtnDef('tableAddColumn', addColumn); |
} |
} |
} |
}); |
})(jQuery); |
//quickload/js/trumbowyg/plugins/table/trumbowyg.table.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";var t={rows:0,columns:0,styler:""};e.extend(!0,e.trumbowyg,{langs:{en:{table:"Insert table",tableAddRow:"Add rows",tableAddColumn:"Add columns",rows:"Rows",columns:"Columns",styler:"Table class",error:"Error"},sk:{table:"Vytvoriť tabuľky",tableAddRow:"Pridať riadok",tableAddColumn:"Pridať stĺpec",rows:"Riadky",columns:"Stĺpce",styler:"Tabuľku triedy",error:"Chyba"},fr:{table:"Insérer un tableau",tableAddRow:"Ajouter des lignes",tableAddColumn:"Ajouter des colonnes",rows:"Lignes",columns:"Colonnes",styler:"Classes CSS sur la table",error:"Erreur"},cs:{table:"Vytvořit příkaz Table",tableAddRow:"Přidat řádek",tableAddColumn:"Přidat sloupec",rows:"Řádky",columns:"Sloupce",styler:"Tabulku třída",error:"Chyba"}},plugins:{table:{init:function(r){r.o.plugins.table=e.extend(!0,{},t,r.o.plugins.table||{});var n={fn:function(){r.saveRange(),r.openModalInsert(r.lang.table,{rows:{type:"number",required:!0},columns:{type:"number",required:!0},styler:{label:r.lang.styler,type:"text"}},function(t){var n=e("<table></table>");0!==t.styler.length&&n.addClass(t.styler);for(var a=0;a<t.rows;a+=1)for(var l=e("<tr></tr>").appendTo(n),o=0;o<t.columns;o+=1)e("<td></td>").appendTo(l);return r.range.deleteContents(),r.range.insertNode(n[0]),!0})}},a={fn:function(){r.saveRange();var t=e("<tr></tr>");return r.range.deleteContents(),r.range.insertNode(t[0]),!0}},l={fn:function(){r.saveRange();var t=e("<td></td>");return r.range.deleteContents(),r.range.insertNode(t[0]),!0}};r.addBtnDef("table",n),r.addBtnDef("tableAddRow",a),r.addBtnDef("tableAddColumn",l)}}}})}(jQuery); |
//quickload/js/trumbowyg/plugins/template/trumbowyg.template.js |
---|
@@ -0,0 +1,52 @@ |
(function($) { |
'use strict'; |
// Adds the language variables |
$.extend(true, $.trumbowyg, { |
langs: { |
en: { |
template: 'Template' |
}, |
nl: { |
template: 'Sjabloon' |
} |
} |
}); |
// Adds the extra button definition |
$.extend(true, $.trumbowyg, { |
plugins: { |
template: { |
shouldInit: function(trumbowyg) { |
return trumbowyg.o.plugins.hasOwnProperty('templates'); |
}, |
init: function(trumbowyg) { |
trumbowyg.addBtnDef('template', { |
dropdown: templateSelector(trumbowyg), |
hasIcon: false, |
text: trumbowyg.lang.template |
}); |
} |
} |
} |
}); |
// Creates the template-selector dropdown. |
function templateSelector(trumbowyg) { |
var available = trumbowyg.o.plugins.templates; |
var templates = []; |
$.each(available, function(index, template) { |
trumbowyg.addBtnDef('template_' + index, { |
fn: function(){ |
trumbowyg.html(template.html); |
}, |
hasIcon: false, |
title: template.name |
}); |
templates.push('template_' + index); |
}); |
return templates; |
} |
})(jQuery); |
//quickload/js/trumbowyg/plugins/template/trumbowyg.template.min.js |
---|
@@ -0,0 +1 @@ |
!function(t){"use strict";function e(e){var n=e.o.plugins.templates,a=[];return t.each(n,function(t,n){e.addBtnDef("template_"+t,{fn:function(){e.html(n.html)},hasIcon:!1,title:n.name}),a.push("template_"+t)}),a}t.extend(!0,t.trumbowyg,{langs:{en:{template:"Template"},nl:{template:"Sjabloon"}}}),t.extend(!0,t.trumbowyg,{plugins:{template:{shouldInit:function(t){return t.o.plugins.hasOwnProperty("templates")},init:function(t){t.addBtnDef("template",{dropdown:e(t),hasIcon:!1,text:t.lang.template})}}}})}(jQuery); |
//quickload/js/trumbowyg/plugins/upload/trumbowyg.upload.js |
---|
@@ -0,0 +1,223 @@ |
/* =========================================================== |
* trumbowyg.upload.js v1.2 |
* Upload plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
* Mod by : Aleksandr-ru |
* Twitter : @Aleksandr_ru |
* Website : aleksandr.ru |
*/ |
(function ($) { |
'use strict'; |
var defaultOptions = { |
serverPath: './src/plugins/upload/trumbowyg.upload.php', |
fileFieldName: 'fileToUpload', |
data: [], // Additional data for ajax [{name: 'key', value: 'value'}] |
headers: {}, // Additional headers |
xhrFields: {}, // Additional fields |
urlPropertyName: 'file', // How to get url from the json response (for instance 'url' for {url: ....}) |
statusPropertyName: 'success', // How to get status from the json response |
success: undefined, // Success callback: function (data, trumbowyg, $modal, values) {} |
error: undefined // Error callback: function () {} |
}; |
function getDeep(object, propertyParts) { |
var mainProperty = propertyParts.shift(), |
otherProperties = propertyParts; |
if (object !== null) { |
if (otherProperties.length === 0) { |
return object[mainProperty]; |
} |
if (typeof object === 'object') { |
return getDeep(object[mainProperty], otherProperties); |
} |
} |
return object; |
} |
addXhrProgressEvent(); |
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
en: { |
upload: 'Upload', |
file: 'File', |
uploadError: 'Error' |
}, |
sk: { |
upload: 'Nahrať', |
file: 'Súbor', |
uploadError: 'Chyba' |
}, |
fr: { |
upload: 'Envoi', |
file: 'Fichier', |
uploadError: 'Erreur' |
}, |
cs: { |
upload: 'Nahrát obrázek', |
file: 'Soubor', |
uploadError: 'Chyba' |
}, |
zh_cn: { |
upload: '上传', |
file: '文件', |
uploadError: '错误' |
}, |
ru: { |
upload: 'Загрузка', |
file: 'Файл', |
uploadError: 'Ошибка' |
} |
}, |
// jshint camelcase:true |
plugins: { |
upload: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.upload = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.upload || {}); |
var btnDef = { |
fn: function () { |
trumbowyg.saveRange(); |
var file, |
prefix = trumbowyg.o.prefix; |
var $modal = trumbowyg.openModalInsert( |
// Title |
trumbowyg.lang.upload, |
// Fields |
{ |
file: { |
type: 'file', |
required: true, |
attributes: { |
accept: 'image/*' |
} |
}, |
alt: { |
label: 'description', |
value: trumbowyg.getRangeText() |
} |
}, |
// Callback |
function (values) { |
var data = new FormData(); |
data.append(trumbowyg.o.plugins.upload.fileFieldName, file); |
trumbowyg.o.plugins.upload.data.map(function (cur) { |
data.append(cur.name, cur.value); |
}); |
if ($('.' + prefix + 'progress', $modal).length === 0) { |
$('.' + prefix + 'modal-title', $modal) |
.after( |
$('<div/>', { |
'class': prefix + 'progress' |
}).append( |
$('<div/>', { |
'class': prefix + 'progress-bar' |
}) |
) |
); |
} |
$.ajax({ |
url: trumbowyg.o.plugins.upload.serverPath, |
headers: trumbowyg.o.plugins.upload.headers, |
xhrFields: trumbowyg.o.plugins.upload.xhrFields, |
type: 'POST', |
data: data, |
cache: false, |
dataType: 'json', |
processData: false, |
contentType: false, |
progressUpload: function (e) { |
$('.' + prefix + 'progress-bar').stop().animate({ |
width: Math.round(e.loaded * 100 / e.total) + '%' |
}, 200); |
}, |
success: function (data) { |
if (trumbowyg.o.plugins.upload.success) { |
trumbowyg.o.plugins.upload.success(data, trumbowyg, $modal, values); |
} else { |
if (!!getDeep(data, trumbowyg.o.plugins.upload.statusPropertyName.split('.'))) { |
var url = getDeep(data, trumbowyg.o.plugins.upload.urlPropertyName.split('.')); |
trumbowyg.execCmd('insertImage', url); |
$('img[src="' + url + '"]:not([alt])', trumbowyg.$box).attr('alt', values.alt); |
setTimeout(function () { |
trumbowyg.closeModal(); |
}, 250); |
trumbowyg.$c.trigger('tbwuploadsuccess', [trumbowyg, data, url]); |
} else { |
trumbowyg.addErrorOnModalField( |
$('input[type=file]', $modal), |
trumbowyg.lang[data.message] |
); |
trumbowyg.$c.trigger('tbwuploaderror', [trumbowyg, data]); |
} |
} |
}, |
error: trumbowyg.o.plugins.upload.error || function () { |
trumbowyg.addErrorOnModalField( |
$('input[type=file]', $modal), |
trumbowyg.lang.uploadError |
); |
trumbowyg.$c.trigger('tbwuploaderror', [trumbowyg]); |
} |
}); |
} |
); |
$('input[type=file]').on('change', function (e) { |
try { |
// If multiple files allowed, we just get the first. |
file = e.target.files[0]; |
} catch (err) { |
// In IE8, multiple files not allowed |
file = e.target.value; |
} |
}); |
} |
}; |
trumbowyg.addBtnDef('upload', btnDef); |
} |
} |
} |
}); |
function addXhrProgressEvent() { |
if (!$.trumbowyg && !$.trumbowyg.addedXhrProgressEvent) { // Avoid adding progress event multiple times |
var originalXhr = $.ajaxSettings.xhr; |
$.ajaxSetup({ |
xhr: function () { |
var req = originalXhr(), |
that = this; |
if (req && typeof req.upload === 'object' && that.progressUpload !== undefined) { |
req.upload.addEventListener('progress', function (e) { |
that.progressUpload(e); |
}, false); |
} |
return req; |
} |
}); |
$.trumbowyg.addedXhrProgressEvent = true; |
} |
} |
})(jQuery); |
//quickload/js/trumbowyg/plugins/upload/trumbowyg.upload.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";function r(e,a){var o=a.shift(),l=a;if(null!==e){if(0===l.length)return e[o];if("object"==typeof e)return r(e[o],l)}return e}function a(){if(!e.trumbowyg&&!e.trumbowyg.addedXhrProgressEvent){var r=e.ajaxSettings.xhr;e.ajaxSetup({xhr:function(){var e=r(),a=this;return e&&"object"==typeof e.upload&&void 0!==a.progressUpload&&e.upload.addEventListener("progress",function(e){a.progressUpload(e)},!1),e}}),e.trumbowyg.addedXhrProgressEvent=!0}}var o={serverPath:"./src/plugins/upload/trumbowyg.upload.php",fileFieldName:"fileToUpload",data:[],headers:{},xhrFields:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0};a(),e.extend(!0,e.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},sk:{upload:"Nahrať",file:"Súbor",uploadError:"Chyba"},fr:{upload:"Envoi",file:"Fichier",uploadError:"Erreur"},cs:{upload:"Nahrát obrázek",file:"Soubor",uploadError:"Chyba"},zh_cn:{upload:"上传",file:"文件",uploadError:"错误"},ru:{upload:"Загрузка",file:"Файл",uploadError:"Ошибка"}},plugins:{upload:{init:function(a){a.o.plugins.upload=e.extend(!0,{},o,a.o.plugins.upload||{});var l={fn:function(){a.saveRange();var o,l=a.o.prefix,t=a.openModalInsert(a.lang.upload,{file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:a.getRangeText()}},function(u){var s=new FormData;s.append(a.o.plugins.upload.fileFieldName,o),a.o.plugins.upload.data.map(function(e){s.append(e.name,e.value)}),0===e("."+l+"progress",t).length&&e("."+l+"modal-title",t).after(e("<div/>",{"class":l+"progress"}).append(e("<div/>",{"class":l+"progress-bar"}))),e.ajax({url:a.o.plugins.upload.serverPath,headers:a.o.plugins.upload.headers,xhrFields:a.o.plugins.upload.xhrFields,type:"POST",data:s,cache:!1,dataType:"json",processData:!1,contentType:!1,progressUpload:function(r){e("."+l+"progress-bar").stop().animate({width:Math.round(100*r.loaded/r.total)+"%"},200)},success:function(o){if(a.o.plugins.upload.success)a.o.plugins.upload.success(o,a,t,u);else if(r(o,a.o.plugins.upload.statusPropertyName.split("."))){var l=r(o,a.o.plugins.upload.urlPropertyName.split("."));a.execCmd("insertImage",l),e('img[src="'+l+'"]:not([alt])',a.$box).attr("alt",u.alt),setTimeout(function(){a.closeModal()},250),a.$c.trigger("tbwuploadsuccess",[a,o,l])}else a.addErrorOnModalField(e("input[type=file]",t),a.lang[o.message]),a.$c.trigger("tbwuploaderror",[a,o])},error:a.o.plugins.upload.error||function(){a.addErrorOnModalField(e("input[type=file]",t),a.lang.uploadError),a.$c.trigger("tbwuploaderror",[a])}})});e("input[type=file]").on("change",function(e){try{o=e.target.files[0]}catch(r){o=e.target.value}})}};a.addBtnDef("upload",l)}}}})}(jQuery); |
//quickload/js/trumbowyg/trumbowyg.js |
---|
@@ -0,0 +1,1603 @@ |
/** |
* Trumbowyg v2.5.1 - A lightweight WYSIWYG editor |
* Trumbowyg core file |
* ------------------------ |
* @link http://alex-d.github.io/Trumbowyg |
* @license MIT |
* @author Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
jQuery.trumbowyg = { |
langs: { |
en: { |
viewHTML: 'View HTML', |
undo: 'Undo', |
redo: 'Redo', |
formatting: 'Formatting', |
p: 'Paragraph', |
blockquote: 'Quote', |
code: 'Code', |
header: 'Header', |
bold: 'Bold', |
italic: 'Italic', |
strikethrough: 'Stroke', |
underline: 'Underline', |
strong: 'Strong', |
em: 'Emphasis', |
del: 'Deleted', |
superscript: 'Superscript', |
subscript: 'Subscript', |
unorderedList: 'Unordered list', |
orderedList: 'Ordered list', |
insertImage: 'Insert Image', |
link: 'Link', |
createLink: 'Insert link', |
unlink: 'Remove link', |
justifyLeft: 'Align Left', |
justifyCenter: 'Align Center', |
justifyRight: 'Align Right', |
justifyFull: 'Align Justify', |
horizontalRule: 'Insert horizontal rule', |
removeformat: 'Remove format', |
fullscreen: 'Fullscreen', |
close: 'Close', |
submit: 'Confirm', |
reset: 'Cancel', |
required: 'Required', |
description: 'Description', |
title: 'Title', |
text: 'Text', |
target: 'Target' |
} |
}, |
// Plugins |
plugins: {}, |
// SVG Path globally |
svgPath: null, |
hideButtonTexts: null |
}; |
(function (navigator, window, document, $) { |
'use strict'; |
$.fn.trumbowyg = function (options, params) { |
var trumbowygDataName = 'trumbowyg'; |
if (options === Object(options) || !options) { |
return this.each(function () { |
if (!$(this).data(trumbowygDataName)) { |
$(this).data(trumbowygDataName, new Trumbowyg(this, options)); |
} |
}); |
} |
if (this.length === 1) { |
try { |
var t = $(this).data(trumbowygDataName); |
switch (options) { |
// Exec command |
case 'execCmd': |
return t.execCmd(params.cmd, params.param, params.forceCss); |
// Modal box |
case 'openModal': |
return t.openModal(params.title, params.content); |
case 'closeModal': |
return t.closeModal(); |
case 'openModalInsert': |
return t.openModalInsert(params.title, params.fields, params.callback); |
// Range |
case 'saveRange': |
return t.saveRange(); |
case 'getRange': |
return t.range; |
case 'getRangeText': |
return t.getRangeText(); |
case 'restoreRange': |
return t.restoreRange(); |
// Enable/disable |
case 'enable': |
return t.toggleDisable(false); |
case 'disable': |
return t.toggleDisable(true); |
// Destroy |
case 'destroy': |
return t.destroy(); |
// Empty |
case 'empty': |
return t.empty(); |
// HTML |
case 'html': |
return t.html(params); |
} |
} catch (c) { |
} |
} |
return false; |
}; |
// @param: editorElem is the DOM element |
var Trumbowyg = function (editorElem, options) { |
var t = this, |
trumbowygIconsId = 'trumbowyg-icons'; |
// Get the document of the element. It use to makes the plugin |
// compatible on iframes. |
t.doc = editorElem.ownerDocument || document; |
// jQuery object of the editor |
t.$ta = $(editorElem); // $ta : Textarea |
t.$c = $(editorElem); // $c : creator |
options = options || {}; |
// Localization management |
if (options.lang != null || $.trumbowyg.langs[options.lang] != null) { |
t.lang = $.extend(true, {}, $.trumbowyg.langs.en, $.trumbowyg.langs[options.lang]); |
} else { |
t.lang = $.trumbowyg.langs.en; |
} |
t.hideButtonTexts = $.trumbowyg.hideButtonTexts != null ? $.trumbowyg.hideButtonTexts : options.hideButtonTexts; |
// SVG path |
var svgPathOption = $.trumbowyg.svgPath != null ? $.trumbowyg.svgPath : options.svgPath; |
t.hasSvg = svgPathOption !== false; |
t.svgPath = !!t.doc.querySelector('base') ? window.location.href.split('#')[0] : ''; |
if ($('#' + trumbowygIconsId, t.doc).length === 0 && svgPathOption !== false) { |
if (svgPathOption == null) { |
try { |
throw new Error(); |
} catch (e) { |
var stackLines = e.stack.split('\n'); |
for (var i in stackLines) { |
if (!stackLines[i].match(/http[s]?:\/\//)) { |
continue; |
} |
svgPathOption = stackLines[Number(i)].match(/((http[s]?:\/\/.+\/)([^\/]+\.js))(\?.*)?:/)[1].split('/'); |
svgPathOption.pop(); |
svgPathOption = svgPathOption.join('/') + '/ui/icons.svg'; |
break; |
} |
} |
} |
var div = t.doc.createElement('div'); |
div.id = trumbowygIconsId; |
t.doc.body.insertBefore(div, t.doc.body.childNodes[0]); |
$.ajax({ |
async: true, |
type: 'GET', |
contentType: 'application/x-www-form-urlencoded; charset=UTF-8', |
dataType: 'xml', |
url: svgPathOption, |
data: null, |
beforeSend: null, |
complete: null, |
success: function (data) { |
div.innerHTML = new XMLSerializer().serializeToString(data.documentElement); |
} |
}); |
} |
/** |
* When the button is associated to a empty object |
* fn and title attributs are defined from the button key value |
* |
* For example |
* foo: {} |
* is equivalent to : |
* foo: { |
* fn: 'foo', |
* title: this.lang.foo |
* } |
*/ |
var h = t.lang.header, // Header translation |
isBlinkFunction = function () { |
return (window.chrome || (window.Intl && Intl.v8BreakIterator)) && 'CSS' in window; |
}; |
t.btnsDef = { |
viewHTML: { |
fn: 'toggle' |
}, |
undo: { |
isSupported: isBlinkFunction, |
key: 'Z' |
}, |
redo: { |
isSupported: isBlinkFunction, |
key: 'Y' |
}, |
p: { |
fn: 'formatBlock' |
}, |
blockquote: { |
fn: 'formatBlock' |
}, |
h1: { |
fn: 'formatBlock', |
title: h + ' 1' |
}, |
h2: { |
fn: 'formatBlock', |
title: h + ' 2' |
}, |
h3: { |
fn: 'formatBlock', |
title: h + ' 3' |
}, |
h4: { |
fn: 'formatBlock', |
title: h + ' 4' |
}, |
subscript: { |
tag: 'sub' |
}, |
superscript: { |
tag: 'sup' |
}, |
bold: { |
key: 'B', |
tag: 'b' |
}, |
italic: { |
key: 'I', |
tag: 'i' |
}, |
underline: { |
tag: 'u' |
}, |
strikethrough: { |
tag: 'strike' |
}, |
strong: { |
fn: 'bold', |
key: 'B' |
}, |
em: { |
fn: 'italic', |
key: 'I' |
}, |
del: { |
fn: 'strikethrough' |
}, |
createLink: { |
key: 'K', |
tag: 'a' |
}, |
unlink: {}, |
insertImage: {}, |
justifyLeft: { |
tag: 'left', |
forceCss: true |
}, |
justifyCenter: { |
tag: 'center', |
forceCss: true |
}, |
justifyRight: { |
tag: 'right', |
forceCss: true |
}, |
justifyFull: { |
tag: 'justify', |
forceCss: true |
}, |
unorderedList: { |
fn: 'insertUnorderedList', |
tag: 'ul' |
}, |
orderedList: { |
fn: 'insertOrderedList', |
tag: 'ol' |
}, |
horizontalRule: { |
fn: 'insertHorizontalRule' |
}, |
removeformat: {}, |
fullscreen: { |
class: 'trumbowyg-not-disable' |
}, |
close: { |
fn: 'destroy', |
class: 'trumbowyg-not-disable' |
}, |
// Dropdowns |
formatting: { |
dropdown: ['p', 'blockquote', 'h1', 'h2', 'h3', 'h4'], |
ico: 'p' |
}, |
link: { |
dropdown: ['createLink', 'unlink'] |
} |
}; |
// Defaults Options |
t.o = $.extend(true, {}, { |
lang: 'en', |
fixedBtnPane: false, |
fixedFullWidth: false, |
autogrow: false, |
prefix: 'trumbowyg-', |
semantic: true, |
resetCss: false, |
removeformatPasted: false, |
tagsToRemove: [], |
btnsGrps: { |
design: ['bold', 'italic', 'underline', 'strikethrough'], |
semantic: ['strong', 'em', 'del'], |
justify: ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull'], |
lists: ['unorderedList', 'orderedList'] |
}, |
btns: [ |
['viewHTML'], |
['undo', 'redo'], |
['formatting'], |
'btnGrp-semantic', |
['superscript', 'subscript'], |
['link'], |
['insertImage'], |
'btnGrp-justify', |
'btnGrp-lists', |
['horizontalRule'], |
['removeformat'], |
['fullscreen'] |
], |
// For custom button definitions |
btnsDef: {}, |
inlineElementsSelector: 'a,abbr,acronym,b,caption,cite,code,col,dfn,dir,dt,dd,em,font,hr,i,kbd,li,q,span,strikeout,strong,sub,sup,u', |
pasteHandlers: [], |
imgDblClickHandler: function () { |
var $img = $(this), |
src = $img.attr('src'), |
base64 = '(Base64)'; |
if (src.indexOf('data:image') === 0) { |
src = base64; |
} |
t.openModalInsert(t.lang.insertImage, { |
url: { |
label: 'URL', |
value: src, |
required: true |
}, |
alt: { |
label: t.lang.description, |
value: $img.attr('alt') |
} |
}, function (v) { |
if (v.src !== base64) { |
$img.attr({ |
src: v.src |
}); |
} |
$img.attr({ |
alt: v.alt |
}); |
return true; |
}); |
return false; |
}, |
plugins: {} |
}, options); |
t.disabled = t.o.disabled || (editorElem.nodeName === 'TEXTAREA' && editorElem.disabled); |
if (options.btns) { |
t.o.btns = options.btns; |
} else if (!t.o.semantic) { |
t.o.btns[4] = 'btnGrp-design'; |
} |
$.each(t.o.btnsDef, function (btnName, btnDef) { |
t.addBtnDef(btnName, btnDef); |
}); |
// put this here in the event it would be merged in with options |
t.eventNamespace = 'trumbowyg-event'; |
// Keyboard shortcuts are load in this array |
t.keys = []; |
// Tag to button dynamically hydrated |
t.tagToButton = {}; |
t.tagHandlers = []; |
// Admit multiple paste handlers |
t.pasteHandlers = [].concat(t.o.pasteHandlers); |
// Check if browser is IE |
t.isIE = (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') !== -1); |
t.init(); |
}; |
Trumbowyg.prototype = { |
init: function () { |
var t = this; |
t.height = t.$ta.height(); |
t.initPlugins(); |
try { |
// Disable image resize, try-catch for old IE |
t.doc.execCommand('enableObjectResizing', false, false); |
t.doc.execCommand('defaultParagraphSeparator', false, 'p'); |
} catch (e) { |
} |
t.buildEditor(); |
t.buildBtnPane(); |
t.fixedBtnPaneEvents(); |
t.buildOverlay(); |
setTimeout(function () { |
if (t.disabled) { |
t.toggleDisable(true); |
} |
t.$c.trigger('tbwinit'); |
}); |
}, |
addBtnDef: function (btnName, btnDef) { |
this.btnsDef[btnName] = btnDef; |
}, |
buildEditor: function () { |
var t = this, |
prefix = t.o.prefix, |
html = ''; |
t.$box = $('<div/>', { |
class: prefix + 'box ' + prefix + 'editor-visible ' + prefix + t.o.lang + ' trumbowyg' |
}); |
// $ta = Textarea |
// $ed = Editor |
t.isTextarea = t.$ta.is('textarea'); |
if (t.isTextarea) { |
html = t.$ta.val(); |
t.$ed = $('<div/>'); |
t.$box |
.insertAfter(t.$ta) |
.append(t.$ed, t.$ta); |
} else { |
t.$ed = t.$ta; |
html = t.$ed.html(); |
t.$ta = $('<textarea/>', { |
name: t.$ta.attr('id'), |
height: t.height |
}).val(html); |
t.$box |
.insertAfter(t.$ed) |
.append(t.$ta, t.$ed); |
t.syncCode(); |
} |
t.$ta |
.addClass(prefix + 'textarea') |
.attr('tabindex', -1) |
; |
t.$ed |
.addClass(prefix + 'editor') |
.attr({ |
contenteditable: true, |
dir: t.lang._dir || 'ltr' |
}) |
.html(html) |
; |
if (t.o.tabindex) { |
t.$ed.attr('tabindex', t.o.tabindex); |
} |
if (t.$c.is('[placeholder]')) { |
t.$ed.attr('placeholder', t.$c.attr('placeholder')); |
} |
if (t.o.resetCss) { |
t.$ed.addClass(prefix + 'reset-css'); |
} |
if (!t.o.autogrow) { |
t.$ta.add(t.$ed).css({ |
height: t.height |
}); |
} |
t.semanticCode(); |
var ctrl = false, |
composition = false, |
debounceButtonPaneStatus, |
updateEventName = t.isIE ? 'keyup' : 'input'; |
t.$ed |
.on('dblclick', 'img', t.o.imgDblClickHandler) |
.on('keydown', function (e) { |
if (e.ctrlKey) { |
ctrl = true; |
var key = t.keys[String.fromCharCode(e.which).toUpperCase()]; |
try { |
t.execCmd(key.fn, key.param); |
return false; |
} catch (c) { |
} |
} |
}) |
.on('compositionstart compositionupdate', function () { |
composition = true; |
}) |
.on(updateEventName + ' compositionend', function (e) { |
if (e.type === 'compositionend') { |
composition = false; |
} else if(composition) { |
return; |
} |
var keyCode = e.which; |
if (keyCode >= 37 && keyCode <= 40) { |
return; |
} |
if (e.ctrlKey && (keyCode === 89 || keyCode === 90)) { |
t.$c.trigger('tbwchange'); |
} else if (!ctrl && keyCode !== 17) { |
t.semanticCode(false, keyCode === 13); |
t.$c.trigger('tbwchange'); |
} else if (typeof e.which === 'undefined') { |
t.semanticCode(false, false, true); |
} |
setTimeout(function () { |
ctrl = false; |
}, 200); |
}) |
.on('mouseup keydown keyup', function () { |
clearTimeout(debounceButtonPaneStatus); |
debounceButtonPaneStatus = setTimeout(function () { |
t.updateButtonPaneStatus(); |
}, 50); |
}) |
.on('focus blur', function (e) { |
t.$c.trigger('tbw' + e.type); |
if (e.type === 'blur') { |
$('.' + prefix + 'active-button', t.$btnPane).removeClass(prefix + 'active-button ' + prefix + 'active'); |
} |
}) |
.on('cut', function () { |
setTimeout(function () { |
t.semanticCode(false, true); |
t.$c.trigger('tbwchange'); |
}, 0); |
}) |
.on('paste', function (e) { |
if (t.o.removeformatPasted) { |
e.preventDefault(); |
try { |
// IE |
var text = window.clipboardData.getData('Text'); |
try { |
// <= IE10 |
t.doc.selection.createRange().pasteHTML(text); |
} catch (c) { |
// IE 11 |
t.doc.getSelection().getRangeAt(0).insertNode(t.doc.createTextNode(text)); |
} |
} catch (d) { |
// Not IE |
t.execCmd('insertText', (e.originalEvent || e).clipboardData.getData('text/plain')); |
} |
} |
// Call pasteHandlers |
$.each(t.pasteHandlers, function (i, pasteHandler) { |
pasteHandler(e); |
}); |
setTimeout(function () { |
t.semanticCode(false, true); |
t.$c.trigger('tbwpaste', e); |
}, 0); |
}); |
t.$ta.on('keyup paste', function () { |
t.$c.trigger('tbwchange'); |
}); |
t.$box.on('keydown', function (e) { |
if (e.which === 27 && $('.' + prefix + 'modal-box', t.$box).length === 1) { |
t.closeModal(); |
return false; |
} |
}); |
}, |
// Build button pane, use o.btns option |
buildBtnPane: function () { |
var t = this, |
prefix = t.o.prefix; |
var $btnPane = t.$btnPane = $('<div/>', { |
class: prefix + 'button-pane' |
}); |
$.each(t.o.btns, function (i, btnGrps) { |
// Managment of group of buttons |
try { |
var b = btnGrps.split('btnGrp-'); |
if (b[1] != null) { |
btnGrps = t.o.btnsGrps[b[1]]; |
} |
} catch (c) { |
} |
if (!$.isArray(btnGrps)) { |
btnGrps = [btnGrps]; |
} |
var $btnGroup = $('<div/>', { |
class: prefix + 'button-group ' + ((btnGrps.indexOf('fullscreen') >= 0) ? prefix + 'right' : '') |
}); |
$.each(btnGrps, function (i, btn) { |
try { // Prevent buildBtn error |
var $item; |
if (t.isSupportedBtn(btn)) { // It's a supported button |
$item = t.buildBtn(btn); |
} |
$btnGroup.append($item); |
} catch (c) { |
} |
}); |
$btnPane.append($btnGroup); |
}); |
t.$box.prepend($btnPane); |
}, |
// Build a button and his action |
buildBtn: function (btnName) { // btnName is name of the button |
var t = this, |
prefix = t.o.prefix, |
btn = t.btnsDef[btnName], |
isDropdown = btn.dropdown, |
hasIcon = btn.hasIcon != null ? btn.hasIcon : true, |
textDef = t.lang[btnName] || btnName, |
$btn = $('<button/>', { |
type: 'button', |
class: prefix + btnName + '-button ' + (btn.class || '') + (!hasIcon ? ' ' + prefix + 'textual-button' : ''), |
html: t.hasSvg && hasIcon ? |
'<svg><use xlink:href="' + t.svgPath + '#' + prefix + (btn.ico || btnName).replace(/([A-Z]+)/g, '-$1').toLowerCase() + '"/></svg>' : |
t.hideButtonTexts ? '' : (btn.text || btn.title || t.lang[btnName] || btnName), |
title: (btn.title || btn.text || textDef) + ((btn.key) ? ' (Ctrl + ' + btn.key + ')' : ''), |
tabindex: -1, |
mousedown: function () { |
if (!isDropdown || $('.' + btnName + '-' + prefix + 'dropdown', t.$box).is(':hidden')) { |
$('body', t.doc).trigger('mousedown'); |
} |
if (t.$btnPane.hasClass(prefix + 'disable') && !$(this).hasClass(prefix + 'active') && !$(this).hasClass(prefix + 'not-disable')) { |
return false; |
} |
t.execCmd((isDropdown ? 'dropdown' : false) || btn.fn || btnName, btn.param || btnName, btn.forceCss || false); |
return false; |
} |
}); |
if (isDropdown) { |
$btn.addClass(prefix + 'open-dropdown'); |
var dropdownPrefix = prefix + 'dropdown', |
$dropdown = $('<div/>', { // the dropdown |
class: dropdownPrefix + '-' + btnName + ' ' + dropdownPrefix + ' ' + prefix + 'fixed-top', |
'data-dropdown': btnName |
}); |
$.each(isDropdown, function (i, def) { |
if (t.btnsDef[def] && t.isSupportedBtn(def)) { |
$dropdown.append(t.buildSubBtn(def)); |
} |
}); |
t.$box.append($dropdown.hide()); |
} else if (btn.key) { |
t.keys[btn.key] = { |
fn: btn.fn || btnName, |
param: btn.param || btnName |
}; |
} |
if (!isDropdown) { |
t.tagToButton[(btn.tag || btnName).toLowerCase()] = btnName; |
} |
return $btn; |
}, |
// Build a button for dropdown menu |
// @param n : name of the subbutton |
buildSubBtn: function (btnName) { |
var t = this, |
prefix = t.o.prefix, |
btn = t.btnsDef[btnName], |
hasIcon = btn.hasIcon != null ? btn.hasIcon : true; |
if (btn.key) { |
t.keys[btn.key] = { |
fn: btn.fn || btnName, |
param: btn.param || btnName |
}; |
} |
t.tagToButton[(btn.tag || btnName).toLowerCase()] = btnName; |
return $('<button/>', { |
type: 'button', |
class: prefix + btnName + '-dropdown-button' + (btn.ico ? ' ' + prefix + btn.ico + '-button' : ''), |
html: t.hasSvg && hasIcon ? '<svg><use xlink:href="' + t.svgPath + '#' + prefix + (btn.ico || btnName).replace(/([A-Z]+)/g, '-$1').toLowerCase() + '"/></svg>' + (btn.text || btn.title || t.lang[btnName] || btnName) : (btn.text || btn.title || t.lang[btnName] || btnName), |
title: ((btn.key) ? ' (Ctrl + ' + btn.key + ')' : null), |
style: btn.style || null, |
mousedown: function () { |
$('body', t.doc).trigger('mousedown'); |
t.execCmd(btn.fn || btnName, btn.param || btnName, btn.forceCss || false); |
return false; |
} |
}); |
}, |
// Check if button is supported |
isSupportedBtn: function (b) { |
try { |
return this.btnsDef[b].isSupported(); |
} catch (c) { |
} |
return true; |
}, |
// Build overlay for modal box |
buildOverlay: function () { |
var t = this; |
t.$overlay = $('<div/>', { |
class: t.o.prefix + 'overlay' |
}).css({ |
top: t.$btnPane.outerHeight(), |
height: (t.$ed.outerHeight() + 1) + 'px' |
}).appendTo(t.$box); |
return t.$overlay; |
}, |
showOverlay: function () { |
var t = this; |
$(window).trigger('scroll'); |
t.$overlay.fadeIn(200); |
t.$box.addClass(t.o.prefix + 'box-blur'); |
}, |
hideOverlay: function () { |
var t = this; |
t.$overlay.fadeOut(50); |
t.$box.removeClass(t.o.prefix + 'box-blur'); |
}, |
// Management of fixed button pane |
fixedBtnPaneEvents: function () { |
var t = this, |
fixedFullWidth = t.o.fixedFullWidth, |
$box = t.$box; |
if (!t.o.fixedBtnPane) { |
return; |
} |
t.isFixed = false; |
$(window) |
.on('scroll.'+t.eventNamespace+' resize.'+t.eventNamespace, function () { |
if (!$box) { |
return; |
} |
t.syncCode(); |
var scrollTop = $(window).scrollTop(), |
offset = $box.offset().top + 1, |
bp = t.$btnPane, |
oh = bp.outerHeight() - 2; |
if ((scrollTop - offset > 0) && ((scrollTop - offset - t.height) < 0)) { |
if (!t.isFixed) { |
t.isFixed = true; |
bp.css({ |
position: 'fixed', |
top: 0, |
left: fixedFullWidth ? '0' : 'auto', |
zIndex: 7 |
}); |
$([t.$ta, t.$ed]).css({marginTop: bp.height()}); |
} |
bp.css({ |
width: fixedFullWidth ? '100%' : (($box.width() - 1) + 'px') |
}); |
$('.' + t.o.prefix + 'fixed-top', $box).css({ |
position: fixedFullWidth ? 'fixed' : 'absolute', |
top: fixedFullWidth ? oh : oh + (scrollTop - offset) + 'px', |
zIndex: 15 |
}); |
} else if (t.isFixed) { |
t.isFixed = false; |
bp.removeAttr('style'); |
$([t.$ta, t.$ed]).css({marginTop: 0}); |
$('.' + t.o.prefix + 'fixed-top', $box).css({ |
position: 'absolute', |
top: oh |
}); |
} |
}); |
}, |
// Disable editor |
toggleDisable: function (disable) { |
var t = this, |
prefix = t.o.prefix; |
t.disabled = disable; |
if (disable) { |
t.$ta.attr('disabled', true); |
} else { |
t.$ta.removeAttr('disabled'); |
} |
t.$box.toggleClass(prefix + 'disabled', disable); |
t.$ed.attr('contenteditable', !disable); |
}, |
// Destroy the editor |
destroy: function () { |
var t = this, |
prefix = t.o.prefix, |
height = t.height; |
if (t.isTextarea) { |
t.$box.after( |
t.$ta |
.css({height: height}) |
.val(t.html()) |
.removeClass(prefix + 'textarea') |
.show() |
); |
} else { |
t.$box.after( |
t.$ed |
.css({height: height}) |
.removeClass(prefix + 'editor') |
.removeAttr('contenteditable') |
.html(t.html()) |
.show() |
); |
} |
t.$ed.off('dblclick', 'img'); |
t.destroyPlugins(); |
t.$box.remove(); |
t.$c.removeData('trumbowyg'); |
$('body').removeClass(prefix + 'body-fullscreen'); |
t.$c.trigger('tbwclose'); |
$(window).off('scroll.'+t.eventNamespace+' resize.'+t.eventNamespace); |
}, |
// Empty the editor |
empty: function () { |
this.$ta.val(''); |
this.syncCode(true); |
}, |
// Function call when click on viewHTML button |
toggle: function () { |
var t = this, |
prefix = t.o.prefix; |
t.semanticCode(false, true); |
setTimeout(function () { |
t.doc.activeElement.blur(); |
t.$box.toggleClass(prefix + 'editor-hidden ' + prefix + 'editor-visible'); |
t.$btnPane.toggleClass(prefix + 'disable'); |
$('.' + prefix + 'viewHTML-button', t.$btnPane).toggleClass(prefix + 'active'); |
if (t.$box.hasClass(prefix + 'editor-visible')) { |
t.$ta.attr('tabindex', -1); |
} else { |
t.$ta.removeAttr('tabindex'); |
} |
}, 0); |
}, |
// Open dropdown when click on a button which open that |
dropdown: function (name) { |
var t = this, |
d = t.doc, |
prefix = t.o.prefix, |
$dropdown = $('[data-dropdown=' + name + ']', t.$box), |
$btn = $('.' + prefix + name + '-button', t.$btnPane), |
show = $dropdown.is(':hidden'); |
$('body', d).trigger('mousedown'); |
if (show) { |
var o = $btn.offset().left; |
$btn.addClass(prefix + 'active'); |
$dropdown.css({ |
position: 'absolute', |
top: $btn.offset().top - t.$btnPane.offset().top + $btn.outerHeight(), |
left: (t.o.fixedFullWidth && t.isFixed) ? o + 'px' : (o - t.$btnPane.offset().left) + 'px' |
}).show(); |
$(window).trigger('scroll'); |
$('body', d).on('mousedown.'+t.eventNamespace, function (e) { |
if (!$dropdown.is(e.target)) { |
$('.' + prefix + 'dropdown', d).hide(); |
$('.' + prefix + 'active', d).removeClass(prefix + 'active'); |
$('body', d).off('mousedown.'+t.eventNamespace); |
} |
}); |
} |
}, |
// HTML Code management |
html: function (html) { |
var t = this; |
if (html != null) { |
t.$ta.val(html); |
t.syncCode(true); |
return t; |
} |
return t.$ta.val(); |
}, |
syncTextarea: function () { |
var t = this; |
t.$ta.val(t.$ed.text().trim().length > 0 || t.$ed.find('hr,img,embed,iframe,input').length > 0 ? t.$ed.html() : ''); |
}, |
syncCode: function (force) { |
var t = this; |
if (!force && t.$ed.is(':visible')) { |
t.syncTextarea(); |
} else { |
t.$ed.html(t.$ta.val()); |
} |
if (t.o.autogrow) { |
t.height = t.$ed.height(); |
if (t.height !== t.$ta.css('height')) { |
t.$ta.css({height: t.height}); |
t.$c.trigger('tbwresize'); |
} |
} |
}, |
// Analyse and update to semantic code |
// @param force : force to sync code from textarea |
// @param full : wrap text nodes in <p> |
// @param keepRange : leave selection range as it is |
semanticCode: function (force, full, keepRange) { |
var t = this; |
t.saveRange(); |
t.syncCode(force); |
$(t.o.tagsToRemove.join(','), t.$ed).remove(); |
if (t.o.semantic) { |
t.semanticTag('b', 'strong'); |
t.semanticTag('i', 'em'); |
if (full) { |
var inlineElementsSelector = t.o.inlineElementsSelector, |
blockElementsSelector = ':not(' + inlineElementsSelector + ')'; |
// Wrap text nodes in span for easier processing |
t.$ed.contents().filter(function () { |
return this.nodeType === 3 && this.nodeValue.trim().length > 0; |
}).wrap('<span data-tbw/>'); |
// Wrap groups of inline elements in paragraphs (recursive) |
var wrapInlinesInParagraphsFrom = function ($from) { |
if ($from.length !== 0) { |
var $finalParagraph = $from.nextUntil(blockElementsSelector).addBack().wrapAll('<p/>').parent(), |
$nextElement = $finalParagraph.nextAll(inlineElementsSelector).first(); |
$finalParagraph.next('br').remove(); |
wrapInlinesInParagraphsFrom($nextElement); |
} |
}; |
wrapInlinesInParagraphsFrom(t.$ed.children(inlineElementsSelector).first()); |
t.semanticTag('div', 'p', true); |
// Unwrap paragraphs content, containing nothing usefull |
t.$ed.find('p').filter(function () { |
// Don't remove currently being edited element |
if (t.range && this === t.range.startContainer) { |
return false; |
} |
return $(this).text().trim().length === 0 && $(this).children().not('br,span').length === 0; |
}).contents().unwrap(); |
// Get rid of temporial span's |
$('[data-tbw]', t.$ed).contents().unwrap(); |
// Remove empty <p> |
t.$ed.find('p:empty').remove(); |
} |
if (!keepRange) { |
t.restoreRange(); |
} |
t.syncTextarea(); |
} |
}, |
semanticTag: function (oldTag, newTag, copyAttributes) { |
$(oldTag, this.$ed).each(function () { |
var $oldTag = $(this); |
$oldTag.wrap('<' + newTag + '/>'); |
if (copyAttributes) { |
$.each($oldTag.prop('attributes'), function () { |
$oldTag.parent().attr(this.name, this.value); |
}); |
} |
$oldTag.contents().unwrap(); |
}); |
}, |
// Function call when user click on "Insert Link" |
createLink: function () { |
var t = this, |
documentSelection = t.doc.getSelection(), |
node = documentSelection.focusNode, |
url, |
title, |
target; |
while (['A', 'DIV'].indexOf(node.nodeName) < 0) { |
node = node.parentNode; |
} |
if (node && node.nodeName === 'A') { |
var $a = $(node); |
url = $a.attr('href'); |
title = $a.attr('title'); |
target = $a.attr('target'); |
var range = t.doc.createRange(); |
range.selectNode(node); |
documentSelection.addRange(range); |
} |
t.saveRange(); |
t.openModalInsert(t.lang.createLink, { |
url: { |
label: 'URL', |
required: true, |
value: url |
}, |
title: { |
label: t.lang.title, |
value: title |
}, |
text: { |
label: t.lang.text, |
value: t.getRangeText() |
}, |
target: { |
label: t.lang.target, |
value: target |
} |
}, function (v) { // v is value |
var link = $(['<a href="', v.url, '">', v.text, '</a>'].join('')); |
if (v.title.length > 0) { |
link.attr('title', v.title); |
} |
if (v.target.length > 0) { |
link.attr('target', v.target); |
} |
t.range.deleteContents(); |
t.range.insertNode(link[0]); |
return true; |
}); |
}, |
unlink: function () { |
var t = this, |
documentSelection = t.doc.getSelection(), |
node = documentSelection.focusNode; |
if (documentSelection.isCollapsed) { |
while (['A', 'DIV'].indexOf(node.nodeName) < 0) { |
node = node.parentNode; |
} |
if (node && node.nodeName === 'A') { |
var range = t.doc.createRange(); |
range.selectNode(node); |
documentSelection.addRange(range); |
} |
} |
t.execCmd('unlink', undefined, undefined, true); |
}, |
insertImage: function () { |
var t = this; |
t.saveRange(); |
t.openModalInsert(t.lang.insertImage, { |
url: { |
label: 'URL', |
required: true |
}, |
alt: { |
label: t.lang.description, |
value: t.getRangeText() |
} |
}, function (v) { // v are values |
t.execCmd('insertImage', v.url); |
$('img[src="' + v.url + '"]:not([alt])', t.$box).attr('alt', v.alt); |
return true; |
}); |
}, |
fullscreen: function () { |
var t = this, |
prefix = t.o.prefix, |
fullscreenCssClass = prefix + 'fullscreen', |
isFullscreen; |
t.$box.toggleClass(fullscreenCssClass); |
isFullscreen = t.$box.hasClass(fullscreenCssClass); |
$('body').toggleClass(prefix + 'body-fullscreen', isFullscreen); |
$(window).trigger('scroll'); |
t.$c.trigger('tbw' + (isFullscreen ? 'open' : 'close') + 'fullscreen'); |
}, |
/* |
* Call method of trumbowyg if exist |
* else try to call anonymous function |
* and finaly native execCommand |
*/ |
execCmd: function (cmd, param, forceCss, skipTrumbowyg) { |
var t = this; |
skipTrumbowyg = !!skipTrumbowyg || ''; |
if (cmd !== 'dropdown') { |
t.$ed.focus(); |
} |
try { |
t.doc.execCommand('styleWithCSS', false, forceCss || false); |
} catch (c) { |
} |
try { |
t[cmd + skipTrumbowyg](param); |
} catch (c) { |
try { |
cmd(param); |
} catch (e2) { |
if (cmd === 'insertHorizontalRule') { |
param = undefined; |
} else if (cmd === 'formatBlock' && t.isIE) { |
param = '<' + param + '>'; |
} |
t.doc.execCommand(cmd, false, param); |
t.syncCode(); |
t.semanticCode(false, true); |
} |
if (cmd !== 'dropdown') { |
t.updateButtonPaneStatus(); |
t.$c.trigger('tbwchange'); |
} |
} |
}, |
// Open a modal box |
openModal: function (title, content) { |
var t = this, |
prefix = t.o.prefix; |
// No open a modal box when exist other modal box |
if ($('.' + prefix + 'modal-box', t.$box).length > 0) { |
return false; |
} |
t.saveRange(); |
t.showOverlay(); |
// Disable all btnPane btns |
t.$btnPane.addClass(prefix + 'disable'); |
// Build out of ModalBox, it's the mask for animations |
var $modal = $('<div/>', { |
class: prefix + 'modal ' + prefix + 'fixed-top' |
}).css({ |
top: t.$btnPane.height() |
}).appendTo(t.$box); |
// Click on overlay close modal by cancelling them |
t.$overlay.one('click', function () { |
$modal.trigger('tbwcancel'); |
return false; |
}); |
// Build the form |
var $form = $('<form/>', { |
action: '', |
html: content |
}) |
.on('submit', function () { |
$modal.trigger('tbwconfirm'); |
return false; |
}) |
.on('reset', function () { |
$modal.trigger('tbwcancel'); |
return false; |
}); |
// Build ModalBox and animate to show them |
var $box = $('<div/>', { |
class: prefix + 'modal-box', |
html: $form |
}) |
.css({ |
top: '-' + t.$btnPane.outerHeight() + 'px', |
opacity: 0 |
}) |
.appendTo($modal) |
.animate({ |
top: 0, |
opacity: 1 |
}, 100); |
// Append title |
$('<span/>', { |
text: title, |
class: prefix + 'modal-title' |
}).prependTo($box); |
$modal.height($box.outerHeight() + 10); |
// Focus in modal box |
$('input:first', $box).focus(); |
// Append Confirm and Cancel buttons |
t.buildModalBtn('submit', $box); |
t.buildModalBtn('reset', $box); |
$(window).trigger('scroll'); |
return $modal; |
}, |
// @param n is name of modal |
buildModalBtn: function (n, $modal) { |
var t = this, |
prefix = t.o.prefix; |
return $('<button/>', { |
class: prefix + 'modal-button ' + prefix + 'modal-' + n, |
type: n, |
text: t.lang[n] || n |
}).appendTo($('form', $modal)); |
}, |
// close current modal box |
closeModal: function () { |
var t = this, |
prefix = t.o.prefix; |
t.$btnPane.removeClass(prefix + 'disable'); |
t.$overlay.off(); |
// Find the modal box |
var $modalBox = $('.' + prefix + 'modal-box', t.$box); |
$modalBox.animate({ |
top: '-' + $modalBox.height() |
}, 100, function () { |
$modalBox.parent().remove(); |
t.hideOverlay(); |
}); |
t.restoreRange(); |
}, |
// Preformated build and management modal |
openModalInsert: function (title, fields, cmd) { |
var t = this, |
prefix = t.o.prefix, |
lg = t.lang, |
html = '', |
CONFIRM_EVENT = 'tbwconfirm'; |
$.each(fields, function (fieldName, field) { |
var l = field.label, |
n = field.name || fieldName, |
a = field.attributes || {}; |
var attr = Object.keys(a).map(function (prop) { |
return prop + '="' + a[prop] + '"'; |
}).join(' '); |
html += '<label><input type="' + (field.type || 'text') + '" name="' + n + '" value="' + (field.value || '').replace(/"/g, '"') + '"' + attr + '><span class="' + prefix + 'input-infos"><span>' + |
((!l) ? (lg[fieldName] ? lg[fieldName] : fieldName) : (lg[l] ? lg[l] : l)) + |
'</span></span></label>'; |
}); |
return t.openModal(title, html) |
.on(CONFIRM_EVENT, function () { |
var $form = $('form', $(this)), |
valid = true, |
values = {}; |
$.each(fields, function (fieldName, field) { |
var $field = $('input[name="' + fieldName + '"]', $form), |
inputType = $field.attr('type'); |
if (inputType.toLowerCase() === 'checkbox') { |
values[fieldName] = $field.is(':checked'); |
} else { |
values[fieldName] = $.trim($field.val()); |
} |
// Validate value |
if (field.required && values[fieldName] === '') { |
valid = false; |
t.addErrorOnModalField($field, t.lang.required); |
} else if (field.pattern && !field.pattern.test(values[fieldName])) { |
valid = false; |
t.addErrorOnModalField($field, field.patternError); |
} |
}); |
if (valid) { |
t.restoreRange(); |
if (cmd(values, fields)) { |
t.syncCode(); |
t.$c.trigger('tbwchange'); |
t.closeModal(); |
$(this).off(CONFIRM_EVENT); |
} |
} |
}) |
.one('tbwcancel', function () { |
$(this).off(CONFIRM_EVENT); |
t.closeModal(); |
}); |
}, |
addErrorOnModalField: function ($field, err) { |
var prefix = this.o.prefix, |
$label = $field.parent(); |
$field |
.on('change keyup', function () { |
$label.removeClass(prefix + 'input-error'); |
}); |
$label |
.addClass(prefix + 'input-error') |
.find('input+span') |
.append( |
$('<span/>', { |
class: prefix + 'msg-error', |
text: err |
}) |
); |
}, |
// Range management |
saveRange: function () { |
var t = this, |
documentSelection = t.doc.getSelection(); |
t.range = null; |
if (documentSelection.rangeCount) { |
var savedRange = t.range = documentSelection.getRangeAt(0), |
range = t.doc.createRange(), |
rangeStart; |
range.selectNodeContents(t.$ed[0]); |
range.setEnd(savedRange.startContainer, savedRange.startOffset); |
rangeStart = (range + '').length; |
t.metaRange = { |
start: rangeStart, |
end: rangeStart + (savedRange + '').length |
}; |
} |
}, |
restoreRange: function () { |
var t = this, |
metaRange = t.metaRange, |
savedRange = t.range, |
documentSelection = t.doc.getSelection(), |
range; |
if (!savedRange) { |
return; |
} |
if (metaRange && metaRange.start !== metaRange.end) { // Algorithm from http://jsfiddle.net/WeWy7/3/ |
var charIndex = 0, |
nodeStack = [t.$ed[0]], |
node, |
foundStart = false, |
stop = false; |
range = t.doc.createRange(); |
while (!stop && (node = nodeStack.pop())) { |
if (node.nodeType === 3) { |
var nextCharIndex = charIndex + node.length; |
if (!foundStart && metaRange.start >= charIndex && metaRange.start <= nextCharIndex) { |
range.setStart(node, metaRange.start - charIndex); |
foundStart = true; |
} |
if (foundStart && metaRange.end >= charIndex && metaRange.end <= nextCharIndex) { |
range.setEnd(node, metaRange.end - charIndex); |
stop = true; |
} |
charIndex = nextCharIndex; |
} else { |
var cn = node.childNodes, |
i = cn.length; |
while (i > 0) { |
i -= 1; |
nodeStack.push(cn[i]); |
} |
} |
} |
} |
documentSelection.removeAllRanges(); |
documentSelection.addRange(range || savedRange); |
}, |
getRangeText: function () { |
return this.range + ''; |
}, |
updateButtonPaneStatus: function () { |
var t = this, |
prefix = t.o.prefix, |
tags = t.getTagsRecursive(t.doc.getSelection().focusNode), |
activeClasses = prefix + 'active-button ' + prefix + 'active'; |
$('.' + prefix + 'active-button', t.$btnPane).removeClass(activeClasses); |
$.each(tags, function (i, tag) { |
var btnName = t.tagToButton[tag.toLowerCase()], |
$btn = $('.' + prefix + btnName + '-button', t.$btnPane); |
if ($btn.length > 0) { |
$btn.addClass(activeClasses); |
} else { |
try { |
$btn = $('.' + prefix + 'dropdown .' + prefix + btnName + '-dropdown-button', t.$box); |
var dropdownBtnName = $btn.parent().data('dropdown'); |
$('.' + prefix + dropdownBtnName + '-button', t.$box).addClass(activeClasses); |
} catch (e) { |
} |
} |
}); |
}, |
getTagsRecursive: function (element, tags) { |
var t = this; |
tags = tags || (element && element.tagName ? [element.tagName] : []); |
if (element && element.parentNode) { |
element = element.parentNode; |
} else { |
return tags; |
} |
var tag = element.tagName; |
if (tag === 'DIV') { |
return tags; |
} |
if (tag === 'P' && element.style.textAlign !== '') { |
tags.push(element.style.textAlign); |
} |
$.each(t.tagHandlers, function (i, tagHandler) { |
tags = tags.concat(tagHandler(element, t)); |
}); |
tags.push(tag); |
return t.getTagsRecursive(element, tags); |
}, |
// Plugins |
initPlugins: function () { |
var t = this; |
t.loadedPlugins = []; |
$.each($.trumbowyg.plugins, function (name, plugin) { |
if (!plugin.shouldInit || plugin.shouldInit(t)) { |
plugin.init(t); |
if (plugin.tagHandler) { |
t.tagHandlers.push(plugin.tagHandler); |
} |
t.loadedPlugins.push(plugin); |
} |
}); |
}, |
destroyPlugins: function () { |
$.each(this.loadedPlugins, function (i, plugin) { |
if (plugin.destroy) { |
plugin.destroy(); |
} |
}); |
} |
}; |
})(navigator, window, document, jQuery); |
//quickload/js/trumbowyg/trumbowyg.min.js |
---|
@@ -0,0 +1,2 @@ |
/** Trumbowyg v2.5.1 - A lightweight WYSIWYG editor - alex-d.github.io/Trumbowyg - License MIT - Author : Alexandre Demode (Alex-D) / alex-d.fr */ |
jQuery.trumbowyg={langs:{en:{viewHTML:"View HTML",undo:"Undo",redo:"Redo",formatting:"Formatting",p:"Paragraph",blockquote:"Quote",code:"Code",header:"Header",bold:"Bold",italic:"Italic",strikethrough:"Stroke",underline:"Underline",strong:"Strong",em:"Emphasis",del:"Deleted",superscript:"Superscript",subscript:"Subscript",unorderedList:"Unordered list",orderedList:"Ordered list",insertImage:"Insert Image",link:"Link",createLink:"Insert link",unlink:"Remove link",justifyLeft:"Align Left",justifyCenter:"Align Center",justifyRight:"Align Right",justifyFull:"Align Justify",horizontalRule:"Insert horizontal rule",removeformat:"Remove format",fullscreen:"Fullscreen",close:"Close",submit:"Confirm",reset:"Cancel",required:"Required",description:"Description",title:"Title",text:"Text",target:"Target"}},plugins:{},svgPath:null,hideButtonTexts:null},function(e,t,n,a){"use strict";a.fn.trumbowyg=function(e,t){var n="trumbowyg";if(e===Object(e)||!e)return this.each(function(){a(this).data(n)||a(this).data(n,new o(this,e))});if(1===this.length)try{var r=a(this).data(n);switch(e){case"execCmd":return r.execCmd(t.cmd,t.param,t.forceCss);case"openModal":return r.openModal(t.title,t.content);case"closeModal":return r.closeModal();case"openModalInsert":return r.openModalInsert(t.title,t.fields,t.callback);case"saveRange":return r.saveRange();case"getRange":return r.range;case"getRangeText":return r.getRangeText();case"restoreRange":return r.restoreRange();case"enable":return r.toggleDisable(!1);case"disable":return r.toggleDisable(!0);case"destroy":return r.destroy();case"empty":return r.empty();case"html":return r.html(t)}}catch(i){}return!1};var o=function(o,r){var i=this,s="trumbowyg-icons";i.doc=o.ownerDocument||n,i.$ta=a(o),i.$c=a(o),r=r||{},null!=r.lang||null!=a.trumbowyg.langs[r.lang]?i.lang=a.extend(!0,{},a.trumbowyg.langs.en,a.trumbowyg.langs[r.lang]):i.lang=a.trumbowyg.langs.en,i.hideButtonTexts=null!=a.trumbowyg.hideButtonTexts?a.trumbowyg.hideButtonTexts:r.hideButtonTexts;var l=null!=a.trumbowyg.svgPath?a.trumbowyg.svgPath:r.svgPath;if(i.hasSvg=l!==!1,i.svgPath=i.doc.querySelector("base")?t.location.href.split("#")[0]:"",0===a("#"+s,i.doc).length&&l!==!1){if(null==l)try{throw new Error}catch(d){var c=d.stack.split("\n");for(var u in c)if(c[u].match(/http[s]?:\/\//)){l=c[Number(u)].match(/((http[s]?:\/\/.+\/)([^\/]+\.js))(\?.*)?:/)[1].split("/"),l.pop(),l=l.join("/")+"/ui/icons.svg";break}}var g=i.doc.createElement("div");g.id=s,i.doc.body.insertBefore(g,i.doc.body.childNodes[0]),a.ajax({async:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",dataType:"xml",url:l,data:null,beforeSend:null,complete:null,success:function(e){g.innerHTML=(new XMLSerializer).serializeToString(e.documentElement)}})}var f=i.lang.header,p=function(){return(t.chrome||t.Intl&&Intl.v8BreakIterator)&&"CSS"in t};i.btnsDef={viewHTML:{fn:"toggle"},undo:{isSupported:p,key:"Z"},redo:{isSupported:p,key:"Y"},p:{fn:"formatBlock"},blockquote:{fn:"formatBlock"},h1:{fn:"formatBlock",title:f+" 1"},h2:{fn:"formatBlock",title:f+" 2"},h3:{fn:"formatBlock",title:f+" 3"},h4:{fn:"formatBlock",title:f+" 4"},subscript:{tag:"sub"},superscript:{tag:"sup"},bold:{key:"B",tag:"b"},italic:{key:"I",tag:"i"},underline:{tag:"u"},strikethrough:{tag:"strike"},strong:{fn:"bold",key:"B"},em:{fn:"italic",key:"I"},del:{fn:"strikethrough"},createLink:{key:"K",tag:"a"},unlink:{},insertImage:{},justifyLeft:{tag:"left",forceCss:!0},justifyCenter:{tag:"center",forceCss:!0},justifyRight:{tag:"right",forceCss:!0},justifyFull:{tag:"justify",forceCss:!0},unorderedList:{fn:"insertUnorderedList",tag:"ul"},orderedList:{fn:"insertOrderedList",tag:"ol"},horizontalRule:{fn:"insertHorizontalRule"},removeformat:{},fullscreen:{"class":"trumbowyg-not-disable"},close:{fn:"destroy","class":"trumbowyg-not-disable"},formatting:{dropdown:["p","blockquote","h1","h2","h3","h4"],ico:"p"},link:{dropdown:["createLink","unlink"]}},i.o=a.extend(!0,{},{lang:"en",fixedBtnPane:!1,fixedFullWidth:!1,autogrow:!1,prefix:"trumbowyg-",semantic:!0,resetCss:!1,removeformatPasted:!1,tagsToRemove:[],btnsGrps:{design:["bold","italic","underline","strikethrough"],semantic:["strong","em","del"],justify:["justifyLeft","justifyCenter","justifyRight","justifyFull"],lists:["unorderedList","orderedList"]},btns:[["viewHTML"],["undo","redo"],["formatting"],"btnGrp-semantic",["superscript","subscript"],["link"],["insertImage"],"btnGrp-justify","btnGrp-lists",["horizontalRule"],["removeformat"],["fullscreen"]],btnsDef:{},inlineElementsSelector:"a,abbr,acronym,b,caption,cite,code,col,dfn,dir,dt,dd,em,font,hr,i,kbd,li,q,span,strikeout,strong,sub,sup,u",pasteHandlers:[],imgDblClickHandler:function(){var e=a(this),t=e.attr("src"),n="(Base64)";return 0===t.indexOf("data:image")&&(t=n),i.openModalInsert(i.lang.insertImage,{url:{label:"URL",value:t,required:!0},alt:{label:i.lang.description,value:e.attr("alt")}},function(t){return t.src!==n&&e.attr({src:t.src}),e.attr({alt:t.alt}),!0}),!1},plugins:{}},r),i.disabled=i.o.disabled||"TEXTAREA"===o.nodeName&&o.disabled,r.btns?i.o.btns=r.btns:i.o.semantic||(i.o.btns[4]="btnGrp-design"),a.each(i.o.btnsDef,function(e,t){i.addBtnDef(e,t)}),i.eventNamespace="trumbowyg-event",i.keys=[],i.tagToButton={},i.tagHandlers=[],i.pasteHandlers=[].concat(i.o.pasteHandlers),i.isIE=-1!==e.userAgent.indexOf("MSIE")||-1!==e.appVersion.indexOf("Trident/"),i.init()};o.prototype={init:function(){var e=this;e.height=e.$ta.height(),e.initPlugins();try{e.doc.execCommand("enableObjectResizing",!1,!1),e.doc.execCommand("defaultParagraphSeparator",!1,"p")}catch(t){}e.buildEditor(),e.buildBtnPane(),e.fixedBtnPaneEvents(),e.buildOverlay(),setTimeout(function(){e.disabled&&e.toggleDisable(!0),e.$c.trigger("tbwinit")})},addBtnDef:function(e,t){this.btnsDef[e]=t},buildEditor:function(){var e=this,n=e.o.prefix,o="";e.$box=a("<div/>",{"class":n+"box "+n+"editor-visible "+n+e.o.lang+" trumbowyg"}),e.isTextarea=e.$ta.is("textarea"),e.isTextarea?(o=e.$ta.val(),e.$ed=a("<div/>"),e.$box.insertAfter(e.$ta).append(e.$ed,e.$ta)):(e.$ed=e.$ta,o=e.$ed.html(),e.$ta=a("<textarea/>",{name:e.$ta.attr("id"),height:e.height}).val(o),e.$box.insertAfter(e.$ed).append(e.$ta,e.$ed),e.syncCode()),e.$ta.addClass(n+"textarea").attr("tabindex",-1),e.$ed.addClass(n+"editor").attr({contenteditable:!0,dir:e.lang._dir||"ltr"}).html(o),e.o.tabindex&&e.$ed.attr("tabindex",e.o.tabindex),e.$c.is("[placeholder]")&&e.$ed.attr("placeholder",e.$c.attr("placeholder")),e.o.resetCss&&e.$ed.addClass(n+"reset-css"),e.o.autogrow||e.$ta.add(e.$ed).css({height:e.height}),e.semanticCode();var r,i=!1,s=!1,l=e.isIE?"keyup":"input";e.$ed.on("dblclick","img",e.o.imgDblClickHandler).on("keydown",function(t){if(t.ctrlKey){i=!0;var n=e.keys[String.fromCharCode(t.which).toUpperCase()];try{return e.execCmd(n.fn,n.param),!1}catch(a){}}}).on("compositionstart compositionupdate",function(){s=!0}).on(l+" compositionend",function(t){if("compositionend"===t.type)s=!1;else if(s)return;var n=t.which;n>=37&&40>=n||(!t.ctrlKey||89!==n&&90!==n?i||17===n?"undefined"==typeof t.which&&e.semanticCode(!1,!1,!0):(e.semanticCode(!1,13===n),e.$c.trigger("tbwchange")):e.$c.trigger("tbwchange"),setTimeout(function(){i=!1},200))}).on("mouseup keydown keyup",function(){clearTimeout(r),r=setTimeout(function(){e.updateButtonPaneStatus()},50)}).on("focus blur",function(t){e.$c.trigger("tbw"+t.type),"blur"===t.type&&a("."+n+"active-button",e.$btnPane).removeClass(n+"active-button "+n+"active")}).on("cut",function(){setTimeout(function(){e.semanticCode(!1,!0),e.$c.trigger("tbwchange")},0)}).on("paste",function(n){if(e.o.removeformatPasted){n.preventDefault();try{var o=t.clipboardData.getData("Text");try{e.doc.selection.createRange().pasteHTML(o)}catch(r){e.doc.getSelection().getRangeAt(0).insertNode(e.doc.createTextNode(o))}}catch(i){e.execCmd("insertText",(n.originalEvent||n).clipboardData.getData("text/plain"))}}a.each(e.pasteHandlers,function(e,t){t(n)}),setTimeout(function(){e.semanticCode(!1,!0),e.$c.trigger("tbwpaste",n)},0)}),e.$ta.on("keyup paste",function(){e.$c.trigger("tbwchange")}),e.$box.on("keydown",function(t){return 27===t.which&&1===a("."+n+"modal-box",e.$box).length?(e.closeModal(),!1):void 0})},buildBtnPane:function(){var e=this,t=e.o.prefix,n=e.$btnPane=a("<div/>",{"class":t+"button-pane"});a.each(e.o.btns,function(o,r){try{var i=r.split("btnGrp-");null!=i[1]&&(r=e.o.btnsGrps[i[1]])}catch(s){}a.isArray(r)||(r=[r]);var l=a("<div/>",{"class":t+"button-group "+(r.indexOf("fullscreen")>=0?t+"right":"")});a.each(r,function(t,n){try{var a;e.isSupportedBtn(n)&&(a=e.buildBtn(n)),l.append(a)}catch(o){}}),n.append(l)}),e.$box.prepend(n)},buildBtn:function(e){var t=this,n=t.o.prefix,o=t.btnsDef[e],r=o.dropdown,i=null!=o.hasIcon?o.hasIcon:!0,s=t.lang[e]||e,l=a("<button/>",{type:"button","class":n+e+"-button "+(o["class"]||"")+(i?"":" "+n+"textual-button"),html:t.hasSvg&&i?'<svg><use xlink:href="'+t.svgPath+"#"+n+(o.ico||e).replace(/([A-Z]+)/g,"-$1").toLowerCase()+'"/></svg>':t.hideButtonTexts?"":o.text||o.title||t.lang[e]||e,title:(o.title||o.text||s)+(o.key?" (Ctrl + "+o.key+")":""),tabindex:-1,mousedown:function(){return(!r||a("."+e+"-"+n+"dropdown",t.$box).is(":hidden"))&&a("body",t.doc).trigger("mousedown"),!t.$btnPane.hasClass(n+"disable")||a(this).hasClass(n+"active")||a(this).hasClass(n+"not-disable")?(t.execCmd((r?"dropdown":!1)||o.fn||e,o.param||e,o.forceCss||!1),!1):!1}});if(r){l.addClass(n+"open-dropdown");var d=n+"dropdown",c=a("<div/>",{"class":d+"-"+e+" "+d+" "+n+"fixed-top","data-dropdown":e});a.each(r,function(e,n){t.btnsDef[n]&&t.isSupportedBtn(n)&&c.append(t.buildSubBtn(n))}),t.$box.append(c.hide())}else o.key&&(t.keys[o.key]={fn:o.fn||e,param:o.param||e});return r||(t.tagToButton[(o.tag||e).toLowerCase()]=e),l},buildSubBtn:function(e){var t=this,n=t.o.prefix,o=t.btnsDef[e],r=null!=o.hasIcon?o.hasIcon:!0;return o.key&&(t.keys[o.key]={fn:o.fn||e,param:o.param||e}),t.tagToButton[(o.tag||e).toLowerCase()]=e,a("<button/>",{type:"button","class":n+e+"-dropdown-button"+(o.ico?" "+n+o.ico+"-button":""),html:t.hasSvg&&r?'<svg><use xlink:href="'+t.svgPath+"#"+n+(o.ico||e).replace(/([A-Z]+)/g,"-$1").toLowerCase()+'"/></svg>'+(o.text||o.title||t.lang[e]||e):o.text||o.title||t.lang[e]||e,title:o.key?" (Ctrl + "+o.key+")":null,style:o.style||null,mousedown:function(){return a("body",t.doc).trigger("mousedown"),t.execCmd(o.fn||e,o.param||e,o.forceCss||!1),!1}})},isSupportedBtn:function(e){try{return this.btnsDef[e].isSupported()}catch(t){}return!0},buildOverlay:function(){var e=this;return e.$overlay=a("<div/>",{"class":e.o.prefix+"overlay"}).css({top:e.$btnPane.outerHeight(),height:e.$ed.outerHeight()+1+"px"}).appendTo(e.$box),e.$overlay},showOverlay:function(){var e=this;a(t).trigger("scroll"),e.$overlay.fadeIn(200),e.$box.addClass(e.o.prefix+"box-blur")},hideOverlay:function(){var e=this;e.$overlay.fadeOut(50),e.$box.removeClass(e.o.prefix+"box-blur")},fixedBtnPaneEvents:function(){var e=this,n=e.o.fixedFullWidth,o=e.$box;e.o.fixedBtnPane&&(e.isFixed=!1,a(t).on("scroll."+e.eventNamespace+" resize."+e.eventNamespace,function(){if(o){e.syncCode();var r=a(t).scrollTop(),i=o.offset().top+1,s=e.$btnPane,l=s.outerHeight()-2;r-i>0&&r-i-e.height<0?(e.isFixed||(e.isFixed=!0,s.css({position:"fixed",top:0,left:n?"0":"auto",zIndex:7}),a([e.$ta,e.$ed]).css({marginTop:s.height()})),s.css({width:n?"100%":o.width()-1+"px"}),a("."+e.o.prefix+"fixed-top",o).css({position:n?"fixed":"absolute",top:n?l:l+(r-i)+"px",zIndex:15})):e.isFixed&&(e.isFixed=!1,s.removeAttr("style"),a([e.$ta,e.$ed]).css({marginTop:0}),a("."+e.o.prefix+"fixed-top",o).css({position:"absolute",top:l}))}}))},toggleDisable:function(e){var t=this,n=t.o.prefix;t.disabled=e,e?t.$ta.attr("disabled",!0):t.$ta.removeAttr("disabled"),t.$box.toggleClass(n+"disabled",e),t.$ed.attr("contenteditable",!e)},destroy:function(){var e=this,n=e.o.prefix,o=e.height;e.isTextarea?e.$box.after(e.$ta.css({height:o}).val(e.html()).removeClass(n+"textarea").show()):e.$box.after(e.$ed.css({height:o}).removeClass(n+"editor").removeAttr("contenteditable").html(e.html()).show()),e.$ed.off("dblclick","img"),e.destroyPlugins(),e.$box.remove(),e.$c.removeData("trumbowyg"),a("body").removeClass(n+"body-fullscreen"),e.$c.trigger("tbwclose"),a(t).off("scroll."+e.eventNamespace+" resize."+e.eventNamespace)},empty:function(){this.$ta.val(""),this.syncCode(!0)},toggle:function(){var e=this,t=e.o.prefix;e.semanticCode(!1,!0),setTimeout(function(){e.doc.activeElement.blur(),e.$box.toggleClass(t+"editor-hidden "+t+"editor-visible"),e.$btnPane.toggleClass(t+"disable"),a("."+t+"viewHTML-button",e.$btnPane).toggleClass(t+"active"),e.$box.hasClass(t+"editor-visible")?e.$ta.attr("tabindex",-1):e.$ta.removeAttr("tabindex")},0)},dropdown:function(e){var n=this,o=n.doc,r=n.o.prefix,i=a("[data-dropdown="+e+"]",n.$box),s=a("."+r+e+"-button",n.$btnPane),l=i.is(":hidden");if(a("body",o).trigger("mousedown"),l){var d=s.offset().left;s.addClass(r+"active"),i.css({position:"absolute",top:s.offset().top-n.$btnPane.offset().top+s.outerHeight(),left:n.o.fixedFullWidth&&n.isFixed?d+"px":d-n.$btnPane.offset().left+"px"}).show(),a(t).trigger("scroll"),a("body",o).on("mousedown."+n.eventNamespace,function(e){i.is(e.target)||(a("."+r+"dropdown",o).hide(),a("."+r+"active",o).removeClass(r+"active"),a("body",o).off("mousedown."+n.eventNamespace))})}},html:function(e){var t=this;return null!=e?(t.$ta.val(e),t.syncCode(!0),t):t.$ta.val()},syncTextarea:function(){var e=this;e.$ta.val(e.$ed.text().trim().length>0||e.$ed.find("hr,img,embed,iframe,input").length>0?e.$ed.html():"")},syncCode:function(e){var t=this;!e&&t.$ed.is(":visible")?t.syncTextarea():t.$ed.html(t.$ta.val()),t.o.autogrow&&(t.height=t.$ed.height(),t.height!==t.$ta.css("height")&&(t.$ta.css({height:t.height}),t.$c.trigger("tbwresize")))},semanticCode:function(e,t,n){var o=this;if(o.saveRange(),o.syncCode(e),a(o.o.tagsToRemove.join(","),o.$ed).remove(),o.o.semantic){if(o.semanticTag("b","strong"),o.semanticTag("i","em"),t){var r=o.o.inlineElementsSelector,i=":not("+r+")";o.$ed.contents().filter(function(){return 3===this.nodeType&&this.nodeValue.trim().length>0}).wrap("<span data-tbw/>");var s=function(e){if(0!==e.length){var t=e.nextUntil(i).addBack().wrapAll("<p/>").parent(),n=t.nextAll(r).first();t.next("br").remove(),s(n)}};s(o.$ed.children(r).first()),o.semanticTag("div","p",!0),o.$ed.find("p").filter(function(){return o.range&&this===o.range.startContainer?!1:0===a(this).text().trim().length&&0===a(this).children().not("br,span").length}).contents().unwrap(),a("[data-tbw]",o.$ed).contents().unwrap(),o.$ed.find("p:empty").remove()}n||o.restoreRange(),o.syncTextarea()}},semanticTag:function(e,t,n){a(e,this.$ed).each(function(){var e=a(this);e.wrap("<"+t+"/>"),n&&a.each(e.prop("attributes"),function(){e.parent().attr(this.name,this.value)}),e.contents().unwrap()})},createLink:function(){for(var e,t,n,o=this,r=o.doc.getSelection(),i=r.focusNode;["A","DIV"].indexOf(i.nodeName)<0;)i=i.parentNode;if(i&&"A"===i.nodeName){var s=a(i);e=s.attr("href"),t=s.attr("title"),n=s.attr("target");var l=o.doc.createRange();l.selectNode(i),r.addRange(l)}o.saveRange(),o.openModalInsert(o.lang.createLink,{url:{label:"URL",required:!0,value:e},title:{label:o.lang.title,value:t},text:{label:o.lang.text,value:o.getRangeText()},target:{label:o.lang.target,value:n}},function(e){var t=a(['<a href="',e.url,'">',e.text,"</a>"].join(""));return e.title.length>0&&t.attr("title",e.title),e.target.length>0&&t.attr("target",e.target),o.range.deleteContents(),o.range.insertNode(t[0]),!0})},unlink:function(){var e=this,t=e.doc.getSelection(),n=t.focusNode;if(t.isCollapsed){for(;["A","DIV"].indexOf(n.nodeName)<0;)n=n.parentNode;if(n&&"A"===n.nodeName){var a=e.doc.createRange();a.selectNode(n),t.addRange(a)}}e.execCmd("unlink",void 0,void 0,!0)},insertImage:function(){var e=this;e.saveRange(),e.openModalInsert(e.lang.insertImage,{url:{label:"URL",required:!0},alt:{label:e.lang.description,value:e.getRangeText()}},function(t){return e.execCmd("insertImage",t.url),a('img[src="'+t.url+'"]:not([alt])',e.$box).attr("alt",t.alt),!0})},fullscreen:function(){var e,n=this,o=n.o.prefix,r=o+"fullscreen";n.$box.toggleClass(r),e=n.$box.hasClass(r),a("body").toggleClass(o+"body-fullscreen",e),a(t).trigger("scroll"),n.$c.trigger("tbw"+(e?"open":"close")+"fullscreen")},execCmd:function(e,t,n,a){var o=this;a=!!a||"","dropdown"!==e&&o.$ed.focus();try{o.doc.execCommand("styleWithCSS",!1,n||!1)}catch(r){}try{o[e+a](t)}catch(r){try{e(t)}catch(i){"insertHorizontalRule"===e?t=void 0:"formatBlock"===e&&o.isIE&&(t="<"+t+">"),o.doc.execCommand(e,!1,t),o.syncCode(),o.semanticCode(!1,!0)}"dropdown"!==e&&(o.updateButtonPaneStatus(),o.$c.trigger("tbwchange"))}},openModal:function(e,n){var o=this,r=o.o.prefix;if(a("."+r+"modal-box",o.$box).length>0)return!1;o.saveRange(),o.showOverlay(),o.$btnPane.addClass(r+"disable");var i=a("<div/>",{"class":r+"modal "+r+"fixed-top"}).css({top:o.$btnPane.height()}).appendTo(o.$box);o.$overlay.one("click",function(){return i.trigger("tbwcancel"),!1});var s=a("<form/>",{action:"",html:n}).on("submit",function(){return i.trigger("tbwconfirm"),!1}).on("reset",function(){return i.trigger("tbwcancel"),!1}),l=a("<div/>",{"class":r+"modal-box",html:s}).css({top:"-"+o.$btnPane.outerHeight()+"px",opacity:0}).appendTo(i).animate({top:0,opacity:1},100);return a("<span/>",{text:e,"class":r+"modal-title"}).prependTo(l),i.height(l.outerHeight()+10),a("input:first",l).focus(),o.buildModalBtn("submit",l),o.buildModalBtn("reset",l),a(t).trigger("scroll"),i},buildModalBtn:function(e,t){var n=this,o=n.o.prefix;return a("<button/>",{"class":o+"modal-button "+o+"modal-"+e,type:e,text:n.lang[e]||e}).appendTo(a("form",t))},closeModal:function(){var e=this,t=e.o.prefix;e.$btnPane.removeClass(t+"disable"),e.$overlay.off();var n=a("."+t+"modal-box",e.$box);n.animate({top:"-"+n.height()},100,function(){n.parent().remove(),e.hideOverlay()}),e.restoreRange()},openModalInsert:function(e,t,n){var o=this,r=o.o.prefix,i=o.lang,s="",l="tbwconfirm";return a.each(t,function(e,t){var n=t.label,a=t.name||e,o=t.attributes||{},l=Object.keys(o).map(function(e){return e+'="'+o[e]+'"'}).join(" ");s+='<label><input type="'+(t.type||"text")+'" name="'+a+'" value="'+(t.value||"").replace(/"/g,""")+'"'+l+'><span class="'+r+'input-infos"><span>'+(n?i[n]?i[n]:n:i[e]?i[e]:e)+"</span></span></label>"}),o.openModal(e,s).on(l,function(){var e=a("form",a(this)),r=!0,i={};a.each(t,function(t,n){var s=a('input[name="'+t+'"]',e),l=s.attr("type");"checkbox"===l.toLowerCase()?i[t]=s.is(":checked"):i[t]=a.trim(s.val()),n.required&&""===i[t]?(r=!1,o.addErrorOnModalField(s,o.lang.required)):n.pattern&&!n.pattern.test(i[t])&&(r=!1,o.addErrorOnModalField(s,n.patternError))}),r&&(o.restoreRange(),n(i,t)&&(o.syncCode(),o.$c.trigger("tbwchange"),o.closeModal(),a(this).off(l)))}).one("tbwcancel",function(){a(this).off(l),o.closeModal()})},addErrorOnModalField:function(e,t){var n=this.o.prefix,o=e.parent();e.on("change keyup",function(){o.removeClass(n+"input-error")}),o.addClass(n+"input-error").find("input+span").append(a("<span/>",{"class":n+"msg-error",text:t}))},saveRange:function(){var e=this,t=e.doc.getSelection();if(e.range=null,t.rangeCount){var n,a=e.range=t.getRangeAt(0),o=e.doc.createRange();o.selectNodeContents(e.$ed[0]),o.setEnd(a.startContainer,a.startOffset),n=(o+"").length,e.metaRange={start:n,end:n+(a+"").length}}},restoreRange:function(){var e,t=this,n=t.metaRange,a=t.range,o=t.doc.getSelection();if(a){if(n&&n.start!==n.end){var r,i=0,s=[t.$ed[0]],l=!1,d=!1;for(e=t.doc.createRange();!d&&(r=s.pop());)if(3===r.nodeType){var c=i+r.length;!l&&n.start>=i&&n.start<=c&&(e.setStart(r,n.start-i),l=!0),l&&n.end>=i&&n.end<=c&&(e.setEnd(r,n.end-i),d=!0),i=c}else for(var u=r.childNodes,g=u.length;g>0;)g-=1,s.push(u[g])}o.removeAllRanges(),o.addRange(e||a)}},getRangeText:function(){return this.range+""},updateButtonPaneStatus:function(){var e=this,t=e.o.prefix,n=e.getTagsRecursive(e.doc.getSelection().focusNode),o=t+"active-button "+t+"active";a("."+t+"active-button",e.$btnPane).removeClass(o),a.each(n,function(n,r){var i=e.tagToButton[r.toLowerCase()],s=a("."+t+i+"-button",e.$btnPane);if(s.length>0)s.addClass(o);else try{s=a("."+t+"dropdown ."+t+i+"-dropdown-button",e.$box);var l=s.parent().data("dropdown");a("."+t+l+"-button",e.$box).addClass(o)}catch(d){}})},getTagsRecursive:function(e,t){var n=this;if(t=t||(e&&e.tagName?[e.tagName]:[]),!e||!e.parentNode)return t;e=e.parentNode;var o=e.tagName;return"DIV"===o?t:("P"===o&&""!==e.style.textAlign&&t.push(e.style.textAlign),a.each(n.tagHandlers,function(a,o){t=t.concat(o(e,n))}),t.push(o),n.getTagsRecursive(e,t))},initPlugins:function(){var e=this;e.loadedPlugins=[],a.each(a.trumbowyg.plugins,function(t,n){(!n.shouldInit||n.shouldInit(e))&&(n.init(e),n.tagHandler&&e.tagHandlers.push(n.tagHandler),e.loadedPlugins.push(n))})},destroyPlugins:function(){a.each(this.loadedPlugins,function(e,t){t.destroy&&t.destroy()})}}}(navigator,window,document,jQuery); |
//quickload/js/trumbowyg/ui/icons.svg |
---|
@@ -0,0 +1 @@ |
<svg xmlns="http://www.w3.org/2000/svg"><symbol id="trumbowyg-blockquote" viewBox="0 0 72 72"><path d="M21.3 31.9h-.6c.8-1.2 1.9-2.2 3.4-3.2 2.1-1.4 5-2.7 9.2-3.3l-1.4-8.9c-4.7.7-8.5 2.1-11.7 4-2.4 1.4-4.3 3.1-5.8 4.9-2.3 2.7-3.7 5.7-4.5 8.5-.8 2.8-1 5.4-1 7.5 0 2.3.3 4 .4 4.8 0 .1.1.3.1.4 1.2 5.4 6.1 9.5 11.9 9.5 6.7 0 12.2-5.4 12.2-12.2s-5.5-12-12.2-12zM49.5 31.9h-.6c.8-1.2 1.9-2.2 3.4-3.2 2.1-1.4 5-2.7 9.2-3.3l-1.4-8.9c-4.7.7-8.5 2.1-11.7 4-2.4 1.4-4.3 3.1-5.8 4.9-2.3 2.7-3.7 5.7-4.5 8.5-.8 2.8-1 5.4-1 7.5 0 2.3.3 4 .4 4.8 0 .1.1.3.1.4 1.2 5.4 6.1 9.5 11.9 9.5 6.7 0 12.2-5.4 12.2-12.2s-5.5-12-12.2-12z"/></symbol><symbol id="trumbowyg-bold" viewBox="0 0 72 72"><path d="M51.1 37.8c-1.1-1.4-2.5-2.5-4.2-3.3 1.2-.8 2.1-1.8 2.8-3 1-1.6 1.5-3.5 1.5-5.3 0-2-.6-4-1.7-5.8-1.1-1.8-2.8-3.2-4.8-4.1-2-.9-4.6-1.3-7.8-1.3h-16v42h16.3c2.6 0 4.8-.2 6.7-.7 1.9-.5 3.4-1.2 4.7-2.1 1.3-1 2.4-2.4 3.2-4.1.9-1.7 1.3-3.6 1.3-5.7.2-2.5-.5-4.7-2-6.6zM40.8 50.2c-.6.1-1.8.2-3.4.2h-9V38.5h8.3c2.5 0 4.4.2 5.6.6 1.2.4 2 1 2.7 2 .6.9 1 2 1 3.3 0 1.1-.2 2.1-.7 2.9-.5.9-1 1.5-1.7 1.9-.8.4-1.7.8-2.8 1zm2.6-20.4c-.5.7-1.3 1.3-2.5 1.6-.8.3-2.5.4-4.8.4h-7.7V21.6h7.1c1.4 0 2.6 0 3.6.1s1.7.2 2.2.4c1 .3 1.7.8 2.2 1.7.5.9.8 1.8.8 3-.1 1.3-.4 2.2-.9 3z"/></symbol><symbol id="trumbowyg-close" viewBox="0 0 72 72"><path d="M57 20.5l-5.4-5.4-15.5 15.5-15.6-15.5-5.4 5.4L30.7 36 15.1 51.5l5.4 5.4 15.6-15.5 15.5 15.5 5.4-5.4L41.5 36z"/></symbol><symbol id="trumbowyg-create-link" viewBox="0 0 72 72"><path d="M31.1 48.9l-6.7 6.7c-.8.8-1.6.9-2.1.9s-1.4-.1-2.1-.9L15 50.4c-1.1-1.1-1.1-3.1 0-4.2l6.1-6.1.2-.2 6.5-6.5c-1.2-.6-2.5-.9-3.8-.9-2.3 0-4.6.9-6.3 2.6L11 41.8c-3.5 3.5-3.5 9.2 0 12.7l5.2 5.2c1.7 1.7 4 2.6 6.3 2.6s4.6-.9 6.3-2.6l6.7-6.7c2.5-2.6 3.1-6.7 1.5-10l-5.9 5.9zM38.7 22.5l6.7-6.7c.8-.8 1.6-.9 2.1-.9s1.4.1 2.1.9l5.2 5.2c1.1 1.1 1.1 3.1 0 4.2l-6.1 6.1-.2.2L42 38c1.2.6 2.5.9 3.8.9 2.3 0 4.6-.9 6.3-2.6l6.7-6.7c3.5-3.5 3.5-9.2 0-12.7l-5.2-5.2c-1.7-1.7-4-2.6-6.3-2.6s-4.6.9-6.3 2.6l-6.7 6.7c-2.7 2.7-3.3 6.9-1.7 10.2l6.1-6.1c0 .1 0 .1 0 0z"/><path d="M44.2 30.5c.2-.2.4-.6.4-.9 0-.3-.1-.6-.4-.9l-2.3-2.3c-.3-.2-.6-.4-.9-.4-.3 0-.6.1-.9.4L25.9 40.6c-.2.2-.4.6-.4.9 0 .3.1.6.4.9l2.3 2.3c.2.2.6.4.9.4.3 0 .6-.1.9-.4l14.2-14.2zM49.9 55.4h-8.5v-5h8.5v-8.9h5.2v8.9h8.5v5h-8.5v8.9h-5.2v-8.9z"/></symbol><symbol id="trumbowyg-del" viewBox="0 0 72 72"><path d="M45.8 45c0 1-.3 1.9-.9 2.8-.6.9-1.6 1.6-3 2.1s-3.1.8-5 .8c-2.1 0-4-.4-5.7-1.1-1.7-.7-2.9-1.7-3.6-2.7-.8-1.1-1.3-2.6-1.5-4.5l-.1-.8-6.7.6v.9c.1 2.8.9 5.4 2.3 7.6 1.5 2.3 3.5 4 6.1 5.1 2.6 1.1 5.7 1.6 9.4 1.6 2.9 0 5.6-.5 8-1.6 2.4-1.1 4.3-2.7 5.6-4.7 1.3-2 2-4.2 2-6.5 0-1.6-.3-3.1-.9-4.5l-.2-.6H44c0 .1 1.8 2.3 1.8 5.5zM29 28.9c-.8-.8-1.2-1.7-1.2-2.9 0-.7.1-1.3.4-1.9.3-.6.7-1.1 1.4-1.6.6-.5 1.4-.9 2.5-1.1 1.1-.3 2.4-.4 3.9-.4 2.9 0 5 .6 6.3 1.7 1.3 1.1 2.1 2.7 2.4 5.1l.1.9 6.8-.5v-.9c-.1-2.5-.8-4.7-2.1-6.7s-3.2-3.5-5.6-4.5c-2.4-1-5.1-1.5-8.1-1.5-2.8 0-5.3.5-7.6 1.4-2.3 1-4.2 2.4-5.4 4.3-1.2 1.9-1.9 3.9-1.9 6.1 0 1.7.4 3.4 1.2 4.9l.3.5h11.8c-2.3-.9-3.9-1.7-5.2-2.9zm13.3-6.2zM22.7 20.3zM13 34.1h46.1v3.4H13z"/></symbol><symbol id="trumbowyg-em" viewBox="0 0 72 72"><path d="M26 57l10.1-42h7.2L33.2 57H26z"/></symbol><symbol id="trumbowyg-fullscreen" viewBox="0 0 72 72"><path d="M25.2 7.1H7.1v17.7l6.7-6.5 10.5 10.5 4.5-4.5-10.4-10.5zM47.2 7.1l6.5 6.7-10.5 10.5 4.5 4.5 10.5-10.4 6.7 6.8V7.1zM47.7 43.2l-4.5 4.5 10.4 10.5-6.8 6.7h18.1V47.2l-6.7 6.5zM24.3 43.2L13.8 53.6l-6.7-6.8v18.1h17.7l-6.5-6.7 10.5-10.5z"/><path fill="currentColor" d="M10.7 28.8h18.1V11.2l-6.6 6.4L11.6 7.1l-4.5 4.5 10.5 10.5zM60.8 28.8l-6.4-6.6 10.5-10.6-4.5-4.5-10.5 10.5-6.7-6.9v18.1zM60.4 64.9l4.5-4.5-10.5-10.5 6.9-6.7H43.2v17.6l6.6-6.4zM11.6 64.9l10.5-10.5 6.7 6.9V43.2H11.1l6.5 6.6L7.1 60.4z"/></symbol><symbol id="trumbowyg-h1" viewBox="0 0 72 72"><path d="M6.4 14.9h7.4v16.7h19.1V14.9h7.4V57h-7.4V38H13.8v19H6.4V14.9zM47.8 22.5c1.4 0 2.8-.1 4.1-.4 1.3-.2 2.5-.6 3.6-1.2 1.1-.5 2-1.3 2.8-2.1.8-.9 1.3-1.9 1.5-3.2h5.5v41.2h-7.4v-29H47.8v-5.3z"/></symbol><symbol id="trumbowyg-h2" viewBox="0 0 72 72"><path d="M1.5 14.9h7.4v16.7H28V14.9h7.4V57H28V38H8.8v19H1.5V14.9zM70.2 56.9H42c0-3.4.9-6.4 2.5-9s3.8-4.8 6.6-6.7c1.3-1 2.7-1.9 4.2-2.9 1.5-.9 2.8-1.9 4-3 1.2-1.1 2.2-2.2 3-3.4.8-1.2 1.2-2.7 1.2-4.3 0-.7-.1-1.5-.3-2.4s-.5-1.6-1-2.4c-.5-.7-1.2-1.3-2.1-1.8-.9-.5-2.1-.7-3.5-.7-1.3 0-2.4.3-3.3.8s-1.6 1.3-2.1 2.2-.9 2-1.2 3.3c-.3 1.3-.4 2.6-.4 4.1h-6.7c0-2.3.3-4.4.9-6.3.6-1.9 1.5-3.6 2.7-5 1.2-1.4 2.7-2.5 4.4-3.3 1.7-.8 3.8-1.2 6.1-1.2 2.5 0 4.6.4 6.3 1.2 1.7.8 3.1 1.9 4.1 3.1 1 1.3 1.8 2.6 2.2 4.1.4 1.5.6 2.9.6 4.2 0 1.6-.3 3.1-.8 4.5-.5 1.3-1.2 2.6-2.1 3.7-.9 1.1-1.8 2.2-2.9 3.1-1.1.9-2.2 1.8-3.4 2.7-1.2.8-2.4 1.6-3.5 2.4-1.2.7-2.3 1.5-3.3 2.2-1 .7-1.9 1.5-2.6 2.3-.7.8-1.3 1.7-1.5 2.6h20.1v5.9z"/></symbol><symbol id="trumbowyg-h3" viewBox="0 0 72 72"><path d="M1.4 14.5h7.4v16.7h19.1V14.5h7.4v42.1h-7.4v-19H8.8v19H1.4V14.5zM53.1 32.4c1.1 0 2.2 0 3.3-.2 1.1-.2 2.1-.5 2.9-1 .9-.5 1.6-1.2 2.1-2 .5-.9.8-1.9.8-3.2 0-1.8-.6-3.2-1.8-4.2-1.2-1.1-2.7-1.6-4.6-1.6-1.2 0-2.2.2-3.1.7-.9.5-1.6 1.1-2.2 1.9-.6.8-1 1.7-1.3 2.7-.3 1-.4 2-.4 3.1h-6.7c.1-2 .5-3.9 1.1-5.6.7-1.7 1.6-3.2 2.7-4.4s2.6-2.2 4.2-2.9c1.6-.7 3.5-1.1 5.6-1.1 1.6 0 3.2.2 4.7.7 1.6.5 2.9 1.2 4.2 2.1 1.2.9 2.2 2.1 3 3.4.7 1.4 1.1 3 1.1 4.8 0 2.1-.5 3.9-1.4 5.4-.9 1.6-2.4 2.7-4.4 3.4v.1c2.4.5 4.2 1.6 5.5 3.5 1.3 1.9 2 4.1 2 6.8 0 2-.4 3.7-1.2 5.3-.8 1.6-1.8 2.9-3.2 3.9-1.3 1.1-2.9 1.9-4.7 2.5-1.8.6-3.6.9-5.6.9-2.4 0-4.5-.3-6.3-1s-3.3-1.7-4.5-2.9c-1.2-1.3-2.1-2.8-2.7-4.5-.6-1.8-1-3.7-1-5.9h6.7c-.1 2.5.5 4.6 1.9 6.3 1.3 1.7 3.3 2.5 5.9 2.5 2.2 0 4.1-.6 5.6-1.9 1.5-1.3 2.3-3.1 2.3-5.4 0-1.6-.3-2.9-.9-3.8-.6-.9-1.5-1.7-2.5-2.2-1-.5-2.2-.8-3.4-.9-1.3-.1-2.6-.2-3.9-.1v-5.2z"/></symbol><symbol id="trumbowyg-h4" viewBox="0 0 72 72"><path d="M1.5 14.9h7.4v16.7H28V14.9h7.4V57H28V38H8.9v19H1.5V14.9zM70.5 47.2h-5.3V57h-6.4v-9.8H41.2v-6.7l17.7-24.8h6.4v26.2h5.3v5.3zm-24.2-5.3h12.5V23.7h-.1L46.3 41.9z"/></symbol><symbol id="trumbowyg-horizontal-rule" viewBox="0 0 72 72"><path d="M9.1 32h54v8h-54z"/></symbol><symbol id="trumbowyg-insert-image" viewBox="0 0 72 72"><path d="M64 17v38H8V17h56m8-8H0v54h72V9z"/><path d="M17.5 22C15 22 13 24 13 26.5s2 4.5 4.5 4.5 4.5-2 4.5-4.5-2-4.5-4.5-4.5zM16 50h27L29.5 32zM36 36.2l8.9-8.5L60.2 50H45.9S35.6 35.9 36 36.2z"/></symbol><symbol id="trumbowyg-italic" viewBox="0 0 72 72"><path d="M26 57l10.1-42h7.2L33.2 57H26z"/></symbol><symbol id="trumbowyg-justify-center" viewBox="0 0 72 72"><path d="M9 14h54v8H9zM9 50h54v8H9zM18 32h36v8H18z"/></symbol><symbol id="trumbowyg-justify-full" viewBox="0 0 72 72"><path d="M9 14h54v8H9zM9 50h54v8H9zM9 32h54v8H9z"/></symbol><symbol id="trumbowyg-justify-left" viewBox="0 0 72 72"><path d="M9 14h54v8H9zM9 50h54v8H9zM9 32h36v8H9z"/></symbol><symbol id="trumbowyg-justify-right" viewBox="0 0 72 72"><path d="M9 14h54v8H9zM9 50h54v8H9zM27 32h36v8H27z"/></symbol><symbol id="trumbowyg-link" viewBox="0 0 72 72"><path d="M30.9 49.1l-6.7 6.7c-.8.8-1.6.9-2.1.9s-1.4-.1-2.1-.9l-5.2-5.2c-1.1-1.1-1.1-3.1 0-4.2l6.1-6.1.2-.2 6.5-6.5c-1.2-.6-2.5-.9-3.8-.9-2.3 0-4.6.9-6.3 2.6L10.8 42c-3.5 3.5-3.5 9.2 0 12.7l5.2 5.2c1.7 1.7 4 2.6 6.3 2.6s4.6-.9 6.3-2.6l6.7-6.7C38 50.5 38.6 46.3 37 43l-6.1 6.1zM38.5 22.7l6.7-6.7c.8-.8 1.6-.9 2.1-.9s1.4.1 2.1.9l5.2 5.2c1.1 1.1 1.1 3.1 0 4.2l-6.1 6.1-.2.2-6.5 6.5c1.2.6 2.5.9 3.8.9 2.3 0 4.6-.9 6.3-2.6l6.7-6.7c3.5-3.5 3.5-9.2 0-12.7l-5.2-5.2c-1.7-1.7-4-2.6-6.3-2.6s-4.6.9-6.3 2.6l-6.7 6.7c-2.7 2.7-3.3 6.9-1.7 10.2l6.1-6.1z"/><path d="M44.1 30.7c.2-.2.4-.6.4-.9 0-.3-.1-.6-.4-.9l-2.3-2.3c-.2-.2-.6-.4-.9-.4-.3 0-.6.1-.9.4L25.8 40.8c-.2.2-.4.6-.4.9 0 .3.1.6.4.9l2.3 2.3c.2.2.6.4.9.4.3 0 .6-.1.9-.4l14.2-14.2z"/></symbol><symbol id="trumbowyg-ordered-list" viewBox="0 0 72 72"><path d="M27 14h36v8H27zM27 50h36v8H27zM27 32h36v8H27zM11.8 15.8V22h1.8v-7.8h-1.5l-2.1 1 .3 1.3zM12.1 38.5l.7-.6c1.1-1 2.1-2.1 2.1-3.4 0-1.4-1-2.4-2.7-2.4-1.1 0-2 .4-2.6.8l.5 1.3c.4-.3 1-.6 1.7-.6.9 0 1.3.5 1.3 1.1 0 .9-.9 1.8-2.6 3.3l-1 .9V40H15v-1.5h-2.9zM13.3 53.9c1-.4 1.4-1 1.4-1.8 0-1.1-.9-1.9-2.6-1.9-1 0-1.9.3-2.4.6l.4 1.3c.3-.2 1-.5 1.6-.5.8 0 1.2.3 1.2.8 0 .7-.8.9-1.4.9h-.7v1.3h.7c.8 0 1.6.3 1.6 1.1 0 .6-.5 1-1.4 1-.7 0-1.5-.3-1.8-.5l-.4 1.4c.5.3 1.3.6 2.3.6 2 0 3.2-1 3.2-2.4 0-1.1-.8-1.8-1.7-1.9z"/></symbol><symbol id="trumbowyg-p" viewBox="0 0 72 72"><path d="M47.8 15.1H30.1c-4.7 0-8.5 3.7-8.5 8.4s3.7 8.4 8.4 8.4v25h7V19.8h3v37.1h4.1V19.8h3.7v-4.7z"/></symbol><symbol id="trumbowyg-redo" viewBox="0 0 72 72"><path d="M10.8 51.2c0-5.1 2.1-9.7 5.4-13.1 3.3-3.3 8-5.4 13.1-5.4H46v-12L61.3 36 45.9 51.3V39.1H29.3c-3.3 0-6.4 1.3-8.5 3.5-2.2 2.2-3.5 5.2-3.5 8.5h-6.5z"/></symbol><symbol id="trumbowyg-removeformat" viewBox="0 0 72 72"><path d="M58.2 54.6L52 48.5l3.6-3.6 6.1 6.1 6.4-6.4 3.8 3.8-6.4 6.4 6.1 6.1-3.6 3.6-6.1-6.1-6.4 6.4-3.7-3.8 6.4-6.4zM21.7 52.1H50V57H21.7zM18.8 15.2h34.1v6.4H39.5v24.2h-7.4V21.5H18.8v-6.3z"/></symbol><symbol id="trumbowyg-strikethrough" viewBox="0 0 72 72"><path d="M45.8 45c0 1-.3 1.9-.9 2.8-.6.9-1.6 1.6-3 2.1s-3.1.8-5 .8c-2.1 0-4-.4-5.7-1.1-1.7-.7-2.9-1.7-3.6-2.7-.8-1.1-1.3-2.6-1.5-4.5l-.1-.8-6.7.6v.9c.1 2.8.9 5.4 2.3 7.6 1.5 2.3 3.5 4 6.1 5.1 2.6 1.1 5.7 1.6 9.4 1.6 2.9 0 5.6-.5 8-1.6 2.4-1.1 4.3-2.7 5.6-4.7 1.3-2 2-4.2 2-6.5 0-1.6-.3-3.1-.9-4.5l-.2-.6H44c0 .1 1.8 2.3 1.8 5.5zM29 28.9c-.8-.8-1.2-1.7-1.2-2.9 0-.7.1-1.3.4-1.9.3-.6.7-1.1 1.4-1.6.6-.5 1.4-.9 2.5-1.1 1.1-.3 2.4-.4 3.9-.4 2.9 0 5 .6 6.3 1.7 1.3 1.1 2.1 2.7 2.4 5.1l.1.9 6.8-.5v-.9c-.1-2.5-.8-4.7-2.1-6.7s-3.2-3.5-5.6-4.5c-2.4-1-5.1-1.5-8.1-1.5-2.8 0-5.3.5-7.6 1.4-2.3 1-4.2 2.4-5.4 4.3-1.2 1.9-1.9 3.9-1.9 6.1 0 1.7.4 3.4 1.2 4.9l.3.5h11.8c-2.3-.9-3.9-1.7-5.2-2.9zm13.3-6.2zM22.7 20.3zM13 34.1h46.1v3.4H13z"/></symbol><symbol id="trumbowyg-strong" viewBox="0 0 72 72"><path d="M51.1 37.8c-1.1-1.4-2.5-2.5-4.2-3.3 1.2-.8 2.1-1.8 2.8-3 1-1.6 1.5-3.5 1.5-5.3 0-2-.6-4-1.7-5.8-1.1-1.8-2.8-3.2-4.8-4.1-2-.9-4.6-1.3-7.8-1.3h-16v42h16.3c2.6 0 4.8-.2 6.7-.7 1.9-.5 3.4-1.2 4.7-2.1 1.3-1 2.4-2.4 3.2-4.1.9-1.7 1.3-3.6 1.3-5.7.2-2.5-.5-4.7-2-6.6zM40.8 50.2c-.6.1-1.8.2-3.4.2h-9V38.5h8.3c2.5 0 4.4.2 5.6.6 1.2.4 2 1 2.7 2 .6.9 1 2 1 3.3 0 1.1-.2 2.1-.7 2.9-.5.9-1 1.5-1.7 1.9-.8.4-1.7.8-2.8 1zm2.6-20.4c-.5.7-1.3 1.3-2.5 1.6-.8.3-2.5.4-4.8.4h-7.7V21.6h7.1c1.4 0 2.6 0 3.6.1s1.7.2 2.2.4c1 .3 1.7.8 2.2 1.7.5.9.8 1.8.8 3-.1 1.3-.4 2.2-.9 3z"/></symbol><symbol id="trumbowyg-subscript" viewBox="0 0 72 72"><path d="M32 15h7.8L56 57.1h-7.9L44.3 46H27.4l-4 11.1h-7.6L32 15zm-2.5 25.4h12.9L36 22.3h-.2l-6.3 18.1zM58.7 59.9c.6-1.4 2-2.8 4.1-4.4 1.9-1.3 3.1-2.3 3.7-2.9.8-.9 1.3-1.9 1.3-3 0-.9-.2-1.6-.7-2.2-.5-.6-1.2-.9-2.1-.9-1.2 0-2.1.5-2.5 1.4-.3.5-.4 1.4-.5 2.5h-4c.1-1.8.4-3.2 1-4.3 1.1-2.1 3-3.1 5.8-3.1 2.2 0 3.9.6 5.2 1.8 1.3 1.2 1.9 2.8 1.9 4.8 0 1.5-.5 2.9-1.4 4.1-.6.8-1.6 1.7-3 2.6L66 57.7c-1 .7-1.7 1.2-2.1 1.6-.4.3-.7.7-1 1.1H72V64H57.8c0-1.5.3-2.8.9-4.1z"/></symbol><symbol id="trumbowyg-superscript" viewBox="0 0 72 72"><path d="M32 15h7.8L56 57.1h-7.9l-4-11.1H27.4l-4 11.1h-7.6L32 15zm-2.5 25.4h12.9L36 22.3h-.2l-6.3 18.1zM49.6 28.8c.5-1.1 1.6-2.3 3.4-3.6 1.5-1.1 2.5-1.9 3-2.4.7-.7 1-1.6 1-2.4 0-.7-.2-1.3-.6-1.8-.4-.5-1-.7-1.7-.7-1 0-1.7.4-2.1 1.1-.2.4-.3 1.1-.4 2.1H49c.1-1.5.3-2.6.8-3.5.9-1.7 2.5-2.6 4.8-2.6 1.8 0 3.2.5 4.3 1.5 1.1 1 1.6 2.3 1.6 4 0 1.3-.4 2.4-1.1 3.4-.5.7-1.3 1.4-2.4 2.2l-1.3 1c-.8.6-1.4 1-1.7 1.3-.3.3-.6.6-.8.9h7.4v3H48.8c0-1.3.3-2.4.8-3.5z"/></symbol><symbol id="trumbowyg-table" viewBox="0 0 72 72"><path d="M25.686 51.38v-6.347q0-.462-.297-.76-.298-.297-.761-.297H14.04q-.463 0-.761.297-.298.298-.298.76v6.346q0 .463.298.76.298.298.76.298h10.589q.463 0 .76-.298.298-.297.298-.76zm0-12.692v-6.346q0-.463-.297-.76-.298-.298-.761-.298H14.04q-.463 0-.761.298-.298.297-.298.76v6.346q0 .462.298.76.298.297.76.297h10.589q.463 0 .76-.297.298-.298.298-.76zm16.94 12.691v-6.346q0-.462-.297-.76-.298-.297-.761-.297H30.98q-.463 0-.76.297-.299.298-.299.76v6.346q0 .463.298.76.298.298.761.298h10.588q.463 0 .76-.298.299-.297.299-.76zm-16.94-25.383v-6.345q0-.463-.297-.76-.298-.298-.761-.298H14.04q-.463 0-.761.297-.298.298-.298.76v6.346q0 .463.298.76.298.298.76.298h10.589q.463 0 .76-.298.298-.297.298-.76zm16.94 12.692v-6.346q0-.463-.297-.76-.298-.298-.761-.298H30.98q-.463 0-.76.298-.299.297-.299.76v6.346q0 .462.298.76.298.297.761.297h10.588q.463 0 .76-.297.299-.298.299-.76zm16.94 12.691v-6.346q0-.462-.297-.76-.298-.297-.76-.297H47.92q-.463 0-.76.297-.298.298-.298.76v6.346q0 .463.297.76.298.298.761.298h10.588q.463 0 .761-.298.298-.297.298-.76zm-16.94-25.383v-6.345q0-.463-.297-.76-.298-.298-.761-.298H30.98q-.463 0-.76.297-.299.298-.299.76v6.346q0 .463.298.76.298.298.761.298h10.588q.463 0 .76-.298.299-.297.299-.76zm16.94 12.692v-6.346q0-.463-.297-.76-.298-.298-.76-.298H47.92q-.463 0-.76.298-.298.297-.298.76v6.346q0 .462.297.76.298.297.761.297h10.588q.463 0 .761-.297.298-.298.298-.76zm0-12.692v-6.345q0-.463-.297-.76-.298-.298-.76-.298H47.92q-.463 0-.76.297-.298.298-.298.76v6.346q0 .463.297.76.298.298.761.298h10.588q.463 0 .761-.298.298-.297.298-.76zm4.236-10.576v35.96q0 2.18-1.555 3.734-1.555 1.553-3.739 1.553H14.04q-2.184 0-3.739-1.553-1.555-1.553-1.555-3.735V15.42q0-2.181 1.555-3.735 1.555-1.553 3.739-1.553h44.468q2.184 0 3.739 1.553 1.555 1.554 1.555 3.735z"/></symbol><symbol id="trumbowyg-underline" viewBox="0 0 72 72"><path d="M36 35zM15.2 55.9h41.6V59H15.2zM21.1 13.9h6.4v21.2c0 1.2.1 2.5.2 3.7.1 1.3.5 2.4 1 3.4.6 1 1.4 1.8 2.6 2.5 1.1.6 2.7 1 4.8 1 2.1 0 3.7-.3 4.8-1 1.1-.6 2-1.5 2.6-2.5.6-1 .9-2.1 1-3.4.1-1.3.2-2.5.2-3.7V13.9H51v23.3c0 2.3-.4 4.4-1.1 6.1-.7 1.7-1.7 3.2-3 4.4-1.3 1.2-2.9 2-4.7 2.6-1.8.6-3.9.9-6.1.9-2.2 0-4.3-.3-6.1-.9-1.8-.6-3.4-1.5-4.7-2.6-1.3-1.2-2.3-2.6-3-4.4-.7-1.7-1.1-3.8-1.1-6.1V13.9z"/></symbol><symbol id="trumbowyg-undo" viewBox="0 0 72 72"><path d="M61.2 51.2c0-5.1-2.1-9.7-5.4-13.1-3.3-3.3-8-5.4-13.1-5.4H26.1v-12L10.8 36l15.3 15.3V39.1h16.7c3.3 0 6.4 1.3 8.5 3.5 2.2 2.2 3.5 5.2 3.5 8.5h6.4z"/></symbol><symbol id="trumbowyg-unlink" viewBox="0 0 72 72"><path d="M30.9 49.1l-6.7 6.7c-.8.8-1.6.9-2.1.9s-1.4-.1-2.1-.9l-5.2-5.2c-1.1-1.1-1.1-3.1 0-4.2l6.1-6.1.2-.2 6.5-6.5c-1.2-.6-2.5-.9-3.8-.9-2.3 0-4.6.9-6.3 2.6L10.8 42c-3.5 3.5-3.5 9.2 0 12.7l5.2 5.2c1.7 1.7 4 2.6 6.3 2.6s4.6-.9 6.3-2.6l6.7-6.7C38 50.5 38.6 46.3 37 43l-6.1 6.1zM38.5 22.7l6.7-6.7c.8-.8 1.6-.9 2.1-.9s1.4.1 2.1.9l5.2 5.2c1.1 1.1 1.1 3.1 0 4.2l-6.1 6.1-.2.2-6.5 6.5c1.2.6 2.5.9 3.8.9 2.3 0 4.6-.9 6.3-2.6l6.7-6.7c3.5-3.5 3.5-9.2 0-12.7l-5.2-5.2c-1.7-1.7-4-2.6-6.3-2.6s-4.6.9-6.3 2.6l-6.7 6.7c-2.7 2.7-3.3 6.9-1.7 10.2l6.1-6.1z"/><path d="M44.1 30.7c.2-.2.4-.6.4-.9 0-.3-.1-.6-.4-.9l-2.3-2.3c-.2-.2-.6-.4-.9-.4-.3 0-.6.1-.9.4L25.8 40.8c-.2.2-.4.6-.4.9 0 .3.1.6.4.9l2.3 2.3c.2.2.6.4.9.4.3 0 .6-.1.9-.4l14.2-14.2zM41.3 55.8v-5h22.2v5H41.3z"/></symbol><symbol id="trumbowyg-unordered-list" viewBox="0 0 72 72"><path d="M27 14h36v8H27zM27 50h36v8H27zM9 50h9v8H9zM9 32h9v8H9zM9 14h9v8H9zM27 32h36v8H27z"/></symbol><symbol id="trumbowyg-view-html" viewBox="0 0 72 72"><path fill="none" stroke="currentColor" stroke-width="8" stroke-miterlimit="10" d="M26.9 17.9L9 36.2 26.9 54M45 54l17.9-18.3L45 17.9"/></symbol><symbol id="trumbowyg-base64" viewBox="0 0 72 72"><path d="M64 17v38H8V17h56m8-8H0v54h72V9z"/><path d="M29.9 28.9c-.5-.5-1.1-.8-1.8-.8s-1.4.2-1.9.7c-.5.4-.9 1-1.2 1.6-.3.6-.5 1.3-.6 2.1-.1.7-.2 1.4-.2 1.9l.1.1c.6-.8 1.2-1.4 2-1.8.8-.4 1.7-.5 2.7-.5.9 0 1.8.2 2.6.6.8.4 1.6.9 2.2 1.5.6.6 1 1.3 1.2 2.2.3.8.4 1.6.4 2.5 0 1.1-.2 2.1-.5 3-.3.9-.8 1.7-1.5 2.4-.6.7-1.4 1.2-2.3 1.6-.9.4-1.9.6-3 .6-1.6 0-2.8-.3-3.9-.9-1-.6-1.8-1.4-2.5-2.4-.6-1-1-2.1-1.3-3.4-.2-1.3-.4-2.6-.4-3.9 0-1.3.1-2.6.4-3.8.3-1.3.8-2.4 1.4-3.5.7-1 1.5-1.9 2.5-2.5 1-.6 2.3-1 3.8-1 .9 0 1.7.1 2.5.4.8.3 1.4.6 2 1.1.6.5 1.1 1.1 1.4 1.8.4.7.6 1.5.7 2.5h-4c0-1-.3-1.6-.8-2.1zm-3.5 6.8c-.4.2-.8.5-1 .8-.3.4-.5.8-.6 1.2-.1.5-.2 1-.2 1.5s.1.9.2 1.4c.1.5.4.9.6 1.2.3.4.6.7 1 .9.4.2.9.3 1.4.3.5 0 1-.1 1.3-.3.4-.2.7-.5 1-.9.3-.4.5-.8.6-1.2.1-.5.2-.9.2-1.4 0-.5-.1-1-.2-1.4-.1-.5-.3-.9-.6-1.2-.3-.4-.6-.7-1-.9-.4-.2-.9-.3-1.4-.3-.4 0-.9.1-1.3.3zM36.3 41.3v-3.8l9-12.1H49v12.4h2.7v3.5H49v4.8h-4v-4.8h-8.7zM45 30.7l-5.3 7.2h5.4l-.1-7.2z"/></symbol><symbol id="trumbowyg-emoji" viewBox="0 0 72 72"><path d="M36.05 9C21.09 9 8.949 21.141 8.949 36.101c0 14.96 12.141 27.101 27.101 27.101 14.96 0 27.101-12.141 27.101-27.101S51.01 9 36.05 9zm9.757 15.095c2.651 0 4.418 1.767 4.418 4.418s-1.767 4.418-4.418 4.418-4.418-1.767-4.418-4.418 1.767-4.418 4.418-4.418zm-19.479 0c2.651 0 4.418 1.767 4.418 4.418s-1.767 4.418-4.418 4.418-4.418-1.767-4.418-4.418 1.767-4.418 4.418-4.418zm9.722 30.436c-14.093 0-16.261-13.009-16.261-13.009h32.522S50.143 54.531 36.05 54.531z"/></symbol><symbol id="trumbowyg-back-color" viewBox="0 0 72 72"><path d="M36.5 22.3l-6.3 18.1H43l-6.3-18.1z"/><path d="M9 8.9v54.2h54.1V8.9H9zm39.9 48.2L45 46H28.2l-3.9 11.1h-7.6L32.8 15h7.8l16.2 42.1h-7.9z"/></symbol><symbol id="trumbowyg-fore-color" viewBox="0 0 72 72"><path d="M32 15h7.8L56 57.1h-7.9l-4-11.1H27.4l-4 11.1h-7.6L32 15zm-2.5 25.4h12.9L36 22.3h-.2l-6.3 18.1z"/></symbol><symbol id="trumbowyg-insert-audio" viewBox="0 0 8 8"><path d="M3.344 0L2 2H0v4h2l1.344 2H4V0h-.656zM5 1v1c.152 0 .313.026.469.063H5.5c.86.215 1.5.995 1.5 1.938a1.99 1.99 0 0 1-2 2.001v1a2.988 2.988 0 0 0 3-3 2.988 2.988 0 0 0-3-3zm0 2v2l.25-.031C5.683 4.851 6 4.462 6 4c0-.446-.325-.819-.75-.938v-.031h-.031L5 3z"/></symbol><symbol id="trumbowyg-noembed" viewBox="0 0 72 72"><path d="M31.5 33.6V25l11 11-11 11v-8.8z"/><path d="M64 17v38H8V17h56m8-8H0v54h72V9z"/></symbol><symbol id="trumbowyg-preformatted" viewBox="0 0 72 72"><path d="M10.3 33.5c.4 0 .9-.1 1.5-.2s1.2-.3 1.8-.7c.6-.3 1.1-.8 1.5-1.3.4-.5.6-1.3.6-2.1V17.1c0-1.4.3-2.6.8-3.6s1.2-1.9 2-2.5c.8-.7 1.6-1.2 2.5-1.5.9-.3 1.6-.5 2.2-.5h5.3v5.3h-3.2c-.7 0-1.3.1-1.8.4-.4.3-.8.6-1 1-.2.4-.4.9-.4 1.3-.1.5-.1.9-.1 1.4v11.4c0 1.2-.2 2.1-.7 2.9-.5.8-1 1.4-1.7 1.8-.6.4-1.3.8-2 1-.7.2-1.3.3-1.7.4v.1c.5 0 1 .1 1.7.3.7.2 1.3.5 2 .9.6.5 1.2 1.1 1.7 1.9.5.8.7 2 .7 3.4v11.1c0 .4 0 .9.1 1.4.1.5.2.9.4 1.3s.6.7 1 1c.4.3 1 .4 1.8.4h3.2V63h-5.3c-.6 0-1.4-.2-2.2-.5-.9-.3-1.7-.8-2.5-1.5s-1.4-1.5-2-2.5c-.5-1-.8-2.2-.8-3.6V43.5c0-.9-.2-1.7-.6-2.3-.4-.6-.9-1.1-1.5-1.5-.6-.4-1.2-.6-1.8-.7-.6-.1-1.1-.2-1.5-.2v-5.3zM61.8 38.7c-.4 0-1 .1-1.6.2-.6.1-1.2.4-1.8.7-.6.3-1.1.7-1.5 1.3-.4.5-.6 1.3-.6 2.1v12.1c0 1.4-.3 2.6-.8 3.6s-1.2 1.9-2 2.5c-.8.7-1.6 1.2-2.5 1.5-.9.3-1.6.5-2.2.5h-5.3v-5.3h3.2c.7 0 1.3-.1 1.8-.4.4-.3.8-.6 1-1 .2-.4.4-.9.4-1.3.1-.5.1-.9.1-1.4V42.3c0-1.2.2-2.1.7-2.9.5-.8 1-1.4 1.7-1.8.6-.4 1.3-.8 2-1 .7-.2 1.3-.3 1.7-.4v-.1c-.5 0-1-.1-1.7-.3-.7-.2-1.3-.5-2-.9-.6-.4-1.2-1.1-1.7-1.9-.5-.8-.7-2-.7-3.4V18.5c0-.4 0-.9-.1-1.4-.1-.5-.2-.9-.4-1.3s-.6-.7-1-1c-.4-.3-1-.4-1.8-.4h-3.2V9.1h5.3c.6 0 1.4.2 2.2.5.9.3 1.7.8 2.5 1.5s1.4 1.5 2 2.5c.5 1 .8 2.2.8 3.6v11.6c0 .9.2 1.7.6 2.3.4.6.9 1.1 1.5 1.5.6.4 1.2.6 1.8.7.6.1 1.2.2 1.6.2v5.2z"/></symbol><symbol id="trumbowyg-upload" viewBox="0 0 72 72"><path d="M64 27v28H8V27H0v36h72V27h-8z"/><path d="M32.1 6.7h8v33.6h-8z"/><path d="M48 35.9L36 49.6 24 36h24z"/></symbol></svg> |
//quickload/js/trumbowyg/ui/sass/trumbowyg.scss |
---|
@@ -0,0 +1,786 @@ |
/** |
* Trumbowyg v2.5.1 - A lightweight WYSIWYG editor |
* Default stylesheet for Trumbowyg editor |
* ------------------------ |
* @link http://alex-d.github.io/Trumbowyg |
* @license MIT |
* @author Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
$light-color: #ecf0f1 !default; |
$dark-color: #222 !default; |
$modal-submit-color: #2ecc71 !default; |
$modal-reset-color: #EEE !default; |
$transition-duration: 150ms !default; |
#trumbowyg-icons { |
overflow: hidden; |
visibility: hidden; |
height: 0; |
width: 0; |
svg { |
height: 0; |
width: 0; |
} |
} |
.trumbowyg-box { |
*, |
*::before, |
*::after { |
box-sizing: border-box; |
} |
svg { |
width: 17px; |
height: 100%; |
fill: $dark-color; |
} |
} |
.trumbowyg-box, |
.trumbowyg-editor { |
display: block; |
position: relative; |
border: 1px solid #DDD; |
width: 100%; |
min-height: 300px; |
margin: 17px auto; |
} |
.trumbowyg-box .trumbowyg-editor { |
margin: 0 auto; |
} |
.trumbowyg-box.trumbowyg-fullscreen { |
background: #FEFEFE; |
border: none !important; |
} |
.trumbowyg-editor, |
.trumbowyg-textarea { |
position: relative; |
box-sizing: border-box; |
padding: 20px; |
min-height: 300px; |
width: 100%; |
border-style: none; |
resize: none; |
outline: none; |
overflow: auto; |
} |
.trumbowyg-box-blur .trumbowyg-editor { |
*, |
&::before { |
color: transparent !important; |
text-shadow: 0 0 7px #333; |
@media screen and (min-width: 0 \0 |
) { |
color: rgba(200, 200, 200, 0.6) !important; |
} |
@supports (-ms-accelerator:true) { |
color: rgba(200, 200, 200, 0.6) !important; |
} |
} |
img, |
hr { |
opacity: 0.2; |
} |
} |
.trumbowyg-textarea { |
position: relative; |
display: block; |
overflow: auto; |
border: none; |
white-space: normal; |
font-size: 14px; |
font-family: "Inconsolata", "Consolas", "Courier", "Courier New", sans-serif; |
line-height: 18px; |
} |
.trumbowyg-box.trumbowyg-editor-visible { |
.trumbowyg-textarea { |
height: 1px !important; |
width: 25%; |
min-height: 0 !important; |
padding: 0 !important; |
background: none; |
opacity: 0 !important; |
} |
} |
.trumbowyg-box.trumbowyg-editor-hidden { |
.trumbowyg-textarea { |
display: block; |
} |
.trumbowyg-editor { |
display: none; |
} |
} |
.trumbowyg-box.trumbowyg-disabled { |
.trumbowyg-textarea { |
opacity: 0.8; |
background: none; |
} |
} |
.trumbowyg-editor[contenteditable=true]:empty:not(:focus)::before { |
content: attr(placeholder); |
color: #999; |
pointer-events: none; |
} |
.trumbowyg-button-pane { |
display: flex; |
flex-flow: row wrap; |
width: 100%; |
min-height: 36px; |
background: $light-color; |
border-bottom: 1px solid darken($light-color, 7%); |
margin: 0; |
padding: 0 5px; |
list-style-type: none; |
line-height: 10px; |
backface-visibility: hidden; |
&::after { |
content: " "; |
display: block; |
position: absolute; |
top: 36px; |
left: 0; |
right: 0; |
width: 100%; |
height: 1px; |
background: darken($light-color, 7%); |
} |
.trumbowyg-button-group { |
display: flex; |
flex-flow: row wrap; |
.trumbowyg-fullscreen-button svg { |
color: transparent; |
} |
&:not(:empty) + .trumbowyg-button-group::before { |
content: " "; |
display: block; |
width: 1px; |
background: darken($light-color, 7%); |
margin: 0 5px; |
height: 35px; |
} |
} |
button { |
display: block; |
position: relative; |
width: 35px; |
height: 35px; |
padding: 1px 6px !important; |
margin-bottom: 1px; |
overflow: hidden; |
border: none; |
cursor: pointer; |
background: none; |
transition: background-color $transition-duration, opacity $transition-duration; |
&.trumbowyg-textual-button { |
width: auto; |
line-height: 35px; |
} |
} |
&.trumbowyg-disable button:not(.trumbowyg-not-disable):not(.trumbowyg-active), |
.trumbowyg-disabled & button:not(.trumbowyg-not-disable):not(.trumbowyg-viewHTML-button) { |
opacity: 0.2; |
cursor: default; |
} |
&.trumbowyg-disable, |
.trumbowyg-disabled & { |
.trumbowyg-button-group::before { |
background: darken($light-color, 3%); |
} |
} |
button:not(.trumbowyg-disable):hover, |
button:not(.trumbowyg-disable):focus, |
button.trumbowyg-active { |
background-color: #FFF; |
outline: none; |
} |
.trumbowyg-open-dropdown { |
&::after { |
display: block; |
content: " "; |
position: absolute; |
top: 25px; |
right: 3px; |
height: 0; |
width: 0; |
border: 3px solid transparent; |
border-top-color: #555; |
} |
&.trumbowyg-textual-button { |
padding-left: 10px !important; |
padding-right: 18px !important; |
&::after { |
top: 17px; |
right: 7px; |
} |
} |
} |
.trumbowyg-right { |
margin-left: auto; |
&::before { |
display: none !important; |
} |
} |
} |
.trumbowyg-dropdown { |
width: 200px; |
border: 1px solid $light-color; |
padding: 5px 0; |
border-top: none; |
background: #FFF; |
margin-left: -1px; |
box-shadow: rgba(0, 0, 0, .1) 0 2px 3px; |
button { |
display: block; |
width: 100%; |
height: 35px; |
line-height: 35px; |
text-decoration: none; |
background: #FFF; |
padding: 0 10px; |
color: #333 !important; |
border: none; |
cursor: pointer; |
text-align: left; |
font-size: 15px; |
transition: all $transition-duration; |
&:hover, |
&:focus { |
background: $light-color; |
} |
svg { |
float: left; |
margin-right: 14px; |
} |
} |
} |
/* Modal box */ |
.trumbowyg-modal { |
position: absolute; |
top: 0; |
left: 50%; |
transform: translateX(-50%); |
max-width: 520px; |
width: 100%; |
height: 350px; |
z-index: 11; |
overflow: hidden; |
backface-visibility: hidden; |
} |
.trumbowyg-modal-box { |
position: absolute; |
top: 0; |
left: 50%; |
transform: translateX(-50%); |
max-width: 500px; |
width: calc(100% - 20px); |
padding-bottom: 45px; |
z-index: 1; |
background-color: #FFF; |
text-align: center; |
font-size: 14px; |
box-shadow: rgba(0, 0, 0, .2) 0 2px 3px; |
backface-visibility: hidden; |
.trumbowyg-modal-title { |
font-size: 24px; |
font-weight: bold; |
margin: 0 0 20px; |
padding: 15px 0 13px; |
display: block; |
border-bottom: 1px solid #EEE; |
color: #333; |
background: lighten($light-color, 5%); |
} |
.trumbowyg-progress { |
width: 100%; |
height: 3px; |
position: absolute; |
top: 58px; |
.trumbowyg-progress-bar { |
background: #2BC06A; |
height: 100%; |
transition: width $transition-duration linear; |
} |
} |
label { |
display: block; |
position: relative; |
margin: 15px 12px; |
height: 29px; |
line-height: 29px; |
overflow: hidden; |
.trumbowyg-input-infos { |
display: block; |
text-align: left; |
height: 25px; |
line-height: 25px; |
transition: all 150ms; |
span { |
display: block; |
color: darken($light-color, 45%); |
background-color: lighten($light-color, 5%); |
border: 1px solid #DEDEDE; |
padding: 0 7px; |
width: 150px; |
} |
span.trumbowyg-msg-error { |
color: #e74c3c; |
} |
} |
&.trumbowyg-input-error { |
input, |
textarea { |
border: 1px solid #e74c3c; |
} |
.trumbowyg-input-infos { |
margin-top: -27px; |
} |
} |
input { |
position: absolute; |
top: 0; |
right: 0; |
height: 27px; |
line-height: 27px; |
border: 1px solid #DEDEDE; |
background: #fff; |
font-size: 14px; |
max-width: 330px; |
width: 70%; |
padding: 0 7px; |
transition: all $transition-duration; |
&:hover, |
&:focus { |
outline: none; |
border: 1px solid #95a5a6; |
} |
&:focus { |
background: lighten($light-color, 5%); |
} |
} |
} |
.error { |
margin-top: 25px; |
display: block; |
color: red; |
} |
.trumbowyg-modal-button { |
position: absolute; |
bottom: 10px; |
right: 0; |
text-decoration: none; |
color: #FFF; |
display: block; |
width: 100px; |
height: 35px; |
line-height: 33px; |
margin: 0 10px; |
background-color: #333; |
border: none; |
cursor: pointer; |
font-family: "Trebuchet MS", Helvetica, Verdana, sans-serif; |
font-size: 16px; |
transition: all $transition-duration; |
&.trumbowyg-modal-submit { |
right: 110px; |
background: darken($modal-submit-color, 3%); |
&:hover, |
&:focus { |
background: lighten($modal-submit-color, 5%); |
outline: none; |
} |
&:active { |
background: darken($modal-submit-color, 10%); |
} |
} |
&.trumbowyg-modal-reset { |
color: #555; |
background: darken($modal-reset-color, 3%); |
&:hover, |
&:focus { |
background: lighten($modal-reset-color, 5%); |
outline: none; |
} |
&:active { |
background: darken($modal-reset-color, 10%); |
} |
} |
} |
} |
.trumbowyg-overlay { |
position: absolute; |
background-color: rgba(255, 255, 255, 0.5); |
width: 100%; |
left: 0; |
display: none; |
z-index: 10; |
} |
/** |
* Fullscreen |
*/ |
body.trumbowyg-body-fullscreen { |
overflow: hidden; |
} |
.trumbowyg-fullscreen { |
position: fixed; |
top: 0; |
left: 0; |
width: 100%; |
height: 100%; |
margin: 0; |
padding: 0; |
z-index: 99999; |
&.trumbowyg-box, |
.trumbowyg-editor { |
border: none; |
} |
.trumbowyg-editor, |
.trumbowyg-textarea { |
height: calc(100% - 37px) !important; |
overflow: auto; |
} |
.trumbowyg-overlay { |
height: 100% !important; |
} |
.trumbowyg-button-group .trumbowyg-fullscreen-button svg { |
color: $dark-color; |
fill: transparent; |
} |
} |
.trumbowyg-editor { |
object, |
embed, |
video, |
img { |
max-width: 100%; |
} |
video, |
img { |
height: auto; |
} |
img { |
cursor: move; |
} |
/* |
* lset for resetCss option |
*/ |
&.trumbowyg-reset-css { |
background: #FEFEFE !important; |
font-family: "Trebuchet MS", Helvetica, Verdana, sans-serif !important; |
font-size: 14px !important; |
line-height: 1.45em !important; |
white-space: normal !important; |
color: #333; |
a { |
color: #15c !important; |
text-decoration: underline !important; |
} |
div, |
p, |
ul, |
ol, |
blockquote { |
box-shadow: none !important; |
background: none !important; |
margin: 0 !important; |
margin-bottom: 15px !important; |
line-height: 1.4em !important; |
font-family: "Trebuchet MS", Helvetica, Verdana, sans-serif !important; |
font-size: 14px !important; |
border: none; |
} |
iframe, |
object, |
hr { |
margin-bottom: 15px !important; |
} |
blockquote { |
margin-left: 32px !important; |
font-style: italic !important; |
color: #555; |
} |
ul, |
ol { |
padding-left: 20px !important; |
} |
ul ul, |
ol ol, |
ul ol, |
ol ul { |
border: none; |
margin: 2px !important; |
padding: 0 !important; |
padding-left: 24px !important; |
} |
hr { |
display: block; |
height: 1px; |
border: none; |
border-top: 1px solid #CCC; |
} |
h1, |
h2, |
h3, |
h4 { |
color: #111; |
background: none; |
margin: 0 !important; |
padding: 0 !important; |
font-weight: bold; |
} |
h1 { |
font-size: 32px !important; |
line-height: 38px !important; |
margin-bottom: 20px !important; |
} |
h2 { |
font-size: 26px !important; |
line-height: 34px !important; |
margin-bottom: 15px !important; |
} |
h3 { |
font-size: 22px !important; |
line-height: 28px !important; |
margin-bottom: 7px !important; |
} |
h4 { |
font-size: 16px !important; |
line-height: 22px !important; |
margin-bottom: 7px !important; |
} |
} |
} |
/* |
* Dark theme |
*/ |
.trumbowyg-dark { |
.trumbowyg-textarea { |
background: #111; |
color: #ddd; |
} |
.trumbowyg-box { |
border: 1px solid lighten($dark-color, 7%); |
&.trumbowyg-fullscreen { |
background: #111; |
} |
&.trumbowyg-box-blur .trumbowyg-editor { |
*, |
&::before { |
text-shadow: 0 0 7px #ccc; |
@media screen and (min-width: 0 \0 |
) { |
color: rgba(20, 20, 20, 0.6) !important; |
} |
@supports (-ms-accelerator:true) { |
color: rgba(20, 20, 20, 0.6) !important; |
} |
} |
} |
svg { |
fill: $light-color; |
color: $light-color; |
} |
} |
.trumbowyg-button-pane { |
background-color: $dark-color; |
border-bottom-color: lighten($dark-color, 7%); |
&::after { |
background: lighten($dark-color, 7%); |
} |
.trumbowyg-button-group:not(:empty) { |
&::before { |
background-color: lighten($dark-color, 7%); |
} |
.trumbowyg-fullscreen-button svg { |
color: transparent; |
} |
} |
&.trumbowyg-disable { |
.trumbowyg-button-group::before { |
background-color: lighten($dark-color, 3%); |
} |
} |
button:not(.trumbowyg-disable):hover, |
button:not(.trumbowyg-disable):focus, |
button.trumbowyg-active { |
background-color: #333; |
} |
.trumbowyg-open-dropdown::after { |
border-top-color: #fff; |
} |
} |
.trumbowyg-fullscreen { |
.trumbowyg-button-group .trumbowyg-fullscreen-button svg { |
color: $light-color; |
fill: transparent; |
} |
} |
.trumbowyg-dropdown { |
border-color: $dark-color; |
background: #333; |
box-shadow: rgba(0, 0, 0, .3) 0 2px 3px; |
button { |
background: #333; |
color: #fff !important; |
&:hover, |
&:focus { |
background: $dark-color; |
} |
} |
} |
// Modal box |
.trumbowyg-modal-box { |
background-color: $dark-color; |
.trumbowyg-modal-title { |
border-bottom: 1px solid #555; |
color: #fff; |
background: lighten($dark-color, 10%); |
} |
label { |
display: block; |
position: relative; |
margin: 15px 12px; |
height: 27px; |
line-height: 27px; |
overflow: hidden; |
.trumbowyg-input-infos { |
span { |
color: #eee; |
background-color: lighten($dark-color, 5%); |
border-color: $dark-color; |
} |
span.trumbowyg-msg-error { |
color: #e74c3c; |
} |
} |
&.trumbowyg-input-error { |
input, |
textarea { |
border-color: #e74c3c; |
} |
} |
input { |
border-color: $dark-color; |
color: #eee; |
background: #333; |
&:hover, |
&:focus { |
border-color: lighten($dark-color, 25%); |
} |
&:focus { |
background-color: lighten($dark-color, 5%); |
} |
} |
} |
.trumbowyg-modal-button { |
&.trumbowyg-modal-submit { |
background: darken($modal-submit-color, 20%); |
&:hover, |
&:focus { |
background: darken($modal-submit-color, 10%); |
} |
&:active { |
background: darken($modal-submit-color, 25%); |
} |
} |
&.trumbowyg-modal-reset { |
background: #333; |
color: #ccc; |
&:hover, |
&:focus { |
background: #444; |
} |
&:active { |
background: #111; |
} |
} |
} |
} |
.trumbowyg-overlay { |
background-color: rgba(15, 15, 15, 0.6); |
} |
} |
//quickload/js/trumbowyg/ui/trumbowyg.css |
---|
@@ -0,0 +1,584 @@ |
/** |
* Trumbowyg v2.5.1 - A lightweight WYSIWYG editor |
* Default stylesheet for Trumbowyg editor |
* ------------------------ |
* @link http://alex-d.github.io/Trumbowyg |
* @license MIT |
* @author Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
#trumbowyg-icons { |
overflow: hidden; |
visibility: hidden; |
height: 0; |
width: 0; } |
#trumbowyg-icons svg { |
height: 0; |
width: 0; } |
.trumbowyg-box *, |
.trumbowyg-box *::before, |
.trumbowyg-box *::after { |
box-sizing: border-box; } |
.trumbowyg-box svg { |
width: 17px; |
height: 100%; |
fill: #222; } |
.trumbowyg-box, |
.trumbowyg-editor { |
display: block; |
position: relative; |
border: 1px solid #DDD; |
width: 100%; |
min-height: 300px; |
margin: 17px auto; } |
.trumbowyg-box .trumbowyg-editor { |
margin: 0 auto; } |
.trumbowyg-box.trumbowyg-fullscreen { |
background: #FEFEFE; |
border: none !important; } |
.trumbowyg-editor, |
.trumbowyg-textarea { |
position: relative; |
box-sizing: border-box; |
padding: 20px; |
min-height: 300px; |
width: 100%; |
border-style: none; |
resize: none; |
outline: none; |
overflow: auto; } |
.trumbowyg-box-blur .trumbowyg-editor *, .trumbowyg-box-blur .trumbowyg-editor::before { |
color: transparent !important; |
text-shadow: 0 0 7px #333; } |
@media screen and (min-width: 0 \0 ) { |
.trumbowyg-box-blur .trumbowyg-editor *, .trumbowyg-box-blur .trumbowyg-editor::before { |
color: rgba(200, 200, 200, 0.6) !important; } } |
@supports (-ms-accelerator: true) { |
.trumbowyg-box-blur .trumbowyg-editor *, .trumbowyg-box-blur .trumbowyg-editor::before { |
color: rgba(200, 200, 200, 0.6) !important; } } |
.trumbowyg-box-blur .trumbowyg-editor img, |
.trumbowyg-box-blur .trumbowyg-editor hr { |
opacity: 0.2; } |
.trumbowyg-textarea { |
position: relative; |
display: block; |
overflow: auto; |
border: none; |
white-space: normal; |
font-size: 14px; |
font-family: "Inconsolata", "Consolas", "Courier", "Courier New", sans-serif; |
line-height: 18px; } |
.trumbowyg-box.trumbowyg-editor-visible .trumbowyg-textarea { |
height: 1px !important; |
width: 25%; |
min-height: 0 !important; |
padding: 0 !important; |
background: none; |
opacity: 0 !important; } |
.trumbowyg-box.trumbowyg-editor-hidden .trumbowyg-textarea { |
display: block; } |
.trumbowyg-box.trumbowyg-editor-hidden .trumbowyg-editor { |
display: none; } |
.trumbowyg-box.trumbowyg-disabled .trumbowyg-textarea { |
opacity: 0.8; |
background: none; } |
.trumbowyg-editor[contenteditable=true]:empty:not(:focus)::before { |
content: attr(placeholder); |
color: #999; |
pointer-events: none; } |
.trumbowyg-button-pane { |
display: -webkit-box; |
display: -ms-flexbox; |
display: flex; |
-ms-flex-flow: row wrap; |
flex-flow: row wrap; |
width: 100%; |
min-height: 36px; |
background: #ecf0f1; |
border-bottom: 1px solid #d7e0e2; |
margin: 0; |
padding: 0 5px; |
list-style-type: none; |
line-height: 10px; |
-webkit-backface-visibility: hidden; |
backface-visibility: hidden; } |
.trumbowyg-button-pane::after { |
content: " "; |
display: block; |
position: absolute; |
top: 36px; |
left: 0; |
right: 0; |
width: 100%; |
height: 1px; |
background: #d7e0e2; } |
.trumbowyg-button-pane .trumbowyg-button-group { |
display: -webkit-box; |
display: -ms-flexbox; |
display: flex; |
-ms-flex-flow: row wrap; |
flex-flow: row wrap; } |
.trumbowyg-button-pane .trumbowyg-button-group .trumbowyg-fullscreen-button svg { |
color: transparent; } |
.trumbowyg-button-pane .trumbowyg-button-group:not(:empty) + .trumbowyg-button-group::before { |
content: " "; |
display: block; |
width: 1px; |
background: #d7e0e2; |
margin: 0 5px; |
height: 35px; } |
.trumbowyg-button-pane button { |
display: block; |
position: relative; |
width: 35px; |
height: 35px; |
padding: 1px 6px !important; |
margin-bottom: 1px; |
overflow: hidden; |
border: none; |
cursor: pointer; |
background: none; |
-webkit-transition: background-color 150ms, opacity 150ms; |
transition: background-color 150ms, opacity 150ms; } |
.trumbowyg-button-pane button.trumbowyg-textual-button { |
width: auto; |
line-height: 35px; } |
.trumbowyg-button-pane.trumbowyg-disable button:not(.trumbowyg-not-disable):not(.trumbowyg-active), |
.trumbowyg-disabled .trumbowyg-button-pane button:not(.trumbowyg-not-disable):not(.trumbowyg-viewHTML-button) { |
opacity: 0.2; |
cursor: default; } |
.trumbowyg-button-pane.trumbowyg-disable .trumbowyg-button-group::before, |
.trumbowyg-disabled .trumbowyg-button-pane .trumbowyg-button-group::before { |
background: #e3e9eb; } |
.trumbowyg-button-pane button:not(.trumbowyg-disable):hover, |
.trumbowyg-button-pane button:not(.trumbowyg-disable):focus, |
.trumbowyg-button-pane button.trumbowyg-active { |
background-color: #FFF; |
outline: none; } |
.trumbowyg-button-pane .trumbowyg-open-dropdown::after { |
display: block; |
content: " "; |
position: absolute; |
top: 25px; |
right: 3px; |
height: 0; |
width: 0; |
border: 3px solid transparent; |
border-top-color: #555; } |
.trumbowyg-button-pane .trumbowyg-open-dropdown.trumbowyg-textual-button { |
padding-left: 10px !important; |
padding-right: 18px !important; } |
.trumbowyg-button-pane .trumbowyg-open-dropdown.trumbowyg-textual-button::after { |
top: 17px; |
right: 7px; } |
.trumbowyg-button-pane .trumbowyg-right { |
margin-left: auto; } |
.trumbowyg-button-pane .trumbowyg-right::before { |
display: none !important; } |
.trumbowyg-dropdown { |
width: 200px; |
border: 1px solid #ecf0f1; |
padding: 5px 0; |
border-top: none; |
background: #FFF; |
margin-left: -1px; |
box-shadow: rgba(0, 0, 0, 0.1) 0 2px 3px; } |
.trumbowyg-dropdown button { |
display: block; |
width: 100%; |
height: 35px; |
line-height: 35px; |
text-decoration: none; |
background: #FFF; |
padding: 0 10px; |
color: #333 !important; |
border: none; |
cursor: pointer; |
text-align: left; |
font-size: 15px; |
-webkit-transition: all 150ms; |
transition: all 150ms; } |
.trumbowyg-dropdown button:hover, .trumbowyg-dropdown button:focus { |
background: #ecf0f1; } |
.trumbowyg-dropdown button svg { |
float: left; |
margin-right: 14px; } |
/* Modal box */ |
.trumbowyg-modal { |
position: absolute; |
top: 0; |
left: 50%; |
-webkit-transform: translateX(-50%); |
transform: translateX(-50%); |
max-width: 520px; |
width: 100%; |
height: 350px; |
z-index: 11; |
overflow: hidden; |
-webkit-backface-visibility: hidden; |
backface-visibility: hidden; } |
.trumbowyg-modal-box { |
position: absolute; |
top: 0; |
left: 50%; |
-webkit-transform: translateX(-50%); |
transform: translateX(-50%); |
max-width: 500px; |
width: calc(100% - 20px); |
padding-bottom: 45px; |
z-index: 1; |
background-color: #FFF; |
text-align: center; |
font-size: 14px; |
box-shadow: rgba(0, 0, 0, 0.2) 0 2px 3px; |
-webkit-backface-visibility: hidden; |
backface-visibility: hidden; } |
.trumbowyg-modal-box .trumbowyg-modal-title { |
font-size: 24px; |
font-weight: bold; |
margin: 0 0 20px; |
padding: 15px 0 13px; |
display: block; |
border-bottom: 1px solid #EEE; |
color: #333; |
background: #fbfcfc; } |
.trumbowyg-modal-box .trumbowyg-progress { |
width: 100%; |
height: 3px; |
position: absolute; |
top: 58px; } |
.trumbowyg-modal-box .trumbowyg-progress .trumbowyg-progress-bar { |
background: #2BC06A; |
height: 100%; |
-webkit-transition: width 150ms linear; |
transition: width 150ms linear; } |
.trumbowyg-modal-box label { |
display: block; |
position: relative; |
margin: 15px 12px; |
height: 29px; |
line-height: 29px; |
overflow: hidden; } |
.trumbowyg-modal-box label .trumbowyg-input-infos { |
display: block; |
text-align: left; |
height: 25px; |
line-height: 25px; |
-webkit-transition: all 150ms; |
transition: all 150ms; } |
.trumbowyg-modal-box label .trumbowyg-input-infos span { |
display: block; |
color: #69878f; |
background-color: #fbfcfc; |
border: 1px solid #DEDEDE; |
padding: 0 7px; |
width: 150px; } |
.trumbowyg-modal-box label .trumbowyg-input-infos span.trumbowyg-msg-error { |
color: #e74c3c; } |
.trumbowyg-modal-box label.trumbowyg-input-error input, |
.trumbowyg-modal-box label.trumbowyg-input-error textarea { |
border: 1px solid #e74c3c; } |
.trumbowyg-modal-box label.trumbowyg-input-error .trumbowyg-input-infos { |
margin-top: -27px; } |
.trumbowyg-modal-box label input { |
position: absolute; |
top: 0; |
right: 0; |
height: 27px; |
line-height: 27px; |
border: 1px solid #DEDEDE; |
background: #fff; |
font-size: 14px; |
max-width: 330px; |
width: 70%; |
padding: 0 7px; |
-webkit-transition: all 150ms; |
transition: all 150ms; } |
.trumbowyg-modal-box label input:hover, .trumbowyg-modal-box label input:focus { |
outline: none; |
border: 1px solid #95a5a6; } |
.trumbowyg-modal-box label input:focus { |
background: #fbfcfc; } |
.trumbowyg-modal-box .error { |
margin-top: 25px; |
display: block; |
color: red; } |
.trumbowyg-modal-box .trumbowyg-modal-button { |
position: absolute; |
bottom: 10px; |
right: 0; |
text-decoration: none; |
color: #FFF; |
display: block; |
width: 100px; |
height: 35px; |
line-height: 33px; |
margin: 0 10px; |
background-color: #333; |
border: none; |
cursor: pointer; |
font-family: "Trebuchet MS", Helvetica, Verdana, sans-serif; |
font-size: 16px; |
-webkit-transition: all 150ms; |
transition: all 150ms; } |
.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit { |
right: 110px; |
background: #2bc06a; } |
.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:hover, .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:focus { |
background: #40d47e; |
outline: none; } |
.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:active { |
background: #25a25a; } |
.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset { |
color: #555; |
background: #e6e6e6; } |
.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:hover, .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:focus { |
background: #fbfbfb; |
outline: none; } |
.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:active { |
background: #d5d5d5; } |
.trumbowyg-overlay { |
position: absolute; |
background-color: rgba(255, 255, 255, 0.5); |
width: 100%; |
left: 0; |
display: none; |
z-index: 10; } |
/** |
* Fullscreen |
*/ |
body.trumbowyg-body-fullscreen { |
overflow: hidden; } |
.trumbowyg-fullscreen { |
position: fixed; |
top: 0; |
left: 0; |
width: 100%; |
height: 100%; |
margin: 0; |
padding: 0; |
z-index: 99999; } |
.trumbowyg-fullscreen.trumbowyg-box, |
.trumbowyg-fullscreen .trumbowyg-editor { |
border: none; } |
.trumbowyg-fullscreen .trumbowyg-editor, |
.trumbowyg-fullscreen .trumbowyg-textarea { |
height: calc(100% - 37px) !important; |
overflow: auto; } |
.trumbowyg-fullscreen .trumbowyg-overlay { |
height: 100% !important; } |
.trumbowyg-fullscreen .trumbowyg-button-group .trumbowyg-fullscreen-button svg { |
color: #222; |
fill: transparent; } |
.trumbowyg-editor { |
/* |
* lset for resetCss option |
*/ } |
.trumbowyg-editor object, |
.trumbowyg-editor embed, |
.trumbowyg-editor video, |
.trumbowyg-editor img { |
max-width: 100%; } |
.trumbowyg-editor video, |
.trumbowyg-editor img { |
height: auto; } |
.trumbowyg-editor img { |
cursor: move; } |
.trumbowyg-editor.trumbowyg-reset-css { |
background: #FEFEFE !important; |
font-family: "Trebuchet MS", Helvetica, Verdana, sans-serif !important; |
font-size: 14px !important; |
line-height: 1.45em !important; |
white-space: normal !important; |
color: #333; } |
.trumbowyg-editor.trumbowyg-reset-css a { |
color: #15c !important; |
text-decoration: underline !important; } |
.trumbowyg-editor.trumbowyg-reset-css div, |
.trumbowyg-editor.trumbowyg-reset-css p, |
.trumbowyg-editor.trumbowyg-reset-css ul, |
.trumbowyg-editor.trumbowyg-reset-css ol, |
.trumbowyg-editor.trumbowyg-reset-css blockquote { |
box-shadow: none !important; |
background: none !important; |
margin: 0 !important; |
margin-bottom: 15px !important; |
line-height: 1.4em !important; |
font-family: "Trebuchet MS", Helvetica, Verdana, sans-serif !important; |
font-size: 14px !important; |
border: none; } |
.trumbowyg-editor.trumbowyg-reset-css iframe, |
.trumbowyg-editor.trumbowyg-reset-css object, |
.trumbowyg-editor.trumbowyg-reset-css hr { |
margin-bottom: 15px !important; } |
.trumbowyg-editor.trumbowyg-reset-css blockquote { |
margin-left: 32px !important; |
font-style: italic !important; |
color: #555; } |
.trumbowyg-editor.trumbowyg-reset-css ul, |
.trumbowyg-editor.trumbowyg-reset-css ol { |
padding-left: 20px !important; } |
.trumbowyg-editor.trumbowyg-reset-css ul ul, |
.trumbowyg-editor.trumbowyg-reset-css ol ol, |
.trumbowyg-editor.trumbowyg-reset-css ul ol, |
.trumbowyg-editor.trumbowyg-reset-css ol ul { |
border: none; |
margin: 2px !important; |
padding: 0 !important; |
padding-left: 24px !important; } |
.trumbowyg-editor.trumbowyg-reset-css hr { |
display: block; |
height: 1px; |
border: none; |
border-top: 1px solid #CCC; } |
.trumbowyg-editor.trumbowyg-reset-css h1, |
.trumbowyg-editor.trumbowyg-reset-css h2, |
.trumbowyg-editor.trumbowyg-reset-css h3, |
.trumbowyg-editor.trumbowyg-reset-css h4 { |
color: #111; |
background: none; |
margin: 0 !important; |
padding: 0 !important; |
font-weight: bold; } |
.trumbowyg-editor.trumbowyg-reset-css h1 { |
font-size: 32px !important; |
line-height: 38px !important; |
margin-bottom: 20px !important; } |
.trumbowyg-editor.trumbowyg-reset-css h2 { |
font-size: 26px !important; |
line-height: 34px !important; |
margin-bottom: 15px !important; } |
.trumbowyg-editor.trumbowyg-reset-css h3 { |
font-size: 22px !important; |
line-height: 28px !important; |
margin-bottom: 7px !important; } |
.trumbowyg-editor.trumbowyg-reset-css h4 { |
font-size: 16px !important; |
line-height: 22px !important; |
margin-bottom: 7px !important; } |
/* |
* Dark theme |
*/ |
.trumbowyg-dark .trumbowyg-textarea { |
background: #111; |
color: #ddd; } |
.trumbowyg-dark .trumbowyg-box { |
border: 1px solid #343434; } |
.trumbowyg-dark .trumbowyg-box.trumbowyg-fullscreen { |
background: #111; } |
.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *, .trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before { |
text-shadow: 0 0 7px #ccc; } |
@media screen and (min-width: 0 \0 ) { |
.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *, .trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before { |
color: rgba(20, 20, 20, 0.6) !important; } } |
@supports (-ms-accelerator: true) { |
.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *, .trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before { |
color: rgba(20, 20, 20, 0.6) !important; } } |
.trumbowyg-dark .trumbowyg-box svg { |
fill: #ecf0f1; |
color: #ecf0f1; } |
.trumbowyg-dark .trumbowyg-button-pane { |
background-color: #222; |
border-bottom-color: #343434; } |
.trumbowyg-dark .trumbowyg-button-pane::after { |
background: #343434; } |
.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-button-group:not(:empty)::before { |
background-color: #343434; } |
.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-button-group:not(:empty) .trumbowyg-fullscreen-button svg { |
color: transparent; } |
.trumbowyg-dark .trumbowyg-button-pane.trumbowyg-disable .trumbowyg-button-group::before { |
background-color: #2a2a2a; } |
.trumbowyg-dark .trumbowyg-button-pane button:not(.trumbowyg-disable):hover, |
.trumbowyg-dark .trumbowyg-button-pane button:not(.trumbowyg-disable):focus, |
.trumbowyg-dark .trumbowyg-button-pane button.trumbowyg-active { |
background-color: #333; } |
.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-open-dropdown::after { |
border-top-color: #fff; } |
.trumbowyg-dark .trumbowyg-fullscreen .trumbowyg-button-group .trumbowyg-fullscreen-button svg { |
color: #ecf0f1; |
fill: transparent; } |
.trumbowyg-dark .trumbowyg-dropdown { |
border-color: #222; |
background: #333; |
box-shadow: rgba(0, 0, 0, 0.3) 0 2px 3px; } |
.trumbowyg-dark .trumbowyg-dropdown button { |
background: #333; |
color: #fff !important; } |
.trumbowyg-dark .trumbowyg-dropdown button:hover, .trumbowyg-dark .trumbowyg-dropdown button:focus { |
background: #222; } |
.trumbowyg-dark .trumbowyg-modal-box { |
background-color: #222; } |
.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-title { |
border-bottom: 1px solid #555; |
color: #fff; |
background: #3c3c3c; } |
.trumbowyg-dark .trumbowyg-modal-box label { |
display: block; |
position: relative; |
margin: 15px 12px; |
height: 27px; |
line-height: 27px; |
overflow: hidden; } |
.trumbowyg-dark .trumbowyg-modal-box label .trumbowyg-input-infos span { |
color: #eee; |
background-color: #2f2f2f; |
border-color: #222; } |
.trumbowyg-dark .trumbowyg-modal-box label .trumbowyg-input-infos span.trumbowyg-msg-error { |
color: #e74c3c; } |
.trumbowyg-dark .trumbowyg-modal-box label.trumbowyg-input-error input, |
.trumbowyg-dark .trumbowyg-modal-box label.trumbowyg-input-error textarea { |
border-color: #e74c3c; } |
.trumbowyg-dark .trumbowyg-modal-box label input { |
border-color: #222; |
color: #eee; |
background: #333; } |
.trumbowyg-dark .trumbowyg-modal-box label input:hover, .trumbowyg-dark .trumbowyg-modal-box label input:focus { |
border-color: #626262; } |
.trumbowyg-dark .trumbowyg-modal-box label input:focus { |
background-color: #2f2f2f; } |
.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit { |
background: #1b7943; } |
.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:hover, .trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:focus { |
background: #25a25a; } |
.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:active { |
background: #176437; } |
.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset { |
background: #333; |
color: #ccc; } |
.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:hover, .trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:focus { |
background: #444; } |
.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:active { |
background: #111; } |
.trumbowyg-dark .trumbowyg-overlay { |
background-color: rgba(15, 15, 15, 0.6); } |
//quickload/js/trumbowyg/ui/trumbowyg.min.css |
---|
@@ -0,0 +1,2 @@ |
/** Trumbowyg v2.5.1 - A lightweight WYSIWYG editor - alex-d.github.io/Trumbowyg - License MIT - Author : Alexandre Demode (Alex-D) / alex-d.fr */ |
#trumbowyg-icons,#trumbowyg-icons svg{height:0;width:0}#trumbowyg-icons{overflow:hidden;visibility:hidden}.trumbowyg-box *,.trumbowyg-box ::after,.trumbowyg-box ::before{box-sizing:border-box}.trumbowyg-box svg{width:17px;height:100%;fill:#222}.trumbowyg-box,.trumbowyg-editor{display:block;position:relative;border:1px solid #DDD;width:100%;min-height:300px;margin:17px auto}.trumbowyg-box .trumbowyg-editor{margin:0 auto}.trumbowyg-box.trumbowyg-fullscreen{background:#FEFEFE;border:none!important}.trumbowyg-editor,.trumbowyg-textarea{position:relative;box-sizing:border-box;padding:20px;min-height:300px;width:100%;border-style:none;resize:none;outline:0;overflow:auto}.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-box-blur .trumbowyg-editor::before{color:transparent!important;text-shadow:0 0 7px #333}@media screen and (min-width:0 \0){.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(200,200,200,.6)!important}}@supports (-ms-accelerator:true){.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(200,200,200,.6)!important}}.trumbowyg-box-blur .trumbowyg-editor hr,.trumbowyg-box-blur .trumbowyg-editor img{opacity:.2}.trumbowyg-textarea{position:relative;display:block;overflow:auto;border:none;white-space:normal;font-size:14px;font-family:Inconsolata,Consolas,Courier,"Courier New",sans-serif;line-height:18px}.trumbowyg-box.trumbowyg-editor-visible .trumbowyg-textarea{height:1px!important;width:25%;min-height:0!important;padding:0!important;background:0 0;opacity:0!important}.trumbowyg-box.trumbowyg-editor-hidden .trumbowyg-textarea{display:block}.trumbowyg-box.trumbowyg-editor-hidden .trumbowyg-editor{display:none}.trumbowyg-box.trumbowyg-disabled .trumbowyg-textarea{opacity:.8;background:0 0}.trumbowyg-editor[contenteditable=true]:empty:not(:focus)::before{content:attr(placeholder);color:#999;pointer-events:none}.trumbowyg-button-pane{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;width:100%;min-height:36px;background:#ecf0f1;border-bottom:1px solid #d7e0e2;margin:0;padding:0 5px;list-style-type:none;line-height:10px;-webkit-backface-visibility:hidden;backface-visibility:hidden}.trumbowyg-button-pane::after{content:" ";display:block;position:absolute;top:36px;left:0;right:0;width:100%;height:1px;background:#d7e0e2}.trumbowyg-button-pane .trumbowyg-button-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.trumbowyg-button-pane .trumbowyg-button-group .trumbowyg-fullscreen-button svg{color:transparent}.trumbowyg-button-pane .trumbowyg-button-group:not(:empty)+.trumbowyg-button-group::before{content:" ";display:block;width:1px;background:#d7e0e2;margin:0 5px;height:35px}.trumbowyg-button-pane button{display:block;position:relative;width:35px;height:35px;padding:1px 6px!important;margin-bottom:1px;overflow:hidden;border:none;cursor:pointer;background:0 0;-webkit-transition:background-color 150ms,opacity 150ms;transition:background-color 150ms,opacity 150ms}.trumbowyg-button-pane button.trumbowyg-textual-button{width:auto;line-height:35px}.trumbowyg-button-pane.trumbowyg-disable button:not(.trumbowyg-not-disable):not(.trumbowyg-active),.trumbowyg-disabled .trumbowyg-button-pane button:not(.trumbowyg-not-disable):not(.trumbowyg-viewHTML-button){opacity:.2;cursor:default}.trumbowyg-button-pane.trumbowyg-disable .trumbowyg-button-group::before,.trumbowyg-disabled .trumbowyg-button-pane .trumbowyg-button-group::before{background:#e3e9eb}.trumbowyg-button-pane button.trumbowyg-active,.trumbowyg-button-pane button:not(.trumbowyg-disable):focus,.trumbowyg-button-pane button:not(.trumbowyg-disable):hover{background-color:#FFF;outline:0}.trumbowyg-button-pane .trumbowyg-open-dropdown::after{display:block;content:" ";position:absolute;top:25px;right:3px;height:0;width:0;border:3px solid transparent;border-top-color:#555}.trumbowyg-button-pane .trumbowyg-open-dropdown.trumbowyg-textual-button{padding-left:10px!important;padding-right:18px!important}.trumbowyg-button-pane .trumbowyg-open-dropdown.trumbowyg-textual-button::after{top:17px;right:7px}.trumbowyg-button-pane .trumbowyg-right{margin-left:auto}.trumbowyg-button-pane .trumbowyg-right::before{display:none!important}.trumbowyg-dropdown{width:200px;border:1px solid #ecf0f1;padding:5px 0;border-top:none;background:#FFF;margin-left:-1px;box-shadow:rgba(0,0,0,.1) 0 2px 3px}.trumbowyg-dropdown button{display:block;width:100%;height:35px;line-height:35px;text-decoration:none;background:#FFF;padding:0 10px;color:#333!important;border:none;cursor:pointer;text-align:left;font-size:15px;-webkit-transition:all 150ms;transition:all 150ms}.trumbowyg-dropdown button:focus,.trumbowyg-dropdown button:hover{background:#ecf0f1}.trumbowyg-dropdown button svg{float:left;margin-right:14px}.trumbowyg-modal{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);max-width:520px;width:100%;height:350px;z-index:11;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.trumbowyg-modal-box{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);max-width:500px;width:calc(100% - 20px);padding-bottom:45px;z-index:1;background-color:#FFF;text-align:center;font-size:14px;box-shadow:rgba(0,0,0,.2) 0 2px 3px;-webkit-backface-visibility:hidden;backface-visibility:hidden}.trumbowyg-modal-box .trumbowyg-modal-title{font-size:24px;font-weight:700;margin:0 0 20px;padding:15px 0 13px;display:block;border-bottom:1px solid #EEE;color:#333;background:#fbfcfc}.trumbowyg-modal-box .trumbowyg-progress{width:100%;height:3px;position:absolute;top:58px}.trumbowyg-modal-box .trumbowyg-progress .trumbowyg-progress-bar{background:#2BC06A;height:100%;-webkit-transition:width 150ms linear;transition:width 150ms linear}.trumbowyg-modal-box label{display:block;position:relative;margin:15px 12px;height:29px;line-height:29px;overflow:hidden}.trumbowyg-modal-box label .trumbowyg-input-infos{display:block;text-align:left;height:25px;line-height:25px;-webkit-transition:all 150ms;transition:all 150ms}.trumbowyg-modal-box label .trumbowyg-input-infos span{display:block;color:#69878f;background-color:#fbfcfc;border:1px solid #DEDEDE;padding:0 7px;width:150px}.trumbowyg-modal-box label .trumbowyg-input-infos span.trumbowyg-msg-error{color:#e74c3c}.trumbowyg-modal-box label.trumbowyg-input-error input,.trumbowyg-modal-box label.trumbowyg-input-error textarea{border:1px solid #e74c3c}.trumbowyg-modal-box label.trumbowyg-input-error .trumbowyg-input-infos{margin-top:-27px}.trumbowyg-modal-box label input{position:absolute;top:0;right:0;height:27px;line-height:27px;border:1px solid #DEDEDE;background:#fff;font-size:14px;max-width:330px;width:70%;padding:0 7px;-webkit-transition:all 150ms;transition:all 150ms}.trumbowyg-modal-box label input:focus,.trumbowyg-modal-box label input:hover{outline:0;border:1px solid #95a5a6}.trumbowyg-modal-box label input:focus{background:#fbfcfc}.trumbowyg-modal-box .error{margin-top:25px;display:block;color:red}.trumbowyg-modal-box .trumbowyg-modal-button{position:absolute;bottom:10px;right:0;text-decoration:none;color:#FFF;display:block;width:100px;height:35px;line-height:33px;margin:0 10px;background-color:#333;border:none;cursor:pointer;font-family:"Trebuchet MS",Helvetica,Verdana,sans-serif;font-size:16px;-webkit-transition:all 150ms;transition:all 150ms}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit{right:110px;background:#2bc06a}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:focus,.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:hover{background:#40d47e;outline:0}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:active{background:#25a25a}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset{color:#555;background:#e6e6e6}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:focus,.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:hover{background:#fbfbfb;outline:0}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:active{background:#d5d5d5}.trumbowyg-overlay{position:absolute;background-color:rgba(255,255,255,.5);width:100%;left:0;display:none;z-index:10}body.trumbowyg-body-fullscreen{overflow:hidden}.trumbowyg-fullscreen{position:fixed;top:0;left:0;width:100%;height:100%;margin:0;padding:0;z-index:99999}.trumbowyg-fullscreen .trumbowyg-editor,.trumbowyg-fullscreen.trumbowyg-box{border:none}.trumbowyg-fullscreen .trumbowyg-editor,.trumbowyg-fullscreen .trumbowyg-textarea{height:calc(100% - 37px)!important;overflow:auto}.trumbowyg-fullscreen .trumbowyg-overlay{height:100%!important}.trumbowyg-fullscreen .trumbowyg-button-group .trumbowyg-fullscreen-button svg{color:#222;fill:transparent}.trumbowyg-editor embed,.trumbowyg-editor img,.trumbowyg-editor object,.trumbowyg-editor video{max-width:100%}.trumbowyg-editor img,.trumbowyg-editor video{height:auto}.trumbowyg-editor img{cursor:move}.trumbowyg-editor.trumbowyg-reset-css{background:#FEFEFE!important;font-family:"Trebuchet MS",Helvetica,Verdana,sans-serif!important;font-size:14px!important;line-height:1.45em!important;white-space:normal!important;color:#333}.trumbowyg-editor.trumbowyg-reset-css a{color:#15c!important;text-decoration:underline!important}.trumbowyg-editor.trumbowyg-reset-css blockquote,.trumbowyg-editor.trumbowyg-reset-css div,.trumbowyg-editor.trumbowyg-reset-css ol,.trumbowyg-editor.trumbowyg-reset-css p,.trumbowyg-editor.trumbowyg-reset-css ul{box-shadow:none!important;background:0 0!important;margin:0 0 15px!important;line-height:1.4em!important;font-family:"Trebuchet MS",Helvetica,Verdana,sans-serif!important;font-size:14px!important;border:none}.trumbowyg-editor.trumbowyg-reset-css hr,.trumbowyg-editor.trumbowyg-reset-css iframe,.trumbowyg-editor.trumbowyg-reset-css object{margin-bottom:15px!important}.trumbowyg-editor.trumbowyg-reset-css blockquote{margin-left:32px!important;font-style:italic!important;color:#555}.trumbowyg-editor.trumbowyg-reset-css ol,.trumbowyg-editor.trumbowyg-reset-css ul{padding-left:20px!important}.trumbowyg-editor.trumbowyg-reset-css ol ol,.trumbowyg-editor.trumbowyg-reset-css ol ul,.trumbowyg-editor.trumbowyg-reset-css ul ol,.trumbowyg-editor.trumbowyg-reset-css ul ul{border:none;margin:2px!important;padding:0 0 0 24px!important}.trumbowyg-editor.trumbowyg-reset-css hr{display:block;height:1px;border:none;border-top:1px solid #CCC}.trumbowyg-editor.trumbowyg-reset-css h1,.trumbowyg-editor.trumbowyg-reset-css h2,.trumbowyg-editor.trumbowyg-reset-css h3,.trumbowyg-editor.trumbowyg-reset-css h4{color:#111;background:0 0;margin:0!important;padding:0!important;font-weight:700}.trumbowyg-editor.trumbowyg-reset-css h1{font-size:32px!important;line-height:38px!important;margin-bottom:20px!important}.trumbowyg-editor.trumbowyg-reset-css h2{font-size:26px!important;line-height:34px!important;margin-bottom:15px!important}.trumbowyg-editor.trumbowyg-reset-css h3{font-size:22px!important;line-height:28px!important;margin-bottom:7px!important}.trumbowyg-editor.trumbowyg-reset-css h4{font-size:16px!important;line-height:22px!important;margin-bottom:7px!important}.trumbowyg-dark .trumbowyg-textarea{background:#111;color:#ddd}.trumbowyg-dark .trumbowyg-box{border:1px solid #343434}.trumbowyg-dark .trumbowyg-box.trumbowyg-fullscreen{background:#111}.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before{text-shadow:0 0 7px #ccc}@media screen and (min-width:0 \0){.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(20,20,20,.6)!important}}@supports (-ms-accelerator:true){.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(20,20,20,.6)!important}}.trumbowyg-dark .trumbowyg-box svg{fill:#ecf0f1;color:#ecf0f1}.trumbowyg-dark .trumbowyg-button-pane{background-color:#222;border-bottom-color:#343434}.trumbowyg-dark .trumbowyg-button-pane::after{background:#343434}.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-button-group:not(:empty)::before{background-color:#343434}.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-button-group:not(:empty) .trumbowyg-fullscreen-button svg{color:transparent}.trumbowyg-dark .trumbowyg-button-pane.trumbowyg-disable .trumbowyg-button-group::before{background-color:#2a2a2a}.trumbowyg-dark .trumbowyg-button-pane button.trumbowyg-active,.trumbowyg-dark .trumbowyg-button-pane button:not(.trumbowyg-disable):focus,.trumbowyg-dark .trumbowyg-button-pane button:not(.trumbowyg-disable):hover{background-color:#333}.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-open-dropdown::after{border-top-color:#fff}.trumbowyg-dark .trumbowyg-fullscreen .trumbowyg-button-group .trumbowyg-fullscreen-button svg{color:#ecf0f1;fill:transparent}.trumbowyg-dark .trumbowyg-dropdown{border-color:#222;background:#333;box-shadow:rgba(0,0,0,.3) 0 2px 3px}.trumbowyg-dark .trumbowyg-dropdown button{background:#333;color:#fff!important}.trumbowyg-dark .trumbowyg-dropdown button:focus,.trumbowyg-dark .trumbowyg-dropdown button:hover{background:#222}.trumbowyg-dark .trumbowyg-modal-box{background-color:#222}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-title{border-bottom:1px solid #555;color:#fff;background:#3c3c3c}.trumbowyg-dark .trumbowyg-modal-box label{display:block;position:relative;margin:15px 12px;height:27px;line-height:27px;overflow:hidden}.trumbowyg-dark .trumbowyg-modal-box label .trumbowyg-input-infos span{color:#eee;background-color:#2f2f2f;border-color:#222}.trumbowyg-dark .trumbowyg-modal-box label .trumbowyg-input-infos span.trumbowyg-msg-error{color:#e74c3c}.trumbowyg-dark .trumbowyg-modal-box label.trumbowyg-input-error input,.trumbowyg-dark .trumbowyg-modal-box label.trumbowyg-input-error textarea{border-color:#e74c3c}.trumbowyg-dark .trumbowyg-modal-box label input{border-color:#222;color:#eee;background:#333}.trumbowyg-dark .trumbowyg-modal-box label input:focus,.trumbowyg-dark .trumbowyg-modal-box label input:hover{border-color:#626262}.trumbowyg-dark .trumbowyg-modal-box label input:focus{background-color:#2f2f2f}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit{background:#1b7943}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:focus,.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:hover{background:#25a25a}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:active{background:#176437}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset{background:#333;color:#ccc}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:focus,.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:hover{background:#444}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:active{background:#111}.trumbowyg-dark .trumbowyg-overlay{background-color:rgba(15,15,15,.6)} |