| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | 'use strict'import $ from 'jquery'import Vue from 'vue'import _ from 'lodash'const videoRules = {  'youtube': new RegExp(/(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|&v(?:i)?=))([^#&?]*).*/, 'i'),  'vimeo': new RegExp(/vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:[^/]*)\/videos\/|album\/(?:\d+)\/video\/|)(\d+)(?:$|\/|\?)/, 'i'),  'dailymotion': new RegExp(/(?:dailymotion\.com(?:\/embed)?(?:\/video|\/hub)|dai\.ly)\/([0-9a-z]+)(?:[-_0-9a-zA-Z]+(?:#video=)?([a-z0-9]+)?)?/, 'i')}module.exports = (mde, mdeModalOpenState) => {  // Vue Video instance  let vueVideo = new Vue({    el: '#modal-editor-video',    data: {      link: ''    },    methods: {      open: (ev) => {        $('#modal-editor-video').addClass('is-active')        $('#modal-editor-video input').focus()      },      cancel: (ev) => {        mdeModalOpenState = false // eslint-disable-line no-undef        $('#modal-editor-video').removeClass('is-active')        vueVideo.link = ''      },      insertVideo: (ev) => {        if (mde.codemirror.doc.somethingSelected()) {          mde.codemirror.execCommand('singleSelection')        }        // Guess video type        let videoType = _.findKey(videoRules, (vr) => {          return vr.test(vueVideo.link)        })        if (_.isNil(videoType)) {          videoType = 'video'        }        // Insert video tag        let videoText = '[video](' + vueVideo.link + '){.' + videoType + '}\n'        mde.codemirror.doc.replaceSelection(videoText)        vueVideo.cancel()      }    }  })  return vueVideo}
 |