From 39301b2e14a1d6b072a216fd074bdfb96cc633c4 Mon Sep 17 00:00:00 2001 From: Harvey Zack Date: Fri, 7 Dec 2018 20:51:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A2=84=E8=A7=88=E5=9B=BE?= =?UTF-8?q?=E5=B7=A5=E5=85=B7bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/uncompiled/artplayer-plugin-gif.js | 52 +++---------------- docs/uncompiled/artplayer-tool-thumbnail.js | 24 +++++---- .../artplayer-tool-thumbnail.js.map | 2 +- .../artplayer-tool-thumbnail/src/index.js | 29 ++++++----- 4 files changed, 37 insertions(+), 70 deletions(-) diff --git a/docs/uncompiled/artplayer-plugin-gif.js b/docs/uncompiled/artplayer-plugin-gif.js index dbdaeb581..73e3b13b8 100644 --- a/docs/uncompiled/artplayer-plugin-gif.js +++ b/docs/uncompiled/artplayer-plugin-gif.js @@ -1,8 +1,10 @@ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global['artplayer-plugin-gif'] = {}))); -}(this, (function (exports) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('b64-to-blob')) : + typeof define === 'function' && define.amd ? define(['exports', 'b64-to-blob'], factory) : + (factory((global['artplayer-plugin-gif'] = {}),global.b64toBlob)); +}(this, (function (exports,b64toBlob) { 'use strict'; + + b64toBlob = b64toBlob && b64toBlob.hasOwnProperty('default') ? b64toBlob['default'] : b64toBlob; function _defineProperty(obj, key, value) { if (key in obj) { @@ -42,8 +44,6 @@ var objectSpread = _objectSpread; - var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function createCommonjsModule(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; } @@ -2721,45 +2721,6 @@ }, typeof window !== "undefined" ? window.navigator : {}); }); - var b64toBlob = createCommonjsModule(function (module) { - (function (root, globalName, factory) { - if (module.exports) { - // Node: - module.exports = factory(); // Use module export as simulated ES6 default export: - - module.exports.default = module.exports; - } else { - // Browser: - window[globalName] = factory(); - } - })(commonjsGlobal, 'b64toBlob', function () { - - return function b64toBlob(b64Data, contentType, sliceSize) { - contentType = contentType || ''; - sliceSize = sliceSize || 512; - var byteCharacters = atob(b64Data); - var byteArrays = []; - - for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) { - var slice = byteCharacters.slice(offset, offset + sliceSize); - var byteNumbers = new Array(slice.length); - - for (var i = 0; i < slice.length; i++) { - byteNumbers[i] = slice.charCodeAt(i); - } - - var byteArray = new Uint8Array(byteNumbers); - byteArrays.push(byteArray); - } - - var blob = new Blob(byteArrays, { - type: contentType - }); - return blob; - }; - }); - }); - function i18nMix(i18n) { i18n.update({ 'zh-cn': { @@ -2920,4 +2881,3 @@ Object.defineProperty(exports, '__esModule', { value: true }); }))); -//# sourceMappingURL=artplayer-plugin-gif.js.map diff --git a/docs/uncompiled/artplayer-tool-thumbnail.js b/docs/uncompiled/artplayer-tool-thumbnail.js index f8024a481..e0f6bb36e 100644 --- a/docs/uncompiled/artplayer-tool-thumbnail.js +++ b/docs/uncompiled/artplayer-tool-thumbnail.js @@ -303,19 +303,23 @@ var promiseList = screenshotDate.map(function (item, index) { return function () { _this4.video.currentTime = item.time; - return sleep(delay).then(function () { - context2D.drawImage(_this4.video, item.x, item.y, width, height); - canvas.toBlob(function (blob) { - if (_this4.thumbnailUrl) { - URL.revokeObjectURL(_this4.thumbnailUrl); - } + return new Promise(function (resolve) { + sleep(delay).then(function () { + context2D.drawImage(_this4.video, item.x, item.y, width, height); + canvas.toBlob(function (blob) { + if (_this4.thumbnailUrl) { + URL.revokeObjectURL(_this4.thumbnailUrl); + } - _this4.thumbnailUrl = URL.createObjectURL(blob); + _this4.thumbnailUrl = URL.createObjectURL(blob); - _this4.emit('update', _this4.thumbnailUrl, (index + 1) / number); + _this4.emit('update', _this4.thumbnailUrl, (index + 1) / number); + + resolve(); + }); + }).catch(function (err) { + console.error(err); }); - }).catch(function (err) { - console.error(err); }); }; }); diff --git a/docs/uncompiled/artplayer-tool-thumbnail.js.map b/docs/uncompiled/artplayer-tool-thumbnail.js.map index aaad3963e..91312d569 100644 --- a/docs/uncompiled/artplayer-tool-thumbnail.js.map +++ b/docs/uncompiled/artplayer-tool-thumbnail.js.map @@ -1 +1 @@ -{"version":3,"file":"artplayer-tool-thumbnail.js","sources":["../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../packages/artplayer-tool-thumbnail/node_modules/tiny-emitter/index.js","../../packages/artplayer-tool-thumbnail/src/utils.js","../../packages/artplayer-tool-thumbnail/src/index.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n","export function sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function runPromisesInSeries(ps) {\n return ps.reduce((p, next) => p.then(next), Promise.resolve());\n}\n\nexport function getFileName(name) {\n const nameArray = name.split('.');\n nameArray.pop();\n return nameArray.join('.');\n}\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}","import Emitter from 'tiny-emitter';\nimport { runPromisesInSeries, sleep, getFileName, clamp } from './utils';\n\nclass ArtplayerToolThumbnail extends Emitter {\n constructor(option = {}) {\n super();\n this.processing = false;\n this.option = {};\n this.setup(Object.assign({}, ArtplayerToolThumbnail.DEFAULTS, option));\n this.video = ArtplayerToolThumbnail.creatVideo();\n this.inputChange = this.inputChange.bind(this);\n this.ondrop = this.ondrop.bind(this);\n this.option.fileInput.addEventListener('change', this.inputChange);\n this.option.fileInput.addEventListener('dragover', ArtplayerToolThumbnail.ondragover);\n this.option.fileInput.addEventListener('drop', ArtplayerToolThumbnail.ondrop);\n }\n\n static get DEFAULTS() {\n return {\n delay: 300,\n number: 60,\n width: 160,\n height: 90,\n column: 10,\n };\n }\n\n static ondragover(e) {\n e.preventDefault();\n }\n\n ondrop(e) {\n e.preventDefault();\n const file = e.dataTransfer.files[0];\n this.loadVideo(file);\n }\n\n setup(option = {}) {\n this.option = Object.assign({}, this.option, option);\n const { fileInput, delay, number, width, height, column } = this.option;\n\n this.errorHandle(\n fileInput.tagName === 'INPUT' && fileInput.type === 'file',\n 'The \\'fileInput\\' is not a usable file input like: ',\n );\n\n ['delay', 'number', 'width', 'height', 'column'].forEach(item => {\n this.errorHandle(typeof this.option[item] === 'number', `The '${item}' is not a number`);\n });\n\n this.option.delay = clamp(delay, 10, 1000);\n this.option.number = clamp(number, 10, 1000);\n this.option.width = clamp(width, 10, 1000);\n this.option.height = clamp(height, 10, 1000);\n this.option.column = clamp(column, 1, 1000);\n return this;\n }\n\n static creatVideo() {\n const video = document.createElement('video');\n video.style.position = 'absolute';\n video.style.top = '-9999px';\n video.style.left = '-9999px';\n video.muted = true;\n video.controls = true;\n document.body.appendChild(video);\n return video;\n }\n\n inputChange() {\n const file = this.option.fileInput.files[0];\n this.loadVideo(file);\n }\n\n loadVideo(file) {\n const { delay } = this.option;\n if (file) {\n const canPlayType = this.video.canPlayType(file.type);\n this.errorHandle(\n canPlayType === 'maybe' || canPlayType === 'probably',\n `Playback of this file format is not supported: ${file.type}`,\n );\n const videoUrl = URL.createObjectURL(file);\n this.videoUrl = videoUrl;\n this.file = file;\n this.emit('file', this.file);\n this.video.src = videoUrl;\n sleep(delay)\n .then(() => {\n this.emit('video', this.video);\n })\n .catch(err => {\n this.emit('error', err.message);\n console.error(err);\n });\n }\n }\n\n start() {\n const { width, height, number, delay } = this.option;\n this.density = number / this.video.duration;\n this.errorHandle(this.file && this.video, 'Please select the video file first');\n this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...');\n this.errorHandle(this.density <= 1, `The preview density cannot be greater than 1, but got ${this.density}`);\n const screenshotDate = this.creatScreenshotDate();\n const canvas = this.creatCanvas();\n const context2D = canvas.getContext('2d');\n this.emit('canvas', canvas);\n const promiseList = screenshotDate.map((item, index) => () => {\n this.video.currentTime = item.time;\n return sleep(delay)\n .then(() => {\n context2D.drawImage(this.video, item.x, item.y, width, height);\n canvas.toBlob(blob => {\n if (this.thumbnailUrl) {\n URL.revokeObjectURL(this.thumbnailUrl);\n }\n this.thumbnailUrl = URL.createObjectURL(blob);\n this.emit('update', this.thumbnailUrl, (index + 1) / number);\n });\n })\n .catch(err => {\n console.error(err);\n });\n });\n this.processing = true;\n return runPromisesInSeries(promiseList)\n .then(() =>\n sleep(delay * 2)\n .then(() => {\n this.processing = false;\n this.emit('done');\n })\n .catch(err => {\n this.processing = false;\n this.emit('error', err.message);\n console.error(err);\n }),\n )\n .catch(err => {\n this.processing = false;\n this.emit('error', err.message);\n console.error(err);\n });\n }\n\n creatScreenshotDate() {\n const { number, width, height, column } = this.option;\n const { duration } = this.video;\n const timeGap = duration / number;\n const timePoints = [timeGap];\n while (timePoints.length < number) {\n const last = timePoints[timePoints.length - 1];\n timePoints.push(last + timeGap);\n }\n return timePoints.map((item, index) => ({\n time: item - timeGap / 2,\n x: (index % column) * width,\n y: Math.floor(index / column) * height,\n }));\n }\n\n creatCanvas() {\n const { number, width, height, column } = this.option;\n const canvas = document.createElement('canvas');\n const context2D = canvas.getContext('2d');\n canvas.width = width * column;\n canvas.height = Math.ceil(number / column) * height + 30;\n context2D.fillStyle = 'black';\n context2D.fillRect(0, 0, canvas.width, canvas.height);\n context2D.font = '14px Georgia';\n context2D.fillStyle = '#fff';\n context2D.fillText(\n `From: https://artplayer.org/thumbnail, Number: ${number}, Width: ${width}, Height: ${height}, Column: ${column}`,\n 10,\n canvas.height - 11,\n );\n return canvas;\n }\n\n download() {\n this.errorHandle(\n this.file && this.thumbnailUrl,\n 'Download does not seem to be ready, please create preview first',\n );\n this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...');\n const elink = document.createElement('a');\n const name = `${getFileName(this.file.name)}.png`;\n elink.download = name;\n elink.href = this.thumbnailUrl;\n document.body.appendChild(elink);\n elink.click();\n document.body.removeChild(elink);\n this.emit('download', name);\n return this;\n }\n\n errorHandle(condition, msg) {\n if (!condition) {\n this.emit('error', msg);\n throw new Error(msg);\n }\n }\n\n destroy() {\n this.option.fileInput.removeEventListener('change', this.inputChange);\n this.option.fileInput.removeEventListener('dragover', ArtplayerToolThumbnail.ondragover);\n this.option.fileInput.removeEventListener('drop', ArtplayerToolThumbnail.ondrop);\n document.body.removeChild(this.video);\n if (this.videoUrl) {\n URL.revokeObjectURL(this.videoUrl);\n }\n if (this.thumbnailUrl) {\n URL.revokeObjectURL(this.thumbnailUrl);\n }\n this.emit('destroy');\n }\n}\n\nwindow.ArtplayerToolThumbnail = ArtplayerToolThumbnail;\nexport default ArtplayerToolThumbnail;\n"],"names":["_typeof","E","prototype","on","name","callback","ctx","e","push","fn","once","self","listener","off","apply","arguments","_","emit","data","slice","call","evtArr","i","len","length","evts","liveEvents","sleep","ms","Promise","resolve","setTimeout","runPromisesInSeries","ps","reduce","p","next","then","getFileName","nameArray","split","pop","join","clamp","num","a","b","Math","max","min","ArtplayerToolThumbnail","option","processing","setup","Object","assign","DEFAULTS","video","creatVideo","inputChange","bind","ondrop","fileInput","addEventListener","ondragover","preventDefault","file","dataTransfer","files","loadVideo","delay","number","width","height","column","errorHandle","tagName","type","forEach","item","canPlayType","videoUrl","URL","createObjectURL","src","catch","err","message","console","error","density","duration","screenshotDate","creatScreenshotDate","canvas","creatCanvas","context2D","getContext","promiseList","map","index","currentTime","time","drawImage","x","y","toBlob","blob","thumbnailUrl","revokeObjectURL","timeGap","timePoints","last","floor","document","createElement","ceil","fillStyle","fillRect","font","fillText","elink","download","href","body","appendChild","click","removeChild","condition","msg","Error","removeEventListener","style","position","top","left","muted","controls","Emitter","window"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"artplayer-tool-thumbnail.js","sources":["../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../packages/artplayer-tool-thumbnail/node_modules/tiny-emitter/index.js","../../packages/artplayer-tool-thumbnail/src/utils.js","../../packages/artplayer-tool-thumbnail/src/index.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n","export function sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function runPromisesInSeries(ps) {\n return ps.reduce((p, next) => p.then(next), Promise.resolve());\n}\n\nexport function getFileName(name) {\n const nameArray = name.split('.');\n nameArray.pop();\n return nameArray.join('.');\n}\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}","import Emitter from 'tiny-emitter';\nimport { runPromisesInSeries, sleep, getFileName, clamp } from './utils';\n\nclass ArtplayerToolThumbnail extends Emitter {\n constructor(option = {}) {\n super();\n this.processing = false;\n this.option = {};\n this.setup(Object.assign({}, ArtplayerToolThumbnail.DEFAULTS, option));\n this.video = ArtplayerToolThumbnail.creatVideo();\n this.inputChange = this.inputChange.bind(this);\n this.ondrop = this.ondrop.bind(this);\n this.option.fileInput.addEventListener('change', this.inputChange);\n this.option.fileInput.addEventListener('dragover', ArtplayerToolThumbnail.ondragover);\n this.option.fileInput.addEventListener('drop', ArtplayerToolThumbnail.ondrop);\n }\n\n static get DEFAULTS() {\n return {\n delay: 300,\n number: 60,\n width: 160,\n height: 90,\n column: 10,\n };\n }\n\n static ondragover(e) {\n e.preventDefault();\n }\n\n ondrop(e) {\n e.preventDefault();\n const file = e.dataTransfer.files[0];\n this.loadVideo(file);\n }\n\n setup(option = {}) {\n this.option = Object.assign({}, this.option, option);\n const { fileInput, delay, number, width, height, column } = this.option;\n\n this.errorHandle(\n fileInput.tagName === 'INPUT' && fileInput.type === 'file',\n 'The \\'fileInput\\' is not a usable file input like: ',\n );\n\n ['delay', 'number', 'width', 'height', 'column'].forEach(item => {\n this.errorHandle(typeof this.option[item] === 'number', `The '${item}' is not a number`);\n });\n\n this.option.delay = clamp(delay, 10, 1000);\n this.option.number = clamp(number, 10, 1000);\n this.option.width = clamp(width, 10, 1000);\n this.option.height = clamp(height, 10, 1000);\n this.option.column = clamp(column, 1, 1000);\n return this;\n }\n\n static creatVideo() {\n const video = document.createElement('video');\n video.style.position = 'absolute';\n video.style.top = '-9999px';\n video.style.left = '-9999px';\n video.muted = true;\n video.controls = true;\n document.body.appendChild(video);\n return video;\n }\n\n inputChange() {\n const file = this.option.fileInput.files[0];\n this.loadVideo(file);\n }\n\n loadVideo(file) {\n const { delay } = this.option;\n if (file) {\n const canPlayType = this.video.canPlayType(file.type);\n this.errorHandle(\n canPlayType === 'maybe' || canPlayType === 'probably',\n `Playback of this file format is not supported: ${file.type}`,\n );\n const videoUrl = URL.createObjectURL(file);\n this.videoUrl = videoUrl;\n this.file = file;\n this.emit('file', this.file);\n this.video.src = videoUrl;\n sleep(delay)\n .then(() => {\n this.emit('video', this.video);\n })\n .catch(err => {\n this.emit('error', err.message);\n console.error(err);\n });\n }\n }\n\n start() {\n const { width, height, number, delay } = this.option;\n this.density = number / this.video.duration;\n this.errorHandle(this.file && this.video, 'Please select the video file first');\n this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...');\n this.errorHandle(this.density <= 1, `The preview density cannot be greater than 1, but got ${this.density}`);\n const screenshotDate = this.creatScreenshotDate();\n const canvas = this.creatCanvas();\n const context2D = canvas.getContext('2d');\n this.emit('canvas', canvas);\n const promiseList = screenshotDate.map((item, index) => () => {\n this.video.currentTime = item.time;\n return new Promise(resolve => {\n sleep(delay)\n .then(() => {\n context2D.drawImage(this.video, item.x, item.y, width, height);\n canvas.toBlob(blob => {\n if (this.thumbnailUrl) {\n URL.revokeObjectURL(this.thumbnailUrl);\n }\n this.thumbnailUrl = URL.createObjectURL(blob);\n this.emit('update', this.thumbnailUrl, (index + 1) / number);\n resolve();\n });\n })\n .catch(err => {\n console.error(err);\n });\n });\n });\n this.processing = true;\n return runPromisesInSeries(promiseList)\n .then(() =>\n sleep(delay * 2)\n .then(() => {\n this.processing = false;\n this.emit('done');\n })\n .catch(err => {\n this.processing = false;\n this.emit('error', err.message);\n console.error(err);\n }),\n )\n .catch(err => {\n this.processing = false;\n this.emit('error', err.message);\n console.error(err);\n });\n }\n\n creatScreenshotDate() {\n const { number, width, height, column } = this.option;\n const { duration } = this.video;\n const timeGap = duration / number;\n const timePoints = [timeGap];\n while (timePoints.length < number) {\n const last = timePoints[timePoints.length - 1];\n timePoints.push(last + timeGap);\n }\n return timePoints.map((item, index) => ({\n time: item - timeGap / 2,\n x: (index % column) * width,\n y: Math.floor(index / column) * height,\n }));\n }\n\n creatCanvas() {\n const { number, width, height, column } = this.option;\n const canvas = document.createElement('canvas');\n const context2D = canvas.getContext('2d');\n canvas.width = width * column;\n canvas.height = Math.ceil(number / column) * height + 30;\n context2D.fillStyle = 'black';\n context2D.fillRect(0, 0, canvas.width, canvas.height);\n context2D.font = '14px Georgia';\n context2D.fillStyle = '#fff';\n context2D.fillText(\n `From: https://artplayer.org/thumbnail, Number: ${number}, Width: ${width}, Height: ${height}, Column: ${column}`,\n 10,\n canvas.height - 11,\n );\n return canvas;\n }\n\n download() {\n this.errorHandle(\n this.file && this.thumbnailUrl,\n 'Download does not seem to be ready, please create preview first',\n );\n this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...');\n const elink = document.createElement('a');\n const name = `${getFileName(this.file.name)}.png`;\n elink.download = name;\n elink.href = this.thumbnailUrl;\n document.body.appendChild(elink);\n elink.click();\n document.body.removeChild(elink);\n this.emit('download', name);\n return this;\n }\n\n errorHandle(condition, msg) {\n if (!condition) {\n this.emit('error', msg);\n throw new Error(msg);\n }\n }\n\n destroy() {\n this.option.fileInput.removeEventListener('change', this.inputChange);\n this.option.fileInput.removeEventListener('dragover', ArtplayerToolThumbnail.ondragover);\n this.option.fileInput.removeEventListener('drop', ArtplayerToolThumbnail.ondrop);\n document.body.removeChild(this.video);\n if (this.videoUrl) {\n URL.revokeObjectURL(this.videoUrl);\n }\n if (this.thumbnailUrl) {\n URL.revokeObjectURL(this.thumbnailUrl);\n }\n this.emit('destroy');\n }\n}\n\nwindow.ArtplayerToolThumbnail = ArtplayerToolThumbnail;\nexport default ArtplayerToolThumbnail;\n"],"names":["_typeof","E","prototype","on","name","callback","ctx","e","push","fn","once","self","listener","off","apply","arguments","_","emit","data","slice","call","evtArr","i","len","length","evts","liveEvents","sleep","ms","Promise","resolve","setTimeout","runPromisesInSeries","ps","reduce","p","next","then","getFileName","nameArray","split","pop","join","clamp","num","a","b","Math","max","min","ArtplayerToolThumbnail","option","processing","setup","Object","assign","DEFAULTS","video","creatVideo","inputChange","bind","ondrop","fileInput","addEventListener","ondragover","preventDefault","file","dataTransfer","files","loadVideo","delay","number","width","height","column","errorHandle","tagName","type","forEach","item","canPlayType","videoUrl","URL","createObjectURL","src","catch","err","message","console","error","density","duration","screenshotDate","creatScreenshotDate","canvas","creatCanvas","context2D","getContext","promiseList","map","index","currentTime","time","drawImage","x","y","toBlob","blob","thumbnailUrl","revokeObjectURL","timeGap","timePoints","last","floor","document","createElement","ceil","fillStyle","fillRect","font","fillText","elink","download","href","body","appendChild","click","removeChild","condition","msg","Error","removeEventListener","style","position","top","left","muted","controls","Emitter","window"],"mappings":"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"} \ No newline at end of file diff --git a/packages/artplayer-tool-thumbnail/src/index.js b/packages/artplayer-tool-thumbnail/src/index.js index 12594dea0..34da4ff74 100644 --- a/packages/artplayer-tool-thumbnail/src/index.js +++ b/packages/artplayer-tool-thumbnail/src/index.js @@ -108,20 +108,23 @@ class ArtplayerToolThumbnail extends Emitter { this.emit('canvas', canvas); const promiseList = screenshotDate.map((item, index) => () => { this.video.currentTime = item.time; - return sleep(delay) - .then(() => { - context2D.drawImage(this.video, item.x, item.y, width, height); - canvas.toBlob(blob => { - if (this.thumbnailUrl) { - URL.revokeObjectURL(this.thumbnailUrl); - } - this.thumbnailUrl = URL.createObjectURL(blob); - this.emit('update', this.thumbnailUrl, (index + 1) / number); + return new Promise(resolve => { + sleep(delay) + .then(() => { + context2D.drawImage(this.video, item.x, item.y, width, height); + canvas.toBlob(blob => { + if (this.thumbnailUrl) { + URL.revokeObjectURL(this.thumbnailUrl); + } + this.thumbnailUrl = URL.createObjectURL(blob); + this.emit('update', this.thumbnailUrl, (index + 1) / number); + resolve(); + }); + }) + .catch(err => { + console.error(err); }); - }) - .catch(err => { - console.error(err); - }); + }); }); this.processing = true; return runPromisesInSeries(promiseList)