{"version":3,"file":"lazy-yt.js","names":["define","_exports","_pluginApi","_lazyYT","Object","defineProperty","value","default","_default","name","initialize","withPluginApi","api","$","decorateCooked","$elem","length","lazyYT","onPlay","e","$el","postId","parseInt","closest","data","preventCloak","id","_escape","fn","newSettings","settings","assign","default_ratio","callback","container_class","this","each","padding_bottom","$thumb","thumb_img","width","height","ratio","title","innerHtml","youtube_parameters","split","parent","push","prefetchedThumbnail","querySelector","css","html","join","find","append","addClass","on","type","keyCode","preventDefault","hasClass","setUp"],"sources":["discourse/plugins/lazy-yt/initializers/lazyYT.js","discourse/plugins/lazy-yt/lib/lazyYT.js"],"sourcesContent":["define(\"discourse/plugins/lazy-yt/initializers/lazyYT\", [\"exports\", \"discourse/lib/plugin-api\", \"discourse/plugins/lazy-yt/lib/lazyYT\"], function (_exports, _pluginApi, _lazyYT) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"discourse/lib/plugin-api\",0,\"discourse/plugins/lazy-yt/lib/lazyYT\"eaimeta@70e063a35619d71f\n  var _default = {\n    name: \"apply-lazyYT\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(\"0.1\", api => {\n        (0, _lazyYT.default)($);\n        api.decorateCooked($elem => {\n          const iframes = $(\".lazyYT\", $elem);\n          if (iframes.length === 0) {\n            return;\n          }\n          $(\".lazyYT\", $elem).lazyYT({\n            onPlay(e, $el) {\n              // don't cloak posts that have playing videos in them\n              const postId = parseInt($el.closest(\"article\").data(\"post-id\"), 10);\n              if (postId) {\n                api.preventCloak(postId);\n              }\n            }\n          });\n        }, {\n          id: \"discourse-lazyyt\"\n        });\n      });\n    }\n  };\n  _exports.default = _default;\n});","define(\"discourse/plugins/lazy-yt/lib/lazyYT\", [\"exports\", \"discourse-common/lib/escape\"], function (_exports, _escape) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = initLazyYt;\n  0; //eaimeta@70e063a35619d71f0,\"discourse-common/lib/escape\"eaimeta@70e063a35619d71f\n  function initLazyYt($) {\n    \"use strict\";\n\n    function setUp($el, settings) {\n      let width = $el.data(\"width\"),\n        height = $el.data(\"height\"),\n        ratio = $el.data(\"ratio\") ? $el.data(\"ratio\") : settings.default_ratio,\n        id = $el.data(\"youtube-id\"),\n        title = $el.data(\"youtube-title\"),\n        padding_bottom,\n        innerHtml = [],\n        $thumb,\n        thumb_img,\n        youtube_parameters = $el.data(\"parameters\") || \"\";\n      ratio = ratio.split(\":\");\n\n      // width and height might override default_ratio value\n      if (typeof width === \"number\" && typeof height === \"number\") {\n        $el.width(width);\n        padding_bottom = height + \"px\";\n      } else if (typeof width === \"number\") {\n        $el.width(width);\n        padding_bottom = width * ratio[1] / ratio[0] + \"px\";\n      } else {\n        width = $el.width();\n\n        // no width means that container is fluid and will be the size of its parent\n        if (width === 0) {\n          width = $el.parent().width();\n        }\n        padding_bottom = ratio[1] / ratio[0] * 100 + \"%\";\n      }\n\n      //\n      // This HTML will be placed inside 'lazyYT' container\n\n      innerHtml.push('<div class=\"ytp-thumbnail\" tabIndex=\"0\">');\n\n      // Play button from YouTube (exactly as it is in YouTube)\n      innerHtml.push('<div class=\"ytp-large-play-button\"');\n      if (width <= 640) {\n        innerHtml.push(' style=\"transform: scale(0.563888888888889);\"');\n      }\n      innerHtml.push(\">\");\n      innerHtml.push(\"<svg>\");\n      innerHtml.push('<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"#1F1F1F\" class=\"ytp-large-play-button-svg\" d=\"M84.15,26.4v6.35c0,2.833-0.15,5.967-0.45,9.4c-0.133,1.7-0.267,3.117-0.4,4.25l-0.15,0.95c-0.167,0.767-0.367,1.517-0.6,2.25c-0.667,2.367-1.533,4.083-2.6,5.15c-1.367,1.4-2.967,2.383-4.8,2.95c-0.633,0.2-1.316,0.333-2.05,0.4c-0.767,0.1-1.3,0.167-1.6,0.2c-4.9,0.367-11.283,0.617-19.15,0.75c-2.434,0.034-4.883,0.067-7.35,0.1h-2.95C38.417,59.117,34.5,59.067,30.3,59c-8.433-0.167-14.05-0.383-16.85-0.65c-0.067-0.033-0.667-0.117-1.8-0.25c-0.9-0.133-1.683-0.283-2.35-0.45c-2.066-0.533-3.783-1.5-5.15-2.9c-1.033-1.067-1.9-2.783-2.6-5.15C1.317,48.867,1.133,48.117,1,47.35L0.8,46.4c-0.133-1.133-0.267-2.55-0.4-4.25C0.133,38.717,0,35.583,0,32.75V26.4c0-2.833,0.133-5.95,0.4-9.35l0.4-4.25c0.167-0.966,0.417-2.05,0.75-3.25c0.7-2.333,1.567-4.033,2.6-5.1c1.367-1.434,2.967-2.434,4.8-3c0.633-0.167,1.333-0.3,2.1-0.4c0.4-0.066,0.917-0.133,1.55-0.2c4.9-0.333,11.283-0.567,19.15-0.7C35.65,0.05,39.083,0,42.05,0L45,0.05c2.467,0,4.933,0.034,7.4,0.1c7.833,0.133,14.2,0.367,19.1,0.7c0.3,0.033,0.833,0.1,1.6,0.2c0.733,0.1,1.417,0.233,2.05,0.4c1.833,0.566,3.434,1.566,4.8,3c1.066,1.066,1.933,2.767,2.6,5.1c0.367,1.2,0.617,2.284,0.75,3.25l0.4,4.25C84,20.45,84.15,23.567,84.15,26.4z M33.3,41.4L56,29.6L33.3,17.75V41.4z\"></path>');\n      innerHtml.push('<polygon fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"#FFFFFF\" points=\"33.3,41.4 33.3,17.75 56,29.6\"></polygon>');\n      innerHtml.push(\"</svg>\");\n      innerHtml.push(\"</div>\"); // end of .ytp-large-play-button\n\n      innerHtml.push(\"</div>\"); // end of .ytp-thumbnail\n\n      // Video title (info bar)\n      innerHtml.push('<div class=\"html5-info-bar\">');\n      innerHtml.push('<div class=\"html5-title\">');\n      innerHtml.push('<div class=\"html5-title-text-wrapper\">');\n      innerHtml.push('<a class=\"html5-title-text\" target=\"_blank\" tabindex=\"3100\" href=\"https://www.youtube.com/watch?v=', (0, _escape.default)(id), '\">');\n      if (title === undefined || title === null || title === \"\") {\n        innerHtml.push(\"youtube.com/watch?v=\" + (0, _escape.default)(id));\n      } else {\n        innerHtml.push((0, _escape.default)(title));\n      }\n      innerHtml.push(\"</a>\");\n      innerHtml.push(\"</div>\"); // .html5-title\n      innerHtml.push(\"</div>\"); // .html5-title-text-wrapper\n      innerHtml.push(\"</div>\"); // end of Video title .html5-info-bar\n\n      let prefetchedThumbnail = $el[0].querySelector(\".ytp-thumbnail-image\");\n      $el.css({\n        \"padding-bottom\": padding_bottom\n      }).html(innerHtml.join(\"\"));\n      if (width > 640) {\n        thumb_img = \"maxresdefault.jpg\";\n      } else if (width > 480) {\n        thumb_img = \"sddefault.jpg\";\n      } else if (width > 320) {\n        thumb_img = \"hqdefault.jpg\";\n      } else if (width > 120) {\n        thumb_img = \"mqdefault.jpg\";\n      } else if (width === 0) {\n        // sometimes it fails on fluid layout\n        thumb_img = \"hqdefault.jpg\";\n      } else {\n        thumb_img = \"default.jpg\";\n      }\n      if (prefetchedThumbnail) {\n        $el.find(\".ytp-thumbnail\").append(prefetchedThumbnail);\n      } else {\n        // Fallback for old posts which were baked before the lazy-yt onebox prefetched a thumbnail\n        $el.find(\".ytp-thumbnail\").append($(['<img class=\"ytp-thumbnail-image\" src=\"https://img.youtube.com/vi/', (0, _escape.default)(id), \"/\", thumb_img, '\">'].join(\"\")));\n      }\n      $thumb = $el.find(\".ytp-thumbnail\").addClass(\"lazyYT-image-loaded\").on(\"keypress click\", function (e) {\n        // Only support Enter for keypress\n        if (e.type === \"keypress\" && e.keyCode !== 13) {\n          return;\n        }\n        e.preventDefault();\n        if (!$el.hasClass(\"lazyYT-video-loaded\") && $thumb.hasClass(\"lazyYT-image-loaded\")) {\n          $el.html('<iframe src=\"//www.youtube.com/embed/' + (0, _escape.default)(id) + \"?autoplay=1&\" + youtube_parameters + '\" frameborder=\"0\" allowfullscreen></iframe>').addClass(\"lazyYT-video-loaded\");\n        }\n        if (settings.onPlay) {\n          settings.onPlay(e, $el);\n        }\n      });\n    }\n    $.fn.lazyYT = function (newSettings) {\n      let defaultSettings = {\n        default_ratio: \"16:9\",\n        callback: null,\n        // TODO: execute callback if given\n        container_class: \"lazyYT-container\"\n      };\n      let settings = Object.assign(defaultSettings, newSettings);\n      return this.each(function () {\n        let $el = $(this).addClass(settings.container_class);\n        setUp($el, settings);\n      });\n    };\n  }\n});"],"mappings":"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"}