You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							53 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							53 lines
						
					
					
						
							1.1 KiB
						
					
					
				| /**
 | |
|  * preview plugin
 | |
|  * @param selector
 | |
|  * @param target_selector
 | |
|  */
 | |
| function Preview(selector, target_selector) {
 | |
| 
 | |
|     // get input element
 | |
|     function get_input($e) {
 | |
|         return $e.find(".js-preview-input").eq(0);
 | |
|     }
 | |
| 
 | |
|     // get result html container element
 | |
|     function get_container($t) {
 | |
|         if ($t.hasClass("js-preview-container")) {
 | |
|             return $t
 | |
|         }
 | |
|         return $t.find(".js-preview-container").eq(0);
 | |
|     }
 | |
| 
 | |
|     var $e = $(selector);
 | |
|     var $t = $(target_selector);
 | |
| 
 | |
|     var $ipt = get_input($t);
 | |
|     if (!$ipt.length) {
 | |
|         console.log("[preview]: no preview input");
 | |
|         return
 | |
|     }
 | |
|     var $cnt = get_container($t);
 | |
|     if (!$cnt.length) {
 | |
|         console.log("[preview]: no preview container");
 | |
|         return
 | |
|     }
 | |
| 
 | |
| 
 | |
|     // call api via ajax
 | |
|     $e.on("click", function () {
 | |
|         $.post("/api/v1/markdown", {
 | |
|             text: $ipt.val()
 | |
|         }, function (html) {
 | |
|             $cnt.html(html);
 | |
|         })
 | |
|     });
 | |
| 
 | |
|     console.log("[preview]: init preview @", selector, "&", target_selector);
 | |
| }
 | |
| 
 | |
| 
 | |
| $.fn.extend({
 | |
|     markdown_preview: function (target) {
 | |
|         Preview(this, target);
 | |
|     }
 | |
| });
 | |
| 
 |