From 592ae58f05f74dbcd2b906e5c20e8121142b65ad Mon Sep 17 00:00:00 2001 From: Harvey Date: Tue, 11 Jan 2022 09:10:03 +0800 Subject: [PATCH] update artplayer-tool-thumbnail --- docs/assets/example/thumbnail.js | 1 - docs/uncompiled/artplayer-tool-thumbnail.js | 166 +++++++----------- .../artplayer-tool-thumbnail.js.map | 2 +- .../artplayer-tool-thumbnail/src/index.js | 76 +++----- 4 files changed, 92 insertions(+), 153 deletions(-) diff --git a/docs/assets/example/thumbnail.js b/docs/assets/example/thumbnail.js index c0b925b2a..9da6f71e1 100644 --- a/docs/assets/example/thumbnail.js +++ b/docs/assets/example/thumbnail.js @@ -9,7 +9,6 @@ var $artplayer = document.querySelector('.artplayer-app'); $artplayer.innerHTML = 'Drop video file here or click to upload.'; var thumbnail = new ArtplayerToolThumbnail({ fileInput: $artplayer, - delay: 300, // 延迟 number: 60, // 数量 width: 160, // 宽度 height: 90, // 高度 diff --git a/docs/uncompiled/artplayer-tool-thumbnail.js b/docs/uncompiled/artplayer-tool-thumbnail.js index 2a8eb0d54..618d0df0f 100644 --- a/docs/uncompiled/artplayer-tool-thumbnail.js +++ b/docs/uncompiled/artplayer-tool-thumbnail.js @@ -2,7 +2,7 @@ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ArtplayerToolThumbnail = factory()); -}(this, (function () { 'use strict'; +})(this, (function () { 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { @@ -10,8 +10,6 @@ } } - var classCallCheck = _classCallCheck; - function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; @@ -28,8 +26,6 @@ return Constructor; } - var createClass = _createClass; - function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); @@ -38,15 +34,8 @@ return self; } - var assertThisInitialized = _assertThisInitialized; - - function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; - } - - var setPrototypeOf = createCommonjsModule(function (module) { function _setPrototypeOf(o, p) { - module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; @@ -54,9 +43,6 @@ return _setPrototypeOf(o, p); } - module.exports = _setPrototypeOf; - }); - function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); @@ -69,21 +55,18 @@ configurable: true } }); - if (superClass) setPrototypeOf(subClass, superClass); + if (superClass) _setPrototypeOf(subClass, superClass); } - var inherits = _inherits; - - var _typeof_1 = createCommonjsModule(function (module) { function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - module.exports = _typeof = function _typeof(obj) { + _typeof = function _typeof(obj) { return typeof obj; }; } else { - module.exports = _typeof = function _typeof(obj) { + _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } @@ -91,29 +74,24 @@ return _typeof(obj); } - module.exports = _typeof; - }); - function _possibleConstructorReturn(self, call) { - if (call && (_typeof_1(call) === "object" || typeof call === "function")) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); } - return assertThisInitialized(self); + return _assertThisInitialized(self); } - var possibleConstructorReturn = _possibleConstructorReturn; - - var getPrototypeOf = createCommonjsModule(function (module) { function _getPrototypeOf(o) { - module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - module.exports = _getPrototypeOf; - }); + var tinyEmitter = {exports: {}}; function E () { // Keep this empty so it's easier to inherit from @@ -179,9 +157,10 @@ } }; - var tinyEmitter = E; - var TinyEmitter = E; - tinyEmitter.TinyEmitter = TinyEmitter; + tinyEmitter.exports = E; + tinyEmitter.exports.TinyEmitter = E; + + var Emitter = tinyEmitter.exports; function sleep(ms) { return new Promise(function (resolve) { @@ -202,12 +181,12 @@ return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b)); } - function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn(this, result); }; } + function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var ArtplayerToolThumbnail = /*#__PURE__*/function (_Emitter) { - inherits(ArtplayerToolThumbnail, _Emitter); + _inherits(ArtplayerToolThumbnail, _Emitter); var _super = _createSuper(ArtplayerToolThumbnail); @@ -216,7 +195,7 @@ var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - classCallCheck(this, ArtplayerToolThumbnail); + _classCallCheck(this, ArtplayerToolThumbnail); _this = _super.call(this); _this.processing = false; @@ -226,8 +205,8 @@ _this.video = ArtplayerToolThumbnail.creatVideo(); _this.duration = 0; - _this.inputChange = _this.inputChange.bind(assertThisInitialized(_this)); - _this.ondrop = _this.ondrop.bind(assertThisInitialized(_this)); + _this.inputChange = _this.inputChange.bind(_assertThisInitialized(_this)); + _this.ondrop = _this.ondrop.bind(_assertThisInitialized(_this)); _this.option.fileInput.addEventListener('change', _this.inputChange); @@ -238,11 +217,11 @@ return _this; } - createClass(ArtplayerToolThumbnail, [{ + _createClass(ArtplayerToolThumbnail, [{ key: "ondrop", - value: function ondrop(e) { - e.preventDefault(); - var file = e.dataTransfer.files[0]; + value: function ondrop(event) { + event.preventDefault(); + var file = event.dataTransfer.files[0]; this.loadVideo(file); } }, { @@ -254,7 +233,6 @@ this.option = Object.assign({}, this.option, option); var _this$option = this.option, fileInput = _this$option.fileInput, - delay = _this$option.delay, number = _this$option.number, width = _this$option.width, height = _this$option.height, @@ -277,10 +255,9 @@ this.option.fileInput = newFileInput; } - ['delay', 'number', 'width', 'height', 'column', 'begin', 'end'].forEach(function (item) { + ['number', 'width', 'height', 'column', 'begin', 'end'].forEach(function (item) { _this2.errorHandle(typeof _this2.option[item] === 'number', "The '".concat(item, "' is not a number")); }); - this.option.delay = clamp(delay, 10, 1000); this.option.number = clamp(number, 10, 1000); this.option.width = clamp(width, 10, 1000); this.option.height = clamp(height, 10, 1000); @@ -289,17 +266,14 @@ } }, { key: "inputChange", - value: function inputChange() { + value: function inputChange(event) { var file = this.option.fileInput.files[0]; this.loadVideo(file); + event.target.value = ''; } }, { key: "loadVideo", value: function loadVideo(file) { - var _this3 = this; - - var delay = this.option.delay; - if (file) { var canPlayType = this.video.canPlayType(file.type); this.errorHandle(canPlayType === 'maybe' || canPlayType === 'probably', "Playback of this file format is not supported: ".concat(file.type)); @@ -308,26 +282,21 @@ this.file = file; this.emit('file', this.file); this.video.src = videoUrl; - sleep(delay).then(function () { - _this3.emit('video', _this3.video); - }).catch(function (err) { - _this3.emit('error', err.message); - - throw err; - }); + this.emit('video', this.video); } } }, { key: "start", value: function start() { - var _this4 = this; + var _this3 = this; - if (!this.video.duration) return sleep(1000).then(this.start); + if (!this.video.duration) return sleep(1000).then(function () { + return _this3.start(); + }); var _this$option2 = this.option, width = _this$option2.width, height = _this$option2.height, number = _this$option2.number, - delay = _this$option2.delay, begin = _this$option2.begin, end = _this$option2.end; this.option.begin = clamp(begin, 0, this.video.duration); @@ -344,44 +313,36 @@ this.emit('canvas', canvas); var promiseList = screenshotDate.map(function (item, index) { return function () { - _this4.video.currentTime = item.time; return new Promise(function (resolve) { - sleep(delay).then(function () { - context2D.drawImage(_this4.video, item.x, item.y, width, height); + _this3.video.oncanplay = function () { + context2D.drawImage(_this3.video, item.x, item.y, width, height); canvas.toBlob(function (blob) { - if (_this4.thumbnailUrl) { - URL.revokeObjectURL(_this4.thumbnailUrl); + if (_this3.thumbnailUrl) { + URL.revokeObjectURL(_this3.thumbnailUrl); } - _this4.thumbnailUrl = URL.createObjectURL(blob); + _this3.thumbnailUrl = URL.createObjectURL(blob); - _this4.emit('update', _this4.thumbnailUrl, (index + 1) / number); + _this3.emit('update', _this3.thumbnailUrl, (index + 1) / number); + _this3.video.oncanplay = null; resolve(); }); - }).catch(function (err) { - throw err; - }); + }; + + _this3.video.currentTime = item.time; }); }; }); this.processing = true; return runPromisesInSeries(promiseList).then(function () { - return sleep(delay * 2).then(function () { - _this4.processing = false; + _this3.processing = false; - _this4.emit('done'); - }).catch(function (err) { - _this4.processing = false; - - _this4.emit('error', err.message); - - throw err; - }); + _this3.emit('done'); }).catch(function (err) { - _this4.processing = false; + _this3.processing = false; - _this4.emit('error', err.message); + _this3.emit('error', err.message); throw err; }); @@ -472,9 +433,21 @@ this.emit('destroy'); } }], [{ + key: "DEFAULTS", + get: function get() { + return { + number: 60, + width: 160, + height: 90, + column: 10, + begin: 0, + end: NaN + }; + } + }, { key: "ondragover", - value: function ondragover(e) { - e.preventDefault(); + value: function ondragover(event) { + event.preventDefault(); } }, { key: "creatVideo", @@ -488,25 +461,12 @@ document.body.appendChild(video); return video; } - }, { - key: "DEFAULTS", - get: function get() { - return { - delay: 300, - number: 60, - width: 160, - height: 90, - column: 10, - begin: 0, - end: NaN - }; - } }]); return ArtplayerToolThumbnail; - }(tinyEmitter); + }(Emitter); return ArtplayerToolThumbnail; -}))); +})); //# sourceMappingURL=artplayer-tool-thumbnail.js.map diff --git a/docs/uncompiled/artplayer-tool-thumbnail.js.map b/docs/uncompiled/artplayer-tool-thumbnail.js.map index 0c4594148..7b77a11f1 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@7.12.5@@babel/runtime/helpers/classCallCheck.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/createClass.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/inherits.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/typeof.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/getPrototypeOf.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 _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;","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 _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var _typeof = require(\"@babel/runtime/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 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;\nmodule.exports.TinyEmitter = 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.duration = 0;\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 begin: 0,\n end: NaN,\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(fileInput instanceof Element, \"The 'fileInput' is not a Element\");\n\n if (!(fileInput.tagName === 'INPUT' && fileInput.type === 'file')) {\n fileInput.style.position = 'relative';\n const newFileInput = document.createElement('input');\n newFileInput.type = 'file';\n newFileInput.style.position = 'absolute';\n newFileInput.style.width = '100%';\n newFileInput.style.height = '100%';\n newFileInput.style.left = '0';\n newFileInput.style.top = '0';\n newFileInput.style.right = '0';\n newFileInput.style.bottom = '0';\n newFileInput.style.opacity = '0';\n fileInput.appendChild(newFileInput);\n this.option.fileInput = newFileInput;\n }\n\n ['delay', 'number', 'width', 'height', 'column', 'begin', 'end'].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 throw err;\n });\n }\n }\n\n start() {\n if (!this.video.duration) return sleep(1000).then(this.start);\n const { width, height, number, delay, begin, end } = this.option;\n this.option.begin = clamp(begin, 0, this.video.duration);\n this.option.end = clamp(end || this.video.duration, begin, this.video.duration);\n this.errorHandle(this.option.end > this.option.begin, `End time must be greater than the start time`);\n this.duration = this.option.end - this.option.begin;\n this.density = number / this.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 throw 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 throw err;\n }),\n )\n .catch((err) => {\n this.processing = false;\n this.emit('error', err.message);\n throw err;\n });\n }\n\n creatScreenshotDate() {\n const { number, width, height, column, begin } = this.option;\n const timeGap = this.duration / number;\n const timePoints = [begin + 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/, 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\nexport default ArtplayerToolThumbnail;\n"],"names":["_typeof","sleep","ms","Promise","resolve","setTimeout","runPromisesInSeries","ps","reduce","p","next","then","getFileName","name","nameArray","split","pop","join","clamp","num","a","b","Math","max","min","ArtplayerToolThumbnail","option","processing","setup","Object","assign","DEFAULTS","video","creatVideo","duration","inputChange","bind","ondrop","fileInput","addEventListener","ondragover","e","preventDefault","file","dataTransfer","files","loadVideo","delay","number","width","height","column","errorHandle","Element","tagName","type","style","position","newFileInput","document","createElement","left","top","right","bottom","opacity","appendChild","forEach","item","canPlayType","videoUrl","URL","createObjectURL","emit","src","catch","err","message","start","begin","end","density","screenshotDate","creatScreenshotDate","canvas","creatCanvas","context2D","getContext","promiseList","map","index","currentTime","time","drawImage","x","y","toBlob","blob","thumbnailUrl","revokeObjectURL","timeGap","timePoints","length","last","push","floor","ceil","fillStyle","fillRect","font","fillText","elink","download","href","body","click","removeChild","condition","msg","Error","removeEventListener","muted","controls","NaN","Emitter"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"artplayer-tool-thumbnail.js","sources":["../../node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/esm/classCallCheck.js","../../node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/esm/createClass.js","../../node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/esm/assertThisInitialized.js","../../node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/esm/setPrototypeOf.js","../../node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/esm/inherits.js","../../node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/esm/typeof.js","../../node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/esm/getPrototypeOf.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":["export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","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\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default 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}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _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}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","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;\nmodule.exports.TinyEmitter = 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.duration = 0;\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 number: 60,\n width: 160,\n height: 90,\n column: 10,\n begin: 0,\n end: NaN,\n };\n }\n\n static ondragover(event) {\n event.preventDefault();\n }\n\n ondrop(event) {\n event.preventDefault();\n const file = event.dataTransfer.files[0];\n this.loadVideo(file);\n }\n\n setup(option = {}) {\n this.option = Object.assign({}, this.option, option);\n const { fileInput, number, width, height, column } = this.option;\n\n this.errorHandle(fileInput instanceof Element, \"The 'fileInput' is not a Element\");\n\n if (!(fileInput.tagName === 'INPUT' && fileInput.type === 'file')) {\n fileInput.style.position = 'relative';\n const newFileInput = document.createElement('input');\n newFileInput.type = 'file';\n newFileInput.style.position = 'absolute';\n newFileInput.style.width = '100%';\n newFileInput.style.height = '100%';\n newFileInput.style.left = '0';\n newFileInput.style.top = '0';\n newFileInput.style.right = '0';\n newFileInput.style.bottom = '0';\n newFileInput.style.opacity = '0';\n fileInput.appendChild(newFileInput);\n this.option.fileInput = newFileInput;\n }\n\n ['number', 'width', 'height', 'column', 'begin', 'end'].forEach((item) => {\n this.errorHandle(typeof this.option[item] === 'number', `The '${item}' is not a number`);\n });\n\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(event) {\n const file = this.option.fileInput.files[0];\n this.loadVideo(file);\n event.target.value = '';\n }\n\n loadVideo(file) {\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 this.emit('video', this.video);\n }\n }\n\n start() {\n if (!this.video.duration) return sleep(1000).then(() => this.start());\n const { width, height, number, begin, end } = this.option;\n this.option.begin = clamp(begin, 0, this.video.duration);\n this.option.end = clamp(end || this.video.duration, begin, this.video.duration);\n this.errorHandle(this.option.end > this.option.begin, `End time must be greater than the start time`);\n this.duration = this.option.end - this.option.begin;\n this.density = number / this.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 return new Promise((resolve) => {\n this.video.oncanplay = () => {\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 this.video.oncanplay = null;\n resolve();\n });\n };\n this.video.currentTime = item.time;\n });\n });\n this.processing = true;\n return runPromisesInSeries(promiseList)\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 throw err;\n });\n }\n\n creatScreenshotDate() {\n const { number, width, height, column, begin } = this.option;\n const timeGap = this.duration / number;\n const timePoints = [begin + 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/, 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\nexport default ArtplayerToolThumbnail;\n"],"names":["setPrototypeOf","assertThisInitialized","tinyEmitterModule","sleep","ms","Promise","resolve","setTimeout","runPromisesInSeries","ps","reduce","p","next","then","getFileName","name","nameArray","split","pop","join","clamp","num","a","b","Math","max","min","ArtplayerToolThumbnail","option","processing","setup","Object","assign","DEFAULTS","video","creatVideo","duration","inputChange","bind","ondrop","fileInput","addEventListener","ondragover","event","preventDefault","file","dataTransfer","files","loadVideo","number","width","height","column","errorHandle","Element","tagName","type","style","position","newFileInput","document","createElement","left","top","right","bottom","opacity","appendChild","forEach","item","target","value","canPlayType","videoUrl","URL","createObjectURL","emit","src","start","begin","end","density","screenshotDate","creatScreenshotDate","canvas","creatCanvas","context2D","getContext","promiseList","map","index","oncanplay","drawImage","x","y","toBlob","blob","thumbnailUrl","revokeObjectURL","currentTime","time","catch","err","message","timeGap","timePoints","length","last","push","floor","ceil","fillStyle","fillRect","font","fillText","elink","download","href","body","click","removeChild","condition","msg","Error","removeEventListener","NaN","muted","controls","Emitter"],"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 6828eb295..f0fe01c39 100644 --- a/packages/artplayer-tool-thumbnail/src/index.js +++ b/packages/artplayer-tool-thumbnail/src/index.js @@ -18,7 +18,6 @@ class ArtplayerToolThumbnail extends Emitter { static get DEFAULTS() { return { - delay: 300, number: 60, width: 160, height: 90, @@ -28,19 +27,19 @@ class ArtplayerToolThumbnail extends Emitter { }; } - static ondragover(e) { - e.preventDefault(); + static ondragover(event) { + event.preventDefault(); } - ondrop(e) { - e.preventDefault(); - const file = e.dataTransfer.files[0]; + ondrop(event) { + event.preventDefault(); + const file = event.dataTransfer.files[0]; this.loadVideo(file); } setup(option = {}) { this.option = Object.assign({}, this.option, option); - const { fileInput, delay, number, width, height, column } = this.option; + const { fileInput, number, width, height, column } = this.option; this.errorHandle(fileInput instanceof Element, "The 'fileInput' is not a Element"); @@ -60,11 +59,10 @@ class ArtplayerToolThumbnail extends Emitter { this.option.fileInput = newFileInput; } - ['delay', 'number', 'width', 'height', 'column', 'begin', 'end'].forEach((item) => { + ['number', 'width', 'height', 'column', 'begin', 'end'].forEach((item) => { this.errorHandle(typeof this.option[item] === 'number', `The '${item}' is not a number`); }); - this.option.delay = clamp(delay, 10, 1000); this.option.number = clamp(number, 10, 1000); this.option.width = clamp(width, 10, 1000); this.option.height = clamp(height, 10, 1000); @@ -83,13 +81,13 @@ class ArtplayerToolThumbnail extends Emitter { return video; } - inputChange() { + inputChange(event) { const file = this.option.fileInput.files[0]; this.loadVideo(file); + event.target.value = ''; } loadVideo(file) { - const { delay } = this.option; if (file) { const canPlayType = this.video.canPlayType(file.type); this.errorHandle( @@ -101,20 +99,13 @@ class ArtplayerToolThumbnail extends Emitter { this.file = file; this.emit('file', this.file); this.video.src = videoUrl; - sleep(delay) - .then(() => { - this.emit('video', this.video); - }) - .catch((err) => { - this.emit('error', err.message); - throw err; - }); + this.emit('video', this.video); } } start() { - if (!this.video.duration) return sleep(1000).then(this.start); - const { width, height, number, delay, begin, end } = this.option; + if (!this.video.duration) return sleep(1000).then(() => this.start()); + const { width, height, number, begin, end } = this.option; this.option.begin = clamp(begin, 0, this.video.duration); this.option.end = clamp(end || this.video.duration, begin, this.video.duration); this.errorHandle(this.option.end > this.option.begin, `End time must be greater than the start time`); @@ -128,39 +119,28 @@ class ArtplayerToolThumbnail extends Emitter { const context2D = canvas.getContext('2d'); this.emit('canvas', canvas); const promiseList = screenshotDate.map((item, index) => () => { - this.video.currentTime = item.time; 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) => { - throw err; + this.video.oncanplay = () => { + 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); + this.video.oncanplay = null; + resolve(); }); + }; + this.video.currentTime = item.time; }); }); this.processing = true; return runPromisesInSeries(promiseList) - .then(() => - sleep(delay * 2) - .then(() => { - this.processing = false; - this.emit('done'); - }) - .catch((err) => { - this.processing = false; - this.emit('error', err.message); - throw err; - }), - ) + .then(() => { + this.processing = false; + this.emit('done'); + }) .catch((err) => { this.processing = false; this.emit('error', err.message);