Ye(e,"*:not(.tox-silver-sink)")))),a=(e=>{const t=te(e,"background-color");return void 0!==t&&""!==t?"background-color:"+t+"!important":"background-color:rgb(255,255,255)!important;"})(n);x(i,r("display:none!important;")),x(o,r(Je+Qe+a)),r((!0===Ze?"":Je)+Qe+a)(t)},tt=_e.DOM,nt=qe().fold((()=>({bind:g,unbind:g})),(e=>{const t=(()=>{const e=O(g);return{...e,on:t=>e.get().each(t)}})(),n=k(),r=k(),o=((e,t)=>{let n=null;return{cancel:()=>{a(n)||(clearTimeout(n),n=null)},throttle:(...t)=>{a(n)&&(n=setTimeout((()=>{n=null,e.apply(null,t)}),50))}}})((()=>{document.body.scrollTop=0,document.documentElement.scrollTop=0,window.requestAnimationFrame((()=>{t.on((t=>ee(t,{top:e.offsetTop+"px",left:e.offsetLeft+"px",height:e.height+"px",width:e.width+"px"})))}))}));return{bind:e=>{t.set(e),o.throttle(),n.set(je("resize",o.throttle)),r.set(je("scroll",o.throttle))},unbind:()=>{t.on((()=>{n.clear(),r.clear()})),t.clear()}}})),rt=(e,t)=>{const n=document.body,r=document.documentElement,o=e.getContainer(),s=j(o),i=(l=s,y.from(l.dom.nextSibling).map(j)).filter((e=>(e=>P(e)&&L(e.dom))(e)&&((e,t)=>(e=>void 0!==e.dom.classList)(e)&&e.dom.classList.contains("tox-silver-sink"))(e)));var l;const a=(e=>{const t=j(e.getElement());return Y(t).map(G).getOrThunk((()=>(e=>{const t=e.dom.body;if(null==t)throw new Error("Body is not available yet");return j(t)})(z(t))))})(e),c=t.get(),u=j(e.getBody()),d=ze.deviceType.isTouch(),m=o.style,h=e.iframeElement,g=null==h?void 0:h.style,p=e=>{e(n,"tox-fullscreen"),e(r,"tox-fullscreen"),e(o,"tox-fullscreen"),Y(s).map((e=>G(e).dom)).each((t=>{e(t,"tox-fullscreen"),e(t,"tox-shadowhost")}))},f=()=>{d&&(e=>{const t=((e,t)=>{const n=document;return 1!==(r=n).nodeType&&9!==r.nodeType&&11!==r.nodeType||0===r.childElementCount?[]:S(n.querySelectorAll(e),j);var r})("["+Ge+"]");x(t,(t=>{const n=V(t,Ge);n&&"no-styles"!==n?ee(t,e.parseStyle(n)):W(t,"style"),W(t,Ge)}))})(e.dom),p(tt.removeClass),nt.unbind(),y.from(t.get()).each((e=>e.fullscreenChangeHandler.unbind()))};if(c)c.fullscreenChangeHandler.unbind(),$e(e)&&Ue(a)&&(e=>{const t=e.dom;t.exitFullscreen?t.exitFullscreen():t.msExitFullscreen?t.msExitFullscreen():t.webkitCancelFullScreen&&t.webkitCancelFullScreen()})(z(a)),g.width=c.iframeWidth,g.height=c.iframeHeight,m.width=c.containerWidth,m.height=c.containerHeight,m.top=c.containerTop,m.left=c.containerLeft,w=i,b=c.sinkCssPosition,E=(e,t)=>{Z(e,"position",t)},w.isSome()&&b.isSome()?y.some(E(w.getOrDie(),b.getOrDie())):y.none(),f(),v=c.scrollPos,window.scrollTo(v.x,v.y),t.set(null),Ke(e,!1),e.off("remove",f);else{const n=ie(z(a),void 0!==document.fullscreenElement?"fullscreenchange":void 0!==document.msFullscreenElement?"MSFullscreenChange":void 0!==document.webkitFullscreenElement?"webkitfullscreenchange":"fullscreenchange",(n=>{$e(e)&&(Ue(a)||null===t.get()||rt(e,t))})),r={scrollPos:Ie(window),containerWidth:m.width,containerHeight:m.height,containerTop:m.top,containerLeft:m.left,iframeWidth:g.width,iframeHeight:g.height,fullscreenChangeHandler:n,sinkCssPosition:i.map((e=>te(e,"position")))};d&&et(e.dom,s,u),g.width=g.height="100%",m.width=m.height="",p(tt.addClass),i.each((e=>{Z(e,"position","fixed")})),nt.bind(s),e.on("remove",f),t.set(r),$e(e)&&(e=>{const t=e.dom;t.requestFullscreen?t.requestFullscreen():t.msRequestFullscreen?t.msRequestFullscreen():t.webkitRequestFullScreen&&t.webkitRequestFullScreen()})(a),Ke(e,!0)}var v,w,b,E};var ot=tinymce.util.Tools.resolve("tinymce.util.VK");const st=(e,t)=>n=>{n.setActive(null!==t.get());const r=e=>n.setActive(e.state);return e.on("FullscreenStateChanged",r),()=>e.off("FullscreenStateChanged",r)};t.add("fullscreen",(t=>{const n=e(null);return t.inline||((e=>{(0,e.options.register)("fullscreen_native",{processor:"boolean",default:!1})})(t),((e,t)=>{e.addCommand("mceFullScreen",(()=>{rt(e,t)}))})(t,n),((e,t)=>{const n=()=>e.execCommand("mceFullScreen");e.ui.registry.addToggleMenuItem("fullscreen",{text:"Fullscreen",icon:"fullscreen",shortcut:"Meta+Shift+F",onAction:n,onSetup:st(e,t)}),e.ui.registry.addToggleButton("fullscreen",{tooltip:"Fullscreen",icon:"fullscreen",onAction:n,onSetup:st(e,t),shortcut:"Meta+Shift+F"})})(t,n),((e,t)=>{e.on("init",(()=>{e.on("keydown",(e=>{e.keyCode!==ot.TAB||e.metaKey||e.ctrlKey||!t.get()||e.preventDefault()}))}))})(t,n),t.addShortcut("Meta+Shift+F","","mceFullScreen")),(e=>({isFullscreen:()=>null!==e.get()}))(n)}))}();
\ No newline at end of file
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/ar.js b/public/tinymce/plugins/help/js/i18n/keynav/ar.js
new file mode 100644
index 00000000..b0b503f8
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/ar.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.ar',
+ 'بدء التنقل بواسطة لوحة المفاتيح
\n' +
+ '\n' +
+ '\n' +
+ ' - التركيز على شريط القوائم
\n' +
+ ' - نظاما التشغيل Windows أو Linux: Alt + F9
\n' +
+ ' - نظام التشغيل macOS: ⌥F9
\n' +
+ ' - التركيز على شريط الأدوات
\n' +
+ ' - نظاما التشغيل Windows أو Linux: Alt + F10
\n' +
+ ' - نظام التشغيل macOS: ⌥F10
\n' +
+ ' - التركيز على التذييل
\n' +
+ ' - نظاما التشغيل Windows أو Linux: Alt + F11
\n' +
+ ' - نظام التشغيل macOS: ⌥F11
\n' +
+ ' - تركيز الإشعارات
\n' +
+ ' - نظاما التشغيل Windows أو Linux: Alt + F12
\n' +
+ ' - نظام التشغيل macOS: ⌥F12
\n' +
+ ' - التركيز على شريط أدوات السياق
\n' +
+ ' - أنظمة التشغيل Windows أو Linux أو macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'سيبدأ التنقل عند عنصر واجهة المستخدم الأول، والذي سيتم تمييزه أو تسطيره في حالة العنصر الأول في\n' +
+ ' مسار عنصر التذييل.
\n' +
+ '\n' +
+ 'التنقل بين أقسام واجهة المستخدم
\n' +
+ '\n' +
+ 'للانتقال من أحد أقسام واجهة المستخدم إلى القسم التالي، اضغط على Tab.
\n' +
+ '\n' +
+ 'للانتقال من أحد أقسام واجهة المستخدم إلى القسم السابق، اضغط على Shift+Tab.
\n' +
+ '\n' +
+ 'ترتيب علامات Tab لأقسام واجهة المستخدم هذه هو:
\n' +
+ '\n' +
+ '\n' +
+ ' - شريط القوائم
\n' +
+ ' - كل مجموعة شريط الأدوات
\n' +
+ ' - الشريط الجانبي
\n' +
+ ' - مسار العنصر في التذييل
\n' +
+ ' - زر تبديل عدد الكلمات في التذييل
\n' +
+ ' - رابط إدراج العلامة التجارية في التذييل
\n' +
+ ' - مؤشر تغيير حجم المحرر في التذييل
\n' +
+ '
\n' +
+ '\n' +
+ 'إذا لم يكن قسم واجهة المستخدم موجودًا، فسيتم تخطيه.
\n' +
+ '\n' +
+ 'إذا كان التذييل يحتوي على التركيز على التنقل بواسطة لوحة المفاتيح، ولا يوجد شريط جانبي مرئي، فإن الضغط على Shift+Tab\n' +
+ ' ينقل التركيز إلى مجموعة شريط الأدوات الأولى، وليس الأخيرة.
\n' +
+ '\n' +
+ 'التنقل بين أقسام واجهة المستخدم
\n' +
+ '\n' +
+ 'للانتقال من أحد عناصر واجهة المستخدم إلى العنصر التالي، اضغط على مفتاح السهم المناسب.
\n' +
+ '\n' +
+ 'مفتاحا السهمين اليسار واليمين
\n' +
+ '\n' +
+ '\n' +
+ ' - التنقل بين القوائم في شريط القوائم.
\n' +
+ ' - فتح قائمة فرعية في القائمة.
\n' +
+ ' - التنقل بين الأزرار في مجموعة شريط الأدوات.
\n' +
+ ' - التنقل بين العناصر في مسار عنصر التذييل.
\n' +
+ '
\n' +
+ '\n' +
+ 'مفتاحا السهمين لأسفل ولأعلى
\n' +
+ '\n' +
+ '\n' +
+ ' - التنقل بين عناصر القائمة في القائمة.
\n' +
+ ' - التنقل بين العناصر في قائمة شريط الأدوات المنبثقة.
\n' +
+ '
\n' +
+ '\n' +
+ 'دورة مفاتيح الأسهم داخل قسم واجهة المستخدم التي تم التركيز عليها.
\n' +
+ '\n' +
+ 'لإغلاق قائمة مفتوحة أو قائمة فرعية مفتوحة أو قائمة منبثقة مفتوحة، اضغط على مفتاح Esc.
\n' +
+ '\n' +
+ 'إذا كان التركيز الحالي على "الجزء العلوي" من قسم معين لواجهة المستخدم، فإن الضغط على مفتاح Esc يؤدي أيضًا إلى الخروج\n' +
+ ' من التنقل بواسطة لوحة المفاتيح بالكامل.
\n' +
+ '\n' +
+ 'تنفيذ عنصر قائمة أو زر شريط أدوات
\n' +
+ '\n' +
+ 'عندما يتم تمييز عنصر القائمة المطلوب أو زر شريط الأدوات، اضغط على زر Return، أو Enter،\n' +
+ ' أو مفتاح المسافة لتنفيذ العنصر.
\n' +
+ '\n' +
+ 'التنقل في مربعات الحوار غير المبوبة
\n' +
+ '\n' +
+ 'في مربعات الحوار غير المبوبة، يتم التركيز على المكون التفاعلي الأول عند فتح مربع الحوار.
\n' +
+ '\n' +
+ 'التنقل بين مكونات الحوار التفاعلي بالضغط على زر Tab أو Shift+Tab.
\n' +
+ '\n' +
+ 'التنقل في مربعات الحوار المبوبة
\n' +
+ '\n' +
+ 'في مربعات الحوار المبوبة، يتم التركيز على الزر الأول في قائمة علامات التبويب عند فتح مربع الحوار.
\n' +
+ '\n' +
+ 'التنقل بين المكونات التفاعلية لعلامة التبويب لمربع الحوار هذه بالضغط على زر Tab أو\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'التبديل إلى علامة تبويب أخرى لمربع الحوار من خلال التركيز على قائمة علامة التبويب ثم الضغط على زر السهم المناسب\n' +
+ ' مفتاح للتنقل بين علامات التبويب المتاحة.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/bg_BG.js b/public/tinymce/plugins/help/js/i18n/keynav/bg_BG.js
new file mode 100644
index 00000000..59e069db
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/bg_BG.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.bg_BG',
+ 'Начало на навигацията с клавиатурата
\n' +
+ '\n' +
+ '\n' +
+ ' - Фокусиране върху лентата с менюта
\n' +
+ ' - Windows или Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Фокусиране върху лентата с инструменти
\n' +
+ ' - Windows или Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Фокусиране върху долния колонтитул
\n' +
+ ' - Windows или Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Фокусиране на известието
\n' +
+ ' - Windows или Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Фокусиране върху контекстуалната лента с инструменти
\n' +
+ ' - Windows, Linux или macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Навигацията ще започне с първия елемент на ПИ, който ще бъде маркиран или подчертан в случая на първия елемент в\n' +
+ ' пътя до елемента в долния колонтитул.
\n' +
+ '\n' +
+ 'Навигиране между раздели на ПИ
\n' +
+ '\n' +
+ 'За да преминете от един раздел на ПИ към следващия, натиснете Tab.
\n' +
+ '\n' +
+ 'За да преминете от един раздел на ПИ към предишния, натиснете Shift+Tab.
\n' +
+ '\n' +
+ 'Редът за обхождане с табулация на тези раздели на ПИ е:
\n' +
+ '\n' +
+ '\n' +
+ ' - Лентата с менюта
\n' +
+ ' - Всяка група на лентата с инструменти
\n' +
+ ' - Страничната лента
\n' +
+ ' - Пътят до елемента в долния колонтитул
\n' +
+ ' - Бутонът за превключване на броя на думите в долния колонтитул
\n' +
+ ' - Връзката за търговска марка в долния колонтитул
\n' +
+ ' - Манипулаторът за преоразмеряване на редактора в долния колонтитул
\n' +
+ '
\n' +
+ '\n' +
+ 'Ако някой раздел на ПИ липсва, той се пропуска.
\n' +
+ '\n' +
+ 'Ако долният колонтитул има фокус за навигация с клавиатурата и няма странична лента, натискането на Shift+Tab\n' +
+ ' премества фокуса към първата група на лентата с инструменти, а не към последната.
\n' +
+ '\n' +
+ 'Навигиране в разделите на ПИ
\n' +
+ '\n' +
+ 'За да преминете от един елемент на ПИ към следващия, натиснете съответния клавиш със стрелка.
\n' +
+ '\n' +
+ 'С клавишите със стрелка наляво и надясно
\n' +
+ '\n' +
+ '\n' +
+ ' - се придвижвате между менютата в лентата с менюто;
\n' +
+ ' - отваряте подменю в меню;
\n' +
+ ' - се придвижвате между бутоните в група на лентата с инструменти;
\n' +
+ ' - се придвижвате между елементи в пътя до елемент в долния колонтитул.
\n' +
+ '
\n' +
+ '\n' +
+ 'С клавишите със стрелка надолу и нагоре
\n' +
+ '\n' +
+ '\n' +
+ ' - се придвижвате между елементите от менюто в дадено меню;
\n' +
+ ' - се придвижвате между елементите в изскачащо меню на лентата с инструменти.
\n' +
+ '
\n' +
+ '\n' +
+ 'Клавишите със стрелки се придвижват в рамките на фокусирания раздел на ПИ.
\n' +
+ '\n' +
+ 'За да затворите отворено меню, подменю или изскачащо меню, натиснете клавиша Esc.
\n' +
+ '\n' +
+ 'Ако текущият фокус е върху „горната част“ на конкретен раздел на ПИ, натискането на клавиша Esc също излиза\n' +
+ ' напълно от навигацията с клавиатурата.
\n' +
+ '\n' +
+ 'Изпълнение на елемент от менюто или бутон от лентата с инструменти
\n' +
+ '\n' +
+ 'Когато желаният елемент от менюто или бутон от лентата с инструменти е маркиран, натиснете Return, Enter\n' +
+ ' или клавиша за интервал, за да изпълните елемента.
\n' +
+ '\n' +
+ 'Навигиране в диалогови прозорци без раздели
\n' +
+ '\n' +
+ 'В диалоговите прозорци без раздели първият интерактивен компонент се фокусира, когато се отвори диалоговият прозорец.
\n' +
+ '\n' +
+ 'Навигирайте между интерактивните компоненти на диалоговия прозорец, като натиснете Tab или Shift+Tab.
\n' +
+ '\n' +
+ 'Навигиране в диалогови прозорци с раздели
\n' +
+ '\n' +
+ 'В диалоговите прозорци с раздели първият бутон в менюто с раздели се фокусира, когато се отвори диалоговият прозорец.
\n' +
+ '\n' +
+ 'Навигирайте между интерактивните компоненти на този диалогов раздел, като натиснете Tab или\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Превключете към друг диалогов раздел, като фокусирате върху менюто с раздели и след това натиснете съответния клавиш със стрелка,\n' +
+ ' за да преминете през наличните раздели.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/ca.js b/public/tinymce/plugins/help/js/i18n/keynav/ca.js
new file mode 100644
index 00000000..a43bb077
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/ca.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.ca',
+ 'Inici de la navegació amb el teclat
\n' +
+ '\n' +
+ '\n' +
+ ' - Enfocar la barra de menús
\n' +
+ ' - Windows o Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ " - Enfocar la barra d'eines
\n" +
+ ' - Windows o Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Enfocar el peu de pàgina
\n' +
+ ' - Windows o Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Enfocar la notificació
\n' +
+ ' - Windows o Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ " - Enfocar una barra d'eines contextual
\n" +
+ ' - Windows, Linux o macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ "La navegació començarà en el primer element de la interfície d'usuari, que es ressaltarà o subratllarà per al primer element a\n" +
+ " la ruta de l'element de peu de pàgina.
\n" +
+ '\n' +
+ "Navegació entre seccions de la interfície d'usuari
\n" +
+ '\n' +
+ "Per desplaçar-vos des d'una secció de la interfície d'usuari a la següent, premeu la tecla Tab.
\n" +
+ '\n' +
+ "Per desplaçar-vos des d'una secció de la interfície d'usuari a l'anterior, premeu les tecles Maj+Tab.
\n" +
+ '\n' +
+ "L'ordre en prémer la tecla Tab d'aquestes secciones de la interfície d'usuari és:
\n" +
+ '\n' +
+ '\n' +
+ ' - Barra de menús
\n' +
+ " - Cada grup de la barra d'eines
\n" +
+ ' - Barra lateral
\n' +
+ " - Ruta de l'element del peu de pàgina
\n" +
+ ' - Botó de commutació de recompte de paraules al peu de pàgina
\n' +
+ ' - Enllaç de marca del peu de pàgina
\n' +
+ " - Control de canvi de mida de l'editor al peu de pàgina
\n" +
+ '
\n' +
+ '\n' +
+ "Si no hi ha una secció de la interfície d'usuari, s'ometrà.
\n" +
+ '\n' +
+ 'Si el peu de pàgina té el focus de navegació del teclat i no hi ha cap barra lateral visible, en prémer Maj+Tab\n' +
+ " el focus es mou al primer grup de la barra d'eines, no l'últim.
\n" +
+ '\n' +
+ "Navegació dins de les seccions de la interfície d'usuari
\n" +
+ '\n' +
+ "Per desplaçar-vos des d'un element de la interfície d'usuari al següent, premeu la tecla de Fletxa adequada.
\n" +
+ '\n' +
+ 'Les tecles de fletxa Esquerra i Dreta
\n' +
+ '\n' +
+ '\n' +
+ ' - us permeten desplaçar-vos entre menús de la barra de menús.
\n' +
+ ' - obren un submenú en un menú.
\n' +
+ " - us permeten desplaçar-vos entre botons d'un grup de la barra d'eines.
\n" +
+ " - us permeten desplaçar-vos entre elements de la ruta d'elements del peu de pàgina.
\n" +
+ '
\n' +
+ '\n' +
+ 'Les tecles de fletxa Avall i Amunt
\n' +
+ '\n' +
+ '\n' +
+ " - us permeten desplaçar-vos entre elements de menú d'un menú.
\n" +
+ " - us permeten desplaçar-vos entre elements d'un menú emergent de la barra d'eines.
\n" +
+ '
\n' +
+ '\n' +
+ "Les tecles de Fletxa us permeten desplaçar-vos dins de la secció de la interfície d'usuari que té el focus.
\n" +
+ '\n' +
+ 'Per tancar un menú, un submenú o un menú emergent oberts, premeu la tecla Esc.
\n' +
+ '\n' +
+ "Si el focus actual es troba a la ‘part superior’ d'una secció específica de la interfície d'usuari, en prémer la tecla Esc també es tanca\n" +
+ ' completament la navegació amb el teclat.
\n' +
+ '\n' +
+ "Execució d'un element de menú o d'un botó de la barra d'eines
\n" +
+ '\n' +
+ "Quan l'element del menú o el botó de la barra d'eines que desitgeu estigui ressaltat, premeu Retorn, Intro\n" +
+ " o la barra d'espai per executar l'element.
\n" +
+ '\n' +
+ 'Navegació per quadres de diàleg sense pestanyes
\n' +
+ '\n' +
+ "En els quadres de diàleg sense pestanyes, el primer component interactiu pren el focus quan s'obre el quadre diàleg.
\n" +
+ '\n' +
+ 'Premeu la tecla Tab o les tecles Maj+Tab per desplaçar-vos entre components interactius del quadre de diàleg.
\n' +
+ '\n' +
+ 'Navegació per quadres de diàleg amb pestanyes
\n' +
+ '\n' +
+ "En els quadres de diàleg amb pestanyes, el primer botó del menú de la pestanya pren el focus quan s'obre el quadre diàleg.
\n" +
+ '\n' +
+ "Per desplaçar-vos entre components interactius d'aquest quadre de diàleg, premeu la tecla Tab o\n" +
+ ' les tecles Maj+Tab.
\n' +
+ '\n' +
+ "Canvieu a la pestanya d'un altre quadre de diàleg, tot enfocant el menú de la pestanya, i després premeu la tecla Fletxa adequada\n" +
+ ' per canviar entre les pestanyes disponibles.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/cs.js b/public/tinymce/plugins/help/js/i18n/keynav/cs.js
new file mode 100644
index 00000000..d798bafe
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/cs.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.cs',
+ 'Začínáme navigovat pomocí klávesnice
\n' +
+ '\n' +
+ '\n' +
+ ' - Přejít na řádek nabídek
\n' +
+ ' - Windows nebo Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Přejít na panel nástrojů
\n' +
+ ' - Windows nebo Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Přejít na zápatí
\n' +
+ ' - Windows nebo Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Přejít na oznámení
\n' +
+ ' - Windows nebo Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Přejít na kontextový panel nástrojů
\n' +
+ ' - Windows, Linux nebo macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigace začne u první položky uživatelského rozhraní, která bude zvýrazněna nebo v případě první položky\n' +
+ ' cesty k prvku zápatí podtržena.
\n' +
+ '\n' +
+ 'Navigace mezi oddíly uživatelského rozhraní
\n' +
+ '\n' +
+ 'Stisknutím klávesy Tab se posunete z jednoho oddílu uživatelského rozhraní na další.
\n' +
+ '\n' +
+ 'Stisknutím kláves Shift+Tab se posunete z jednoho oddílu uživatelského rozhraní na předchozí.
\n' +
+ '\n' +
+ 'Pořadí přepínání mezi oddíly uživatelského rozhraní pomocí klávesy Tab:
\n' +
+ '\n' +
+ '\n' +
+ ' - Řádek nabídek
\n' +
+ ' - Každá skupina panelu nástrojů
\n' +
+ ' - Boční panel
\n' +
+ ' - Cesta k prvku v zápatí.
\n' +
+ ' - Tlačítko přepínače počtu slov v zápatí
\n' +
+ ' - Odkaz na informace o značce v zápatí
\n' +
+ ' - Úchyt pro změnu velikosti editoru v zápatí
\n' +
+ '
\n' +
+ '\n' +
+ 'Pokud nějaký oddíl uživatelského rozhraní není přítomen, je přeskočen.
\n' +
+ '\n' +
+ 'Pokud je zápatí vybrané pro navigaci pomocí klávesnice a není zobrazen žádný boční panel, stisknutím kláves Shift+Tab\n' +
+ ' přejdete na první skupinu panelu nástrojů, nikoli na poslední.
\n' +
+ '\n' +
+ 'Navigace v rámci oddílů uživatelského rozhraní
\n' +
+ '\n' +
+ 'Chcete-li se přesunout z jednoho prvku uživatelského rozhraní na další, stiskněte příslušnou klávesu s šipkou.
\n' +
+ '\n' +
+ 'Klávesy s šipkou vlevo a vpravo
\n' +
+ '\n' +
+ '\n' +
+ ' - umožňují přesun mezi nabídkami na řádku nabídek;
\n' +
+ ' - otevírají podnabídku nabídky;
\n' +
+ ' - umožňují přesun mezi tlačítky ve skupině panelu nástrojů;
\n' +
+ ' - umožňují přesun mezi položkami cesty prvku v zápatí.
\n' +
+ '
\n' +
+ '\n' +
+ 'Klávesy se šipkou dolů a nahoru
\n' +
+ '\n' +
+ '\n' +
+ ' - umožňují přesun mezi položkami nabídky;
\n' +
+ ' - umožňují přesun mezi položkami místní nabídky panelu nástrojů.
\n' +
+ '
\n' +
+ '\n' +
+ 'Šipky provádí přepínání v rámci vybraného oddílu uživatelského rozhraní.
\n' +
+ '\n' +
+ 'Chcete-li zavřít otevřenou nabídku, podnabídku nebo místní nabídku, stiskněte klávesu Esc.
\n' +
+ '\n' +
+ 'Pokud je aktuálně vybrána horní část oddílu uživatelského rozhraní, stisknutím klávesy Esc zcela ukončíte také\n' +
+ ' navigaci pomocí klávesnice.
\n' +
+ '\n' +
+ 'Provedení příkazu položky nabídky nebo tlačítka panelu nástrojů
\n' +
+ '\n' +
+ 'Pokud je zvýrazněna požadovaná položka nabídky nebo tlačítko panelu nástrojů, stisknutím klávesy Return, Enter\n' +
+ ' nebo mezerníku provedete příslušný příkaz.
\n' +
+ '\n' +
+ 'Navigace v dialogových oknech bez záložek
\n' +
+ '\n' +
+ 'Při otevření dialogových oken bez záložek přejdete na první interaktivní komponentu.
\n' +
+ '\n' +
+ 'Přecházet mezi interaktivními komponentami dialogového okna můžete stisknutím klávesy Tab nebo kombinace Shift+Tab.
\n' +
+ '\n' +
+ 'Navigace v dialogových oknech se záložkami
\n' +
+ '\n' +
+ 'Při otevření dialogových oken se záložkami přejdete na první tlačítko v nabídce záložek.
\n' +
+ '\n' +
+ 'Přecházet mezi interaktivními komponentami této záložky dialogového okna můžete stisknutím klávesy Tab nebo\n' +
+ ' kombinace Shift+Tab.
\n' +
+ '\n' +
+ 'Chcete-li přepnout na další záložku dialogového okna, přejděte na nabídku záložek a poté můžete stisknutím požadované šipky\n' +
+ ' přepínat mezi dostupnými záložkami.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/da.js b/public/tinymce/plugins/help/js/i18n/keynav/da.js
new file mode 100644
index 00000000..c23749ac
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/da.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.da',
+ 'Start tastaturnavigation
\n' +
+ '\n' +
+ '\n' +
+ ' - Fokuser på menulinjen
\n' +
+ ' - Windows eller Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Fokuser på værktøjslinjen
\n' +
+ ' - Windows eller Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Fokuser på sidefoden
\n' +
+ ' - Windows eller Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Fokuser på meddelelsen
\n' +
+ ' - Windows eller Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Fokuser på kontekstuel værktøjslinje
\n' +
+ ' - Windows, Linux eller macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigationen starter ved det første UI-element, som fremhæves eller understreges hvad angår det første element i\n' +
+ ' sidefodens sti til elementet.
\n' +
+ '\n' +
+ 'Naviger mellem UI-sektioner
\n' +
+ '\n' +
+ 'Gå fra én UI-sektion til den næste ved at trykke på Tab.
\n' +
+ '\n' +
+ 'Gå fra én UI-sektion til den forrige ved at trykke på Shift+Tab.
\n' +
+ '\n' +
+ 'Tab-rækkefølgen af disse UI-sektioner er:
\n' +
+ '\n' +
+ '\n' +
+ ' - Menulinje
\n' +
+ ' - Hver værktøjsgruppe
\n' +
+ ' - Sidepanel
\n' +
+ ' - Sti til elementet i sidefoden
\n' +
+ ' - Til/fra-knap for ordoptælling i sidefoden
\n' +
+ ' - Brandinglink i sidefoden
\n' +
+ ' - Tilpasningshåndtag for editor i sidefoden
\n' +
+ '
\n' +
+ '\n' +
+ 'Hvis en UI-sektion ikke er til stede, springes den over.
\n' +
+ '\n' +
+ 'Hvis sidefoden har fokus til tastaturnavigation, og der ikke er noget synligt sidepanel, kan der trykkes på Shift+Tab\n' +
+ ' for at flytte fokus til den første værktøjsgruppe, ikke den sidste.
\n' +
+ '\n' +
+ 'Naviger inden for UI-sektioner
\n' +
+ '\n' +
+ 'Gå fra ét UI-element til det næste ved at trykke på den relevante piletast.
\n' +
+ '\n' +
+ 'Venstre og højre piletast
\n' +
+ '\n' +
+ '\n' +
+ ' - flytter mellem menuerne i menulinjen.
\n' +
+ ' - åbner en undermenu i en menu.
\n' +
+ ' - flytter mellem knapperne i en værktøjsgruppe.
\n' +
+ ' - flytter mellem elementer i sidefodens sti til elementet.
\n' +
+ '
\n' +
+ '\n' +
+ 'Pil ned og op
\n' +
+ '\n' +
+ '\n' +
+ ' - flytter mellem menupunkterne i en menu.
\n' +
+ ' - flytter mellem punkterne i en genvejsmenu i værktøjslinjen.
\n' +
+ '
\n' +
+ '\n' +
+ 'Piletasterne kører rundt inden for UI-sektionen, der fokuseres på.
\n' +
+ '\n' +
+ 'For at lukke en åben menu, en åben undermenu eller en åben genvejsmenu trykkes der på Esc-tasten.
\n' +
+ '\n' +
+ "Hvis det aktuelle fokus er i 'toppen' af en bestemt UI-sektion, vil tryk på Esc-tasten også afslutte\n" +
+ ' tastaturnavigationen helt.
\n' +
+ '\n' +
+ 'Udfør et menupunkt eller en værktøjslinjeknap
\n' +
+ '\n' +
+ 'Når det ønskede menupunkt eller den ønskede værktøjslinjeknap er fremhævet, trykkes der på Retur, Enter\n' +
+ ' eller mellemrumstasten for at udføre elementet.
\n' +
+ '\n' +
+ 'Naviger i ikke-faneopdelte dialogbokse
\n' +
+ '\n' +
+ 'I ikke-faneopdelte dialogbokse får den første interaktive komponent fokus, når dialogboksen åbnes.
\n' +
+ '\n' +
+ 'Naviger mellem interaktive dialogbokskomponenter ved at trykke på Tab eller Shift+Tab.
\n' +
+ '\n' +
+ 'Naviger i faneopdelte dialogbokse
\n' +
+ '\n' +
+ 'I faneopdelte dialogbokse får den første knap i fanemenuen fokus, når dialogboksen åbnes.
\n' +
+ '\n' +
+ 'Naviger mellem interaktive komponenter i denne dialogboksfane ved at trykke på Tab eller\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Skift til en anden dialogboksfane ved at fokusere på fanemenuen og derefter trykke på den relevante piletast\n' +
+ ' for at køre igennem de tilgængelige faner.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/de.js b/public/tinymce/plugins/help/js/i18n/keynav/de.js
new file mode 100644
index 00000000..21150264
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/de.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.de',
+ 'Grundlagen der Tastaturnavigation
\n' +
+ '\n' +
+ '\n' +
+ ' - Fokus auf Menüleiste
\n' +
+ ' - Windows oder Linux: ALT+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Fokus auf Symbolleiste
\n' +
+ ' - Windows oder Linux: ALT+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Fokus auf Fußzeile
\n' +
+ ' - Windows oder Linux: ALT+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Benachrichtigung fokussieren
\n' +
+ ' - Windows oder Linux: ALT+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Fokus auf kontextbezogene Symbolleiste
\n' +
+ ' - Windows, Linux oder macOS: STRG+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Die Navigation beginnt beim ersten Benutzeroberflächenelement, welches hervorgehoben ist. Falls sich das erste Element im Pfad der Fußzeile befindet,\n' +
+ ' ist es unterstrichen.
\n' +
+ '\n' +
+ 'Zwischen Abschnitten der Benutzeroberfläche navigieren
\n' +
+ '\n' +
+ 'Um von einem Abschnitt der Benutzeroberfläche zum nächsten zu wechseln, drücken Sie TAB.
\n' +
+ '\n' +
+ 'Um von einem Abschnitt der Benutzeroberfläche zum vorherigen zu wechseln, drücken Sie UMSCHALT+TAB.
\n' +
+ '\n' +
+ 'Die Abschnitte der Benutzeroberfläche haben folgende TAB-Reihenfolge:
\n' +
+ '\n' +
+ '\n' +
+ ' - Menüleiste
\n' +
+ ' - Einzelne Gruppen der Symbolleiste
\n' +
+ ' - Randleiste
\n' +
+ ' - Elementpfad in der Fußzeile
\n' +
+ ' - Umschaltfläche „Wörter zählen“ in der Fußzeile
\n' +
+ ' - Branding-Link in der Fußzeile
\n' +
+ ' - Editor-Ziehpunkt zur Größenänderung in der Fußzeile
\n' +
+ '
\n' +
+ '\n' +
+ 'Falls ein Abschnitt der Benutzeroberflächen nicht vorhanden ist, wird er übersprungen.
\n' +
+ '\n' +
+ 'Wenn in der Fußzeile die Tastaturnavigation fokussiert ist und keine Randleiste angezeigt wird, wechselt der Fokus durch Drücken von UMSCHALT+TAB\n' +
+ ' zur ersten Gruppe der Symbolleiste, nicht zur letzten.
\n' +
+ '\n' +
+ 'Innerhalb von Abschnitten der Benutzeroberfläche navigieren
\n' +
+ '\n' +
+ 'Um von einem Element der Benutzeroberfläche zum nächsten zu wechseln, drücken Sie die entsprechende Pfeiltaste.
\n' +
+ '\n' +
+ 'Die Pfeiltasten Links und Rechts
\n' +
+ '\n' +
+ '\n' +
+ ' - wechseln zwischen Menüs in der Menüleiste.
\n' +
+ ' - öffnen das Untermenü eines Menüs.
\n' +
+ ' - wechseln zwischen Schaltflächen in einer Gruppe der Symbolleiste.
\n' +
+ ' - wechseln zwischen Elementen im Elementpfad der Fußzeile.
\n' +
+ '
\n' +
+ '\n' +
+ 'Die Pfeiltasten Abwärts und Aufwärts
\n' +
+ '\n' +
+ '\n' +
+ ' - wechseln zwischen Menüelementen in einem Menü.
\n' +
+ ' - wechseln zwischen Elementen in einem Popupmenü der Symbolleiste.
\n' +
+ '
\n' +
+ '\n' +
+ 'Die Pfeiltasten rotieren innerhalb des fokussierten Abschnitts der Benutzeroberfläche.
\n' +
+ '\n' +
+ 'Um ein geöffnetes Menü, ein geöffnetes Untermenü oder ein geöffnetes Popupmenü zu schließen, drücken Sie die ESC-Taste.
\n' +
+ '\n' +
+ 'Wenn sich der aktuelle Fokus ganz oben in einem bestimmten Abschnitt der Benutzeroberfläche befindet, wird durch Drücken der ESC-Taste auch\n' +
+ ' die Tastaturnavigation beendet.
\n' +
+ '\n' +
+ 'Ein Menüelement oder eine Symbolleistenschaltfläche ausführen
\n' +
+ '\n' +
+ 'Wenn das gewünschte Menüelement oder die gewünschte Symbolleistenschaltfläche hervorgehoben ist, drücken Sie Zurück, Eingabe\n' +
+ ' oder die Leertaste, um das Element auszuführen.
\n' +
+ '\n' +
+ 'In Dialogfeldern ohne Registerkarten navigieren
\n' +
+ '\n' +
+ 'In Dialogfeldern ohne Registerkarten ist beim Öffnen eines Dialogfelds die erste interaktive Komponente fokussiert.
\n' +
+ '\n' +
+ 'Navigieren Sie zwischen den interaktiven Komponenten eines Dialogfelds, indem Sie TAB oder UMSCHALT+TAB drücken.
\n' +
+ '\n' +
+ 'In Dialogfeldern mit Registerkarten navigieren
\n' +
+ '\n' +
+ 'In Dialogfeldern mit Registerkarten ist beim Öffnen eines Dialogfelds die erste Schaltfläche eines Registerkartenmenüs fokussiert.
\n' +
+ '\n' +
+ 'Navigieren Sie zwischen den interaktiven Komponenten auf dieser Registerkarte des Dialogfelds, indem Sie TAB oder\n' +
+ ' UMSCHALT+TAB drücken.
\n' +
+ '\n' +
+ 'Wechseln Sie zu einer anderen Registerkarte des Dialogfelds, indem Sie den Fokus auf das Registerkartenmenü legen und dann die entsprechende Pfeiltaste\n' +
+ ' drücken, um durch die verfügbaren Registerkarten zu rotieren.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/el.js b/public/tinymce/plugins/help/js/i18n/keynav/el.js
new file mode 100644
index 00000000..2d789954
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/el.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.el',
+ 'Έναρξη πλοήγησης μέσω πληκτρολογίου
\n' +
+ '\n' +
+ '\n' +
+ ' - Εστίαση στη γραμμή μενού
\n' +
+ ' - Windows ή Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Εστίαση στη γραμμή εργαλείων
\n' +
+ ' - Windows ή Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Εστίαση στο υποσέλιδο
\n' +
+ ' - Windows ή Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Εστίαση στην ειδοποίηση
\n' +
+ ' - Windows ή Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Εστίαση σε γραμμή εργαλείων βάσει περιεχομένου
\n' +
+ ' - Windows, Linux ή macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Η πλοήγηση θα ξεκινήσει από το πρώτο στοιχείο περιβάλλοντος χρήστη, που θα επισημαίνεται ή θα είναι υπογραμμισμένο,\n' +
+ ' όπως στην περίπτωση της διαδρομής του στοιχείου Υποσέλιδου.
\n' +
+ '\n' +
+ 'Πλοήγηση μεταξύ ενοτήτων του περιβάλλοντος χρήστη
\n' +
+ '\n' +
+ 'Για να μετακινηθείτε από μια ενότητα περιβάλλοντος χρήστη στην επόμενη, πιέστε το πλήκτρο Tab.
\n' +
+ '\n' +
+ 'Για να μετακινηθείτε από μια ενότητα περιβάλλοντος χρήστη στην προηγούμενη, πιέστε τα πλήκτρα Shift+Tab.
\n' +
+ '\n' +
+ 'Η σειρά Tab αυτών των ενοτήτων περιβάλλοντος χρήστη είναι η εξής:
\n' +
+ '\n' +
+ '\n' +
+ ' - Γραμμή μενού
\n' +
+ ' - Κάθε ομάδα γραμμής εργαλείων
\n' +
+ ' - Πλαϊνή γραμμή
\n' +
+ ' - Διαδρομή στοιχείου στο υποσέλιδο
\n' +
+ ' - Κουμπί εναλλαγής μέτρησης λέξεων στο υποσέλιδο
\n' +
+ ' - Σύνδεσμος επωνυμίας στο υποσέλιδο
\n' +
+ ' - Λαβή αλλαγής μεγέθους προγράμματος επεξεργασίας στο υποσέλιδο
\n' +
+ '
\n' +
+ '\n' +
+ 'Εάν δεν εμφανίζεται ενότητα περιβάλλοντος χρήστη, παραλείπεται.
\n' +
+ '\n' +
+ 'Εάν η εστίαση πλοήγησης βρίσκεται στο πληκτρολόγιο και δεν υπάρχει εμφανής πλαϊνή γραμμή, εάν πιέσετε Shift+Tab\n' +
+ ' η εστίαση μετακινείται στην πρώτη ομάδα γραμμής εργαλείων, όχι στην τελευταία.
\n' +
+ '\n' +
+ 'Πλοήγηση εντός των ενοτήτων του περιβάλλοντος χρήστη
\n' +
+ '\n' +
+ 'Για να μετακινηθείτε από ένα στοιχείο περιβάλλοντος χρήστη στο επόμενο, πιέστε το αντίστοιχο πλήκτρο βέλους.
\n' +
+ '\n' +
+ 'Με τα πλήκτρα αριστερού και δεξιού βέλους
\n' +
+ '\n' +
+ '\n' +
+ ' - γίνεται μετακίνηση μεταξύ των μενού στη γραμμή μενού.
\n' +
+ ' - ανοίγει ένα υπομενού σε ένα μενού.
\n' +
+ ' - γίνεται μετακίνηση μεταξύ κουμπιών σε μια ομάδα γραμμής εργαλείων.
\n' +
+ ' - γίνεται μετακίνηση μεταξύ στοιχείων στη διαδρομή στοιχείου στο υποσέλιδο.
\n' +
+ '
\n' +
+ '\n' +
+ 'Με τα πλήκτρα επάνω και κάτω βέλους
\n' +
+ '\n' +
+ '\n' +
+ ' - γίνεται μετακίνηση μεταξύ των στοιχείων μενού σε ένα μενού.
\n' +
+ ' - γίνεται μετακίνηση μεταξύ των στοιχείων μενού σε ένα αναδυόμενο μενού γραμμής εργαλείων.
\n' +
+ '
\n' +
+ '\n' +
+ 'Με τα πλήκτρα βέλους γίνεται κυκλική μετακίνηση εντός της εστιασμένης ενότητας περιβάλλοντος χρήστη.
\n' +
+ '\n' +
+ 'Για να κλείσετε ένα ανοιχτό μενού, ένα ανοιχτό υπομενού ή ένα ανοιχτό αναδυόμενο μενού, πιέστε το πλήκτρο Esc.
\n' +
+ '\n' +
+ 'Εάν η τρέχουσα εστίαση βρίσκεται στην κορυφή μιας ενότητας περιβάλλοντος χρήστη, πιέζοντας το πλήκτρο Esc,\n' +
+ ' γίνεται επίσης πλήρης έξοδος από την πλοήγηση μέσω πληκτρολογίου.
\n' +
+ '\n' +
+ 'Εκτέλεση ενός στοιχείου μενού ή κουμπιού γραμμής εργαλείων
\n' +
+ '\n' +
+ 'Όταν το επιθυμητό στοιχείο μενού ή κουμπί γραμμής εργαλείων είναι επισημασμένο, πιέστε τα πλήκτρα Return, Enter,\n' +
+ ' ή το πλήκτρο διαστήματος για να εκτελέσετε το στοιχείο.
\n' +
+ '\n' +
+ 'Πλοήγηση σε παράθυρα διαλόγου χωρίς καρτέλες
\n' +
+ '\n' +
+ 'Σε παράθυρα διαλόγου χωρίς καρτέλες, το πρώτο αλληλεπιδραστικό στοιχείο λαμβάνει την εστίαση όταν ανοίγει το παράθυρο διαλόγου.
\n' +
+ '\n' +
+ 'Μπορείτε να πλοηγηθείτε μεταξύ των αλληλεπιδραστικών στοιχείων παραθύρων διαλόγων πιέζοντας τα πλήκτρα Tab ή Shift+Tab.
\n' +
+ '\n' +
+ 'Πλοήγηση σε παράθυρα διαλόγου με καρτέλες
\n' +
+ '\n' +
+ 'Σε παράθυρα διαλόγου με καρτέλες, το πρώτο κουμπί στο μενού καρτέλας λαμβάνει την εστίαση όταν ανοίγει το παράθυρο διαλόγου.
\n' +
+ '\n' +
+ 'Μπορείτε να πλοηγηθείτε μεταξύ των αλληλεπιδραστικών στοιχείων αυτής της καρτέλα διαλόγου πιέζοντας τα πλήκτρα Tab ή\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Μπορείτε να κάνετε εναλλαγή σε άλλη καρτέλα του παραθύρου διαλόγου, μεταφέροντας την εστίαση στο μενού καρτέλας και πιέζοντας το κατάλληλο πλήκτρο βέλους\n' +
+ ' για να μετακινηθείτε κυκλικά στις διαθέσιμες καρτέλες.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/en.js b/public/tinymce/plugins/help/js/i18n/keynav/en.js
new file mode 100644
index 00000000..f4dc5754
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/en.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.en',
+ 'Begin keyboard navigation
\n' +
+ '\n' +
+ '\n' +
+ ' - Focus the Menu bar
\n' +
+ ' - Windows or Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Focus the Toolbar
\n' +
+ ' - Windows or Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Focus the footer
\n' +
+ ' - Windows or Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Focus the notification
\n' +
+ ' - Windows or Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Focus a contextual toolbar
\n' +
+ ' - Windows, Linux or macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigation will start at the first UI item, which will be highlighted, or underlined in the case of the first item in\n' +
+ ' the Footer element path.
\n' +
+ '\n' +
+ 'Navigate between UI sections
\n' +
+ '\n' +
+ 'To move from one UI section to the next, press Tab.
\n' +
+ '\n' +
+ 'To move from one UI section to the previous, press Shift+Tab.
\n' +
+ '\n' +
+ 'The Tab order of these UI sections is:
\n' +
+ '\n' +
+ '\n' +
+ ' - Menu bar
\n' +
+ ' - Each toolbar group
\n' +
+ ' - Sidebar
\n' +
+ ' - Element path in the footer
\n' +
+ ' - Word count toggle button in the footer
\n' +
+ ' - Branding link in the footer
\n' +
+ ' - Editor resize handle in the footer
\n' +
+ '
\n' +
+ '\n' +
+ 'If a UI section is not present, it is skipped.
\n' +
+ '\n' +
+ 'If the footer has keyboard navigation focus, and there is no visible sidebar, pressing Shift+Tab\n' +
+ ' moves focus to the first toolbar group, not the last.
\n' +
+ '\n' +
+ 'Navigate within UI sections
\n' +
+ '\n' +
+ 'To move from one UI element to the next, press the appropriate Arrow key.
\n' +
+ '\n' +
+ 'The Left and Right arrow keys
\n' +
+ '\n' +
+ '\n' +
+ ' - move between menus in the menu bar.
\n' +
+ ' - open a sub-menu in a menu.
\n' +
+ ' - move between buttons in a toolbar group.
\n' +
+ ' - move between items in the footer’s element path.
\n' +
+ '
\n' +
+ '\n' +
+ 'The Down and Up arrow keys
\n' +
+ '\n' +
+ '\n' +
+ ' - move between menu items in a menu.
\n' +
+ ' - move between items in a toolbar pop-up menu.
\n' +
+ '
\n' +
+ '\n' +
+ 'Arrow keys cycle within the focused UI section.
\n' +
+ '\n' +
+ 'To close an open menu, an open sub-menu, or an open pop-up menu, press the Esc key.
\n' +
+ '\n' +
+ 'If the current focus is at the ‘top’ of a particular UI section, pressing the Esc key also exits\n' +
+ ' keyboard navigation entirely.
\n' +
+ '\n' +
+ 'Execute a menu item or toolbar button
\n' +
+ '\n' +
+ 'When the desired menu item or toolbar button is highlighted, press Return, Enter,\n' +
+ ' or the Space bar to execute the item.
\n' +
+ '\n' +
+ 'Navigate non-tabbed dialogs
\n' +
+ '\n' +
+ 'In non-tabbed dialogs, the first interactive component takes focus when the dialog opens.
\n' +
+ '\n' +
+ 'Navigate between interactive dialog components by pressing Tab or Shift+Tab.
\n' +
+ '\n' +
+ 'Navigate tabbed dialogs
\n' +
+ '\n' +
+ 'In tabbed dialogs, the first button in the tab menu takes focus when the dialog opens.
\n' +
+ '\n' +
+ 'Navigate between interactive components of this dialog tab by pressing Tab or\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Switch to another dialog tab by giving the tab menu focus and then pressing the appropriate Arrow\n' +
+ ' key to cycle through the available tabs.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/es.js b/public/tinymce/plugins/help/js/i18n/keynav/es.js
new file mode 100644
index 00000000..fab6994e
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/es.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.es',
+ 'Iniciar la navegación con el teclado
\n' +
+ '\n' +
+ '\n' +
+ ' - Enfocar la barra de menús
\n' +
+ ' - Windows o Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Enfocar la barra de herramientas
\n' +
+ ' - Windows o Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Enfocar el pie de página
\n' +
+ ' - Windows o Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Enfocar la notificación
\n' +
+ ' - Windows o Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Enfocar una barra de herramientas contextual
\n' +
+ ' - Windows, Linux o macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'La navegación comenzará por el primer elemento de la interfaz de usuario (IU), de tal manera que se resaltará, o bien se subrayará si se trata del primer elemento de\n' +
+ ' la ruta de elemento del pie de página.
\n' +
+ '\n' +
+ 'Navegar entre las secciones de la IU
\n' +
+ '\n' +
+ 'Para pasar de una sección de la IU a la siguiente, pulse la tecla Tab.
\n' +
+ '\n' +
+ 'Para pasar de una sección de la IU a la anterior, pulse Mayús+Tab.
\n' +
+ '\n' +
+ 'El orden de tabulación de estas secciones de la IU es:
\n' +
+ '\n' +
+ '\n' +
+ ' - Barra de menús
\n' +
+ ' - Cada grupo de barra de herramientas
\n' +
+ ' - Barra lateral
\n' +
+ ' - Ruta del elemento en el pie de página
\n' +
+ ' - Botón de alternancia de recuento de palabras en el pie de página
\n' +
+ ' - Enlace de personalización de marca en el pie de página
\n' +
+ ' - Controlador de cambio de tamaño en el pie de página
\n' +
+ '
\n' +
+ '\n' +
+ 'Si una sección de la IU no está presente, esta se omite.
\n' +
+ '\n' +
+ 'Si el pie de página tiene un enfoque de navegación con el teclado y no hay ninguna barra lateral visible, al pulsar Mayús+Tab,\n' +
+ ' el enfoque se moverá al primer grupo de barra de herramientas, en lugar de al último.
\n' +
+ '\n' +
+ 'Navegar dentro de las secciones de la IU
\n' +
+ '\n' +
+ 'Para pasar de un elemento de la IU al siguiente, pulse la tecla de flecha correspondiente.
\n' +
+ '\n' +
+ 'Las teclas de flecha izquierda y derecha permiten
\n' +
+ '\n' +
+ '\n' +
+ ' - desplazarse entre los menús de la barra de menús.
\n' +
+ ' - abrir el submenú de un menú.
\n' +
+ ' - desplazarse entre los botones de un grupo de barra de herramientas.
\n' +
+ ' - desplazarse entre los elementos de la ruta de elemento del pie de página.
\n' +
+ '
\n' +
+ '\n' +
+ 'Las teclas de flecha abajo y arriba permiten
\n' +
+ '\n' +
+ '\n' +
+ ' - desplazarse entre los elementos de menú de un menú.
\n' +
+ ' - desplazarse entre los elementos de un menú emergente de una barra de herramientas.
\n' +
+ '
\n' +
+ '\n' +
+ 'Las teclas de flecha van cambiando dentro de la sección de la IU enfocada.
\n' +
+ '\n' +
+ 'Para cerrar un menú, un submenú o un menú emergente que estén abiertos, pulse la tecla Esc.
\n' +
+ '\n' +
+ 'Si el enfoque actual se encuentra en la parte superior de una sección de la IU determinada, al pulsar la tecla Esc saldrá\n' +
+ ' de la navegación con el teclado por completo.
\n' +
+ '\n' +
+ 'Ejecutar un elemento de menú o un botón de barra de herramientas
\n' +
+ '\n' +
+ 'Si el elemento de menú o el botón de barra de herramientas deseado está resaltado, pulse la tecla Retorno o Entrar,\n' +
+ ' o la barra espaciadora para ejecutar el elemento.
\n' +
+ '\n' +
+ 'Navegar por cuadros de diálogo sin pestañas
\n' +
+ '\n' +
+ 'En los cuadros de diálogo sin pestañas, el primer componente interactivo se enfoca al abrirse el cuadro de diálogo.
\n' +
+ '\n' +
+ 'Para navegar entre los componentes interactivos del cuadro de diálogo, pulse las teclas Tab o Mayús+Tab.
\n' +
+ '\n' +
+ 'Navegar por cuadros de diálogo con pestañas
\n' +
+ '\n' +
+ 'En los cuadros de diálogo con pestañas, el primer botón del menú de pestaña se enfoca al abrirse el cuadro de diálogo.
\n' +
+ '\n' +
+ 'Para navegar entre componentes interactivos de esta pestaña del cuadro de diálogo, pulse las teclas Tab o\n' +
+ ' Mayús+Tab.
\n' +
+ '\n' +
+ 'Si desea cambiar a otra pestaña del cuadro de diálogo, enfoque el menú de pestañas y, a continuación, pulse la tecla de flecha\n' +
+ ' correspondiente para moverse por las pestañas disponibles.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/eu.js b/public/tinymce/plugins/help/js/i18n/keynav/eu.js
new file mode 100644
index 00000000..82032adf
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/eu.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.eu',
+ 'Hasi teklatuaren nabigazioa
\n' +
+ '\n' +
+ '\n' +
+ ' - Fokuratu menu-barra
\n' +
+ ' - Windows edo Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Fokuratu tresna-barra
\n' +
+ ' - Windows edo Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Fokuratu orri-oina
\n' +
+ ' - Windows edo Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Fokuratu jakinarazpena
\n' +
+ ' - Windows edo Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Fokuratu testuinguruaren tresna-barra
\n' +
+ ' - Windows, Linux edo macOS: Ktrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Nabigazioa EIko lehen elementuan hasiko da: elementu hori nabarmendu egingo da, edo azpimarratu lehen elementua bada\n' +
+ ' orri-oineko elementuaren bidea.
\n' +
+ '\n' +
+ 'Nabigatu EIko atalen artean
\n' +
+ '\n' +
+ 'EIko atal batetik hurrengora mugitzeko, sakatu Tabuladorea.
\n' +
+ '\n' +
+ 'EIko atal batetik aurrekora mugitzeko, sakatu Maius+Tabuladorea.
\n' +
+ '\n' +
+ 'EIko atal hauen Tabuladorea da:
\n' +
+ '\n' +
+ '\n' +
+ ' - Menu-barra
\n' +
+ ' - Tresna-barraren talde bakoitza
\n' +
+ ' - Alboko barra
\n' +
+ ' - Orri-oineko elementuaren bidea
\n' +
+ ' - Orri-oneko urrats-kontaketa txandakatzeko botoia
\n' +
+ ' - Orri-oineko marken esteka
\n' +
+ ' - Orri-oineko editorearen tamaina aldatzeko heldulekua
\n' +
+ '
\n' +
+ '\n' +
+ 'EIko atal bat ez badago, saltatu egin da.
\n' +
+ '\n' +
+ 'Orri-oinak teklatuaren nabigazioa fokuratuta badago, eta alboko barra ikusgai ez badago, Maius+Tabuladorea sakatuz gero,\n' +
+ ' fokua tresna-barrako lehen taldera eramaten da, ez azkenera.
\n' +
+ '\n' +
+ 'Nabigatu EIko atalen barruan
\n' +
+ '\n' +
+ 'EIko elementu batetik hurrengora mugitzeko, sakatu dagokion Gezia tekla.
\n' +
+ '\n' +
+ 'Ezkerrera eta Eskuinera gezi-teklak
\n' +
+ '\n' +
+ '\n' +
+ ' - menu-barrako menuen artean mugitzen da.
\n' +
+ ' - ireki azpimenu bat menuan.
\n' +
+ ' - mugitu botoi batetik bestera tresna-barren talde batean.
\n' +
+ ' - mugitu orri-oineko elementuaren bideko elementu batetik bestera.
\n' +
+ '
\n' +
+ '\n' +
+ 'Gora eta Behera gezi-teklak
\n' +
+ '\n' +
+ '\n' +
+ ' - mugitu menu bateko menu-elementuen artean.
\n' +
+ ' - mugitu tresna-barrako menu gainerakor bateko menu-elementuen artean.
\n' +
+ '
\n' +
+ '\n' +
+ 'Gezia teklen zikloa nabarmendutako EI atalen barruan.
\n' +
+ '\n' +
+ 'Irekitako menu bat ixteko, ireki azpimenua, edo ireki menu gainerakorra, sakatu Ihes tekla.
\n' +
+ '\n' +
+ 'Une horretan fokuratzea EIko atal jakin baten "goialdean" badago, Ihes tekla sakatuz gero\n' +
+ ' teklatuaren nabigaziotik irtengo zara.
\n' +
+ '\n' +
+ 'Exekutatu menuko elementu bat edo tresna-barrako botoi bat
\n' +
+ '\n' +
+ 'Nahi den menuaren elementua edo tresna-barraren botoia nabarmenduta dagoenean, sakatu Itzuli, Sartu\n' +
+ ' edo Zuriune-barra elementua exekutatzeko.
\n' +
+ '\n' +
+ 'Nabigatu fitxarik gabeko elkarrizketak
\n' +
+ '\n' +
+ 'Fitxarik gabeko elkarrizketetan, lehen osagai interaktiboa fokuratzen da elkarrizketa irekitzen denean.
\n' +
+ '\n' +
+ 'Nabigatu elkarrizketa interaktiboko osagai batetik bestera Tabuladorea edo Maius+Tabuladorea sakatuta.
\n' +
+ '\n' +
+ 'Nabigatu fitxadun elkarrizketak
\n' +
+ '\n' +
+ 'Fitxadun elkarrizketetan, fitxa-menuko lehen botoia fokuratzen da elkarrizketa irekitzen denean.
\n' +
+ '\n' +
+ 'Nabigatu elkarrizketa-fitxa honen interaktiboko osagai batetik bestera Tabuladorea edo\n' +
+ ' Maius+Tabuladorea sakatuta.
\n' +
+ '\n' +
+ 'Aldatu beste elkarrizketa-fitxa batera fitxa-menua fokuratu eta dagokion Gezia\n' +
+ ' tekla sakatzeko, erabilgarri dauden fitxa batetik bestera txandakatzeko.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/fa.js b/public/tinymce/plugins/help/js/i18n/keynav/fa.js
new file mode 100644
index 00000000..bfb819b4
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/fa.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.fa',
+ 'شروع پیمایش صفحهکلید
\n' +
+ '\n' +
+ '\n' +
+ ' - تمرکز بر نوار منو
\n' +
+ ' - Windows یا Linux:: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - تمرکز بر نوار ابزار
\n' +
+ ' - Windows یا Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - تمرکز بر پانویس
\n' +
+ ' - Windows یا Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - تمرکز اعلان
\n' +
+ ' - ویندوز یا لینوکس: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - تمرکز بر نوار ابزار بافتاری
\n' +
+ ' - Windows ،Linux یا macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'پیمایش در اولین مورد رابط کاربری شروع میشود و درخصوص اولین مورد در\n' +
+ ' مسیر عنصر پانویس، برجسته یا زیرخطدار میشود.
\n' +
+ '\n' +
+ 'پیمایش بین بخشهای رابط کاربری
\n' +
+ '\n' +
+ 'برای جابجایی از یک بخش رابط کاربری به بخش بعدی، Tab را فشار دهید.
\n' +
+ '\n' +
+ 'برای جابجایی از یک بخش رابط کاربری به بخش قبلی، Shift+Tab را فشار دهید.
\n' +
+ '\n' +
+ 'ترتیب Tab این بخشهای رابط کاربری عبارتند از:
\n' +
+ '\n' +
+ '\n' +
+ ' - نوار منو
\n' +
+ ' - هر گروه نوار ابزار
\n' +
+ ' - نوار کناری
\n' +
+ ' - مسیر عنصر در پانویس
\n' +
+ ' - دکمه تغییر وضعیت تعداد کلمات در پانویس
\n' +
+ ' - پیوند نمانامسازی در پانویس
\n' +
+ ' - دسته تغییر اندازه ویرایشگر در پانویس
\n' +
+ '
\n' +
+ '\n' +
+ 'اگر بخشی از رابط کاربری موجود نباشد، رد میشود.
\n' +
+ '\n' +
+ 'اگر پانویس دارای تمرکز بر پیمایش صفحهکلید باشد، و نوار کناری قابلمشاهده وجود ندارد، فشردن Shift+Tab\n' +
+ ' تمرکز را به گروه نوار ابزار اول میبرد، نه آخر.
\n' +
+ '\n' +
+ 'پیمایش در بخشهای رابط کاربری
\n' +
+ '\n' +
+ 'برای جابجایی از یک عنصر رابط کاربری به بعدی، کلید جهتنمای مناسب را فشار دهید.
\n' +
+ '\n' +
+ 'کلیدهای جهتنمای چپ و راست
\n' +
+ '\n' +
+ '\n' +
+ ' - جابجایی بین منوها در نوار منو.
\n' +
+ ' - باز کردن منوی فرعی در یک منو.
\n' +
+ ' - جابجایی بین دکمهها در یک گروه نوار ابزار.
\n' +
+ ' - جابجایی بین موارد در مسیر عنصر پانویس.
\n' +
+ '
\n' +
+ '\n' +
+ 'کلیدهای جهتنمای پایین و بالا
\n' +
+ '\n' +
+ '\n' +
+ ' - جابجایی بین موارد منو در یک منو.
\n' +
+ ' - جابجایی بین موارد در یک منوی بازشوی نوار ابزار.
\n' +
+ '
\n' +
+ '\n' +
+ 'کلیدهایجهتنما در بخش رابط کاربری متمرکز میچرخند.
\n' +
+ '\n' +
+ 'برای بستن یک منوی باز، یک منوی فرعی باز، یا یک منوی بازشوی باز، کلید Esc را فشار دهید.
\n' +
+ '\n' +
+ 'اگر تمرکز فعلی در «بالای» یک بخش رابط کاربری خاص است، فشردن کلید Esc نیز موجب\n' +
+ ' خروج کامل از پیمایش صفحهکلید میشود.
\n' +
+ '\n' +
+ 'اجرای یک مورد منو یا دکمه نوار ابزار
\n' +
+ '\n' +
+ 'وقتی مورد منو یا دکمه نوار ابزار مورد نظر هایلایت شد، دکمه بازگشت، Enter،\n' +
+ ' یا نوار Space را فشار دهید تا مورد را اجرا کنید.
\n' +
+ '\n' +
+ 'پیمایش در کادرهای گفتگوی بدون زبانه
\n' +
+ '\n' +
+ 'در کادرهای گفتگوی بدون زبانه، وقتی کادر گفتگو باز میشود، اولین جزء تعاملی متمرکز میشود.
\n' +
+ '\n' +
+ 'با فشردن Tab یا Shift+Tab، بین اجزای کادر گفتگوی تعاملی پیمایش کنید.
\n' +
+ '\n' +
+ 'پیمایش کادرهای گفتگوی زبانهدار
\n' +
+ '\n' +
+ 'در کادرهای گفتگوی زبانهدار، وقتی کادر گفتگو باز میشود، اولین دکمه در منوی زبانه متمرکز میشود.
\n' +
+ '\n' +
+ 'با فشردن Tab یا\n' +
+ ' Shift+Tab، بین اجزای تعاملی این زبانه کادر گفتگو پیمایش کنید.
\n' +
+ '\n' +
+ 'با دادن تمرکز به منوی زبانه و سپس فشار دادن کلید جهتنمای\n' +
+ ' مناسب برای چرخش میان زبانههای موجود، به زبانه کادر گفتگوی دیگری بروید.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/fi.js b/public/tinymce/plugins/help/js/i18n/keynav/fi.js
new file mode 100644
index 00000000..6de78e76
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/fi.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.fi',
+ 'Näppäimistönavigoinnin aloittaminen
\n' +
+ '\n' +
+ '\n' +
+ ' - Siirrä kohdistus valikkopalkkiin
\n' +
+ ' - Windows tai Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Siirrä kohdistus työkalupalkkiin
\n' +
+ ' - Windows tai Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Siirrä kohdistus alatunnisteeseen
\n' +
+ ' - Windows tai Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Keskitä ilmoitukseen
\n' +
+ ' - Windows ja Linux: Alt + F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Siirrä kohdistus kontekstuaaliseen työkalupalkkiin
\n' +
+ ' - Windows, Linux tai macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigointi aloitetaan ensimmäisestä käyttöliittymän kohteesta, joka joko korostetaan tai alleviivataan, jos\n' +
+ ' kyseessä on Alatunniste-elementin polun ensimmäinen kohde.
\n' +
+ '\n' +
+ 'Käyttöliittymän eri osien välillä navigointi
\n' +
+ '\n' +
+ 'Paina sarkainnäppäintä siirtyäksesi käyttöliittymän osasta seuraavaan.
\n' +
+ '\n' +
+ 'Jos haluat siirtyä edelliseen käyttöliittymän osaan, paina Shift+sarkainnäppäin.
\n' +
+ '\n' +
+ 'Sarkainnäppäin siirtää sinua näissä käyttöliittymän osissa tässä järjestyksessä:
\n' +
+ '\n' +
+ '\n' +
+ ' - Valikkopalkki
\n' +
+ ' - Työkalupalkin ryhmät
\n' +
+ ' - Sivupalkki
\n' +
+ ' - Elementin polku alatunnisteessa
\n' +
+ ' - Sanalaskurin vaihtopainike alatunnisteessa
\n' +
+ ' - Brändäyslinkki alatunnisteessa
\n' +
+ ' - Editorin koon muuttamisen kahva alatunnisteessa
\n' +
+ '
\n' +
+ '\n' +
+ 'Jos jotakin käyttöliittymän osaa ei ole, se ohitetaan.
\n' +
+ '\n' +
+ 'Jos kohdistus on siirretty alatunnisteeseen näppäimistönavigoinnilla eikä sivupalkkia ole näkyvissä, Shift+sarkainnäppäin\n' +
+ ' siirtää kohdistuksen työkalupalkin ensimmäiseen ryhmään, eikä viimeiseen.
\n' +
+ '\n' +
+ 'Käyttöliittymän eri osien sisällä navigointi
\n' +
+ '\n' +
+ 'Paina nuolinäppäimiä siirtyäksesi käyttöliittymäelementistä seuraavaan.
\n' +
+ '\n' +
+ 'Vasen- ja Oikea-nuolinäppäimet
\n' +
+ '\n' +
+ '\n' +
+ ' - siirtävät sinua valikkopalkin valikoiden välillä.
\n' +
+ ' - avaavat valikon alavalikon.
\n' +
+ ' - siirtävät sinua työkalupalkin ryhmän painikkeiden välillä.
\n' +
+ ' - siirtävät sinua kohteiden välillä alatunnisteen elementin polussa.
\n' +
+ '
\n' +
+ '\n' +
+ 'Alas- ja Ylös-nuolinäppäimet
\n' +
+ '\n' +
+ '\n' +
+ ' - siirtävät sinua valikon valikkokohteiden välillä.
\n' +
+ ' - siirtävät sinua työkalupalkin ponnahdusvalikon kohteiden välillä.
\n' +
+ '
\n' +
+ '\n' +
+ 'Nuolinäppäimet siirtävät sinua käyttöliittymän korostetun osan sisällä syklissä.
\n' +
+ '\n' +
+ 'Paina Esc-näppäintä sulkeaksesi avoimen valikon, avataksesi alavalikon tai avataksesi ponnahdusvalikon.
\n' +
+ '\n' +
+ 'Jos kohdistus on käyttöliittymän tietyn osion ylälaidassa, Esc-näppäimen painaminen\n' +
+ ' poistuu myös näppäimistönavigoinnista kokonaan.
\n' +
+ '\n' +
+ 'Suorita valikkokohde tai työkalupalkin painike
\n' +
+ '\n' +
+ 'Kun haluamasi valikkokohde tai työkalupalkin painike on korostettuna, paina Return-, Enter-\n' +
+ ' tai välilyöntinäppäintä suorittaaksesi kohteen.
\n' +
+ '\n' +
+ 'Välilehdittömissä valintaikkunoissa navigointi
\n' +
+ '\n' +
+ 'Kun välilehdetön valintaikkuna avautuu, kohdistus siirtyy sen ensimmäiseen interaktiiviseen komponenttiin.
\n' +
+ '\n' +
+ 'Voit siirtyä valintaikkunan interaktiivisten komponenttien välillä painamalla sarkainnäppäintä tai Shift+sarkainnäppäin.
\n' +
+ '\n' +
+ 'Välilehdellisissä valintaikkunoissa navigointi
\n' +
+ '\n' +
+ 'Kun välilehdellinen valintaikkuna avautuu, kohdistus siirtyy välilehtivalikon ensimmäiseen painikkeeseen.
\n' +
+ '\n' +
+ 'Voit siirtyä valintaikkunan välilehden interaktiivisen komponenttien välillä painamalla sarkainnäppäintä tai\n' +
+ ' Shift+sarkainnäppäin.
\n' +
+ '\n' +
+ 'Voit siirtyä valintaikkunan toiseen välilehteen siirtämällä kohdistuksen välilehtivalikkoon ja painamalla sopivaa nuolinäppäintä\n' +
+ ' siirtyäksesi käytettävissä olevien välilehtien välillä syklissä.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/fr_FR.js b/public/tinymce/plugins/help/js/i18n/keynav/fr_FR.js
new file mode 100644
index 00000000..01e85f50
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/fr_FR.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.fr_FR',
+ 'Débuter la navigation au clavier
\n' +
+ '\n' +
+ '\n' +
+ ' - Cibler la barre du menu
\n' +
+ ' - Windows ou Linux : Alt+F9
\n' +
+ ' - macOS : ⌥F9
\n' +
+ " - Cibler la barre d'outils
\n" +
+ ' - Windows ou Linux : Alt+F10
\n' +
+ ' - macOS : ⌥F10
\n' +
+ ' - Cibler le pied de page
\n' +
+ ' - Windows ou Linux : Alt+F11
\n' +
+ ' - macOS : ⌥F11
\n' +
+ ' - Cibler la notification
\n' +
+ ' - Windows ou Linux : Alt+F12
\n' +
+ ' - macOS : ⌥F12
\n' +
+ " - Cibler une barre d'outils contextuelle
\n" +
+ ' - Windows, Linux ou macOS : Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ "La navigation débutera sur le premier élément de l'interface utilisateur, qui sera mis en surbrillance ou bien souligné dans le cas du premier élément du\n" +
+ " chemin d'éléments du pied de page.
\n" +
+ '\n' +
+ "Naviguer entre les sections de l'interface utilisateur
\n" +
+ '\n' +
+ "Pour passer d'une section de l'interface utilisateur à la suivante, appuyez sur Tabulation.
\n" +
+ '\n' +
+ "Pour passer d'une section de l'interface utilisateur à la précédente, appuyez sur Maj+Tabulation.
\n" +
+ '\n' +
+ "L'ordre de Tabulation de ces sections de l'interface utilisateur est le suivant :
\n" +
+ '\n' +
+ '\n' +
+ ' - Barre du menu
\n' +
+ " - Chaque groupe de barres d'outils
\n" +
+ ' - Barre latérale
\n' +
+ " - Chemin d'éléments du pied de page
\n" +
+ " - Bouton d'activation du compteur de mots dans le pied de page
\n" +
+ ' - Lien de marque dans le pied de page
\n' +
+ " - Poignée de redimensionnement de l'éditeur dans le pied de page
\n" +
+ '
\n' +
+ '\n' +
+ "Si une section de l'interface utilisateur n'est pas présente, elle sera ignorée.
\n" +
+ '\n' +
+ "Si le pied de page comporte un ciblage par navigation au clavier et qu'il n'y a aucune barre latérale visible, appuyer sur Maj+Tabulation\n" +
+ " déplace le ciblage vers le premier groupe de barres d'outils et non le dernier.
\n" +
+ '\n' +
+ "Naviguer au sein des sections de l'interface utilisateur
\n" +
+ '\n' +
+ "Pour passer d'un élément de l'interface utilisateur au suivant, appuyez sur la Flèche appropriée.
\n" +
+ '\n' +
+ 'Les touches fléchées Gauche et Droite
\n' +
+ '\n' +
+ '\n' +
+ ' - se déplacent entre les menus de la barre des menus.
\n' +
+ " - ouvrent un sous-menu au sein d'un menu.
\n" +
+ " - se déplacent entre les boutons d'un groupe de barres d'outils.
\n" +
+ " - se déplacent entre les éléments du chemin d'éléments du pied de page.
\n" +
+ '
\n' +
+ '\n' +
+ 'Les touches fléchées Bas et Haut
\n' +
+ '\n' +
+ '\n' +
+ " - se déplacent entre les éléments de menu au sein d'un menu.
\n" +
+ " - se déplacent entre les éléments au sein d'un menu contextuel de barre d'outils.
\n" +
+ '
\n' +
+ '\n' +
+ "Les Flèches parcourent la section de l'interface utilisateur ciblée.
\n" +
+ '\n' +
+ 'Pour fermer un menu ouvert, un sous-menu ouvert ou un menu contextuel ouvert, appuyez sur Echap.
\n' +
+ '\n' +
+ "Si l'actuel ciblage se trouve en « haut » d'une section spécifique de l'interface utilisateur, appuyer sur Echap permet également de quitter\n" +
+ ' entièrement la navigation au clavier.
\n' +
+ '\n' +
+ "Exécuter un élément de menu ou un bouton de barre d'outils
\n" +
+ '\n' +
+ "Lorsque l'élément de menu ou le bouton de barre d'outils désiré est mis en surbrillance, appuyez sur la touche Retour arrière, Entrée\n" +
+ " ou la Barre d'espace pour exécuter l'élément.
\n" +
+ '\n' +
+ 'Naviguer au sein de dialogues sans onglets
\n' +
+ '\n' +
+ "Dans les dialogues sans onglets, le premier composant interactif est ciblé lorsque le dialogue s'ouvre.
\n" +
+ '\n' +
+ 'Naviguez entre les composants du dialogue interactif en appuyant sur Tabulation ou Maj+Tabulation.
\n' +
+ '\n' +
+ 'Naviguer au sein de dialogues avec onglets
\n' +
+ '\n' +
+ "Dans les dialogues avec onglets, le premier bouton du menu de l'onglet est ciblé lorsque le dialogue s'ouvre.
\n" +
+ '\n' +
+ 'Naviguez entre les composants interactifs de cet onglet de dialogue en appuyant sur Tabulation ou\n' +
+ ' Maj+Tabulation.
\n' +
+ '\n' +
+ "Passez à un autre onglet de dialogue en ciblant le menu de l'onglet et en appuyant sur la Flèche\n" +
+ ' appropriée pour parcourir les onglets disponibles.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/he_IL.js b/public/tinymce/plugins/help/js/i18n/keynav/he_IL.js
new file mode 100644
index 00000000..8d9c99f4
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/he_IL.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.he_IL',
+ 'התחל ניווט במקלדת
\n' +
+ '\n' +
+ '\n' +
+ ' - התמקד בשורת התפריטים
\n' +
+ ' - Windows או Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - העבר מיקוד לסרגל הכלים
\n' +
+ ' - Windows או Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - העבר מיקוד לכותרת התחתונה
\n' +
+ ' - Windows או Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - העבר מיקוד להודעה
\n' +
+ ' - Windows או Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - העבר מיקוד לסרגל כלים הקשרי
\n' +
+ ' - Windows, Linux או macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'הניווט יתחיל ברכיב הראשון במשך, שיודגש או שיהיה מתחתיו קו תחתון במקרה של הפריט הראשון\n' +
+ ' הנתיב של רכיב הכותרת התחתונה.
\n' +
+ '\n' +
+ 'עבור בין מקטעים במסך
\n' +
+ '\n' +
+ 'כדי לעבור בין המקטעים במסך, הקש Tab.
\n' +
+ '\n' +
+ 'כדי לעבור למקטע הקודם במסך, הקש Shift+Tab.
\n' +
+ '\n' +
+ 'הסדר מבחינת מקש Tab של הרכיבים במסך:
\n' +
+ '\n' +
+ '\n' +
+ ' - שורת התפריטים
\n' +
+ ' - כל קבוצה בסרגל הכלים
\n' +
+ ' - הסרגל הצידי
\n' +
+ ' - נתיב של רכיב בכותרת התחתונה
\n' +
+ ' - לחצן לספירת מילים בכותרת התחתונה
\n' +
+ ' - קישור של המותג בכותרת התחתונה
\n' +
+ ' - ידית לשינוי גודל עבור העורך בכותרת התחתונה
\n' +
+ '
\n' +
+ '\n' +
+ 'אם רכיב כלשהו במסך לא מופיע, המערכת תדלג עליו.
\n' +
+ '\n' +
+ 'אם בכותרת התחתונה יש מיקוד של ניווט במקלדת, ולא מופיע סרגל בצד, יש להקיש Shift+Tab\n' +
+ ' מעביר את המיקוד לקבוצה הראשונה בסרגל הכלים, לא האחרונה.
\n' +
+ '\n' +
+ 'עבור בתוך מקטעים במסך
\n' +
+ '\n' +
+ 'כדי לעבור מרכיב אחד לרכיב אחר במסך, הקש על מקש החץ המתאים.
\n' +
+ '\n' +
+ 'מקשי החיצים שמאלה וימינה
\n' +
+ '\n' +
+ '\n' +
+ ' - עבור בין תפריטים בשורת התפריטים.
\n' +
+ ' - פתח תפריט משני בתפריט.
\n' +
+ ' - עבור בין לחצנים בקבוצה בסרגל הכלים.
\n' +
+ ' - עבור בין פריטים ברכיב בכותרת התחתונה.
\n' +
+ '
\n' +
+ '\n' +
+ 'מקשי החיצים למטה ולמעלה
\n' +
+ '\n' +
+ '\n' +
+ ' - עבור בין פריטים בתפריט.
\n' +
+ ' - עבור בין פריטים בחלון הקובץ של סרגל הכלים.
\n' +
+ '
\n' +
+ '\n' +
+ 'מקשי החצים משתנים בתוך המקטע במסך שעליו נמצא המיקוד.
\n' +
+ '\n' +
+ 'כדי לסגור תפריט פתוח, תפריט משני פתוח או חלון קופץ, הקש על Esc.
\n' +
+ '\n' +
+ "אם המיקוד הוא על החלק 'העליון' של מקטע מסוים במסך, הקשה על Esc מביאה גם ליציאה\n" +
+ ' מהניווט במקלדת לחלוטין.
\n' +
+ '\n' +
+ 'הפעל פריט בתפריט או לחצן בסרגל הכלים
\n' +
+ '\n' +
+ 'כאשר הפריט הרצוי בתפריט או הלחצן בסרגל הכלים מודגשים, הקש על Return, Enter,\n' +
+ ' או על מקש הרווח כדי להפעיל את הפריט.
\n' +
+ '\n' +
+ 'ניווט בחלונות דו-שיח בלי כרטיסיות
\n' +
+ '\n' +
+ 'בחלונות דו-שיח בלי כרטיסיות, הרכיב האינטראקטיבי הראשון מקבל את המיקוד כאשר החלון נפתח.
\n' +
+ '\n' +
+ 'עבור בין רכיבים אינטראקטיביים בחלון על ידי הקשה על Tab או Shift+Tab.
\n' +
+ '\n' +
+ 'ניווט בחלונות דו-שיח עם כרטיסיות
\n' +
+ '\n' +
+ 'בחלונות דו-שיח עם כרטיסיות, הלחצן הראשון בתפריט מקבל את המיקוד כאשר החלון נפתח.
\n' +
+ '\n' +
+ 'עבור בין רכיבים אינטראקטיביים בחלון על ידי הקשה על Tab או\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'עבור לכרטיסיה אחרת בחלון על ידי העברת המיקוד לתפריט הכרטיסיות והקשה על החץהמתאים\n' +
+ ' כדי לעבור בין הכרטיסיות הזמינות.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/hi.js b/public/tinymce/plugins/help/js/i18n/keynav/hi.js
new file mode 100644
index 00000000..73e62861
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/hi.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.hi',
+ 'कीबोर्ड नेविगेशन शुरू करें
\n' +
+ '\n' +
+ '\n' +
+ ' - मेन्यू बार पर फ़ोकस करें
\n' +
+ ' - Windows या Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - टूलबार पर फ़ोकस करें
\n' +
+ ' - Windows या Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - फ़ुटर पर फ़ोकस करें
\n' +
+ ' - Windows या Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - नोटिफ़िकेशन फ़ोकस
\n' +
+ ' - Windows या Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - प्रासंगिक टूलबार पर फ़ोकस करें
\n' +
+ ' - Windows, Linux या macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'नेविगेशन पहले UI आइटम पर शुरू होगा, जिसे हाइलाइट किया जाएगा या पहले आइटम के मामले में फ़ुटर तत्व पथ में\n' +
+ ' रेखांकित किया जाएगा।
\n' +
+ '\n' +
+ 'UI सेक्शन के बीच नेविगेट करें
\n' +
+ '\n' +
+ 'एक UI सेक्शन से दूसरे सेक्शन में जाने के लिए, Tab दबाएं।
\n' +
+ '\n' +
+ 'एक UI सेक्शन से पिछले सेक्शन में जाने के लिए, Shift+Tab दबाएं।
\n' +
+ '\n' +
+ 'इन UI सेक्शन का Tab क्रम नीचे दिया गया है:
\n' +
+ '\n' +
+ '\n' +
+ ' - मेन्यू बार
\n' +
+ ' - प्रत्येक टूलबार समूह
\n' +
+ ' - साइडबार
\n' +
+ ' - फ़ुटर में तत्व पथ
\n' +
+ ' - फ़ुटर में शब्द गणना टॉगल बटन
\n' +
+ ' - फ़ुटर में ब्रांडिंग लिंक
\n' +
+ ' - फ़ुटर में संपादक का आकार बदलने का हैंडल
\n' +
+ '
\n' +
+ '\n' +
+ 'अगर कोई UI सेक्शन मौजूद नहीं है, तो उसे छोड़ दिया जाता है।
\n' +
+ '\n' +
+ 'अगर फ़ुटर में कीबोर्ड नेविगेशन फ़ोकस है, और कोई दिखा देने वाला साइडबार नहीं है, तो Shift+Tab दबाने से\n' +
+ ' फ़ोकस पहले टूलबार समूह पर चला जाता है, पिछले पर नहीं।
\n' +
+ '\n' +
+ 'UI सेक्शन के भीतर नेविगेट करें
\n' +
+ '\n' +
+ 'एक UI तत्व से दूसरे में जाने के लिए उपयुक्त ऐरो कुंजी दबाएं।
\n' +
+ '\n' +
+ 'बाएं और दाएं ऐरो कुंजियां
\n' +
+ '\n' +
+ '\n' +
+ ' - मेन्यू बार में मेन्यू के बीच ले जाती हैं।
\n' +
+ ' - मेन्यू में एक सब-मेन्यू खोलें।
\n' +
+ ' - टूलबार समूह में बटनों के बीच ले जाएं।
\n' +
+ ' - फ़ुटर के तत्व पथ में आइटम के बीच ले जाएं।
\n' +
+ '
\n' +
+ '\n' +
+ 'नीचे और ऊपर ऐरो कुंजियां
\n' +
+ '\n' +
+ '\n' +
+ ' - मेन्यू में मेन्यू आइटम के बीच ले जाती हैं।
\n' +
+ ' - टूलबार पॉप-अप मेन्यू में आइटम के बीच ले जाएं।
\n' +
+ '
\n' +
+ '\n' +
+ 'फ़ोकस वाले UI सेक्शन के भीतर ऐरो कुंजियां चलाती रहती हैं।
\n' +
+ '\n' +
+ 'कोई खुला मेन्यू, कोई खुला सब-मेन्यू या कोई खुला पॉप-अप मेन्यू बंद करने के लिए Esc कुंजी दबाएं।
\n' +
+ '\n' +
+ "अगर मौजूदा फ़ोकस किसी विशेष UI सेक्शन के 'शीर्ष' पर है, तो Esc कुंजी दबाने से भी\n" +
+ ' कीबोर्ड नेविगेशन पूरी तरह से बाहर हो जाता है।
\n' +
+ '\n' +
+ 'मेन्यू आइटम या टूलबार बटन निष्पादित करें
\n' +
+ '\n' +
+ 'जब वांछित मेन्यू आइटम या टूलबार बटन हाइलाइट किया जाता है, तो आइटम को निष्पादित करने के लिए Return, Enter,\n' +
+ ' या Space bar दबाएं।
\n' +
+ '\n' +
+ 'गैर-टैब वाले डायलॉग पर नेविगेट करें
\n' +
+ '\n' +
+ 'गैर-टैब वाले डायलॉग में, डायलॉग खुलने पर पहला इंटरैक्टिव घटक फ़ोकस लेता है।
\n' +
+ '\n' +
+ 'Tab or Shift+Tab दबाकर इंटरैक्टिव डायलॉग घटकों के बीच नेविगेट करें।
\n' +
+ '\n' +
+ 'टैब किए गए डायलॉग पर नेविगेट करें
\n' +
+ '\n' +
+ 'टैब किए गए डायलॉग में, डायलॉग खुलने पर टैब मेन्यू में पहला बटन फ़ोकस लेता है।
\n' +
+ '\n' +
+ 'इस डायलॉग टैब के इंटरैक्टिव घटकों के बीच नेविगेट करने के लिए Tab या\n' +
+ ' Shift+Tab दबाएं।
\n' +
+ '\n' +
+ 'टैब मेन्यू को फ़ोकस देकर और फिर उपलब्ध टैब में के बीच जाने के लिए उपयुक्त ऐरो\n' +
+ ' कुंजी दबाकर दूसरे डायलॉग टैब पर स्विच करें।
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/hr.js b/public/tinymce/plugins/help/js/i18n/keynav/hr.js
new file mode 100644
index 00000000..c10e164e
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/hr.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.hr',
+ 'Početak navigacije na tipkovnici
\n' +
+ '\n' +
+ '\n' +
+ ' - Fokusiranje trake izbornika
\n' +
+ ' - Windows ili Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Fokusiranje alatne trake
\n' +
+ ' - Windows ili Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Fokusiranje podnožja
\n' +
+ ' - Windows ili Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Fokusiranje obavijesti
\n' +
+ ' - Windows ili Linux: Alt + F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Fokusiranje kontekstne alatne trake
\n' +
+ ' - Windows, Linux ili macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigacija će započeti kod prve stavke na korisničkom sučelju, koja će biti istaknuta ili podcrtana ako se radi o prvoj stavci u\n' +
+ ' putu elementa u podnožju.
\n' +
+ '\n' +
+ 'Navigacija između dijelova korisničkog sučelja
\n' +
+ '\n' +
+ 'Za pomicanje s jednog dijela korisničkog sučelja na drugi pritisnite tabulator.
\n' +
+ '\n' +
+ 'Za pomicanje s jednog dijela korisničkog sučelja na prethodni pritisnite Shift + tabulator.
\n' +
+ '\n' +
+ 'Ovo je redoslijed pomicanja tabulatora po dijelovima korisničkog sučelja:
\n' +
+ '\n' +
+ '\n' +
+ ' - Traka izbornika
\n' +
+ ' - Pojedinačne grupe na alatnoj traci
\n' +
+ ' - Bočna traka
\n' +
+ ' - Put elemenata u podnožju
\n' +
+ ' - Gumb za pomicanje po broju riječi u podnožju
\n' +
+ ' - Veza na brand u podnožju
\n' +
+ ' - Značajka za promjenu veličine alata za uređivanje u podnožju
\n' +
+ '
\n' +
+ '\n' +
+ 'Ako neki dio korisničkog sučelja nije naveden, on se preskače.
\n' +
+ '\n' +
+ 'Ako u podnožju postoji fokus za navigaciju na tipkovnici, a nema vidljive bočne trake, pritiskom na Shift + tabulator\n' +
+ ' fokus se prebacuje na prvu skupinu na alatnoj traci, ne na zadnju.
\n' +
+ '\n' +
+ 'Navigacija unutar dijelova korisničkog sučelja
\n' +
+ '\n' +
+ 'Za pomicanje s jednog elementa korisničkog sučelja na drugi pritisnite tipku s odgovarajućom strelicom.
\n' +
+ '\n' +
+ 'Tipke s lijevom i desnom strelicom
\n' +
+ '\n' +
+ '\n' +
+ ' - služe za pomicanje između izbornika na alatnoj traci.
\n' +
+ ' - otvaraju podizbornik unutar izbornika.
\n' +
+ ' - služe za pomicanje između gumba unutar skupina na alatnoj traci.
\n' +
+ ' - služe za pomicanje između stavki na elementu puta u podnožju.
\n' +
+ '
\n' +
+ '\n' +
+ 'Tipke s donjom i gornjom strelicom
\n' +
+ '\n' +
+ '\n' +
+ ' - služe za pomicanje između stavki unutar izbornika.
\n' +
+ ' - služe za pomicanje između stavki na alatnoj traci skočnog izbornika.
\n' +
+ '
\n' +
+ '\n' +
+ 'Tipkama strelica kružno se pomičete unutar dijela korisničkog sučelja koji je u fokusu.
\n' +
+ '\n' +
+ 'Za zatvaranje otvorenog izbornika, otvorenog podizbornika ili otvorenog skočnog izbornika pritisnite tipku Esc.
\n' +
+ '\n' +
+ 'Ako je fokus trenutačno postavljen na vrh pojedinačnog dijela korisničkog sučelja, pritiskom na tipku Esc također\n' +
+ ' u potpunosti zatvarate navigaciju na tipkovnici.
\n' +
+ '\n' +
+ 'Izvršavanje radnji putem stavki izbornika ili gumba na alatnoj traci
\n' +
+ '\n' +
+ 'Nakon što se istakne stavka izbornika ili gumb na alatnoj traci s radnjom koju želite izvršiti, pritisnite tipku Return, Enter\n' +
+ ' ili razmak da biste pokrenuli željenu radnju.
\n' +
+ '\n' +
+ 'Navigacija dijaloškim okvirima izvan kartica
\n' +
+ '\n' +
+ 'Prilikom otvaranja dijaloških okvira izvan kartica fokus se nalazi na prvoj interaktivnoj komponenti.
\n' +
+ '\n' +
+ 'Navigaciju između interaktivnih dijaloških komponenata vršite pritiskom na tabulator ili Shift + tabulator.
\n' +
+ '\n' +
+ 'Navigacija dijaloškim okvirima u karticama
\n' +
+ '\n' +
+ 'Prilikom otvaranja dijaloških okvira u karticama fokus se nalazi na prvom gumbu u izborniku unutar kartice.
\n' +
+ '\n' +
+ 'Navigaciju između interaktivnih komponenata dijaloškog okvira u kartici vršite pritiskom na tabulator ili\n' +
+ ' Shift + tabulator.
\n' +
+ '\n' +
+ 'Na karticu s drugim dijaloškim okvirom možete se prebaciti tako da stavite fokus na izbornik kartice pa pritisnete tipku s odgovarajućom strelicom\n' +
+ ' za kružno pomicanje između dostupnih kartica.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/hu_HU.js b/public/tinymce/plugins/help/js/i18n/keynav/hu_HU.js
new file mode 100644
index 00000000..c8313f85
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/hu_HU.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.hu_HU',
+ 'Billentyűzetes navigáció indítása
\n' +
+ '\n' +
+ '\n' +
+ ' - Fókusz a menüsávra
\n' +
+ ' - Windows és Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Fókusz az eszköztárra
\n' +
+ ' - Windows és Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Fókusz a láblécre
\n' +
+ ' - Windows és Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Ráközelítés az értesítésre
\n' +
+ ' - Windows vagy Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Fókusz egy környezetfüggő eszköztárra
\n' +
+ ' - Windows, Linux és macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'A navigáció az első felhasználói felületi elemnél kezdődik, amelyet a rendszer kiemel, illetve aláhúz, amennyiben az az első elem\n' +
+ ' a lábléc elemútvonalán.
\n' +
+ '\n' +
+ 'Navigálás a felhasználói felület szakaszai között
\n' +
+ '\n' +
+ 'A felhasználói felület következő szakaszára váltáshoz nyomja meg a Tab billentyűt.
\n' +
+ '\n' +
+ 'A felhasználói felület előző szakaszára váltáshoz nyomja meg a Shift+Tab billentyűt.
\n' +
+ '\n' +
+ 'A Tab billentyűvel a felhasználói felület szakaszai között a következő sorrendben vált:
\n' +
+ '\n' +
+ '\n' +
+ ' - Menüsáv
\n' +
+ ' - Az egyes eszköztárcsoportok
\n' +
+ ' - Oldalsáv
\n' +
+ ' - Elemútvonal a láblécen
\n' +
+ ' - Szószámátkapcsoló gomb a láblécen
\n' +
+ ' - Márkalink a láblécen
\n' +
+ ' - Szerkesztő átméretezési fogópontja a láblécen
\n' +
+ '
\n' +
+ '\n' +
+ 'Ha a felhasználói felület valamelyik eleme nincs jelen, a rendszer kihagyja.
\n' +
+ '\n' +
+ 'Ha a billentyűzetes navigáció fókusza a láblécen van, és nincs látható oldalsáv, a Shift+Tab\n' +
+ ' billentyűkombináció lenyomásakor az első eszköztárcsoportra ugrik a fókusz, nem az utolsóra.
\n' +
+ '\n' +
+ 'Navigálás a felhasználói felület szakaszain belül
\n' +
+ '\n' +
+ 'A felhasználói felület következő elemére váltáshoz nyomja meg a megfelelő nyílbillentyűt.
\n' +
+ '\n' +
+ 'A bal és a jobb nyílgomb
\n' +
+ '\n' +
+ '\n' +
+ ' - a menüsávban a menük között vált.
\n' +
+ ' - a menükben megnyit egy almenüt.
\n' +
+ ' - az eszköztárcsoportban a gombok között vált.
\n' +
+ ' - a lábléc elemútvonalán az elemek között vált.
\n' +
+ '
\n' +
+ '\n' +
+ 'A le és a fel nyílgomb
\n' +
+ '\n' +
+ '\n' +
+ ' - a menükben a menüpontok között vált.
\n' +
+ ' - az eszköztár előugró menüjében az elemek között vált.
\n' +
+ '
\n' +
+ '\n' +
+ 'A nyílbillentyűk lenyomásával körkörösen lépkedhet a fókuszban lévő felhasználói felületi szakasz elemei között.
\n' +
+ '\n' +
+ 'A megnyitott menüket, almenüket és előugró menüket az Esc billentyűvel zárhatja be.
\n' +
+ '\n' +
+ 'Ha a fókusz az aktuális felületi elem „felső” részén van, az Esc billentyűvel az egész\n' +
+ ' billentyűzetes navigációból kilép.
\n' +
+ '\n' +
+ 'Menüpont vagy eszköztárgomb aktiválása
\n' +
+ '\n' +
+ 'Amikor a kívánt menüelem vagy eszköztárgomb van kijelölve, nyomja meg a Return, az Enter\n' +
+ ' vagy a Szóköz billentyűt az adott elem vagy gomb aktiválásához.
\n' +
+ '\n' +
+ 'Navigálás a lapokkal nem rendelkező párbeszédablakokban
\n' +
+ '\n' +
+ 'A lapokkal nem rendelkező párbeszédablakokban az első interaktív összetevő kapja a fókuszt, amikor a párbeszédpanel megnyílik.
\n' +
+ '\n' +
+ 'A párbeszédpanelek interaktív összetevői között a Tab vagy a Shift+Tab billentyűvel navigálhat.
\n' +
+ '\n' +
+ 'Navigálás a lapokkal rendelkező párbeszédablakokban
\n' +
+ '\n' +
+ 'A lapokkal rendelkező párbeszédablakokban a lapmenü első gombja kapja a fókuszt, amikor a párbeszédpanel megnyílik.
\n' +
+ '\n' +
+ 'A párbeszédpanel e lapjának interaktív összetevői között a Tab vagy\n' +
+ ' Shift+Tab billentyűvel navigálhat.
\n' +
+ '\n' +
+ 'A párbeszédablak másik lapjára úgy léphet, hogy a fókuszt a lapmenüre állítja, majd lenyomja a megfelelő nyílbillentyűt\n' +
+ ' a rendelkezésre álló lapok közötti lépkedéshez.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/id.js b/public/tinymce/plugins/help/js/i18n/keynav/id.js
new file mode 100644
index 00000000..7d32d716
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/id.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.id',
+ 'Memulai navigasi keyboard
\n' +
+ '\n' +
+ '\n' +
+ ' - Fokus pada bilah Menu
\n' +
+ ' - Windows atau Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Fokus pada Bilah Alat
\n' +
+ ' - Windows atau Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Fokus pada footer
\n' +
+ ' - Windows atau Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Fokuskan pemberitahuan
\n' +
+ ' - Windows atau Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Fokus pada bilah alat kontekstual
\n' +
+ ' - Windows, Linux, atau macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigasi akan dimulai dari item pertama UI, yang akan disorot atau digarisbawahi di\n' +
+ ' alur elemen Footer.
\n' +
+ '\n' +
+ 'Berpindah antar-bagian UI
\n' +
+ '\n' +
+ 'Untuk berpindah dari satu bagian UI ke bagian berikutnya, tekan Tab.
\n' +
+ '\n' +
+ 'Untuk berpindah dari satu bagian UI ke bagian sebelumnya, tekan Shift+Tab.
\n' +
+ '\n' +
+ 'Urutan Tab bagian-bagian UI ini adalah:
\n' +
+ '\n' +
+ '\n' +
+ ' - Bilah menu
\n' +
+ ' - Tiap grup bilah alat
\n' +
+ ' - Bilah sisi
\n' +
+ ' - Alur elemen di footer
\n' +
+ ' - Tombol aktifkan/nonaktifkan jumlah kata di footer
\n' +
+ ' - Tautan merek di footer
\n' +
+ ' - Pengatur pengubahan ukuran editor di footer
\n' +
+ '
\n' +
+ '\n' +
+ 'Jika suatu bagian UI tidak ada, bagian tersebut dilewati.
\n' +
+ '\n' +
+ 'Jika fokus navigasi keyboard ada pada footer, tetapi tidak ada bilah sisi yang terlihat, menekan Shift+Tab\n' +
+ ' akan memindahkan fokus ke grup bilah alat pertama, bukan yang terakhir.
\n' +
+ '\n' +
+ 'Berpindah di dalam bagian-bagian UI
\n' +
+ '\n' +
+ 'Untuk berpindah dari satu elemen UI ke elemen berikutnya, tekan tombol Panah yang sesuai.
\n' +
+ '\n' +
+ 'Tombol panah Kiri dan Kanan untuk
\n' +
+ '\n' +
+ '\n' +
+ ' - berpindah-pindah antar-menu di dalam bilah menu.
\n' +
+ ' - membuka sub-menu di dalam menu.
\n' +
+ ' - berpindah-pindah antar-tombol di dalam grup bilah alat.
\n' +
+ ' - berpindah-pindah antar-item di dalam alur elemen footer.
\n' +
+ '
\n' +
+ '\n' +
+ 'Tombol panah Bawah dan Atas untuk
\n' +
+ '\n' +
+ '\n' +
+ ' - berpindah-pindah antar-item menu di dalam menu.
\n' +
+ ' - berpindah-pindah antar-item di dalam menu pop-up bilah alat.
\n' +
+ '
\n' +
+ '\n' +
+ 'Tombol Panah hanya bergerak di dalam bagian UI yang difokuskan.
\n' +
+ '\n' +
+ 'Untuk menutup menu, sub-menu, atau menu pop-up yang terbuka, tekan tombol Esc.
\n' +
+ '\n' +
+ 'Jika fokus sedang berada di ‘atas’ bagian UI tertentu, menekan tombol Esc juga dapat mengeluarkan fokus\n' +
+ ' dari seluruh navigasi keyboard.
\n' +
+ '\n' +
+ 'Menjalankan item menu atau tombol bilah alat
\n' +
+ '\n' +
+ 'Jika item menu atau tombol bilah alat yang diinginkan tersorot, tekan Return, Enter,\n' +
+ ' atau Spasi untuk menjalankan item.
\n' +
+ '\n' +
+ 'Berpindah dalam dialog tanpa tab
\n' +
+ '\n' +
+ 'Dalam dialog tanpa tab, fokus diarahkan pada komponen interaktif pertama saat dialog terbuka.
\n' +
+ '\n' +
+ 'Berpindah di antara komponen dalam dialog interaktif dengan menekan Tab atau Shift+Tab.
\n' +
+ '\n' +
+ 'Berpindah dalam dialog dengan tab
\n' +
+ '\n' +
+ 'Dalam dialog yang memiliki tab, fokus diarahkan pada tombol pertama di dalam menu saat dialog terbuka.
\n' +
+ '\n' +
+ 'Berpindah di antara komponen-komponen interaktif pada tab dialog ini dengan menekan Tab atau\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Beralih ke tab dialog lain dengan mengarahkan fokus pada menu tab lalu tekan tombol Panah\n' +
+ ' yang sesuai untuk berpindah ke berbagai tab yang tersedia.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/it.js b/public/tinymce/plugins/help/js/i18n/keynav/it.js
new file mode 100644
index 00000000..421b33ac
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/it.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.it',
+ 'Iniziare la navigazione tramite tastiera
\n' +
+ '\n' +
+ '\n' +
+ ' - Impostare lo stato attivo per la barra dei menu
\n' +
+ ' - Windows o Linux: ALT+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Impostare lo stato attivo per la barra degli strumenti
\n' +
+ ' - Windows o Linux: ALT+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Impostare lo stato attivo per il piè di pagina
\n' +
+ ' - Windows o Linux: ALT+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Metti a fuoco la notifica
\n' +
+ ' - Windows o Linux: ALT+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Impostare lo stato attivo per la barra degli strumenti contestuale
\n' +
+ ' - Windows, Linux o macOS: CTRL+F9
\n' +
+ '
\n' +
+ '\n' +
+ "La navigazione inizierà dalla prima voce dell'interfaccia utente, che sarà evidenziata o sottolineata nel caso della prima voce\n" +
+ " nel percorso dell'elemento del piè di pagina.
\n" +
+ '\n' +
+ "Navigare tra le sezioni dell'interfaccia utente
\n" +
+ '\n' +
+ "Per passare da una sezione dell'interfaccia utente alla successiva, premere TAB.
\n" +
+ '\n' +
+ "Per passare da una sezione dell'interfaccia utente alla precedente, premere MAIUSC+TAB.
\n" +
+ '\n' +
+ "L'ordine di tabulazione di queste sezioni dell'interfaccia utente è:
\n" +
+ '\n' +
+ '\n' +
+ ' - Barra dei menu
\n' +
+ ' - Ogni gruppo di barre degli strumenti
\n' +
+ ' - Barra laterale
\n' +
+ " - Percorso dell'elemento nel piè di pagina
\n" +
+ ' - Pulsante di attivazione/disattivazione del conteggio delle parole nel piè di pagina
\n' +
+ ' - Collegamento al marchio nel piè di pagina
\n' +
+ " - Quadratino di ridimensionamento dell'editor nel piè di pagina
\n" +
+ '
\n' +
+ '\n' +
+ "Se una sezione dell'interfaccia utente non è presente, viene saltata.
\n" +
+ '\n' +
+ 'Se il piè di pagina ha lo stato attivo per la navigazione tramite tastiera e non è presente alcuna barra laterale visibile, premendo MAIUSC+TAB\n' +
+ " si sposta lo stato attivo sul primo gruppo di barre degli strumenti, non sull'ultimo.
\n" +
+ '\n' +
+ "Navigare all'interno delle sezioni dell'interfaccia utente
\n" +
+ '\n' +
+ "Per passare da un elemento dell'interfaccia utente al successivo, premere il tasto freccia appropriato.
\n" +
+ '\n' +
+ 'I tasti freccia Sinistra e Destra
\n' +
+ '\n' +
+ '\n' +
+ ' - consentono di spostarsi tra i menu della barra dei menu.
\n' +
+ ' - aprono un sottomenu in un menu.
\n' +
+ ' - consentono di spostarsi tra i pulsanti di un gruppo di barre degli strumenti.
\n' +
+ " - consentono di spostarsi tra le voci nel percorso dell'elemento del piè di pagina.
\n" +
+ '
\n' +
+ '\n' +
+ 'I tasti freccia Giù e Su
\n' +
+ '\n' +
+ '\n' +
+ ' - consentono di spostarsi tra le voci di un menu.
\n' +
+ ' - consentono di spostarsi tra le voci di un menu a comparsa della barra degli strumenti.
\n' +
+ '
\n' +
+ '\n' +
+ "I tasti freccia consentono di spostarsi all'interno della sezione dell'interfaccia utente con stato attivo.
\n" +
+ '\n' +
+ 'Per chiudere un menu aperto, un sottomenu aperto o un menu a comparsa aperto, premere il tasto ESC.
\n' +
+ '\n' +
+ "Se lo stato attivo corrente si trova nella parte superiore di una particolare sezione dell'interfaccia utente, premendo il tasto ESC si esce\n" +
+ ' completamente dalla navigazione tramite tastiera.
\n' +
+ '\n' +
+ 'Eseguire una voce di menu o un pulsante della barra degli strumenti
\n' +
+ '\n' +
+ 'Quando la voce di menu o il pulsante della barra degli strumenti desiderati sono evidenziati, premere il tasto diritorno a capo, il tasto Invio\n' +
+ ' o la barra spaziatrice per eseguirli.
\n' +
+ '\n' +
+ 'Navigare nelle finestre di dialogo non a schede
\n' +
+ '\n' +
+ "Nelle finestre di dialogo non a schede, all'apertura della finestra di dialogo diventa attivo il primo componente interattivo.
\n" +
+ '\n' +
+ 'Per spostarsi tra i componenti interattivi della finestra di dialogo, premere TAB o MAIUSC+TAB.
\n' +
+ '\n' +
+ 'Navigare nelle finestre di dialogo a schede
\n' +
+ '\n' +
+ "Nelle finestre di dialogo a schede, all'apertura della finestra di dialogo diventa attivo il primo pulsante del menu della scheda.
\n" +
+ '\n' +
+ 'Per spostarsi tra i componenti interattivi di questa scheda della finestra di dialogo, premere TAB o\n' +
+ ' MAIUSC+TAB.
\n' +
+ '\n' +
+ "Per passare a un'altra scheda della finestra di dialogo, attivare il menu della scheda e premere il tasto freccia\n" +
+ ' appropriato per scorrere le schede disponibili.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/ja.js b/public/tinymce/plugins/help/js/i18n/keynav/ja.js
new file mode 100644
index 00000000..827d840c
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/ja.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.ja',
+ 'キーボード ナビゲーションの開始
\n' +
+ '\n' +
+ '\n' +
+ ' - メニュー バーをフォーカス
\n' +
+ ' - Windows または Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - ツール バーをフォーカス
\n' +
+ ' - Windows または Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - フッターをフォーカス
\n' +
+ ' - Windows または Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - 通知にフォーカス
\n' +
+ ' - Windows または Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - コンテキスト ツール バーをフォーカス
\n' +
+ ' - Windows、Linux または macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'ナビゲーションは最初の UI 項目から開始され、強調表示されるか、フッターの要素パスにある最初の項目の場合は\n' +
+ ' 下線が引かれます。
\n' +
+ '\n' +
+ 'UI セクション間の移動
\n' +
+ '\n' +
+ '次の UI セクションに移動するには、Tab を押します。
\n' +
+ '\n' +
+ '前の UI セクションに移動するには、Shift+Tab を押します。
\n' +
+ '\n' +
+ 'これらの UI セクションの Tab の順序:
\n' +
+ '\n' +
+ '\n' +
+ ' - メニュー バー
\n' +
+ ' - 各ツール バー グループ
\n' +
+ ' - サイド バー
\n' +
+ ' - フッターの要素パス
\n' +
+ ' - フッターの単語数切り替えボタン
\n' +
+ ' - フッターのブランド リンク
\n' +
+ ' - フッターのエディター サイズ変更ハンドル
\n' +
+ '
\n' +
+ '\n' +
+ 'UI セクションが存在しない場合は、スキップされます。
\n' +
+ '\n' +
+ 'フッターにキーボード ナビゲーション フォーカスがあり、表示可能なサイド バーがない場合、Shift+Tab を押すと、\n' +
+ ' フォーカスが最後ではなく最初のツール バー グループに移動します。
\n' +
+ '\n' +
+ 'UI セクション内の移動
\n' +
+ '\n' +
+ '次の UI 要素に移動するには、適切な矢印キーを押します。
\n' +
+ '\n' +
+ '左矢印と右矢印のキー
\n' +
+ '\n' +
+ '\n' +
+ ' - メニュー バーのメニュー間で移動します。
\n' +
+ ' - メニュー内のサブメニューを開きます。
\n' +
+ ' - ツール バー グループのボタン間で移動します。
\n' +
+ ' - フッターの要素パスの項目間で移動します。
\n' +
+ '
\n' +
+ '\n' +
+ '下矢印と上矢印のキー
\n' +
+ '\n' +
+ '\n' +
+ ' - メニュー内のメニュー項目間で移動します。
\n' +
+ ' - ツール バー ポップアップ メニュー内のメニュー項目間で移動します。
\n' +
+ '
\n' +
+ '\n' +
+ '矢印キーで、フォーカスされた UI セクション内で循環します。
\n' +
+ '\n' +
+ '開いたメニュー、開いたサブメニュー、開いたポップアップ メニューを閉じるには、Esc キーを押します。
\n' +
+ '\n' +
+ '現在のフォーカスが特定の UI セクションの「一番上」にある場合、Esc キーを押すと\n' +
+ ' キーボード ナビゲーションも完全に閉じられます。
\n' +
+ '\n' +
+ 'メニュー項目またはツール バー ボタンの実行
\n' +
+ '\n' +
+ '目的のメニュー項目やツール バー ボタンが強調表示されている場合、リターン、Enter、\n' +
+ ' またはスペース キーを押して項目を実行します。
\n' +
+ '\n' +
+ 'タブのないダイアログの移動
\n' +
+ '\n' +
+ 'タブのないダイアログでは、ダイアログが開くと最初の対話型コンポーネントがフォーカスされます。
\n' +
+ '\n' +
+ 'Tab または Shift+Tab を押して、対話型ダイアログ コンポーネント間で移動します。
\n' +
+ '\n' +
+ 'タブ付きダイアログの移動
\n' +
+ '\n' +
+ 'タブ付きダイアログでは、ダイアログが開くとタブ メニューの最初のボタンがフォーカスされます。
\n' +
+ '\n' +
+ 'Tab または\n' +
+ ' Shift+Tab を押して、このダイアログ タブの対話型コンポーネント間で移動します。
\n' +
+ '\n' +
+ 'タブ メニューをフォーカスしてから適切な矢印キーを押して表示可能なタブを循環して、\n' +
+ ' 別のダイアログに切り替えます。
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/kk.js b/public/tinymce/plugins/help/js/i18n/keynav/kk.js
new file mode 100644
index 00000000..944abaf2
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/kk.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.kk',
+ 'Пернетақта навигациясын бастау
\n' +
+ '\n' +
+ '\n' +
+ ' - Мәзір жолағын фокустау
\n' +
+ ' - Windows немесе Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Құралдар тақтасын фокустау
\n' +
+ ' - Windows немесе Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Төменгі деректемені фокустау
\n' +
+ ' - Windows немесе Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Хабарландыруды белгілеу
\n' +
+ ' - Windows немесе Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Мәтінмәндік құралдар тақтасын фокустау
\n' +
+ ' - Windows, Linux немесе macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Навигация бөлектелетін немесе Төменгі деректеме элементінің жолындағы бірінші элемент жағдайында асты сызылатын\n' +
+ ' бірінші ПИ элементінен басталады.
\n' +
+ '\n' +
+ 'ПИ бөлімдері арасында навигациялау
\n' +
+ '\n' +
+ 'Бір ПИ бөлімінен келесісіне өту үшін Tab пернесін басыңыз.
\n' +
+ '\n' +
+ 'Бір ПИ бөлімінен алдыңғысына өту үшін Shift+Tab пернесін басыңыз.
\n' +
+ '\n' +
+ 'Осы ПИ бөлімдерінің Tab реті:
\n' +
+ '\n' +
+ '\n' +
+ ' - Мәзір жолағы
\n' +
+ ' - Әрбір құралдар тақтасы тобы
\n' +
+ ' - Бүйірлік жолақ
\n' +
+ ' - Төменгі деректемедегі элемент жолы
\n' +
+ ' - Төменгі деректемедегі сөздер санын ауыстыру түймесі
\n' +
+ ' - Төменгі деректемедегі брендингтік сілтеме
\n' +
+ ' - Төменгі деректемедегі редактор өлшемін өзгерту тұтқасы
\n' +
+ '
\n' +
+ '\n' +
+ 'ПИ бөлімі көрсетілмесе, ол өткізіп жіберіледі.
\n' +
+ '\n' +
+ 'Төменгі деректемеде пернетақта навигациясының фокусы болса және бүйірлік жолақ көрінбесе, Shift+Tab тіркесімін басу әрекеті\n' +
+ ' фокусты соңғысы емес, бірінші құралдар тақтасы тобына жылжытады.
\n' +
+ '\n' +
+ 'ПИ бөлімдерінде навигациялау
\n' +
+ '\n' +
+ 'Бір ПИ элементінен келесісіне өту үшін Arrow (Көрсеткі) пернесін басыңыз.
\n' +
+ '\n' +
+ 'Left (Сол жақ) және Right (Оң жақ) көрсеткі пернелері
\n' +
+ '\n' +
+ '\n' +
+ ' - мәзір жолағындағы мәзірлер арасында жылжыту.
\n' +
+ ' - мәзірде ішкі мәзірді ашу.
\n' +
+ ' - құралдар тақтасы тобындағы түймелер арасында жылжыту.
\n' +
+ ' - төменгі деректеме элементінің жолындағы элементтер арасында жылжыту.
\n' +
+ '
\n' +
+ '\n' +
+ 'Down (Төмен) және Up (Жоғары) көрсеткі пернелері
\n' +
+ '\n' +
+ '\n' +
+ ' - мәзірдегі мәзір элементтері арасында жылжыту.
\n' +
+ ' - құралдар тақтасының ашылмалы мәзіріндегі мәзір элементтері арасында жылжыту.
\n' +
+ '
\n' +
+ '\n' +
+ 'Фокусталған ПИ бөліміндегі Arrow (Көрсеткі) пернелерінің циклі.
\n' +
+ '\n' +
+ 'Ашық мәзірді жабу үшін ішкі мәзірді ашып немесе ашылмалы мәзірді ашып, Esc пернесін басыңыз.
\n' +
+ '\n' +
+ 'Ағымдағы фокус белгілі бір ПИ бөлімінің «үстінде» болса, Esc пернесін басу әрекеті пернетақта\n' +
+ ' навигациясын толығымен жабады.
\n' +
+ '\n' +
+ 'Мәзір элементін немесе құралдар тақтасы түймесін орындау
\n' +
+ '\n' +
+ 'Қажетті мәзір элементі немесе құралдар тақтасы түймесі бөлектелген кезде, элементті орындау үшін Return (Қайтару), Enter (Енгізу)\n' +
+ ' немесе Space bar (Бос орын) пернесін басыңыз.
\n' +
+ '\n' +
+ 'Белгіленбеген диалог терезелерін навигациялау
\n' +
+ '\n' +
+ 'Белгіленбеген диалог терезелерінде диалог терезесі ашылған кезде бірінші интерактивті құрамдас фокусталады.
\n' +
+ '\n' +
+ 'Tab немесе Shift+Tab пернесін басу арқылы интерактивті диалог терезесінің құрамдастары арасында навигациялаңыз.
\n' +
+ '\n' +
+ 'Белгіленген диалог терезелерін навигациялау
\n' +
+ '\n' +
+ 'Белгіленген диалог терезелерінде диалог терезесі ашылған кезде қойынды мәзіріндегі бірінші түйме фокусталады.
\n' +
+ '\n' +
+ 'Tab немесе\n' +
+ ' Shift+Tab пернесін басу арқылы осы диалог терезесі қойындысының интерактивті құрамдастары арасында навигациялаңыз.
\n' +
+ '\n' +
+ 'Қойынды мәзірінің фокусын беру арқылы басқа диалог терезесінің қойындысына ауысып, тиісті Arrow (Көрсеткі)\n' +
+ ' пернесін басу арқылы қолжетімді қойындылар арасында айналдыруға болады.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/ko_KR.js b/public/tinymce/plugins/help/js/i18n/keynav/ko_KR.js
new file mode 100644
index 00000000..8a94df86
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/ko_KR.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.ko_KR',
+ '키보드 탐색 시작
\n' +
+ '\n' +
+ '\n' +
+ ' - 메뉴 모음 포커스 표시
\n' +
+ ' - Windows 또는 Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - 도구 모음 포커스 표시
\n' +
+ ' - Windows 또는 Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - 푸터 포커스 표시
\n' +
+ ' - Windows 또는 Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - 알림 포커스
\n' +
+ ' - Windows 또는 Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - 컨텍스트 도구 모음에 포커스 표시
\n' +
+ ' - Windows, Linux 또는 macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ '첫 번째 UI 항목에서 탐색이 시작되며, 이때 첫 번째 항목이 강조 표시되거나 푸터 요소 경로에 있는\n' +
+ ' 경우 밑줄 표시됩니다.
\n' +
+ '\n' +
+ 'UI 섹션 간 탐색
\n' +
+ '\n' +
+ '한 UI 섹션에서 다음 UI 섹션으로 이동하려면 Tab(탭)을 누릅니다.
\n' +
+ '\n' +
+ '한 UI 섹션에서 이전 UI 섹션으로 돌아가려면 Shift+Tab(시프트+탭)을 누릅니다.
\n' +
+ '\n' +
+ '이 UI 섹션의 Tab(탭) 순서는 다음과 같습니다.
\n' +
+ '\n' +
+ '\n' +
+ ' - 메뉴 바
\n' +
+ ' - 각 도구 모음 그룹
\n' +
+ ' - 사이드바
\n' +
+ ' - 푸터의 요소 경로
\n' +
+ ' - 푸터의 단어 수 토글 버튼
\n' +
+ ' - 푸터의 브랜딩 링크
\n' +
+ ' - 푸터의 에디터 크기 변경 핸들
\n' +
+ '
\n' +
+ '\n' +
+ 'UI 섹션이 없는 경우 건너뛰기합니다.
\n' +
+ '\n' +
+ '푸터에 키보드 탐색 포커스가 있고 사이드바는 보이지 않는 경우 Shift+Tab(시프트+탭)을 누르면\n' +
+ ' 포커스 표시가 마지막이 아닌 첫 번째 도구 모음 그룹으로 이동합니다.
\n' +
+ '\n' +
+ 'UI 섹션 내 탐색
\n' +
+ '\n' +
+ '한 UI 요소에서 다음 UI 요소로 이동하려면 적절한 화살표 키를 누릅니다.
\n' +
+ '\n' +
+ '왼쪽과 오른쪽 화살표 키의 용도:
\n' +
+ '\n' +
+ '\n' +
+ ' - 메뉴 모음에서 메뉴 항목 사이를 이동합니다.
\n' +
+ ' - 메뉴에서 하위 메뉴를 엽니다.
\n' +
+ ' - 도구 모음 그룹에서 버튼 사이를 이동합니다.
\n' +
+ ' - 푸터의 요소 경로에서 항목 간에 이동합니다.
\n' +
+ '
\n' +
+ '\n' +
+ '아래와 위 화살표 키의 용도:
\n' +
+ '\n' +
+ '\n' +
+ ' - 메뉴에서 메뉴 항목 사이를 이동합니다.
\n' +
+ ' - 도구 모음 팝업 메뉴에서 메뉴 항목 사이를 이동합니다.
\n' +
+ '
\n' +
+ '\n' +
+ '화살표 키는 포커스 표시 UI 섹션 내에서 순환됩니다.
\n' +
+ '\n' +
+ '열려 있는 메뉴, 열려 있는 하위 메뉴 또는 열려 있는 팝업 메뉴를 닫으려면 Esc 키를 누릅니다.
\n' +
+ '\n' +
+ "현재 포커스 표시가 특정 UI 섹션 '상단'에 있는 경우 이때도 Esc 키를 누르면\n" +
+ ' 키보드 탐색이 완전히 종료됩니다.
\n' +
+ '\n' +
+ '메뉴 항목 또는 도구 모음 버튼 실행
\n' +
+ '\n' +
+ '원하는 메뉴 항목 또는 도구 모음 버튼이 강조 표시되어 있을 때 Return(리턴), Enter(엔터),\n' +
+ ' 또는 Space bar(스페이스바)를 눌러 해당 항목을 실행합니다.
\n' +
+ '\n' +
+ '탭이 없는 대화 탐색
\n' +
+ '\n' +
+ '탭이 없는 대화의 경우, 첫 번째 대화형 요소가 포커스 표시된 상태로 대화가 열립니다.
\n' +
+ '\n' +
+ '대화형 요소들 사이를 이동할 때는 Tab(탭) 또는 Shift+Tab(시프트+탭)을 누릅니다.
\n' +
+ '\n' +
+ '탭이 있는 대화 탐색
\n' +
+ '\n' +
+ '탭이 있는 대화의 경우, 탭 메뉴에서 첫 번째 버튼이 포커스 표시된 상태로 대화가 열립니다.
\n' +
+ '\n' +
+ '이 대화 탭의 대화형 요소들 사이를 이동할 때는 Tab(탭) 또는\n' +
+ ' Shift+Tab(시프트+탭)을 누릅니다.
\n' +
+ '\n' +
+ '다른 대화 탭으로 이동하려면 탭 메뉴를 포커스 표시한 다음 적절한 화살표\n' +
+ ' 키를 눌러 사용 가능한 탭들을 지나 원하는 탭으로 이동합니다.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/ms.js b/public/tinymce/plugins/help/js/i18n/keynav/ms.js
new file mode 100644
index 00000000..825c4f8d
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/ms.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.ms',
+ 'Mulakan navigasi papan kekunci
\n' +
+ '\n' +
+ '\n' +
+ ' - Fokus bar Menu
\n' +
+ ' - Windows atau Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Fokus Bar Alat
\n' +
+ ' - Windows atau Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Fokus pengaki
\n' +
+ ' - Windows atau Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Tumpu kepada pemberitahuan
\n' +
+ ' - Windows atau Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Fokus bar alat kontekstual
\n' +
+ ' - Windows, Linux atau macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigasi akan bermula pada item UI pertama, yang akan diserlahkan atau digaris bawah dalam saiz item pertama dalam\n' +
+ ' laluan elemen Pengaki.
\n' +
+ '\n' +
+ 'Navigasi antara bahagian UI
\n' +
+ '\n' +
+ 'Untuk bergerak dari satu bahagian UI ke yang seterusnya, tekan Tab.
\n' +
+ '\n' +
+ 'Untuk bergerak dari satu bahagian UI ke yang sebelumnya, tekan Shift+Tab.
\n' +
+ '\n' +
+ 'Tertib Tab bahagian UI ini ialah:
\n' +
+ '\n' +
+ '\n' +
+ ' - Bar menu
\n' +
+ ' - Setiap kumpulan bar alat
\n' +
+ ' - Bar sisi
\n' +
+ ' - Laluan elemen dalam pengaki
\n' +
+ ' - Butang togol kiraan perkataan dalam pengaki
\n' +
+ ' - Pautan penjenamaan dalam pengaki
\n' +
+ ' - Pemegang saiz semula editor dalam pengaki
\n' +
+ '
\n' +
+ '\n' +
+ 'Jika bahagian UI tidak wujud, ia dilangkau.
\n' +
+ '\n' +
+ 'Jika pengaki mempunyai fokus navigasi papan kekunci dan tiada bar sisi kelihatan, menekan Shift+Tab\n' +
+ ' akan mengalihkan fokus ke kumpulan bar alat pertama, bukannya yang terakhir.
\n' +
+ '\n' +
+ 'Navigasi dalam bahagian UI
\n' +
+ '\n' +
+ 'Untuk bergerak dari satu elemen UI ke yang seterusnya, tekan kekunci Anak Panah yang bersesuaian.
\n' +
+ '\n' +
+ 'Kekunci anak panah Kiri dan Kanan
\n' +
+ '\n' +
+ '\n' +
+ ' - bergerak antara menu dalam bar menu.
\n' +
+ ' - membukan submenu dalam menu.
\n' +
+ ' - bergerak antara butang dalam kumpulan bar alat.
\n' +
+ ' - Laluan elemen dalam pengaki.
\n' +
+ '
\n' +
+ '\n' +
+ 'Kekunci anak panah Bawah dan Atas
\n' +
+ '\n' +
+ '\n' +
+ ' - bergerak antara item menu dalam menu.
\n' +
+ ' - bergerak antara item dalam menu timbul bar alat.
\n' +
+ '
\n' +
+ '\n' +
+ 'Kekunci Anak Panah berkitar dalam bahagian UI difokuskan.
\n' +
+ '\n' +
+ 'Untuk menutup menu buka, submenu terbuka atau menu timbul terbuka, tekan kekunci Esc.
\n' +
+ '\n' +
+ "Jika fokus semasa berada di bahagian 'atas' bahagian UI tertentu, menekan kekunci Esc juga akan keluar daripada\n" +
+ ' navigasi papan kekunci sepenuhnya.
\n' +
+ '\n' +
+ 'Laksanakan item menu atau butang bar alat
\n' +
+ '\n' +
+ 'Apabila item menu atau butang bar alat yang diinginkan diserlahkan, tekan Return, Enter,\n' +
+ ' atau bar Space untuk melaksanakan item.
\n' +
+ '\n' +
+ 'Navigasi ke dialog tidak bertab
\n' +
+ '\n' +
+ 'Dalam dialog tidak bertab, komponen interaksi pertama difokuskan apabila dialog dibuka.
\n' +
+ '\n' +
+ 'Navigasi antara komponen dialog interaktif dengan menekan Tab atau Shift+Tab.
\n' +
+ '\n' +
+ 'Navigasi ke dialog bertab
\n' +
+ '\n' +
+ 'Dalam dialog bertab, butang pertama dalam menu tab difokuskan apabila dialog dibuka.
\n' +
+ '\n' +
+ 'Navigasi antara komponen interaktif tab dialog ini dengan menekan Tab atau\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Tukar kepada tab dialog lain dengan memfokuskan menu tab, kemudian menekan kekunci Anak Panah yang bersesuaian\n' +
+ ' untuk berkitar menerusi tab yang tersedia.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/nb_NO.js b/public/tinymce/plugins/help/js/i18n/keynav/nb_NO.js
new file mode 100644
index 00000000..0fa396ac
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/nb_NO.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.nb_NO',
+ 'Starte tastaturnavigering
\n' +
+ '\n' +
+ '\n' +
+ ' - Utheve menylinjen
\n' +
+ ' - Windows eller Linux: Alt + F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Utheve verktøylinjen
\n' +
+ ' - Windows eller Linux: Alt + F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Utheve bunnteksten
\n' +
+ ' - Windows eller Linux: Alt + F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Fokuser på varselet
\n' +
+ ' - Windows eller Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Utheve en kontekstuell verktøylinje
\n' +
+ ' - Windows, Linux eller macOS: Ctrl + F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigeringen starter ved det første grensesnittelementet, som utheves, eller understrekes når det gjelder det første elementet i\n' +
+ ' elementstien i bunnteksten.
\n' +
+ '\n' +
+ 'Navigere mellom grensesnittdeler
\n' +
+ '\n' +
+ 'Du kan bevege deg fra én grensesnittdel til den neste ved å trykke på tabulatortasten.
\n' +
+ '\n' +
+ 'Du kan bevege deg fra én grensesnittdel til den forrige ved å trykke på Shift + tabulatortasten.
\n' +
+ '\n' +
+ 'Rekkefølgen til tabulatortasten gjennom grensesnittdelene er:
\n' +
+ '\n' +
+ '\n' +
+ ' - Menylinjen
\n' +
+ ' - Hver gruppe på verktøylinjen
\n' +
+ ' - Sidestolpen
\n' +
+ ' - Elementstien i bunnteksten
\n' +
+ ' - Veksleknappen for ordantall i bunnteksten
\n' +
+ ' - Merkelenken i bunnteksten
\n' +
+ ' - Skaleringshåndtaket for redigeringsprogrammet i bunnteksten
\n' +
+ '
\n' +
+ '\n' +
+ 'Hvis en grensesnittdel ikke er til stede, blir den hoppet over.
\n' +
+ '\n' +
+ 'Hvis tastaturnavigeringen har uthevet bunnteksten og det ikke finnes en synlig sidestolpe, kan du trykke på Shift + tabulatortasten\n' +
+ ' for å flytte fokuset til den første gruppen på verktøylinjen i stedet for den siste.
\n' +
+ '\n' +
+ 'Navigere innenfor grensesnittdeler
\n' +
+ '\n' +
+ 'Du kan bevege deg fra ett grensesnittelement til det neste ved å trykke på den aktuelle piltasten.
\n' +
+ '\n' +
+ 'De venstre og høyre piltastene
\n' +
+ '\n' +
+ '\n' +
+ ' - beveger deg mellom menyer på menylinjen.
\n' +
+ ' - åpner en undermeny i en meny.
\n' +
+ ' - beveger deg mellom knapper i en gruppe på verktøylinjen.
\n' +
+ ' - beveger deg mellom elementer i elementstien i bunnteksten.
\n' +
+ '
\n' +
+ '\n' +
+ 'Ned- og opp-piltastene
\n' +
+ '\n' +
+ '\n' +
+ ' - beveger deg mellom menyelementer i en meny.
\n' +
+ ' - beveger deg mellom elementer i en hurtigmeny på verktøylinjen.
\n' +
+ '
\n' +
+ '\n' +
+ 'Med piltastene kan du bevege deg innenfor den uthevede grensesnittdelen.
\n' +
+ '\n' +
+ 'Du kan lukke en åpen meny, en åpen undermeny eller en åpen hurtigmeny ved å klikke på Esc-tasten.
\n' +
+ '\n' +
+ 'Hvis det øverste nivået i en grensesnittdel er uthevet, kan du ved å trykke på Esc også avslutte\n' +
+ ' tastaturnavigeringen helt.
\n' +
+ '\n' +
+ 'Utføre et menyelement eller en knapp på en verktøylinje
\n' +
+ '\n' +
+ 'Når det ønskede menyelementet eller verktøylinjeknappen er uthevet, trykker du på Retur, Enter,\n' +
+ ' eller mellomromstasten for å utføre elementet.
\n' +
+ '\n' +
+ 'Navigere i dialogbokser uten faner
\n' +
+ '\n' +
+ 'I dialogbokser uten faner blir den første interaktive komponenten uthevet når dialogboksen åpnes.
\n' +
+ '\n' +
+ 'Naviger mellom interaktive komponenter i dialogboksen ved å trykke på tabulatortasten eller Shift + tabulatortasten.
\n' +
+ '\n' +
+ 'Navigere i fanebaserte dialogbokser
\n' +
+ '\n' +
+ 'I fanebaserte dialogbokser blir den første knappen i fanemenyen uthevet når dialogboksen åpnes.
\n' +
+ '\n' +
+ 'Naviger mellom interaktive komponenter i fanen ved å trykke på tabulatortasten eller\n' +
+ ' Shift + tabulatortasten.
\n' +
+ '\n' +
+ 'Veksle til en annen fane i dialogboksen ved å utheve fanemenyen, og trykk deretter på den aktuelle piltasten\n' +
+ ' for å bevege deg mellom de tilgjengelige fanene.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/nl.js b/public/tinymce/plugins/help/js/i18n/keynav/nl.js
new file mode 100644
index 00000000..e8ec50c6
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/nl.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.nl',
+ 'Toetsenbordnavigatie starten
\n' +
+ '\n' +
+ '\n' +
+ ' - Focus op de menubalk instellen
\n' +
+ ' - Windows of Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Focus op de werkbalk instellen
\n' +
+ ' - Windows of Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Focus op de voettekst instellen
\n' +
+ ' - Windows of Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Focus op de melding instellen
\n' +
+ ' - Windows of Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Focus op een contextuele werkbalk instellen
\n' +
+ ' - Windows, Linux of macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'De navigatie start bij het eerste UI-item, dat wordt gemarkeerd of onderstreept als het eerste item zich in\n' +
+ ' in het elementenpad van de voettekst bevindt.
\n' +
+ '\n' +
+ 'Navigeren tussen UI-secties
\n' +
+ '\n' +
+ 'Druk op Tab om naar de volgende UI-sectie te gaan.
\n' +
+ '\n' +
+ 'Druk op Shift+Tab om naar de vorige UI-sectie te gaan.
\n' +
+ '\n' +
+ 'De Tab-volgorde van deze UI-secties is:
\n' +
+ '\n' +
+ '\n' +
+ ' - Menubalk
\n' +
+ ' - Elke werkbalkgroep
\n' +
+ ' - Zijbalk
\n' +
+ ' - Elementenpad in de voettekst
\n' +
+ ' - Wisselknop voor aantal woorden in de voettekst
\n' +
+ ' - Merkkoppeling in de voettekst
\n' +
+ ' - Greep voor het wijzigen van het formaat van de editor in de voettekst
\n' +
+ '
\n' +
+ '\n' +
+ 'Als een UI-sectie niet aanwezig is, wordt deze overgeslagen.
\n' +
+ '\n' +
+ 'Als de focus van de toetsenbordnavigatie is ingesteld op de voettekst en er geen zichtbare zijbalk is, kun je op Shift+Tab drukken\n' +
+ ' om de focus naar de eerste werkbalkgroep in plaats van de laatste te verplaatsen.
\n' +
+ '\n' +
+ 'Navigeren binnen UI-secties
\n' +
+ '\n' +
+ 'Druk op de pijltjestoets om naar het betreffende UI-element te gaan.
\n' +
+ '\n' +
+ 'Met de pijltjestoetsen Links en Rechts
\n' +
+ '\n' +
+ '\n' +
+ " - wissel je tussen menu's in de menubalk.
\n" +
+ ' - open je een submenu in een menu.
\n' +
+ ' - wissel je tussen knoppen in een werkbalkgroep.
\n' +
+ ' - wissel je tussen items in het elementenpad in de voettekst.
\n' +
+ '
\n' +
+ '\n' +
+ 'Met de pijltjestoetsen Omlaag en Omhoog
\n' +
+ '\n' +
+ '\n' +
+ ' - wissel je tussen menu-items in een menu.
\n' +
+ ' - wissel je tussen items in een werkbalkpop-upmenu.
\n' +
+ '
\n' +
+ '\n' +
+ 'Met de pijltjestoetsen wissel je binnen de UI-sectie waarop de focus is ingesteld.
\n' +
+ '\n' +
+ 'Druk op de toets Esc om een geopend menu, submenu of pop-upmenu te sluiten.
\n' +
+ '\n' +
+ "Als de huidige focus is ingesteld 'bovenaan' een bepaalde UI-sectie, kun je op de toets Esc drukken\n" +
+ ' om de toetsenbordnavigatie af te sluiten.
\n' +
+ '\n' +
+ 'Een menu-item of werkbalkknop uitvoeren
\n' +
+ '\n' +
+ 'Als het gewenste menu-item of de gewenste werkbalkknop is gemarkeerd, kun je op Return, Enter\n' +
+ ' of de spatiebalk drukken om het item uit te voeren.
\n' +
+ '\n' +
+ 'Navigeren in dialoogvensters zonder tabblad
\n' +
+ '\n' +
+ 'Als een dialoogvenster zonder tabblad wordt geopend, wordt de focus ingesteld op het eerste interactieve onderdeel.
\n' +
+ '\n' +
+ 'Je kunt navigeren tussen interactieve onderdelen van een dialoogvenster door op Tab of Shift+Tab te drukken.
\n' +
+ '\n' +
+ 'Navigeren in dialoogvensters met tabblad
\n' +
+ '\n' +
+ 'Als een dialoogvenster met tabblad wordt geopend, wordt de focus ingesteld op de eerste knop in het tabbladmenu.
\n' +
+ '\n' +
+ 'Je kunt navigeren tussen interactieve onderdelen van dit tabblad van het dialoogvenster door op Tab of\n' +
+ ' Shift+Tab te drukken.
\n' +
+ '\n' +
+ 'Je kunt overschakelen naar een ander tabblad van het dialoogvenster door de focus in te stellen op het tabbladmenu en vervolgens op de juiste pijltjestoets\n' +
+ ' te drukken om tussen de beschikbare tabbladen te wisselen.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/pl.js b/public/tinymce/plugins/help/js/i18n/keynav/pl.js
new file mode 100644
index 00000000..9a139d84
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/pl.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.pl',
+ 'Początek nawigacji przy użyciu klawiatury
\n' +
+ '\n' +
+ '\n' +
+ ' - Ustaw fokus na pasek menu
\n' +
+ ' - Windows lub Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Ustaw fokus na pasek narzędzi
\n' +
+ ' - Windows lub Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Ustaw fokus na sekcję Footer
\n' +
+ ' - Windows lub Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Skup się na powiadomieniu
\n' +
+ ' - Windows lub Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Ustaw fokus na kontekstowy pasek narzędzi
\n' +
+ ' - Windows, Linux lub macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Nawigacja zostanie rozpoczęta od pierwszego elementu interfejsu użytkownika, który jest podświetlony lub — w przypadku pierwszego elementu\n' +
+ ' w ścieżce elementów w sekcji Footer — podkreślony.
\n' +
+ '\n' +
+ 'Nawigacja pomiędzy sekcjami interfejsu użytkownika
\n' +
+ '\n' +
+ 'Aby przenieść się z danej sekcji interfejsu użytkownika do następnej, naciśnij Tab.
\n' +
+ '\n' +
+ 'Aby przenieść się z danej sekcji interfejsu użytkownika do poprzedniej, naciśnij Shift+Tab.
\n' +
+ '\n' +
+ 'Kolejność klawisza Tab w takich sekcjach interfejsu użytkownika jest następująca:
\n' +
+ '\n' +
+ '\n' +
+ ' - Pasek menu
\n' +
+ ' - Każda grupa na pasku narzędzi
\n' +
+ ' - Pasek boczny
\n' +
+ ' - Ścieżka elementów w sekcji Footer
\n' +
+ ' - Przycisk przełączania liczby słów w sekcji Footer
\n' +
+ ' - Łącze brandujące w sekcji Footer
\n' +
+ ' - Uchwyt zmiany rozmiaru edytora w sekcji Footer
\n' +
+ '
\n' +
+ '\n' +
+ 'Jeżeli nie ma sekcji interfejsu użytkownika, jest to pomijane.
\n' +
+ '\n' +
+ 'Jeżeli na sekcji Footer jest ustawiony fokus nawigacji przy użyciu klawiatury i nie ma widocznego paska bocznego, naciśnięcie Shift+Tab\n' +
+ ' przenosi fokus na pierwszą grupę paska narzędzi, a nie na ostatnią.
\n' +
+ '\n' +
+ 'Nawigacja wewnątrz sekcji interfejsu użytkownika
\n' +
+ '\n' +
+ 'Aby przenieść się z danego elementu interfejsu użytkownika do następnego, naciśnij odpowiedni klawisz strzałki.
\n' +
+ '\n' +
+ 'Klawisze strzałek w prawo i w lewo służą do
\n' +
+ '\n' +
+ '\n' +
+ ' - przenoszenia się pomiędzy menu na pasku menu,
\n' +
+ ' - otwarcia podmenu w menu,
\n' +
+ ' - przenoszenia się pomiędzy przyciskami w grupie paska narzędzi,
\n' +
+ ' - przenoszenia się pomiędzy elementami w ścieżce elementów w sekcji Footer.
\n' +
+ '
\n' +
+ '\n' +
+ 'Klawisze strzałek w dół i w górę służą do
\n' +
+ '\n' +
+ '\n' +
+ ' - przenoszenia się pomiędzy elementami menu w menu,
\n' +
+ ' - przenoszenia się pomiędzy elementami w wyskakującym menu paska narzędzi.
\n' +
+ '
\n' +
+ '\n' +
+ 'Klawisze strzałek służą do przemieszczania się w sekcji interfejsu użytkownika z ustawionym fokusem.
\n' +
+ '\n' +
+ 'Aby zamknąć otwarte menu, otwarte podmenu lub otwarte menu wyskakujące, naciśnij klawisz Esc.
\n' +
+ '\n' +
+ 'Jeżeli fokus jest ustawiony na górze konkretnej sekcji interfejsu użytkownika, naciśnięcie klawisza Esc powoduje wyjście\n' +
+ ' z nawigacji przy użyciu klawiatury.
\n' +
+ '\n' +
+ 'Wykonanie elementu menu lub przycisku paska narzędzi
\n' +
+ '\n' +
+ 'Gdy podświetlony jest żądany element menu lub przycisk paska narzędzi, naciśnij klawisz Return, Enter\n' +
+ ' lub Spacja, aby go wykonać.
\n' +
+ '\n' +
+ 'Nawigacja po oknie dialogowym bez kart
\n' +
+ '\n' +
+ 'Gdy otwiera się okno dialogowe bez kart, fokus ustawiany jest na pierwszą interaktywną część okna.
\n' +
+ '\n' +
+ 'Pomiędzy interaktywnymi częściami okna dialogowego nawiguj, naciskając klawisze Tab lub Shift+Tab.
\n' +
+ '\n' +
+ 'Nawigacja po oknie dialogowym z kartami
\n' +
+ '\n' +
+ 'W przypadku okna dialogowego z kartami po otwarciu okna dialogowego fokus ustawiany jest na pierwszy przycisk w menu karty.
\n' +
+ '\n' +
+ 'Nawigację pomiędzy interaktywnymi częściami karty okna dialogowego prowadzi się poprzez naciskanie klawiszy Tab lub\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Przełączenie się na inną kartę okna dialogowego wykonuje się poprzez ustawienie fokusu na menu karty i naciśnięcie odpowiedniego klawisza strzałki\n' +
+ ' w celu przemieszczenia się pomiędzy dostępnymi kartami.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/pt_BR.js b/public/tinymce/plugins/help/js/i18n/keynav/pt_BR.js
new file mode 100644
index 00000000..56192485
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/pt_BR.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.pt_BR',
+ 'Iniciar navegação pelo teclado
\n' +
+ '\n' +
+ '\n' +
+ ' - Foco na barra de menus
\n' +
+ ' - Windows ou Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Foco na barra de ferramentas
\n' +
+ ' - Windows ou Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Foco no rodapé
\n' +
+ ' - Windows ou Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Foco na notificação
\n' +
+ ' - Windows ou Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Foco na barra de ferramentas contextual
\n' +
+ ' - Windows, Linux ou macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'A navegação inicia no primeiro item da IU, que será destacado ou sublinhado no caso do primeiro item no\n' +
+ ' caminho do elemento Rodapé.
\n' +
+ '\n' +
+ 'Navegar entre seções da IU
\n' +
+ '\n' +
+ 'Para ir de uma seção da IU para a seguinte, pressione Tab.
\n' +
+ '\n' +
+ 'Para ir de uma seção da IU para a anterior, pressione Shift+Tab.
\n' +
+ '\n' +
+ 'A ordem de Tab destas seções da IU é:
\n' +
+ '\n' +
+ '\n' +
+ ' - Barra de menus
\n' +
+ ' - Cada grupo da barra de ferramentas
\n' +
+ ' - Barra lateral
\n' +
+ ' - Caminho do elemento no rodapé
\n' +
+ ' - Botão de alternar contagem de palavras no rodapé
\n' +
+ ' - Link da marca no rodapé
\n' +
+ ' - Alça de redimensionamento do editor no rodapé
\n' +
+ '
\n' +
+ '\n' +
+ 'Se não houver uma seção da IU, ela será pulada.
\n' +
+ '\n' +
+ 'Se o rodapé tiver o foco da navegação pelo teclado e não houver uma barra lateral visível, pressionar Shift+Tab\n' +
+ ' move o foco para o primeiro grupo da barra de ferramentas, não para o último.
\n' +
+ '\n' +
+ 'Navegar dentro das seções da IU
\n' +
+ '\n' +
+ 'Para ir de um elemento da IU para o seguinte, pressione a Seta correspondente.
\n' +
+ '\n' +
+ 'As teclas de seta Esquerda e Direita
\n' +
+ '\n' +
+ '\n' +
+ ' - movem entre menus na barra de menus.
\n' +
+ ' - abrem um submenu em um menu.
\n' +
+ ' - movem entre botões em um grupo da barra de ferramentas.
\n' +
+ ' - movem entre itens no caminho do elemento do rodapé.
\n' +
+ '
\n' +
+ '\n' +
+ 'As teclas de seta Abaixo e Acima
\n' +
+ '\n' +
+ '\n' +
+ ' - movem entre itens de menu em um menu.
\n' +
+ ' - movem entre itens em um menu suspenso da barra de ferramentas.
\n' +
+ '
\n' +
+ '\n' +
+ 'As teclas de Seta alternam dentre a seção da IU em foco.
\n' +
+ '\n' +
+ 'Para fechar um menu aberto, um submenu aberto ou um menu suspenso aberto, pressione Esc.
\n' +
+ '\n' +
+ 'Se o foco atual estiver no ‘alto’ de determinada seção da IU, pressionar Esc também sai\n' +
+ ' totalmente da navegação pelo teclado.
\n' +
+ '\n' +
+ 'Executar um item de menu ou botão da barra de ferramentas
\n' +
+ '\n' +
+ 'Com o item de menu ou botão da barra de ferramentas desejado destacado, pressione Return, Enter,\n' +
+ ' ou a Barra de espaço para executar o item.
\n' +
+ '\n' +
+ 'Navegar por caixas de diálogo sem guias
\n' +
+ '\n' +
+ 'Em caixas de diálogo sem guias, o primeiro componente interativo recebe o foco quando a caixa de diálogo abre.
\n' +
+ '\n' +
+ 'Navegue entre componentes interativos de caixa de diálogo pressionando Tab ou Shift+Tab.
\n' +
+ '\n' +
+ 'Navegar por caixas de diálogo com guias
\n' +
+ '\n' +
+ 'Em caixas de diálogo com guias, o primeiro botão no menu da guia recebe o foco quando a caixa de diálogo abre.
\n' +
+ '\n' +
+ 'Navegue entre componentes interativos dessa guia da caixa de diálogo pressionando Tab ou\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Alterne para outra guia da caixa de diálogo colocando o foco no menu da guia e pressionando a Seta\n' +
+ ' adequada para percorrer as guias disponíveis.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/pt_PT.js b/public/tinymce/plugins/help/js/i18n/keynav/pt_PT.js
new file mode 100644
index 00000000..c3c5ed9a
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/pt_PT.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.pt_PT',
+ 'Iniciar navegação com teclado
\n' +
+ '\n' +
+ '\n' +
+ ' - Foco na barra de menu
\n' +
+ ' - Windows ou Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Foco na barra de ferramentas
\n' +
+ ' - Windows ou Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Foco no rodapé
\n' +
+ ' - Windows ou Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Focar a notificação
\n' +
+ ' - Windows ou Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Foco numa barra de ferramentas contextual
\n' +
+ ' - Windows, Linux ou macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'A navegação começará no primeiro item de IU, que estará realçado ou sublinhado, no caso do primeiro item no\n' +
+ ' caminho do elemento do rodapé.
\n' +
+ '\n' +
+ 'Navegar entre secções de IU
\n' +
+ '\n' +
+ 'Para se mover de uma secção de IU para a seguinte, prima Tab.
\n' +
+ '\n' +
+ 'Para se mover de uma secção de IU para a anterior, prima Shift+Tab.
\n' +
+ '\n' +
+ 'A ordem de tabulação destas secções de IU é:
\n' +
+ '\n' +
+ '\n' +
+ ' - Barra de menu
\n' +
+ ' - Cada grupo da barra de ferramentas
\n' +
+ ' - Barra lateral
\n' +
+ ' - Caminho do elemento no rodapé
\n' +
+ ' - Botão de alternar da contagem de palavras no rodapé
\n' +
+ ' - Ligação da marca no rodapé
\n' +
+ ' - Alça de redimensionamento do editor no rodapé
\n' +
+ '
\n' +
+ '\n' +
+ 'Se uma secção de IU não estiver presente, é ignorada.
\n' +
+ '\n' +
+ 'Se o rodapé tiver foco de navegação com teclado e não existir uma barra lateral visível, premir Shift+Tab\n' +
+ ' move o foco para o primeiro grupo da barra de ferramentas e não para o último.
\n' +
+ '\n' +
+ 'Navegar nas secções de IU
\n' +
+ '\n' +
+ 'Para se mover de um elemento de IU para o seguinte, prima a tecla de seta adequada.
\n' +
+ '\n' +
+ 'As teclas de seta Para a esquerda e Para a direita
\n' +
+ '\n' +
+ '\n' +
+ ' - movem-se entre menus na barra de menu.
\n' +
+ ' - abrem um submenu num menu.
\n' +
+ ' - movem-se entre botões num grupo da barra de ferramentas.
\n' +
+ ' - movem-se entre itens no caminho do elemento do rodapé.
\n' +
+ '
\n' +
+ '\n' +
+ 'As teclas de seta Para cima e Para baixo
\n' +
+ '\n' +
+ '\n' +
+ ' - movem-se entre itens de menu num menu.
\n' +
+ ' - movem-se entre itens num menu de pop-up da barra de ferramentas.
\n' +
+ '
\n' +
+ '\n' +
+ 'As teclas de seta deslocam-se ciclicamente na secção de IU em foco.
\n' +
+ '\n' +
+ 'Para fechar um menu aberto, um submenu aberto ou um menu de pop-up aberto, prima a tecla Esc.
\n' +
+ '\n' +
+ 'Se o foco atual estiver no "topo" de determinada secção de IU, premir a tecla Esc também fecha\n' +
+ ' completamente a navegação com teclado.
\n' +
+ '\n' +
+ 'Executar um item de menu ou botão da barra de ferramentas
\n' +
+ '\n' +
+ 'Quando o item de menu ou o botão da barra de ferramentas pretendido estiver realçado, prima Retrocesso, Enter\n' +
+ ' ou a Barra de espaço para executar o item.
\n' +
+ '\n' +
+ 'Navegar em diálogos sem separadores
\n' +
+ '\n' +
+ 'Nos diálogos sem separadores, o primeiro componente interativo fica em foco quando o diálogo abre.
\n' +
+ '\n' +
+ 'Navegue entre componentes interativos do diálogo, premindo Tab ou Shift+Tab.
\n' +
+ '\n' +
+ 'Navegar em diálogos com separadores
\n' +
+ '\n' +
+ 'Nos diálogos com separadores, o primeiro botão no menu do separador fica em foco quando o diálogo abre.
\n' +
+ '\n' +
+ 'Navegue entre os componentes interativos deste separador do diálogo, premindo Tab ou\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Mude para outro separador do diálogo colocando o menu do separador em foco e, em seguida, premindo a tecla de seta\n' +
+ ' adequada para se deslocar ciclicamente pelos separadores disponíveis.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/ro.js b/public/tinymce/plugins/help/js/i18n/keynav/ro.js
new file mode 100644
index 00000000..a3594dec
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/ro.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.ro',
+ 'Începeți navigarea de la tastatură
\n' +
+ '\n' +
+ '\n' +
+ ' - Focalizare pe bara de meniu
\n' +
+ ' - Windows sau Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Focalizare pe bara de instrumente
\n' +
+ ' - Windows sau Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Focalizare pe subsol
\n' +
+ ' - Windows sau Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Focalizare pe notificare
\n' +
+ ' - Windows sau Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Focalizare pe o bară de instrumente contextuală
\n' +
+ ' - Windows, Linux sau macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigarea va începe de la primul element al interfeței cu utilizatorul, care va fi evidențiat sau subliniat în cazul primului element din\n' +
+ ' calea elementului Subsol.
\n' +
+ '\n' +
+ 'Navigați între secțiunile interfeței cu utilizatorul
\n' +
+ '\n' +
+ 'Pentru a trece de la o secțiune a interfeței cu utilizatorul la alta, apăsați Tab.
\n' +
+ '\n' +
+ 'Pentru a trece de la o secțiune a interfeței cu utilizatorul la cea anterioară, apăsați Shift+Tab.
\n' +
+ '\n' +
+ 'Ordinea cu Tab a acestor secțiuni ale interfeței cu utilizatorul este următoarea:
\n' +
+ '\n' +
+ '\n' +
+ ' - Bara de meniu
\n' +
+ ' - Fiecare grup de bare de instrumente
\n' +
+ ' - Bara laterală
\n' +
+ ' - Calea elementului în subsol
\n' +
+ ' - Buton de comutare a numărului de cuvinte în subsol
\n' +
+ ' - Link de branding în subsol
\n' +
+ ' - Mâner de redimensionare a editorului în subsol
\n' +
+ '
\n' +
+ '\n' +
+ 'În cazul în care o secțiune a interfeței cu utilizatorul nu este prezentă, aceasta este omisă.
\n' +
+ '\n' +
+ 'În cazul în care subsolul are focalizarea navigației asupra tastaturii și nu există o bară laterală vizibilă, apăsarea butonului Shift+Tab\n' +
+ ' mută focalizarea pe primul grup de bare de instrumente, nu pe ultimul.
\n' +
+ '\n' +
+ 'Navigați în secțiunile interfeței cu utilizatorul
\n' +
+ '\n' +
+ 'Pentru a trece de la un element de interfață cu utilizatorul la următorul, apăsați tasta cu săgeata corespunzătoare.
\n' +
+ '\n' +
+ 'Tastele cu săgeți către stânga și dreapta
\n' +
+ '\n' +
+ '\n' +
+ ' - navighează între meniurile din bara de meniuri.
\n' +
+ ' - deschid un sub-meniu dintr-un meniu.
\n' +
+ ' - navighează între butoanele dintr-un grup de bare de instrumente.
\n' +
+ ' - navighează între elementele din calea elementelor subsolului.
\n' +
+ '
\n' +
+ '\n' +
+ 'Tastele cu săgeți în sus și în jos
\n' +
+ '\n' +
+ '\n' +
+ ' - navighează între elementele de meniu dintr-un meniu.
\n' +
+ ' - navighează între elementele unui meniu pop-up din bara de instrumente.
\n' +
+ '
\n' +
+ '\n' +
+ 'Tastele cu săgeți navighează în cadrul secțiunii interfeței cu utilizatorul asupra căreia se focalizează.
\n' +
+ '\n' +
+ 'Pentru a închide un meniu deschis, un sub-meniu deschis sau un meniu pop-up deschis, apăsați tasta Esc.
\n' +
+ '\n' +
+ 'Dacă focalizarea curentă este asupra „părții superioare” a unei anumite secțiuni a interfeței cu utilizatorul, prin apăsarea tastei Esc se iese, de asemenea,\n' +
+ ' în întregime din navigarea de la tastatură.
\n' +
+ '\n' +
+ 'Executarea unui element de meniu sau a unui buton din bara de instrumente
\n' +
+ '\n' +
+ 'Atunci când elementul de meniu dorit sau butonul dorit din bara de instrumente este evidențiat, apăsați Return, Enter,\n' +
+ ' sau bara de spațiu pentru a executa elementul.
\n' +
+ '\n' +
+ 'Navigarea de dialoguri fără file
\n' +
+ '\n' +
+ 'În dialogurile fără file, prima componentă interactivă beneficiază de focalizare la deschiderea dialogului.
\n' +
+ '\n' +
+ 'Navigați între componentele dialogului interactiv apăsând Tab sau Shift+Tab.
\n' +
+ '\n' +
+ 'Navigarea de dialoguri cu file
\n' +
+ '\n' +
+ 'În dialogurile cu file, primul buton din meniul cu file beneficiază de focalizare la deschiderea dialogului.
\n' +
+ '\n' +
+ 'Navigați între componentele interactive ale acestei file de dialog apăsând Tab sau\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Treceți la o altă filă de dialog focalizând asupra meniului cu file și apoi apăsând săgeata corespunzătoare\n' +
+ ' pentru a parcurge filele disponibile.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/ru.js b/public/tinymce/plugins/help/js/i18n/keynav/ru.js
new file mode 100644
index 00000000..f07a2034
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/ru.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.ru',
+ 'Начните управление с помощью клавиатуры
\n' +
+ '\n' +
+ '\n' +
+ ' - Фокус на панели меню
\n' +
+ ' - Windows или Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Фокус на панели инструментов
\n' +
+ ' - Windows или Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Фокус на нижнем колонтитуле
\n' +
+ ' - Windows или Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Фокус на уведомлении
\n' +
+ ' - Windows или Linux: Alt+12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Фокус на контекстной панели инструментов
\n' +
+ ' - Windows, Linux или macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Первый доступный для управления элемент интерфейса будет выделен цветом или подчеркнут (если он находится\n' +
+ ' в пути элементов нижнего колонтитула).
\n' +
+ '\n' +
+ 'Переход между разделами пользовательского интерфейса
\n' +
+ '\n' +
+ 'Чтобы перейти из текущего раздела интерфейса в следующий, нажмите Tab.
\n' +
+ '\n' +
+ 'Чтобы перейти из текущего раздела интерфейса в предыдущий, нажмите Shift+Tab.
\n' +
+ '\n' +
+ 'Вкладки разделов интерфейса расположены в следующем порядке:
\n' +
+ '\n' +
+ '\n' +
+ ' - Панель меню
\n' +
+ ' - Группы панели инструментов
\n' +
+ ' - Боковая панель
\n' +
+ ' - Путь элементов нижнего колонтитула
\n' +
+ ' - Подсчет слов/символов в нижнем колонтитуле
\n' +
+ ' - Брендовая ссылка в нижнем колонтитуле
\n' +
+ ' - Угол для изменения размера окна редактора
\n' +
+ '
\n' +
+ '\n' +
+ 'Если раздел интерфейса отсутствует, он пропускается.
\n' +
+ '\n' +
+ 'Если при управлении с клавиатуры фокус находится на нижнем колонтитуле, а видимая боковая панель отсутствует, то при нажатии сочетания клавиш Shift+Tab\n' +
+ ' фокус переносится на первую группу панели инструментов, а не на последнюю.
\n' +
+ '\n' +
+ 'Переход между элементами внутри разделов пользовательского интерфейса
\n' +
+ '\n' +
+ 'Чтобы перейти от текущего элемента интерфейса к следующему, нажмите соответствующую клавишу со стрелкой.
\n' +
+ '\n' +
+ 'Клавиши со стрелками влево и вправо позволяют
\n' +
+ '\n' +
+ '\n' +
+ ' - перемещаться между разными меню в панели меню.
\n' +
+ ' - открывать разделы меню.
\n' +
+ ' - перемещаться между кнопками в группе панели инструментов.
\n' +
+ ' - перемещаться между элементами в пути элементов нижнего колонтитула.
\n' +
+ '
\n' +
+ '\n' +
+ 'Клавиши со стрелками вниз и вверх позволяют
\n' +
+ '\n' +
+ '\n' +
+ ' - перемещаться между элементами одного меню.
\n' +
+ ' - перемещаться между элементами всплывающего меню в панели инструментов.
\n' +
+ '
\n' +
+ '\n' +
+ 'При использовании клавиш со стрелками вы будете циклически перемещаться по элементам в пределах выбранного раздела интерфейса.
\n' +
+ '\n' +
+ 'Чтобы закрыть открытое меню, его раздел или всплывающее меню, нажмите клавишу Esc.
\n' +
+ '\n' +
+ 'Если фокус находится наверху какого-либо раздела интерфейса, нажатие клавиши Esc также приведет\n' +
+ ' к выходу из режима управления с помощью клавиатуры.
\n' +
+ '\n' +
+ 'Использование элемента меню или кнопки на панели инструментов
\n' +
+ '\n' +
+ 'Когда элемент меню или кнопка панели инструментов будут выделены, нажмите Return, Enter\n' +
+ ' или Space, чтобы их активировать.
\n' +
+ '\n' +
+ 'Управление в диалоговом окне без вкладок
\n' +
+ '\n' +
+ 'При открытии диалогового окна без вкладок фокус переносится на первый интерактивный компонент.
\n' +
+ '\n' +
+ 'Для перехода между интерактивными компонентами диалогового окна нажимайте Tab или Shift+Tab.
\n' +
+ '\n' +
+ 'Управление в диалоговом окне с вкладками
\n' +
+ '\n' +
+ 'При открытии диалогового окна с вкладками фокус переносится на первую кнопку в меню вкладок.
\n' +
+ '\n' +
+ 'Для перехода между интерактивными компонентами этой вкладки диалогового окна нажимайте Tab или\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Для перехода на другую вкладку диалогового окна переместите фокус на меню вкладок, а затем используйте клавиши со стрелками\n' +
+ ' для циклического переключения между доступными вкладками.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/sk.js b/public/tinymce/plugins/help/js/i18n/keynav/sk.js
new file mode 100644
index 00000000..97c4ece3
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/sk.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.sk',
+ 'Začíname s navigáciou pomocou klávesnice
\n' +
+ '\n' +
+ '\n' +
+ ' - Prejsť na panel s ponukami
\n' +
+ ' - Windows alebo Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Prejsť na panel nástrojov
\n' +
+ ' - Windows alebo Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Prejsť na pätičku
\n' +
+ ' - Windows alebo Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Zaostriť na oznámenie
\n' +
+ ' - Windows alebo Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Prejsť na kontextový panel nástrojov
\n' +
+ ' - Windows, Linux alebo macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigácia začne pri prvej položke používateľského rozhrania, ktorá bude zvýraznená alebo v prípade prvej položky\n' +
+ ' cesty k pätičke podčiarknutá.
\n' +
+ '\n' +
+ 'Navigácia medzi časťami používateľského rozhrania
\n' +
+ '\n' +
+ 'Ak sa chcete posunúť z jednej časti používateľského rozhrania do druhej, stlačte tlačidlo Tab.
\n' +
+ '\n' +
+ 'Ak sa chcete posunúť z jednej časti používateľského rozhrania do predchádzajúcej, stlačte tlačidlá Shift + Tab.
\n' +
+ '\n' +
+ 'Poradie prepínania medzi týmito časťami používateľského rozhrania pri stláčaní tlačidla Tab:
\n' +
+ '\n' +
+ '\n' +
+ ' - Panel s ponukou
\n' +
+ ' - Každá skupina panela nástrojov
\n' +
+ ' - Bočný panel
\n' +
+ ' - Cesta k prvku v pätičke
\n' +
+ ' - Prepínač počtu slov v pätičke
\n' +
+ ' - Odkaz na informácie o značke v pätičke
\n' +
+ ' - Úchyt na zmenu veľkosti editora v pätičke
\n' +
+ '
\n' +
+ '\n' +
+ 'Ak nejaká časť používateľského rozhrania nie je prítomná, preskočí sa.
\n' +
+ '\n' +
+ 'Ak je pätička vybratá na navigáciu pomocou klávesnice a nie je viditeľný bočný panel, stlačením klávesov Shift+Tab\n' +
+ ' prejdete na prvú skupinu panela nástrojov, nie na poslednú.
\n' +
+ '\n' +
+ 'Navigácia v rámci častí používateľského rozhrania
\n' +
+ '\n' +
+ 'Ak sa chcete posunúť z jedného prvku používateľského rozhrania na ďalší, stlačte príslušný kláves so šípkou.
\n' +
+ '\n' +
+ 'Klávesy so šípkami doľava a doprava
\n' +
+ '\n' +
+ '\n' +
+ ' - umožňujú presun medzi ponukami na paneli ponúk,
\n' +
+ ' - otvárajú podponuku v rámci ponuky,
\n' +
+ ' - umožňujú presun medzi tlačidlami v skupine panelov nástrojov,
\n' +
+ ' - umožňujú presun medzi položkami cesty prvku v pätičke.
\n' +
+ '
\n' +
+ '\n' +
+ 'Klávesy so šípkami dole a hore
\n' +
+ '\n' +
+ '\n' +
+ ' - umožňujú presun medzi položkami ponuky,
\n' +
+ ' - umožňujú presun medzi položkami v kontextovej ponuke panela nástrojov.
\n' +
+ '
\n' +
+ '\n' +
+ 'Klávesy so šípkami vykonávajú prepínanie v rámci vybranej časti používateľského rozhrania.
\n' +
+ '\n' +
+ 'Ak chcete zatvoriť otvorenú ponuku, otvorenú podponuku alebo otvorenú kontextovú ponuku, stlačte kláves Esc.
\n' +
+ '\n' +
+ 'Ak je aktuálne vybratá horná časť konkrétneho používateľského rozhrania, stlačením klávesu Esc úplne ukončíte tiež\n' +
+ ' navigáciu pomocou klávesnice.
\n' +
+ '\n' +
+ 'Vykonanie príkazu položky ponuky alebo tlačidla panela nástrojov
\n' +
+ '\n' +
+ 'Keď je zvýraznená požadovaná položka ponuky alebo tlačidlo panela nástrojov, stlačením klávesov Return, Enter\n' +
+ ' alebo medzerníka vykonáte príslušný príkaz položky.
\n' +
+ '\n' +
+ 'Navigácia v dialógových oknách bez záložiek
\n' +
+ '\n' +
+ 'Pri otvorení dialógových okien bez záložiek prejdete na prvý interaktívny komponent.
\n' +
+ '\n' +
+ 'Medzi interaktívnymi dialógovými komponentmi môžete prechádzať stlačením klávesov Tab alebo Shift+Tab.
\n' +
+ '\n' +
+ 'Navigácia v dialógových oknách so záložkami
\n' +
+ '\n' +
+ 'Pri otvorení dialógových okien so záložkami prejdete na prvé tlačidlo v ponuke záložiek.
\n' +
+ '\n' +
+ 'Medzi interaktívnymi komponentmi tejto dialógovej záložky môžete prechádzať stlačením klávesov Tab alebo\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Ak chcete prepnúť na ďalšiu záložku dialógového okna, prejdite do ponuky záložiek a potom môžete stlačením príslušného klávesu so šípkou\n' +
+ ' prepínať medzi dostupnými záložkami.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/sl_SI.js b/public/tinymce/plugins/help/js/i18n/keynav/sl_SI.js
new file mode 100644
index 00000000..768f7f7d
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/sl_SI.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.sl_SI',
+ 'Začetek krmarjenja s tipkovnico
\n' +
+ '\n' +
+ '\n' +
+ ' - Fokus na menijsko vrstico
\n' +
+ ' - Windows ali Linux: Alt + F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Fokus na orodno vrstico
\n' +
+ ' - Windows ali Linux: Alt + F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Fokus na nogo
\n' +
+ ' - Windows ali Linux: Alt + F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Označitev obvestila
\n' +
+ ' - Windows ali Linux: Alt + F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Fokus na kontekstualno orodno vrstico
\n' +
+ ' - Windows, Linux ali macOS: Ctrl + F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Krmarjenje se bo začelo s prvim elementom uporabniškega vmesnika, ki bo izpostavljena ali podčrtan, če gre za prvi element na\n' +
+ ' poti do elementa noge.
\n' +
+ '\n' +
+ 'Krmarjenje med razdelki uporabniškega vmesnika
\n' +
+ '\n' +
+ 'Če se želite pomakniti z enega dela uporabniškega vmesnika na naslednjega, pritisnite tabulatorko.
\n' +
+ '\n' +
+ 'Če se želite pomakniti z enega dela uporabniškega vmesnika na prejšnjega, pritisnite shift + tabulatorko.
\n' +
+ '\n' +
+ 'Zaporedje teh razdelkov uporabniškega vmesnika, ko pritiskate tabulatorko, je:
\n' +
+ '\n' +
+ '\n' +
+ ' - Menijska vrstica
\n' +
+ ' - Posamezne skupine orodne vrstice
\n' +
+ ' - Stranska vrstica
\n' +
+ ' - Pod do elementa v nogi
\n' +
+ ' - Gumb za preklop štetja besed v nogi
\n' +
+ ' - Povezava do blagovne znamke v nogi
\n' +
+ ' - Ročaj za spreminjanje velikosti urejevalnika v nogi
\n' +
+ '
\n' +
+ '\n' +
+ 'Če razdelek uporabniškega vmesnika ni prisoten, je preskočen.
\n' +
+ '\n' +
+ 'Če ima noga fokus za krmarjenje s tipkovnico in ni vidne stranske vrstice, s pritiskom na shift + tabulatorko\n' +
+ ' fokus premaknete na prvo skupino orodne vrstice, ne zadnjo.
\n' +
+ '\n' +
+ 'Krmarjenje v razdelkih uporabniškega vmesnika
\n' +
+ '\n' +
+ 'Če se želite premakniti z enega elementa uporabniškega vmesnika na naslednjega, pritisnite ustrezno puščično tipko.
\n' +
+ '\n' +
+ 'Leva in desna puščična tipka
\n' +
+ '\n' +
+ '\n' +
+ ' - omogočata premikanje med meniji v menijski vrstici.
\n' +
+ ' - odpreta podmeni v meniju.
\n' +
+ ' - omogočata premikanje med gumbi v skupini orodne vrstice.
\n' +
+ ' - omogočata premikanje med elementi na poti do elementov noge.
\n' +
+ '
\n' +
+ '\n' +
+ 'Spodnja in zgornja puščična tipka
\n' +
+ '\n' +
+ '\n' +
+ ' - omogočata premikanje med elementi menija.
\n' +
+ ' - omogočata premikanje med elementi v pojavnem meniju orodne vrstice.
\n' +
+ '
\n' +
+ '\n' +
+ 'Puščične tipke omogočajo kroženje znotraj razdelka uporabniškega vmesnika, na katerem je fokus.
\n' +
+ '\n' +
+ 'Če želite zapreti odprt meni, podmeni ali pojavni meni, pritisnite tipko Esc.
\n' +
+ '\n' +
+ 'Če je trenutni fokus na »vrhu« določenega razdelka uporabniškega vmesnika, s pritiskom tipke Esc zaprete\n' +
+ ' tudi celotno krmarjenje s tipkovnico.
\n' +
+ '\n' +
+ 'Izvajanje menijskega elementa ali gumba orodne vrstice
\n' +
+ '\n' +
+ 'Ko je označen želeni menijski element ali orodja vrstica, pritisnite vračalko, Enter\n' +
+ ' ali preslednico, da izvedete element.
\n' +
+ '\n' +
+ 'Krmarjenje po pogovornih oknih brez zavihkov
\n' +
+ '\n' +
+ 'Ko odprete pogovorno okno brez zavihkov, ima fokus prva interaktivna komponenta.
\n' +
+ '\n' +
+ 'Med interaktivnimi komponentami pogovornega okna se premikate s pritiskom tabulatorke ali kombinacije tipke shift + tabulatorke.
\n' +
+ '\n' +
+ 'Krmarjenje po pogovornih oknih z zavihki
\n' +
+ '\n' +
+ 'Ko odprete pogovorno okno z zavihki, ima fokus prvi gumb v meniju zavihka.
\n' +
+ '\n' +
+ 'Med interaktivnimi komponentami tega zavihka pogovornega okna se premikate s pritiskom tabulatorke ali\n' +
+ ' kombinacije tipke shift + tabulatorke.
\n' +
+ '\n' +
+ 'Na drug zavihek pogovornega okna preklopite tako, da fokus prestavite na meni zavihka in nato pritisnete ustrezno puščično\n' +
+ ' tipko, da se pomaknete med razpoložljivimi zavihki.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/sv_SE.js b/public/tinymce/plugins/help/js/i18n/keynav/sv_SE.js
new file mode 100644
index 00000000..26878dd1
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/sv_SE.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.sv_SE',
+ 'Påbörja tangentbordsnavigering
\n' +
+ '\n' +
+ '\n' +
+ ' - Fokusera på menyraden
\n' +
+ ' - Windows eller Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Fokusera på verktygsraden
\n' +
+ ' - Windows eller Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Fokusera på verktygsraden
\n' +
+ ' - Windows eller Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Fokusera aviseringen
\n' +
+ ' - Windows eller Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Fokusera på en snabbverktygsrad
\n' +
+ ' - Windows, Linux eller macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Navigeringen börjar vid det första gränssnittsobjektet, vilket är markerat eller understruket om det gäller det första objektet i\n' +
+ ' sidfotens elementsökväg.
\n' +
+ '\n' +
+ 'Navigera mellan UI-avsnitt
\n' +
+ '\n' +
+ 'Flytta från ett UI-avsnitt till nästa genom att trycka på Tabb.
\n' +
+ '\n' +
+ 'Flytta från ett UI-avsnitt till det föregående genom att trycka på Skift+Tabb.
\n' +
+ '\n' +
+ 'Tabb-ordningen för dessa UI-avsnitt är:
\n' +
+ '\n' +
+ '\n' +
+ ' - Menyrad
\n' +
+ ' - Varje verktygsradsgrupp
\n' +
+ ' - Sidoruta
\n' +
+ ' - Elementsökväg i sidfoten
\n' +
+ ' - Växlingsknapp för ordantal i sidfoten
\n' +
+ ' - Varumärkeslänk i sidfoten
\n' +
+ ' - Storlekshandtag för redigeraren i sidfoten
\n' +
+ '
\n' +
+ '\n' +
+ 'Om ett UI-avsnitt inte finns hoppas det över.
\n' +
+ '\n' +
+ 'Om sidfoten har fokus på tangentbordsnavigering, och det inte finns någon synlig sidoruta, flyttas fokus till den första verktygsradsgruppen\n' +
+ ' när du trycker på Skift+Tabb, inte till den sista.
\n' +
+ '\n' +
+ 'Navigera i UI-avsnitt
\n' +
+ '\n' +
+ 'Flytta från ett UI-element till nästa genom att trycka på motsvarande piltangent.
\n' +
+ '\n' +
+ 'Vänsterpil och högerpil
\n' +
+ '\n' +
+ '\n' +
+ ' - flytta mellan menyer på menyraden.
\n' +
+ ' - öppna en undermeny på en meny.
\n' +
+ ' - flytta mellan knappar i en verktygsradgrupp.
\n' +
+ ' - flytta mellan objekt i sidfotens elementsökväg.
\n' +
+ '
\n' +
+ '\n' +
+ 'Nedpil och uppil
\n' +
+ '\n' +
+ '\n' +
+ ' - flytta mellan menyalternativ på en meny.
\n' +
+ ' - flytta mellan alternativ på en popup-meny på verktygsraden.
\n' +
+ '
\n' +
+ '\n' +
+ 'Piltangenterna cirkulerar inom det fokuserade UI-avsnittet.
\n' +
+ '\n' +
+ 'Tryck på Esc-tangenten om du vill stänga en öppen meny, undermeny eller popup-meny.
\n' +
+ '\n' +
+ 'Om det aktuella fokuset är högst upp i ett UI-avsnitt avlutas även tangentbordsnavigeringen helt när\n' +
+ ' du trycker på Esc-tangenten.
\n' +
+ '\n' +
+ 'Köra ett menyalternativ eller en verktygfältsknapp
\n' +
+ '\n' +
+ 'När menyalternativet eller verktygsradsknappen är markerad trycker du på Retur, Enter\n' +
+ ' eller blanksteg för att köra alternativet.
\n' +
+ '\n' +
+ 'Navigera i dialogrutor utan flikar
\n' +
+ '\n' +
+ 'I dialogrutor utan flikar är den första interaktiva komponenten i fokus när dialogrutan öppnas.
\n' +
+ '\n' +
+ 'Navigera mellan interaktiva dialogkomponenter genom att trycka på Tabb eller Skift+Tabb.
\n' +
+ '\n' +
+ 'Navigera i dialogrutor med flikar
\n' +
+ '\n' +
+ 'I dialogrutor utan flikar är den första knappen på flikmenyn i fokus när dialogrutan öppnas.
\n' +
+ '\n' +
+ 'Navigera mellan interaktiva komponenter på dialogrutefliken genom att trycka på Tabb eller\n' +
+ ' Skift+Tabb.
\n' +
+ '\n' +
+ 'Växla till en annan dialogruta genom att fokusera på flikmenyn och sedan trycka på motsvarande piltangent\n' +
+ ' för att cirkulera mellan de tillgängliga flikarna.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/th_TH.js b/public/tinymce/plugins/help/js/i18n/keynav/th_TH.js
new file mode 100644
index 00000000..d8a3bbd8
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/th_TH.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.th_TH',
+ 'เริ่มต้นการนำทางด้วยแป้นพิมพ์
\n' +
+ '\n' +
+ '\n' +
+ ' - โฟกัสที่แถบเมนู
\n' +
+ ' - Windows หรือ Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - โฟกัสที่แถบเครื่องมือ
\n' +
+ ' - Windows หรือ Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - โฟกัสที่ส่วนท้าย
\n' +
+ ' - Windows หรือ Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - โฟกัสไปที่การแจ้งเตือน
\n' +
+ ' - Windows หรือ Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - โฟกัสที่แถบเครื่องมือตามบริบท
\n' +
+ ' - Windows, Linux หรือ macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'การนำทางจะเริ่มที่รายการ UI แรก ซึ่งจะมีการไฮไลต์หรือขีดเส้นใต้ไว้ในกรณีที่รายการแรกอยู่ใน\n' +
+ ' พาธองค์ประกอบส่วนท้าย
\n' +
+ '\n' +
+ 'การนำทางระหว่างส่วนต่างๆ ของ UI
\n' +
+ '\n' +
+ 'ในการย้ายจากส่วน UI หนึ่งไปยังส่วนถัดไป ให้กด Tab
\n' +
+ '\n' +
+ 'ในการย้ายจากส่วน UI หนึ่งไปยังส่วนก่อนหน้า ให้กด Shift+Tab
\n' +
+ '\n' +
+ 'ลำดับแท็บของส่วนต่างๆ ของ UI คือ:
\n' +
+ '\n' +
+ '\n' +
+ ' - แถบเมนู
\n' +
+ ' - แต่ละกลุ่มแถบเครื่องมือ
\n' +
+ ' - แถบข้าง
\n' +
+ ' - พาธองค์ประกอบในส่วนท้าย
\n' +
+ ' - ปุ่มสลับเปิด/ปิดจำนวนคำในส่วนท้าย
\n' +
+ ' - ลิงก์ชื่อแบรนด์ในส่วนท้าย
\n' +
+ ' - จุดจับปรับขนาดของตัวแก้ไขในส่วนท้าย
\n' +
+ '
\n' +
+ '\n' +
+ 'หากส่วน UI ไม่ปรากฏ แสดงว่าถูกข้ามไป
\n' +
+ '\n' +
+ 'หากส่วนท้ายมีการโฟกัสการนำทางแป้นพิมพ์และไม่มีแถบข้างปรากฏ การกด Shift+Tab\n' +
+ ' จะย้ายการโฟกัสไปที่กลุ่มแถบเครื่องมือแรก ไม่ใช่สุดท้าย
\n' +
+ '\n' +
+ 'การนำทางภายในส่วนต่างๆ ของ UI
\n' +
+ '\n' +
+ 'ในการย้ายจากองค์ประกอบ UI หนึ่งไปยังองค์ประกอบส่วนถัดไป ให้กดปุ่มลูกศรที่เหมาะสม
\n' +
+ '\n' +
+ 'ปุ่มลูกศรซ้ายและขวา
\n' +
+ '\n' +
+ '\n' +
+ ' - ย้ายไปมาระหว่างเมนูต่างๆ ในแถบเมนู
\n' +
+ ' - เปิดเมนูย่อยในเมนู
\n' +
+ ' - ย้ายไปมาระหว่างปุ่มต่างๆ ในกลุ่มแถบเครื่องมือ
\n' +
+ ' - ย้ายไปมาระหว่างรายการต่างๆ ในพาธองค์ประกอบของส่วนท้าย
\n' +
+ '
\n' +
+ '\n' +
+ 'ปุ่มลูกศรลงและขึ้น
\n' +
+ '\n' +
+ '\n' +
+ ' - ย้ายไปมาระหว่างรายการเมนูต่างๆ ในเมนู
\n' +
+ ' - ย้ายไปมาระหว่างรายการต่างๆ ในเมนูป๊อบอัพแถบเครื่องมือ
\n' +
+ '
\n' +
+ '\n' +
+ 'ปุ่มลูกศรจะเลื่อนไปมาภายในส่วน UI ที่โฟกัส
\n' +
+ '\n' +
+ 'ในการปิดเมนูที่เปิดอยู่ เมนูย่อยที่เปิดอยู่ หรือเมนูป๊อบอัพที่เปิดอยู่ ให้กดปุ่ม Esc
\n' +
+ '\n' +
+ 'หากโฟกัสปัจจุบันอยู่ที่ ‘ด้านบนสุด’ ของส่วน UI เฉพาะ การกดปุ่ม Esc จะทำให้ออกจาก\n' +
+ ' การนำทางด้วยแป้นพิมพ์ทั้งหมดเช่นกัน
\n' +
+ '\n' +
+ 'การดำเนินการรายการเมนูหรือปุ่มในแถบเครื่องมือ
\n' +
+ '\n' +
+ 'เมื่อไฮไลต์รายการเมนูหรือปุ่มในแถบเครื่องมือที่ต้องการ ให้กด Return, Enter\n' +
+ ' หรือ Space bar เพื่อดำเนินการรายการดังกล่าว
\n' +
+ '\n' +
+ 'การนำทางสำหรับกล่องโต้ตอบที่ไม่อยู่ในแท็บ
\n' +
+ '\n' +
+ 'ในกล่องโต้ตอบที่ไม่อยู่ในแท็บ จะโฟกัสที่ส่วนประกอบเชิงโต้ตอบแรกเมื่อกล่องโต้ตอบเปิด
\n' +
+ '\n' +
+ 'นำทางระหว่างส่วนประกอบเชิงโต้ตอบต่างๆ ของกล่องโต้ตอบ โดยการกด Tab หรือ Shift+Tab
\n' +
+ '\n' +
+ 'การนำทางสำหรับกล่องโต้ตอบที่อยู่ในแท็บ
\n' +
+ '\n' +
+ 'ในกล่องโต้ตอบที่อยู่ในแท็บ จะโฟกัสที่ปุ่มแรกในเมนูแท็บเมื่อกล่องโต้ตอบเปิด
\n' +
+ '\n' +
+ 'นำทางระหว่างส่วนประกอบเชิงโต้ตอบต่างๆ ของแท็บกล่องโต้ตอบนี้โดยการกด Tab หรือ\n' +
+ ' Shift+Tab
\n' +
+ '\n' +
+ 'สลับไปยังแท็บกล่องโต้ตอบอื่นโดยการเลือกโฟกัสที่เมนูแท็บ แล้วกดปุ่มลูกศรที่เหมาะสม\n' +
+ ' เพื่อเลือกแท็บที่ใช้ได้
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/tr.js b/public/tinymce/plugins/help/js/i18n/keynav/tr.js
new file mode 100644
index 00000000..31d51c86
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/tr.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.tr',
+ 'Klavyeyle gezintiyi başlatma
\n' +
+ '\n' +
+ '\n' +
+ ' - Menü çubuğuna odaklan
\n' +
+ ' - Windows veya Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Araç çubuğuna odaklan
\n' +
+ ' - Windows veya Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Alt bilgiye odaklan
\n' +
+ ' - Windows veya Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Bildirime odakla
\n' +
+ ' - Windows veya Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Bağlamsal araç çubuğuna odaklan
\n' +
+ ' - Windows, Linux veya macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Gezinti ilk kullanıcı arabirimi öğesinden başlar, bu öğe vurgulanır ya da ilk öğe, Alt bilgi elemanı\n' +
+ ' yolundaysa altı çizilir.
\n' +
+ '\n' +
+ 'Kullanıcı arabirimi bölümleri arasında gezinme
\n' +
+ '\n' +
+ 'Sonraki kullanıcı arabirimi bölümüne gitmek için Sekme tuşuna basın.
\n' +
+ '\n' +
+ 'Önceki kullanıcı arabirimi bölümüne gitmek için Shift+Sekme tuşlarına basın.
\n' +
+ '\n' +
+ 'Bu kullanıcı arabirimi bölümlerinin Sekme sırası:
\n' +
+ '\n' +
+ '\n' +
+ ' - Menü çubuğu
\n' +
+ ' - Her araç çubuğu grubu
\n' +
+ ' - Kenar çubuğu
\n' +
+ ' - Alt bilgide öğe yolu
\n' +
+ ' - Alt bilgide sözcük sayısı geçiş düğmesi
\n' +
+ ' - Alt bilgide marka bağlantısı
\n' +
+ ' - Alt bilgide düzenleyiciyi yeniden boyutlandırma tutamacı
\n' +
+ '
\n' +
+ '\n' +
+ 'Kullanıcı arabirimi bölümü yoksa atlanır.
\n' +
+ '\n' +
+ 'Alt bilgide klavyeyle gezinti odağı yoksa ve görünür bir kenar çubuğu mevcut değilse Shift+Sekme tuşlarına basıldığında\n' +
+ ' odak son araç çubuğu yerine ilk araç çubuğu grubuna taşınır.
\n' +
+ '\n' +
+ 'Kullanıcı arabirimi bölümleri içinde gezinme
\n' +
+ '\n' +
+ 'Sonraki kullanıcı arabirimi elemanına gitmek için uygun Ok tuşuna basın.
\n' +
+ '\n' +
+ 'Sol ve Sağ ok tuşları
\n' +
+ '\n' +
+ '\n' +
+ ' - menü çubuğundaki menüler arasında hareket eder.
\n' +
+ ' - menüde bir alt menü açar.
\n' +
+ ' - araç çubuğu grubundaki düğmeler arasında hareket eder.
\n' +
+ ' - alt bilginin öğe yolundaki öğeler arasında hareket eder.
\n' +
+ '
\n' +
+ '\n' +
+ 'Aşağı ve Yukarı ok tuşları
\n' +
+ '\n' +
+ '\n' +
+ ' - menüdeki menü öğeleri arasında hareket eder.
\n' +
+ ' - araç çubuğu açılır menüsündeki öğeler arasında hareket eder.
\n' +
+ '
\n' +
+ '\n' +
+ 'Ok tuşları, odaklanılan kullanıcı arabirimi bölümü içinde döngüsel olarak hareket eder.
\n' +
+ '\n' +
+ 'Açık bir menüyü, açık bir alt menüyü veya açık bir açılır menüyü kapatmak için Esc tuşuna basın.
\n' +
+ '\n' +
+ 'Geçerli odak belirli bir kullanıcı arabirimi bölümünün "üst" kısmındaysa Esc tuşuna basıldığında\n' +
+ ' klavyeyle gezintiden de tamamen çıkılır.
\n' +
+ '\n' +
+ 'Menü öğesini veya araç çubuğu düğmesini yürütme
\n' +
+ '\n' +
+ 'İstediğiniz menü öğesi veya araç çubuğu düğmesi vurgulandığında Return, Enter\n' +
+ ' veya Ara çubuğu tuşuna basın.
\n' +
+ '\n' +
+ 'Sekme bulunmayan iletişim kutularında gezinme
\n' +
+ '\n' +
+ 'Sekme bulunmayan iletişim kutularında, iletişim kutusu açıldığında ilk etkileşimli bileşene odaklanılır.
\n' +
+ '\n' +
+ 'Etkileşimli iletişim kutusu bileşenleri arasında gezinmek için Sekme veya Shift+ Sekme tuşlarına basın.
\n' +
+ '\n' +
+ 'Sekmeli iletişim kutularında gezinme
\n' +
+ '\n' +
+ 'Sekmeli iletişim kutularında, iletişim kutusu açıldığında sekme menüsündeki ilk düğmeye odaklanılır.
\n' +
+ '\n' +
+ 'Bu iletişim kutusu sekmesinin etkileşimli bileşenleri arasında gezinmek için Sekme veya\n' +
+ ' Shift+Sekme tuşlarına basın.
\n' +
+ '\n' +
+ 'Mevcut sekmeler arasında geçiş yapmak için sekme menüsüne odaklanıp uygun Ok tuşuna basarak\n' +
+ ' başka bir iletişim kutusu sekmesine geçiş yapın.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/uk.js b/public/tinymce/plugins/help/js/i18n/keynav/uk.js
new file mode 100644
index 00000000..ba6945cf
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/uk.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.uk',
+ 'Початок роботи з навігацією за допомогою клавіатури
\n' +
+ '\n' +
+ '\n' +
+ ' - Фокус на рядок меню
\n' +
+ ' - Windows або Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Фокус на панелі інструментів
\n' +
+ ' - Windows або Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Фокус на розділі "Нижній колонтитул"
\n' +
+ ' - Windows або Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Фокус на сповіщення
\n' +
+ ' - Windows або Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Фокус на контекстній панелі інструментів
\n' +
+ ' - Windows, Linux або macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Навігація почнеться з першого елемента інтерфейсу користувача, який буде виділено або підкреслено в разі, якщо перший елемент знаходиться в\n' +
+ ' шляху до елемента "Нижній колонтитул".
\n' +
+ '\n' +
+ 'Навігація між розділами інтерфейсу користувача
\n' +
+ '\n' +
+ 'Щоб перейти з одного розділу інтерфейсу користувача до наступного розділу, натисніть клавішу Tab.
\n' +
+ '\n' +
+ 'Щоб перейти з одного розділу інтерфейсу користувача до попереднього розділу, натисніть сполучення клавіш Shift+Tab.
\n' +
+ '\n' +
+ 'Порядок Вкладок цих розділів інтерфейсу користувача такий:
\n' +
+ '\n' +
+ '\n' +
+ ' - Рядок меню
\n' +
+ ' - Кожна група панелей інструментів
\n' +
+ ' - Бічна панель
\n' +
+ ' - Шлях до елементів у розділі "Нижній колонтитул"
\n' +
+ ' - Кнопка перемикача "Кількість слів" у розділі "Нижній колонтитул"
\n' +
+ ' - Посилання на брендинг у розділі "Нижній колонтитул"
\n' +
+ ' - Маркер змінення розміру в розділі "Нижній колонтитул"
\n' +
+ '
\n' +
+ '\n' +
+ 'Якщо розділ інтерфейсу користувача відсутній, він пропускається.
\n' +
+ '\n' +
+ 'Якщо фокус навігації клавіатури знаходиться на розділі "Нижній колонтитул", але користувач не бачить видиму бічну панель, натисніть Shift+Tab,\n' +
+ ' щоб перемістити фокус на першу групу панелі інструментів, а не на останню.
\n' +
+ '\n' +
+ 'Навігація в межах розділів інтерфейсу користувача
\n' +
+ '\n' +
+ 'Щоб перейти з одного елементу інтерфейсу користувача до наступного, натисніть відповідну клавішу зі стрілкою.
\n' +
+ '\n' +
+ 'Клавіші зі стрілками Ліворуч і Праворуч
\n' +
+ '\n' +
+ '\n' +
+ ' - переміщують між меню в рядку меню.
\n' +
+ ' - відкривають вкладене меню в меню.
\n' +
+ ' - переміщують користувача між кнопками в групі панелі інструментів.
\n' +
+ ' - переміщують між елементами в шляху до елементів у розділі "Нижній колонтитул".
\n' +
+ '
\n' +
+ '\n' +
+ 'Клавіші зі стрілками Вниз і Вгору
\n' +
+ '\n' +
+ '\n' +
+ ' - переміщують між елементами меню в меню.
\n' +
+ ' - переміщують між елементами в спливаючому меню панелі інструментів.
\n' +
+ '
\n' +
+ '\n' +
+ 'Клавіші зі стрілками переміщують фокус циклічно в межах розділу інтерфейсу користувача, на якому знаходиться фокус.
\n' +
+ '\n' +
+ 'Щоб закрити відкрите меню, відкрите вкладене меню або відкрите спливаюче меню, натисніть клавішу Esc.
\n' +
+ '\n' +
+ 'Якщо поточний фокус знаходиться на верхньому рівні певного розділу інтерфейсу користувача, натискання клавіші Esc також виконує вихід\n' +
+ ' з навігації за допомогою клавіатури повністю.
\n' +
+ '\n' +
+ 'Виконання елементу меню або кнопки панелі інструментів
\n' +
+ '\n' +
+ 'Коли потрібний елемент меню або кнопку панелі інструментів виділено, натисніть клавіші Return, Enter,\n' +
+ ' або Пробіл, щоб виконати цей елемент.
\n' +
+ '\n' +
+ 'Навігація по діалоговим вікнам без вкладок
\n' +
+ '\n' +
+ 'У діалогових вікнах без вкладок перший інтерактивний компонент приймає фокус, коли відкривається діалогове вікно.
\n' +
+ '\n' +
+ 'Переходьте між інтерактивними компонентами діалогового вікна, натискаючи клавіші Tab або Shift+Tab.
\n' +
+ '\n' +
+ 'Навігація по діалоговим вікнам з вкладками
\n' +
+ '\n' +
+ 'У діалогових вікнах із вкладками перша кнопка в меню вкладки приймає фокус, коли відкривається діалогове вікно.
\n' +
+ '\n' +
+ 'Переходьте між інтерактивними компонентами цієї вкладки діалогового вікна, натискаючи клавіші Tab або\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Щоб перейти на іншу вкладку діалогового вікна, перемістіть фокус на меню вкладки, а потім натисніть відповідну клавішу зі стрілкою,\n' +
+ ' щоб циклічно переходити по доступним вкладкам.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/vi.js b/public/tinymce/plugins/help/js/i18n/keynav/vi.js
new file mode 100644
index 00000000..90dbc3c0
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/vi.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.vi',
+ 'Bắt đầu điều hướng bàn phím
\n' +
+ '\n' +
+ '\n' +
+ ' - Tập trung vào thanh menu
\n' +
+ ' - Windows hoặc Linux: Alt+F9
\n' +
+ ' - macOS: ⌥F9
\n' +
+ ' - Tập trung vào thanh công cụ
\n' +
+ ' - Windows hoặc Linux: Alt+F10
\n' +
+ ' - macOS: ⌥F10
\n' +
+ ' - Tập trung vào chân trang
\n' +
+ ' - Windows hoặc Linux: Alt+F11
\n' +
+ ' - macOS: ⌥F11
\n' +
+ ' - Tập trung vào thông báo
\n' +
+ ' - Windows hoặc Linux: Alt+F12
\n' +
+ ' - macOS: ⌥F12
\n' +
+ ' - Tập trung vào thanh công cụ ngữ cảnh
\n' +
+ ' - Windows, Linux hoặc macOS: Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ 'Điều hướng sẽ bắt đầu từ mục UI đầu tiên. Mục này sẽ được tô sáng hoặc có gạch dưới (nếu là mục đầu tiên trong\n' +
+ ' đường dẫn phần tử Chân trang).
\n' +
+ '\n' +
+ 'Di chuyển qua lại giữa các phần UI
\n' +
+ '\n' +
+ 'Để di chuyển từ một phần UI sang phần tiếp theo, ấn Tab.
\n' +
+ '\n' +
+ 'Để di chuyển từ một phần UI về phần trước đó, ấn Shift+Tab.
\n' +
+ '\n' +
+ 'Thứ tự Tab của các phần UI này như sau:
\n' +
+ '\n' +
+ '\n' +
+ ' - Thanh menu
\n' +
+ ' - Từng nhóm thanh công cụ
\n' +
+ ' - Thanh bên
\n' +
+ ' - Đường dẫn phần tử trong chân trang
\n' +
+ ' - Nút chuyển đổi đếm chữ ở chân trang
\n' +
+ ' - Liên kết thương hiệu ở chân trang
\n' +
+ ' - Núm điều tác chỉnh kích cỡ trình soạn thảo ở chân trang
\n' +
+ '
\n' +
+ '\n' +
+ 'Nếu người dùng không thấy một phần UI, thì có nghĩa phần đó bị bỏ qua.
\n' +
+ '\n' +
+ 'Nếu ở chân trang có tính năng tập trung điều hướng bàn phím, mà không có thanh bên nào hiện hữu, thao tác ấn Shift+Tab\n' +
+ ' sẽ chuyển hướng tập trung vào nhóm thanh công cụ đầu tiên, không phải cuối cùng.
\n' +
+ '\n' +
+ 'Di chuyển qua lại trong các phần UI
\n' +
+ '\n' +
+ 'Để di chuyển từ một phần tử UI sang phần tiếp theo, ấn phím Mũi tên tương ứng cho phù hợp.
\n' +
+ '\n' +
+ 'Các phím mũi tên Trái và Phải
\n' +
+ '\n' +
+ '\n' +
+ ' - di chuyển giữa các menu trong thanh menu.
\n' +
+ ' - mở menu phụ trong một menu.
\n' +
+ ' - di chuyển giữa các nút trong nhóm thanh công cụ.
\n' +
+ ' - di chuyển giữa các mục trong đường dẫn phần tử của chân trang.
\n' +
+ '
\n' +
+ '\n' +
+ 'Các phím mũi tên Hướng xuống và Hướng lên
\n' +
+ '\n' +
+ '\n' +
+ ' - di chuyển giữa các mục menu trong menu.
\n' +
+ ' - di chuyển giữa các mục trong menu thanh công cụ dạng bật lên.
\n' +
+ '
\n' +
+ '\n' +
+ 'Các phím mũi tên xoay vòng trong một phần UI tập trung.
\n' +
+ '\n' +
+ 'Để đóng một menu mở, một menu phụ đang mở, hoặc một menu dạng bật lên đang mở, hãy ấn phím Esc.
\n' +
+ '\n' +
+ 'Nếu trọng tâm hiện tại là ở phần “đầu” của một phần UI cụ thể, thao tác ấn phím Esc cũng sẽ thoát\n' +
+ ' toàn bộ phần điều hướng bàn phím.
\n' +
+ '\n' +
+ 'Thực hiện chức năng của một mục menu hoặc nút thanh công cụ
\n' +
+ '\n' +
+ 'Khi mục menu hoặc nút thanh công cụ muốn dùng được tô sáng, hãy ấn Return, Enter,\n' +
+ ' hoặc Phím cách để thực hiện chức năng mục đó.
\n' +
+ '\n' +
+ 'Điều hướng giữa các hộp thoại không có nhiều tab
\n' +
+ '\n' +
+ 'Trong các hộp thoại không có nhiều tab, khi hộp thoại mở ra, trọng tâm sẽ hướng vào thành phần tương tác đầu tiên.
\n' +
+ '\n' +
+ 'Di chuyển giữa các thành phần hộp thoại tương tác bằng cách ấn Tab hoặc Shift+Tab.
\n' +
+ '\n' +
+ 'Điều hướng giữa các hộp thoại có nhiều tab
\n' +
+ '\n' +
+ 'Trong các hộp thoại có nhiều tab, khi hộp thoại mở ra, trọng tâm sẽ hướng vào nút đầu tiên trong menu tab.
\n' +
+ '\n' +
+ 'Di chuyển giữa các thành phần tương tác của tab hộp thoại này bằng cách ấn Tab hoặc\n' +
+ ' Shift+Tab.
\n' +
+ '\n' +
+ 'Chuyển sang một tab hộp thoại khác bằng cách chuyển trọng tâm vào menu tab, rồi ấn phím Mũi tên phù hợp\n' +
+ ' để xoay vòng các tab hiện có.
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/zh_CN.js b/public/tinymce/plugins/help/js/i18n/keynav/zh_CN.js
new file mode 100644
index 00000000..243d91f3
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/zh_CN.js
@@ -0,0 +1,89 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.zh_CN',
+ '开始键盘导航
\n' +
+ '\n' +
+ '\n' +
+ ' - 使菜单栏处于焦点
\n' +
+ ' - Windows 或 Linux:Alt+F9
\n' +
+ ' - macOS:⌥F9
\n' +
+ ' - 使工具栏处于焦点
\n' +
+ ' - Windows 或 Linux:Alt+F10
\n' +
+ ' - macOS:⌥F10
\n' +
+ ' - 使页脚处于焦点
\n' +
+ ' - Windows 或 Linux:Alt+F11
\n' +
+ ' - macOS:⌥F11
\n' +
+ ' - 使通知处于焦点
\n' +
+ ' - Windows 或 Linux:Alt+F12
\n' +
+ ' - macOS:⌥F12
\n' +
+ ' - 使上下文工具栏处于焦点
\n' +
+ ' - Windows、Linux 或 macOS:Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ '导航将在第一个 UI 项上开始,其中突出显示该项,或者对于页脚元素路径中的第一项,将为其添加下划线。
\n' +
+ '\n' +
+ '在 UI 部分之间导航
\n' +
+ '\n' +
+ '要从一个 UI 部分移至下一个,请按 Tab。
\n' +
+ '\n' +
+ '要从一个 UI 部分移至上一个,请按 Shift+Tab。
\n' +
+ '\n' +
+ '这些 UI 部分的 Tab 顺序为:
\n' +
+ '\n' +
+ '\n' +
+ ' - 菜单栏
\n' +
+ ' - 每个工具栏组
\n' +
+ ' - 边栏
\n' +
+ ' - 页脚中的元素路径
\n' +
+ ' - 页脚中的字数切换按钮
\n' +
+ ' - 页脚中的品牌链接
\n' +
+ ' - 页脚中的编辑器调整大小图柄
\n' +
+ '
\n' +
+ '\n' +
+ '如果不存在某个 UI 部分,则跳过它。
\n' +
+ '\n' +
+ '如果键盘导航焦点在页脚,并且没有可见的边栏,则按 Shift+Tab 将焦点移至第一个工具栏组而非最后一个。
\n' +
+ '\n' +
+ '在 UI 部分内导航
\n' +
+ '\n' +
+ '要从一个 UI 元素移至下一个,请按相应的箭头键。
\n' +
+ '\n' +
+ '左和右箭头键
\n' +
+ '\n' +
+ '\n' +
+ ' - 在菜单栏中的菜单之间移动。
\n' +
+ ' - 打开菜单中的子菜单。
\n' +
+ ' - 在工具栏组中的按钮之间移动。
\n' +
+ ' - 在页脚的元素路径中的各项之间移动。
\n' +
+ '
\n' +
+ '\n' +
+ '下和上箭头键
\n' +
+ '\n' +
+ '\n' +
+ ' - 在菜单中的菜单项之间移动。
\n' +
+ ' - 在工具栏弹出菜单中的各项之间移动。
\n' +
+ '
\n' +
+ '\n' +
+ '箭头键在具有焦点的 UI 部分内循环。
\n' +
+ '\n' +
+ '要关闭打开的菜单、打开的子菜单或打开的弹出菜单,请按 Esc 键。
\n' +
+ '\n' +
+ '如果当前的焦点在特定 UI 部分的“顶部”,则按 Esc 键还将完全退出键盘导航。
\n' +
+ '\n' +
+ '执行菜单项或工具栏按钮
\n' +
+ '\n' +
+ '当突出显示所需的菜单项或工具栏按钮时,按 Return、Enter 或空格以执行该项。
\n' +
+ '\n' +
+ '在非标签页式对话框中导航
\n' +
+ '\n' +
+ '在非标签页式对话框中,当对话框打开时,第一个交互组件获得焦点。
\n' +
+ '\n' +
+ '通过按 Tab 或 Shift+Tab,在交互对话框组件之间导航。
\n' +
+ '\n' +
+ '在标签页式对话框中导航
\n' +
+ '\n' +
+ '在标签页式对话框中,当对话框打开时,标签页菜单中的第一个按钮获得焦点。
\n' +
+ '\n' +
+ '通过按 Tab 或 Shift+Tab,在此对话框的交互组件之间导航。
\n' +
+ '\n' +
+ '通过将焦点移至另一对话框标签页的菜单,然后按相应的箭头键以在可用的标签页间循环,从而切换到该对话框标签页。
\n'
+);
diff --git a/public/tinymce/plugins/help/js/i18n/keynav/zh_TW.js b/public/tinymce/plugins/help/js/i18n/keynav/zh_TW.js
new file mode 100644
index 00000000..85b1c29f
--- /dev/null
+++ b/public/tinymce/plugins/help/js/i18n/keynav/zh_TW.js
@@ -0,0 +1,95 @@
+tinymce.Resource.add(
+ 'tinymce.html-i18n.help-keynav.zh_TW',
+ '開始鍵盤瀏覽
\n' +
+ '\n' +
+ '\n' +
+ ' - 跳至功能表列
\n' +
+ ' - Windows 或 Linux:Alt+F9
\n' +
+ ' - macOS:⌥F9
\n' +
+ ' - 跳至工具列
\n' +
+ ' - Windows 或 Linux:Alt+F10
\n' +
+ ' - macOS:⌥F10
\n' +
+ ' - 跳至頁尾
\n' +
+ ' - Windows 或 Linux:Alt+F11
\n' +
+ ' - macOS:⌥F11
\n' +
+ ' - 跳至通知
\n' +
+ ' - Windows 或 Linux:Alt+F12
\n' +
+ ' - macOS:⌥F12
\n' +
+ ' - 跳至關聯式工具列
\n' +
+ ' - Windows、Linux 或 macOS:Ctrl+F9
\n' +
+ '
\n' +
+ '\n' +
+ '瀏覽會從第一個 UI 項目開始,該項目會反白顯示,但如果是「頁尾」元素路徑的第一項,\n' +
+ ' 則加底線。
\n' +
+ '\n' +
+ '在 UI 區段之間瀏覽
\n' +
+ '\n' +
+ '從 UI 區段移至下一個,請按 Tab。
\n' +
+ '\n' +
+ '從 UI 區段移回上一個,請按 Shift+Tab。
\n' +
+ '\n' +
+ '這些 UI 區段的 Tab 順序如下:
\n' +
+ '\n' +
+ '\n' +
+ ' - 功能表列
\n' +
+ ' - 各個工具列群組
\n' +
+ ' - 側邊欄
\n' +
+ ' - 頁尾中的元素路徑
\n' +
+ ' - 頁尾中字數切換按鈕
\n' +
+ ' - 頁尾中的品牌連結
\n' +
+ ' - 頁尾中編輯器調整大小控點
\n' +
+ '
\n' +
+ '\n' +
+ '如果 UI 區段未顯示,表示已略過該區段。
\n' +
+ '\n' +
+ '如果鍵盤瀏覽跳至頁尾,但沒有顯示側邊欄,則按下 Shift+Tab\n' +
+ ' 會跳至第一個工具列群組,而不是最後一個。
\n' +
+ '\n' +
+ '在 UI 區段之內瀏覽
\n' +
+ '\n' +
+ '在兩個 UI 元素之間移動,請按適當的方向鍵。
\n' +
+ '\n' +
+ '向左和向右方向鍵
\n' +
+ '\n' +
+ '\n' +
+ ' - 在功能表列中的功能表之間移動。
\n' +
+ ' - 開啟功能表中的子功能表。
\n' +
+ ' - 在工具列群組中的按鈕之間移動。
\n' +
+ ' - 在頁尾的元素路徑中項目之間移動。
\n' +
+ '
\n' +
+ '\n' +
+ '向下和向上方向鍵
\n' +
+ '\n' +
+ '\n' +
+ ' - 在功能表中的功能表項目之間移動。
\n' +
+ ' - 在工具列快顯功能表中的項目之間移動。
\n' +
+ '
\n' +
+ '\n' +
+ '方向鍵會在所跳至 UI 區段之內循環。
\n' +
+ '\n' +
+ '若要關閉已開啟的功能表、已開啟的子功能表,或已開啟的快顯功能表,請按 Esc 鍵。
\n' +
+ '\n' +
+ '如果目前已跳至特定 UI 區段的「頂端」,則按 Esc 鍵也會結束\n' +
+ ' 整個鍵盤瀏覽。
\n' +
+ '\n' +
+ '執行功能表列項目或工具列按鈕
\n' +
+ '\n' +
+ '當想要的功能表項目或工具列按鈕已反白顯示時,按 Return、Enter、\n' +
+ ' 或空白鍵即可執行該項目。
\n' +
+ '\n' +
+ '瀏覽非索引標籤式對話方塊
\n' +
+ '\n' +
+ '在非索引標籤式對話方塊中,開啟對話方塊時會跳至第一個互動元件。
\n' +
+ '\n' +
+ '按 Tab 或 Shift+Tab 即可在互動式對話方塊元件之間瀏覽。
\n' +
+ '\n' +
+ '瀏覽索引標籤式對話方塊
\n' +
+ '\n' +
+ '在索引標籤式對話方塊中,開啟對話方塊時會跳至索引標籤式功能表中的第一個按鈕。
\n' +
+ '\n' +
+ '若要在此對話方塊的互動式元件之間瀏覽,請按 Tab 或\n' +
+ ' Shift+Tab。
\n' +
+ '\n' +
+ '先跳至索引標籤式功能表,然後按適當的方向鍵,即可切換至另一個對話方塊索引標籤,\n' +
+ ' 以循環瀏覽可用的索引標籤。
\n'
+);
diff --git a/public/tinymce/plugins/help/plugin.min.js b/public/tinymce/plugins/help/plugin.min.js
new file mode 100644
index 00000000..b5d4f8de
--- /dev/null
+++ b/public/tinymce/plugins/help/plugin.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 7.2.1 (2024-07-03)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");let t=0;const n=e=>{const n=(new Date).getTime(),a=Math.floor(1e9*Math.random());return t++,e+"_"+a+t+String(n)},a=e=>t=>t.options.get(e),r=a("help_tabs"),o=a("forced_plugins"),i=("string",e=>"string"===(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(n=a=e,(r=String).prototype.isPrototypeOf(n)||(null===(o=a.constructor)||void 0===o?void 0:o.name)===r.name)?"string":t;var n,a,r,o})(e));const s=(void 0,e=>undefined===e);const l=e=>"function"==typeof e,m=(!1,()=>false);class c{constructor(e,t){this.tag=e,this.value=t}static some(e){return new c(!0,e)}static none(){return c.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?c.some(e(this.value)):c.none()}bind(e){return this.tag?e(this.value):c.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:c.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:"Called getOrDie on None")}static from(e){return null==e?c.none():c.some(e)}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}c.singletonNone=new c(!1);const u=Array.prototype.slice,p=Array.prototype.indexOf,y=(e,t)=>{const n=e.length,a=new Array(n);for(let r=0;r{const n=[];for(let a=0,r=e.length;a{const n=u.call(e,0);return n.sort(t),n},g=Object.keys,k=Object.hasOwnProperty,v=(e,t)=>k.call(e,t);var b=tinymce.util.Tools.resolve("tinymce.Resource"),f=tinymce.util.Tools.resolve("tinymce.util.I18n");const A=(e,t)=>b.load(`tinymce.html-i18n.help-keynav.${t}`,`${e}/js/i18n/keynav/${t}.js`),w=e=>A(e,f.getCode()).catch((()=>A(e,"en")));var C=tinymce.util.Tools.resolve("tinymce.Env");const M=e=>{const t=C.os.isMacOS()||C.os.isiOS(),n=t?{alt:"⌥",ctrl:"⌃",shift:"⇧",meta:"⌘",access:"⌃⌥"}:{meta:"Ctrl ",access:"Shift + Alt "},a=e.split("+"),r=y(a,(e=>{const t=e.toLowerCase().trim();return v(n,t)?n[t]:e}));return t?r.join("").replace(/\s/,""):r.join("+")},S=[{shortcuts:["Meta + B"],action:"Bold"},{shortcuts:["Meta + I"],action:"Italic"},{shortcuts:["Meta + U"],action:"Underline"},{shortcuts:["Meta + A"],action:"Select all"},{shortcuts:["Meta + Y","Meta + Shift + Z"],action:"Redo"},{shortcuts:["Meta + Z"],action:"Undo"},{shortcuts:["Access + 1"],action:"Heading 1"},{shortcuts:["Access + 2"],action:"Heading 2"},{shortcuts:["Access + 3"],action:"Heading 3"},{shortcuts:["Access + 4"],action:"Heading 4"},{shortcuts:["Access + 5"],action:"Heading 5"},{shortcuts:["Access + 6"],action:"Heading 6"},{shortcuts:["Access + 7"],action:"Paragraph"},{shortcuts:["Access + 8"],action:"Div"},{shortcuts:["Access + 9"],action:"Address"},{shortcuts:["Alt + 0"],action:"Open help dialog"},{shortcuts:["Alt + F9"],action:"Focus to menubar"},{shortcuts:["Alt + F10"],action:"Focus to toolbar"},{shortcuts:["Alt + F11"],action:"Focus to element path"},{shortcuts:["Alt + F12"],action:"Focus to notification"},{shortcuts:["Ctrl + F9"],action:"Focus to contextual toolbar"},{shortcuts:["Shift + Enter"],action:"Open popup menu for split buttons"},{shortcuts:["Meta + K"],action:"Insert link (if link plugin activated)"},{shortcuts:["Meta + S"],action:"Save (if save plugin activated)"},{shortcuts:["Meta + F"],action:"Find (if searchreplace plugin activated)"},{shortcuts:["Meta + Shift + F"],action:"Switch to or from fullscreen mode"}],_=()=>({name:"shortcuts",title:"Handy Shortcuts",items:[{type:"table",header:["Action","Shortcut"],cells:y(S,(e=>{const t=y(e.shortcuts,M).join(" or ");return[e.action,t]}))}]}),x=y([{key:"accordion",name:"Accordion"},{key:"anchor",name:"Anchor"},{key:"autolink",name:"Autolink"},{key:"autoresize",name:"Autoresize"},{key:"autosave",name:"Autosave"},{key:"charmap",name:"Character Map"},{key:"code",name:"Code"},{key:"codesample",name:"Code Sample"},{key:"colorpicker",name:"Color Picker"},{key:"directionality",name:"Directionality"},{key:"emoticons",name:"Emoticons"},{key:"fullscreen",name:"Full Screen"},{key:"help",name:"Help"},{key:"image",name:"Image"},{key:"importcss",name:"Import CSS"},{key:"insertdatetime",name:"Insert Date/Time"},{key:"link",name:"Link"},{key:"lists",name:"Lists"},{key:"advlist",name:"List Styles"},{key:"media",name:"Media"},{key:"nonbreaking",name:"Nonbreaking"},{key:"pagebreak",name:"Page Break"},{key:"preview",name:"Preview"},{key:"quickbars",name:"Quick Toolbars"},{key:"save",name:"Save"},{key:"searchreplace",name:"Search and Replace"},{key:"table",name:"Table"},{key:"textcolor",name:"Text Color"},{key:"visualblocks",name:"Visual Blocks"},{key:"visualchars",name:"Visual Characters"},{key:"wordcount",name:"Word Count"},{key:"a11ychecker",name:"Accessibility Checker",type:"premium"},{key:"typography",name:"Advanced Typography",type:"premium",slug:"advanced-typography"},{key:"ai",name:"AI Assistant",type:"premium"},{key:"casechange",name:"Case Change",type:"premium"},{key:"checklist",name:"Checklist",type:"premium"},{key:"advcode",name:"Enhanced Code Editor",type:"premium"},{key:"mediaembed",name:"Enhanced Media Embed",type:"premium",slug:"introduction-to-mediaembed"},{key:"advtable",name:"Enhanced Tables",type:"premium"},{key:"exportpdf",name:"Export to PDF",type:"premium"},{key:"exportword",name:"Export to Word",type:"premium"},{key:"footnotes",name:"Footnotes",type:"premium"},{key:"formatpainter",name:"Format Painter",type:"premium"},{key:"editimage",name:"Image Editing",type:"premium"},{key:"importword",name:"Import from Word",type:"premium"},{key:"inlinecss",name:"Inline CSS",type:"premium",slug:"inline-css"},{key:"linkchecker",name:"Link Checker",type:"premium"},{key:"math",name:"Math",type:"premium"},{key:"markdown",name:"Markdown",type:"premium"},{key:"mentions",name:"Mentions",type:"premium"},{key:"mergetags",name:"Merge Tags",type:"premium"},{key:"pageembed",name:"Page Embed",type:"premium"},{key:"permanentpen",name:"Permanent Pen",type:"premium"},{key:"powerpaste",name:"PowerPaste",type:"premium",slug:"introduction-to-powerpaste"},{key:"revisionhistory",name:"Revision History",type:"premium"},{key:"tinymcespellchecker",name:"Spell Checker",type:"premium",slug:"introduction-to-tiny-spellchecker"},{key:"autocorrect",name:"Spelling Autocorrect",type:"premium"},{key:"tableofcontents",name:"Table of Contents",type:"premium"},{key:"advtemplate",name:"Templates",type:"premium",slug:"advanced-templates"},{key:"tinycomments",name:"Tiny Comments",type:"premium",slug:"introduction-to-tiny-comments"},{key:"tinydrive",name:"Tiny Drive",type:"premium",slug:"tinydrive-introduction"}],(e=>({...e,type:e.type||"opensource",slug:e.slug||e.key}))),T=e=>{const t=e=>`${e.name}`,n=(e,n)=>{return(a=x,r=e=>e.key===n,((e,t,n)=>{for(let a=0,r=e.length;a((e,n)=>{const a=e.plugins[n].getMetadata;if(l(a)){const e=a();return{name:e.name,html:t(e)}}return{name:n,html:n}})(e,n)),(e=>{const n="premium"===e.type?`${e.name}*`:e.name;return{name:n,html:t({name:n,url:`https://www.tiny.cloud/docs/tinymce/7/${e.slug}/`})}}));var a,r},a=e=>{const t=(e=>{const t=g(e.plugins),n=o(e);return s(n)?t:h(t,(e=>!(((e,t)=>p.call(e,t))(n,e)>-1)))})(e),a=d(y(t,(t=>n(e,t))),((e,t)=>e.name.localeCompare(t.name))),r=y(a,(e=>""+e.html+"")),i=r.length,l=r.join("");return""+f.translate(["Plugins installed ({0}):",i])+"
"},r={type:"htmlpanel",presets:"document",html:[(e=>null==e?"":""+a(e)+"
")(e),(()=>{const e=h(x,(({type:e})=>"premium"===e)),t=d(y(e,(e=>e.name)),((e,t)=>e.localeCompare(t))),n=y(t,(e=>`${e}`)).join("");return""+f.translate("Premium plugins:")+"
"})()].join("")};return{name:"plugins",title:"Plugins",items:[r]}};var O=tinymce.util.Tools.resolve("tinymce.EditorManager");const F=(e,t,a)=>()=>{(async(e,t,a)=>{const o=_(),s=await(async e=>({name:"keyboardnav",title:"Keyboard Navigation",items:[{type:"htmlpanel",presets:"document",html:await w(e)}]}))(a),l=T(e),m=(()=>{var e,t;const n='TinyMCE '+(e=O.majorVersion,t=O.minorVersion,(0===e.indexOf("@")?"X.X.X":e+"."+t)+"");return{name:"versions",title:"Version",items:[{type:"htmlpanel",html:""+f.translate(["You are using {0}",n])+"
",presets:"document"}]}})(),u={[o.name]:o,[s.name]:s,[l.name]:l,[m.name]:m,...t.get()};return c.from(r(e)).fold((()=>(e=>{const t=g(e),n=t.indexOf("versions");return-1!==n&&(t.splice(n,1),t.push("versions")),{tabs:e,names:t}})(u)),(e=>((e,t)=>{const a={},r=y(e,(e=>{var r;if(i(e))return v(t,e)&&(a[e]=t[e]),e;{const t=null!==(r=e.name)&&void 0!==r?r:n("tab-name");return a[t]=e,t}}));return{tabs:a,names:r}})(e,u)))})(e,t,a).then((({tabs:t,names:n})=>{const a={type:"tabpanel",tabs:(e=>{const t=[],n=e=>{t.push(e)};for(let t=0;t{return v(n=t,a=e)?c.from(n[a]):c.none();var n,a})))};e.windowManager.open({title:"Help",size:"medium",body:a,buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{}})}))};e.add("help",((e,t)=>{const a=(e=>{let t={};return{get:()=>t,set:e=>{t=e}}})(),r=(e=>({addTab:t=>{var a;const r=null!==(a=t.name)&&void 0!==a?a:n("tab-name"),o=e.get();o[r]=t,e.set(o)}}))(a);(e=>{(0,e.options.register)("help_tabs",{processor:"array"})})(e);const o=F(e,a,t);return((e,t)=>{e.ui.registry.addButton("help",{icon:"help",tooltip:"Help",onAction:t}),e.ui.registry.addMenuItem("help",{text:"Help",icon:"help",shortcut:"Alt+0",onAction:t})})(e,o),((e,t)=>{e.addCommand("mceHelp",t)})(e,o),e.shortcuts.add("Alt+0","Open help dialog","mceHelp"),((e,t)=>{e.on("init",(()=>{w(t)}))})(e,t),r}))}();
\ No newline at end of file
diff --git a/public/tinymce/plugins/image/plugin.min.js b/public/tinymce/plugins/image/plugin.min.js
new file mode 100644
index 00000000..87959cc4
--- /dev/null
+++ b/public/tinymce/plugins/image/plugin.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 7.2.1 (2024-07-03)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=Object.getPrototypeOf,a=(e,t,a)=>{var i;return!!a(e,t.prototype)||(null===(i=e.constructor)||void 0===i?void 0:i.name)===t.name},i=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&a(e,String,((e,t)=>t.isPrototypeOf(e)))?"string":t})(t)===e,s=e=>t=>typeof t===e,r=i("string"),o=i("object"),n=e=>((e,i)=>o(e)&&a(e,i,((e,a)=>t(e)===a)))(e,Object),l=i("array"),c=(null,e=>null===e);const m=s("boolean"),d=e=>!(e=>null==e)(e),g=s("function"),u=s("number"),p=()=>{};class h{constructor(e,t){this.tag=e,this.value=t}static some(e){return new h(!0,e)}static none(){return h.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?h.some(e(this.value)):h.none()}bind(e){return this.tag?e(this.value):h.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:h.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:"Called getOrDie on None")}static from(e){return d(e)?h.some(e):h.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}h.singletonNone=new h(!1);const b=Object.keys,v=Object.hasOwnProperty,y=(e,t)=>v.call(e,t),f=Array.prototype.push,w=e=>{const t=[];for(let a=0,i=e.length;a{((e,t,a)=>{if(!(r(a)||m(a)||u(a)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",a,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,a+"")})(e.dom,t,a)},D=e=>{if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}},_=D;var C=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),I=tinymce.util.Tools.resolve("tinymce.util.URI");const U=e=>e.length>0,x=e=>t=>t.options.get(e),S=x("image_dimensions"),N=x("image_advtab"),T=x("image_uploadtab"),O=x("image_prepend_url"),E=x("image_class_list"),L=x("image_description"),j=x("image_title"),M=x("image_caption"),R=x("image_list"),k=x("a11y_advanced_options"),z=x("automatic_uploads"),B=(e,t)=>Math.max(parseInt(e,10),parseInt(t,10)),P=e=>(e&&(e=e.replace(/px$/,"")),e),F=e=>(e.length>0&&/^[0-9]+$/.test(e)&&(e+="px"),e),H=e=>"IMG"===e.nodeName&&(e.hasAttribute("data-mce-object")||e.hasAttribute("data-mce-placeholder")),G=(e,t)=>{const a=e.options.get;return I.isDomSafe(t,"img",{allow_html_data_urls:a("allow_html_data_urls"),allow_script_urls:a("allow_script_urls"),allow_svg_data_urls:a("allow_svg_data_urls")})},W=C.DOM,$=e=>e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?P(e.style.marginLeft):"",V=e=>e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?P(e.style.marginTop):"",K=e=>e.style.borderWidth?P(e.style.borderWidth):"",Z=(e,t)=>{var a;return e.hasAttribute(t)&&null!==(a=e.getAttribute(t))&&void 0!==a?a:""},q=e=>null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName,J=(e,t,a)=>{""===a||null===a?e.removeAttribute(t):e.setAttribute(t,a)},Q=(e,t)=>{const a=e.getAttribute("style"),i=t(null!==a?a:"");i.length>0?(e.setAttribute("style",i),e.setAttribute("data-mce-style",i)):e.removeAttribute("style")},X=(e,t)=>(e,a,i)=>{const s=e.style;s[a]?(s[a]=F(i),Q(e,t)):J(e,a,i)},Y=(e,t)=>e.style[t]?P(e.style[t]):Z(e,t),ee=(e,t)=>{const a=F(t);e.style.marginLeft=a,e.style.marginRight=a},te=(e,t)=>{const a=F(t);e.style.marginTop=a,e.style.marginBottom=a},ae=(e,t)=>{const a=F(t);e.style.borderWidth=a},ie=(e,t)=>{e.style.borderStyle=t},se=e=>{var t;return null!==(t=e.style.borderStyle)&&void 0!==t?t:""},re=e=>d(e)&&"FIGURE"===e.nodeName,oe=e=>0===W.getAttrib(e,"alt").length&&"presentation"===W.getAttrib(e,"role"),ne=e=>oe(e)?"":Z(e,"alt"),le=(e,t)=>{var a;const i=document.createElement("img");return J(i,"style",t.style),($(i)||""!==t.hspace)&&ee(i,t.hspace),(V(i)||""!==t.vspace)&&te(i,t.vspace),(K(i)||""!==t.border)&&ae(i,t.border),(se(i)||""!==t.borderStyle)&&ie(i,t.borderStyle),e(null!==(a=i.getAttribute("style"))&&void 0!==a?a:"")},ce=(e,t)=>({src:Z(t,"src"),alt:ne(t),title:Z(t,"title"),width:Y(t,"width"),height:Y(t,"height"),class:Z(t,"class"),style:e(Z(t,"style")),caption:q(t),hspace:$(t),vspace:V(t),border:K(t),borderStyle:se(t),isDecorative:oe(t)}),me=(e,t,a,i,s)=>{a[i]!==t[i]&&s(e,i,String(a[i]))},de=(e,t,a)=>{if(a){W.setAttrib(e,"role","presentation");const t=_(e);A(t,"alt","")}else{if(c(t)){"alt",_(e).dom.removeAttribute("alt")}else{const a=_(e);A(a,"alt",t)}"presentation"===W.getAttrib(e,"role")&&W.setAttrib(e,"role","")}},ge=(e,t)=>(a,i,s)=>{e(a,s),Q(a,t)},ue=(e,t,a)=>{const i=ce(e,a);me(a,i,t,"caption",((e,t,a)=>(e=>{q(e)?(e=>{const t=e.parentNode;d(t)&&(W.insertAfter(e,t),W.remove(t))})(e):(e=>{const t=W.create("figure",{class:"image"});W.insertAfter(t,e),t.appendChild(e),t.appendChild(W.create("figcaption",{contentEditable:"true"},"Caption")),t.contentEditable="false"})(e)})(e))),me(a,i,t,"src",J),me(a,i,t,"title",J),me(a,i,t,"width",X(0,e)),me(a,i,t,"height",X(0,e)),me(a,i,t,"class",J),me(a,i,t,"style",ge(((e,t)=>J(e,"style",t)),e)),me(a,i,t,"hspace",ge(ee,e)),me(a,i,t,"vspace",ge(te,e)),me(a,i,t,"border",ge(ae,e)),me(a,i,t,"borderStyle",ge(ie,e)),((e,t,a)=>{a.alt===t.alt&&a.isDecorative===t.isDecorative||de(e,a.alt,a.isDecorative)})(a,i,t)},pe=(e,t)=>{const a=(e=>{if(e.margin){const t=String(e.margin).split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e})(e.dom.styles.parse(t)),i=e.dom.styles.parse(e.dom.styles.serialize(a));return e.dom.styles.serialize(i)},he=e=>{const t=e.selection.getNode(),a=e.dom.getParent(t,"figure.image");return a?e.dom.select("img",a)[0]:t&&("IMG"!==t.nodeName||H(t))?null:t},be=(e,t)=>{var a;const i=e.dom,s=((t,a)=>{const i={};var s;return((e,t,a,i)=>{((e,t)=>{const a=b(e);for(let i=0,s=a.length;i{(t(e,s)?a:i)(e,s)}))})(t,((t,a)=>!e.schema.isValidChild(a,"figure")),(s=i,(e,t)=>{s[t]=e}),p),i})(e.schema.getTextBlockElements()),r=i.getParent(t.parentNode,(e=>{return t=s,a=e.nodeName,y(t,a)&&void 0!==t[a]&&null!==t[a];var t,a}),e.getBody());return r&&null!==(a=i.split(r,t))&&void 0!==a?a:t},ve=(e,t)=>{const a=((t,a)=>{const i=document.createElement("img");if(ue((t=>pe(e,t)),{...a,caption:!1},i),de(i,a.alt,a.isDecorative),a.caption){const e=W.create("figure",{class:"image"});return e.appendChild(i),e.appendChild(W.create("figcaption",{contentEditable:"true"},"Caption")),e.contentEditable="false",e}return i})(0,t);e.dom.setAttrib(a,"data-mce-id","__mcenew"),e.focus(),e.selection.setContent(a.outerHTML);const i=e.dom.select('*[data-mce-id="__mcenew"]')[0];if(e.dom.setAttrib(i,"data-mce-id",null),re(i)){const t=be(e,i);e.selection.select(t)}else e.selection.select(i)},ye=(e,t)=>{const a=he(e);if(a){const i={...ce((t=>pe(e,t)),a),...t},s=((e,t)=>{const a=t.src;return{...t,src:G(e,a)?a:""}})(e,i);i.src?((e,t)=>{const a=he(e);if(a)if(ue((t=>pe(e,t)),t,a),((e,t)=>{e.dom.setAttrib(t,"src",t.getAttribute("src"))})(e,a),re(a.parentNode)){const t=a.parentNode;be(e,t),e.selection.select(a.parentNode)}else e.selection.select(a),((e,t,a)=>{const i=()=>{a.onload=a.onerror=null,e.selection&&(e.selection.select(a),e.nodeChanged())};a.onload=()=>{t.width||t.height||!S(e)||e.dom.setAttribs(a,{width:String(a.clientWidth),height:String(a.clientHeight)}),i()},a.onerror=i})(e,t,a)})(e,s):((e,t)=>{if(t){const a=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(a),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}})(e,a)}else t.src&&ve(e,{src:"",alt:"",title:"",width:"",height:"",class:"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:"",isDecorative:!1,...t})},fe=(we=(e,t)=>n(e)&&n(t)?fe(e,t):t,(...e)=>{if(0===e.length)throw new Error("Can't merge zero objects");const t={};for(let a=0;ar(e.value)?e.value:"",Ce=(e,t)=>{const a=[];return De.each(e,(e=>{const i=(e=>r(e.text)?e.text:r(e.title)?e.title:"")(e);if(void 0!==e.menu){const s=Ce(e.menu,t);a.push({text:i,items:s})}else{const s=t(e);a.push({text:i,value:s})}})),a},Ie=(e=_e)=>t=>t?h.from(t).map((t=>Ce(t,e))):h.none(),Ue=(e,t)=>((e,a)=>{for(let a=0;ay(e,"items"))(i=e[a])?Ue(i.items,t):i.value===t?h.some(i):h.none();if(s.isSome())return s}var i;return h.none()})(e),xe=Ie,Se=(e,t)=>e.bind((e=>Ue(e,t))),Ne=e=>{const t=xe((t=>e.convertURL(t.value||t.url||"","src"))),a=new Promise((a=>{((e,t)=>{const a=R(e);r(a)?fetch(a).then((e=>{e.ok&&e.json().then(t)})):g(a)?a(t):t(a)})(e,(e=>{a(t(e).map((e=>w([[{text:"None",value:""}],e]))))}))})),i=(A=E(e),Ie(_e)(A)),s=N(e),o=T(e),n=(e=>U(e.options.get("images_upload_url")))(e),l=(e=>d(e.options.get("images_upload_handler")))(e),c=(e=>{const t=he(e);return t?ce((t=>pe(e,t)),t):{src:"",alt:"",title:"",width:"",height:"",class:"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:"",isDecorative:!1}})(e),m=L(e),u=j(e),p=S(e),b=M(e),v=k(e),y=z(e),f=h.some(O(e)).filter((e=>r(e)&&e.length>0));var A;return a.then((e=>({image:c,imageList:e,classList:i,hasAdvTab:s,hasUploadTab:o,hasUploadUrl:n,hasUploadHandler:l,hasDescription:m,hasImageTitle:u,hasDimensions:p,hasImageCaption:b,prependURL:f,hasAccessibilityOptions:v,automaticUploads:y})))},Te=e=>{const t=e.imageList.map((e=>({name:"images",type:"listbox",label:"Image list",items:e}))),a={name:"alt",type:"input",label:"Alternative description",enabled:!(e.hasAccessibilityOptions&&e.image.isDecorative)},i=e.classList.map((e=>({name:"classes",type:"listbox",label:"Class",items:e})));return w([[{name:"src",type:"urlinput",filetype:"image",label:"Source",picker_text:"Browse files"}],t.toArray(),e.hasAccessibilityOptions&&e.hasDescription?[{type:"label",label:"Accessibility",items:[{name:"isDecorative",type:"checkbox",label:"Image is decorative"}]}]:[],e.hasDescription?[a]:[],e.hasImageTitle?[{name:"title",type:"input",label:"Image title"}]:[],e.hasDimensions?[{name:"dimensions",type:"sizeinput"}]:[],[{...(s=e.classList.isSome()&&e.hasImageCaption,s?{type:"grid",columns:2}:{type:"panel"}),items:w([i.toArray(),e.hasImageCaption?[{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[]])}]]);var s},Oe=e=>({title:"General",name:"general",items:Te(e)}),Ee=Te,Le=e=>({src:{value:e.src,meta:{}},images:e.src,alt:e.alt,title:e.title,dimensions:{width:e.width,height:e.height},classes:e.class,caption:e.caption,style:e.style,vspace:e.vspace,border:e.border,hspace:e.hspace,borderstyle:e.borderStyle,fileinput:[],isDecorative:e.isDecorative}),je=(e,t)=>({src:e.src.value,alt:null!==e.alt&&0!==e.alt.length||!t?e.alt:null,title:e.title,width:e.dimensions.width,height:e.dimensions.height,class:e.classes,style:e.style,caption:e.caption,hspace:e.hspace,vspace:e.vspace,border:e.border,borderStyle:e.borderstyle,isDecorative:e.isDecorative}),Me=(e,t,a,i)=>{((e,t)=>{const a=t.getData();((e,t)=>/^(?:[a-zA-Z]+:)?\/\//.test(t)?h.none():e.prependURL.bind((e=>t.substring(0,e.length)!==e?h.some(e+t):h.none())))(e,a.src.value).each((e=>{t.setData({src:{value:e,meta:a.src.meta}})}))})(t,i),((e,t)=>{const a=t.getData(),i=a.src.meta;if(void 0!==i){const s=fe({},a);((e,t,a)=>{e.hasDescription&&r(a.alt)&&(t.alt=a.alt),e.hasAccessibilityOptions&&(t.isDecorative=a.isDecorative||t.isDecorative||!1),e.hasImageTitle&&r(a.title)&&(t.title=a.title),e.hasDimensions&&(r(a.width)&&(t.dimensions.width=a.width),r(a.height)&&(t.dimensions.height=a.height)),r(a.class)&&Se(e.classList,a.class).each((e=>{t.classes=e.value})),e.hasImageCaption&&m(a.caption)&&(t.caption=a.caption),e.hasAdvTab&&(r(a.style)&&(t.style=a.style),r(a.vspace)&&(t.vspace=a.vspace),r(a.border)&&(t.border=a.border),r(a.hspace)&&(t.hspace=a.hspace),r(a.borderstyle)&&(t.borderstyle=a.borderstyle))})(e,s,i),t.setData(s)}})(t,i),((e,t,a,i)=>{const s=i.getData(),r=s.src.value,o=s.src.meta||{};o.width||o.height||!t.hasDimensions||(U(r)?e.imageSize(r).then((e=>{a.open&&i.setData({dimensions:e})})).catch((e=>console.error(e))):i.setData({dimensions:{width:"",height:""}}))})(e,t,a,i),((e,t,a)=>{const i=a.getData(),s=Se(e.imageList,i.src.value);t.prevImage=s,a.setData({images:s.map((e=>e.value)).getOr("")})})(t,a,i)},Re=(e,t,a,i)=>{const s=i.getData();var r;i.block("Uploading image"),(r=s.fileinput,((e,t)=>0{i.unblock()}),(s=>{const r=URL.createObjectURL(s),o=()=>{i.unblock(),URL.revokeObjectURL(r)},n=s=>{i.setData({src:{value:s,meta:{}}}),i.showTab("general"),Me(e,t,a,i),i.focus("src")};var l;(l=s,new Promise(((e,t)=>{const a=new FileReader;a.onload=()=>{e(a.result)},a.onerror=()=>{var e;t(null===(e=a.error)||void 0===e?void 0:e.message)},a.readAsDataURL(l)}))).then((a=>{const l=e.createBlobCache(s,r,a);t.automaticUploads?e.uploadImage(l).then((e=>{n(e.url),o()})).catch((t=>{o(),e.alertErr(t)})):(e.addToBlobCache(l),n(l.blobUri()),i.unblock())}))}))},ke=(e,t,a)=>(i,s)=>{"src"===s.name?Me(e,t,a,i):"images"===s.name?((e,t,a,i)=>{const s=i.getData(),r=Se(t.imageList,s.images);r.each((e=>{const t=""===s.alt||a.prevImage.map((e=>e.text===s.alt)).getOr(!1);t?""===e.value?i.setData({src:e,alt:a.prevAlt}):i.setData({src:e,alt:e.text}):i.setData({src:e})})),a.prevImage=r,Me(e,t,a,i)})(e,t,a,i):"alt"===s.name?a.prevAlt=i.getData().alt:"fileinput"===s.name?Re(e,t,a,i):"isDecorative"===s.name&&i.setEnabled("alt",!i.getData().isDecorative)},ze=e=>()=>{e.open=!1},Be=e=>e.hasAdvTab||e.hasUploadUrl||e.hasUploadHandler?{type:"tabpanel",tabs:w([[Oe(e)],e.hasAdvTab?[{title:"Advanced",name:"advanced",items:[{type:"grid",columns:2,items:[{type:"input",label:"Vertical space",name:"vspace",inputMode:"numeric"},{type:"input",label:"Horizontal space",name:"hspace",inputMode:"numeric"},{type:"input",label:"Border width",name:"border",inputMode:"numeric"},{type:"listbox",name:"borderstyle",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]}]:[],e.hasUploadTab&&(e.hasUploadUrl||e.hasUploadHandler)?[{title:"Upload",name:"upload",items:[{type:"dropzone",name:"fileinput"}]}]:[]])}:{type:"panel",items:Ee(e)},Pe=(e,t,a)=>i=>{const s=fe(Le(t.image),i.getData()),r={...s,style:le(a.normalizeCss,je(s,!1))};e.execCommand("mceUpdateImage",!1,je(r,t.hasAccessibilityOptions)),e.editorUpload.uploadImagesAuto(),i.close()},Fe=e=>t=>G(e,t)?(e=>new Promise((t=>{const a=document.createElement("img"),i=e=>{a.onload=a.onerror=null,a.parentNode&&a.parentNode.removeChild(a),t(e)};a.onload=()=>{const e={width:B(a.width,a.clientWidth),height:B(a.height,a.clientHeight)};i(Promise.resolve(e))},a.onerror=()=>{i(Promise.reject(`Failed to get image dimensions for: ${e}`))};const s=a.style;s.visibility="hidden",s.position="fixed",s.bottom=s.left="0px",s.width=s.height="auto",document.body.appendChild(a),a.src=e})))(e.documentBaseURI.toAbsolute(t)).then((e=>({width:String(e.width),height:String(e.height)}))):Promise.resolve({width:"",height:""}),He=e=>(t,a,i)=>{var s;return e.editorUpload.blobCache.create({blob:t,blobUri:a,name:null===(s=t.name)||void 0===s?void 0:s.replace(/\.[^\.]+$/,""),filename:t.name,base64:i.split(",")[1]})},Ge=e=>t=>{e.editorUpload.blobCache.add(t)},We=e=>t=>{e.windowManager.alert(t)},$e=e=>t=>pe(e,t),Ve=e=>t=>e.dom.parseStyle(t),Ke=e=>(t,a)=>e.dom.serializeStyle(t,a),Ze=e=>t=>Ae(e).upload([t],!1).then((e=>{var t;return 0===e.length?Promise.reject("Failed to upload image"):!1===e[0].status?Promise.reject(null===(t=e[0].error)||void 0===t?void 0:t.message):e[0]})),qe=e=>{const t={imageSize:Fe(e),addToBlobCache:Ge(e),createBlobCache:He(e),alertErr:We(e),normalizeCss:$e(e),parseStyle:Ve(e),serializeStyle:Ke(e),uploadImage:Ze(e)};return{open:()=>{Ne(e).then((a=>{const i=(e=>({prevImage:Se(e.imageList,e.image.src),prevAlt:e.image.alt,open:!0}))(a);return{title:"Insert/Edit Image",size:"normal",body:Be(a),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:Le(a.image),onSubmit:Pe(e,a,t),onChange:ke(t,a,i),onClose:ze(i)}})).then(e.windowManager.open)}}},Je=e=>{const t=e.attr("class");return d(t)&&/\bimage\b/.test(t)},Qe=e=>t=>{let a=t.length;const i=t=>{t.attr("contenteditable",e?"true":null)};for(;a--;){const s=t[a];Je(s)&&(s.attr("contenteditable",e?"false":null),De.each(s.getAll("figcaption"),i))}},Xe=e=>t=>{const a=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",a),a(),()=>{e.off("NodeChange",a)}};e.add("image",(e=>{(e=>{const t=e.options.register;t("image_dimensions",{processor:"boolean",default:!0}),t("image_advtab",{processor:"boolean",default:!1}),t("image_uploadtab",{processor:"boolean",default:!0}),t("image_prepend_url",{processor:"string",default:""}),t("image_class_list",{processor:"object[]"}),t("image_description",{processor:"boolean",default:!0}),t("image_title",{processor:"boolean",default:!1}),t("image_caption",{processor:"boolean",default:!1}),t("image_list",{processor:e=>{const t=!1===e||r(e)||((e,t)=>{if(l(e)){for(let a=0,i=e.length;a{e.on("PreInit",(()=>{e.parser.addNodeFilter("figure",Qe(!0)),e.serializer.addNodeFilter("figure",Qe(!1))}))})(e),(e=>{e.ui.registry.addToggleButton("image",{icon:"image",tooltip:"Insert/edit image",onAction:qe(e).open,onSetup:t=>{t.setActive(d(he(e)));const a=e.selection.selectorChangedWithUnbind("img:not([data-mce-object]):not([data-mce-placeholder]),figure.image",t.setActive).unbind,i=Xe(e)(t);return()=>{a(),i()}}}),e.ui.registry.addMenuItem("image",{icon:"image",text:"Image...",onAction:qe(e).open,onSetup:Xe(e)}),e.ui.registry.addContextMenu("image",{update:t=>e.selection.isEditable()&&(re(t)||"IMG"===t.nodeName&&!H(t))?["image"]:[]})})(e),(e=>{e.addCommand("mceImage",qe(e).open),e.addCommand("mceUpdateImage",((t,a)=>{e.undoManager.transact((()=>ye(e,a)))}))})(e)}))}();
\ No newline at end of file
diff --git a/public/tinymce/plugins/importcss/plugin.min.js b/public/tinymce/plugins/importcss/plugin.min.js
new file mode 100644
index 00000000..a59099b7
--- /dev/null
+++ b/public/tinymce/plugins/importcss/plugin.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 7.2.1 (2024-07-03)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(s=r=e,(o=String).prototype.isPrototypeOf(s)||(null===(n=r.constructor)||void 0===n?void 0:n.name)===o.name)?"string":t;var s,r,o,n})(t)===e,s=t("string"),r=t("object"),o=t("array"),n=("function",e=>"function"==typeof e);var c=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.EditorManager"),l=tinymce.util.Tools.resolve("tinymce.Env"),a=tinymce.util.Tools.resolve("tinymce.util.Tools");const p=e=>t=>t.options.get(e),u=p("importcss_merge_classes"),m=p("importcss_exclusive"),f=p("importcss_selector_converter"),y=p("importcss_selector_filter"),d=p("importcss_groups"),h=p("importcss_append"),g=p("importcss_file_filter"),_=p("skin"),v=p("skin_url"),b=Array.prototype.push,x=/^\.(?:ephox|tiny-pageembed|mce)(?:[.-]+\w+)+$/,T=e=>s(e)?t=>-1!==t.indexOf(e):e instanceof RegExp?t=>e.test(t):e,S=(e,t)=>{let s={};const r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(t);if(!r)return;const o=r[1],n=r[2].substr(1).split(".").join(" "),c=a.makeMap("a,img");return r[1]?(s={title:t},e.schema.getTextBlockElements()[o]?s.block=o:e.schema.getBlockElements()[o]||c[o.toLowerCase()]?s.selector=o:s.inline=o):r[2]&&(s={inline:"span",title:t.substr(1),classes:n}),u(e)?s.classes=n:s.attributes={class:n},s},k=(e,t)=>null===t||m(e),M=e=>{e.on("init",(()=>{const t=(()=>{const e=[],t=[],s={};return{addItemToGroup:(e,r)=>{s[e]?s[e].push(r):(t.push(e),s[e]=[r])},addItem:t=>{e.push(t)},toFormats:()=>{return(r=t,n=e=>{const t=s[e];return 0===t.length?[]:[{title:e,items:t}]},(e=>{const t=[];for(let s=0,r=e.length;s{const s=e.length,r=new Array(s);for(let o=0;oa.map(e,(e=>a.extend({},e,{original:e,selectors:{},filter:T(e.filter)}))))(d(e)),u=(t,s)=>{if(((e,t,s,r)=>!(k(e,s)?t in r:t in s.selectors))(e,t,s,r)){((e,t,s,r)=>{k(e,s)?r[t]=!0:s.selectors[t]=!0})(e,t,s,r);const o=((e,t,s,r)=>{let o;const n=f(e);return o=r&&r.selector_converter?r.selector_converter:n||(()=>S(e,s)),o.call(t,s,r)})(e,e.plugins.importcss,t,s);if(o){const t=o.name||c.DOM.uniqueId();return e.formatter.register(t,o),{title:o.title,format:t}}}return null};a.each(((e,t,r)=>{const o=[],n={},c=(t,n)=>{let p,u=t.href;if(u=(e=>{const t=l.cacheSuffix;return s(e)&&(e=e.replace("?"+t,"").replace("&"+t,"")),e})(u),u&&(!r||r(u,n))&&!((e,t)=>{const s=_(e);if(s){const r=v(e),o=r?e.documentBaseURI.toAbsolute(r):i.baseURL+"/skins/ui/"+s,n=i.baseURL+"/skins/content/",c=e.editorManager.suffix;return t===o+"/content"+(e.inline?".inline":"")+`${c}.css`||-1!==t.indexOf(n)}return!1})(e,u)){a.each(t.imports,(e=>{c(e,!0)}));try{p=t.cssRules||t.rules}catch(e){}a.each(p,(e=>{e.styleSheet&&e.styleSheet?c(e.styleSheet,!0):e.selectorText&&a.each(e.selectorText.split(","),(e=>{o.push(a.trim(e))}))}))}};a.each(e.contentCSS,(e=>{n[e]=!0})),r||(r=(e,t)=>t||n[e]);try{a.each(t.styleSheets,(e=>{c(e)}))}catch(e){}return o})(e,e.getDoc(),T(g(e))),(e=>{if(!x.test(e)&&(!n||n(e))){const s=((e,t)=>a.grep(e,(e=>!e.filter||e.filter(t))))(p,e);if(s.length>0)a.each(s,(s=>{const r=u(e,s);r&&t.addItemToGroup(s.title,r)}));else{const s=u(e,null);s&&t.addItem(s)}}}));const m=t.toFormats();e.dispatch("addStyleModifications",{items:m,replace:!h(e)})}))};e.add("importcss",(e=>((e=>{const t=e.options.register,o=e=>s(e)||n(e)||r(e);t("importcss_merge_classes",{processor:"boolean",default:!0}),t("importcss_exclusive",{processor:"boolean",default:!0}),t("importcss_selector_converter",{processor:"function"}),t("importcss_selector_filter",{processor:o}),t("importcss_file_filter",{processor:o}),t("importcss_groups",{processor:"object[]"}),t("importcss_append",{processor:"boolean",default:!1})})(e),M(e),(e=>({convertSelectorToFormat:t=>S(e,t)}))(e))))}();
\ No newline at end of file
diff --git a/public/tinymce/plugins/insertdatetime/plugin.min.js b/public/tinymce/plugins/insertdatetime/plugin.min.js
new file mode 100644
index 00000000..06b5a096
--- /dev/null
+++ b/public/tinymce/plugins/insertdatetime/plugin.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 7.2.1 (2024-07-03)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>t.options.get(e),a=t("insertdatetime_dateformat"),n=t("insertdatetime_timeformat"),r=t("insertdatetime_formats"),s=t("insertdatetime_element"),i="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),o="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),l="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),m="January February March April May June July August September October November December".split(" "),c=(e,t)=>{if((e=""+e).length(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+a.getFullYear())).replace("%y",""+a.getYear())).replace("%m",c(a.getMonth()+1,2))).replace("%d",c(a.getDate(),2))).replace("%H",""+c(a.getHours(),2))).replace("%M",""+c(a.getMinutes(),2))).replace("%S",""+c(a.getSeconds(),2))).replace("%I",""+((a.getHours()+11)%12+1))).replace("%p",a.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(m[a.getMonth()]))).replace("%b",""+e.translate(l[a.getMonth()]))).replace("%A",""+e.translate(o[a.getDay()]))).replace("%a",""+e.translate(i[a.getDay()]))).replace("%%","%"),u=(e,t)=>{if(s(e)){const a=d(e,t);let n;n=/%[HMSIp]/.test(t)?d(e,"%Y-%m-%dT%H:%M"):d(e,"%Y-%m-%d");const r=e.dom.getParent(e.selection.getStart(),"time");r?((e,t,a,n)=>{const r=e.dom.create("time",{datetime:a},n);e.dom.replace(r,t),e.selection.select(r,!0),e.selection.collapse(!1)})(e,r,n,a):e.insertContent('")}else e.insertContent(d(e,t))};var p=tinymce.util.Tools.resolve("tinymce.util.Tools");const g=e=>t=>{const a=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",a),a(),()=>{e.off("NodeChange",a)}};e.add("insertdatetime",(e=>{(e=>{const t=e.options.register;t("insertdatetime_dateformat",{processor:"string",default:e.translate("%Y-%m-%d")}),t("insertdatetime_timeformat",{processor:"string",default:e.translate("%H:%M:%S")}),t("insertdatetime_formats",{processor:"string[]",default:["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"]}),t("insertdatetime_element",{processor:"boolean",default:!1})})(e),(e=>{e.addCommand("mceInsertDate",((t,n)=>{u(e,null!=n?n:a(e))})),e.addCommand("mceInsertTime",((t,a)=>{u(e,null!=a?a:n(e))}))})(e),(e=>{const t=r(e),a=(e=>{let t=e;return{get:()=>t,set:e=>{t=e}}})((e=>{const t=r(e);return t.length>0?t[0]:n(e)})(e)),s=t=>e.execCommand("mceInsertDate",!1,t);e.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:e=>e===a.get(),fetch:a=>{a(p.map(t,(t=>({type:"choiceitem",text:d(e,t),value:t}))))},onAction:e=>{s(a.get())},onItemAction:(e,t)=>{a.set(t),s(t)},onSetup:g(e)});const i=e=>()=>{a.set(e),s(e)};e.ui.registry.addNestedMenuItem("insertdatetime",{icon:"insert-time",text:"Date/time",getSubmenuItems:()=>p.map(t,(t=>({type:"menuitem",text:d(e,t),onAction:i(t)}))),onSetup:g(e)})})(e)}))}();
\ No newline at end of file
diff --git a/public/tinymce/plugins/link/plugin.min.js b/public/tinymce/plugins/link/plugin.min.js
new file mode 100644
index 00000000..65e9efad
--- /dev/null
+++ b/public/tinymce/plugins/link/plugin.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 7.2.1 (2024-07-03)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(n=o=e,(r=String).prototype.isPrototypeOf(n)||(null===(l=o.constructor)||void 0===l?void 0:l.name)===r.name)?"string":t;var n,o,r,l})(t)===e,n=e=>t=>typeof t===e,o=t("string"),r=t("object"),l=t("array"),s=(null,e=>null===e);const a=n("boolean"),i=e=>!(e=>null==e)(e),c=n("function"),u=(e,t)=>{if(l(e)){for(let n=0,o=e.length;n{},d=(e,t)=>e===t;class m{constructor(e,t){this.tag=e,this.value=t}static some(e){return new m(!0,e)}static none(){return m.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?m.some(e(this.value)):m.none()}bind(e){return this.tag?e(this.value):m.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:m.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:"Called getOrDie on None")}static from(e){return i(e)?m.some(e):m.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}m.singletonNone=new m(!1);const h=Array.prototype.indexOf,p=Array.prototype.push,f=e=>{const t=[];for(let n=0,o=e.length;n{for(let n=0;ne.exists((e=>n(e,t))),x=e=>{const t=[],n=e=>{t.push(e)};for(let t=0;te?m.some(t):m.none(),b=e=>t=>t.options.get(e),_=b("link_assume_external_targets"),w=b("link_context_toolbar"),C=b("link_list"),O=b("link_default_target"),S=b("link_default_protocol"),N=b("link_target_list"),A=b("link_rel_list"),T=b("link_class_list"),E=b("link_title"),L=b("allow_unsafe_link_target"),R=b("link_quicklink"),P=Object.keys,M=Object.hasOwnProperty,D=(e,t)=>M.call(e,t);var B=tinymce.util.Tools.resolve("tinymce.util.URI"),I=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),K=tinymce.util.Tools.resolve("tinymce.util.Tools");const j=e=>i(e)&&"a"===e.nodeName.toLowerCase(),U=e=>j(e)&&!!V(e),q=(e,t)=>{if(e.collapsed)return[];{const n=e.cloneContents(),o=n.firstChild,r=new I(o,n),l=[];let s=o;do{t(s)&&l.push(s)}while(s=r.next());return l}},F=e=>/^\w+:/i.test(e),V=e=>{var t,n;return null!==(n=null!==(t=e.getAttribute("data-mce-href"))&&void 0!==t?t:e.getAttribute("href"))&&void 0!==n?n:""},$=(e,t)=>{const n=["noopener"],o=e?e.split(/\s+/):[],r=e=>e.filter((e=>-1===K.inArray(n,e))),l=t?(e=>(e=r(e)).length>0?e.concat(n):n)(o):r(o);return l.length>0?(e=>K.trim(e.sort().join(" ")))(l):""},z=(e,t)=>(t=t||J(e.selection.getRng())[0]||e.selection.getNode(),Y(t)?m.from(e.dom.select("a[href]",t)[0]):m.from(e.dom.getParent(t,"a[href]"))),G=(e,t)=>z(e,t).isSome(),H=(e,t)=>t.fold((()=>e.getContent({format:"text"})),(e=>e.innerText||e.textContent||"")).replace(/\uFEFF/g,""),J=e=>q(e,U),W=e=>K.grep(e,U),Q=e=>W(e).length>0,X=e=>{const t=e.schema.getTextInlineElements();if(z(e).exists((e=>e.hasAttribute("data-mce-block"))))return!1;const n=e.selection.getRng();return!!n.collapsed||0===q(n,(e=>1===e.nodeType&&!j(e)&&!D(t,e.nodeName.toLowerCase()))).length},Y=e=>i(e)&&"FIGURE"===e.nodeName&&/\bimage\b/i.test(e.className),Z=(e,t,n)=>{const o=e.selection.getNode(),r=z(e,o),l=((e,t)=>{const n={...t};if(0===A(e).length&&!L(e)){const e=$(n.rel,"_blank"===n.target);n.rel=e||null}return m.from(n.target).isNone()&&!1===N(e)&&(n.target=O(e)),n.href=((e,t)=>"http"!==t&&"https"!==t||F(e)?e:t+"://"+e)(n.href,_(e)),n})(e,(e=>{return t=["title","rel","class","target"],n=(t,n)=>(e[n].each((e=>{t[n]=e.length>0?e:null})),t),o={href:e.href},((e,t)=>{for(let n=0,o=e.length;n{o=n(o,e)})),o;var t,n,o})(n));e.undoManager.transact((()=>{n.href===t.href&&t.attach(),r.fold((()=>{((e,t,n,o)=>{const r=e.dom;Y(t)?re(r,t,o):n.fold((()=>{e.execCommand("mceInsertLink",!1,o)}),(t=>{e.insertContent(r.createHTML("a",o,r.encode(t)))}))})(e,o,n.text,l)}),(t=>{e.focus(),((e,t,n,o)=>{n.each((e=>{D(t,"innerText")?t.innerText=e:t.textContent=e})),e.dom.setAttribs(t,o),e.selection.select(t)})(e,t,n.text,l)}))}))},ee=e=>{const{class:t,href:n,rel:o,target:r,text:l,title:a}=e;return((e,t)=>{const n={};var o;return((e,t,n,o)=>{((e,t)=>{const n=P(e);for(let o=0,r=n.length;o{(t(e,r)?n:o)(e,r)}))})(e,((e,t)=>!1===s(e)),(o=n,(e,t)=>{o[t]=e}),g),n})({class:t.getOrNull(),href:n,rel:o.getOrNull(),target:r.getOrNull(),text:l.getOrNull(),title:a.getOrNull()})},te=(e,t,n)=>{const o=((e,t)=>{const n=e.options.get,o={allow_html_data_urls:n("allow_html_data_urls"),allow_script_urls:n("allow_script_urls"),allow_svg_data_urls:n("allow_svg_data_urls")},r=t.href;return{...t,href:B.isDomSafe(r,"a",o)?r:""}})(e,n);e.hasPlugin("rtc",!0)?e.execCommand("createlink",!1,ee(o)):Z(e,t,o)},ne=e=>{e.hasPlugin("rtc",!0)?e.execCommand("unlink"):(e=>{e.undoManager.transact((()=>{const t=e.selection.getNode();Y(t)?oe(e,t):(e=>{const t=e.dom,n=e.selection,o=n.getBookmark(),r=n.getRng().cloneRange(),l=t.getParent(r.startContainer,"a[href]",e.getBody()),s=t.getParent(r.endContainer,"a[href]",e.getBody());l&&r.setStartBefore(l),s&&r.setEndAfter(s),n.setRng(r),e.execCommand("unlink"),n.moveToBookmark(o)})(e),e.focus()}))})(e)},oe=(e,t)=>{var n;const o=e.dom.select("img",t)[0];if(o){const r=e.dom.getParents(o,"a[href]",t)[0];r&&(null===(n=r.parentNode)||void 0===n||n.insertBefore(o,r),e.dom.remove(r))}},re=(e,t,n)=>{var o;const r=e.select("img",t)[0];if(r){const t=e.create("a",n);null===(o=r.parentNode)||void 0===o||o.insertBefore(t,r),t.appendChild(r)}},le=e=>o(e.value)?e.value:"",se=(e,t)=>{const n=[];return K.each(e,(e=>{const r=(e=>o(e.text)?e.text:o(e.title)?e.title:"")(e);if(void 0!==e.menu){const o=se(e.menu,t);n.push({text:r,items:o})}else{const o=t(e);n.push({text:r,value:o})}})),n},ae=(e=le)=>t=>m.from(t).map((t=>se(t,e))),ie=e=>ae(le)(e),ce=ae,ue=(e,t)=>n=>({name:e,type:"listbox",label:t,items:n}),ge=le,de=(e,t)=>k(t,(t=>(e=>{return D(t=e,n="items")&&void 0!==t[n]&&null!==t[n];var t,n})(t)?de(e,t.items):y(t.value===e,t))),me=(e,t)=>{const n={text:e.text,title:e.title},o=(e,o)=>{const r=(l=t,s=o,"link"===s?l.link:"anchor"===s?l.anchor:m.none()).getOr([]);var l,s;return((e,t,n,o)=>{const r=o[t],l=e.length>0;return void 0!==r?de(r,n).map((t=>({url:{value:t.value,meta:{text:l?e:t.text,attach:g}},text:l?e:t.text}))):m.none()})(n.text,o,r,e)};return{onChange:(e,t)=>{const r=t.name;return"url"===r?(e=>{const t=(o=e.url,y(n.text.length<=0,m.from(null===(r=o.meta)||void 0===r?void 0:r.text).getOr(o.value)));var o,r;const l=(e=>{var t;return y(n.title.length<=0,m.from(null===(t=e.meta)||void 0===t?void 0:t.title).getOr(""))})(e.url);return t.isSome()||l.isSome()?m.some({...t.map((e=>({text:e}))).getOr({}),...l.map((e=>({title:e}))).getOr({})}):m.none()})(e()):((e,t)=>h.call(e,t))(["anchor","link"],r)>-1?o(e(),r):"text"===r||"title"===r?(n[r]=e()[r],m.none()):m.none()}}};var he=tinymce.util.Tools.resolve("tinymce.util.Delay");const pe=e=>{const t=e.href;return t.indexOf("@")>0&&-1===t.indexOf("/")&&-1===t.indexOf("mailto:")?m.some({message:"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",preprocess:e=>({...e,href:"mailto:"+t})}):m.none()},fe=(e,t)=>n=>{const o=n.href;return 1===e&&!F(o)||0===e&&/^\s*www(\.|\d\.)/i.test(o)?m.some({message:`The URL you entered seems to be an external link. Do you want to add the required ${t}:// prefix?`,preprocess:e=>({...e,href:t+"://"+o})}):m.none()},ke=e=>{const t=e.dom.select("a:not([href])"),n=f(((e,t)=>{const n=e.length,o=new Array(n);for(let r=0;r{const t=e.name||e.id;return t?[{text:t,value:"#"+t}]:[]})));return n.length>0?m.some([{text:"None",value:""}].concat(n)):m.none()},ve=e=>{const t=T(e);return t.length>0?ie(t):m.none()},xe=e=>{try{return m.some(JSON.parse(e))}catch(e){return m.none()}},ye=(e,t)=>{const n=A(e);if(n.length>0){const o=v(t,"_blank"),r=e=>$(ge(e),o);return(!1===L(e)?ce(r):ie)(n)}return m.none()},be=[{text:"Current window",value:""},{text:"New window",value:"_blank"}],_e=e=>{const t=N(e);return l(t)?ie(t).orThunk((()=>m.some(be))):!1===t?m.none():m.some(be)},we=(e,t,n)=>{const o=e.getAttrib(t,n);return null!==o&&o.length>0?m.some(o):m.none()},Ce=(e,t)=>(e=>{const t=t=>e.convertURL(t.value||t.url||"","href"),n=C(e);return new Promise((e=>{o(n)?fetch(n).then((e=>e.ok?e.text().then(xe):Promise.reject())).then(e,(()=>e(m.none()))):c(n)?n((t=>e(m.some(t)))):e(m.from(n))})).then((e=>e.bind(ce(t)).map((e=>e.length>0?[{text:"None",value:""}].concat(e):e))))})(e).then((n=>{const o=((e,t)=>{const n=e.dom,o=X(e)?m.some(H(e.selection,t)):m.none(),r=t.bind((e=>m.from(n.getAttrib(e,"href")))),l=t.bind((e=>m.from(n.getAttrib(e,"target")))),s=t.bind((e=>we(n,e,"rel"))),a=t.bind((e=>we(n,e,"class")));return{url:r,text:o,title:t.bind((e=>we(n,e,"title"))),target:l,rel:s,linkClass:a}})(e,t);return{anchor:o,catalogs:{targets:_e(e),rels:ye(e,o.target),classes:ve(e),anchor:ke(e),link:n},optNode:t,flags:{titleEnabled:E(e)}}})),Oe=e=>{const t=(e=>{const t=z(e);return Ce(e,t)})(e);t.then((t=>{const n=((e,t)=>n=>{const o=n.getData();if(!o.url.value)return ne(e),void n.close();const r=e=>m.from(o[e]).filter((n=>!v(t.anchor[e],n))),l={href:o.url.value,text:r("text"),target:r("target"),rel:r("rel"),class:r("linkClass"),title:r("title")},s={href:o.url.value,attach:void 0!==o.url.meta&&o.url.meta.attach?o.url.meta.attach:g};((e,t)=>k([pe,fe(_(e),S(e))],(e=>e(t))).fold((()=>Promise.resolve(t)),(n=>new Promise((o=>{((e,t,n)=>{const o=e.selection.getRng();he.setEditorTimeout(e,(()=>{e.windowManager.confirm(t,(t=>{e.selection.setRng(o),n(t)}))}))})(e,n.message,(e=>{o(e?n.preprocess(t):t)}))})))))(e,l).then((t=>{te(e,s,t)})),n.close()})(e,t);return((e,t,n)=>{const o=e.anchor.text.map((()=>({name:"text",type:"input",label:"Text to display"}))).toArray(),r=e.flags.titleEnabled?[{name:"title",type:"input",label:"Title"}]:[],l=((e,t)=>{const n=e.anchor,o=n.url.getOr("");return{url:{value:o,meta:{original:{value:o}}},text:n.text.getOr(""),title:n.title.getOr(""),anchor:o,link:o,rel:n.rel.getOr(""),target:n.target.or(t).getOr(""),linkClass:n.linkClass.getOr("")}})(e,m.from(O(n))),s=e.catalogs,a=me(l,s);return{title:"Insert/Edit Link",size:"normal",body:{type:"panel",items:f([[{name:"url",type:"urlinput",filetype:"file",label:"URL",picker_text:"Browse links"}],o,r,x([s.anchor.map(ue("anchor","Anchors")),s.rels.map(ue("rel","Rel")),s.targets.map(ue("target","Open link in...")),s.link.map(ue("link","Link list")),s.classes.map(ue("linkClass","Class"))])])},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:l,onChange:(e,{name:t})=>{a.onChange(e.getData,{name:t}).each((t=>{e.setData(t)}))},onSubmit:t}})(t,n,e)})).then((t=>{e.windowManager.open(t)}))};var Se=tinymce.util.Tools.resolve("tinymce.util.VK");const Ne=(e,t)=>{if(t){const n=V(t);if(/^#/.test(n)){const t=e.dom.select(n);t.length&&e.selection.scrollIntoView(t[0],!0)}else(e=>{const t=document.createElement("a");t.target="_blank",t.href=e,t.rel="noreferrer noopener";const n=new MouseEvent("click",{bubbles:!0,cancelable:!0,view:window});document.dispatchEvent(n),((e,t)=>{document.body.appendChild(e),e.dispatchEvent(t),document.body.removeChild(e)})(t,n)})(t.href)}},Ae=(e,t)=>{const n=W(e.dom.getParents(t));return y(1===n.length,n[0])},Te=e=>e.selection.isCollapsed()||(e=>{const t=e.selection.getRng(),n=t.startContainer;return U(n)&&t.startContainer===t.endContainer&&1===e.dom.select("img",n).length})(e)?Ae(e,e.selection.getStart()):(e=>{const t=J(e.selection.getRng());return y(t.length>0,t[0]).or(Ae(e,e.selection.getNode()))})(e),Ee=e=>()=>{e.execCommand("mceLink",!1,{dialog:!0})},Le=(e,t)=>(e.on("NodeChange",t),()=>e.off("NodeChange",t)),Re=e=>t=>{const n=()=>{t.setActive(!e.mode.isReadOnly()&&G(e,e.selection.getNode())),t.setEnabled(e.selection.isEditable())};return n(),Le(e,n)},Pe=e=>t=>{const n=()=>{t.setEnabled(e.selection.isEditable())};return n(),Le(e,n)},Me=e=>t=>{const n=e.dom.getParents(e.selection.getStart()),o=n=>{t.setEnabled((t=>{return Q(t)||(n=e.selection.getRng(),J(n).length>0);var n})(n)&&e.selection.isEditable())};return o(n),Le(e,(e=>o(e.parents)))},De=e=>{const t=(e=>{const t=(()=>{const e=(e=>{const t=(e=>{let t=e;return{get:()=>t,set:e=>{t=e}}})(m.none()),n=()=>t.get().each(e);return{clear:()=>{n(),t.set(m.none())},isSet:()=>t.get().isSome(),get:()=>t.get(),set:e=>{n(),t.set(m.some(e))}}})(g);return{...e,on:t=>e.get().each(t)}})(),n=()=>t.get().or(Te(e));return e.on("contextmenu",(n=>{Ae(e,n.target).each(t.set)})),e.on("SelectionChange",(()=>{t.isSet()||Te(e).each(t.set)})),e.on("click",(n=>{t.clear();const o=W(e.dom.getParents(n.target));1===o.length&&Se.metaKeyPressed(n)&&(n.preventDefault(),Ne(e,o[0]))})),e.on("keydown",(o=>{t.clear(),!o.isDefaultPrevented()&&13===o.keyCode&&(e=>!0===e.altKey&&!1===e.shiftKey&&!1===e.ctrlKey&&!1===e.metaKey)(o)&&n().each((t=>{o.preventDefault(),Ne(e,t)}))})),{gotoSelectedLink:()=>n().each((t=>Ne(e,t)))}})(e);((e,t)=>{e.ui.registry.addToggleButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Meta+K",onAction:Ee(e),onSetup:Re(e)}),e.ui.registry.addButton("openlink",{icon:"new-tab",tooltip:"Open link",onAction:t.gotoSelectedLink,onSetup:Me(e)}),e.ui.registry.addButton("unlink",{icon:"unlink",tooltip:"Remove link",onAction:()=>ne(e),onSetup:Me(e)})})(e,t),((e,t)=>{e.ui.registry.addMenuItem("openlink",{text:"Open link",icon:"new-tab",onAction:t.gotoSelectedLink,onSetup:Me(e)}),e.ui.registry.addMenuItem("link",{icon:"link",text:"Link...",shortcut:"Meta+K",onAction:Ee(e),onSetup:Pe(e)}),e.ui.registry.addMenuItem("unlink",{icon:"unlink",text:"Remove link",onAction:()=>ne(e),onSetup:Me(e)})})(e,t),(e=>{e.ui.registry.addContextMenu("link",{update:t=>e.dom.isEditable(t)?Q(e.dom.getParents(t,"a"))?"link unlink openlink":"link":""})})(e),((e,t)=>{const n=t=>{const n=e.selection.getNode();return t.setEnabled(G(e,n)),g};e.ui.registry.addContextForm("quicklink",{launch:{type:"contextformtogglebutton",icon:"link",tooltip:"Link",onSetup:Re(e)},label:"Link",predicate:t=>w(e)&&G(e,t),initValue:()=>z(e).fold((()=>""),V),commands:[{type:"contextformtogglebutton",icon:"link",tooltip:"Link",primary:!0,onSetup:t=>{const n=e.selection.getNode();return t.setActive(G(e,n)),Re(e)(t)},onAction:t=>{const n=t.getValue(),o=(t=>{const n=z(e),o=X(e);if(n.isNone()&&o){const o=H(e.selection,n);return y(0===o.length,t)}return m.none()})(n);te(e,{href:n,attach:g},{href:n,text:o,title:m.none(),rel:m.none(),target:m.from(O(e)),class:m.none()}),(e=>{e.selection.collapse(!1)})(e),t.hide()}},{type:"contextformbutton",icon:"unlink",tooltip:"Remove link",onSetup:n,onAction:t=>{ne(e),t.hide()}},{type:"contextformbutton",icon:"new-tab",tooltip:"Open link",onSetup:n,onAction:e=>{t.gotoSelectedLink(),e.hide()}}]})})(e,t)};e.add("link",(e=>{(e=>{const t=e.options.register;t("link_assume_external_targets",{processor:e=>{const t=o(e)||a(e);return t?!0===e?{value:1,valid:t}:"http"===e||"https"===e?{value:e,valid:t}:{value:0,valid:t}:{valid:!1,message:"Must be a string or a boolean."}},default:!1}),t("link_context_toolbar",{processor:"boolean",default:!1}),t("link_list",{processor:e=>o(e)||c(e)||u(e,r)}),t("link_default_target",{processor:"string"}),t("link_default_protocol",{processor:"string",default:"https"}),t("link_target_list",{processor:e=>a(e)||u(e,r),default:!0}),t("link_rel_list",{processor:"object[]",default:[]}),t("link_class_list",{processor:"object[]",default:[]}),t("link_title",{processor:"boolean",default:!0}),t("allow_unsafe_link_target",{processor:"boolean",default:!1}),t("link_quicklink",{processor:"boolean",default:!1})})(e),(e=>{e.addCommand("mceLink",((t,n)=>{!0!==(null==n?void 0:n.dialog)&&R(e)?e.dispatch("contexttoolbar-show",{toolbarKey:"quicklink"}):Oe(e)}))})(e),De(e),(e=>{e.addShortcut("Meta+K","",(()=>{e.execCommand("mceLink")}))})(e)}))}();
\ No newline at end of file
diff --git a/public/tinymce/plugins/lists/plugin.min.js b/public/tinymce/plugins/lists/plugin.min.js
new file mode 100644
index 00000000..8231445c
--- /dev/null
+++ b/public/tinymce/plugins/lists/plugin.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 7.2.1 (2024-07-03)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(n=o=e,(r=String).prototype.isPrototypeOf(n)||(null===(s=o.constructor)||void 0===s?void 0:s.name)===r.name)?"string":t;var n,o,r,s})(t)===e,n=e=>t=>typeof t===e,o=t("string"),r=t("object"),s=t("array"),i=n("boolean"),l=e=>!(e=>null==e)(e),a=n("function"),d=n("number"),c=()=>{},m=e=>()=>e,u=(e,t)=>e===t,p=e=>t=>!e(t),g=m(!1);class h{constructor(e,t){this.tag=e,this.value=t}static some(e){return new h(!0,e)}static none(){return h.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?h.some(e(this.value)):h.none()}bind(e){return this.tag?e(this.value):h.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:h.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:"Called getOrDie on None")}static from(e){return l(e)?h.some(e):h.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}h.singletonNone=new h(!1);const f=Array.prototype.slice,y=Array.prototype.indexOf,v=Array.prototype.push,C=(e,t)=>{return n=e,o=t,y.call(n,o)>-1;var n,o},b=(e,t)=>{for(let n=0,o=e.length;n{const n=e.length,o=new Array(n);for(let r=0;r{for(let n=0,o=e.length;n{const n=[];for(let o=0,r=e.length;o(S(e,((e,o)=>{n=t(n,e,o)})),n),A=(e,t,n)=>{for(let o=0,r=e.length;oA(e,t,g),w=(e,t)=>(e=>{const t=[];for(let n=0,o=e.length;n{const t=f.call(e,0);return t.reverse(),t},E=(e,t)=>t>=0&&tE(e,0),D=e=>E(e,e.length-1),B=(e,t)=>{const n=[],o=a(t)?e=>b(n,(n=>t(n,e))):e=>C(n,e);for(let t=0,r=e.length;te.exists((e=>n(e,t))),P=(e,t,n)=>e.isSome()&&t.isSome()?h.some(n(e.getOrDie(),t.getOrDie())):h.none(),I=e=>{if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}},R=(e,t)=>{const n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||n.childNodes.length>1){const t="HTML does not have a single root node";throw console.error(t,e),new Error(t)}return I(n.childNodes[0])},U=(e,t)=>{const n=(t||document).createElement(e);return I(n)},$=I,_=(e,t)=>{const n=e.dom;if(1!==n.nodeType)return!1;{const e=n;if(void 0!==e.matches)return e.matches(t);if(void 0!==e.msMatchesSelector)return e.msMatchesSelector(t);if(void 0!==e.webkitMatchesSelector)return e.webkitMatchesSelector(t);if(void 0!==e.mozMatchesSelector)return e.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}},H=(e,t)=>e.dom===t.dom,F=_,V="undefined"!=typeof window?window:Function("return this;")(),j=(e,t)=>((e,t)=>{let n=null!=t?t:V;for(let t=0;t{const t=j("ownerDocument.defaultView",e);return r(e)&&((e=>((e,t)=>{const n=((e,t)=>j(e,t))(e,t);if(null==n)throw new Error(e+" not available on this browser");return n})("HTMLElement",e))(t).prototype.isPrototypeOf(e)||/^HTML\w*Element$/.test(K(e).constructor.name))},Q=e=>e.dom.nodeName.toLowerCase(),W=e=>e.dom.nodeType,q=e=>t=>W(t)===e,Z=e=>G(e)&&z(e.dom),G=q(1),J=q(3),X=q(9),Y=q(11),ee=e=>t=>G(t)&&Q(t)===e,te=e=>h.from(e.dom.parentNode).map($),ne=e=>N(e.dom.childNodes,$),oe=(e,t)=>{const n=e.dom.childNodes;return h.from(n[t]).map($)},re=e=>oe(e,0),se=e=>oe(e,e.dom.childNodes.length-1),ie=a(Element.prototype.attachShadow)&&a(Node.prototype.getRootNode)?e=>$(e.dom.getRootNode()):e=>X(e)?e:$(e.dom.ownerDocument),le=e=>$(e.dom.host),ae=e=>{const t=J(e)?e.dom.parentNode:e.dom;if(null==t||null===t.ownerDocument)return!1;const n=t.ownerDocument;return(e=>{const t=ie(e);return Y(n=t)&&l(n.dom.host)?h.some(t):h.none();var n})($(t)).fold((()=>n.body.contains(t)),(o=ae,r=le,e=>o(r(e))));var o,r};var de=(e,t,n,o,r)=>e(n,o)?h.some(n):a(r)&&r(n)?h.none():t(n,o,r);const ce=(e,t,n)=>{let o=e.dom;const r=a(n)?n:g;for(;o.parentNode;){o=o.parentNode;const e=$(o);if(t(e))return h.some(e);if(r(e))break}return h.none()},me=(e,t,n)=>de(((e,t)=>t(e)),ce,e,t,n),ue=(e,t,n)=>ce(e,(e=>_(e,t)),n),pe=(e,t)=>{te(e).each((n=>{n.dom.insertBefore(t.dom,e.dom)}))},ge=(e,t)=>{e.dom.appendChild(t.dom)},he=(e,t)=>{S(t,(t=>{ge(e,t)}))},fe=e=>{e.dom.textContent="",S(ne(e),(e=>{ye(e)}))},ye=e=>{const t=e.dom;null!==t.parentNode&&t.parentNode.removeChild(t)};var ve=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),Ce=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),be=tinymce.util.Tools.resolve("tinymce.util.VK");const Ne=e=>N(e,$),Se=Object.keys,Le=(e,t)=>{const n=Se(e);for(let o=0,r=n.length;o{const n=e.dom;Le(t,((e,t)=>{((e,t,n)=>{if(!(o(n)||i(n)||d(n)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")})(n,t,e)}))},Ae=e=>O(e.dom.attributes,((e,t)=>(e[t.name]=t.value,e)),{}),Te=e=>((e,t)=>$(e.dom.cloneNode(!0)))(e),we=(e,t)=>{const n=((e,t)=>{const n=U(t),o=Ae(e);return Oe(n,o),n})(e,t);var o,r;r=n,(e=>h.from(e.dom.nextSibling).map($))(o=e).fold((()=>{te(o).each((e=>{ge(e,r)}))}),(e=>{pe(e,r)}));const s=ne(e);return he(n,s),ye(e),n};var xe=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Ee=tinymce.util.Tools.resolve("tinymce.util.Tools");const ke=e=>t=>l(t)&&t.nodeName.toLowerCase()===e,De=e=>t=>l(t)&&e.test(t.nodeName),Be=e=>l(e)&&3===e.nodeType,Me=e=>l(e)&&1===e.nodeType,Pe=De(/^(OL|UL|DL)$/),Ie=De(/^(OL|UL)$/),Re=ke("ol"),Ue=De(/^(LI|DT|DD)$/),$e=De(/^(DT|DD)$/),_e=De(/^(TH|TD)$/),He=ke("br"),Fe=(e,t)=>l(t)&&t.nodeName in e.schema.getTextBlockElements(),Ve=(e,t)=>l(e)&&e.nodeName in t,je=(e,t)=>l(t)&&t.nodeName in e.schema.getVoidElements(),Ke=(e,t,n)=>{const o=e.isEmpty(t);return!(n&&e.select("span[data-mce-type=bookmark]",t).length>0)&&o},ze=(e,t)=>e.isChildOf(t,e.getRoot()),Qe=e=>t=>t.options.get(e),We=Qe("lists_indent_on_tab"),qe=Qe("forced_root_block"),Ze=Qe("forced_root_block_attrs"),Ge=(e,t,n={})=>{const o=e.dom,r=e.schema.getBlockElements(),s=o.createFragment(),i=qe(e),l=Ze(e);let a,d,c=!1;for(d=o.create(i,{...l,...n.style?{style:n.style}:{}}),Ve(t.firstChild,r)||s.appendChild(d);a=t.firstChild;){const e=a.nodeName;c||"SPAN"===e&&"bookmark"===a.getAttribute("data-mce-type")||(c=!0),Ve(a,r)?(s.appendChild(a),d=null):(d||(d=o.create(i,l),s.appendChild(d)),d.appendChild(a))}return!c&&d&&d.appendChild(o.create("br",{"data-mce-bogus":"1"})),s},Je=xe.DOM,Xe=ee("dd"),Ye=ee("dt"),et=(e,t)=>{var n;Xe(t)?we(t,"dt"):Ye(t)&&(n=t,h.from(n.dom.parentElement).map($)).each((n=>((e,t,n)=>{const o=Je.select('span[data-mce-type="bookmark"]',t),r=Ge(e,n),s=Je.createRng();s.setStartAfter(n),s.setEndAfter(t);const i=s.extractContents();for(let t=i.firstChild;t;t=t.firstChild)if("LI"===t.nodeName&&e.dom.isEmpty(t)){Je.remove(t);break}e.dom.isEmpty(i)||Je.insertAfter(i,t),Je.insertAfter(r,t);const l=n.parentElement;l&&Ke(e.dom,l)&&(e=>{const t=e.parentNode;t&&Ee.each(o,(e=>{t.insertBefore(e,n.parentNode)})),Je.remove(e)})(l),Je.remove(n),Ke(e.dom,t)&&Je.remove(t)})(e,n.dom,t.dom)))},tt=e=>{Ye(e)&&we(e,"dd")},nt=(e,t)=>{if(Be(e))return{container:e,offset:t};const n=ve.getNode(e,t);return Be(n)?{container:n,offset:t>=e.childNodes.length?n.data.length:0}:n.previousSibling&&Be(n.previousSibling)?{container:n.previousSibling,offset:n.previousSibling.data.length}:n.nextSibling&&Be(n.nextSibling)?{container:n.nextSibling,offset:0}:{container:e,offset:t}},ot=e=>{const t=e.cloneRange(),n=nt(e.startContainer,e.startOffset);t.setStart(n.container,n.offset);const o=nt(e.endContainer,e.endOffset);return t.setEnd(o.container,o.offset),t},rt=["OL","UL","DL"],st=rt.join(","),it=(e,t)=>{const n=t||e.selection.getStart(!0);return e.dom.getParent(n,st,dt(e,n))},lt=e=>{const t=e.selection.getSelectedBlocks();return L(((e,t)=>{const n=Ee.map(t,(t=>e.dom.getParent(t,"li,dd,dt",dt(e,t))||t));return B(n)})(e,t),Ue)},at=(e,t)=>{const n=e.dom.getParents(t,"TD,TH");return n.length>0?n[0]:e.getBody()},dt=(e,t)=>{const n=e.dom.getParents(t,e.dom.isBlock),o=T(n,(t=>{return(t=>t.nodeName.toLowerCase()!==qe(e))(t)&&(n=e.schema,!Pe(o=t)&&!Ue(o)&&b(rt,(e=>n.isValidChild(o.nodeName,e))));var n,o}));return o.getOr(e.getBody())},ct=(e,t)=>{const n=e.dom.getParents(t,"ol,ul",dt(e,t));return D(n)},mt=(e,t)=>{const n=N(t,(t=>ct(e,t).getOr(t)));return B(n)},ut=e=>/\btox\-/.test(e.className),pt=(e,t)=>A(e,Pe,_e).exists((e=>e.nodeName===t&&!ut(e))),gt=(e,t)=>null!==t&&!e.dom.isEditable(t),ht=(e,t)=>{const n=e.dom.getParent(t,"ol,ul,dl");return gt(e,n)},ft=(e,t)=>{const n=e.selection.getNode();return t({parents:e.dom.getParents(n),element:n}),e.on("NodeChange",t),()=>e.off("NodeChange",t)},yt=(e,t)=>{const n=(t||document).createDocumentFragment();return S(e,(e=>{n.appendChild(e.dom)})),$(n)},vt=(e,t,n)=>e.dispatch("ListMutation",{action:t,element:n}),Ct=(bt=/^\s+|\s+$/g,e=>e.replace(bt,""));var bt;const Nt=(e,t,n)=>{((e,t,n)=>{if(!o(n))throw console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);(e=>void 0!==e.style&&a(e.style.getPropertyValue))(e)&&e.style.setProperty(t,n)})(e.dom,t,n)},St=e=>F(e,"OL,UL"),Lt=e=>re(e).exists(St),Ot=e=>"listAttributes"in e,At=e=>"isComment"in e,Tt=e=>e.depth>0,wt=e=>e.isSelected,xt=e=>{const t=ne(e),n=se(e).exists(St)?t.slice(0,-1):t;return N(n,Te)},Et=(e,t)=>{ge(e.item,t.list)},kt=(e,t)=>{const n={list:U(t,e),item:U("li",e)};return ge(n.list,n.item),n},Dt=(e,t,n)=>{const o=t.slice(0,n.depth);return D(o).each((t=>{if(Ot(n)){const o=((e,t,n)=>{const o=U("li",e);return Oe(o,t),he(o,n),o})(e,n.itemAttributes,n.content);((e,t)=>{ge(e.list,t),e.item=t})(t,o),((e,t)=>{Q(e.list)!==t.listType&&(e.list=we(e.list,t.listType)),Oe(e.list,t.listAttributes)})(t,n)}else if((e=>"isFragment"in e)(n))he(t.item,n.content);else{const e=R(`\x3c!--${n.content}--\x3e`);ge(t.list,e)}})),o},Bt=(e,t)=>{let n=h.none();const o=O(t,((t,o,r)=>At(o)?0===r?(n=h.some(o),t):Dt(e,t,o):o.depth>t.length?((e,t,n)=>{const o=((e,t,n)=>{const o=[];for(let r=0;r{for(let t=1;t{for(let t=0;t{Ot(t)&&(Oe(e.list,t.listAttributes),Oe(e.item,t.itemAttributes)),he(e.item,t.content)}))})(o,n),r=o,P(D(t),k(r),Et),t.concat(o)})(e,t,o):Dt(e,t,o)),[]);return n.each((e=>{const t=R(`\x3c!--${e.content}--\x3e`);k(o).each((e=>{((e,t)=>{re(e).fold((()=>{ge(e,t)}),(n=>{e.dom.insertBefore(t.dom,n.dom)}))})(e.list,t)}))})),k(o).map((e=>e.list))},Mt=e=>(S(e,((t,n)=>{((e,t)=>{const n=e[t].depth,o=e=>e.depth===n&&!e.dirty,r=e=>e.depthA(e.slice(t+1),o,r)))})(e,n).fold((()=>{t.dirty&&Ot(t)&&(e=>{e.listAttributes=((e,t)=>{const n={};var o;return((e,t,n,o)=>{Le(e,((e,r)=>{(t(e,r)?n:o)(e,r)}))})(e,t,(o=n,(e,t)=>{o[t]=e}),c),n})(e.listAttributes,((e,t)=>"start"!==t))})(t)}),(e=>{return o=e,void(Ot(n=t)&&Ot(o)&&(n.listType=o.listType,n.listAttributes={...o.listAttributes}));var n,o}))})),e),Pt=(e,t,n,o)=>{var r,s;if(8===W(s=o)||"#comment"===Q(s))return[{depth:e+1,content:null!==(r=o.dom.nodeValue)&&void 0!==r?r:"",dirty:!1,isSelected:!1,isComment:!0}];t.each((e=>{H(e.start,o)&&n.set(!0)}));const i=((e,t,n)=>te(e).filter(G).map((o=>({depth:t,dirty:!1,isSelected:n,content:xt(e),itemAttributes:Ae(e),listAttributes:Ae(o),listType:Q(o),isInPreviousLi:!1}))))(o,e,n.get());t.each((e=>{H(e.end,o)&&n.set(!1)}));const l=se(o).filter(St).map((o=>Rt(e,t,n,o))).getOr([]);return i.toArray().concat(l)},It=(e,t,n,o)=>re(o).filter(St).fold((()=>Pt(e,t,n,o)),(r=>{const s=O(ne(o),((o,s,i)=>{if(0===i)return o;if(F(s,"LI"))return o.concat(Pt(e,t,n,s));{const t={isFragment:!0,depth:e,content:[s],isSelected:!1,dirty:!1,parentListType:Q(r)};return o.concat(t)}}),[]);return Rt(e,t,n,r).concat(s)})),Rt=(e,t,n,o)=>w(ne(o),(o=>(St(o)?Rt:It)(e+1,t,n,o))),Ut=(e,t,n)=>{const o=((e,t)=>{const n=(e=>{let t=!1;return{get:()=>t,set:e=>{t=e}}})();return N(e,(e=>({sourceList:e,entries:Rt(0,t,n,e)})))})(t,(e=>{const t=N(lt(e),$);return P(T(t,p(Lt)),T(x(t),p(Lt)),((e,t)=>({start:e,end:t})))})(e));S(o,(t=>{((e,t)=>{S(L(e,wt),(e=>((e,t)=>{switch(e){case"Indent":t.depth++;break;case"Outdent":t.depth--;break;case"Flatten":t.depth=0}t.dirty=!0})(t,e)))})(t.entries,n);const o=((e,t)=>w(((e,t)=>{if(0===e.length)return[];{let n=t(e[0]);const o=[];let r=[];for(let s=0,i=e.length;sk(t).exists(Tt)?((e,t)=>{const n=Mt(t);return Bt(e.contentDocument,n).toArray()})(e,t):((e,t)=>{const n=Mt(t);return N(n,(t=>{const n=At(t)?yt([R(`\x3c!--${t.content}--\x3e`)]):yt(t.content),o=Ot(t)?t.itemAttributes:{};return $(Ge(e,n.dom,o))}))})(e,t))))(e,t.entries);var r;S(o,(t=>{vt(e,"Indent"===n?"IndentList":"OutdentList",t.dom)})),r=t.sourceList,S(o,(e=>{pe(r,e)})),ye(t.sourceList)}))},$t=(e,t)=>{const n=Ne((e=>{const t=(e=>{const t=ct(e,e.selection.getStart()),n=L(e.selection.getSelectedBlocks(),Ie);return t.toArray().concat(n)})(e),n=(e=>{const t=e.selection.getStart();return e.dom.getParents(t,"ol,ul",dt(e,t))})(e);return T(n,(e=>{return t=$(e),te(t).exists((e=>Ue(e.dom)&&re(e).exists((e=>!Pe(e.dom)))&&se(e).exists((e=>!Pe(e.dom)))));var t})).fold((()=>mt(e,t)),(e=>[e]))})(e)),o=Ne((e=>L(lt(e),$e))(e));let r=!1;if(n.length||o.length){const s=e.selection.getBookmark();Ut(e,n,t),((e,t,n)=>{S(n,"Indent"===t?tt:t=>et(e,t))})(e,t,o),e.selection.moveToBookmark(s),e.selection.setRng(ot(e.selection.getRng())),e.nodeChanged(),r=!0}return r},_t=(e,t)=>!(e=>{const t=it(e);return gt(e,t)})(e)&&$t(e,t),Ht=e=>_t(e,"Indent"),Ft=e=>_t(e,"Outdent"),Vt=e=>_t(e,"Flatten"),jt=e=>"\ufeff"===e;var Kt=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager");const zt=xe.DOM,Qt=e=>{const t={},n=n=>{let o=e[n?"startContainer":"endContainer"],r=e[n?"startOffset":"endOffset"];if(Me(o)){const e=zt.create("span",{"data-mce-type":"bookmark"});o.hasChildNodes()?(r=Math.min(r,o.childNodes.length-1),n?o.insertBefore(e,o.childNodes[r]):zt.insertAfter(e,o.childNodes[r])):o.appendChild(e),o=e,r=0}t[n?"startContainer":"endContainer"]=o,t[n?"startOffset":"endOffset"]=r};return n(!0),e.collapsed||n(),t},Wt=e=>{const t=t=>{let n=e[t?"startContainer":"endContainer"],o=e[t?"startOffset":"endOffset"];if(n){if(Me(n)&&n.parentNode){const e=n;o=(e=>{var t;let n=null===(t=e.parentNode)||void 0===t?void 0:t.firstChild,o=0;for(;n;){if(n===e)return o;Me(n)&&"bookmark"===n.getAttribute("data-mce-type")||o++,n=n.nextSibling}return-1})(n),n=n.parentNode,zt.remove(e),!n.hasChildNodes()&&zt.isBlock(n)&&n.appendChild(zt.create("br"))}e[t?"startContainer":"endContainer"]=n,e[t?"startOffset":"endOffset"]=o}};t(!0),t();const n=zt.createRng();return n.setStart(e.startContainer,e.startOffset),e.endContainer&&n.setEnd(e.endContainer,e.endOffset),ot(n)},qt=e=>{switch(e){case"UL":return"ToggleUlList";case"OL":return"ToggleOlList";case"DL":return"ToggleDLList"}},Zt=(e,t)=>{Ee.each(t,((t,n)=>{e.setAttribute(n,t)}))},Gt=(e,t,n)=>{((e,t,n)=>{const o=n["list-style-type"]?n["list-style-type"]:null;e.setStyle(t,"list-style-type",o)})(e,t,n),((e,t,n)=>{Zt(t,n["list-attributes"]),Ee.each(e.select("li",t),(e=>{Zt(e,n["list-item-attributes"])}))})(e,t,n)},Jt=(e,t)=>l(t)&&!Ve(t,e.schema.getBlockElements()),Xt=(e,t,n,o)=>{let r=t[n?"startContainer":"endContainer"];const s=t[n?"startOffset":"endOffset"];Me(r)&&(r=r.childNodes[Math.min(s,r.childNodes.length-1)]||r),!n&&He(r.nextSibling)&&(r=r.nextSibling);const i=(t,n)=>{var r;const s=new Ce(t,(t=>{for(;!e.dom.isBlock(t)&&t.parentNode&&o!==t;)t=t.parentNode;return t})(t)),i=n?"next":"prev";let l;for(;l=s[i]();)if(!je(e,l)&&!jt(l.textContent)&&0!==(null===(r=l.textContent)||void 0===r?void 0:r.length))return h.some(l);return h.none()};if(n&&Be(r))if(jt(r.textContent))r=i(r,!1).getOr(r);else for(null!==r.parentNode&&Jt(e,r.parentNode)&&(r=r.parentNode);null!==r.previousSibling&&(Jt(e,r.previousSibling)||Be(r.previousSibling));)r=r.previousSibling;if(!n&&Be(r))if(jt(r.textContent))r=i(r,!0).getOr(r);else for(null!==r.parentNode&&Jt(e,r.parentNode)&&(r=r.parentNode);null!==r.nextSibling&&(Jt(e,r.nextSibling)||Be(r.nextSibling));)r=r.nextSibling;for(;r.parentNode!==o;){const t=r.parentNode;if(Fe(e,r))return r;if(/^(TD|TH)$/.test(t.nodeName))return r;r=t}return r},Yt=(e,t,n)=>{const o=e.selection.getRng();let r="LI";const s=dt(e,((e,t)=>{const n=e.selection.getStart(!0),o=Xt(e,t,!0,e.getBody());return r=$(o),s=$(t.commonAncestorContainer),i=r,l=function(e,...t){return(...n)=>{const o=t.concat(n);return e.apply(null,o)}}(H,s),ce(i,l,void 0).isSome()?t.commonAncestorContainer:n;var r,s,i,l})(e,o)),i=e.dom;if("false"===i.getContentEditable(e.selection.getNode()))return;"DL"===(t=t.toUpperCase())&&(r="DT");const l=Qt(o),a=L(((e,t,n)=>{const o=[],r=e.dom,s=Xt(e,t,!0,n),i=Xt(e,t,!1,n);let l;const a=[];for(let e=s;e&&(a.push(e),e!==i);e=e.nextSibling);return Ee.each(a,(t=>{var s;if(Fe(e,t))return o.push(t),void(l=null);if(r.isBlock(t)||He(t))return He(t)&&r.remove(t),void(l=null);const i=t.nextSibling;Kt.isBookmarkNode(t)&&(Pe(i)||Fe(e,i)||!i&&t.parentNode===n)?l=null:(l||(l=r.create("p"),null===(s=t.parentNode)||void 0===s||s.insertBefore(l,t),o.push(l)),l.appendChild(t))})),o})(e,o,s),e.dom.isEditable);Ee.each(a,(o=>{let s;const l=o.previousSibling,a=o.parentNode;Ue(a)||(l&&Pe(l)&&l.nodeName===t&&((e,t,n)=>{const o=e.getStyle(t,"list-style-type");let r=n?n["list-style-type"]:"";return r=null===r?"":r,o===r})(i,l,n)?(s=l,o=i.rename(o,r),l.appendChild(o)):(s=i.create(t),a.insertBefore(s,o),s.appendChild(o),o=i.rename(o,r)),((e,t,n)=>{Ee.each(["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],(n=>e.setStyle(t,n,"")))})(i,o),Gt(i,s,n),tn(e.dom,s))})),e.selection.setRng(Wt(l))},en=(e,t,n)=>{return((e,t)=>Pe(e)&&e.nodeName===(null==t?void 0:t.nodeName))(t,n)&&((e,t,n)=>e.getStyle(t,"list-style-type",!0)===e.getStyle(n,"list-style-type",!0))(e,t,n)&&(o=n,t.className===o.className);var o},tn=(e,t)=>{let n,o=t.nextSibling;if(en(e,t,o)){const r=o;for(;n=r.firstChild;)t.appendChild(n);e.remove(r)}if(o=t.previousSibling,en(e,t,o)){const r=o;for(;n=r.lastChild;)t.insertBefore(n,t.firstChild);e.remove(r)}},nn=(e,t,n,o)=>{if(t.nodeName!==n){const r=e.dom.rename(t,n);Gt(e.dom,r,o),vt(e,qt(n),r)}else Gt(e.dom,t,o),vt(e,qt(n),t)},on=(e,t,n,o)=>{if(t.classList.forEach(((e,n,o)=>{e.startsWith("tox-")&&(o.remove(e),0===o.length&&t.removeAttribute("class"))})),t.nodeName!==n){const r=e.dom.rename(t,n);Gt(e.dom,r,o),vt(e,qt(n),r)}else Gt(e.dom,t,o),vt(e,qt(n),t)},rn=e=>"list-style-type"in e,sn=(e,t,n)=>{const o=it(e);if(ht(e,o))return;const s=(e=>{const t=it(e),n=e.selection.getSelectedBlocks();return((e,t)=>l(e)&&1===t.length&&t[0]===e)(t,n)?(e=>L(e.querySelectorAll(st),Pe))(t):L(n,(e=>Pe(e)&&t!==e))})(e),i=r(n)?n:{};s.length>0?((e,t,n,o,r)=>{const s=Pe(t);if(!s||t.nodeName!==o||rn(r)||ut(t)){Yt(e,o,r);const i=Qt(e.selection.getRng()),l=s?[t,...n]:n,a=s&&ut(t)?on:nn;Ee.each(l,(t=>{a(e,t,o,r)})),e.selection.setRng(Wt(i))}else Vt(e)})(e,o,s,t,i):((e,t,n,o)=>{if(t!==e.getBody())if(t)if(t.nodeName!==n||rn(o)||ut(t)){const r=Qt(e.selection.getRng());ut(t)&&t.classList.forEach(((e,n,o)=>{e.startsWith("tox-")&&(o.remove(e),0===o.length&&t.removeAttribute("class"))})),Gt(e.dom,t,o);const s=e.dom.rename(t,n);tn(e.dom,s),e.selection.setRng(Wt(r)),Yt(e,n,o),vt(e,qt(n),s)}else Vt(e);else Yt(e,n,o),vt(e,qt(n),t)})(e,o,t,i)},ln=xe.DOM,an=(e,t)=>{const n=Ee.grep(e.select("ol,ul",t));Ee.each(n,(t=>{((e,t)=>{const n=t.parentElement;if(n&&"LI"===n.nodeName&&n.firstChild===t){const o=n.previousSibling;o&&"LI"===o.nodeName?(o.appendChild(t),Ke(e,n)&&ln.remove(n)):ln.setStyle(n,"listStyleType","none")}if(Pe(n)){const e=n.previousSibling;e&&"LI"===e.nodeName&&e.appendChild(t)}})(e,t)}))},dn=(e,t,n,o)=>{let r=t.startContainer;const s=t.startOffset;if(Be(r)&&(n?s0))return r;const i=e.schema.getNonEmptyElements();Me(r)&&(r=ve.getNode(r,s));const l=new Ce(r,o);n&&((e,t)=>!!He(t)&&e.isBlock(t.nextSibling)&&!He(t.previousSibling))(e.dom,r)&&l.next();const a=n?l.next.bind(l):l.prev2.bind(l);for(;r=a();){if("LI"===r.nodeName&&!r.hasChildNodes())return r;if(i[r.nodeName])return r;if(Be(r)&&r.data.length>0)return r}return null},cn=(e,t)=>{const n=t.childNodes;return 1===n.length&&!Pe(n[0])&&e.isBlock(n[0])},mn=e=>h.from(e).map($).filter(Z).exists((e=>((e,t=!1)=>{return ae(e)?e.dom.isContentEditable:(n=e,de(((e,t)=>_(e,t)),ue,n,"[contenteditable]",void 0)).fold(m(t),(e=>"true"===(e=>e.dom.contentEditable)(e)));var n})(e)&&!C(["details"],Q(e)))),un=(e,t,n)=>{let o;const r=cn(e,n)?n.firstChild:n;if(((e,t)=>{cn(e,t)&&mn(t.firstChild)&&e.remove(t.firstChild,!0)})(e,t),!Ke(e,t,!0))for(;o=t.firstChild;)r.appendChild(o)},pn=(e,t,n)=>{let o;const r=t.parentNode;if(!ze(e,t)||!ze(e,n))return;Pe(n.lastChild)&&(o=n.lastChild),r===n.lastChild&&He(r.previousSibling)&&e.remove(r.previousSibling);const s=n.lastChild;s&&He(s)&&t.hasChildNodes()&&e.remove(s),Ke(e,n,!0)&&fe($(n)),un(e,t,n),o&&n.appendChild(o);const i=((e,t)=>{const n=e.dom,o=t.dom;return n!==o&&n.contains(o)})($(n),$(t))?e.getParents(t,Pe,n):[];e.remove(t),S(i,(t=>{Ke(e,t)&&t!==e.getRoot()&&e.remove(t)}))},gn=(e,t)=>{const n=e.dom,o=e.selection,r=o.getStart(),s=at(e,r),i=n.getParent(o.getStart(),"LI",s);if(i){const r=i.parentElement;if(r===e.getBody()&&Ke(n,r))return!0;const l=ot(o.getRng()),a=n.getParent(dn(e,l,t,s),"LI",s),d=a&&(t?n.isChildOf(i,a):n.isChildOf(a,i));if(a&&a!==i&&!d)return e.undoManager.transact((()=>{var n,o;t?((e,t,n,o)=>{const r=e.dom;if(r.isEmpty(o))((e,t,n)=>{fe($(n)),pn(e.dom,t,n),e.selection.setCursorLocation(n,0)})(e,n,o);else{const s=Qt(t);pn(r,n,o),e.selection.setRng(Wt(s))}})(e,l,a,i):(null===(o=(n=i).parentNode)||void 0===o?void 0:o.firstChild)===n?Ft(e):((e,t,n,o)=>{const r=Qt(t);pn(e.dom,n,o);const s=Wt(r);e.selection.setRng(s)})(e,l,i,a)})),!0;if(d&&!t&&a!==i)return e.undoManager.transact((()=>{if(l.commonAncestorContainer.parentElement){const t=Qt(l),o=l.commonAncestorContainer.parentElement;un(n,l.commonAncestorContainer.parentElement,a),o.remove();const r=Wt(t);e.selection.setRng(r)}})),!0;if(!a&&!t&&0===l.startOffset&&0===l.endOffset)return e.undoManager.transact((()=>{Vt(e)})),!0}return!1},hn=e=>{const t=e.selection.getStart(),n=at(e,t);return e.dom.getParent(t,"LI,DT,DD",n)||lt(e).length>0},fn=(e,t)=>{const n=e.selection;return!ht(e,n.getNode())&&(n.isCollapsed()?((e,t)=>gn(e,t)||((e,t)=>{const n=e.dom,o=e.selection.getStart(),r=at(e,o),s=n.getParent(o,n.isBlock,r);if(s&&n.isEmpty(s,void 0,{checkRootAsContent:!0})){const o=ot(e.selection.getRng()),i=n.getParent(dn(e,o,t,r),"LI",r);if(i){const l=e=>C(["td","th","caption"],Q(e)),a=e=>e.dom===r;return!!((e,t,n=u)=>P(e,t,n).getOr(e.isNone()&&t.isNone()))(me($(i),l,a),me($(o.startContainer),l,a),H)&&(e.undoManager.transact((()=>{const o=i.parentNode;((e,t,n)=>{const o=e.getParent(t.parentNode,e.isBlock,n);e.remove(t),o&&e.isEmpty(o)&&e.remove(o)})(n,s,r),tn(n,o),e.selection.select(i,!0),e.selection.collapse(t)})),!0)}}return!1})(e,t))(e,t):(e=>!!hn(e)&&(e.undoManager.transact((()=>{e.execCommand("Delete"),an(e.dom,e.getBody())})),!0))(e))},yn=e=>{const t=x(Ct(e).split("")),n=N(t,((e,t)=>{const n=e.toUpperCase().charCodeAt(0)-"A".charCodeAt(0)+1;return Math.pow(26,t)*n}));return O(n,((e,t)=>e+t),0)},vn=e=>{if(--e<0)return"";{const t=e%26,n=Math.floor(e/26);return vn(n)+String.fromCharCode("A".charCodeAt(0)+t)}},Cn=e=>{const t=parseInt(e.start,10);return M(e.listStyleType,"upper-alpha")?vn(t):M(e.listStyleType,"lower-alpha")?vn(t).toLowerCase():e.start},bn=(e,t)=>()=>{const n=it(e);return l(n)&&n.nodeName===t},Nn=e=>{e.addCommand("mceListProps",(()=>{(e=>{const t=it(e);Re(t)&&!ht(e,t)&&e.windowManager.open({title:"List Properties",body:{type:"panel",items:[{type:"input",name:"start",label:"Start list at number",inputMode:"numeric"}]},initialData:{start:Cn({start:e.dom.getAttrib(t,"start","1"),listStyleType:h.from(e.dom.getStyle(t,"list-style-type"))})},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:t=>{(e=>{switch((e=>/^[0-9]+$/.test(e)?2:/^[A-Z]+$/.test(e)?0:/^[a-z]+$/.test(e)?1:e.length>0?4:3)(e)){case 2:return h.some({listStyleType:h.none(),start:e});case 0:return h.some({listStyleType:h.some("upper-alpha"),start:yn(e).toString()});case 1:return h.some({listStyleType:h.some("lower-alpha"),start:yn(e).toString()});case 3:return h.some({listStyleType:h.none(),start:""});case 4:return h.none()}})(t.getData().start).each((t=>{e.execCommand("mceListUpdate",!1,{attrs:{start:"1"===t.start?"":t.start},styles:{"list-style-type":t.listStyleType.getOr("")}})})),t.close()}})})(e)}))};var Sn=tinymce.util.Tools.resolve("tinymce.html.Node");const Ln=e=>3===e.type,On=e=>0===e.length,An=e=>{const t=(t,n)=>{const o=Sn.create("li");S(t,(e=>o.append(e))),n?e.insert(o,n,!0):e.append(o)},n=O(e.children(),((e,n)=>Ln(n)?[...e,n]:On(e)||Ln(n)?e:(t(e,n),[])),[]);On(n)||t(n)},Tn=(e,t)=>n=>(n.setEnabled(e.selection.isEditable()),ft(e,(o=>{n.setActive(pt(o.parents,t)),n.setEnabled(!ht(e,o.element)&&e.selection.isEditable())}))),wn=(e,t)=>n=>ft(e,(o=>n.setEnabled(pt(o.parents,t)&&!ht(e,o.element))));e.add("lists",(e=>((e=>{(0,e.options.register)("lists_indent_on_tab",{processor:"boolean",default:!0})})(e),(e=>{e.on("PreInit",(()=>{const{parser:t}=e;t.addNodeFilter("ul,ol",(e=>S(e,An)))}))})(e),e.hasPlugin("rtc",!0)?Nn(e):((e=>{We(e)&&(e=>{e.on("keydown",(t=>{t.keyCode!==be.TAB||be.metaKeyPressed(t)||e.undoManager.transact((()=>{(t.shiftKey?Ft(e):Ht(e))&&t.preventDefault()}))}))})(e),(e=>{e.on("ExecCommand",(t=>{const n=t.command.toLowerCase();"delete"!==n&&"forwarddelete"!==n||!hn(e)||an(e.dom,e.getBody())})),e.on("keydown",(t=>{t.keyCode===be.BACKSPACE?fn(e,!1)&&t.preventDefault():t.keyCode===be.DELETE&&fn(e,!0)&&t.preventDefault()}))})(e)})(e),(e=>{e.on("BeforeExecCommand",(t=>{const n=t.command.toLowerCase();"indent"===n?Ht(e):"outdent"===n&&Ft(e)})),e.addCommand("InsertUnorderedList",((t,n)=>{sn(e,"UL",n)})),e.addCommand("InsertOrderedList",((t,n)=>{sn(e,"OL",n)})),e.addCommand("InsertDefinitionList",((t,n)=>{sn(e,"DL",n)})),e.addCommand("RemoveList",(()=>{Vt(e)})),Nn(e),e.addCommand("mceListUpdate",((t,n)=>{r(n)&&((e,t)=>{const n=it(e);null===n||ht(e,n)||e.undoManager.transact((()=>{r(t.styles)&&e.dom.setStyles(n,t.styles),r(t.attrs)&&Le(t.attrs,((t,o)=>e.dom.setAttrib(n,o,t)))}))})(e,n)})),e.addQueryStateHandler("InsertUnorderedList",bn(e,"UL")),e.addQueryStateHandler("InsertOrderedList",bn(e,"OL")),e.addQueryStateHandler("InsertDefinitionList",bn(e,"DL"))})(e)),(e=>{const t=t=>()=>e.execCommand(t);e.hasPlugin("advlist")||(e.ui.registry.addToggleButton("numlist",{icon:"ordered-list",active:!1,tooltip:"Numbered list",onAction:t("InsertOrderedList"),onSetup:Tn(e,"OL")}),e.ui.registry.addToggleButton("bullist",{icon:"unordered-list",active:!1,tooltip:"Bullet list",onAction:t("InsertUnorderedList"),onSetup:Tn(e,"UL")}))})(e),(e=>{const t={text:"List properties...",icon:"ordered-list",onAction:()=>e.execCommand("mceListProps"),onSetup:wn(e,"OL")};e.ui.registry.addMenuItem("listprops",t),e.ui.registry.addContextMenu("lists",{update:t=>{const n=it(e,t);return Re(n)?["listprops"]:[]}})})(e),(e=>({backspaceDelete:t=>{fn(e,t)}}))(e))))}();
\ No newline at end of file
diff --git a/public/tinymce/plugins/media/plugin.min.js b/public/tinymce/plugins/media/plugin.min.js
new file mode 100644
index 00000000..dc10a167
--- /dev/null
+++ b/public/tinymce/plugins/media/plugin.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 7.2.1 (2024-07-03)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(r=o=e,(a=String).prototype.isPrototypeOf(r)||(null===(s=o.constructor)||void 0===s?void 0:s.name)===a.name)?"string":t;var r,o,a,s})(t)===e,r=t("string"),o=t("object"),a=t("array"),s=e=>!(e=>null==e)(e);class i{constructor(e,t){this.tag=e,this.value=t}static some(e){return new i(!0,e)}static none(){return i.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?i.some(e(this.value)):i.none()}bind(e){return this.tag?e(this.value):i.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:i.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:"Called getOrDie on None")}static from(e){return s(e)?i.some(e):i.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}i.singletonNone=new i(!1);const n=Array.prototype.push,l=(e,t)=>{for(let r=0,o=e.length;r{const t=[];for(let r=0,o=e.length;rh(e,t)?i.from(e[t]):i.none(),h=(e,t)=>u.call(e,t),p=e=>t=>t.options.get(e),g=p("audio_template_callback"),b=p("video_template_callback"),w=p("iframe_template_callback"),v=p("media_live_embeds"),f=p("media_filter_html"),y=p("media_url_resolver"),x=p("media_alt_source"),_=p("media_poster"),k=p("media_dimensions");var j=tinymce.util.Tools.resolve("tinymce.util.Tools"),O=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),A=tinymce.util.Tools.resolve("tinymce.html.DomParser");const S=O.DOM,$=e=>e.replace(/px$/,""),C=e=>{const t=e.attr("style"),r=t?S.parseStyle(t):{};return{type:"ephox-embed-iri",source:e.attr("data-ephox-embed-iri"),altsource:"",poster:"",width:d(r,"max-width").map($).getOr(""),height:d(r,"max-height").map($).getOr("")}},T=(e,t)=>{let r={};for(let o=A({validate:!1,forced_root_block:!1},t).parse(e);o;o=o.walk())if(1===o.type){const e=o.name;if(o.attr("data-ephox-embed-iri")){r=C(o);break}r.source||"param"!==e||(r.source=o.attr("movie")),"iframe"!==e&&"object"!==e&&"embed"!==e&&"video"!==e&&"audio"!==e||(r.type||(r.type=e),r=j.extend(o.attributes.map,r)),"source"===e&&(r.source?r.altsource||(r.altsource=o.attr("src")):r.source=o.attr("src")),"img"!==e||r.poster||(r.poster=o.attr("src"))}return r.source=r.source||r.src||"",r.altsource=r.altsource||"",r.poster=r.poster||"",r},z=e=>{var t;const r=null!==(t=e.toLowerCase().split(".").pop())&&void 0!==t?t:"";return d({mp3:"audio/mpeg",m4a:"audio/x-m4a",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"},r).getOr("")};var D=tinymce.util.Tools.resolve("tinymce.html.Node"),F=tinymce.util.Tools.resolve("tinymce.html.Serializer");const M=(e,t={})=>A({forced_root_block:!1,validate:!1,allow_conditional_comments:!0,...t},e),N=O.DOM,P=e=>/^[0-9.]+$/.test(e)?e+"px":e,R=(e,t)=>{const r=t.attr("style"),o=r?N.parseStyle(r):{};s(e.width)&&(o["max-width"]=P(e.width)),s(e.height)&&(o["max-height"]=P(e.height)),t.attr("style",N.serializeStyle(o))},E=["source","altsource"],U=(e,t,r,o)=>{let a=0,s=0;const i=M(o);i.addNodeFilter("source",(e=>a=e.length));const n=i.parse(e);for(let e=n;e;e=e.walk())if(1===e.type){const o=e.name;if(e.attr("data-ephox-embed-iri")){R(t,e);break}switch(o){case"video":case"object":case"embed":case"img":case"iframe":void 0!==t.height&&void 0!==t.width&&(e.attr("width",t.width),e.attr("height",t.height))}if(r)switch(o){case"video":e.attr("poster",t.poster),e.attr("src",null);for(let r=a;r<2;r++)if(t[E[r]]){const o=new D("source",1);o.attr("src",t[E[r]]),o.attr("type",t[E[r]+"mime"]||null),e.append(o)}break;case"iframe":e.attr("src",t.source);break;case"object":const r=e.getAll("img").length>0;if(t.poster&&!r){e.attr("src",t.poster);const r=new D("img",1);r.attr("src",t.poster),r.attr("width",t.width),r.attr("height",t.height),e.append(r)}break;case"source":if(s<2&&(e.attr("src",t[E[s]]),e.attr("type",t[E[s]+"mime"]||null),!t[E[s]])){e.remove();continue}s++;break;case"img":t.poster||e.remove()}}return F({},o).serialize(n)},L=[{regex:/youtu\.be\/([\w\-_\?&=.]+)/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$2?$4",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)\?h=(\w+)/,type:"iframe",w:425,h:350,url:"player.vimeo.com/video/$1?h=$2&title=0&byline=0&portrait=0&color=8dc7dc",allowFullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)\?h=(\w+)/,type:"iframe",w:425,h:350,url:"player.vimeo.com/video/$2?h=$3&title=0&byline=0",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowFullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"player.vimeo.com/video/$2?title=0&byline=0",allowFullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"www.dailymotion.com/embed/video/$1",allowFullscreen:!0},{regex:/dai\.ly\/([^_]+)/,type:"iframe",w:480,h:270,url:"www.dailymotion.com/embed/video/$1",allowFullscreen:!0}],I=(e,t)=>{const r=(e=>{const t=e.match(/^(https?:\/\/|www\.)(.+)$/i);return t&&t.length>1?"www."===t[1]?"https://":t[1]:"https://"})(t),o=e.regex.exec(t);let a=r+e.url;if(s(o))for(let e=0;eo[e]?o[e]:""));return a.replace(/\?$/,"")},B=e=>{const t=L.filter((t=>t.regex.test(e)));return t.length>0?j.extend({},t[0],{url:I(t[0],e)}):null},G=(e,t)=>{var r;const o=j.extend({},t);if(!o.source&&(j.extend(o,T(null!==(r=o.embed)&&void 0!==r?r:"",e.schema)),!o.source))return"";o.altsource||(o.altsource=""),o.poster||(o.poster=""),o.source=e.convertURL(o.source,"source"),o.altsource=e.convertURL(o.altsource,"source"),o.sourcemime=z(o.source),o.altsourcemime=z(o.altsource),o.poster=e.convertURL(o.poster,"poster");const a=B(o.source);if(a&&(o.source=a.url,o.type=a.type,o.allowfullscreen=a.allowFullscreen,o.width=o.width||String(a.w),o.height=o.height||String(a.h)),o.embed)return U(o.embed,o,!0,e.schema);{const t=g(e),r=b(e),a=w(e);return o.width=o.width||"300",o.height=o.height||"150",j.each(o,((t,r)=>{o[r]=e.dom.encode(""+t)})),"iframe"===o.type?((e,t)=>{if(t)return t(e);{const t=e.allowfullscreen?' allowFullscreen="1"':"";return'"}})(o,a):"application/x-shockwave-flash"===o.sourcemime?(e=>{let t='",t})(o):-1!==o.sourcemime.indexOf("audio")?((e,t)=>t?t(e):'")(o,t):((e,t)=>t?t(e):'")(o,r)}},W=e=>e.hasAttribute("data-mce-object")||e.hasAttribute("data-ephox-embed-iri"),q={},H=e=>t=>G(e,t),J=(e,t)=>{const r=y(e);return r?((e,t,r)=>new Promise(((o,a)=>{const s=r=>(r.html&&(q[e.source]=r),o({url:e.source,html:r.html?r.html:t(e)}));q[e.source]?s(q[e.source]):r({url:e.source}).then(s).catch(a)})))(t,H(e),r):((e,t)=>Promise.resolve({html:t(e),url:e.source}))(t,H(e))},K=(e,t)=>{const r={};return d(e,"dimensions").each((e=>{l(["width","height"],(o=>{d(t,o).orThunk((()=>d(e,o))).each((e=>r[o]=e))}))})),r},Q=(e,t)=>{const r=t&&"dimensions"!==t?((e,t)=>d(t,e).bind((e=>d(e,"meta"))))(t,e).getOr({}):{},a=((e,t,r)=>a=>{const s=()=>d(e,a),n=()=>d(t,a),l=e=>d(e,"value").bind((e=>e.length>0?i.some(e):i.none()));return{[a]:(a===r?s().bind((e=>o(e)?l(e).orThunk(n):n().orThunk((()=>i.from(e))))):n().orThunk((()=>s().bind((e=>o(e)?l(e):i.from(e)))))).getOr("")}})(e,r,t);return{...a("source"),...a("altsource"),...a("poster"),...a("embed"),...K(e,r)}},V=e=>{const t={...e,source:{value:d(e,"source").getOr("")},altsource:{value:d(e,"altsource").getOr("")},poster:{value:d(e,"poster").getOr("")}};return l(["width","height"],(r=>{d(e,r).each((e=>{const o=t.dimensions||{};o[r]=e,t.dimensions=o}))})),t},X=e=>t=>{const r=t&&t.msg?"Media embed handler error: "+t.msg:"Media embed handler threw unknown error.";e.notificationManager.open({type:"error",text:r})},Y=(e,t)=>o=>{if(r(o.url)&&o.url.trim().length>0){const r=o.html,a={...T(r,t.schema),source:o.url,embed:r};e.setData(V(a))}},Z=(e,t)=>{const r=e.dom.select("*[data-mce-object]");e.insertContent(t),((e,t)=>{const r=e.dom.select("*[data-mce-object]");for(let e=0;e=0;o--)t[e]===r[o]&&r.splice(o,1);e.selection.select(r[0])})(e,r),e.nodeChanged()},ee=(e,t)=>s(t)&&"ephox-embed-iri"===t&&s(B(e)),te=(e,t)=>((e,t)=>e.width!==t.width||e.height!==t.height)(e,t)&&ee(t.source,e.type),re=e=>{const t=(e=>{const t=e.selection.getNode(),r=W(t)?e.serializer.serialize(t,{selection:!0}):"",o=T(r,e.schema),a=(()=>{if(ee(o.source,o.type)){const r=e.dom.getRect(t);return{width:r.w.toString().replace(/px$/,""),height:r.h.toString().replace(/px$/,"")}}return{}})();return{embed:r,...o,...a}})(e),r=(e=>{let t=e;return{get:()=>t,set:e=>{t=e}}})(t),o=V(t),a=k(e)?[{type:"sizeinput",name:"dimensions",label:"Constrain proportions",constrain:!0}]:[],s={title:"General",name:"general",items:c([[{name:"source",type:"urlinput",filetype:"media",label:"Source",picker_text:"Browse files"}],a])},i=[];x(e)&&i.push({name:"altsource",type:"urlinput",filetype:"media",label:"Alternative source URL"}),_(e)&&i.push({name:"poster",type:"urlinput",filetype:"image",label:"Media poster (Image URL)"});const n={title:"Advanced",name:"advanced",items:i},l=[s,{title:"Embed",items:[{type:"textarea",name:"embed",label:"Paste your embed code below:"}]}];i.length>0&&l.push(n);const m={type:"tabpanel",tabs:l},u=e.windowManager.open({title:"Insert/Edit Media",size:"normal",body:m,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:t=>{const o=Q(t.getData());((e,t,r)=>{var o,a;t.embed=te(e,t)&&k(r)?G(r,{...t,embed:""}):U(null!==(o=t.embed)&&void 0!==o?o:"",t,!1,r.schema),t.embed&&(e.source===t.source||(a=t.source,h(q,a)))?Z(r,t.embed):J(r,t).then((e=>{Z(r,e.html)})).catch(X(r))})(r.get(),o,e),t.close()},onChange:(t,o)=>{switch(o.name){case"source":((t,r)=>{const o=Q(r.getData(),"source");t.source!==o.source&&(Y(u,e)({url:o.source,html:""}),J(e,o).then(Y(u,e)).catch(X(e)))})(r.get(),t);break;case"embed":(t=>{var r;const o=Q(t.getData()),a=T(null!==(r=o.embed)&&void 0!==r?r:"",e.schema);t.setData(V(a))})(t);break;case"dimensions":case"altsource":case"poster":((t,r,o)=>{const a=Q(t.getData(),r),s=te(o,a)&&k(e)?{...a,embed:""}:a,i=G(e,s);t.setData(V({...s,embed:i}))})(t,o.name,r.get())}r.set(Q(t.getData()))},initialData:o})};var oe=tinymce.util.Tools.resolve("tinymce.Env");const ae=e=>{const t=e.name;return"iframe"===t||"video"===t||"audio"===t},se=(e,t,r,o=null)=>{const a=e.attr(r);return s(a)?a:h(t,r)?null:o},ie=(e,t,r)=>{const o="img"===t.name||"video"===e.name,a=o?"300":null,s="audio"===e.name?"30":"150",i=o?s:null;t.attr({width:se(e,r,"width",a),height:se(e,r,"height",i)})},ne=(e,t)=>{const r=t.name,o=new D("img",1);return ce(e,t,o),ie(t,o,{}),o.attr({style:t.attr("style"),src:oe.transparentSrc,"data-mce-object":r,class:"mce-object mce-object-"+r}),o},le=(e,t)=>{var r;const o=t.name,a=new D("span",1);a.attr({contentEditable:"false",style:t.attr("style"),"data-mce-object":o,class:"mce-preview-object mce-object-"+o}),ce(e,t,a);const i=e.dom.parseStyle(null!==(r=t.attr("style"))&&void 0!==r?r:""),n=new D(o,1);if(ie(t,n,i),n.attr({src:t.attr("src"),style:t.attr("style"),class:t.attr("class")}),"iframe"===o)n.attr({allowfullscreen:t.attr("allowfullscreen"),frameborder:"0",sandbox:t.attr("sandbox"),referrerpolicy:t.attr("referrerpolicy")});else{l(["controls","crossorigin","currentTime","loop","muted","poster","preload"],(e=>{n.attr(e,t.attr(e))}));const r=a.attr("data-mce-html");s(r)&&((e,t,r,o)=>{const a=M(e.schema).parse(o,{context:t});for(;a.firstChild;)r.append(a.firstChild)})(e,o,n,unescape(r))}const c=new D("span",1);return c.attr("class","mce-shim"),a.append(n),a.append(c),a},ce=(e,t,r)=>{var o;const a=null!==(o=t.attributes)&&void 0!==o?o:[];let s=a.length;for(;s--;){const t=a[s].name;let o=a[s].value;"width"===t||"height"===t||"style"===t||(n="data-mce-",(i=t).length>=9&&i.substr(0,9)===n)||("data"!==t&&"src"!==t||(o=e.convertURL(o,t)),r.attr("data-mce-p-"+t,o))}var i,n;const c=F({inner:!0},e.schema),m=new D("div",1);l(t.children(),(e=>m.append(e)));const u=c.serialize(m);u&&(r.attr("data-mce-html",escape(u)),r.empty())},me=e=>{const t=e.attr("class");return r(t)&&/\btiny-pageembed\b/.test(t)},ue=e=>{let t=e;for(;t=t.parent;)if(t.attr("data-ephox-embed-iri")||me(t))return!0;return!1},de=(e,t,r)=>{const o=(0,e.options.get)("xss_sanitization"),a=f(e);return M(e.schema,{sanitize:o,validate:a}).parse(r,{context:t})},he=e=>t=>{const r=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",r),r(),()=>{e.off("NodeChange",r)}};e.add("media",(e=>((e=>{const t=e.options.register;t("audio_template_callback",{processor:"function"}),t("video_template_callback",{processor:"function"}),t("iframe_template_callback",{processor:"function"}),t("media_live_embeds",{processor:"boolean",default:!0}),t("media_filter_html",{processor:"boolean",default:!0}),t("media_url_resolver",{processor:"function"}),t("media_alt_source",{processor:"boolean",default:!0}),t("media_poster",{processor:"boolean",default:!0}),t("media_dimensions",{processor:"boolean",default:!0})})(e),(e=>{e.addCommand("mceMedia",(()=>{re(e)}))})(e),(e=>{const t=()=>e.execCommand("mceMedia");e.ui.registry.addToggleButton("media",{tooltip:"Insert/edit media",icon:"embed",onAction:t,onSetup:t=>{const r=e.selection;t.setActive(W(r.getNode()));const o=r.selectorChangedWithUnbind("img[data-mce-object],span[data-mce-object],div[data-ephox-embed-iri]",t.setActive).unbind,a=he(e)(t);return()=>{o(),a()}}}),e.ui.registry.addMenuItem("media",{icon:"embed",text:"Media...",onAction:t,onSetup:he(e)})})(e),(e=>{e.on("ResolveName",(e=>{let t;1===e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)}))})(e),(e=>{e.on("PreInit",(()=>{const{schema:t,serializer:r,parser:o}=e,a=t.getBoolAttrs();l("webkitallowfullscreen mozallowfullscreen".split(" "),(e=>{a[e]={}})),((e,t)=>{const r=m(e);for(let o=0,a=r.length;o{const o=t.getElementRule(r);o&&l(e,(e=>{o.attributes[e]={},o.attributesOrder.push(e)}))})),o.addNodeFilter("iframe,video,audio,object,embed",(e=>t=>{let r,o=t.length;for(;o--;)r=t[o],r.parent&&(r.parent.attr("data-mce-object")||(ae(r)&&v(e)?ue(r)||r.replace(le(e,r)):ue(r)||r.replace(ne(e,r))))})(e)),r.addAttributeFilter("data-mce-object",((t,r)=>{var o;let a=t.length;for(;a--;){const s=t[a];if(!s.parent)continue;const i=s.attr(r),n=new D(i,1);if("audio"!==i){const e=s.attr("class");e&&-1!==e.indexOf("mce-preview-object")&&s.firstChild?n.attr({width:s.firstChild.attr("width"),height:s.firstChild.attr("height")}):n.attr({width:s.attr("width"),height:s.attr("height")})}n.attr({style:s.attr("style")});const c=null!==(o=s.attributes)&&void 0!==o?o:[];let m=c.length;for(;m--;){const e=c[m].name;0===e.indexOf("data-mce-p-")&&n.attr(e.substr(11),c[m].value)}const u=s.attr("data-mce-html");if(u){const t=de(e,i,unescape(u));l(t.children(),(e=>n.append(e)))}s.replace(n)}}))})),e.on("SetContent",(()=>{const t=e.dom;l(t.select("span.mce-preview-object"),(e=>{0===t.select("span.mce-shim",e).length&&t.add(e,"span",{class:"mce-shim"})}))}))})(e),(e=>{e.on("mousedown",(t=>{const r=e.dom.getParent(t.target,".mce-preview-object");r&&"2"===e.dom.getAttrib(r,"data-mce-selected")&&t.stopImmediatePropagation()})),e.on("click keyup touchend",(()=>{const t=e.selection.getNode();t&&e.dom.hasClass(t,"mce-preview-object")&&e.dom.getAttrib(t,"data-mce-selected")&&t.setAttribute("data-mce-selected","2")})),e.on("ObjectResized",(t=>{const r=t.target;if(r.getAttribute("data-mce-object")){let o=r.getAttribute("data-mce-html");o&&(o=unescape(o),r.setAttribute("data-mce-html",escape(U(o,{width:String(t.width),height:String(t.height)},!1,e.schema))))}}))})(e),(e=>({showDialog:()=>{re(e)}}))(e))))}();
\ No newline at end of file
diff --git a/public/tinymce/plugins/nonbreaking/plugin.min.js b/public/tinymce/plugins/nonbreaking/plugin.min.js
new file mode 100644
index 00000000..25f2e0e2
--- /dev/null
+++ b/public/tinymce/plugins/nonbreaking/plugin.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 7.2.1 (2024-07-03)
+ */
+!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=n=>e=>typeof e===n,o=e("boolean"),a=e("number"),t=n=>e=>e.options.get(n),i=t("nonbreaking_force_tab"),s=t("nonbreaking_wrap"),r=(n,e)=>{let o="";for(let a=0;a{const o=s(n)||n.plugins.visualchars?`${r(" ",e)}`:r(" ",e);n.undoManager.transact((()=>n.insertContent(o)))};var l=tinymce.util.Tools.resolve("tinymce.util.VK");const u=n=>e=>{const o=()=>{e.setEnabled(n.selection.isEditable())};return n.on("NodeChange",o),o(),()=>{n.off("NodeChange",o)}};n.add("nonbreaking",(n=>{(n=>{const e=n.options.register;e("nonbreaking_force_tab",{processor:n=>o(n)?{value:n?3:0,valid:!0}:a(n)?{value:n,valid:!0}:{valid:!1,message:"Must be a boolean or number."},default:!1}),e("nonbreaking_wrap",{processor:"boolean",default:!0})})(n),(n=>{n.addCommand("mceNonBreaking",(()=>{c(n,1)}))})(n),(n=>{const e=()=>n.execCommand("mceNonBreaking");n.ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:e,onSetup:u(n)}),n.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:e,onSetup:u(n)})})(n),(n=>{const e=i(n);e>0&&n.on("keydown",(o=>{if(o.keyCode===l.TAB&&!o.isDefaultPrevented()){if(o.shiftKey)return;o.preventDefault(),o.stopImmediatePropagation(),c(n,e)}}))})(n)}))}();
\ No newline at end of file
diff --git a/public/tinymce/plugins/pagebreak/plugin.min.js b/public/tinymce/plugins/pagebreak/plugin.min.js
new file mode 100644
index 00000000..a5052959
--- /dev/null
+++ b/public/tinymce/plugins/pagebreak/plugin.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 7.2.1 (2024-07-03)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.Env");const t=e=>a=>a.options.get(e),n=t("pagebreak_separator"),o=t("pagebreak_split_block"),r="mce-pagebreak",s=e=>{const t=`
`;return e?`${t}
`:t},c=e=>a=>{const t=()=>{a.setEnabled(e.selection.isEditable())};return e.on("NodeChange",t),t(),()=>{e.off("NodeChange",t)}};e.add("pagebreak",(e=>{(e=>{const a=e.options.register;a("pagebreak_separator",{processor:"string",default:"\x3c!-- pagebreak --\x3e"}),a("pagebreak_split_block",{processor:"boolean",default:!1})})(e),(e=>{e.addCommand("mcePageBreak",(()=>{e.insertContent(s(o(e)))}))})(e),(e=>{const a=()=>e.execCommand("mcePageBreak");e.ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:a,onSetup:c(e)}),e.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:a,onSetup:c(e)})})(e),(e=>{const a=n(e),t=()=>o(e),c=new RegExp(a.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,(e=>"\\"+e)),"gi");e.on("BeforeSetContent",(e=>{e.content=e.content.replace(c,s(t()))})),e.on("PreInit",(()=>{e.serializer.addNodeFilter("img",(n=>{let o,s,c=n.length;for(;c--;)if(o=n[c],s=o.attr("class"),s&&-1!==s.indexOf(r)){const n=o.parent;if(n&&e.schema.getBlockElements()[n.name]&&t()){n.type=3,n.value=a,n.raw=!0,o.remove();continue}o.type=3,o.value=a,o.raw=!0}}))}))})(e),(e=>{e.on("ResolveName",(a=>{"IMG"===a.target.nodeName&&e.dom.hasClass(a.target,r)&&(a.name="pagebreak")}))})(e)}))}();
\ No newline at end of file
diff --git a/public/tinymce/plugins/preview/plugin.min.js b/public/tinymce/plugins/preview/plugin.min.js
new file mode 100644
index 00000000..3096240f
--- /dev/null
+++ b/public/tinymce/plugins/preview/plugin.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 7.2.1 (2024-07-03)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),o=tinymce.util.Tools.resolve("tinymce.util.Tools");const n=e=>t=>t.options.get(e),i=n("content_style"),s=n("content_css_cors"),c=n("body_class"),r=n("body_id");e.add("preview",(e=>{(e=>{e.addCommand("mcePreview",(()=>{(e=>{const n=(e=>{var n;let l="";const a=e.dom.encode,d=null!==(n=i(e))&&void 0!==n?n:"";l+='';const m=s(e)?' crossorigin="anonymous"':"";o.each(e.contentCSS,(t=>{l+='"})),d&&(l+='");const y=r(e),u=c(e),v='
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/tinymce/src/tinymce.ts b/src/components/tinymce/src/tinymce.ts
new file mode 100644
index 00000000..eb3964a6
--- /dev/null
+++ b/src/components/tinymce/src/tinymce.ts
@@ -0,0 +1,11 @@
+// Any plugins you want to setting has to be imported
+// Detail plugins list see https://www.tinymce.com/docs/plugins/
+// Custom builds see https://www.tinymce.com/download/custom-builds/
+// colorpicker/contextmenu/textcolor plugin is now built in to the core editor, please remove it from your editor configuration
+
+// quickbars 快捷栏
+export const plugins =
+ 'preview importcss searchreplace autolink autosave save directionality code visualblocks visualchars fullscreen image link media codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount help charmap emoticons accordion';
+
+export const toolbar =
+ 'undo redo | accordion accordionremove | blocks fontfamily fontsize | bold italic underline strikethrough | align numlist bullist | link image | table media | lineheight outdent indent| forecolor backcolor removeformat | charmap emoticons | code fullscreen preview | save print | pagebreak anchor codesample | ltr rtl';
diff --git a/src/service/api/system/oss.ts b/src/service/api/system/oss.ts
index f8e0f39d..2a1d1c52 100644
--- a/src/service/api/system/oss.ts
+++ b/src/service/api/system/oss.ts
@@ -1,3 +1,4 @@
+import type { AxiosRequestConfig, GenericAbortSignal } from 'axios';
import { request } from '@/service/request';
/** 获取文件管理列表 */
@@ -16,3 +17,37 @@ export function fetchBatchDeleteOss(ossIds: CommonType.IdType[]) {
method: 'delete'
});
}
+
+/** Axios上传进度事件 */
+export type AxiosProgressEvent = AxiosRequestConfig['onUploadProgress'];
+
+/** 默认上传结果 */
+export interface UploadResult {
+ url: string;
+ fileName: string;
+ ossId: string;
+}
+
+export interface UploadApiOptions {
+ onUploadProgress?: AxiosProgressEvent;
+ signal?: GenericAbortSignal;
+}
+
+/** 上传文件接口 */
+export function uploadApi(file: File | Blob, options?: UploadApiOptions) {
+ const { onUploadProgress, signal } = options ?? {};
+
+ const formData = new FormData();
+ formData.append('file', file);
+
+ return request({
+ url: '/resource/oss/upload',
+ method: 'post',
+ data: formData,
+ onUploadProgress,
+ headers: {
+ 'Content-Type': 'multipart/form-data'
+ },
+ signal
+ });
+}
diff --git a/src/typings/components.d.ts b/src/typings/components.d.ts
index e5c7e243..11ace286 100644
--- a/src/typings/components.d.ts
+++ b/src/typings/components.d.ts
@@ -20,6 +20,7 @@ declare module 'vue' {
DictRadio: typeof import('./../components/custom/dict-radio.vue')['default']
DictSelect: typeof import('./../components/custom/dict-select.vue')['default']
DictTag: typeof import('./../components/custom/dict-tag.vue')['default']
+ Editor: typeof import('./../components/tinymce/src/editor.vue')['default']
ExceptionBase: typeof import('./../components/common/exception-base.vue')['default']
FileUpload: typeof import('./../components/custom/file-upload.vue')['default']
FormTip: typeof import('./../components/custom/form-tip.vue')['default']
diff --git a/src/views/system/notice/modules/notice-operate-drawer.vue b/src/views/system/notice/modules/notice-operate-drawer.vue
index 64e27075..bd05d335 100644
--- a/src/views/system/notice/modules/notice-operate-drawer.vue
+++ b/src/views/system/notice/modules/notice-operate-drawer.vue
@@ -3,6 +3,7 @@ import { computed, reactive, watch } from 'vue';
import { fetchCreateNotice, fetchUpdateNotice } from '@/service/api/system/notice';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
+import { Tinymce } from '@/components/tinymce';
defineOptions({
name: 'NoticeOperateDrawer'
});
@@ -115,7 +116,7 @@ watch(visible, () => {
-
+