| 
									
										
										
										
											2020-01-21 20:54:00 +01:00
										 |  |  | import appContext from "../services/app_context.js"; | 
					
						
							| 
									
										
										
										
											2019-06-10 22:45:03 +02:00
										 |  |  | import utils from "../services/utils.js"; | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | const $dialog = $("#note-source-dialog"); | 
					
						
							|  |  |  | const $noteSource = $("#note-source"); | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-20 21:40:47 +02:00
										 |  |  | export function showDialog() { | 
					
						
							| 
									
										
										
										
											2020-02-09 10:00:13 +01:00
										 |  |  |     utils.openDialog($dialog); | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-07 21:08:55 +01:00
										 |  |  |     const noteText = appContext.tabManager.getActiveTabNote().content; | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  |     $noteSource.text(formatHtml(noteText)); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | function formatHtml(str) { | 
					
						
							|  |  |  |     const div = document.createElement('div'); | 
					
						
							|  |  |  |     div.innerHTML = str.trim(); | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  |     return formatNode(div, 0).innerHTML.trim(); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | function formatNode(node, level) { | 
					
						
							|  |  |  |     const indentBefore = new Array(level++ + 1).join('  '); | 
					
						
							|  |  |  |     const indentAfter  = new Array(level - 1).join('  '); | 
					
						
							|  |  |  |     let textNode; | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-04 20:37:23 +02:00
										 |  |  |     for (let i = 0; i < node.children.length; i++) { | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  |         textNode = document.createTextNode('\n' + indentBefore); | 
					
						
							|  |  |  |         node.insertBefore(textNode, node.children[i]); | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  |         formatNode(node.children[i], level); | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  |         if (node.lastElementChild === node.children[i]) { | 
					
						
							|  |  |  |             textNode = document.createTextNode('\n' + indentAfter); | 
					
						
							|  |  |  |             node.appendChild(textNode); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-12-26 18:15:29 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  |     return node; | 
					
						
							| 
									
										
										
										
											2019-08-20 21:40:47 +02:00
										 |  |  | } |