Merge pull request #1370 from hedgedoc/feature/lazy_load
This commit is contained in:
		
						commit
						66bdbc1f43
					
				@ -40,7 +40,6 @@
 | 
			
		||||
    "file-type": "^16.1.0",
 | 
			
		||||
    "formidable": "^1.0.17",
 | 
			
		||||
    "graceful-fs": "^4.1.11",
 | 
			
		||||
    "handlebars": "^4.5.2",
 | 
			
		||||
    "helmet": "^4.5.0",
 | 
			
		||||
    "i18n": "^0.13.0",
 | 
			
		||||
    "is-svg": "^4.3.1",
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,6 @@
 | 
			
		||||
/* global moment, serverurl */
 | 
			
		||||
 | 
			
		||||
import Prism from 'prismjs'
 | 
			
		||||
import hljs from 'highlight.js'
 | 
			
		||||
import PDFObject from 'pdfobject'
 | 
			
		||||
import S from 'string'
 | 
			
		||||
import { saveAs } from 'file-saver'
 | 
			
		||||
@ -17,10 +16,7 @@ import markdownitContainer from 'markdown-it-container'
 | 
			
		||||
/* Defined regex markdown it plugins */
 | 
			
		||||
import Plugin from 'markdown-it-regexp'
 | 
			
		||||
 | 
			
		||||
import mermaid from 'mermaid'
 | 
			
		||||
import handlebars from 'handlebars'
 | 
			
		||||
import 'gist-embed'
 | 
			
		||||
import abcjs from 'abcjs'
 | 
			
		||||
 | 
			
		||||
require('prismjs/themes/prism.css')
 | 
			
		||||
require('prismjs/components/prism-wiki')
 | 
			
		||||
@ -34,7 +30,6 @@ require('prismjs/components/prism-gherkin')
 | 
			
		||||
require('./lib/common/login')
 | 
			
		||||
require('./locale')
 | 
			
		||||
require('../vendor/md-toc')
 | 
			
		||||
const Viz = require('viz.js')
 | 
			
		||||
const ui = getUIElements()
 | 
			
		||||
 | 
			
		||||
// auto update last change
 | 
			
		||||
