|
@@ -0,0 +1,53 @@
|
|
|
+/**
|
|
|
+ * 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);
|
|
|
+ }
|
|
|
+});
|