From 1c188a4c89deae9ebf9c5d5639b3928866466489 Mon Sep 17 00:00:00 2001 From: flarum-bot Date: Fri, 10 Feb 2023 12:07:54 +0000 Subject: [PATCH] Bundled output for commit 9fd1b12f2b18d4594270b15f82ce63280f9d3747 Includes transpiled JS/TS, and Typescript declaration files (typings). [skip ci] --- js/dist/admin.js | 2 +- js/dist/admin.js.map | 2 +- js/dist/forum.js | 2 +- js/dist/forum.js.map | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/js/dist/admin.js b/js/dist/admin.js index bd3ee49..533d4b0 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -1,2 +1,2 @@ -(()=>{var t={n:e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return t.d(a,{a}),a},d:(e,a)=>{for(var n in a)t.o(a,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:a[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e);const a=flarum.core.compat["admin/app"];var n=t.n(a),r="datlechin-link-preview";n().initializers.add("datlechin/flarum-link-preview",(function(){n().extensionData.for(r+"").registerSetting({setting:r+".convert_media_urls",label:n().translator.trans(r+".admin.settings.convert_media_urls_label"),help:n().translator.trans(r+".admin.settings.convert_media_urls_help"),type:"checkbox"}).registerSetting({setting:r+".use_google_favicons",label:n().translator.trans(r+".admin.settings.use_google_favicons_label"),help:n().translator.trans(r+".admin.settings.use_google_favicons_help"),type:"checkbox"}).registerSetting({setting:r+".blacklist",label:n().translator.trans(r+".admin.settings.blacklist_label"),help:n().translator.trans(r+".admin.settings.blacklist_help"),placeholder:n().translator.trans(r+".admin.settings.blacklist_placeholder"),type:"textarea"}).registerSetting({setting:r+".whitelist",label:n().translator.trans(r+".admin.settings.whitelist_label"),help:n().translator.trans(r+".admin.settings.whitelist_help"),placeholder:n().translator.trans(r+".admin.settings.whitelist_placeholder"),type:"textarea"}).registerSetting({setting:r+".cache_time",label:n().translator.trans(r+".admin.settings.cache_time_label"),help:n().translator.trans(r+".admin.settings.cache_time_help"),type:"number",min:0})}))})(),module.exports=e})(); +(()=>{var t={n:e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return t.d(a,{a}),a},d:(e,a)=>{for(var n in a)t.o(a,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:a[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e);const a=flarum.core.compat["admin/app"];var n=t.n(a),l="datlechin-link-preview";n().initializers.add("datlechin/flarum-link-preview",(function(){n().extensionData.for(l+"").registerSetting({setting:l+".convert_media_urls",label:n().translator.trans(l+".admin.settings.convert_media_urls_label"),help:n().translator.trans(l+".admin.settings.convert_media_urls_help"),type:"checkbox"}).registerSetting({setting:l+".use_google_favicons",label:n().translator.trans(l+".admin.settings.use_google_favicons_label"),help:n().translator.trans(l+".admin.settings.use_google_favicons_help"),type:"checkbox"}).registerSetting({setting:l+".blacklist",label:n().translator.trans(l+".admin.settings.blacklist_label"),help:n().translator.trans(l+".admin.settings.blacklist_help"),placeholder:n().translator.trans(l+".admin.settings.blacklist_placeholder"),type:"textarea"}).registerSetting({setting:l+".whitelist",label:n().translator.trans(l+".admin.settings.whitelist_label"),help:n().translator.trans(l+".admin.settings.whitelist_help"),placeholder:n().translator.trans(l+".admin.settings.whitelist_placeholder"),type:"textarea"}).registerSetting({setting:l+".cache_time",label:n().translator.trans(l+".admin.settings.cache_time_label"),help:n().translator.trans(l+".admin.settings.cache_time_help"),type:"number",min:0}).registerSetting({setting:l+".open_links_in_new_tab",label:n().translator.trans(l+".admin.settings.open_links_in_new_tab_label"),help:n().translator.trans(l+".admin.settings.open_links_in_new_tab_help"),type:"checkbox"})}))})(),module.exports=e})(); //# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/js/dist/admin.js.map b/js/dist/admin.js.map index 677db35..ce6ccdd 100644 --- a/js/dist/admin.js.map +++ b/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"file":"admin.js","mappings":"MACA,IAAIA,EAAsB,CCA1BA,EAAyBC,IACxB,IAAIC,EAASD,GAAUA,EAAOE,WAC7B,IAAOF,EAAiB,QACxB,IAAM,EAEP,OADAD,EAAoBI,EAAEF,EAAQ,CAAEG,IACzBH,CAAM,ECLdF,EAAwB,CAACM,EAASC,KACjC,IAAI,IAAIC,KAAOD,EACXP,EAAoBS,EAAEF,EAAYC,KAASR,EAAoBS,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDR,EAAwB,CAACc,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFf,EAAyBM,IACH,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BC,OAAOC,KAAKC,OAAO,a,aCElDC,EAAa,yBAEnBC,IAAAA,aAAAA,IAAqB,iCAAiC,WACpDA,IAAAA,cAAAA,IACOD,EAAa,IACjBE,gBAAgB,CACfC,QAASH,EAAa,sBACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,4CACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,2CACxCM,KAAM,aAEPJ,gBAAgB,CACfC,QAASH,EAAa,uBACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,6CACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,4CACxCM,KAAM,aAEPJ,gBAAgB,CACfC,QAASH,EAAa,aACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,mCACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,kCACxCO,YAAaN,IAAAA,WAAAA,MAAqBD,EAAa,yCAC/CM,KAAM,aAEPJ,gBAAgB,CACfC,QAASH,EAAa,aACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,mCACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,kCACxCO,YAAaN,IAAAA,WAAAA,MAAqBD,EAAa,yCAC/CM,KAAM,aAEPJ,gBAAgB,CACfC,QAASH,EAAa,cACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,oCACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,mCACxCM,KAAM,SACNE,IAAK,GAEV,G","sources":["webpack://@datlechin/flarum-link-preview/webpack/bootstrap","webpack://@datlechin/flarum-link-preview/webpack/runtime/compat get default export","webpack://@datlechin/flarum-link-preview/webpack/runtime/define property getters","webpack://@datlechin/flarum-link-preview/webpack/runtime/hasOwnProperty shorthand","webpack://@datlechin/flarum-link-preview/webpack/runtime/make namespace object","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['admin/app']\"","webpack://@datlechin/flarum-link-preview/./src/admin/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/app'];","import app from 'flarum/admin/app';\n\nconst EXT_PREFIX = 'datlechin-link-preview';\n\napp.initializers.add('datlechin/flarum-link-preview', () => {\n app.extensionData\n .for(EXT_PREFIX + '')\n .registerSetting({\n setting: EXT_PREFIX + '.convert_media_urls',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.convert_media_urls_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.convert_media_urls_help'),\n type: 'checkbox',\n })\n .registerSetting({\n setting: EXT_PREFIX + '.use_google_favicons',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.use_google_favicons_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.use_google_favicons_help'),\n type: 'checkbox',\n })\n .registerSetting({\n setting: EXT_PREFIX + '.blacklist',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.blacklist_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.blacklist_help'),\n placeholder: app.translator.trans(EXT_PREFIX + '.admin.settings.blacklist_placeholder'),\n type: 'textarea',\n })\n .registerSetting({\n setting: EXT_PREFIX + '.whitelist',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.whitelist_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.whitelist_help'),\n placeholder: app.translator.trans(EXT_PREFIX + '.admin.settings.whitelist_placeholder'),\n type: 'textarea',\n })\n .registerSetting({\n setting: EXT_PREFIX + '.cache_time',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.cache_time_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.cache_time_help'),\n type: 'number',\n min: 0,\n });\n});\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","EXT_PREFIX","app","registerSetting","setting","label","help","type","placeholder","min"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"admin.js","mappings":"MACA,IAAIA,EAAsB,CCA1BA,EAAyBC,IACxB,IAAIC,EAASD,GAAUA,EAAOE,WAC7B,IAAOF,EAAiB,QACxB,IAAM,EAEP,OADAD,EAAoBI,EAAEF,EAAQ,CAAEG,IACzBH,CAAM,ECLdF,EAAwB,CAACM,EAASC,KACjC,IAAI,IAAIC,KAAOD,EACXP,EAAoBS,EAAEF,EAAYC,KAASR,EAAoBS,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDR,EAAwB,CAACc,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFf,EAAyBM,IACH,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BC,OAAOC,KAAKC,OAAO,a,aCElDC,EAAa,yBAEnBC,IAAAA,aAAAA,IAAqB,iCAAiC,WACpDA,IAAAA,cAAAA,IACOD,EAAa,IACjBE,gBAAgB,CACfC,QAASH,EAAa,sBACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,4CACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,2CACxCM,KAAM,aAEPJ,gBAAgB,CACfC,QAASH,EAAa,uBACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,6CACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,4CACxCM,KAAM,aAEPJ,gBAAgB,CACfC,QAASH,EAAa,aACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,mCACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,kCACxCO,YAAaN,IAAAA,WAAAA,MAAqBD,EAAa,yCAC/CM,KAAM,aAEPJ,gBAAgB,CACfC,QAASH,EAAa,aACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,mCACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,kCACxCO,YAAaN,IAAAA,WAAAA,MAAqBD,EAAa,yCAC/CM,KAAM,aAEPJ,gBAAgB,CACfC,QAASH,EAAa,cACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,oCACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,mCACxCM,KAAM,SACNE,IAAK,IAENN,gBAAgB,CACfC,QAASH,EAAa,yBACtBI,MAAOH,IAAAA,WAAAA,MAAqBD,EAAa,+CACzCK,KAAMJ,IAAAA,WAAAA,MAAqBD,EAAa,8CACxCM,KAAM,YAEX,G","sources":["webpack://@datlechin/flarum-link-preview/webpack/bootstrap","webpack://@datlechin/flarum-link-preview/webpack/runtime/compat get default export","webpack://@datlechin/flarum-link-preview/webpack/runtime/define property getters","webpack://@datlechin/flarum-link-preview/webpack/runtime/hasOwnProperty shorthand","webpack://@datlechin/flarum-link-preview/webpack/runtime/make namespace object","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['admin/app']\"","webpack://@datlechin/flarum-link-preview/./src/admin/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/app'];","import app from 'flarum/admin/app';\n\nconst EXT_PREFIX = 'datlechin-link-preview';\n\napp.initializers.add('datlechin/flarum-link-preview', () => {\n app.extensionData\n .for(EXT_PREFIX + '')\n .registerSetting({\n setting: EXT_PREFIX + '.convert_media_urls',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.convert_media_urls_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.convert_media_urls_help'),\n type: 'checkbox',\n })\n .registerSetting({\n setting: EXT_PREFIX + '.use_google_favicons',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.use_google_favicons_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.use_google_favicons_help'),\n type: 'checkbox',\n })\n .registerSetting({\n setting: EXT_PREFIX + '.blacklist',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.blacklist_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.blacklist_help'),\n placeholder: app.translator.trans(EXT_PREFIX + '.admin.settings.blacklist_placeholder'),\n type: 'textarea',\n })\n .registerSetting({\n setting: EXT_PREFIX + '.whitelist',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.whitelist_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.whitelist_help'),\n placeholder: app.translator.trans(EXT_PREFIX + '.admin.settings.whitelist_placeholder'),\n type: 'textarea',\n })\n .registerSetting({\n setting: EXT_PREFIX + '.cache_time',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.cache_time_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.cache_time_help'),\n type: 'number',\n min: 0,\n })\n .registerSetting({\n setting: EXT_PREFIX + '.open_links_in_new_tab',\n label: app.translator.trans(EXT_PREFIX + '.admin.settings.open_links_in_new_tab_label'),\n help: app.translator.trans(EXT_PREFIX + '.admin.settings.open_links_in_new_tab_help'),\n type: 'checkbox',\n });\n});\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","EXT_PREFIX","app","registerSetting","setting","label","help","type","placeholder","min"],"sourceRoot":""} \ No newline at end of file diff --git a/js/dist/forum.js b/js/dist/forum.js index ac1fa0d..3f44e9b 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var i in n)t.o(n,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:n[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e);const n=flarum.core.compat["forum/app"];var i=t.n(n);const r=flarum.core.compat["common/extend"],o=flarum.core.compat["forum/components/CommentPost"];var a=t.n(o);function l(t,e){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},l(t,e)}const s=flarum.core.compat["common/Component"];var c=t.n(s);const u=flarum.core.compat["common/helpers/icon"];var p=t.n(u);const d=flarum.core.compat["common/components/Link"];var f=t.n(d);const v=flarum.core.compat["common/utils/classList"];var h=t.n(v);const g=flarum.core.compat["common/components/LoadingIndicator"];var k=t.n(g),b=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,l(e,n);var r=i.prototype;return r.oninit=function(e){t.prototype.oninit.call(this,e),this.loading=!0,this.link=e.attrs.link,this.link.classList.add("LinkPreview-captured"),this.linkAttributes=Object.assign.apply(Object,[{}].concat(Array.from(this.link.attributes,(function(t){var e,n=t.name,i=t.value;return(e={})[n]=i,e})))),this.linkClasses=this.linkAttributes.class||"",delete this.linkAttributes.class,this.data=null,this.useGoogleFavicons=e.attrs.useGoogleFavicons,this.fetchData()},r.view=function(){var t,e,n,i,r,o,a={loading:this.loading};return m("div",{className:h()("LinkPreview",a)},this.loading||this.getImage()?m("div",{className:"LinkPreview-image"},this.loading?m(k(),{display:"unset",containerClassName:h()("LinkPreview-loading",this.loading&&"active"),size:"small"}):m("img",{src:this.getImage(),"data-link-preview":!0})):null,m("div",{className:"LinkPreview-main"},m("div",{className:"LinkPreview-title"},this.getLink(null!=(t=null==(e=this.data)?void 0:e.title)?t:null==(n=this.data)?void 0:n.error)),m("div",{className:"LinkPreview-description"},this.loading?"":null!=(i=null==(r=this.data)?void 0:r.description)?i:""),m("div",{className:"LinkPreview-domain"},this.useGoogleFavicons?m("img",{src:this.getFavicon(),"data-link-preview":!0}):p()("fas fa-external-link-alt"),this.getLink(null==(o=this.data)?void 0:o.site_name))))},r.oncreate=function(t){this.link.parentNode.insertBefore(t.dom,this.link)},r.getLink=function(t){return m(f(),Object.assign({},this.linkAttributes,{className:h()("LinkPreview-link",this.linkClasses)}),this.loading?this.getDomain():null!=t?t:this.getDomain())},r.getHref=function(){return this.link.href},r.getDomain=function(){return this.getHref().split("/")[2]},r.getImage=function(){var t,e;return null!=(t=null==(e=this.data)?void 0:e.image)?t:this.getFavicon()},r.getFavicon=function(){return this.useGoogleFavicons?"https://www.google.com/s2/favicons?sz=64&domain_url="+this.getDomain():null},r.fetchData=function(){var t=this;app.request({url:app.forum.attribute("apiUrl")+"/datlechin-link-preview?url="+encodeURIComponent(this.getHref()),method:"GET"}).then((function(e){t.setData(e),t.loading=!1}))},r.setData=function(t){this.data=t,m.redraw()},i}(c());function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(n=i()).done;){var r=n.value.replace(/[-\[\]\/{}()*+?.\\^$|]/g,"\\$&").replace("\\*",".*").replace("\\?",".");if(t.match(new RegExp(r,"i")))return!0}return!1},o=n("datlechin-link-preview.blacklist"),a=n("datlechin-link-preview.whitelist"),l=null!=(t=i().forum.attribute("datlechin-link-preview.convertMediaURLs"))&&t,s=null!=(e=i().forum.attribute("datlechin-link-preview.useGoogleFavicons"))&&e,c=[".PostMention",".UserMention",".LinkPreview-link",".LinkPreview-captured"].map((function(t){return":not("+t+")"})).join("");this.element.querySelectorAll(".Post-body a[rel]"+c).forEach((function(t){var e=t.href.replace(/^https?:\/\/(.+?)\/?$/i,"$1");a.length&&!r(e,a)||o.length&&r(e,o)||t.href.replace(/\/$/,"")!==t.textContent.replace(/\/$/,"")||l&&e.match(/\.(jpe?g|png|gif|svg|webp|mp3|mp4|m4a|wav)$/)||m.mount(t,{view:function(){return m(b,{link:t,useGoogleFavicons:s})}})}))}))}))})(),module.exports=e})(); +(()=>{var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var i in n)t.o(n,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:n[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e);const n=flarum.core.compat["forum/app"];var i=t.n(n);const r=flarum.core.compat["common/extend"],o=flarum.core.compat["forum/components/CommentPost"];var a=t.n(o);function l(t,e){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},l(t,e)}const s=flarum.core.compat["common/Component"];var c=t.n(s);const u=flarum.core.compat["common/helpers/icon"];var p=t.n(u);flarum.core.compat["common/components/Link"];const d=flarum.core.compat["common/utils/classList"];var f=t.n(d);const h=flarum.core.compat["common/components/LoadingIndicator"];var v=t.n(h),g=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,l(e,n);var r=i.prototype;return r.oninit=function(e){t.prototype.oninit.call(this,e);var n=e.attrs;this.loading=!0,this.link=n.link,this.link.classList.add("LinkPreview-captured"),this.linkAttributes=Object.assign.apply(Object,[{}].concat(Array.from(this.link.attributes,(function(t){var e,n=t.name,i=t.value;return(e={})[n]=i,e})))),this.linkClasses=this.linkAttributes.class||"",this.linkAttributes.target=n.openLinksInNewTab?"_blank":"_self",delete this.linkAttributes.class,this.data=null,this.useGoogleFavicons=n.useGoogleFavicons,this.fetchData()},r.view=function(){var t,e,n,i,r,o,a={loading:this.loading};return m("div",{className:f()("LinkPreview",a)},this.loading||this.getImage()?m("div",{className:"LinkPreview-image"},this.loading?m(v(),{display:"unset",containerClassName:f()("LinkPreview-loading",this.loading&&"active"),size:"small"}):m("img",{src:this.getImage(),"data-link-preview":!0})):null,m("div",{className:"LinkPreview-main"},m("div",{className:"LinkPreview-title"},this.getLink(null!=(t=null==(e=this.data)?void 0:e.title)?t:null==(n=this.data)?void 0:n.error)),m("div",{className:"LinkPreview-description"},this.loading?"":null!=(i=null==(r=this.data)?void 0:r.description)?i:""),m("div",{className:"LinkPreview-domain"},this.useGoogleFavicons?m("img",{src:this.getFavicon(),"data-link-preview":!0}):p()("fas fa-external-link-alt"),this.getLink(null==(o=this.data)?void 0:o.site_name))))},r.oncreate=function(t){this.link.parentNode.insertBefore(t.dom,this.link)},r.getLink=function(t){return m("a",Object.assign({},this.linkAttributes,{className:f()("LinkPreview-link",this.linkClasses)}),this.loading?this.getDomain():null!=t?t:this.getDomain())},r.getHref=function(){return this.link.href},r.getDomain=function(){return this.getHref().split("/")[2]},r.getImage=function(){var t,e;return null!=(t=null==(e=this.data)?void 0:e.image)?t:this.getFavicon()},r.getFavicon=function(){return this.useGoogleFavicons?"https://www.google.com/s2/favicons?sz=64&domain_url="+this.getDomain():null},r.fetchData=function(){var t=this;app.request({url:app.forum.attribute("apiUrl")+"/datlechin-link-preview?url="+encodeURIComponent(this.getHref()),method:"GET"}).then((function(e){t.setData(e),t.loading=!1}))},r.setData=function(t){this.data=t,m.redraw()},i}(c());function k(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(n=i()).done;){var r=n.value.replace(/[-\[\]\/{}()*+?.\\^$|]/g,"\\$&").replace("\\*",".*").replace("\\?",".");if(t.match(new RegExp(r,"i")))return!0}return!1},a=r("datlechin-link-preview.blacklist"),l=r("datlechin-link-preview.whitelist"),s=null!=(t=i().forum.attribute("datlechin-link-preview.convertMediaURLs"))&&t,c=null!=(e=i().forum.attribute("datlechin-link-preview.useGoogleFavicons"))&&e,u=null!=(n=i().forum.attribute("datlechin-link-preview.openLinksInNewTab"))&&n,p=[".PostMention",".UserMention",".LinkPreview-link",".LinkPreview-captured"].map((function(t){return":not("+t+")"})).join("");this.element.querySelectorAll(".Post-body a[rel]"+p).forEach((function(t){var e=t.href.replace(/^https?:\/\/(.+?)\/?$/i,"$1");l.length&&!o(e,l)||a.length&&o(e,a)||t.href.replace(/\/$/,"")!==t.textContent.replace(/\/$/,"")||s&&e.match(/\.(jpe?g|png|gif|svg|webp|mp3|mp4|m4a|wav)$/)||m.mount(t,{view:function(){return m(g,{link:t,useGoogleFavicons:c,openLinksInNewTab:u})}})}))}))}))})(),module.exports=e})(); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/js/dist/forum.js.map b/js/dist/forum.js.map index 0e1559b..8ee107b 100644 --- a/js/dist/forum.js.map +++ b/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@datlechin/flarum-link-preview/webpack/bootstrap","webpack://@datlechin/flarum-link-preview/webpack/runtime/compat get default export","webpack://@datlechin/flarum-link-preview/webpack/runtime/define property getters","webpack://@datlechin/flarum-link-preview/webpack/runtime/hasOwnProperty shorthand","webpack://@datlechin/flarum-link-preview/webpack/runtime/make namespace object","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['forum/app']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/extend']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@datlechin/flarum-link-preview/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/Component']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/components/Link']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@datlechin/flarum-link-preview/./src/forum/components/LinkPreview.js","webpack://@datlechin/flarum-link-preview/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@datlechin/flarum-link-preview/./src/forum/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","import Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\nimport Link from 'flarum/common/components/Link';\nimport classList from 'flarum/common/utils/classList';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nexport default class LinkPreview extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.loading = true;\n this.link = vnode.attrs.link;\n this.link.classList.add('LinkPreview-captured');\n this.linkAttributes = Object.assign({}, ...Array.from(this.link.attributes, ({ name, value }) => ({ [name]: value })));\n this.linkClasses = this.linkAttributes.class || '';\n delete this.linkAttributes.class;\n this.data = null;\n this.useGoogleFavicons = vnode.attrs.useGoogleFavicons;\n\n this.fetchData();\n }\n\n view() {\n const classes = {\n loading: this.loading,\n };\n\n return (\n
\n {this.loading || this.getImage() ? (\n
\n {this.loading ? (\n \n ) : (\n \n )}\n
\n ) : null}\n
\n
{this.getLink(this.data?.title ?? this.data?.error)}
\n
{this.loading ? '' : this.data?.description ?? ''}
\n
\n {this.useGoogleFavicons ? : icon('fas fa-external-link-alt')}\n {this.getLink(this.data?.site_name)}\n
\n
\n
\n );\n }\n\n oncreate(vnode) {\n this.link.parentNode.insertBefore(vnode.dom, this.link);\n }\n\n getLink(text) {\n return (\n \n {this.loading ? this.getDomain() : text ?? this.getDomain()}\n \n );\n }\n\n getHref() {\n return this.link.href;\n }\n\n getDomain() {\n return this.getHref().split('/')[2];\n }\n\n getImage() {\n return this.data?.image ?? this.getFavicon();\n }\n\n getFavicon() {\n return this.useGoogleFavicons ? 'https://www.google.com/s2/favicons?sz=64&domain_url=' + this.getDomain() : null;\n }\n\n fetchData() {\n app\n .request({\n url: app.forum.attribute('apiUrl') + '/datlechin-link-preview?url=' + encodeURIComponent(this.getHref()),\n method: 'GET',\n })\n .then((data) => {\n this.setData(data);\n this.loading = false;\n });\n }\n\n setData(data) {\n this.data = data;\n m.redraw();\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport LinkPreview from './components/LinkPreview';\n\napp.initializers.add('datlechin/flarum-link-preview', () => {\n extend(CommentPost.prototype, 'refreshContent', function () {\n const getMultiDimensionalSetting = (key) => {\n const setting = app.forum.attribute(key);\n return setting ? setting.split(/[,\\n]/).map((item) => item.trim()) : [];\n };\n\n const inList = (needle, haystack) => {\n if (0 === haystack.length) {\n return false;\n }\n if (haystack.includes(needle)) {\n return true;\n }\n for (const item of haystack) {\n const quoted = item\n .replace(/[-\\[\\]\\/{}()*+?.\\\\^$|]/g, '\\\\$&')\n .replace('\\\\*', '.*')\n .replace('\\\\?', '.');\n if (needle.match(new RegExp(quoted, 'i'))) {\n return true;\n }\n }\n return false;\n };\n\n const blacklistArray = getMultiDimensionalSetting('datlechin-link-preview.blacklist');\n const whitelistArray = getMultiDimensionalSetting('datlechin-link-preview.whitelist');\n const convertMediaUrls = app.forum.attribute('datlechin-link-preview.convertMediaURLs') ?? false;\n const useGoogleFavicons = app.forum.attribute('datlechin-link-preview.useGoogleFavicons') ?? false;\n const linkSelectorExcludes = ['.PostMention', '.UserMention', '.LinkPreview-link', '.LinkPreview-captured'].map((cls) => `:not(${cls})`).join('');\n\n this.element.querySelectorAll(`.Post-body a[rel]${linkSelectorExcludes}`).forEach((link) => {\n const normalizedUrl = link.href.replace(/^https?:\\/\\/(.+?)\\/?$/i, '$1');\n\n if (\n (whitelistArray.length && !inList(normalizedUrl, whitelistArray)) ||\n (blacklistArray.length && inList(normalizedUrl, blacklistArray)) ||\n link.href.replace(/\\/$/, '') !== link.textContent.replace(/\\/$/, '')\n ) {\n return;\n }\n\n if (convertMediaUrls && normalizedUrl.match(/\\.(jpe?g|png|gif|svg|webp|mp3|mp4|m4a|wav)$/)) {\n return;\n }\n\n m.mount(link, {\n view: function () {\n return m(LinkPreview, { link, useGoogleFavicons: useGoogleFavicons });\n },\n });\n });\n });\n});\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","LinkPreview","subClass","superClass","create","constructor","oninit","vnode","this","loading","link","attrs","classList","add","linkAttributes","assign","Array","from","attributes","name","linkClasses","data","useGoogleFavicons","fetchData","view","classes","className","getImage","display","containerClassName","size","src","getLink","title","error","description","getFavicon","icon","site_name","oncreate","parentNode","insertBefore","dom","text","getDomain","getHref","href","split","image","app","request","url","forum","attribute","encodeURIComponent","method","then","setData","m","redraw","Component","extend","CommentPost","getMultiDimensionalSetting","setting","map","item","trim","inList","needle","haystack","length","includes","quoted","replace","match","RegExp","blacklistArray","whitelistArray","convertMediaUrls","linkSelectorExcludes","cls","join","element","querySelectorAll","forEach","normalizedUrl","textContent","mount"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@datlechin/flarum-link-preview/webpack/bootstrap","webpack://@datlechin/flarum-link-preview/webpack/runtime/compat get default export","webpack://@datlechin/flarum-link-preview/webpack/runtime/define property getters","webpack://@datlechin/flarum-link-preview/webpack/runtime/hasOwnProperty shorthand","webpack://@datlechin/flarum-link-preview/webpack/runtime/make namespace object","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['forum/app']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/extend']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@datlechin/flarum-link-preview/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/Component']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/components/Link']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@datlechin/flarum-link-preview/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@datlechin/flarum-link-preview/./src/forum/components/LinkPreview.js","webpack://@datlechin/flarum-link-preview/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@datlechin/flarum-link-preview/./src/forum/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","import Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\nimport Link from 'flarum/common/components/Link';\nimport classList from 'flarum/common/utils/classList';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nexport default class LinkPreview extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n const attrs = vnode.attrs;\n\n this.loading = true;\n this.link = attrs.link;\n this.link.classList.add('LinkPreview-captured');\n this.linkAttributes = Object.assign({}, ...Array.from(this.link.attributes, ({ name, value }) => ({ [name]: value })));\n this.linkClasses = this.linkAttributes.class || '';\n this.linkAttributes.target = attrs.openLinksInNewTab ? '_blank' : '_self';\n delete this.linkAttributes.class;\n this.data = null;\n this.useGoogleFavicons = attrs.useGoogleFavicons;\n\n this.fetchData();\n }\n\n view() {\n const classes = {\n loading: this.loading,\n };\n\n return (\n
\n {this.loading || this.getImage() ? (\n
\n {this.loading ? (\n \n ) : (\n \n )}\n
\n ) : null}\n
\n
{this.getLink(this.data?.title ?? this.data?.error)}
\n
{this.loading ? '' : this.data?.description ?? ''}
\n
\n {this.useGoogleFavicons ? : icon('fas fa-external-link-alt')}\n {this.getLink(this.data?.site_name)}\n
\n
\n
\n );\n }\n\n oncreate(vnode) {\n this.link.parentNode.insertBefore(vnode.dom, this.link);\n }\n\n getLink(text) {\n return (\n \n {this.loading ? this.getDomain() : text ?? this.getDomain()}\n \n );\n }\n\n getHref() {\n return this.link.href;\n }\n\n getDomain() {\n return this.getHref().split('/')[2];\n }\n\n getImage() {\n return this.data?.image ?? this.getFavicon();\n }\n\n getFavicon() {\n return this.useGoogleFavicons ? 'https://www.google.com/s2/favicons?sz=64&domain_url=' + this.getDomain() : null;\n }\n\n fetchData() {\n app\n .request({\n url: app.forum.attribute('apiUrl') + '/datlechin-link-preview?url=' + encodeURIComponent(this.getHref()),\n method: 'GET',\n })\n .then((data) => {\n this.setData(data);\n this.loading = false;\n });\n }\n\n setData(data) {\n this.data = data;\n m.redraw();\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport LinkPreview from './components/LinkPreview';\n\napp.initializers.add('datlechin/flarum-link-preview', () => {\n extend(CommentPost.prototype, 'refreshContent', function () {\n const getMultiDimensionalSetting = (key) => {\n const setting = app.forum.attribute(key);\n return setting ? setting.split(/[,\\n]/).map((item) => item.trim()) : [];\n };\n\n const inList = (needle, haystack) => {\n if (0 === haystack.length) {\n return false;\n }\n if (haystack.includes(needle)) {\n return true;\n }\n for (const item of haystack) {\n const quoted = item\n .replace(/[-\\[\\]\\/{}()*+?.\\\\^$|]/g, '\\\\$&')\n .replace('\\\\*', '.*')\n .replace('\\\\?', '.');\n if (needle.match(new RegExp(quoted, 'i'))) {\n return true;\n }\n }\n return false;\n };\n\n const blacklistArray = getMultiDimensionalSetting('datlechin-link-preview.blacklist');\n const whitelistArray = getMultiDimensionalSetting('datlechin-link-preview.whitelist');\n const convertMediaUrls = app.forum.attribute('datlechin-link-preview.convertMediaURLs') ?? false;\n const useGoogleFavicons = app.forum.attribute('datlechin-link-preview.useGoogleFavicons') ?? false;\n const openLinksInNewTab = app.forum.attribute('datlechin-link-preview.openLinksInNewTab') ?? false;\n const linkSelectorExcludes = ['.PostMention', '.UserMention', '.LinkPreview-link', '.LinkPreview-captured'].map((cls) => `:not(${cls})`).join('');\n\n this.element.querySelectorAll(`.Post-body a[rel]${linkSelectorExcludes}`).forEach((link) => {\n const normalizedUrl = link.href.replace(/^https?:\\/\\/(.+?)\\/?$/i, '$1');\n\n if (\n (whitelistArray.length && !inList(normalizedUrl, whitelistArray)) ||\n (blacklistArray.length && inList(normalizedUrl, blacklistArray)) ||\n link.href.replace(/\\/$/, '') !== link.textContent.replace(/\\/$/, '')\n ) {\n return;\n }\n\n if (convertMediaUrls && normalizedUrl.match(/\\.(jpe?g|png|gif|svg|webp|mp3|mp4|m4a|wav)$/)) {\n return;\n }\n\n m.mount(link, {\n view: function () {\n return m(LinkPreview, {\n link,\n useGoogleFavicons: useGoogleFavicons,\n openLinksInNewTab: openLinksInNewTab,\n });\n },\n });\n });\n });\n});\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","LinkPreview","subClass","superClass","create","constructor","oninit","vnode","attrs","this","loading","link","classList","add","linkAttributes","assign","Array","from","attributes","name","linkClasses","target","openLinksInNewTab","data","useGoogleFavicons","fetchData","view","classes","className","getImage","display","containerClassName","size","src","getLink","title","error","description","getFavicon","icon","site_name","oncreate","parentNode","insertBefore","dom","text","getDomain","getHref","href","split","image","app","request","url","forum","attribute","encodeURIComponent","method","then","setData","m","redraw","Component","extend","CommentPost","getMultiDimensionalSetting","setting","map","item","trim","inList","needle","haystack","length","includes","quoted","replace","match","RegExp","blacklistArray","whitelistArray","convertMediaUrls","linkSelectorExcludes","cls","join","element","querySelectorAll","forEach","normalizedUrl","textContent","mount"],"sourceRoot":""} \ No newline at end of file