{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./app/frontend/packs/pages/static/cookie_policy.js","webpack:///./node_modules/js-video-url-parser/lib/base.js","webpack:///./node_modules/js-video-url-parser/lib/urlParser.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/js-video-url-parser/dist/jsVideoUrlParser.js","webpack:///./node_modules/js-video-url-parser/lib/provider/youtube.js","webpack:///./node_modules/js-video-url-parser/lib/util.js","webpack:///./app/frontend/javascripts/js-video-url-parser/provider/youtube/index.js","webpack:///./app/frontend/javascripts/editor/view_mode.js","webpack:///./app/frontend/javascripts/api_utils.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","_typeof","_regeneratorRuntime","e","a","iterator","asyncIterator","u","define","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","type","arg","h","f","y","GeneratorFunction","GeneratorFunctionPrototype","this","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","$","ViewMode","replace","parser","obj","getQueryParams","UrlParser","_i","_arr","plugins","parseProvider","url","match","undefined","parse","result","provider","plugin","params","removeEmptyParameters","alternatives","op","videoInfo","vi","format","defaultFormat","formats","apply","assign","factory","_typeof2","util","hasParams","combined","sort","timeString","timePairs","totalSeconds","timeValues","trim","split","parseInt","getLetterTime","getColonTime","getQueryParams$1","qs","join","substr","decodeURIComponent","urlParser","base","Allocine","embed","createEmbedUrl","mediaTypes","VIDEO","parseUrl","mediaType","id","combineParams$1","CanalPlus","parseParameters","vid","combineParams$2","Coub","createLongUrl","createUrl","baseUrl","combineParams$3","getTime$1","Dailymotion","createShortUrl","image","createImageUrl","parseTime","start","combineParams$4","Loom","combineParams$5","getTime$2","Twitch","STREAM","CLIP","seperateId","pre","parseChannel","channel","utm_content","video","clip","isClip","parseMediaType","_this","combineParams$6","getTime$3","Vimeo","parseHash","hash","startTime","combineParams$7","getTime$4","Wistia","embedjsonp","createEmbedJsonpUrl","EMBEDVIDEO","wtime","wvideo","combineParams$8","Youku","flash","createFlashUrl","createStaticUrl","VideoIDS","combineParams$9","getTime$5","YouTube","shortImage","createShortImageUrl","longImage","createLongImageUrl","imageQualities","DEFAULT","HQDEFAULT","SDDEFAULT","MQDEFAULT","MAXRESDEFAULT","defaultImageQuality","PLAYLIST","SHARE","CHANNEL","parseVideoUrl","parseChannelUrl","list","ci","channelResult","feature","listType","loop","playlist","imageQuality","combineParams$a","getTime$6","SoundCloud","TRACK","APITRACK","APIPLAYLIST","combineParams$b","TeacherTube","AUDIO","DOCUMENT","COLLECTION","GROUP","parsePlaylist","mediaTypeMatch","combineParams$c","TikTok","concat","combineParams$d","Ted","combineParams$e","Facebook","watch","createWatchUrl","pageId","_require","combineParams","getTime","YouTubeExtend","videoUrlParser","youtube","$element","document","querySelectorAll","elem","attributes","parentElement","innerHTML","createVideoBlock","createOGCard","card","videoContainer","createElement","iframe","setAttribute","className","appendChild","outerHTML","request_url","encodeURIComponent","fetchWithTimeout","response","json","html","withLoadingAndDisable","loadingTarget","disableTargets","callback","classList","add","el","disabled","remove","console","error","wait","ms","setTimeout","pollingRequest","requestCb","stopConditionCb","intervalMs","getCsrfToken","querySelector","getAttribute","jqueryAjaxBeforeSend","xhr","setRequestHeader","apiFailResultHandler","message","responseJSON","status","alert","resource","options","timeout","controller","AbortController","abort","fetch","headers","signal","clearTimeout","buildSafeURLSearchParams","paramsObj","URLSearchParams"],"mappings":"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","file":"js/pages/static/cookie_policy-9c6560511cd45cc2e2b5.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1051);\n","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n  \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n  module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n    return e;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  var t,\n    e = {},\n    r = Object.prototype,\n    n = r.hasOwnProperty,\n    o = Object.defineProperty || function (t, e, r) {\n      t[e] = r.value;\n    },\n    i = \"function\" == typeof Symbol ? Symbol : {},\n    a = i.iterator || \"@@iterator\",\n    c = i.asyncIterator || \"@@asyncIterator\",\n    u = i.toStringTag || \"@@toStringTag\";\n  function define(t, e, r) {\n    return Object.defineProperty(t, e, {\n      value: r,\n      enumerable: !0,\n      configurable: !0,\n      writable: !0\n    }), t[e];\n  }\n  try {\n    define({}, \"\");\n  } catch (t) {\n    define = function define(t, e, r) {\n      return t[e] = r;\n    };\n  }\n  function wrap(t, e, r, n) {\n    var i = e && e.prototype instanceof Generator ? e : Generator,\n      a = Object.create(i.prototype),\n      c = new Context(n || []);\n    return o(a, \"_invoke\", {\n      value: makeInvokeMethod(t, r, c)\n    }), a;\n  }\n  function tryCatch(t, e, r) {\n    try {\n      return {\n        type: \"normal\",\n        arg: t.call(e, r)\n      };\n    } catch (t) {\n      return {\n        type: \"throw\",\n        arg: t\n      };\n    }\n  }\n  e.wrap = wrap;\n  var h = \"suspendedStart\",\n    l = \"suspendedYield\",\n    f = \"executing\",\n    s = \"completed\",\n    y = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var p = {};\n  define(p, a, function () {\n    return this;\n  });\n  var d = Object.getPrototypeOf,\n    v = d && d(d(values([])));\n  v && v !== r && n.call(v, a) && (p = v);\n  var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n  function defineIteratorMethods(t) {\n    [\"next\", \"throw\", \"return\"].forEach(function (e) {\n      define(t, e, function (t) {\n        return this._invoke(e, t);\n      });\n    });\n  }\n  function AsyncIterator(t, e) {\n    function invoke(r, o, i, a) {\n      var c = tryCatch(t[r], t, o);\n      if (\"throw\" !== c.type) {\n        var u = c.arg,\n          h = u.value;\n        return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n          invoke(\"next\", t, i, a);\n        }, function (t) {\n          invoke(\"throw\", t, i, a);\n        }) : e.resolve(h).then(function (t) {\n          u.value = t, i(u);\n        }, function (t) {\n          return invoke(\"throw\", t, i, a);\n        });\n      }\n      a(c.arg);\n    }\n    var r;\n    o(this, \"_invoke\", {\n      value: function value(t, n) {\n        function callInvokeWithMethodAndArg() {\n          return new e(function (e, r) {\n            invoke(t, n, e, r);\n          });\n        }\n        return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n      }\n    });\n  }\n  function makeInvokeMethod(e, r, n) {\n    var o = h;\n    return function (i, a) {\n      if (o === f) throw new Error(\"Generator is already running\");\n      if (o === s) {\n        if (\"throw\" === i) throw a;\n        return {\n          value: t,\n          done: !0\n        };\n      }\n      for (n.method = i, n.arg = a;;) {\n        var c = n.delegate;\n        if (c) {\n          var u = maybeInvokeDelegate(c, n);\n          if (u) {\n            if (u === y) continue;\n            return u;\n          }\n        }\n        if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n          if (o === h) throw o = s, n.arg;\n          n.dispatchException(n.arg);\n        } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n        o = f;\n        var p = tryCatch(e, r, n);\n        if (\"normal\" === p.type) {\n          if (o = n.done ? s : l, p.arg === y) continue;\n          return {\n            value: p.arg,\n            done: n.done\n          };\n        }\n        \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n      }\n    };\n  }\n  function maybeInvokeDelegate(e, r) {\n    var n = r.method,\n      o = e.iterator[n];\n    if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n    var i = tryCatch(o, e.iterator, r.arg);\n    if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n    var a = i.arg;\n    return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n  }\n  function pushTryEntry(t) {\n    var e = {\n      tryLoc: t[0]\n    };\n    1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n  }\n  function resetTryEntry(t) {\n    var e = t.completion || {};\n    e.type = \"normal\", delete e.arg, t.completion = e;\n  }\n  function Context(t) {\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }], t.forEach(pushTryEntry, this), this.reset(!0);\n  }\n  function values(e) {\n    if (e || \"\" === e) {\n      var r = e[a];\n      if (r) return r.call(e);\n      if (\"function\" == typeof e.next) return e;\n      if (!isNaN(e.length)) {\n        var o = -1,\n          i = function next() {\n            for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n            return next.value = t, next.done = !0, next;\n          };\n        return i.next = i;\n      }\n    }\n    throw new TypeError(_typeof(e) + \" is not iterable\");\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n    value: GeneratorFunctionPrototype,\n    configurable: !0\n  }), o(GeneratorFunctionPrototype, \"constructor\", {\n    value: GeneratorFunction,\n    configurable: !0\n  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n    var e = \"function\" == typeof t && t.constructor;\n    return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n  }, e.mark = function (t) {\n    return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n  }, e.awrap = function (t) {\n    return {\n      __await: t\n    };\n  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n    return this;\n  }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n    void 0 === i && (i = Promise);\n    var a = new AsyncIterator(wrap(t, r, n, o), i);\n    return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n      return t.done ? t.value : a.next();\n    });\n  }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n    return this;\n  }), define(g, \"toString\", function () {\n    return \"[object Generator]\";\n  }), e.keys = function (t) {\n    var e = Object(t),\n      r = [];\n    for (var n in e) r.push(n);\n    return r.reverse(), function next() {\n      for (; r.length;) {\n        var t = r.pop();\n        if (t in e) return next.value = t, next.done = !1, next;\n      }\n      return next.done = !0, next;\n    };\n  }, e.values = values, Context.prototype = {\n    constructor: Context,\n    reset: function reset(e) {\n      if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n    },\n    stop: function stop() {\n      this.done = !0;\n      var t = this.tryEntries[0].completion;\n      if (\"throw\" === t.type) throw t.arg;\n      return this.rval;\n    },\n    dispatchException: function dispatchException(e) {\n      if (this.done) throw e;\n      var r = this;\n      function handle(n, o) {\n        return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n      }\n      for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n        var i = this.tryEntries[o],\n          a = i.completion;\n        if (\"root\" === i.tryLoc) return handle(\"end\");\n        if (i.tryLoc <= this.prev) {\n          var c = n.call(i, \"catchLoc\"),\n            u = n.call(i, \"finallyLoc\");\n          if (c && u) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          } else if (c) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n          } else {\n            if (!u) throw new Error(\"try statement without catch or finally\");\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(t, e) {\n      for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n        var o = this.tryEntries[r];\n        if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n          var i = o;\n          break;\n        }\n      }\n      i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n      var a = i ? i.completion : {};\n      return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n    },\n    complete: function complete(t, e) {\n      if (\"throw\" === t.type) throw t.arg;\n      return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n    },\n    finish: function finish(t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n      }\n    },\n    \"catch\": function _catch(t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.tryLoc === t) {\n          var n = r.completion;\n          if (\"throw\" === n.type) {\n            var o = n.arg;\n            resetTryEntry(r);\n          }\n          return o;\n        }\n      }\n      throw new Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(e, r, n) {\n      return this.delegate = {\n        iterator: values(e),\n        resultName: r,\n        nextLoc: n\n      }, \"next\" === this.method && (this.arg = t), y;\n    }\n  }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import ViewMode from '../../../javascripts/editor/view_mode';\nimport '../../../styles/layout/_editor';\nimport '../../../styles/parts/_background_color_transparent';\n\n$(() => {\n  const viewMode = new ViewMode('oembed[url]');\n  viewMode.replace();\n});\n","var UrlParser = require('./urlParser');\n\nvar parser = new UrlParser();\nmodule.exports = parser;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = require('./util'),\n    getQueryParams = _require.getQueryParams;\n\nfunction UrlParser() {\n  for (var _i = 0, _arr = ['parseProvider', 'parse', 'bind', 'create']; _i < _arr.length; _i++) {\n    var key = _arr[_i];\n    this[key] = this[key].bind(this);\n  }\n\n  this.plugins = {};\n}\n\nmodule.exports = UrlParser;\n\nUrlParser.prototype.parseProvider = function (url) {\n  var match = url.match(/(?:(?:https?:)?\\/\\/)?(?:[^.]+\\.)?(\\w+)\\./i);\n  return match ? match[1] : undefined;\n};\n\nUrlParser.prototype.parse = function (url) {\n  if (typeof url === 'undefined') {\n    return undefined;\n  }\n\n  var provider = this.parseProvider(url);\n  var result;\n  var plugin = this.plugins[provider];\n\n  if (!provider || !plugin || !plugin.parse) {\n    return undefined;\n  }\n\n  result = plugin.parse.call(plugin, url, getQueryParams(url));\n\n  if (result) {\n    result = removeEmptyParameters(result);\n    result.provider = plugin.provider;\n  }\n\n  return result;\n};\n\nUrlParser.prototype.bind = function (plugin) {\n  this.plugins[plugin.provider] = plugin;\n\n  if (plugin.alternatives) {\n    for (var i = 0; i < plugin.alternatives.length; i += 1) {\n      this.plugins[plugin.alternatives[i]] = plugin;\n    }\n  }\n};\n\nUrlParser.prototype.create = function (op) {\n  if (_typeof(op) !== 'object' || _typeof(op.videoInfo) !== 'object') {\n    return undefined;\n  }\n\n  var vi = op.videoInfo;\n  var params = op.params;\n  var plugin = this.plugins[vi.provider];\n  params = params === 'internal' ? vi.params : params || {};\n\n  if (plugin) {\n    op.format = op.format || plugin.defaultFormat; // eslint-disable-next-line no-prototype-builtins\n\n    if (plugin.formats.hasOwnProperty(op.format)) {\n      return plugin.formats[op.format].apply(plugin, [vi, Object.assign({}, params)]);\n    }\n  }\n\n  return undefined;\n};\n\nfunction removeEmptyParameters(result) {\n  if (result.params && Object.keys(result.params).length === 0) {\n    delete result.params;\n  }\n\n  return result;\n}","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof2(obj) { \"@babel/helpers - typeof\"; 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\n(function (global, factory) {\n  (typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.urlParser = factory());\n})(this, function () {\n  'use strict';\n\n  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  }\n\n  var getQueryParams = function getQueryParams(qs) {\n    if (typeof qs !== 'string') {\n      return {};\n    }\n\n    qs = qs.split('+').join(' ');\n    var params = {};\n    var match = qs.match(/(?:[?](?:[^=]+)=(?:[^&#]*)(?:[&](?:[^=]+)=(?:[^&#]*))*(?:[#].*)?)|(?:[#].*)/);\n    var split;\n\n    if (match === null) {\n      return {};\n    }\n\n    split = match[0].substr(1).split(/[&#=]/);\n\n    for (var i = 0; i < split.length; i += 2) {\n      params[decodeURIComponent(split[i])] = decodeURIComponent(split[i + 1] || '');\n    }\n\n    return params;\n  };\n\n  var combineParams = function combineParams(params, hasParams) {\n    if (_typeof(params) !== 'object') {\n      return '';\n    }\n\n    var combined = '';\n    var i = 0;\n    var keys = Object.keys(params);\n\n    if (keys.length === 0) {\n      return '';\n    } //always have parameters in the same order\n\n\n    keys.sort();\n\n    if (!hasParams) {\n      combined += '?' + keys[0] + '=' + params[keys[0]];\n      i += 1;\n    }\n\n    for (; i < keys.length; i += 1) {\n      combined += '&' + keys[i] + '=' + params[keys[i]];\n    }\n\n    return combined;\n  }; //parses strings like 1h30m20s to seconds\n\n\n  function getLetterTime(timeString) {\n    var totalSeconds = 0;\n    var timeValues = {\n      's': 1,\n      'm': 1 * 60,\n      'h': 1 * 60 * 60,\n      'd': 1 * 60 * 60 * 24,\n      'w': 1 * 60 * 60 * 24 * 7\n    };\n    var timePairs; //expand to \"1 h 30 m 20 s\" and split\n\n    timeString = timeString.replace(/([smhdw])/g, ' $1 ').trim();\n    timePairs = timeString.split(' ');\n\n    for (var i = 0; i < timePairs.length; i += 2) {\n      totalSeconds += parseInt(timePairs[i], 10) * timeValues[timePairs[i + 1] || 's'];\n    }\n\n    return totalSeconds;\n  } //parses strings like 1:30:20 to seconds\n\n\n  function getColonTime(timeString) {\n    var totalSeconds = 0;\n    var timeValues = [1, 1 * 60, 1 * 60 * 60, 1 * 60 * 60 * 24, 1 * 60 * 60 * 24 * 7];\n    var timePairs = timeString.split(':');\n\n    for (var i = 0; i < timePairs.length; i++) {\n      totalSeconds += parseInt(timePairs[i], 10) * timeValues[timePairs.length - i - 1];\n    }\n\n    return totalSeconds;\n  }\n\n  var getTime = function getTime(timeString) {\n    if (typeof timeString === 'undefined') {\n      return 0;\n    }\n\n    if (timeString.match(/^(\\d+[smhdw]?)+$/)) {\n      return getLetterTime(timeString);\n    }\n\n    if (timeString.match(/^(\\d+:?)+$/)) {\n      return getColonTime(timeString);\n    }\n\n    return 0;\n  };\n\n  var util = {\n    getQueryParams: getQueryParams,\n    combineParams: combineParams,\n    getTime: getTime\n  };\n  var getQueryParams$1 = util.getQueryParams;\n\n  function UrlParser() {\n    for (var _i = 0, _arr = ['parseProvider', 'parse', 'bind', 'create']; _i < _arr.length; _i++) {\n      var key = _arr[_i];\n      this[key] = this[key].bind(this);\n    }\n\n    this.plugins = {};\n  }\n\n  var urlParser = UrlParser;\n\n  UrlParser.prototype.parseProvider = function (url) {\n    var match = url.match(/(?:(?:https?:)?\\/\\/)?(?:[^.]+\\.)?(\\w+)\\./i);\n    return match ? match[1] : undefined;\n  };\n\n  UrlParser.prototype.parse = function (url) {\n    if (typeof url === 'undefined') {\n      return undefined;\n    }\n\n    var provider = this.parseProvider(url);\n    var result;\n    var plugin = this.plugins[provider];\n\n    if (!provider || !plugin || !plugin.parse) {\n      return undefined;\n    }\n\n    result = plugin.parse.call(plugin, url, getQueryParams$1(url));\n\n    if (result) {\n      result = removeEmptyParameters(result);\n      result.provider = plugin.provider;\n    }\n\n    return result;\n  };\n\n  UrlParser.prototype.bind = function (plugin) {\n    this.plugins[plugin.provider] = plugin;\n\n    if (plugin.alternatives) {\n      for (var i = 0; i < plugin.alternatives.length; i += 1) {\n        this.plugins[plugin.alternatives[i]] = plugin;\n      }\n    }\n  };\n\n  UrlParser.prototype.create = function (op) {\n    if (_typeof(op) !== 'object' || _typeof(op.videoInfo) !== 'object') {\n      return undefined;\n    }\n\n    var vi = op.videoInfo;\n    var params = op.params;\n    var plugin = this.plugins[vi.provider];\n    params = params === 'internal' ? vi.params : params || {};\n\n    if (plugin) {\n      op.format = op.format || plugin.defaultFormat; // eslint-disable-next-line no-prototype-builtins\n\n      if (plugin.formats.hasOwnProperty(op.format)) {\n        return plugin.formats[op.format].apply(plugin, [vi, Object.assign({}, params)]);\n      }\n    }\n\n    return undefined;\n  };\n\n  function removeEmptyParameters(result) {\n    if (result.params && Object.keys(result.params).length === 0) {\n      delete result.params;\n    }\n\n    return result;\n  }\n\n  var parser = new urlParser();\n  var base = parser;\n\n  function Allocine() {\n    this.provider = 'allocine';\n    this.alternatives = [];\n    this.defaultFormat = 'embed';\n    this.formats = {\n      embed: this.createEmbedUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video'\n    };\n  }\n\n  Allocine.prototype.parseUrl = function (url) {\n    var match = url.match(/(?:\\/video\\/player_gen_cmedia=)([A-Za-z0-9]+)/i);\n    return match ? match[1] : undefined;\n  };\n\n  Allocine.prototype.parse = function (url) {\n    var result = {\n      mediaType: this.mediaTypes.VIDEO,\n      id: this.parseUrl(url)\n    };\n    return result.id ? result : undefined;\n  };\n\n  Allocine.prototype.createEmbedUrl = function (vi) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    return 'https://player.allocine.fr/' + vi.id + '.html';\n  };\n\n  base.bind(new Allocine());\n  var combineParams$1 = util.combineParams;\n\n  function CanalPlus() {\n    this.provider = 'canalplus';\n    this.defaultFormat = 'embed';\n    this.formats = {\n      embed: this.createEmbedUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video'\n    };\n  }\n\n  CanalPlus.prototype.parseParameters = function (params) {\n    delete params.vid;\n    return params;\n  };\n\n  CanalPlus.prototype.parse = function (url, params) {\n    var _this = this;\n\n    var result = {\n      mediaType: this.mediaTypes.VIDEO,\n      id: params.vid\n    };\n    result.params = _this.parseParameters(params);\n\n    if (!result.id) {\n      return undefined;\n    }\n\n    return result;\n  };\n\n  CanalPlus.prototype.createEmbedUrl = function (vi, params) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    var url = 'http://player.canalplus.fr/embed/';\n    params.vid = vi.id;\n    url += combineParams$1(params);\n    return url;\n  };\n\n  base.bind(new CanalPlus());\n  var combineParams$2 = util.combineParams;\n\n  function Coub() {\n    this.provider = 'coub';\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"long\": this.createLongUrl,\n      embed: this.createEmbedUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video'\n    };\n  }\n\n  Coub.prototype.parseUrl = function (url) {\n    var match = url.match(/(?:embed|view)\\/([a-zA-Z\\d]+)/i);\n    return match ? match[1] : undefined;\n  };\n\n  Coub.prototype.parse = function (url, params) {\n    var result = {\n      mediaType: this.mediaTypes.VIDEO,\n      params: params,\n      id: this.parseUrl(url)\n    };\n\n    if (!result.id) {\n      return undefined;\n    }\n\n    return result;\n  };\n\n  Coub.prototype.createUrl = function (baseUrl, vi, params) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    var url = baseUrl + vi.id;\n    url += combineParams$2(params);\n    return url;\n  };\n\n  Coub.prototype.createLongUrl = function (vi, params) {\n    return this.createUrl('https://coub.com/view/', vi, params);\n  };\n\n  Coub.prototype.createEmbedUrl = function (vi, params) {\n    return this.createUrl('//coub.com/embed/', vi, params);\n  };\n\n  base.bind(new Coub());\n  var combineParams$3 = util.combineParams,\n      getTime$1 = util.getTime;\n\n  function Dailymotion() {\n    this.provider = 'dailymotion';\n    this.alternatives = ['dai'];\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"short\": this.createShortUrl,\n      \"long\": this.createLongUrl,\n      embed: this.createEmbedUrl,\n      image: this.createImageUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video'\n    };\n  }\n\n  Dailymotion.prototype.parseParameters = function (params) {\n    return this.parseTime(params);\n  };\n\n  Dailymotion.prototype.parseTime = function (params) {\n    if (params.start) {\n      params.start = getTime$1(params.start);\n    }\n\n    return params;\n  };\n\n  Dailymotion.prototype.parseUrl = function (url) {\n    var match = url.match(/(?:\\/video|ly)\\/([A-Za-z0-9]+)/i);\n    return match ? match[1] : undefined;\n  };\n\n  Dailymotion.prototype.parse = function (url, params) {\n    var _this = this;\n\n    var result = {\n      mediaType: this.mediaTypes.VIDEO,\n      params: _this.parseParameters(params),\n      id: _this.parseUrl(url)\n    };\n    return result.id ? result : undefined;\n  };\n\n  Dailymotion.prototype.createUrl = function (base, vi, params) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    return base + vi.id + combineParams$3(params);\n  };\n\n  Dailymotion.prototype.createShortUrl = function (vi, params) {\n    return this.createUrl('https://dai.ly/', vi, params);\n  };\n\n  Dailymotion.prototype.createLongUrl = function (vi, params) {\n    return this.createUrl('https://dailymotion.com/video/', vi, params);\n  };\n\n  Dailymotion.prototype.createEmbedUrl = function (vi, params) {\n    return this.createUrl('https://www.dailymotion.com/embed/video/', vi, params);\n  };\n\n  Dailymotion.prototype.createImageUrl = function (vi, params) {\n    delete params.start;\n    return this.createUrl('https://www.dailymotion.com/thumbnail/video/', vi, params);\n  };\n\n  base.bind(new Dailymotion());\n  var combineParams$4 = util.combineParams;\n\n  function Loom() {\n    this.provider = 'loom';\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"long\": this.createLongUrl,\n      embed: this.createEmbedUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video'\n    };\n  }\n\n  Loom.prototype.parseUrl = function (url) {\n    var match = url.match(/(?:share|embed)\\/([a-zA-Z\\d]+)/i);\n    return match ? match[1] : undefined;\n  };\n\n  Loom.prototype.parse = function (url, params) {\n    var result = {\n      mediaType: this.mediaTypes.VIDEO,\n      params: params,\n      id: this.parseUrl(url)\n    };\n    return result.id ? result : undefined;\n  };\n\n  Loom.prototype.createUrl = function (baseUrl, vi, params) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    var url = baseUrl + vi.id;\n    url += combineParams$4(params);\n    return url;\n  };\n\n  Loom.prototype.createLongUrl = function (vi, params) {\n    return this.createUrl('https://loom.com/share/', vi, params);\n  };\n\n  Loom.prototype.createEmbedUrl = function (vi, params) {\n    return this.createUrl('//loom.com/embed/', vi, params);\n  };\n\n  base.bind(new Loom());\n  var combineParams$5 = util.combineParams,\n      getTime$2 = util.getTime;\n\n  function Twitch() {\n    this.provider = 'twitch';\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"long\": this.createLongUrl,\n      embed: this.createEmbedUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video',\n      STREAM: 'stream',\n      CLIP: 'clip'\n    };\n  }\n\n  Twitch.prototype.seperateId = function (id) {\n    return {\n      pre: id[0],\n      id: id.substr(1)\n    };\n  };\n\n  Twitch.prototype.parseChannel = function (result, params) {\n    var channel = params.channel || params.utm_content || result.channel;\n    delete params.utm_content;\n    delete params.channel;\n    return channel;\n  };\n\n  Twitch.prototype.parseUrl = function (url, result, params) {\n    var match;\n    match = url.match(/(clips\\.)?twitch\\.tv\\/(?:(?:videos\\/(\\d+))|(\\w+(?:-[\\w\\d-]+)?)(?:\\/clip\\/(\\w+))?)/i);\n\n    if (match && match[2]) {\n      //video\n      result.id = 'v' + match[2];\n    } else if (params.video) {\n      //video embed\n      result.id = params.video;\n      delete params.video;\n    } else if (params.clip) {\n      //clips embed\n      result.id = params.clip;\n      result.isClip = true;\n      delete params.clip;\n    } else if (match && match[1] && match[3]) {\n      //clips.twitch.tv/id\n      result.id = match[3];\n      result.isClip = true;\n    } else if (match && match[3] && match[4]) {\n      //twitch.tv/channel/clip/id\n      result.channel = match[3];\n      result.id = match[4];\n      result.isClip = true;\n    } else if (match && match[3]) {\n      result.channel = match[3];\n    }\n\n    return result;\n  };\n\n  Twitch.prototype.parseMediaType = function (result) {\n    var mediaType;\n\n    if (result.id) {\n      if (result.isClip) {\n        mediaType = this.mediaTypes.CLIP;\n        delete result.isClip;\n      } else {\n        mediaType = this.mediaTypes.VIDEO;\n      }\n    } else if (result.channel) {\n      mediaType = this.mediaTypes.STREAM;\n    }\n\n    return mediaType;\n  };\n\n  Twitch.prototype.parseParameters = function (params) {\n    if (params.t) {\n      params.start = getTime$2(params.t);\n      delete params.t;\n    }\n\n    return params;\n  };\n\n  Twitch.prototype.parse = function (url, params) {\n    var _this = this;\n\n    var result = {};\n    result = _this.parseUrl(url, result, params);\n    result.channel = _this.parseChannel(result, params);\n    result.mediaType = _this.parseMediaType(result);\n    result.params = _this.parseParameters(params);\n    return result.channel || result.id ? result : undefined;\n  };\n\n  Twitch.prototype.createLongUrl = function (vi, params) {\n    var url = '';\n\n    if (vi.mediaType === this.mediaTypes.STREAM && vi.channel) {\n      url = 'https://twitch.tv/' + vi.channel;\n    } else if (vi.mediaType === this.mediaTypes.VIDEO && vi.id) {\n      var sep = this.seperateId(vi.id);\n      url = 'https://twitch.tv/videos/' + sep.id;\n\n      if (params.start) {\n        params.t = params.start + 's';\n        delete params.start;\n      }\n    } else if (vi.mediaType === this.mediaTypes.CLIP && vi.id) {\n      if (vi.channel) {\n        url = 'https://www.twitch.tv/' + vi.channel + '/clip/' + vi.id;\n      } else {\n        url = 'https://clips.twitch.tv/' + vi.id;\n      }\n    } else {\n      return undefined;\n    }\n\n    url += combineParams$5(params);\n    return url;\n  };\n\n  Twitch.prototype.createEmbedUrl = function (vi, params) {\n    var url = 'https://player.twitch.tv/';\n\n    if (vi.mediaType === this.mediaTypes.STREAM && vi.channel) {\n      params.channel = vi.channel;\n    } else if (vi.mediaType === this.mediaTypes.VIDEO && vi.id) {\n      params.video = vi.id;\n\n      if (params.start) {\n        params.t = params.start + 's';\n        delete params.start;\n      }\n    } else if (vi.mediaType === this.mediaTypes.CLIP && vi.id) {\n      url = 'https://clips.twitch.tv/embed';\n      params.clip = vi.id;\n    } else {\n      return undefined;\n    }\n\n    url += combineParams$5(params);\n    return url;\n  };\n\n  base.bind(new Twitch());\n  var combineParams$6 = util.combineParams,\n      getTime$3 = util.getTime;\n\n  function Vimeo() {\n    this.provider = 'vimeo';\n    this.alternatives = ['vimeopro'];\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"long\": this.createLongUrl,\n      embed: this.createEmbedUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video'\n    };\n  }\n\n  Vimeo.prototype.parseUrl = function (url) {\n    var match = url.match(/(?:\\/showcase\\/\\d+)?(?:\\/(?:channels\\/[\\w]+|(?:(?:album\\/\\d+|groups\\/[\\w]+)\\/)?videos?))?\\/(\\d+)/i);\n    return match ? match[1] : undefined;\n  };\n\n  Vimeo.prototype.parseHash = function (url) {\n    var match = url.match(/\\/\\d+\\/(\\w+)$/i);\n    return match ? match[1] : undefined;\n  };\n\n  Vimeo.prototype.parseParameters = function (params) {\n    if (params.t) {\n      params.start = getTime$3(params.t);\n      delete params.t;\n    }\n\n    if (params.h) {\n      params.hash = params.h;\n      delete params.h;\n    }\n\n    return params;\n  };\n\n  Vimeo.prototype.parse = function (url, params) {\n    var result = {\n      mediaType: this.mediaTypes.VIDEO,\n      params: this.parseParameters(params),\n      id: this.parseUrl(url)\n    };\n    var hash = this.parseHash(url, params);\n\n    if (hash) {\n      result.params.hash = hash;\n    }\n\n    return result.id ? result : undefined;\n  };\n\n  Vimeo.prototype.createUrl = function (baseUrl, vi, params, type) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    var url = baseUrl + vi.id;\n    var startTime = params.start;\n    delete params.start;\n\n    if (params.hash) {\n      if (type === 'embed') {\n        params.h = params.hash;\n      } else if (type === 'long') {\n        url += '/' + params.hash;\n      }\n\n      delete params.hash;\n    }\n\n    url += combineParams$6(params);\n\n    if (startTime) {\n      url += '#t=' + startTime;\n    }\n\n    return url;\n  };\n\n  Vimeo.prototype.createLongUrl = function (vi, params) {\n    return this.createUrl('https://vimeo.com/', vi, params, 'long');\n  };\n\n  Vimeo.prototype.createEmbedUrl = function (vi, params) {\n    return this.createUrl('//player.vimeo.com/video/', vi, params, 'embed');\n  };\n\n  base.bind(new Vimeo());\n  var combineParams$7 = util.combineParams,\n      getTime$4 = util.getTime;\n\n  function Wistia() {\n    this.provider = 'wistia';\n    this.alternatives = [];\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"long\": this.createLongUrl,\n      embed: this.createEmbedUrl,\n      embedjsonp: this.createEmbedJsonpUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video',\n      EMBEDVIDEO: 'embedvideo'\n    };\n  }\n\n  Wistia.prototype.parseUrl = function (url) {\n    var match = url.match(/(?:(?:medias|iframe)\\/|wvideo=)([\\w-]+)/);\n    return match ? match[1] : undefined;\n  };\n\n  Wistia.prototype.parseChannel = function (url) {\n    var match = url.match(/(?:(?:https?:)?\\/\\/)?([^.]*)\\.wistia\\./);\n    var channel = match ? match[1] : undefined;\n\n    if (channel === 'fast' || channel === 'content') {\n      return undefined;\n    }\n\n    return channel;\n  };\n\n  Wistia.prototype.parseParameters = function (params, result) {\n    if (params.wtime) {\n      params.start = getTime$4(params.wtime);\n      delete params.wtime;\n    }\n\n    if (params.wvideo === result.id) {\n      delete params.wvideo;\n    }\n\n    return params;\n  };\n\n  Wistia.prototype.parseMediaType = function (result) {\n    if (result.id && result.channel) {\n      return this.mediaTypes.VIDEO;\n    } else if (result.id) {\n      delete result.channel;\n      return this.mediaTypes.EMBEDVIDEO;\n    } else {\n      return undefined;\n    }\n  };\n\n  Wistia.prototype.parse = function (url, params) {\n    var result = {\n      id: this.parseUrl(url),\n      channel: this.parseChannel(url)\n    };\n    result.params = this.parseParameters(params, result);\n    result.mediaType = this.parseMediaType(result);\n\n    if (!result.id) {\n      return undefined;\n    }\n\n    return result;\n  };\n\n  Wistia.prototype.createUrl = function (vi, params, url) {\n    if (params.start) {\n      params.wtime = params.start;\n      delete params.start;\n    }\n\n    url += combineParams$7(params);\n    return url;\n  };\n\n  Wistia.prototype.createLongUrl = function (vi, params) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    var url = 'https://' + vi.channel + '.wistia.com/medias/' + vi.id;\n    return this.createUrl(vi, params, url);\n  };\n\n  Wistia.prototype.createEmbedUrl = function (vi, params) {\n    if (!vi.id || !(vi.mediaType === this.mediaTypes.VIDEO || vi.mediaType === this.mediaTypes.EMBEDVIDEO)) {\n      return undefined;\n    }\n\n    var url = 'https://fast.wistia.com/embed/iframe/' + vi.id;\n    return this.createUrl(vi, params, url);\n  };\n\n  Wistia.prototype.createEmbedJsonpUrl = function (vi) {\n    if (!vi.id || !(vi.mediaType === this.mediaTypes.VIDEO || vi.mediaType === this.mediaTypes.EMBEDVIDEO)) {\n      return undefined;\n    }\n\n    return 'https://fast.wistia.com/embed/medias/' + vi.id + '.jsonp';\n  };\n\n  base.bind(new Wistia());\n  var combineParams$8 = util.combineParams;\n\n  function Youku() {\n    this.provider = 'youku';\n    this.defaultFormat = 'long';\n    this.formats = {\n      embed: this.createEmbedUrl,\n      \"long\": this.createLongUrl,\n      flash: this.createFlashUrl,\n      \"static\": this.createStaticUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video'\n    };\n  }\n\n  Youku.prototype.parseUrl = function (url) {\n    var match = url.match(/(?:(?:embed|sid)\\/|v_show\\/id_|VideoIDS=)([a-zA-Z0-9]+)/);\n    return match ? match[1] : undefined;\n  };\n\n  Youku.prototype.parseParameters = function (params) {\n    if (params.VideoIDS) {\n      delete params.VideoIDS;\n    }\n\n    return params;\n  };\n\n  Youku.prototype.parse = function (url, params) {\n    var _this = this;\n\n    var result = {\n      mediaType: this.mediaTypes.VIDEO,\n      id: _this.parseUrl(url),\n      params: _this.parseParameters(params)\n    };\n\n    if (!result.id) {\n      return undefined;\n    }\n\n    return result;\n  };\n\n  Youku.prototype.createUrl = function (baseUrl, vi, params) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    var url = baseUrl + vi.id;\n    url += combineParams$8(params);\n    return url;\n  };\n\n  Youku.prototype.createEmbedUrl = function (vi, params) {\n    return this.createUrl('http://player.youku.com/embed/', vi, params);\n  };\n\n  Youku.prototype.createLongUrl = function (vi, params) {\n    return this.createUrl('http://v.youku.com/v_show/id_', vi, params);\n  };\n\n  Youku.prototype.createStaticUrl = function (vi, params) {\n    return this.createUrl('http://static.youku.com/v1.0.0638/v/swf/loader.swf?VideoIDS=', vi, params);\n  };\n\n  Youku.prototype.createFlashUrl = function (vi, params) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    var url = 'http://player.youku.com/player.php/sid/' + vi.id + '/v.swf';\n    url += combineParams$8(params);\n    return url;\n  };\n\n  base.bind(new Youku());\n  var combineParams$9 = util.combineParams,\n      getTime$5 = util.getTime;\n\n  function YouTube() {\n    this.provider = 'youtube';\n    this.alternatives = ['youtu', 'ytimg'];\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"short\": this.createShortUrl,\n      \"long\": this.createLongUrl,\n      embed: this.createEmbedUrl,\n      shortImage: this.createShortImageUrl,\n      longImage: this.createLongImageUrl\n    };\n    this.imageQualities = {\n      '0': '0',\n      '1': '1',\n      '2': '2',\n      '3': '3',\n      DEFAULT: 'default',\n      HQDEFAULT: 'hqdefault',\n      SDDEFAULT: 'sddefault',\n      MQDEFAULT: 'mqdefault',\n      MAXRESDEFAULT: 'maxresdefault'\n    };\n    this.defaultImageQuality = this.imageQualities.HQDEFAULT;\n    this.mediaTypes = {\n      VIDEO: 'video',\n      PLAYLIST: 'playlist',\n      SHARE: 'share',\n      CHANNEL: 'channel'\n    };\n  }\n\n  YouTube.prototype.parseVideoUrl = function (url) {\n    var match = url.match(/(?:(?:v|vi|be|videos|embed)\\/(?!videoseries)|(?:v|ci)=)([\\w-]{11})/i);\n    return match ? match[1] : undefined;\n  };\n\n  YouTube.prototype.parseChannelUrl = function (url) {\n    // Match an opaque channel ID\n    var match = url.match(/\\/channel\\/([\\w-]+)/);\n\n    if (match) {\n      return {\n        id: match[1],\n        mediaType: this.mediaTypes.CHANNEL\n      };\n    } // Match a vanity channel name or a user name. User urls are deprecated and\n    // currently redirect to the channel of that same name.\n\n\n    match = url.match(/\\/(?:c|user)\\/([\\w-]+)/);\n\n    if (match) {\n      return {\n        name: match[1],\n        mediaType: this.mediaTypes.CHANNEL\n      };\n    }\n  };\n\n  YouTube.prototype.parseParameters = function (params, result) {\n    if (params.start || params.t) {\n      params.start = getTime$5(params.start || params.t);\n      delete params.t;\n    }\n\n    if (params.v === result.id) {\n      delete params.v;\n    }\n\n    if (params.list === result.id) {\n      delete params.list;\n    }\n\n    return params;\n  };\n\n  YouTube.prototype.parseMediaType = function (result) {\n    if (result.params.list) {\n      result.list = result.params.list;\n      delete result.params.list;\n    }\n\n    if (result.id && !result.params.ci) {\n      result.mediaType = this.mediaTypes.VIDEO;\n    } else if (result.list) {\n      delete result.id;\n      result.mediaType = this.mediaTypes.PLAYLIST;\n    } else if (result.params.ci) {\n      delete result.params.ci;\n      result.mediaType = this.mediaTypes.SHARE;\n    } else {\n      return undefined;\n    }\n\n    return result;\n  };\n\n  YouTube.prototype.parse = function (url, params) {\n    var channelResult = this.parseChannelUrl(url);\n\n    if (channelResult) {\n      return channelResult;\n    } else {\n      var result = {\n        params: params,\n        id: this.parseVideoUrl(url)\n      };\n      result.params = this.parseParameters(params, result);\n      result = this.parseMediaType(result);\n      return result;\n    }\n  };\n\n  YouTube.prototype.createShortUrl = function (vi, params) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    var url = 'https://youtu.be/' + vi.id;\n\n    if (params.start) {\n      url += '#t=' + params.start;\n    }\n\n    return url;\n  };\n\n  YouTube.prototype.createLongUrl = function (vi, params) {\n    var url = '';\n    var startTime = params.start;\n    delete params.start;\n\n    if (vi.mediaType === this.mediaTypes.CHANNEL) {\n      if (vi.id) {\n        url += 'https://www.youtube.com/channel/' + vi.id;\n      } else if (vi.name) {\n        url += 'https://www.youtube.com/c/' + vi.name;\n      } else {\n        return undefined;\n      }\n    } else if (vi.mediaType === this.mediaTypes.PLAYLIST && vi.list) {\n      params.feature = 'share';\n      url += 'https://www.youtube.com/playlist';\n    } else if (vi.mediaType === this.mediaTypes.VIDEO && vi.id) {\n      params.v = vi.id;\n      url += 'https://www.youtube.com/watch';\n    } else if (vi.mediaType === this.mediaTypes.SHARE && vi.id) {\n      params.ci = vi.id;\n      url += 'https://www.youtube.com/shared';\n    } else {\n      return undefined;\n    }\n\n    if (vi.list) {\n      params.list = vi.list;\n    }\n\n    url += combineParams$9(params);\n\n    if (vi.mediaType !== this.mediaTypes.PLAYLIST && startTime) {\n      url += '#t=' + startTime;\n    }\n\n    return url;\n  };\n\n  YouTube.prototype.createEmbedUrl = function (vi, params) {\n    var url = 'https://www.youtube.com/embed';\n\n    if (vi.mediaType === this.mediaTypes.PLAYLIST && vi.list) {\n      params.listType = 'playlist';\n    } else if (vi.mediaType === this.mediaTypes.VIDEO && vi.id) {\n      url += '/' + vi.id; //loop hack\n\n      if (params.loop === '1') {\n        params.playlist = vi.id;\n      }\n    } else {\n      return undefined;\n    }\n\n    if (vi.list) {\n      params.list = vi.list;\n    }\n\n    url += combineParams$9(params);\n    return url;\n  };\n\n  YouTube.prototype.createImageUrl = function (baseUrl, vi, params) {\n    if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n      return undefined;\n    }\n\n    var url = baseUrl + vi.id + '/';\n    var quality = params.imageQuality || this.defaultImageQuality;\n    return url + quality + '.jpg';\n  };\n\n  YouTube.prototype.createShortImageUrl = function (vi, params) {\n    return this.createImageUrl('https://i.ytimg.com/vi/', vi, params);\n  };\n\n  YouTube.prototype.createLongImageUrl = function (vi, params) {\n    return this.createImageUrl('https://img.youtube.com/vi/', vi, params);\n  };\n\n  base.bind(new YouTube());\n  var combineParams$a = util.combineParams,\n      getTime$6 = util.getTime;\n\n  function SoundCloud() {\n    this.provider = 'soundcloud';\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"long\": this.createLongUrl,\n      embed: this.createEmbedUrl\n    };\n    this.mediaTypes = {\n      TRACK: 'track',\n      PLAYLIST: 'playlist',\n      APITRACK: 'apitrack',\n      APIPLAYLIST: 'apiplaylist'\n    };\n  }\n\n  SoundCloud.prototype.parseUrl = function (url, result) {\n    var match = url.match(/(?:m\\.)?soundcloud\\.com\\/(?:([\\w-]+)\\/(sets\\/)?)([\\w-]+)/i);\n\n    if (!match) {\n      return result;\n    }\n\n    result.channel = match[1];\n\n    if (match[1] === 'playlists' || match[2]) {\n      //playlist\n      result.list = match[3];\n    } else {\n      //track\n      result.id = match[3];\n    }\n\n    return result;\n  };\n\n  SoundCloud.prototype.parseParameters = function (params) {\n    if (params.t) {\n      params.start = getTime$6(params.t);\n      delete params.t;\n    }\n\n    return params;\n  };\n\n  SoundCloud.prototype.parseMediaType = function (result) {\n    if (result.id) {\n      if (result.channel === 'tracks') {\n        delete result.channel;\n        delete result.params.url;\n        result.mediaType = this.mediaTypes.APITRACK;\n      } else {\n        result.mediaType = this.mediaTypes.TRACK;\n      }\n    }\n\n    if (result.list) {\n      if (result.channel === 'playlists') {\n        delete result.channel;\n        delete result.params.url;\n        result.mediaType = this.mediaTypes.APIPLAYLIST;\n      } else {\n        result.mediaType = this.mediaTypes.PLAYLIST;\n      }\n    }\n\n    return result;\n  };\n\n  SoundCloud.prototype.parse = function (url, params) {\n    var result = {};\n    result = this.parseUrl(url, result);\n    result.params = this.parseParameters(params);\n    result = this.parseMediaType(result);\n\n    if (!result.id && !result.list) {\n      return undefined;\n    }\n\n    return result;\n  };\n\n  SoundCloud.prototype.createLongUrl = function (vi, params) {\n    var url = '';\n    var startTime = params.start;\n    delete params.start;\n\n    if (vi.mediaType === this.mediaTypes.TRACK && vi.id && vi.channel) {\n      url = 'https://soundcloud.com/' + vi.channel + '/' + vi.id;\n    } else if (vi.mediaType === this.mediaTypes.PLAYLIST && vi.list && vi.channel) {\n      url = 'https://soundcloud.com/' + vi.channel + '/sets/' + vi.list;\n    } else if (vi.mediaType === this.mediaTypes.APITRACK && vi.id) {\n      url = 'https://api.soundcloud.com/tracks/' + vi.id;\n    } else if (vi.mediaType === this.mediaTypes.APIPLAYLIST && vi.list) {\n      url = 'https://api.soundcloud.com/playlists/' + vi.list;\n    } else {\n      return undefined;\n    }\n\n    url += combineParams$a(params);\n\n    if (startTime) {\n      url += '#t=' + startTime;\n    }\n\n    return url;\n  };\n\n  SoundCloud.prototype.createEmbedUrl = function (vi, params) {\n    var url = 'https://w.soundcloud.com/player/';\n    delete params.start;\n\n    if (vi.mediaType === this.mediaTypes.APITRACK && vi.id) {\n      params.url = 'https%3A//api.soundcloud.com/tracks/' + vi.id;\n    } else if (vi.mediaType === this.mediaTypes.APIPLAYLIST && vi.list) {\n      params.url = 'https%3A//api.soundcloud.com/playlists/' + vi.list;\n    } else {\n      return undefined;\n    }\n\n    url += combineParams$a(params);\n    return url;\n  };\n\n  base.bind(new SoundCloud());\n  var combineParams$b = util.combineParams;\n\n  function TeacherTube() {\n    this.provider = 'teachertube';\n    this.alternatives = [];\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"long\": this.createLongUrl,\n      embed: this.createEmbedUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video',\n      AUDIO: 'audio',\n      DOCUMENT: 'document',\n      CHANNEL: 'channel',\n      COLLECTION: 'collection',\n      GROUP: 'group'\n    };\n  }\n\n  TeacherTube.prototype.parse = function (url, params) {\n    var result = {};\n    result.list = this.parsePlaylist(params);\n    result.params = params;\n    var match = url.match(/\\/(audio|video|document|user\\/channel|collection|group)\\/(?:[\\w-]+-)?(\\w+)/);\n\n    if (!match) {\n      return undefined;\n    }\n\n    result.mediaType = this.parseMediaType(match[1]);\n    result.id = match[2];\n    return result;\n  };\n\n  TeacherTube.prototype.parsePlaylist = function (params) {\n    if (params['playlist-id']) {\n      var list = params['playlist-id'];\n      delete params['playlist-id'];\n      return list;\n    }\n\n    return undefined;\n  };\n\n  TeacherTube.prototype.parseMediaType = function (mediaTypeMatch) {\n    switch (mediaTypeMatch) {\n      case 'audio':\n        return this.mediaTypes.AUDIO;\n\n      case 'video':\n        return this.mediaTypes.VIDEO;\n\n      case 'document':\n        return this.mediaTypes.DOCUMENT;\n\n      case 'user/channel':\n        return this.mediaTypes.CHANNEL;\n\n      case 'collection':\n        return this.mediaTypes.COLLECTION;\n\n      case 'group':\n        return this.mediaTypes.GROUP;\n    }\n  };\n\n  TeacherTube.prototype.createLongUrl = function (vi, params) {\n    if (!vi.id) {\n      return undefined;\n    }\n\n    var url = 'https://www.teachertube.com/';\n\n    if (vi.list) {\n      params['playlist-id'] = vi.list;\n    }\n\n    if (vi.mediaType === this.mediaTypes.CHANNEL) {\n      url += 'user/channel/';\n    } else {\n      url += vi.mediaType + '/';\n    }\n\n    url += vi.id;\n    url += combineParams$b(params);\n    return url;\n  };\n\n  TeacherTube.prototype.createEmbedUrl = function (vi, params) {\n    if (!vi.id) {\n      return undefined;\n    }\n\n    var url = 'https://www.teachertube.com/embed/';\n\n    if (vi.mediaType === this.mediaTypes.VIDEO || vi.mediaType === this.mediaTypes.AUDIO) {\n      url += vi.mediaType + '/' + vi.id;\n    } else {\n      return undefined;\n    }\n\n    url += combineParams$b(params);\n    return url;\n  };\n\n  base.bind(new TeacherTube());\n  var combineParams$c = util.combineParams;\n\n  function TikTok() {\n    this.provider = 'tiktok';\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"long\": this.createLongUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video'\n    };\n  }\n\n  TikTok.prototype.parse = function (url, params) {\n    var result = {\n      params: params,\n      mediaType: this.mediaTypes.VIDEO\n    };\n    var match = url.match(/@([^/]+)\\/video\\/(\\d{19})/);\n\n    if (!match) {\n      return;\n    }\n\n    result.channel = match[1];\n    result.id = match[2];\n    return result;\n  };\n\n  TikTok.prototype.createLongUrl = function (vi, params) {\n    var url = '';\n\n    if (vi.mediaType === this.mediaTypes.VIDEO && vi.id && vi.channel) {\n      url += \"https://www.tiktok.com/@\".concat(vi.channel, \"/video/\").concat(vi.id);\n    } else {\n      return undefined;\n    }\n\n    url += combineParams$c(params);\n    return url;\n  };\n\n  base.bind(new TikTok());\n  var combineParams$d = util.combineParams;\n\n  function Ted() {\n    this.provider = 'ted';\n    this.formats = {\n      \"long\": this.createLongUrl,\n      embed: this.createEmbedUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video',\n      PLAYLIST: 'playlist'\n    };\n  }\n\n  Ted.prototype.parseUrl = function (url, result) {\n    var match = url.match(/\\/(talks|playlists\\/(\\d+))\\/([\\w-]+)/i);\n    var channel = match ? match[1] : undefined;\n\n    if (!channel) {\n      return result;\n    }\n\n    result.channel = channel.split('/')[0];\n    result.id = match[3];\n\n    if (result.channel === 'playlists') {\n      result.list = match[2];\n    }\n\n    return result;\n  };\n\n  Ted.prototype.parseMediaType = function (result) {\n    if (result.id && result.channel === 'playlists') {\n      delete result.channel;\n      result.mediaType = this.mediaTypes.PLAYLIST;\n    }\n\n    if (result.id && result.channel === 'talks') {\n      delete result.channel;\n      result.mediaType = this.mediaTypes.VIDEO;\n    }\n\n    return result;\n  };\n\n  Ted.prototype.parse = function (url, params) {\n    var result = {\n      params: params\n    };\n    result = this.parseUrl(url, result);\n    result = this.parseMediaType(result);\n\n    if (!result.id) {\n      return undefined;\n    }\n\n    return result;\n  };\n\n  Ted.prototype.createLongUrl = function (vi, params) {\n    var url = '';\n\n    if (vi.mediaType === this.mediaTypes.VIDEO && vi.id) {\n      url += 'https://ted.com/talks/' + vi.id;\n    } else if (vi.mediaType === this.mediaTypes.PLAYLIST && vi.id) {\n      url += 'https://ted.com/playlists/' + vi.list + '/' + vi.id;\n    } else {\n      return undefined;\n    }\n\n    url += combineParams$d(params);\n    return url;\n  };\n\n  Ted.prototype.createEmbedUrl = function (vi, params) {\n    var url = 'https://embed.ted.com/';\n\n    if (vi.mediaType === this.mediaTypes.PLAYLIST && vi.id) {\n      url += 'playlists/' + vi.list + '/' + vi.id;\n    } else if (vi.mediaType === this.mediaTypes.VIDEO && vi.id) {\n      url += 'talks/' + vi.id;\n    } else {\n      return undefined;\n    }\n\n    url += combineParams$d(params);\n    return url;\n  };\n\n  base.bind(new Ted());\n  var combineParams$e = util.combineParams;\n\n  function Facebook() {\n    this.provider = 'facebook';\n    this.alternatives = [];\n    this.defaultFormat = 'long';\n    this.formats = {\n      \"long\": this.createLongUrl,\n      watch: this.createWatchUrl\n    };\n    this.mediaTypes = {\n      VIDEO: 'video'\n    };\n  }\n\n  Facebook.prototype.parse = function (url, params) {\n    var result = {\n      params: params,\n      mediaType: this.mediaTypes.VIDEO\n    };\n    var match = url.match(/(?:\\/(\\d+))?\\/videos(?:\\/.*?)?\\/(\\d+)/i);\n\n    if (match) {\n      if (match[1]) {\n        result.pageId = match[1];\n      }\n\n      result.id = match[2];\n    }\n\n    if (params.v && !result.id) {\n      result.id = params.v;\n      delete params.v;\n      result.params = params;\n    }\n\n    if (!result.id) {\n      return undefined;\n    }\n\n    return result;\n  };\n\n  Facebook.prototype.createWatchUrl = function (vi, params) {\n    var url = 'https://facebook.com/watch/';\n\n    if (vi.mediaType !== this.mediaTypes.VIDEO || !vi.id) {\n      return undefined;\n    }\n\n    params = {\n      v: vi.id\n    };\n    url += combineParams$e(params);\n    return url;\n  };\n\n  Facebook.prototype.createLongUrl = function (vi, params) {\n    var url = 'https://facebook.com/';\n\n    if (vi.pageId) {\n      url += vi.pageId;\n    } else {\n      return undefined;\n    }\n\n    if (vi.mediaType === this.mediaTypes.VIDEO && vi.id) {\n      url += '/videos/' + vi.id;\n    } else {\n      return undefined;\n    }\n\n    url += combineParams$e(params);\n    return url;\n  };\n\n  base.bind(new Facebook());\n  var lib = base;\n  return lib;\n});","var _require = require('../util'),\n    combineParams = _require.combineParams,\n    getTime = _require.getTime;\n\nfunction YouTube() {\n  this.provider = 'youtube';\n  this.alternatives = ['youtu', 'ytimg'];\n  this.defaultFormat = 'long';\n  this.formats = {\n    \"short\": this.createShortUrl,\n    \"long\": this.createLongUrl,\n    embed: this.createEmbedUrl,\n    shortImage: this.createShortImageUrl,\n    longImage: this.createLongImageUrl\n  };\n  this.imageQualities = {\n    '0': '0',\n    '1': '1',\n    '2': '2',\n    '3': '3',\n    DEFAULT: 'default',\n    HQDEFAULT: 'hqdefault',\n    SDDEFAULT: 'sddefault',\n    MQDEFAULT: 'mqdefault',\n    MAXRESDEFAULT: 'maxresdefault'\n  };\n  this.defaultImageQuality = this.imageQualities.HQDEFAULT;\n  this.mediaTypes = {\n    VIDEO: 'video',\n    PLAYLIST: 'playlist',\n    SHARE: 'share',\n    CHANNEL: 'channel'\n  };\n}\n\nmodule.exports = YouTube;\n\nYouTube.prototype.parseVideoUrl = function (url) {\n  var match = url.match(/(?:(?:v|vi|be|videos|embed)\\/(?!videoseries)|(?:v|ci)=)([\\w-]{11})/i);\n  return match ? match[1] : undefined;\n};\n\nYouTube.prototype.parseChannelUrl = function (url) {\n  // Match an opaque channel ID\n  var match = url.match(/\\/channel\\/([\\w-]+)/);\n\n  if (match) {\n    return {\n      id: match[1],\n      mediaType: this.mediaTypes.CHANNEL\n    };\n  } // Match a vanity channel name or a user name. User urls are deprecated and\n  // currently redirect to the channel of that same name.\n\n\n  match = url.match(/\\/(?:c|user)\\/([\\w-]+)/);\n\n  if (match) {\n    return {\n      name: match[1],\n      mediaType: this.mediaTypes.CHANNEL\n    };\n  }\n};\n\nYouTube.prototype.parseParameters = function (params, result) {\n  if (params.start || params.t) {\n    params.start = getTime(params.start || params.t);\n    delete params.t;\n  }\n\n  if (params.v === result.id) {\n    delete params.v;\n  }\n\n  if (params.list === result.id) {\n    delete params.list;\n  }\n\n  return params;\n};\n\nYouTube.prototype.parseMediaType = function (result) {\n  if (result.params.list) {\n    result.list = result.params.list;\n    delete result.params.list;\n  }\n\n  if (result.id && !result.params.ci) {\n    result.mediaType = this.mediaTypes.VIDEO;\n  } else if (result.list) {\n    delete result.id;\n    result.mediaType = this.mediaTypes.PLAYLIST;\n  } else if (result.params.ci) {\n    delete result.params.ci;\n    result.mediaType = this.mediaTypes.SHARE;\n  } else {\n    return undefined;\n  }\n\n  return result;\n};\n\nYouTube.prototype.parse = function (url, params) {\n  var channelResult = this.parseChannelUrl(url);\n\n  if (channelResult) {\n    return channelResult;\n  } else {\n    var result = {\n      params: params,\n      id: this.parseVideoUrl(url)\n    };\n    result.params = this.parseParameters(params, result);\n    result = this.parseMediaType(result);\n    return result;\n  }\n};\n\nYouTube.prototype.createShortUrl = function (vi, params) {\n  if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n    return undefined;\n  }\n\n  var url = 'https://youtu.be/' + vi.id;\n\n  if (params.start) {\n    url += '#t=' + params.start;\n  }\n\n  return url;\n};\n\nYouTube.prototype.createLongUrl = function (vi, params) {\n  var url = '';\n  var startTime = params.start;\n  delete params.start;\n\n  if (vi.mediaType === this.mediaTypes.CHANNEL) {\n    if (vi.id) {\n      url += 'https://www.youtube.com/channel/' + vi.id;\n    } else if (vi.name) {\n      url += 'https://www.youtube.com/c/' + vi.name;\n    } else {\n      return undefined;\n    }\n  } else if (vi.mediaType === this.mediaTypes.PLAYLIST && vi.list) {\n    params.feature = 'share';\n    url += 'https://www.youtube.com/playlist';\n  } else if (vi.mediaType === this.mediaTypes.VIDEO && vi.id) {\n    params.v = vi.id;\n    url += 'https://www.youtube.com/watch';\n  } else if (vi.mediaType === this.mediaTypes.SHARE && vi.id) {\n    params.ci = vi.id;\n    url += 'https://www.youtube.com/shared';\n  } else {\n    return undefined;\n  }\n\n  if (vi.list) {\n    params.list = vi.list;\n  }\n\n  url += combineParams(params);\n\n  if (vi.mediaType !== this.mediaTypes.PLAYLIST && startTime) {\n    url += '#t=' + startTime;\n  }\n\n  return url;\n};\n\nYouTube.prototype.createEmbedUrl = function (vi, params) {\n  var url = 'https://www.youtube.com/embed';\n\n  if (vi.mediaType === this.mediaTypes.PLAYLIST && vi.list) {\n    params.listType = 'playlist';\n  } else if (vi.mediaType === this.mediaTypes.VIDEO && vi.id) {\n    url += '/' + vi.id; //loop hack\n\n    if (params.loop === '1') {\n      params.playlist = vi.id;\n    }\n  } else {\n    return undefined;\n  }\n\n  if (vi.list) {\n    params.list = vi.list;\n  }\n\n  url += combineParams(params);\n  return url;\n};\n\nYouTube.prototype.createImageUrl = function (baseUrl, vi, params) {\n  if (!vi.id || vi.mediaType !== this.mediaTypes.VIDEO) {\n    return undefined;\n  }\n\n  var url = baseUrl + vi.id + '/';\n  var quality = params.imageQuality || this.defaultImageQuality;\n  return url + quality + '.jpg';\n};\n\nYouTube.prototype.createShortImageUrl = function (vi, params) {\n  return this.createImageUrl('https://i.ytimg.com/vi/', vi, params);\n};\n\nYouTube.prototype.createLongImageUrl = function (vi, params) {\n  return this.createImageUrl('https://img.youtube.com/vi/', vi, params);\n};\n\nrequire('../base').bind(new YouTube());","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nexports.getQueryParams = function getQueryParams(qs) {\n  if (typeof qs !== 'string') {\n    return {};\n  }\n\n  qs = qs.split('+').join(' ');\n  var params = {};\n  var match = qs.match(/(?:[?](?:[^=]+)=(?:[^&#]*)(?:[&](?:[^=]+)=(?:[^&#]*))*(?:[#].*)?)|(?:[#].*)/);\n  var split;\n\n  if (match === null) {\n    return {};\n  }\n\n  split = match[0].substr(1).split(/[&#=]/);\n\n  for (var i = 0; i < split.length; i += 2) {\n    params[decodeURIComponent(split[i])] = decodeURIComponent(split[i + 1] || '');\n  }\n\n  return params;\n};\n\nexports.combineParams = function combineParams(params, hasParams) {\n  if (_typeof(params) !== 'object') {\n    return '';\n  }\n\n  var combined = '';\n  var i = 0;\n  var keys = Object.keys(params);\n\n  if (keys.length === 0) {\n    return '';\n  } //always have parameters in the same order\n\n\n  keys.sort();\n\n  if (!hasParams) {\n    combined += '?' + keys[0] + '=' + params[keys[0]];\n    i += 1;\n  }\n\n  for (; i < keys.length; i += 1) {\n    combined += '&' + keys[i] + '=' + params[keys[i]];\n  }\n\n  return combined;\n}; //parses strings like 1h30m20s to seconds\n\n\nfunction getLetterTime(timeString) {\n  var totalSeconds = 0;\n  var timeValues = {\n    's': 1,\n    'm': 1 * 60,\n    'h': 1 * 60 * 60,\n    'd': 1 * 60 * 60 * 24,\n    'w': 1 * 60 * 60 * 24 * 7\n  };\n  var timePairs; //expand to \"1 h 30 m 20 s\" and split\n\n  timeString = timeString.replace(/([smhdw])/g, ' $1 ').trim();\n  timePairs = timeString.split(' ');\n\n  for (var i = 0; i < timePairs.length; i += 2) {\n    totalSeconds += parseInt(timePairs[i], 10) * timeValues[timePairs[i + 1] || 's'];\n  }\n\n  return totalSeconds;\n} //parses strings like 1:30:20 to seconds\n\n\nfunction getColonTime(timeString) {\n  var totalSeconds = 0;\n  var timeValues = [1, 1 * 60, 1 * 60 * 60, 1 * 60 * 60 * 24, 1 * 60 * 60 * 24 * 7];\n  var timePairs = timeString.split(':');\n\n  for (var i = 0; i < timePairs.length; i++) {\n    totalSeconds += parseInt(timePairs[i], 10) * timeValues[timePairs.length - i - 1];\n  }\n\n  return totalSeconds;\n}\n\nexports.getTime = function getTime(timeString) {\n  if (typeof timeString === 'undefined') {\n    return 0;\n  }\n\n  if (timeString.match(/^(\\d+[smhdw]?)+$/)) {\n    return getLetterTime(timeString);\n  }\n\n  if (timeString.match(/^(\\d+:?)+$/)) {\n    return getColonTime(timeString);\n  }\n\n  return 0;\n};","import YouTube from 'js-video-url-parser/lib/provider/youtube';\n\nconst YouTubeExtend = function () {\n  YouTube.call(this);\n};\nYouTubeExtend.prototype = Object.create(YouTube.prototype);\nYouTubeExtend.prototype.parseVideoUrl = function (url) {\n  const regex =\n    /(?:(?:v|vi|be|videos|embed|shorts)\\/(?!videoseries)|(?:v|ci)=)([\\w-]{11})/i;\n  const match = url.match(regex);\n  return match ? match[1] : undefined;\n};\nYouTubeExtend.prototype.constructor = YouTubeExtend;\n\nexport default YouTubeExtend;\n","import videoUrlParser from 'js-video-url-parser';\nimport YouTubeExtend from '../../javascripts/js-video-url-parser/provider/youtube';\nimport { fetchWithTimeout } from '../api_utils';\nvideoUrlParser.plugins.youtube = new YouTubeExtend();\n\nclass ViewMode {\n  constructor($element) {\n    this.$element = $element;\n  }\n\n  replace() {\n    document.querySelectorAll('oembed[url]').forEach(async elem => {\n      const videoInfo = videoUrlParser.parse(elem.attributes.url.value);\n\n      if (videoInfo) {\n        switch (videoInfo.provider) {\n          case 'vimeo':\n            elem.parentElement.innerHTML = this.createVideoBlock(`//player.vimeo.com/video/${videoInfo.id}`);\n            break;\n          case 'youtube':\n            elem.parentElement.innerHTML = this.createVideoBlock(`//www.youtube.com/embed/${videoInfo.id}`);\n            break;\n        }\n      }\n      else if (elem.attributes.url.value) {\n        const card = await this.createOGCard(elem.attributes.url.value);\n        elem.parentElement.innerHTML = card;\n      }\n    });\n  }\n\n  createVideoBlock(url) {\n    const videoContainer = document.createElement('div');\n    const iframe = document.createElement('iframe');\n    iframe.setAttribute('width', '100%');\n    iframe.setAttribute('height', '100%');\n    iframe.setAttribute('src', url);\n    iframe.setAttribute('frameborder', 0);\n    iframe.setAttribute('allowfullscreen', '');\n    videoContainer.className = 'video-container';\n    videoContainer.appendChild(iframe);\n    return videoContainer.outerHTML;\n  }\n\n  async createOGCard(request_url) {\n    const url = encodeURIComponent(request_url);\n    const response = await fetchWithTimeout(`/open_graph?url=${url}`);\n    const json = await response.json();\n    return json.html;\n  }\n}\n\nexport default ViewMode;\n","/**\n * usage:\n * - 1. loadingTargetを position: relative\n * - 2. loadingTargetに中に <%= render partial: 'shared/loader' %>入れる\n *\n * @param loadingTarget\n * @param disableTargets\n * @param callback\n * @returns {Promise<null|*>}\n */\nexport async function withLoadingAndDisable(loadingTarget, disableTargets, callback) {\n  try {\n    // loading\n    loadingTarget.classList.add('-loading');\n    // disable\n    if (disableTargets) {\n      disableTargets.forEach(el => {\n        el.disabled = true;\n      });\n    }\n\n    const result = await callback();\n\n    // loading off\n    loadingTarget.classList.remove('-loading');\n    // disable off\n    if (disableTargets) {\n      disableTargets.forEach(el => {\n        el.disabled = false;\n      });\n    }\n\n    return result;\n  } catch (e) {\n    console.error('error: ', e);\n\n    // loading off\n    loadingTarget.classList.remove('-loading');\n    // disable off\n    if (disableTargets) {\n      disableTargets.forEach(el => {\n        el.disabled = false;\n      });\n    }\n    return null;\n  }\n}\n\nfunction wait(ms) {\n  return new Promise(resolve => {\n    setTimeout(resolve, ms);\n  });\n}\n\n/**\n * @param requestCb\n * @param stopConditionCb\n * @param intervalMs\n * @returns {Promise<*>}\n */\nexport async function pollingRequest(requestCb, stopConditionCb, intervalMs = 5000) {\n  let result = await requestCb();\n  while (!stopConditionCb(result)) {\n    await wait(intervalMs);\n    result = await requestCb();\n  }\n  return result;\n}\n\n/**\n * @deprecated\n * use utils/csrf.util.ts\n * jsでtsは参照はできないので、getCsrfToken()を使うjsが viteからcompileされる時だけrefactoringすること\n */\nexport function getCsrfToken() {\n  return document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content');\n}\n\nexport function jqueryAjaxBeforeSend(xhr) {\n  xhr.setRequestHeader('X-CSRF-Token', getCsrfToken());\n}\n\nexport function apiFailResultHandler(e, message) {\n  console.error(e);\n  if (e.responseJSON && e.responseJSON.status === 400) {\n    alert(e.responseJSON.message);\n  } else {\n    alert(message);\n  }\n}\n\nexport async function fetchWithTimeout(resource, options = {}) {\n  const { timeout = 10000 } = options;\n\n  const controller = new AbortController();\n  const id = setTimeout(() => controller.abort(), timeout);\n\n  const response = await fetch(resource, {\n    headers: {\n      'Accept': 'application/json',\n      'X-CSRF-TOKEN': getCsrfToken(),\n    },\n    ...options,\n    signal: controller.signal\n  });\n  clearTimeout(id);\n\n  return response;\n}\n\n/**\n * objectから、null, undefined, ''の値を削除して、URLSearchParamsを作成する\n * 0は残した場合があるため、truthyは使わない\n *\n * @param paramsObj\n * @returns {module:url.URLSearchParams}\n */\nexport function buildSafeURLSearchParams(paramsObj) {\n  for (const key of Object.keys(paramsObj)) {\n    if (paramsObj[key] === null || paramsObj[key] === undefined || paramsObj[key] === '') {\n      delete paramsObj[key];\n    }\n  }\n  return new URLSearchParams(paramsObj);\n}\n"],"sourceRoot":""}