/*!
 * fireplayer-plugin-auto-thumbnail.js v1.1.0
 * Github: https://fireplayer.net
 * Fire Player - https://fireplayer.net
 * Released under the MIT License.
 */
function create({ url, width, number }, callback) {
  const video = document.createElement("video");
  video.crossOrigin = "anonymous";
  video.src = url;
  video.onloadedmetadata = () => {
    const duration = video.duration;
    const canvas = document.createElement("canvas");
    const ctx = canvas.getContext("2d");
    const height = Math.floor(width * video.videoHeight / video.videoWidth);
    canvas.width = width * 10;
    canvas.height = height * Math.ceil(number / 10);
    let blobUrl = null;
    function seekAndDraw(index) {
      canvas.toBlob((blob) => {
        URL.revokeObjectURL(blobUrl);
        blobUrl = URL.createObjectURL(blob);
        callback({
          url: blobUrl,
          height
        });
      }, "image/jpeg");
      if (index >= number)
        return;
      video.currentTime = duration * index / number;
      video.onseeked = () => {
        ctx.drawImage(video, index % 10 * width, Math.floor(index / 10) * height, width, height);
        seekAndDraw(index + 1);
      };
    }
    seekAndDraw(0);
  };
}
function fireplayerPluginAutoThumbnail(option) {
  return async (fire) => {
    fire.on("video:loadedmetadata", () => {
      const url = option.url || fire.option.url;
      const width = option.width || 160;
      const number = option.number || 100;
      const scale = option.scale || 1;
      create({ url, width, number }, (config) => {
        fire.thumbnails = {
          ...config,
          column: 10,
          number,
          width,
          scale
        };
      });
    });
    return {
      name: "fireplayerPluginAutoThumbnail"
    };
  };
}
export {
  fireplayerPluginAutoThumbnail as default
};