@ -253,8 +248,6 @@ function replaceExtraTags (html) {
 | 
			
		||||
  return html
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mermaid.startOnLoad = false
 | 
			
		||||
 | 
			
		||||
// dynamic event or object binding here
 | 
			
		||||
export function finishView (view) {
 | 
			
		||||
  // todo list
 | 
			
		||||
@ -372,13 +365,15 @@ export function finishView (view) {
 | 
			
		||||
    try {
 | 
			
		||||
      $value = $(value)
 | 
			
		||||
      const $ele = $(value).parent().parent()
 | 
			
		||||
 | 
			
		||||
      require.ensure([], function (require) {
 | 
			
		||||
        const Viz = require('viz.js')
 | 
			
		||||
        const graphviz = Viz($value.text())
 | 
			
		||||
        if (!graphviz) throw Error('viz.js output empty graph')
 | 
			
		||||
        $value.html(graphviz)
 | 
			
		||||
 | 
			
		||||
        $ele.addClass('graphviz')
 | 
			
		||||
        $value.children().unwrap().unwrap()
 | 
			
		||||
      })
 | 
			
		||||
    } catch (err) {
 | 
			
		||||
      $value.unwrap()
 | 
			
		||||
      $value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
 | 
			
		||||
@ -388,11 +383,12 @@ export function finishView (view) {
 | 
			
		||||
  // mermaid
 | 
			
		||||
  const mermaids = view.find('div.mermaid.raw').removeClass('raw')
 | 
			
		||||
  mermaids.each((key, value) => {
 | 
			
		||||
    let $value
 | 
			
		||||
    try {
 | 
			
		||||
      $value = $(value)
 | 
			
		||||
    const $value = $(value)
 | 
			
		||||
    const $ele = $(value).closest('pre')
 | 
			
		||||
 | 
			
		||||
    require.ensure([], function (require) {
 | 
			
		||||
      try {
 | 
			
		||||
        const mermaid = require('mermaid')
 | 
			
		||||
        mermaid.startOnLoad = false
 | 
			
		||||
        mermaid.mermaidAPI.parse($value.text())
 | 
			
		||||
        $ele.addClass('mermaid')
 | 
			
		||||
        $ele.text($value.text())
 | 
			
		||||
@ -402,12 +398,12 @@ export function finishView (view) {
 | 
			
		||||
        if (err.str) {
 | 
			
		||||
          errormessage = err.str
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $value.unwrap()
 | 
			
		||||
        $value.parent().append(`<div class="alert alert-warning">${escapeHTML(errormessage)}</div>`)
 | 
			
		||||
        console.warn(errormessage)
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
  // abc.js
 | 
			
		||||
  const abcs = view.find('div.abc.raw').removeClass('raw')
 | 
			
		||||
  abcs.each((key, value) => {
 | 
			
		||||
@ -415,14 +411,15 @@ export function finishView (view) {
 | 
			
		||||
    try {
 | 
			
		||||
      $value = $(value)
 | 
			
		||||
      const $ele = $(value).parent().parent()
 | 
			
		||||
 | 
			
		||||
      require.ensure([], function (require) {
 | 
			
		||||
        const abcjs = require('abcjs')
 | 
			
		||||
        abcjs.renderAbc(value, $value.text())
 | 
			
		||||
 | 
			
		||||
        $ele.addClass('abc')
 | 
			
		||||
        $value.children().unwrap().unwrap()
 | 
			
		||||
        const svg = $ele.find('> svg')
 | 
			
		||||
        svg[0].setAttribute('viewBox', `0 0 ${svg.attr('width')} ${svg.attr('height')}`)
 | 
			
		||||
        svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet')
 | 
			
		||||
      })
 | 
			
		||||
    } catch (err) {
 | 
			
		||||
      $value.unwrap()
 | 
			
		||||
      $value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
 | 
			
		||||
@ -499,6 +496,9 @@ export function finishView (view) {
 | 
			
		||||
      const langDiv = $(value)
 | 
			
		||||
      if (langDiv.length > 0) {
 | 
			
		||||
        const reallang = langDiv[0].className.replace(/hljs|wrap/g, '').trim()
 | 
			
		||||
        if (reallang === 'mermaid' || reallang === 'abc' || reallang === 'graphviz') {
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        const codeDiv = langDiv.find('.code')
 | 
			
		||||
        let code = ''
 | 
			
		||||
        if (codeDiv.length > 0) code = codeDiv.html()
 | 
			
		||||
@ -524,6 +524,8 @@ export function finishView (view) {
 | 
			
		||||
            value: Prism.highlight(code, Prism.languages.makefile)
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          require.ensure([], function (require) {
 | 
			
		||||
            const hljs = require('highlight.js')
 | 
			
		||||
            code = S(code).unescapeHTML().s
 | 
			
		||||
            const languages = hljs.listLanguages()
 | 
			
		||||
            if (!languages.includes(reallang)) {
 | 
			
		||||
@ -531,6 +533,10 @@ export function finishView (view) {
 | 
			
		||||
            } else {
 | 
			
		||||
              result = hljs.highlight(reallang, code)
 | 
			
		||||
            }
 | 
			
		||||
            if (codeDiv.length > 0) codeDiv.html(result.value)
 | 
			
		||||
            else langDiv.html(result.value)
 | 
			
		||||
          })
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        if (codeDiv.length > 0) codeDiv.html(result.value)
 | 
			
		||||
        else langDiv.html(result.value)
 | 
			
		||||
@ -668,19 +674,15 @@ export function exportToHTML (view) {
 | 
			
		||||
  tocAffix.find('*').removeClass('active').find("a[href^='#'][smoothhashscroll]").removeAttr('smoothhashscroll')
 | 
			
		||||
  // generate html via template
 | 
			
		||||
  $.get(`${serverurl}/build/html.min.css`, css => {
 | 
			
		||||
    $.get(`${serverurl}/views/html.hbs`, data => {
 | 
			
		||||
      const template = handlebars.compile(data)
 | 
			
		||||
      const context = {
 | 
			
		||||
        url: serverurl,
 | 
			
		||||
        title,
 | 
			
		||||
        css,
 | 
			
		||||
        html: src[0].outerHTML,
 | 
			
		||||
        'ui-toc': toc.html(),
 | 
			
		||||
        'ui-toc-affix': tocAffix.html(),
 | 
			
		||||
        lang: (md && md.meta && md.meta.lang) ? `lang="${md.meta.lang}"` : null,
 | 
			
		||||
        dir: (md && md.meta && md.meta.dir) ? `dir="${md.meta.dir}"` : null
 | 
			
		||||
      }
 | 
			
		||||
      const html = template(context)
 | 
			
		||||
    $.get(`${serverurl}/views/html.hbs`, template => {
 | 
			
		||||
      let html = template.replace('{{{url}}}', serverurl)
 | 
			
		||||
      html = html.replace('{{title}}', title)
 | 
			
		||||
      html = html.replace('{{{css}}}', css)
 | 
			
		||||
      html = html.replace('{{{html}}}', src[0].outerHTML)
 | 
			
		||||
      html = html.replace('{{{ui-toc}}}', toc.html())
 | 
			
		||||
      html = html.replace('{{{ui-toc-affix}}}', tocAffix.html())
 | 
			
		||||
      html = html.replace('{{{lang}}}', (md && md.meta && md.meta.lang) ? `lang="${md.meta.lang}"` : '')
 | 
			
		||||
      html = html.replace('{{{dir}}}', (md && md.meta && md.meta.dir) ? `dir="${md.meta.dir}"` : '')
 | 
			
		||||
      const blob = new Blob([html], {
 | 
			
		||||
        type: 'text/html;charset=utf-8'
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,6 @@ import { ot } from '../vendor/ot/ot.min.js'
 | 
			
		||||
import { saveAs } from 'file-saver'
 | 
			
		||||
import randomColor from 'randomcolor'
 | 
			
		||||
import store from 'store'
 | 
			
		||||
import hljs from 'highlight.js'
 | 
			
		||||
import url from 'wurl'
 | 
			
		||||
import { Spinner } from 'spin.js'
 | 
			
		||||
 | 
			
		||||
@ -106,36 +105,198 @@ const cursorActivityDebounce = 50
 | 
			
		||||
const cursorAnimatePeriod = 100
 | 
			
		||||
const supportContainers = ['success', 'info', 'warning', 'danger']
 | 
			
		||||
const supportCodeModes = [
 | 
			
		||||
  'javascript',
 | 
			
		||||
  'typescript',
 | 
			
		||||
  'jsx',
 | 
			
		||||
  'htmlmixed',
 | 
			
		||||
  'htmlembedded',
 | 
			
		||||
  'css',
 | 
			
		||||
  'xml',
 | 
			
		||||
  'clike',
 | 
			
		||||
  '1c',
 | 
			
		||||
  'abnf',
 | 
			
		||||
  'accesslog',
 | 
			
		||||
  'actionscript',
 | 
			
		||||
  'ada',
 | 
			
		||||
  'angelscript',
 | 
			
		||||
  'apache',
 | 
			
		||||
  'applescript',
 | 
			
		||||
  'arcade',
 | 
			
		||||
  'arduino',
 | 
			
		||||
  'armasm',
 | 
			
		||||
  'asciidoc',
 | 
			
		||||
  'aspectj',
 | 
			
		||||
  'autohotkey',
 | 
			
		||||
  'autoit',
 | 
			
		||||
  'avrasm',
 | 
			
		||||
  'awk',
 | 
			
		||||
  'axapta',
 | 
			
		||||
  'bash',
 | 
			
		||||
  'basic',
 | 
			
		||||
  'bnf',
 | 
			
		||||
  'brainfuck',
 | 
			
		||||
  'cal',
 | 
			
		||||
  'capnproto',
 | 
			
		||||
  'ceylon',
 | 
			
		||||
  'c',
 | 
			
		||||
  'clean',
 | 
			
		||||
  'c-like',
 | 
			
		||||
  'clojure',
 | 
			
		||||
  'ruby',
 | 
			
		||||
  'python',
 | 
			
		||||
  'shell',
 | 
			
		||||
  'php',
 | 
			
		||||
  'sql',
 | 
			
		||||
  'haskell',
 | 
			
		||||
  'coffeescript',
 | 
			
		||||
  'yaml',
 | 
			
		||||
  'pug',
 | 
			
		||||
  'lua',
 | 
			
		||||
  'clojure-repl',
 | 
			
		||||
  'cmake',
 | 
			
		||||
  'nginx',
 | 
			
		||||
  'perl',
 | 
			
		||||
  'sass',
 | 
			
		||||
  'r',
 | 
			
		||||
  'coffeescript',
 | 
			
		||||
  'coq',
 | 
			
		||||
  'cos',
 | 
			
		||||
  'cpp',
 | 
			
		||||
  'crmsh',
 | 
			
		||||
  'crystal',
 | 
			
		||||
  'csharp',
 | 
			
		||||
  'csp',
 | 
			
		||||
  'css',
 | 
			
		||||
  'dart',
 | 
			
		||||
  'delphi',
 | 
			
		||||
  'diff',
 | 
			
		||||
  'django',
 | 
			
		||||
  'd',
 | 
			
		||||
  'dns',
 | 
			
		||||
  'dockerfile',
 | 
			
		||||
  'tiddlywiki',
 | 
			
		||||
  'mediawiki',
 | 
			
		||||
  'dos',
 | 
			
		||||
  'dsconfig',
 | 
			
		||||
  'dts',
 | 
			
		||||
  'dust',
 | 
			
		||||
  'ebnf',
 | 
			
		||||
  'elixir',
 | 
			
		||||
  'elm',
 | 
			
		||||
  'erb',
 | 
			
		||||
  'erlang',
 | 
			
		||||
  'erlang-repl',
 | 
			
		||||
  'excel',
 | 
			
		||||
  'fix',
 | 
			
		||||
  'flix',
 | 
			
		||||
  'fortran',
 | 
			
		||||
  'fsharp',
 | 
			
		||||
  'gams',
 | 
			
		||||
  'gauss',
 | 
			
		||||
  'gcode',
 | 
			
		||||
  'gherkin',
 | 
			
		||||
  'glsl',
 | 
			
		||||
  'gml',
 | 
			
		||||
  'go',
 | 
			
		||||
  'gherkin'
 | 
			
		||||
].concat(hljs.listLanguages())
 | 
			
		||||
  'golo',
 | 
			
		||||
  'gradle',
 | 
			
		||||
  'groovy',
 | 
			
		||||
  'haml',
 | 
			
		||||
  'handlebars',
 | 
			
		||||
  'haskell',
 | 
			
		||||
  'haxe',
 | 
			
		||||
  'hsp',
 | 
			
		||||
  'htmlbars',
 | 
			
		||||
  'http',
 | 
			
		||||
  'hy',
 | 
			
		||||
  'inform7',
 | 
			
		||||
  'ini',
 | 
			
		||||
  'irpf90',
 | 
			
		||||
  'isbl',
 | 
			
		||||
  'java',
 | 
			
		||||
  'javascript',
 | 
			
		||||
  'jboss-cli',
 | 
			
		||||
  'json',
 | 
			
		||||
  'julia',
 | 
			
		||||
  'julia-repl',
 | 
			
		||||
  'kotlin',
 | 
			
		||||
  'lasso',
 | 
			
		||||
  'latex',
 | 
			
		||||
  'ldif',
 | 
			
		||||
  'leaf',
 | 
			
		||||
  'less',
 | 
			
		||||
  'lisp',
 | 
			
		||||
  'livecodeserver',
 | 
			
		||||
  'livescript',
 | 
			
		||||
  'llvm',
 | 
			
		||||
  'lsl',
 | 
			
		||||
  'lua',
 | 
			
		||||
  'makefile',
 | 
			
		||||
  'markdown',
 | 
			
		||||
  'mathematica',
 | 
			
		||||
  'matlab',
 | 
			
		||||
  'maxima',
 | 
			
		||||
  'mel',
 | 
			
		||||
  'mercury',
 | 
			
		||||
  'mipsasm',
 | 
			
		||||
  'mizar',
 | 
			
		||||
  'mojolicious',
 | 
			
		||||
  'monkey',
 | 
			
		||||
  'moonscript',
 | 
			
		||||
  'n1ql',
 | 
			
		||||
  'nginx',
 | 
			
		||||
  'nim',
 | 
			
		||||
  'nix',
 | 
			
		||||
  'node-repl',
 | 
			
		||||
  'nsis',
 | 
			
		||||
  'objectivec',
 | 
			
		||||
  'ocaml',
 | 
			
		||||
  'openscad',
 | 
			
		||||
  'oxygene',
 | 
			
		||||
  'parser3',
 | 
			
		||||
  'perl',
 | 
			
		||||
  'pf',
 | 
			
		||||
  'pgsql',
 | 
			
		||||
  'php',
 | 
			
		||||
  'php-template',
 | 
			
		||||
  'plaintext',
 | 
			
		||||
  'pony',
 | 
			
		||||
  'powershell',
 | 
			
		||||
  'processing',
 | 
			
		||||
  'profile',
 | 
			
		||||
  'prolog',
 | 
			
		||||
  'properties',
 | 
			
		||||
  'protobuf',
 | 
			
		||||
  'puppet',
 | 
			
		||||
  'purebasic',
 | 
			
		||||
  'python',
 | 
			
		||||
  'python-repl',
 | 
			
		||||
  'q',
 | 
			
		||||
  'qml',
 | 
			
		||||
  'reasonml',
 | 
			
		||||
  'rib',
 | 
			
		||||
  'r',
 | 
			
		||||
  'roboconf',
 | 
			
		||||
  'routeros',
 | 
			
		||||
  'rsl',
 | 
			
		||||
  'ruby',
 | 
			
		||||
  'ruleslanguage',
 | 
			
		||||
  'rust',
 | 
			
		||||
  'sas',
 | 
			
		||||
  'scala',
 | 
			
		||||
  'scheme',
 | 
			
		||||
  'scilab',
 | 
			
		||||
  'scss',
 | 
			
		||||
  'shell',
 | 
			
		||||
  'smali',
 | 
			
		||||
  'smalltalk',
 | 
			
		||||
  'sml',
 | 
			
		||||
  'sqf',
 | 
			
		||||
  'sql',
 | 
			
		||||
  'sql_more',
 | 
			
		||||
  'stan',
 | 
			
		||||
  'stata',
 | 
			
		||||
  'step21',
 | 
			
		||||
  'stylus',
 | 
			
		||||
  'subunit',
 | 
			
		||||
  'swift',
 | 
			
		||||
  'taggerscript',
 | 
			
		||||
  'tap',
 | 
			
		||||
  'tcl',
 | 
			
		||||
  'thrift',
 | 
			
		||||
  'tp',
 | 
			
		||||
  'twig',
 | 
			
		||||
  'typescript',
 | 
			
		||||
  'vala',
 | 
			
		||||
  'vbnet',
 | 
			
		||||
  'vbscript-html',
 | 
			
		||||
  'vbscript',
 | 
			
		||||
  'verilog',
 | 
			
		||||
  'vhdl',
 | 
			
		||||
  'vim',
 | 
			
		||||
  'x86asm',
 | 
			
		||||
  'xl',
 | 
			
		||||
  'xml',
 | 
			
		||||
  'xquery',
 | 
			
		||||
  'yaml',
 | 
			
		||||
  'zephir'
 | 
			
		||||
]
 | 
			
		||||
const supportCharts = ['sequence', 'flow', 'graphviz', 'mermaid', 'abc']
 | 
			
		||||
const supportHeaders = [
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,6 @@
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/js/emojify.min.js" integrity="sha256-VAB5tAlKBvgaxw8oJ1crWMVbdmBVl4mP/2M8MNRl+4E=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js" integrity="sha256-Cv5v4i4SuYvwRYzIONifZjoc99CkwfncROMSWat1cVA=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.1/socket.io.js" integrity="sha256-0FUwWDJ65tQsnnxtK/o5aTM880+kQzktw2mfTBF36Zs=" crossorigin="anonymous"></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.6/handlebars.min.js" integrity="sha256-1O3BtOwnPyyRzOszK6P+gqaRoXHV6JXj8HkjZmPYhCI=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/highlight.min.js" integrity="sha256-eOgo0OtLL4cdq7RdwRUiGKLX9XsIJ7nGhWEKbohmVAQ=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/gist-embed/2.6.0/gist-embed.min.js" integrity="sha256-KyF2D6xPIJUW5sUDSs93vWyZm+1RzIpKCexxElmxl8g=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/viz.js/1.7.0/viz.js" integrity="sha256-8t+rndrF+TU4JtelmOH1lDHTMe2ovhO2UbzDArp5lY8=" crossorigin="anonymous" defer></script>
 | 
			
		||||
 | 
			
		||||
@ -92,7 +92,6 @@
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js" integrity="sha256-vvT7Ok9u6GbfnBPXnbM6FVDEO8E1kTdgHOFZOAXrktA=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/8.8.2/mermaid.min.js" integrity="sha256-KqisLh8jVMBRjpNkOhH5W9VWs+F6x6vQksLqxs7+x9A=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/js/emojify.min.js" integrity="sha256-VAB5tAlKBvgaxw8oJ1crWMVbdmBVl4mP/2M8MNRl+4E=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.6/handlebars.min.js" integrity="sha256-1O3BtOwnPyyRzOszK6P+gqaRoXHV6JXj8HkjZmPYhCI=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/highlight.min.js" integrity="sha256-eOgo0OtLL4cdq7RdwRUiGKLX9XsIJ7nGhWEKbohmVAQ=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/gist-embed/2.6.0/gist-embed.min.js" integrity="sha256-KyF2D6xPIJUW5sUDSs93vWyZm+1RzIpKCexxElmxl8g=" crossorigin="anonymous" defer></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/viz.js/1.7.0/viz.js" integrity="sha256-8t+rndrF+TU4JtelmOH1lDHTMe2ovhO2UbzDArp5lY8=" crossorigin="anonymous" defer></script>
 | 
			
		||||
 | 
			
		||||
@ -99,7 +99,6 @@
 | 
			
		||||
        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js" integrity="sha256-vvT7Ok9u6GbfnBPXnbM6FVDEO8E1kTdgHOFZOAXrktA=" crossorigin="anonymous" defer></script>
 | 
			
		||||
        <script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/8.8.2/mermaid.min.js" integrity="sha256-KqisLh8jVMBRjpNkOhH5W9VWs+F6x6vQksLqxs7+x9A=" crossorigin="anonymous" defer></script>
 | 
			
		||||
        <script src="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/js/emojify.min.js" integrity="sha256-VAB5tAlKBvgaxw8oJ1crWMVbdmBVl4mP/2M8MNRl+4E=" crossorigin="anonymous" defer></script>
 | 
			
		||||
        <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.6/handlebars.min.js" integrity="sha256-1O3BtOwnPyyRzOszK6P+gqaRoXHV6JXj8HkjZmPYhCI=" crossorigin="anonymous" defer></script>
 | 
			
		||||
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js" integrity="sha256-/BfiIkHlHoVihZdc6TFuj7MmJ0TWcWsMXkeDFwhi0zw=" crossorigin="anonymous" defer></script>
 | 
			
		||||
        <script src="https://cdnjs.cloudflare.com/ajax/libs/gist-embed/2.6.0/gist-embed.min.js" integrity="sha256-KyF2D6xPIJUW5sUDSs93vWyZm+1RzIpKCexxElmxl8g=" crossorigin="anonymous" defer></script>
 | 
			
		||||
        <script src="https://cdnjs.cloudflare.com/ajax/libs/viz.js/1.7.0/viz.js" integrity="sha256-8t+rndrF+TU4JtelmOH1lDHTMe2ovhO2UbzDArp5lY8=" crossorigin="anonymous" defer></script>
 | 
			
		||||
 | 
			
		||||
@ -248,12 +248,10 @@ module.exports = {
 | 
			
		||||
      'bootstrap-validator',
 | 
			
		||||
      'expose-loader?exposes=jsyaml!js-yaml',
 | 
			
		||||
      'expose-loader?exposes=moment!moment',
 | 
			
		||||
      'expose-loader?exposes=hljs!highlight.js',
 | 
			
		||||
      'expose-loader?exposes=emojify!emojify.js',
 | 
			
		||||
      'expose-loader?exposes=LZString!lz-string',
 | 
			
		||||
      'flowchart.js',
 | 
			
		||||
      'js-sequence-diagrams',
 | 
			
		||||
      'expose-loader?exposes=Viz!viz.js',
 | 
			
		||||
      'expose-loader?exposes=io!socket.io-client',
 | 
			
		||||
      'expose-loader?exposes=RevealMarkdown!reveal-markdown',
 | 
			
		||||
      path.join(__dirname, 'public/js/index.js')
 | 
			
		||||
@ -280,11 +278,9 @@ module.exports = {
 | 
			
		||||
      'babel-polyfill',
 | 
			
		||||
      'expose-loader?exposes=jsyaml!js-yaml',
 | 
			
		||||
      'expose-loader?exposes=moment!moment',
 | 
			
		||||
      'expose-loader?exposes=hljs!highlight.js',
 | 
			
		||||
      'expose-loader?exposes=emojify!emojify.js',
 | 
			
		||||
      'flowchart.js',
 | 
			
		||||
      'js-sequence-diagrams',
 | 
			
		||||
      'expose-loader?exposes=Viz!viz.js',
 | 
			
		||||
      'expose-loader?exposes=RevealMarkdown!reveal-markdown',
 | 
			
		||||
      path.join(__dirname, 'public/js/pretty.js')
 | 
			
		||||
    ],
 | 
			
		||||
@ -314,11 +310,9 @@ module.exports = {
 | 
			
		||||
      'bootstrap-tooltip',
 | 
			
		||||
      'expose-loader?exposes=jsyaml!js-yaml',
 | 
			
		||||
      'expose-loader?exposes=moment!moment',
 | 
			
		||||
      'expose-loader?exposes=hljs!highlight.js',
 | 
			
		||||
      'expose-loader?exposes=emojify!emojify.js',
 | 
			
		||||
      'flowchart.js',
 | 
			
		||||
      'js-sequence-diagrams',
 | 
			
		||||
      'expose-loader?exposes=Viz!viz.js',
 | 
			
		||||
      'expose-loader?exposes=Reveal!reveal.js',
 | 
			
		||||
      'expose-loader?exposes=RevealMarkdown!reveal-markdown',
 | 
			
		||||
      path.join(__dirname, 'public/js/slide.js')
 | 
			
		||||
@ -342,11 +336,9 @@ module.exports = {
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  externals: {
 | 
			
		||||
    'viz.js': 'Viz',
 | 
			
		||||
    'socket.io-client': 'io',
 | 
			
		||||
    'jquery': '$',
 | 
			
		||||
    'moment': 'moment',
 | 
			
		||||
    'highlight.js': 'hljs',
 | 
			
		||||
    'select2': 'select2'
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										42
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								yarn.lock
									
									
									
									
									
								
							@ -568,7 +568,6 @@
 | 
			
		||||
 | 
			
		||||
"Idle.Js@git+https://github.com/shawnmclean/Idle.js":
 | 
			
		||||
  version "0.0.1"
 | 
			
		||||
  uid db9beb3483a460ad638ec947867720f0ed066a62
 | 
			
		||||
  resolved "git+https://github.com/shawnmclean/Idle.js#db9beb3483a460ad638ec947867720f0ed066a62"
 | 
			
		||||
 | 
			
		||||
JSV@^4.0.x:
 | 
			
		||||
@ -586,7 +585,7 @@ abcjs@5.10.3:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/abcjs/-/abcjs-5.10.3.tgz#294702140ec1caa292859ba9d2af0452f7e9e046"
 | 
			
		||||
  integrity sha512-YGmW4CUWd7T2/HqZa/SQOTE+lXg7Z68HwwpJhHJBvdHqLi1uLCiYva1ZRGhB/MPyl1QKqJMfF+LQ1jGAEK69XQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    midi "git+https://github.com/paulrosen/MIDI.js.git#abcjs"
 | 
			
		||||
    midi "https://github.com/paulrosen/MIDI.js.git#abcjs"
 | 
			
		||||
 | 
			
		||||
abcjs@5.11.0:
 | 
			
		||||
  version "5.11.0"
 | 
			
		||||
@ -594,7 +593,7 @@ abcjs@5.11.0:
 | 
			
		||||
  integrity sha512-kLehHwwttcTCVhKQaDkmqYbWBLAWmfyzYSbUQoEDAOTOX5RzDGakX8tXpzlsNHw6Lh8W8odZw44e0siwbG4TKA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    abcjs "5.10.3"
 | 
			
		||||
    midi "git+https://github.com/paulrosen/MIDI.js.git#abcjs"
 | 
			
		||||
    midi "https://github.com/paulrosen/MIDI.js.git#abcjs"
 | 
			
		||||
 | 
			
		||||
abcjs@5.12.0:
 | 
			
		||||
  version "5.12.0"
 | 
			
		||||
@ -602,7 +601,7 @@ abcjs@5.12.0:
 | 
			
		||||
  integrity sha512-pvi7SjOAKT7cRyRtywUSwYB0SNtRHKLxZUZ9Oc4E+nvpBHr8Z2/M9Pfyv3oIaiEpxlWTFK+B/H5t/DckiNFgpg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    abcjs "5.11.0"
 | 
			
		||||
    midi "git+https://github.com/paulrosen/MIDI.js.git#abcjs"
 | 
			
		||||
    midi "https://github.com/paulrosen/MIDI.js.git#abcjs"
 | 
			
		||||
 | 
			
		||||
abstract-logging@^2.0.0:
 | 
			
		||||
  version "2.0.1"
 | 
			
		||||
@ -2299,7 +2298,6 @@ code-point-at@^1.0.0:
 | 
			
		||||
 | 
			
		||||
"codemirror@git+https://github.com/hedgedoc/CodeMirror.git":
 | 
			
		||||
  version "5.58.2"
 | 
			
		||||
  uid f780b569b3717cdff4c8507538cc63101bfa02e1
 | 
			
		||||
  resolved "git+https://github.com/hedgedoc/CodeMirror.git#f780b569b3717cdff4c8507538cc63101bfa02e1"
 | 
			
		||||
 | 
			
		||||
collection-visit@^1.0.0:
 | 
			
		||||
@ -3311,7 +3309,6 @@ detect-libc@^1.0.2:
 | 
			
		||||
 | 
			
		||||
"diff-match-patch@git+https://github.com/hackmdio/diff-match-patch.git":
 | 
			
		||||
  version "1.1.1"
 | 
			
		||||
  uid c2f8fb9d69aa9490b764850aa86ba442c93ccf78
 | 
			
		||||
  resolved "git+https://github.com/hackmdio/diff-match-patch.git#c2f8fb9d69aa9490b764850aa86ba442c93ccf78"
 | 
			
		||||
 | 
			
		||||
diff@5.0.0:
 | 
			
		||||
@ -4698,18 +4695,6 @@ growl@1.10.5:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
 | 
			
		||||
  integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
 | 
			
		||||
 | 
			
		||||
handlebars@^4.5.2:
 | 
			
		||||
  version "4.7.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
 | 
			
		||||
  integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    minimist "^1.2.5"
 | 
			
		||||
    neo-async "^2.6.0"
 | 
			
		||||
    source-map "^0.6.1"
 | 
			
		||||
    wordwrap "^1.0.0"
 | 
			
		||||
  optionalDependencies:
 | 
			
		||||
    uglify-js "^3.1.4"
 | 
			
		||||
 | 
			
		||||
har-schema@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
 | 
			
		||||
@ -5640,7 +5625,6 @@ js-cookie@2.2.1:
 | 
			
		||||
 | 
			
		||||
"js-sequence-diagrams@git+https://github.com/hedgedoc/js-sequence-diagrams.git":
 | 
			
		||||
  version "2.0.1"
 | 
			
		||||
  uid bda0e49b6c2754f3c7158b1dfb9ccf26efc24b39
 | 
			
		||||
  resolved "git+https://github.com/hedgedoc/js-sequence-diagrams.git#bda0e49b6c2754f3c7158b1dfb9ccf26efc24b39"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    lodash "4.17.x"
 | 
			
		||||
@ -6220,7 +6204,6 @@ lutim@^1.0.2:
 | 
			
		||||
 | 
			
		||||
"lz-string@git+https://github.com/hackmdio/lz-string.git":
 | 
			
		||||
  version "1.4.4"
 | 
			
		||||
  uid efd1f64676264d6d8871b01f4f375fc6ef4f9022
 | 
			
		||||
  resolved "git+https://github.com/hackmdio/lz-string.git#efd1f64676264d6d8871b01f4f375fc6ef4f9022"
 | 
			
		||||
 | 
			
		||||
make-dir@^1.0.0:
 | 
			
		||||
@ -6529,8 +6512,7 @@ messageformat@^2.3.0:
 | 
			
		||||
 | 
			
		||||
"meta-marked@git+https://github.com/hedgedoc/meta-marked":
 | 
			
		||||
  version "0.4.5"
 | 
			
		||||
  uid "3002adae670a6de0a845f3da7a7223d458c20d76"
 | 
			
		||||
  resolved "git+https://github.com/hedgedoc/meta-marked#3002adae670a6de0a845f3da7a7223d458c20d76"
 | 
			
		||||
  resolved "git+https://github.com/hedgedoc/meta-marked#81d9036da9f4c3307b1787d20e89e996f4466d8c"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    js-yaml "~4.1.0"
 | 
			
		||||
    marked "~2.0.0"
 | 
			
		||||
@ -6606,7 +6588,6 @@ micromatch@^4.0.2:
 | 
			
		||||
 | 
			
		||||
"midi@git+https://github.com/paulrosen/MIDI.js.git#abcjs":
 | 
			
		||||
  version "0.4.2"
 | 
			
		||||
  uid e593ffef81a0350f99448e3ab8111957145ff6b2
 | 
			
		||||
  resolved "git+https://github.com/paulrosen/MIDI.js.git#e593ffef81a0350f99448e3ab8111957145ff6b2"
 | 
			
		||||
 | 
			
		||||
miller-rabin@^4.0.0:
 | 
			
		||||
@ -6974,7 +6955,7 @@ negotiator@0.6.2:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
 | 
			
		||||
  integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
 | 
			
		||||
 | 
			
		||||
neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
 | 
			
		||||
neo-async@^2.5.0, neo-async@^2.6.1:
 | 
			
		||||
  version "2.6.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
 | 
			
		||||
  integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
 | 
			
		||||
@ -8151,9 +8132,9 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
 | 
			
		||||
  integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
 | 
			
		||||
 | 
			
		||||
postcss@^8.2.1, postcss@^8.2.15:
 | 
			
		||||
  version "8.3.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.1.tgz#71f380151c227f83b898294a46481f689f86b70a"
 | 
			
		||||
  integrity sha512-9qH0MGjsSm+fjxOi3GnwViL1otfi7qkj+l/WX5gcRGmZNGsIcqc+A5fBkE6PUobEQK4APqYVaES+B3Uti98TCw==
 | 
			
		||||
  version "8.3.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.2.tgz#ed3ec489f5428af5740cd6effcc216b4d455ee64"
 | 
			
		||||
  integrity sha512-y1FK/AWdZlBF5lusS5j5l4/vF67+vQZt1SXPVJ32y1kRGDQyrs1zk32hG1cInRTu14P0V+orPz+ifwW/7rR4bg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    colorette "^1.2.2"
 | 
			
		||||
    nanoid "^3.1.23"
 | 
			
		||||
@ -10471,7 +10452,7 @@ uc.micro@^1.0.1, uc.micro@^1.0.5:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
 | 
			
		||||
  integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
 | 
			
		||||
 | 
			
		||||
uglify-js@^3.1.4, uglify-js@^3.5.1:
 | 
			
		||||
uglify-js@^3.5.1:
 | 
			
		||||
  version "3.13.9"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.9.tgz#4d8d21dcd497f29cfd8e9378b9df123ad025999b"
 | 
			
		||||
  integrity sha512-wZbyTQ1w6Y7fHdt8sJnHfSIuWeDgk6B5rCb4E/AM6QNNPbOMIZph21PW5dRB3h7Df0GszN+t7RuUH6sWK5bF0g==
 | 
			
		||||
@ -11104,11 +11085,6 @@ word-wrap@^1.2.3:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
 | 
			
		||||
  integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
 | 
			
		||||
 | 
			
		||||
wordwrap@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
 | 
			
		||||
  integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
 | 
			
		||||
 | 
			
		||||
worker-farm@^1.7.0:
 | 
			
		||||
  version "1.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user