{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./node_modules/js-video-url-parser/lib/base.js","webpack:///./app/frontend/packs/pages/static/guideline.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","parser","$","ViewMode","replace","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/guideline-354b06a0b9ddde2047bc.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 = 1052);\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;","var UrlParser = require('./urlParser');\n\nvar parser = new UrlParser();\nmodule.exports = parser;","import ViewMode from '../../../javascripts/editor/view_mode';\nimport '../../../styles/layout/_editor';\n\n$(() => {\n const viewMode = new ViewMode('oembed[url]');\n viewMode.replace();\n});\n","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}\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":""}