123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- // CodeMirror, copyright (c) by Marijn Haverbeke and others
- // Distributed under an MIT license: https://codemirror.net/LICENSE
- ;(function (mod) {
- if (typeof exports == 'object' && typeof module == 'object')
- // CommonJS
- mod(require('../../lib/codemirror'), 'cjs')
- else if (typeof define == 'function' && define.amd)
- // AMD
- define(['../../lib/codemirror'], function (CM) {
- mod(CM, 'amd')
- })
- // Plain browser env
- else mod(CodeMirror, 'plain')
- })(function (CodeMirror, env) {
- if (!CodeMirror.modeURL) CodeMirror.modeURL = '../mode/%N/%N.js'
- var loading = {}
- function splitCallback(cont, n) {
- var countDown = n
- return function () {
- if (--countDown == 0) cont()
- }
- }
- function ensureDeps(mode, cont, options) {
- var modeObj = CodeMirror.modes[mode],
- deps = modeObj && modeObj.dependencies
- if (!deps) return cont()
- var missing = []
- for (var i = 0; i < deps.length; ++i) {
- if (!CodeMirror.modes.hasOwnProperty(deps[i])) missing.push(deps[i])
- }
- if (!missing.length) return cont()
- var split = splitCallback(cont, missing.length)
- for (var i = 0; i < missing.length; ++i) CodeMirror.requireMode(missing[i], split, options)
- }
- CodeMirror.requireMode = function (mode, cont, options) {
- if (typeof mode != 'string') mode = mode.name
- if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode, cont, options)
- if (loading.hasOwnProperty(mode)) return loading[mode].push(cont)
- var file = options && options.path ? options.path(mode) : CodeMirror.modeURL.replace(/%N/g, mode)
- if (options && options.loadMode) {
- options.loadMode(file, function () {
- ensureDeps(mode, cont, options)
- })
- } else if (env == 'plain') {
- var script = document.createElement('script')
- script.src = file
- var others = document.getElementsByTagName('script')[0]
- var list = (loading[mode] = [cont])
- CodeMirror.on(script, 'load', function () {
- ensureDeps(
- mode,
- function () {
- for (var i = 0; i < list.length; ++i) list[i]()
- },
- options
- )
- })
- others.parentNode.insertBefore(script, others)
- } else if (env == 'cjs') {
- require(file)
- cont()
- } else if (env == 'amd') {
- requirejs([file], cont)
- }
- }
- CodeMirror.autoLoadMode = function (instance, mode, options) {
- if (!CodeMirror.modes.hasOwnProperty(mode))
- CodeMirror.requireMode(
- mode,
- function () {
- instance.setOption('mode', instance.getOption('mode'))
- },
- options
- )
- }
- })
|