window._config = {
isDebug: ['localhost'].indexOf(location.hostname) > -1,
cdnUrl: 'https://unpkg.com/multiple-select@1.5.2/dist/',
localUrl: 'http://localhost:8080/github/multiple-select/src/'
}
function _getLink(file) {
var url = file
if (!/^http/.test(file)) {
url = window._config.cdnUrl + file
if (window._config.isDebug) {
url = window._config.localUrl + file.replace(/\.min/, '') + '?t=' + (+new Date())
}
}
return ''
}
function _getScript(file, isScriptTag) {
var url = file
if (!/^http/.test(file)) {
url = window._config.cdnUrl + file
if (window._config.isDebug) {
url = window._config.localUrl + file.replace(/\.min/, '') + '?t=' + (+new Date())
}
}
if (isScriptTag) {
return ''
}
return url
}
function _link(file) {
$('head').append(_getLink(file))
}
function _script(file, callback) {
var head = document.getElementsByTagName('head')[0]
var script = document.createElement('script')
if (window._config.isDebug && !/^http/.test(file)) {
script.type = 'module'
}
script.src = _getScript(file)
var done = false
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function() {
if (!done && (!this.readyState ||
this.readyState === 'loaded' || this.readyState === 'complete')) {
done = true
if (callback)
callback()
// Handle memory leak in IE
script.onload = script.onreadystatechange = null
}
}
head.appendChild(script)
}
function _scripts(scripts, callback) {
var eachSeries = function (arr, iterator, callback_) {
var callback = callback_ || function () {}
if (!arr.length) {
return callback()
}
var completed = 0
var iterate = function () {
iterator(arr[completed], function (err) {
if (err) {
callback(err)
callback = function () {}
} else {
completed += 1
if (completed >= arr.length) {
callback(null)
} else {
iterate()
}
}
})
}
iterate()
}
eachSeries(scripts, _script, function () {
callback()
})
}
function _beautifySource(data) {
var lines = data.split('\n')
var scriptStart = lines.indexOf('', scriptStart)
var strings = lines.slice(scriptStart + 1, scriptEnd)
strings = $.map(strings, function (s) {
return $.trim(s)
})
/* eslint-disable no-control-regex */
var obj = eval('(' + strings.join('').replace(/[^\u0000-\u007E]/g, '')
.replace(/^init\((.*)\)$/, '$1') + ')')
var result = []
result = result.concat($.map(obj.links, _getLink))
result.push('')
result.push('')
result = result.concat($.map(obj.scripts, function (script) {
return _getScript(script, true)
}))
lines = result.concat(lines.slice(scriptEnd + 1))
var mountedStart = lines.indexOf(' function mounted() {')
var mountedEnd = lines.indexOf(' }', mountedStart)
lines[mountedStart] = ' $(function() {'
lines[mountedEnd] = ' })'
return lines.join('\n')
}
$(function () {
var query = {}
location.search.substring(1).split('&').forEach(function (item) {
query[item.split('=')[0]] = item.split('=')[1]
})
var url = query.url
var isSource = location.hash.substring(1) === 'view-source'
delete query.url
$.ajax({
type: 'GET',
url: url + '?' + $.param(query),
dataType: 'html',
global: false,
cache: true, // (warning: setting it to false will cause a timestamp and will call the request twice)
success: function (data) {
if (isSource) {
$('#example').hide().html(data)
$('.source-pre').show()
$('#source').text(_beautifySource(data))
window.hljs.initHighlightingOnLoad()
} else {
$('#example').html(data)
}
},
error: function () {
parent.location.href = 'index.html'
}
})
})
window.init = function (options_) {
var options = $.extend({
title: '',
desc: '',
links: [],
scripts: [],
bootstrapVersion: 3,
callback: function () {
if (typeof window.mounted === 'function') {
window.mounted()
}
}
}, options_)
$('.bd-title span').html(options.title)
$('.bd-lead').html(options.desc)
$.each(options.links, function (i, file) {
_link(file)
})
_scripts(options.scripts, options.callback)
}