| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | (function () { | 
					
						
							|  |  |  | var tabfocus = (function () { | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     'use strict'; | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     var global$2 = tinymce.util.Tools.resolve('tinymce.EditorManager'); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     var global$3 = tinymce.util.Tools.resolve('tinymce.Env'); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     var global$4 = tinymce.util.Tools.resolve('tinymce.util.Delay'); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools'); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     var global$6 = tinymce.util.Tools.resolve('tinymce.util.VK'); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     var getTabFocusElements = function (editor) { | 
					
						
							|  |  |  |       return editor.getParam('tabfocus_elements', ':prev,:next'); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     var getTabFocus = function (editor) { | 
					
						
							|  |  |  |       return editor.getParam('tab_focus', getTabFocusElements(editor)); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     var Settings = { getTabFocus: getTabFocus }; | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     var DOM = global$1.DOM; | 
					
						
							|  |  |  |     var tabCancel = function (e) { | 
					
						
							|  |  |  |       if (e.keyCode === global$6.TAB && !e.ctrlKey && !e.altKey && !e.metaKey) { | 
					
						
							|  |  |  |         e.preventDefault(); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     }; | 
					
						
							|  |  |  |     var setup = function (editor) { | 
					
						
							|  |  |  |       function tabHandler(e) { | 
					
						
							|  |  |  |         var x, el, v, i; | 
					
						
							|  |  |  |         if (e.keyCode !== global$6.TAB || e.ctrlKey || e.altKey || e.metaKey || e.isDefaultPrevented()) { | 
					
						
							|  |  |  |           return; | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |         function find(direction) { | 
					
						
							|  |  |  |           el = DOM.select(':input:enabled,*[tabindex]:not(iframe)'); | 
					
						
							|  |  |  |           function canSelectRecursive(e) { | 
					
						
							|  |  |  |             return e.nodeName === 'BODY' || e.type !== 'hidden' && e.style.display !== 'none' && e.style.visibility !== 'hidden' && canSelectRecursive(e.parentNode); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |           } | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |           function canSelect(el) { | 
					
						
							|  |  |  |             return /INPUT|TEXTAREA|BUTTON/.test(el.tagName) && global$2.get(e.id) && el.tabIndex !== -1 && canSelectRecursive(el); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |           } | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |           global$5.each(el, function (e, i) { | 
					
						
							|  |  |  |             if (e.id === editor.id) { | 
					
						
							|  |  |  |               x = i; | 
					
						
							|  |  |  |               return false; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           }); | 
					
						
							|  |  |  |           if (direction > 0) { | 
					
						
							|  |  |  |             for (i = x + 1; i < el.length; i++) { | 
					
						
							|  |  |  |               if (canSelect(el[i])) { | 
					
						
							|  |  |  |                 return el[i]; | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           } else { | 
					
						
							|  |  |  |             for (i = x - 1; i >= 0; i--) { | 
					
						
							|  |  |  |               if (canSelect(el[i])) { | 
					
						
							|  |  |  |                 return el[i]; | 
					
						
							|  |  |  |               } | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |             } | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |           return null; | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |         v = global$5.explode(Settings.getTabFocus(editor)); | 
					
						
							|  |  |  |         if (v.length === 1) { | 
					
						
							|  |  |  |           v[1] = v[0]; | 
					
						
							|  |  |  |           v[0] = ':prev'; | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |         if (e.shiftKey) { | 
					
						
							|  |  |  |           if (v[0] === ':prev') { | 
					
						
							|  |  |  |             el = find(-1); | 
					
						
							|  |  |  |           } else { | 
					
						
							|  |  |  |             el = DOM.get(v[0]); | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |           if (v[1] === ':next') { | 
					
						
							|  |  |  |             el = find(1); | 
					
						
							|  |  |  |           } else { | 
					
						
							|  |  |  |             el = DOM.get(v[1]); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (el) { | 
					
						
							|  |  |  |           var focusEditor = global$2.get(el.id || el.name); | 
					
						
							|  |  |  |           if (el.id && focusEditor) { | 
					
						
							|  |  |  |             focusEditor.focus(); | 
					
						
							|  |  |  |           } else { | 
					
						
							|  |  |  |             global$4.setTimeout(function () { | 
					
						
							|  |  |  |               if (!global$3.webkit) { | 
					
						
							|  |  |  |                 window.focus(); | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |               el.focus(); | 
					
						
							|  |  |  |             }, 10); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           e.preventDefault(); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |       editor.on('init', function () { | 
					
						
							|  |  |  |         if (editor.inline) { | 
					
						
							|  |  |  |           DOM.setAttrib(editor.getBody(), 'tabIndex', null); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         editor.on('keyup', tabCancel); | 
					
						
							|  |  |  |         if (global$3.gecko) { | 
					
						
							|  |  |  |           editor.on('keypress keydown', tabHandler); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |           editor.on('keydown', tabHandler); | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |       }); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     var Keyboard = { setup: setup }; | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     global.add('tabfocus', function (editor) { | 
					
						
							|  |  |  |       Keyboard.setup(editor); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     function Plugin () { | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 20:56:22 +01:00
										 |  |  |     return Plugin; | 
					
						
							| 
									
										
										
										
											2019-03-12 09:27:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | }()); | 
					
						
							|  |  |  | })(); |