{"version":3,"file":"discourse-lazy-videos.js","names":["define","_exports","_component","_templateFactory","_component2","Object","defineProperty","value","default","__COLOCATED_TEMPLATE__","createTemplateFactory","id","block","moduleName","isStrictMode","LazyVideo","iframeSrc","this","args","providerName","url","videoId","startTime","convertToSeconds","includes","time","match","toString","hours","minutes","seconds","slice","parseInt","setComponentTemplate","_object","_tracking","_template","_class","_descriptor","_applyDecoratedDescriptor","target","property","decorators","descriptor","context","desc","keys","forEach","key","enumerable","configurable","initializer","writable","reverse","reduce","decorator","call","undefined","constructor","super","arguments","loadEmbed","isLoaded","onLoadedVideo","onKeyPress","event","preventDefault","thumbnailStyle","color","videoAttributes","dominantColor","htmlSafe","prototype","tracked","action","getOwnPropertyDescriptor","_pluginApi","_lazyVideoAttributes","initLazyEmbed","api","decorateCookedElement","cooked","helper","classList","contains","querySelectorAll","container","siteSettings","lookup","postId","closest","dataset","preventCloak","lazyVideo","renderGlimmer","param","replaceWith","onlyStream","_default","name","initialize","withPluginApi","querySelector","getAttribute","img","thumbnail","title","videoTitle","videoStartTime"],"sources":["discourse/plugins/discourse-lazy-videos/discourse/components/lazy-iframe.js","discourse/plugins/discourse-lazy-videos/discourse/components/lazy-video.js","discourse/plugins/discourse-lazy-videos/initializers/lazy-videos.js","discourse/plugins/discourse-lazy-videos/lib/lazy-video-attributes.js"],"sourcesContent":["define(\"discourse/plugins/discourse-lazy-videos/discourse/components/lazy-iframe\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@glimmer/component\"], function (_exports, _component, _templateFactory, _component2) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-htmlbars\",0,\"@glimmer/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @providerName}}\n    <iframe\n      src={{this.iframeSrc}}\n      title={{@title}}\n      allowFullScreen\n      scrolling=\"no\"\n      frameborder=\"0\"\n      seamless=\"seamless\"\n      allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n    ></iframe>\n  {{/if}}\n  */\n  {\n    \"id\": \"aRGjz/CC\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,\\\"iframe\\\"],[15,\\\"src\\\",[30,0,[\\\"iframeSrc\\\"]]],[15,\\\"title\\\",[30,2]],[14,\\\"allowFullScreen\\\",\\\"\\\"],[14,\\\"scrolling\\\",\\\"no\\\"],[14,\\\"frameborder\\\",\\\"0\\\"],[14,\\\"seamless\\\",\\\"seamless\\\"],[14,\\\"allow\\\",\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@providerName\\\",\\\"@title\\\"],false,[\\\"if\\\"]]\",\n    \"moduleName\": \"discourse/plugins/discourse-lazy-videos/discourse/components/lazy-iframe.hbs\",\n    \"isStrictMode\": false\n  });\n  class LazyVideo extends _component2.default {\n    get iframeSrc() {\n      switch (this.args.providerName) {\n        case \"youtube\":\n          let url = `https://www.youtube.com/embed/${this.args.videoId}?autoplay=1`;\n          if (this.args.startTime) {\n            url += `&start=${this.convertToSeconds(this.args.startTime)}`;\n          }\n          return url;\n        case \"vimeo\":\n          return `https://player.vimeo.com/video/${this.args.videoId}${this.args.videoId.includes(\"?\") ? \"&\" : \"?\"}autoplay=1`;\n        case \"tiktok\":\n          return `https://www.tiktok.com/embed/v2/${this.args.videoId}`;\n      }\n    }\n    convertToSeconds(time) {\n      const match = time.toString().match(/(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?/);\n      const [hours, minutes, seconds] = match.slice(1);\n      if (hours || minutes || seconds) {\n        const h = parseInt(hours, 10) || 0;\n        const m = parseInt(minutes, 10) || 0;\n        const s = parseInt(seconds, 10) || 0;\n        return h * 3600 + m * 60 + s;\n      }\n      return time;\n    }\n  }\n  _exports.default = LazyVideo;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, LazyVideo);\n});","define(\"discourse/plugins/discourse-lazy-videos/discourse/components/lazy-video\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/template\"], function (_exports, _component, _templateFactory, _component2, _object, _tracking, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-htmlbars\",0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/template\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }\n  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n  function _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n  function _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\n  function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    class={{concat-class\n      \"lazy-video-container\"\n      (concat @videoAttributes.providerName \"-onebox\")\n      (if this.isLoaded \"video-loaded\")\n    }}\n    data-video-id={{@videoAttributes.id}}\n    data-video-title={{@videoAttributes.title}}\n    data-video-start-time={{@videoAttributes.startTime}}\n    data-provider-name={{@videoAttributes.providerName}}\n  >\n    {{#if this.isLoaded}}\n      <LazyIframe\n        @providerName={{@videoAttributes.providerName}}\n        @title={{@videoAttributes.title}}\n        @videoId={{@videoAttributes.id}}\n        @startTime={{@videoAttributes.startTime}}\n      />\n    {{else}}\n      <div\n        class={{concat-class \"video-thumbnail\" @videoAttributes.providerName}}\n        tabindex=\"0\"\n        style={{this.thumbnailStyle}}\n        {{on \"click\" this.loadEmbed}}\n        {{on \"keypress\" this.loadEmbed}}\n      >\n        <img\n          class={{concat @videoAttributes.providerName \"-thumbnail\"}}\n          src={{@videoAttributes.thumbnail}}\n          title={{@videoAttributes.title}}\n          loading=\"lazy\"\n        />\n        <div\n          class={{concat-class\n            \"icon\"\n            (concat @videoAttributes.providerName \"-icon\")\n          }}\n        ></div>\n      </div>\n      <div class=\"title-container\">\n        <div class=\"title-wrapper\">\n          <a\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            class=\"title-link\"\n            href={{@videoAttributes.url}}\n            title={{@videoAttributes.title}}\n          >\n            {{@videoAttributes.title}}\n          </a>\n        </div>\n      </div>\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"5+HCJd+d\",\n    \"block\": \"[[[10,0],[15,0,[28,[37,0],[\\\"lazy-video-container\\\",[28,[37,1],[[30,1,[\\\"providerName\\\"]],\\\"-onebox\\\"],null],[52,[30,0,[\\\"isLoaded\\\"]],\\\"video-loaded\\\"]],null]],[15,\\\"data-video-id\\\",[30,1,[\\\"id\\\"]]],[15,\\\"data-video-title\\\",[30,1,[\\\"title\\\"]]],[15,\\\"data-video-start-time\\\",[30,1,[\\\"startTime\\\"]]],[15,\\\"data-provider-name\\\",[30,1,[\\\"providerName\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isLoaded\\\"]],[[[1,\\\"    \\\"],[8,[39,3],null,[[\\\"@providerName\\\",\\\"@title\\\",\\\"@videoId\\\",\\\"@startTime\\\"],[[30,1,[\\\"providerName\\\"]],[30,1,[\\\"title\\\"]],[30,1,[\\\"id\\\"]],[30,1,[\\\"startTime\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[11,0],[16,0,[28,[37,0],[\\\"video-thumbnail\\\",[30,1,[\\\"providerName\\\"]]],null]],[24,\\\"tabindex\\\",\\\"0\\\"],[16,5,[30,0,[\\\"thumbnailStyle\\\"]]],[4,[38,4],[\\\"click\\\",[30,0,[\\\"loadEmbed\\\"]]],null],[4,[38,4],[\\\"keypress\\\",[30,0,[\\\"loadEmbed\\\"]]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[15,0,[28,[37,1],[[30,1,[\\\"providerName\\\"]],\\\"-thumbnail\\\"],null]],[15,\\\"src\\\",[30,1,[\\\"thumbnail\\\"]]],[15,\\\"title\\\",[30,1,[\\\"title\\\"]]],[14,\\\"loading\\\",\\\"lazy\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[15,0,[28,[37,0],[\\\"icon\\\",[28,[37,1],[[30,1,[\\\"providerName\\\"]],\\\"-icon\\\"],null]],null]],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"title-container\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"title-wrapper\\\"],[12],[1,\\\"\\\\n        \\\"],[10,3],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"title-link\\\"],[15,6,[30,1,[\\\"url\\\"]]],[15,\\\"title\\\",[30,1,[\\\"title\\\"]]],[12],[1,\\\"\\\\n          \\\"],[1,[30,1,[\\\"title\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"@videoAttributes\\\"],false,[\\\"concat-class\\\",\\\"concat\\\",\\\"if\\\",\\\"lazy-iframe\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"discourse/plugins/discourse-lazy-videos/discourse/components/lazy-video.hbs\",\n    \"isStrictMode\": false\n  });\n  let LazyVideo = (_class = class LazyVideo extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"isLoaded\", _descriptor, this);\n    }\n    loadEmbed() {\n      if (!this.isLoaded) {\n        this.isLoaded = true;\n        this.args.onLoadedVideo?.();\n      }\n    }\n    onKeyPress(event) {\n      if (event.key === \"Enter\") {\n        event.preventDefault();\n        this.loadEmbed();\n      }\n    }\n    get thumbnailStyle() {\n      const color = this.args.videoAttributes.dominantColor;\n      if (color?.match(/^[0-9A-Fa-f]+$/)) {\n        return (0, _template.htmlSafe)(`background-color: #${color};`);\n      }\n    }\n  }, (_descriptor = _applyDecoratedDescriptor(_class.prototype, \"isLoaded\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"loadEmbed\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"loadEmbed\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onKeyPress\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onKeyPress\"), _class.prototype)), _class);\n  _exports.default = LazyVideo;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, LazyVideo);\n});","define(\"discourse/plugins/discourse-lazy-videos/initializers/lazy-videos\", [\"exports\", \"@ember/template-factory\", \"discourse/lib/plugin-api\", \"discourse/plugins/discourse-lazy-videos/lib/lazy-video-attributes\"], function (_exports, _templateFactory, _pluginApi, _lazyVideoAttributes) {\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/discourse-lazy-videos/lib/lazy-video-attributes\",0,\"ember-cli-htmlbars\"eaimeta@70e063a35619d71f\n  function initLazyEmbed(api) {\n    api.decorateCookedElement((cooked, helper) => {\n      if (cooked.classList.contains(\"d-editor-preview\")) {\n        return;\n      }\n      const lazyContainers = cooked.querySelectorAll(\".lazy-video-container\");\n      lazyContainers.forEach(container => {\n        const siteSettings = api.container.lookup(\"site-settings:main\");\n        const videoAttributes = (0, _lazyVideoAttributes.default)(container);\n        if (siteSettings[`lazy_${videoAttributes.providerName}_enabled`]) {\n          const onLoadedVideo = () => {\n            const postId = cooked.closest(\"article\")?.dataset?.postId;\n            if (postId) {\n              api.preventCloak(parseInt(postId, 10));\n            }\n          };\n          const lazyVideo = helper.renderGlimmer(\"p.lazy-video-wrapper\", (0, _templateFactory.createTemplateFactory)(\n          /*\n            <LazyVideo @videoAttributes={{@data.param}} @onLoadedVideo={{@data.onLoadedVideo}}/>\n          */\n          {\n            \"id\": \"BIb4XPBx\",\n            \"block\": \"[[[8,[39,0],null,[[\\\"@videoAttributes\\\",\\\"@onLoadedVideo\\\"],[[30,1,[\\\"param\\\"]],[30,1,[\\\"onLoadedVideo\\\"]]]],null]],[\\\"@data\\\"],false,[\\\"lazy-video\\\"]]\",\n            \"moduleName\": \"/var/www/discourse/app/assets/javascripts/discourse/discourse/plugins/discourse-lazy-videos/initializers/lazy-videos.js\",\n            \"isStrictMode\": false\n          }), {\n            param: videoAttributes,\n            onLoadedVideo\n          });\n          container.replaceWith(lazyVideo);\n        }\n      });\n    }, {\n      onlyStream: true,\n      id: \"discourse-lazy-videos\"\n    });\n  }\n  var _default = {\n    name: \"discourse-lazy-videos\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(\"1.6.0\", initLazyEmbed);\n    }\n  };\n  _exports.default = _default;\n});","define(\"discourse/plugins/discourse-lazy-videos/lib/lazy-video-attributes\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = getVideoAttributes;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  function getVideoAttributes(cooked) {\n    if (!cooked.classList.contains(\"lazy-video-container\")) {\n      return {};\n    }\n    const url = cooked.querySelector(\"a\")?.getAttribute(\"href\");\n    const img = cooked.querySelector(\"img\");\n    const thumbnail = img?.getAttribute(\"src\");\n    const dominantColor = img?.dataset?.dominantColor;\n    const title = cooked.dataset.videoTitle;\n    const startTime = cooked.dataset.videoStartTime;\n    const providerName = cooked.dataset.providerName;\n    const id = cooked.dataset.videoId;\n    return {\n      url,\n      thumbnail,\n      title,\n      providerName,\n      id,\n      dominantColor,\n      startTime\n    };\n  }\n});"],"mappings":"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"}