Make diagram configurable
This commit is contained in:
		
							parent
							
								
									fd901e07ba
								
							
						
					
					
						commit
						bf778a9945
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,4 +1,5 @@
 | 
				
			|||||||
.project
 | 
					.project
 | 
				
			||||||
 | 
					.idea
 | 
				
			||||||
.settings
 | 
					.settings
 | 
				
			||||||
node_modules
 | 
					node_modules
 | 
				
			||||||
Thumbs.db
 | 
					Thumbs.db
 | 
				
			||||||
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1813
									
								
								public/res/editor.js
									
									
									
									
									
								
							
							
						
						
									
										1813
									
								
								public/res/editor.js
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,158 +1,226 @@
 | 
				
			|||||||
/*globals Markdown */
 | 
					/*globals Markdown */
 | 
				
			||||||
define([
 | 
					define([
 | 
				
			||||||
    "jquery",
 | 
						"jquery",
 | 
				
			||||||
    "underscore",
 | 
						"underscore",
 | 
				
			||||||
    "utils",
 | 
						"utils",
 | 
				
			||||||
    "logger",
 | 
						"logger",
 | 
				
			||||||
    "classes/Extension",
 | 
						"classes/Extension",
 | 
				
			||||||
    "text!html/markdownExtraSettingsBlock.html",
 | 
						"text!html/markdownExtraSettingsBlock.html",
 | 
				
			||||||
    'google-code-prettify',
 | 
						'google-code-prettify',
 | 
				
			||||||
    'highlightjs',
 | 
						'highlightjs',
 | 
				
			||||||
    'crel',
 | 
						'crel',
 | 
				
			||||||
    'sequence-diagram',
 | 
						'sequence-diagram',
 | 
				
			||||||
    'flow-chart',
 | 
						'flow-chart',
 | 
				
			||||||
    'pagedown-extra',
 | 
						'text!html/tooltipMarkdownExtraDiagrams.html',
 | 
				
			||||||
], function($, _, utils, logger, Extension, markdownExtraSettingsBlockHTML, prettify, hljs, crel, sequenceDiagram, flowChart) {
 | 
						'pagedown-extra'
 | 
				
			||||||
 | 
					], function($, _, utils, logger, Extension, markdownExtraSettingsBlockHTML, prettify, hljs, crel, sequenceDiagram, flowChart, tooltipMarkdownExtraDiagramsHTML) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var markdownExtra = new Extension("markdownExtra", "Markdown Extra", true);
 | 
						var markdownExtra = new Extension("markdownExtra", "Markdown Extra", true);
 | 
				
			||||||
    markdownExtra.settingsBlock = markdownExtraSettingsBlockHTML;
 | 
						markdownExtra.settingsBlock = markdownExtraSettingsBlockHTML;
 | 
				
			||||||
    markdownExtra.defaultConfig = {
 | 
						markdownExtra.defaultConfig = {
 | 
				
			||||||
        extensions: [
 | 
							extensions: [
 | 
				
			||||||
            "fenced_code_gfm",
 | 
								"fenced_code_gfm",
 | 
				
			||||||
            "tables",
 | 
								"tables",
 | 
				
			||||||
            "def_list",
 | 
								"def_list",
 | 
				
			||||||
            "attr_list",
 | 
								"attr_list",
 | 
				
			||||||
            "footnotes",
 | 
								"footnotes",
 | 
				
			||||||
            "smartypants",
 | 
								"smartypants",
 | 
				
			||||||
            "strikethrough",
 | 
								"strikethrough",
 | 
				
			||||||
            "newlines",
 | 
								"newlines"
 | 
				
			||||||
        ],
 | 
							],
 | 
				
			||||||
        intraword: true,
 | 
							intraword: true,
 | 
				
			||||||
        comments: true,
 | 
							comments: true,
 | 
				
			||||||
        highlighter: "prettify"
 | 
							highlighter: "prettify"
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    markdownExtra.onLoadSettings = function() {
 | 
						markdownExtra.onLoadSettings = function() {
 | 
				
			||||||
        function hasExtension(extensionName) {
 | 
							function hasExtension(extensionName) {
 | 
				
			||||||
            return _.some(markdownExtra.config.extensions, function(extension) {
 | 
								return _.some(markdownExtra.config.extensions, function(extension) {
 | 
				
			||||||
                return extension == extensionName;
 | 
									return extension == extensionName;
 | 
				
			||||||
            });
 | 
								});
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
        utils.setInputChecked("#input-markdownextra-fencedcodegfm", hasExtension("fenced_code_gfm"));
 | 
					 | 
				
			||||||
        utils.setInputChecked("#input-markdownextra-tables", hasExtension("tables"));
 | 
					 | 
				
			||||||
        utils.setInputChecked("#input-markdownextra-deflist", hasExtension("def_list"));
 | 
					 | 
				
			||||||
        utils.setInputChecked("#input-markdownextra-attrlist", hasExtension("attr_list"));
 | 
					 | 
				
			||||||
        utils.setInputChecked("#input-markdownextra-footnotes", hasExtension("footnotes"));
 | 
					 | 
				
			||||||
        utils.setInputChecked("#input-markdownextra-smartypants", hasExtension("smartypants"));
 | 
					 | 
				
			||||||
        utils.setInputChecked("#input-markdownextra-strikethrough", hasExtension("strikethrough"));
 | 
					 | 
				
			||||||
        utils.setInputChecked("#input-markdownextra-newlines", hasExtension("newlines"));
 | 
					 | 
				
			||||||
        utils.setInputChecked("#input-markdownextra-intraword", markdownExtra.config.intraword);
 | 
					 | 
				
			||||||
        utils.setInputChecked("#input-markdownextra-comments", markdownExtra.config.comments);
 | 
					 | 
				
			||||||
        utils.setInputValue("#input-markdownextra-highlighter", markdownExtra.config.highlighter);
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    markdownExtra.onSaveSettings = function(newConfig) {
 | 
							utils.setInputChecked("#input-markdownextra-fencedcodegfm", hasExtension("fenced_code_gfm"));
 | 
				
			||||||
        newConfig.extensions = [];
 | 
							utils.setInputChecked("#input-markdownextra-tables", hasExtension("tables"));
 | 
				
			||||||
        utils.getInputChecked("#input-markdownextra-fencedcodegfm") && newConfig.extensions.push("fenced_code_gfm");
 | 
							utils.setInputChecked("#input-markdownextra-deflist", hasExtension("def_list"));
 | 
				
			||||||
        utils.getInputChecked("#input-markdownextra-tables") && newConfig.extensions.push("tables");
 | 
							utils.setInputChecked("#input-markdownextra-attrlist", hasExtension("attr_list"));
 | 
				
			||||||
        utils.getInputChecked("#input-markdownextra-deflist") && newConfig.extensions.push("def_list");
 | 
							utils.setInputChecked("#input-markdownextra-footnotes", hasExtension("footnotes"));
 | 
				
			||||||
        utils.getInputChecked("#input-markdownextra-attrlist") && newConfig.extensions.push("attr_list");
 | 
							utils.setInputChecked("#input-markdownextra-smartypants", hasExtension("smartypants"));
 | 
				
			||||||
        utils.getInputChecked("#input-markdownextra-footnotes") && newConfig.extensions.push("footnotes");
 | 
							utils.setInputChecked("#input-markdownextra-strikethrough", hasExtension("strikethrough"));
 | 
				
			||||||
        utils.getInputChecked("#input-markdownextra-smartypants") && newConfig.extensions.push("smartypants");
 | 
							utils.setInputChecked("#input-markdownextra-newlines", hasExtension("newlines"));
 | 
				
			||||||
        utils.getInputChecked("#input-markdownextra-strikethrough") && newConfig.extensions.push("strikethrough");
 | 
							utils.setInputChecked("#input-markdownextra-intraword", markdownExtra.config.intraword);
 | 
				
			||||||
        utils.getInputChecked("#input-markdownextra-newlines") && newConfig.extensions.push("newlines");
 | 
							utils.setInputChecked("#input-markdownextra-comments", markdownExtra.config.comments);
 | 
				
			||||||
        newConfig.intraword = utils.getInputChecked("#input-markdownextra-intraword");
 | 
							utils.setInputValue("#input-markdownextra-highlighter", markdownExtra.config.highlighter);
 | 
				
			||||||
        newConfig.comments = utils.getInputChecked("#input-markdownextra-comments");
 | 
							utils.setInputChecked("#input-markdownextra-diagrams", markdownExtra.config.diagrams);
 | 
				
			||||||
        newConfig.highlighter = utils.getInputValue("#input-markdownextra-highlighter");
 | 
						};
 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var eventMgr;
 | 
						markdownExtra.onSaveSettings = function(newConfig) {
 | 
				
			||||||
    markdownExtra.onEventMgrCreated = function(eventMgrParameter) {
 | 
							newConfig.extensions = [];
 | 
				
			||||||
        eventMgr = eventMgrParameter;
 | 
							utils.getInputChecked("#input-markdownextra-fencedcodegfm") && newConfig.extensions.push("fenced_code_gfm");
 | 
				
			||||||
    };
 | 
							utils.getInputChecked("#input-markdownextra-tables") && newConfig.extensions.push("tables");
 | 
				
			||||||
 | 
							utils.getInputChecked("#input-markdownextra-deflist") && newConfig.extensions.push("def_list");
 | 
				
			||||||
 | 
							utils.getInputChecked("#input-markdownextra-attrlist") && newConfig.extensions.push("attr_list");
 | 
				
			||||||
 | 
							utils.getInputChecked("#input-markdownextra-footnotes") && newConfig.extensions.push("footnotes");
 | 
				
			||||||
 | 
							utils.getInputChecked("#input-markdownextra-smartypants") && newConfig.extensions.push("smartypants");
 | 
				
			||||||
 | 
							utils.getInputChecked("#input-markdownextra-strikethrough") && newConfig.extensions.push("strikethrough");
 | 
				
			||||||
 | 
							utils.getInputChecked("#input-markdownextra-newlines") && newConfig.extensions.push("newlines");
 | 
				
			||||||
 | 
							newConfig.intraword = utils.getInputChecked("#input-markdownextra-intraword");
 | 
				
			||||||
 | 
							newConfig.comments = utils.getInputChecked("#input-markdownextra-comments");
 | 
				
			||||||
 | 
							newConfig.highlighter = utils.getInputValue("#input-markdownextra-highlighter");
 | 
				
			||||||
 | 
							newConfig.diagrams = utils.getInputChecked("#input-markdownextra-diagrams");
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var previewContentsElt;
 | 
						var eventMgr;
 | 
				
			||||||
    markdownExtra.onReady = function() {
 | 
						markdownExtra.onEventMgrCreated = function(eventMgrParameter) {
 | 
				
			||||||
        previewContentsElt = document.getElementById('preview-contents');
 | 
							eventMgr = eventMgrParameter;
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    markdownExtra.onPagedownConfigure = function(editor) {
 | 
						var previewContentsElt;
 | 
				
			||||||
        var converter = editor.getConverter();
 | 
						markdownExtra.onReady = function() {
 | 
				
			||||||
        if(markdownExtra.config.intraword === true) {
 | 
							previewContentsElt = document.getElementById('preview-contents');
 | 
				
			||||||
            var converterOptions = {
 | 
							utils.createTooltip(".tooltip-markdown-extra-diagrams", tooltipMarkdownExtraDiagramsHTML);
 | 
				
			||||||
                _DoItalicsAndBold: function(text) {
 | 
						};
 | 
				
			||||||
                    text = text.replace(/([^\w*]|^)(\*\*|__)(?=\S)(.+?[*_]*)(?=\S)\2(?=[^\w*]|$)/g, "$1<strong>$3</strong>");
 | 
					 | 
				
			||||||
                    text = text.replace(/([^\w*]|^)(\*|_)(?=\S)(.+?)(?=\S)\2(?=[^\w*]|$)/g, "$1<em>$3</em>");
 | 
					 | 
				
			||||||
                    return text;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
            converter.setOptions(converterOptions);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if(markdownExtra.config.comments === true) {
 | 
					 | 
				
			||||||
            converter.hooks.chain("postConversion", function(text) {
 | 
					 | 
				
			||||||
                return text.replace(/<!--.*?-->/g, function(wholeMatch) {
 | 
					 | 
				
			||||||
                    return wholeMatch.replace(/^<!---(.+?)-?-->$/, ' <span class="comment label label-danger">$1</span> ');
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var extraOptions = {
 | 
						var onAsyncPreview = function(cb) {
 | 
				
			||||||
            extensions: markdownExtra.config.extensions
 | 
							cb();
 | 
				
			||||||
        };
 | 
						};
 | 
				
			||||||
 | 
						markdownExtra.onAsyncPreview = function(cb) {
 | 
				
			||||||
 | 
							onAsyncPreview(cb);
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        function doSequenceDiagrams() {
 | 
						var extraOptions;
 | 
				
			||||||
            _.each(previewContentsElt.querySelectorAll('.prettyprint > .language-sequence'), function(elt) {
 | 
						markdownExtra.onInit = function() {
 | 
				
			||||||
                try {
 | 
							var sequenceDiagramEltList, flowChartEltList, highlightEltList, prettifyEltList;
 | 
				
			||||||
                    var diagram = sequenceDiagram.parse(elt.textContent);
 | 
							extraOptions = {
 | 
				
			||||||
                    var preElt = elt.parentNode;
 | 
								extensions: markdownExtra.config.extensions
 | 
				
			||||||
                    var containerElt = crel('div', {
 | 
							};
 | 
				
			||||||
                        class: 'sequence-diagram'
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                    preElt.parentNode.replaceChild(containerElt, preElt);
 | 
					 | 
				
			||||||
                    diagram.drawSVG(containerElt, {
 | 
					 | 
				
			||||||
                        theme: 'simple'
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                catch(e) {
 | 
					 | 
				
			||||||
                    console.error(e);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
            _.each(previewContentsElt.querySelectorAll('.prettyprint > .language-flow'), function(elt) {
 | 
					 | 
				
			||||||
                try {
 | 
					 | 
				
			||||||
                    var chart = flowChart.parse(elt.textContent);
 | 
					 | 
				
			||||||
                    var preElt = elt.parentNode;
 | 
					 | 
				
			||||||
                    var containerElt = crel('div', {
 | 
					 | 
				
			||||||
                        class: 'flow-chart'
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                    preElt.parentNode.replaceChild(containerElt, preElt);
 | 
					 | 
				
			||||||
                    chart.drawSVG(containerElt, {
 | 
					 | 
				
			||||||
                        'line-width': 2
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                catch(e) {
 | 
					 | 
				
			||||||
                    console.error(e);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if(markdownExtra.config.highlighter == "highlight") {
 | 
					 | 
				
			||||||
            extraOptions.highlighter = "prettify";
 | 
					 | 
				
			||||||
            editor.hooks.chain("onPreviewRefresh", function() {
 | 
					 | 
				
			||||||
                doSequenceDiagrams();
 | 
					 | 
				
			||||||
                _.each(previewContentsElt.querySelectorAll('.prettyprint > code'), function(elt) {
 | 
					 | 
				
			||||||
                    !elt.highlighted && hljs.highlightBlock(elt);
 | 
					 | 
				
			||||||
                    elt.highlighted = true;
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        else if(markdownExtra.config.highlighter == "prettify") {
 | 
					 | 
				
			||||||
            extraOptions.highlighter = "prettify";
 | 
					 | 
				
			||||||
            editor.hooks.chain("onPreviewRefresh", function() {
 | 
					 | 
				
			||||||
                doSequenceDiagrams();
 | 
					 | 
				
			||||||
                prettify.prettyPrint();
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        Markdown.Extra.init(converter, extraOptions);
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return markdownExtra;
 | 
							function doSequenceDiagram(cb) {
 | 
				
			||||||
 | 
								if(sequenceDiagramEltList.length === 0) {
 | 
				
			||||||
 | 
									return cb();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								var sequenceDiagramElt = sequenceDiagramEltList.pop();
 | 
				
			||||||
 | 
								try {
 | 
				
			||||||
 | 
									var diagram = sequenceDiagram.parse(sequenceDiagramElt.textContent);
 | 
				
			||||||
 | 
									var preElt = sequenceDiagramElt.parentNode;
 | 
				
			||||||
 | 
									var containerElt = crel('div', {
 | 
				
			||||||
 | 
										class: 'sequence-diagram'
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
									preElt.parentNode.replaceChild(containerElt, preElt);
 | 
				
			||||||
 | 
									diagram.drawSVG(containerElt, {
 | 
				
			||||||
 | 
										theme: 'simple'
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								catch(e) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								_.delay(doSequenceDiagram, 0, cb);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							function doFlowChart(cb) {
 | 
				
			||||||
 | 
								if(flowChartEltList.length === 0) {
 | 
				
			||||||
 | 
									return cb();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								var flowChartElt = flowChartEltList.pop();
 | 
				
			||||||
 | 
								try {
 | 
				
			||||||
 | 
									var chart = flowChart.parse(flowChartElt.textContent);
 | 
				
			||||||
 | 
									var preElt = flowChartElt.parentNode;
 | 
				
			||||||
 | 
									var containerElt = crel('div', {
 | 
				
			||||||
 | 
										class: 'flow-chart'
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
									preElt.parentNode.replaceChild(containerElt, preElt);
 | 
				
			||||||
 | 
									chart.drawSVG(containerElt, {
 | 
				
			||||||
 | 
										'line-width': 2
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								catch(e) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								_.delay(doFlowChart, 0, cb);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							function doHighlight(cb) {
 | 
				
			||||||
 | 
								if(highlightEltList.length === 0) {
 | 
				
			||||||
 | 
									return cb();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								var highlightElt = highlightEltList.pop();
 | 
				
			||||||
 | 
								hljs.highlightBlock(highlightElt);
 | 
				
			||||||
 | 
								highlightElt.highlighted = true;
 | 
				
			||||||
 | 
								_.delay(doHighlight, 0, cb);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							function doPrettify(cb) {
 | 
				
			||||||
 | 
								if(prettifyEltList.length === 0) {
 | 
				
			||||||
 | 
									return cb();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								var prettifyElt = prettifyEltList.pop();
 | 
				
			||||||
 | 
								var html = prettify.prettyPrintOne(prettifyElt.innerHTML);
 | 
				
			||||||
 | 
								prettifyElt.innerHTML = html;
 | 
				
			||||||
 | 
								prettifyElt.highlighted = true;
 | 
				
			||||||
 | 
								_.delay(doPrettify, 0, cb);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(markdownExtra.config.highlighter == "highlight") {
 | 
				
			||||||
 | 
								extraOptions.highlighter = "prettify";
 | 
				
			||||||
 | 
								var afterHighlight = onAsyncPreview;
 | 
				
			||||||
 | 
								onAsyncPreview = function(cb) {
 | 
				
			||||||
 | 
									highlightEltList = _.filter(previewContentsElt.querySelectorAll('.prettyprint > code'), function(elt) {
 | 
				
			||||||
 | 
										return !elt.highlighted;
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
									_.delay(doHighlight, 0, function() {
 | 
				
			||||||
 | 
										afterHighlight(cb);
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(markdownExtra.config.highlighter == "prettify") {
 | 
				
			||||||
 | 
								extraOptions.highlighter = "prettify";
 | 
				
			||||||
 | 
								var afterPrettify = onAsyncPreview;
 | 
				
			||||||
 | 
								onAsyncPreview = function(cb) {
 | 
				
			||||||
 | 
									prettifyEltList = _.filter(previewContentsElt.querySelectorAll('.prettyprint > code'), function(elt) {
 | 
				
			||||||
 | 
										return !elt.highlighted;
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
									_.delay(doPrettify, 0, function() {
 | 
				
			||||||
 | 
										afterPrettify(cb);
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(markdownExtra.config.diagrams) {
 | 
				
			||||||
 | 
								extraOptions.highlighter = "prettify";
 | 
				
			||||||
 | 
								var afterDiagrams = onAsyncPreview;
 | 
				
			||||||
 | 
								onAsyncPreview = function(cb) {
 | 
				
			||||||
 | 
									sequenceDiagramEltList = Array.prototype.slice.call(previewContentsElt.querySelectorAll('.prettyprint > .language-sequence'));
 | 
				
			||||||
 | 
									flowChartEltList = Array.prototype.slice.call(previewContentsElt.querySelectorAll('.prettyprint > .language-flow'));
 | 
				
			||||||
 | 
									_.delay(doSequenceDiagram, 0, function() {
 | 
				
			||||||
 | 
										_.delay(doFlowChart, 0, function() {
 | 
				
			||||||
 | 
											afterDiagrams(cb);
 | 
				
			||||||
 | 
										});
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						markdownExtra.onPagedownConfigure = function(editor) {
 | 
				
			||||||
 | 
							var converter = editor.getConverter();
 | 
				
			||||||
 | 
							if(markdownExtra.config.intraword === true) {
 | 
				
			||||||
 | 
								var converterOptions = {
 | 
				
			||||||
 | 
									_DoItalicsAndBold: function(text) {
 | 
				
			||||||
 | 
										text = text.replace(/([^\w*]|^)(\*\*|__)(?=\S)(.+?[*_]*)(?=\S)\2(?=[^\w*]|$)/g, "$1<strong>$3</strong>");
 | 
				
			||||||
 | 
										text = text.replace(/([^\w*]|^)(\*|_)(?=\S)(.+?)(?=\S)\2(?=[^\w*]|$)/g, "$1<em>$3</em>");
 | 
				
			||||||
 | 
										return text;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
								converter.setOptions(converterOptions);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if(markdownExtra.config.comments === true) {
 | 
				
			||||||
 | 
								converter.hooks.chain("postConversion", function(text) {
 | 
				
			||||||
 | 
									return text.replace(/<!--.*?-->/g, function(wholeMatch) {
 | 
				
			||||||
 | 
										return wholeMatch.replace(/^<!---(.+?)-?-->$/, ' <span class="comment label label-danger">$1</span> ');
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							Markdown.Extra.init(converter, extraOptions);
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return markdownExtra;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
				
			|||||||
@ -1,73 +1,78 @@
 | 
				
			|||||||
define([
 | 
					define([
 | 
				
			||||||
    "jquery",
 | 
						"jquery",
 | 
				
			||||||
    "underscore",
 | 
						"underscore",
 | 
				
			||||||
    "utils",
 | 
						"utils",
 | 
				
			||||||
    "mousetrap",
 | 
						"mousetrap",
 | 
				
			||||||
    "classes/Extension",
 | 
						"classes/Extension",
 | 
				
			||||||
    "text!extensions/shortcutsDefaultMapping.settings",
 | 
						"text!extensions/shortcutsDefaultMapping.settings",
 | 
				
			||||||
    "text!html/shortcutsSettingsBlock.html",
 | 
						"text!html/shortcutsSettingsBlock.html",
 | 
				
			||||||
], function($, _, utils, mousetrap, Extension, shortcutsDefaultMapping, shortcutsSettingsBlockHTML) {
 | 
						"text!html/tooltipSettingsShortcutsExtension.html"
 | 
				
			||||||
 | 
					], function($, _, utils, mousetrap, Extension, shortcutsDefaultMapping, shortcutsSettingsBlockHTML, tooltipSettingsShortcutsExtensionHTML) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var shortcuts = new Extension("shortcuts", "Shortcuts", true, true);
 | 
						var shortcuts = new Extension("shortcuts", "Shortcuts", true, true);
 | 
				
			||||||
    shortcuts.settingsBlock = shortcutsSettingsBlockHTML;
 | 
						shortcuts.settingsBlock = shortcutsSettingsBlockHTML;
 | 
				
			||||||
    shortcuts.defaultConfig = {
 | 
						shortcuts.defaultConfig = {
 | 
				
			||||||
        mapping: shortcutsDefaultMapping,
 | 
							mapping: shortcutsDefaultMapping
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var eventMgr;
 | 
						var eventMgr;
 | 
				
			||||||
    var pagedownEditor;
 | 
						var pagedownEditor;
 | 
				
			||||||
    shortcuts.onEventMgrCreated = function(eventMgrParameter) {
 | 
						shortcuts.onEventMgrCreated = function(eventMgrParameter) {
 | 
				
			||||||
        eventMgr = eventMgrParameter;
 | 
							eventMgr = eventMgrParameter;
 | 
				
			||||||
        eventMgr.addListener('onPagedownConfigure', function(pagedownEditorParam) {
 | 
							eventMgr.addListener('onPagedownConfigure', function(pagedownEditorParam) {
 | 
				
			||||||
            pagedownEditor = pagedownEditorParam;
 | 
								pagedownEditor = pagedownEditorParam;
 | 
				
			||||||
        });
 | 
							});
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shortcuts.onLoadSettings = function() {
 | 
						shortcuts.onLoadSettings = function() {
 | 
				
			||||||
        utils.setInputValue("#textarea-shortcuts-mapping", shortcuts.config.mapping);
 | 
							utils.setInputValue("#textarea-shortcuts-mapping", shortcuts.config.mapping);
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shortcuts.onSaveSettings = function(newConfig, event) {
 | 
						shortcuts.onSaveSettings = function(newConfig, event) {
 | 
				
			||||||
        newConfig.code = utils.getInputValue("#textarea-shortcuts-mapping");
 | 
							newConfig.code = utils.getInputValue("#textarea-shortcuts-mapping");
 | 
				
			||||||
        try {
 | 
							try {
 | 
				
			||||||
            /*jshint evil: true */
 | 
								/*jshint evil: true */
 | 
				
			||||||
            eval('var test = ' + newConfig.code);
 | 
								eval('var test = ' + newConfig.code);
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
        catch(e) {
 | 
							catch(e) {
 | 
				
			||||||
            eventMgr.onError(e);
 | 
								eventMgr.onError(e);
 | 
				
			||||||
            // Mark the textarea as error
 | 
								// Mark the textarea as error
 | 
				
			||||||
            utils.getInputTextValue("#textarea-shortcuts-mapping", event, /^$/);
 | 
								utils.getInputTextValue("#textarea-shortcuts-mapping", event, /^$/);
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*jshint unused:false */
 | 
						/*jshint unused:false */
 | 
				
			||||||
    function bindPagedownButton(buttonName) {
 | 
						function bindPagedownButton(buttonName) {
 | 
				
			||||||
        return function(evt) {
 | 
							return function(evt) {
 | 
				
			||||||
            pagedownEditor.uiManager.doClick(pagedownEditor.uiManager.buttons[buttonName]);
 | 
								pagedownEditor.uiManager.doClick(pagedownEditor.uiManager.buttons[buttonName]);
 | 
				
			||||||
            evt.preventDefault();
 | 
								evt.preventDefault();
 | 
				
			||||||
        };
 | 
							};
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function expand(text, replacement) {
 | 
						function expand(text, replacement) {
 | 
				
			||||||
        utils.defer(function() {
 | 
							utils.defer(function() {
 | 
				
			||||||
            require('editor').replacePreviousText(text, replacement);
 | 
								require('editor').replacePreviousText(text, replacement);
 | 
				
			||||||
        });
 | 
							});
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*jshint unused:true */
 | 
						/*jshint unused:true */
 | 
				
			||||||
    shortcuts.onInit = function() {
 | 
						shortcuts.onInit = function() {
 | 
				
			||||||
        try {
 | 
							try {
 | 
				
			||||||
            /*jshint evil: true */
 | 
								/*jshint evil: true */
 | 
				
			||||||
            var shortcutMap;
 | 
								var shortcutMap;
 | 
				
			||||||
            eval('shortcutMap = ' + shortcuts.config.mapping);
 | 
								eval('shortcutMap = ' + shortcuts.config.mapping);
 | 
				
			||||||
            _.each(shortcutMap, function(func, shortcut) {
 | 
								_.each(shortcutMap, function(func, shortcut) {
 | 
				
			||||||
                mousetrap.bind(shortcut, func);
 | 
									mousetrap.bind(shortcut, func);
 | 
				
			||||||
            });
 | 
								});
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
        catch(e) {
 | 
							catch(e) {
 | 
				
			||||||
            console.error(e);
 | 
								console.error(e);
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return shortcuts;
 | 
						shortcuts.onReady = function() {
 | 
				
			||||||
 | 
							utils.createTooltip(".tooltip-shortcuts-extension", tooltipSettingsShortcutsExtensionHTML);
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return shortcuts;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
				
			|||||||
@ -1,65 +1,70 @@
 | 
				
			|||||||
define([
 | 
					define([
 | 
				
			||||||
    "jquery",
 | 
						"jquery",
 | 
				
			||||||
    "underscore",
 | 
						"underscore",
 | 
				
			||||||
    "utils",
 | 
						"utils",
 | 
				
			||||||
    "classes/Extension",
 | 
						"classes/Extension",
 | 
				
			||||||
    "fileSystem",
 | 
						"fileSystem",
 | 
				
			||||||
    "settings",
 | 
						"settings",
 | 
				
			||||||
    "text!html/userCustomSettingsBlock.html",
 | 
						"text!html/userCustomSettingsBlock.html",
 | 
				
			||||||
], function($, _, utils, Extension, fileSystem, settings, userCustomSettingsBlockHTML) {
 | 
						"text!html/tooltipUserCustomExtension.html"
 | 
				
			||||||
 | 
					], function($, _, utils, Extension, fileSystem, settings, userCustomSettingsBlockHTML, tooltipUserCustomExtensionHTML) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var userCustom = new Extension("userCustom", "UserCustom extension", true);
 | 
						var userCustom = new Extension("userCustom", "UserCustom extension", true);
 | 
				
			||||||
    userCustom.settingsBlock = userCustomSettingsBlockHTML;
 | 
						userCustom.settingsBlock = userCustomSettingsBlockHTML;
 | 
				
			||||||
    userCustom.defaultConfig = {
 | 
						userCustom.defaultConfig = {
 | 
				
			||||||
        code: "",
 | 
							code: ""
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var fileMgr;
 | 
						var fileMgr;
 | 
				
			||||||
    userCustom.onFileMgrCreated = function(fileMgrParameter) {
 | 
						userCustom.onFileMgrCreated = function(fileMgrParameter) {
 | 
				
			||||||
        fileMgr = fileMgrParameter;
 | 
							fileMgr = fileMgrParameter;
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var synchronizer;
 | 
						var synchronizer;
 | 
				
			||||||
    userCustom.onSynchronizerCreated = function(synchronizerParameter) {
 | 
						userCustom.onSynchronizerCreated = function(synchronizerParameter) {
 | 
				
			||||||
        synchronizer = synchronizerParameter;
 | 
							synchronizer = synchronizerParameter;
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var publisher;
 | 
						var publisher;
 | 
				
			||||||
    userCustom.onPublisherCreated = function(publisherParameter) {
 | 
						userCustom.onPublisherCreated = function(publisherParameter) {
 | 
				
			||||||
        publisher = publisherParameter;
 | 
							publisher = publisherParameter;
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var eventMgr;
 | 
						var eventMgr;
 | 
				
			||||||
    userCustom.onEventMgrCreated = function(eventMgrParameter) {
 | 
						userCustom.onEventMgrCreated = function(eventMgrParameter) {
 | 
				
			||||||
        eventMgr = eventMgrParameter;
 | 
							eventMgr = eventMgrParameter;
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    userCustom.onLoadSettings = function() {
 | 
						userCustom.onLoadSettings = function() {
 | 
				
			||||||
        utils.setInputValue("#textarea-usercustom-code", userCustom.config.code);
 | 
							utils.setInputValue("#textarea-usercustom-code", userCustom.config.code);
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    userCustom.onSaveSettings = function(newConfig, event) {
 | 
						userCustom.onSaveSettings = function(newConfig, event) {
 | 
				
			||||||
        newConfig.code = utils.getInputValue("#textarea-usercustom-code");
 | 
							newConfig.code = utils.getInputValue("#textarea-usercustom-code");
 | 
				
			||||||
        try {
 | 
							try {
 | 
				
			||||||
            /*jshint evil: true */
 | 
								/*jshint evil: true */
 | 
				
			||||||
            eval(newConfig.code);
 | 
								eval(newConfig.code);
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
        catch(e) {
 | 
							catch(e) {
 | 
				
			||||||
            eventMgr.onError(e);
 | 
								eventMgr.onError(e);
 | 
				
			||||||
            // Mark the textarea as error
 | 
								// Mark the textarea as error
 | 
				
			||||||
            utils.getInputTextValue("#textarea-usercustom-code", event, /^$/);
 | 
								utils.getInputTextValue("#textarea-usercustom-code", event, /^$/);
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    userCustom.onInit = function() {
 | 
						userCustom.onInit = function() {
 | 
				
			||||||
        try {
 | 
							try {
 | 
				
			||||||
            /*jshint evil: true */
 | 
								/*jshint evil: true */
 | 
				
			||||||
            eval(userCustom.config.code);
 | 
								eval(userCustom.config.code);
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
        catch(e) {
 | 
							catch(e) {
 | 
				
			||||||
            console.error(e);
 | 
								console.error(e);
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
    };
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return userCustom;
 | 
						userCustom.onReady = function() {
 | 
				
			||||||
 | 
							utils.createTooltip(".tooltip-usercustom-extension", tooltipUserCustomExtensionHTML);
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return userCustom;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
@ -198,7 +198,7 @@
 | 
				
			|||||||
	        </ul>
 | 
						        </ul>
 | 
				
			||||||
			<div class="input-group">
 | 
								<div class="input-group">
 | 
				
			||||||
				<span class="input-group-addon"><i class="icon-search"></i></span><input
 | 
									<span class="input-group-addon"><i class="icon-search"></i></span><input
 | 
				
			||||||
					type="text" class="form-control" placeholder="Find document"></input>
 | 
										type="text" class="form-control" placeholder="Find document" />
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
		<div class="panel-content">
 | 
							<div class="panel-content">
 | 
				
			||||||
@ -278,7 +278,7 @@
 | 
				
			|||||||
				<div class="input-group">
 | 
									<div class="input-group">
 | 
				
			||||||
					<span class="input-group-addon"><i class="icon-globe"></i></span><input
 | 
										<span class="input-group-addon"><i class="icon-globe"></i></span><input
 | 
				
			||||||
						id="input-insert-link" type="text" class="col-sm-5 form-control"
 | 
											id="input-insert-link" type="text" class="col-sm-5 form-control"
 | 
				
			||||||
						placeholder='http://example.com/ "optional title"'></input>
 | 
											placeholder='http://example.com/ "optional title"' />
 | 
				
			||||||
				</div>
 | 
									</div>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
			<div class="modal-footer">
 | 
								<div class="modal-footer">
 | 
				
			||||||
@ -305,7 +305,7 @@
 | 
				
			|||||||
				<div class="input-group">
 | 
									<div class="input-group">
 | 
				
			||||||
					<span class="input-group-addon"><i class="icon-picture"></i></span><input
 | 
										<span class="input-group-addon"><i class="icon-picture"></i></span><input
 | 
				
			||||||
						id="input-insert-image" type="text" class="col-sm-5 form-control"
 | 
											id="input-insert-image" type="text" class="col-sm-5 form-control"
 | 
				
			||||||
						placeholder='http://example.com/image.jpg "optional title"'></input>
 | 
											placeholder='http://example.com/image.jpg "optional title"' />
 | 
				
			||||||
				</div>
 | 
									</div>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
			<div class="modal-footer">
 | 
								<div class="modal-footer">
 | 
				
			||||||
@ -963,7 +963,7 @@
 | 
				
			|||||||
							</div>
 | 
												</div>
 | 
				
			||||||
							<div class="form-group">
 | 
												<div class="form-group">
 | 
				
			||||||
								<label class="col-sm-4 control-label"
 | 
													<label class="col-sm-4 control-label"
 | 
				
			||||||
									for="input-settings-gdrive-multiaccount">Google Drive multi-accounts</a>
 | 
														for="input-settings-gdrive-multiaccount">Google Drive multi-accounts
 | 
				
			||||||
								</label>
 | 
													</label>
 | 
				
			||||||
								<div class="col-sm-7">
 | 
													<div class="col-sm-7">
 | 
				
			||||||
									<select id="input-settings-gdrive-multiaccount" class="form-control">
 | 
														<select id="input-settings-gdrive-multiaccount" class="form-control">
 | 
				
			||||||
@ -1082,7 +1082,7 @@
 | 
				
			|||||||
							</div>
 | 
												</div>
 | 
				
			||||||
							<div class="form-group">
 | 
												<div class="form-group">
 | 
				
			||||||
								<label class="col-sm-4 control-label"
 | 
													<label class="col-sm-4 control-label"
 | 
				
			||||||
									for="input-settings-markdown-mime-type">Markdown MIME type</a>
 | 
														for="input-settings-markdown-mime-type">Markdown MIME type
 | 
				
			||||||
								</label>
 | 
													</label>
 | 
				
			||||||
								<div class="col-sm-7">
 | 
													<div class="col-sm-7">
 | 
				
			||||||
									<select id="input-settings-markdown-mime-type" class="form-control">
 | 
														<select id="input-settings-markdown-mime-type" class="form-control">
 | 
				
			||||||
@ -1159,7 +1159,7 @@
 | 
				
			|||||||
								data-dismiss="modal"><i class="icon-help-circled"></i>
 | 
													data-dismiss="modal"><i class="icon-help-circled"></i>
 | 
				
			||||||
								Welcome document</a> <a href="#"
 | 
													Welcome document</a> <a href="#"
 | 
				
			||||||
								class="btn btn-block btn-primary action-welcome-tour"
 | 
													class="btn btn-block btn-primary action-welcome-tour"
 | 
				
			||||||
								data-dismiss="modal" data-dismiss="modal"><i
 | 
													data-dismiss="modal"><i
 | 
				
			||||||
								class="icon-help-circled"></i> Welcome tour</a>
 | 
													class="icon-help-circled"></i> Welcome tour</a>
 | 
				
			||||||
						</div>
 | 
											</div>
 | 
				
			||||||
						<div class="tab-pane-button-container">
 | 
											<div class="tab-pane-button-container">
 | 
				
			||||||
 | 
				
			|||||||
@ -100,6 +100,15 @@
 | 
				
			|||||||
			</select>
 | 
								</select>
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
 | 
					    <div class="form-group">
 | 
				
			||||||
 | 
					        <label class="col-sm-4 control-label"
 | 
				
			||||||
 | 
					               for="input-markdownextra-diagrams">Diagrams <a href="#" class="tooltip-markdown-extra-diagrams">(?)</a></label>
 | 
				
			||||||
 | 
					        <div class="col-sm-7">
 | 
				
			||||||
 | 
					            <div class="checkbox">
 | 
				
			||||||
 | 
					                <input type="checkbox" id="input-markdownextra-diagrams">
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
<span class="help-block pull-right"><a target="_blank"
 | 
					<span class="help-block pull-right"><a target="_blank"
 | 
				
			||||||
	href="https://github.com/jmcmanus/pagedown-extra">More info</a></span>
 | 
						href="https://github.com/jmcmanus/pagedown-extra">More info</a></span>
 | 
				
			||||||
							
								
								
									
										23
									
								
								public/res/html/tooltipMarkdownExtraDiagrams.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								public/res/html/tooltipMarkdownExtraDiagrams.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					You can create sequence diagrams like this:
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					```sequence<br />
 | 
				
			||||||
 | 
					Alice->Bob: Hello Bob, how are you?
 | 
				
			||||||
 | 
					Bob-->Alice: I am good thanks!
 | 
				
			||||||
 | 
					```<br />
 | 
				
			||||||
 | 
					<a target="_blank" href="http://bramp.github.io/js-sequence-diagrams/">More info</a>
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					Or flow charts like this:
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					```flow<br />
 | 
				
			||||||
 | 
					st=>start: Start<br />
 | 
				
			||||||
 | 
					e=>end<br />
 | 
				
			||||||
 | 
					op=>operation: My Operation<br />
 | 
				
			||||||
 | 
					cond=>condition: Yes or No?<br />
 | 
				
			||||||
 | 
					st->op->cond<br />
 | 
				
			||||||
 | 
					cond(yes)->e<br />
 | 
				
			||||||
 | 
					cond(no)->op<br />
 | 
				
			||||||
 | 
					```<br />
 | 
				
			||||||
 | 
					<a target="_blank" href="http://adrai.github.io/flowchart.js/">More info</a>
 | 
				
			||||||
@ -230,6 +230,15 @@ define([
 | 
				
			|||||||
        version = "v18";
 | 
					        version = "v18";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(version == 'v18') {
 | 
				
			||||||
 | 
							if(_.has(localStorage, 'settings')) {
 | 
				
			||||||
 | 
								settings = JSON.parse(localStorage.settings);
 | 
				
			||||||
 | 
								((settings.extensionSettings || {}).markdownExtra || {}).diagrams = true;
 | 
				
			||||||
 | 
								localStorage.settings = JSON.stringify(settings);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							version = "v19";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    localStorage.version = version;
 | 
					    localStorage.version = version;
 | 
				
			||||||
    return localStorage;
 | 
					    return localStorage;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
				
			|||||||
@ -132,6 +132,7 @@ hr {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
.sequence-diagram, .flow-chart {
 | 
					.sequence-diagram, .flow-chart {
 | 
				
			||||||
    text-align: center;
 | 
					    text-align: center;
 | 
				
			||||||
 | 
						margin-bottom: @p-margin;
 | 
				
			||||||
    text {
 | 
					    text {
 | 
				
			||||||
        font-size: 1em !important;
 | 
					        font-size: 1em !important;
 | 
				
			||||||
        font-family: @font-family-sans-serif !important;
 | 
					        font-family: @font-family-sans-serif !important;
 | 
				
			||||||
 | 
				
			|||||||
@ -256,6 +256,10 @@ a {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.text-danger:hover {
 | 
				
			||||||
 | 
					    color: @state-danger-text;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.layout-panel() {
 | 
					.layout-panel() {
 | 
				
			||||||
	position: absolute;
 | 
						position: absolute;
 | 
				
			||||||
	top: 0;
 | 
						top: 0;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1454
									
								
								public/res/utils.js
									
									
									
									
									
								
							
							
						
						
									
										1454
									
								
								public/res/utils.js
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user