/*
* 雑多な処理を集めたコード * * (C) 2017 Hiroshi Kuwagata <kgt9221@gmail.com> */
(function () {
function readJavaScript(src) { return $.getScript(src); } function readCss(src) { var $df; $df = new $.Deferred(); $('head') .append($('<link>') .on('load', () => { $df.resolve(); }) .attr("rel", "stylesheet") .attr("type", "text/css") .attr("href", src) ); return $df.promise(); } function getResource(list, $df) { var src; src = list.shift(); if (/\.js$/.test(src)) { readJavaScript(src) .then((script, state) => { getResource(list, $df); }) .fail((error) => { $df.reject(error); }); } else if (/\.(css|scss)$/.test(src)) { readCss(src) .then(() => { getResource(list, $df); }) .fail((error) => { $df.reject(error); }); } else if (src == null) { $df.resolve(); } } function loadImage(url, dst) { var $df; $df = new $.Deferred(); if (!dst) { dst = new Image(); } else { if (dst instanceof jQuery) { dst = dst[0]; } if (!(dst instanceof Image)) { throw("not image object"); } } $(dst) .on('load', () => { $df.resolve(dst); }) .on('error', (e) => { $df.reject(e); }) .attr('src', url); return $df.promise(); } Utils = class { static require(list) { var $df; $df = new $.Deferred() getResource(list, $df); return $df.promise(); } static loadImageFromData(data) { var $df; var blob; var url; $df = new $.Deferred(); blob = new Blob([data.data], {type: data.type}); url = URL.createObjectURL(blob); loadImage(url) .then((img) => { $df.resolve(img); }) .fail((error) => { $df.reject(error); }) .always(() => { URL.revokeObjectURL(url); }); return $df.promise(); } static copyToClipboard(text) { var $text; $text = $('<textarea>').css('visible', 'hidden'); $('body').append($text); $text .val(text) .select(); document.execCommand('copy'); $text.remove(); } static showAbortShield(html) { $('body').css('overflow', 'hidden'); $('#abort-shield') .find('p') .html(html) .end() .fadeIn(); } }
})();