trix_embed 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -4
- data/app/assets/builds/trix-embed.js +2 -38
- data/app/assets/builds/trix-embed.metafile.json +1 -1
- data/app/javascript/controller.js +25 -12
- data/app/javascript/forms.js +1 -1
- data/app/javascript/guard.js +1 -1
- data/app/javascript/metadata.js +1 -1
- data/app/javascript/renderer.js +8 -10
- data/lib/trix_embed/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 58e4027f5d92ef6c1bdc76a747cbc2e009cde8c2c3ae216f71ea0c923833ac28
|
|
4
|
+
data.tar.gz: ed7cf7cf36f578b86b6932074ad5eb5c6a26f05fd7e2430aabd5b4e6addad8ff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 577cd6a7524581232bb8c5220fe7e9af303d4bd1e8d8911a5dc87e50d4afc8365bb258c0d21720dfec798fd3ca64141e86c38cd120a23865bd3ceca14b2d090d
|
|
7
|
+
data.tar.gz: f893d6260bfaf39c99bd08408f939df248272ee53ec1076cd33dde744be882eaec533cadb216b4a13dcbf9730fff2f10ef6a1a6a01bf5a67895fe879077a6c89
|
data/README.md
CHANGED
|
@@ -153,13 +153,12 @@ bin/dev
|
|
|
153
153
|
## Releasing
|
|
154
154
|
|
|
155
155
|
1. Run `yarn` and `bundle` to pick up the latest
|
|
156
|
-
1. Bump version
|
|
156
|
+
1. Bump version number at `lib/trix_embed/version.rb`. Pre-release versions use `.preN`
|
|
157
|
+
1. Bump version number at `package.json` _(make sure it matches)_. Pre-release versions use `-preN`
|
|
157
158
|
1. Run `yarn build` - *builds both the Ruby gem and the NPM package*
|
|
158
159
|
1. Commit and push changes to GitHub
|
|
159
160
|
1. Run `rake release`
|
|
160
|
-
1. Run `yarn publish --new-version X.X.X --no-git-tag-version --access public`
|
|
161
|
-
1. Yarn will prompt you for the new version. Pre-release versions use `-preN`
|
|
162
|
-
1. Commit and push changes to GitHub
|
|
161
|
+
1. Run `yarn publish --new-version X.X.X --no-git-tag-version --access public` _(use same version number)_
|
|
163
162
|
1. Create a new release on GitHub ([here](https://github.com/hopsoft/trix_embed/releases)) and generate the changelog for the stable release for it
|
|
164
163
|
|
|
165
164
|
## License
|
|
@@ -1,41 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
trix-embed 0.0.
|
|
2
|
+
trix-embed 0.0.5 (MIT)
|
|
3
3
|
Copyright © 2023 Nate Hopkins (hopsoft) <natehop@gmail.com>
|
|
4
4
|
*/
|
|
5
|
-
var ge=Object.defineProperty,be=Object.defineProperties;var ye=Object.getOwnPropertyDescriptors;var B=Object.getOwnPropertySymbols;var xe=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var N=(r,e,t)=>e in r?ge(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,E=(r,e)=>{for(var t in e||(e={}))xe.call(e,t)&&N(r,t,e[t]);if(B)for(var t of B(e))we.call(e,t)&&N(r,t,e[t]);return r},L=(r,e)=>be(r,ye(e));var J=(r,e,t)=>(N(r,typeof e!="symbol"?e+"":e,t),t);var _={version:"0.0.3"};var R={name:"AES-GCM",length:256},ve=!0,Ee=["encrypt","decrypt"];async function Le(){let e=["encrypt","decrypt"];return await crypto.subtle.generateKey(R,!0,e)}async function Te(r){let e=await crypto.subtle.exportKey("jwk",r);return JSON.stringify(e)}async function G(r){let e=JSON.parse(r);return await crypto.subtle.importKey("jwk",e,R,ve,Ee)}async function Se(r,e){let t=new TextEncoder().encode(String(r)),n=crypto.getRandomValues(new Uint8Array(12)),i=await crypto.subtle.encrypt(L(E({},R),{iv:n}),e,t),s={ciphertext:btoa(String.fromCharCode(...new Uint8Array(i))),iv:btoa(String.fromCharCode(...n))};return btoa(JSON.stringify(s))}async function Ae(r,e){let t=JSON.parse(atob(r)),n=new Uint8Array(atob(t.ciphertext).split("").map(a=>a.charCodeAt(0))),i=new Uint8Array(atob(t.iv).split("").map(a=>a.charCodeAt(0))),s=await crypto.subtle.decrypt(L(E({},R),{iv:i}),e,n);return new TextDecoder().decode(s)}async function T(){let r=await Le(),e=await Te(r);return btoa(e)}async function x(r,e=[]){let t=await G(atob(r));return Promise.all(e.map(n=>Se(n,t)))}async function X(r,e=[]){let t=await G(atob(r));return Promise.all(e.map(n=>Ae(n,t)))}async function Q(r=[]){let e=await T(),t=await x(e,r);return console.log(`data-trix-embed-key-value="${e}"`),console.log(`data-trix-embed-hosts-value='${JSON.stringify(t)}'`),{key:e,encryptedValues:t}}var Y=r=>Math.floor(Math.random()*r),w=(r,e=null)=>{let t=[...r];e==="all"&&(e=t.length);let n=t.length,i=[],s=new Set;for(;i.length<e;){let a=Y(n);for(;s.has(a);)a=Y(n);s.add(a),i.push(t[a])}return typeof e=="number"?i:i[0]};function b(r,e=t=>{}){try{let t=new URL(String(r).trim());return t&&e&&e(t),t}catch(t){console.info(`Failed to parse URL! value='${r}']`)}return null}function Z(r,e=t=>{}){var n;let t=(n=b(r))==null?void 0:n.host;return t&&e&&e(t),t}function O(r){return document.createTreeWalker(r,NodeFilter.SHOW_TEXT,e=>e.nodeValue.match(/http/gi)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP)}function ke(r){let e=new Set,t=O(r),n;for(;n=t.nextNode();)n.nodeValue.split(/\s+/).filter(i=>i.startsWith("http")).forEach(i=>b(i,s=>e.add(s.href)));return[...e]}function U(r){if(r.src){let e=r.src.trim();if(e.length)return e}if(r.href){let e=r.href.trim();if(e.length)return e}return""}function Re(r){let e=new Set;return r.src&&b(r.src,n=>e.add(n.href)),r.href&&b(r.href,n=>e.add(n.href)),r.querySelectorAll("[src], [href]").forEach(n=>b(U(n),i=>e.add(i.href))),[...e]}function C(r,e=[],t=[]){let n=Z(r);return t.includes("*")||t.find(i=>n.endsWith(i))?!1:!!(e.find(i=>n.endsWith(i))||e.includes("*")&&(n||r.startsWith("data:")||r.startsWith("news:")||r.startsWith("tel:")))}function ee(r){return[...r.reduce((e,t)=>(Z(t,n=>e.add(n)),e),new Set)]}function te(r){let e=Re(r),t=ke(r);return[...new Set([...e,...t])]}var re={attachment:"trix-embed/attachment"};var ie={avif:"image/avif",bmp:"image/bmp",gif:"image/gif",heic:"image/heic",heif:"image/heif",ico:"image/x-icon",jp2:"image/jp2",jpeg:"image/jpeg",jpg:"image/jpeg",jxr:"image/vnd.ms-photo",png:"image/png",svg:"image/svg+xml",tif:"image/tiff",tiff:"image/tiff",webp:"image/webp"};var Ue=ie,Me=["animate","animateMotion","animateTransform","area","audio","base","embed","feDisplacementMap","feImage","feTile","filter","font-face-uri","iframe","image","link","object","script","source","track","use","video"],Ne=["audio","embed","iframe","img","input","script","source","track","video","frame","frameset","object","picture","use"],ne="trix-editor",se="action-text-attachment",ae=Me.concat(Ne);function oe(r){return!!Object.values(ie).find(e=>e===P(r))}function P(r){let e;if(e=b(r),!e)return null;let t=e.pathname.lastIndexOf(".");if(!t)return null;let n=e.pathname.substring(t+1);return Ue[n]}var j,H,ce=new Set,Oe=`${ne}[data-controller~="trix-embed"]`;function de(r){var n;let{method:e,action:t}=r||{};return t=((n=b(t))==null?void 0:n.pathname)||t,`${e}:${t}`.trim().toLowerCase()}function me(r,e){if(!r)return;let t=de(r);ce.add({key:t,form:r,input:e})}function Ce(r){var l;let e=de(r),t=[...ce].filter(o=>o.key===e);if(!t.length)return!0;if(r.trixEmbedPasting)return!1;if(r.querySelector(Oe))return!0;let n=new FormData(r),i=((l=b(r.action))==null?void 0:l.searchParams)||new URLSearchParams;return!t.map(o=>o.input).map(o=>!(o.name&&(n.has(o.name)||i.has(o.name))||o.id&&(n.has(o.id)||i.has(o.id)))).includes(!1)}function le(r){Ce(r.target)||r.preventDefault()}function F(r){r.removeEventListener("submit",le,!0),r.addEventListener("submit",le,!0)}function Pe(){if(j)return;let r=Document.prototype.createElement;j={value:function(){let e=r.apply(this,arguments);try{String(arguments[0]).toUpperCase()==="FORM"&&F(e)}catch(t){}return e},configurable:!1},Object.defineProperty(Document.prototype,"createElement",j)}function D(r=0){if(!document.body&&r<10)return setTimeout(()=>D(r+1),50);H||(H=new MutationObserver(e=>e.forEach(t=>t.addedNodes.forEach(n=>{n instanceof HTMLFormElement&&F(n)}))),H.observe(document.body,{childList:!0,subtree:!0}))}addEventListener("load",()=>D());Pe();D();document.querySelectorAll("form").forEach(r=>F(r));var S=class{constructor(e){this.controller=e}preventAttachments(){var e,t,n,i,s;(e=this.editor)==null||e.removeAttribute("data-direct-upload-url"),(t=this.editor)==null||t.removeAttribute("data-blob-url-template"),(n=this.editor)==null||n.addEventListener("trix-file-accept",a=>a.preventDefault(),!0),(s=(i=this.toolbar)==null?void 0:i.querySelector('[data-trix-button-group="file-tools"]'))==null||s.remove()}async preventLinks(){var n,i;let e=await this.controller.allowedLinkHosts;!(await this.controller.blockedLinkHosts).length&&e.includes("*")||(i=(n=this.toolbar)==null?void 0:n.querySelector('[data-trix-action="link"]'))==null||i.remove()}protect(e=0){if(!this.toolbar&&e<10)return setTimeout(()=>this.protect(e+1),25);this.preventAttachments(),this.preventLinks(),this.form&&me(this.form,this.input)}get editor(){return this.controller.element}get toolbar(){return this.controller.toolbarElement}get form(){return this.controller.formElement}get input(){return this.controller.inputElement}};var A=class{constructor(e){var n,i,s;let t=[location.pathname,(i=b((n=e.formElement)==null?void 0:n.action))==null?void 0:i.pathname,(s=e.element.closest("[id]"))==null?void 0:s.id];this.controller=e,this.identifier=t.filter(a=>a&&a.length).join("/").replace(/\/{2,}/g,"/"),this.base=this.obfuscate(this.identifier)}split(e){let t=Math.ceil(e.length/2);return[e.slice(0,t),e.slice(t)]}obfuscate(e){var i;let t=[...e].map(s=>s.charCodeAt(0));return[(i=this.split(t)[1])==null?void 0:i.reverse(),t[0]].flat().join("")}read(e){return sessionStorage.getItem(this.generateStorageKey(e))}write(e,t){return sessionStorage.setItem(this.generateStorageKey(e),t)}remove(e){return sessionStorage.removeItem(this.generateStorageKey(e))}generateStorageKey(e){let t=[...this.obfuscate(e)],[n,i]=this.split(t);return btoa(`${n}/${this.base}/${i}`)}};var V={link:"<a href='{{url}}'>{{label}}</a>",embedded:`
|
|
6
|
-
<span>
|
|
7
|
-
<strong>{{label}}</strong>
|
|
8
|
-
<span>{{description}}</span>
|
|
9
|
-
<del>{{url}}</del>
|
|
10
|
-
</span>
|
|
11
|
-
`,prohibited:`
|
|
12
|
-
<span>
|
|
13
|
-
<strong>{{label}}</strong>
|
|
14
|
-
<span>{{description}}</span>
|
|
15
|
-
<del>{{url}}</del>
|
|
16
|
-
</span>
|
|
17
|
-
`,error:`
|
|
18
|
-
<div data-trix-embed data-trix-embed-error>
|
|
19
|
-
<h1>{{header}}</h1>
|
|
20
|
-
<pre><code>{{error.stack}}</code></pre>
|
|
21
|
-
</div>
|
|
22
|
-
`,iframe:`
|
|
23
|
-
<div data-trix-embed>
|
|
24
|
-
<iframe src='{{src}}' loading='lazy' referrerpolicy='no-referrer' scrolling='no'></iframe>
|
|
25
|
-
</div>
|
|
26
|
-
`,image:`
|
|
27
|
-
<div data-trix-embed>
|
|
28
|
-
<img src='{{src}}' loading='lazy'></img>
|
|
29
|
-
</div>
|
|
30
|
-
`,warning:`
|
|
31
|
-
<div data-trix-embed data-trix-embed-warning>
|
|
32
|
-
<h1>{{header}}</h1>
|
|
33
|
-
<h3>{{subheader}}</h3>
|
|
34
|
-
|
|
35
|
-
<h2>{{prohibited.header}}</h2>
|
|
36
|
-
<ul>{{prohibited.hosts}}</ul>
|
|
37
|
-
|
|
38
|
-
<h2>{{allowed.header}}</h2>
|
|
39
|
-
<ul>{{allowed.hosts}}</ul>
|
|
40
|
-
</div>
|
|
41
|
-
`};var je=[se,"a","abbr","acronym","address","b","big","blockquote","br","cite","code","dd","del","dfn","div","dl","dt","em","figcaption","figure","h1","h2","h3","h4","h5","h6","hr","i","iframe","img","ins","kbd","li","ol","p","pre","samp","small","span","strong","sub","sup","time","tt","ul","var"],He=["abbr","allow","allowfullscreen","allowpaymentrequest","alt","caption","cite","content-type","credentialless","csp","data-trix-embed","data-trix-embed-error","data-trix-embed-prohibited","data-trix-embed-warning","datetime","filename","filesize","height","href","lang","loading","name","presentation","previewable","referrerpolicy","sandbox","sgid","src","srcdoc","title","url","width","xml:lang"],k=class{constructor(e){this.controller=e,this.initializeTempates()}sanitize(e){let t=document.createElement("template");t.innerHTML=`<div>${e}</div>`;let n=t.content.firstElementChild;return[n].concat([...n.querySelectorAll("*")]).forEach(s=>{je.includes(s.tagName.toLowerCase())?[...s.attributes].forEach(a=>{He.includes(a.name.toLowerCase())||s.removeAttribute(a.name)}):s.remove()}),n.innerHTML}initializeTempates(){this.templates=V,Object.keys(V).forEach(e=>this.initializeTemplate(e))}initializeTemplate(e){var s,a;let t=`${e}TemplateValue`,n=this.controller[t],i=n?(a=(s=document.getElementById(n))==null?void 0:s.innerHTML)==null?void 0:a.trim():null;return this.controller[t]=null,i&&(this.templates[e]=i),this.templates[e]}render(e,t={}){return this.templates[e].replace(/{{(.*?)}}/g,(i,s)=>s.split(".").reduce((a,l)=>a[l],t))}renderEmbed(e="https://example.com"){let t=oe(e)?this.render("image",{src:e}):this.render("iframe",{src:e});return this.sanitize(t)}renderEmbeds(e=["https://example.com","https://test.com"]){if(e!=null&&e.length)return e.map(t=>this.renderEmbed(t))}renderWarnings(e=["https://example.com","https://test.com"],t=[],n=[]){if(!(e!=null&&e.length))return;t=[...t].sort(),t.includes("*")&&t.splice(t.indexOf("*"),1),n=[...n],n.includes("*")&&n.splice(n.indexOf("*"),1);let i=[...new Set([...n,...ee(e)])].sort();return this.render("warning",{header:"Copy/Paste Warning",subheader:"Content includes URLs or media from prohibited hosts or restricted protocols.",prohibited:{header:"Prohibited Hosts",hosts:i.length?i.map(s=>`<li>${s}</li>`).join(""):"<li>URLs and media are restricted to allowed hosts and standard protocols.</li>"},allowed:{header:"Allowed Hosts",hosts:t.length?t.map(s=>`<li>${s}</li>`).join(""):"<li>Allowed hosts not configured.</li>"}})}renderError(e){return this.render("error",{header:"Unhandled Exception!",subheader:"Report this problem to a software engineer.",error:e})}};function he(r={Controller:null,Trix:null}){var n;let{Controller:e,Trix:t}=r;return n=class extends e{connect(){this.onPaste=this.paste.bind(this),this.element.addEventListener("trix-paste",this.onPaste,!0),this.onBeforeFetchResponse=this.beforeFetchResponse.bind(this),addEventListener("turbo:before-fetch-response",this.onBeforeFetchResponse,!0),this.onBeforeUnload=this.forgetConfig.bind(this),addEventListener("beforeunload",this.onBeforeUnload,!0),this.store=new A(this),this.guard=new S(this),!this.key&&this.rememberConfig().then(()=>{this.paranoid&&this.guard.protect()})}reconnect(){let i=this.element.getAttribute("data-controller")||"",s=new Set(i.split(" "));s.add("trix-embed"),this.element.setAttribute("data-controller",[...s].join(" ").trim())}disconnect(){this.element.removeEventListener("trix-paste",this.onPaste,!0),removeEventListener("turbo:before-fetch-response",this.onBeforeFetchResponse,!0),removeEventListener("beforeunload",this.onBeforeUnload,!0),this.reconnect()}beforeFetchResponse(i){try{i.target.querySelectorAll("trix-editor").includes(this.element)&&this.forgetConfig()}catch(s){}}async paste(i){this.formElement&&(this.formElement.trixEmbedPasting=!0);try{let{html:s,string:a,range:l}=i.paste,o=s||a||"",d=this.createTemplateElement(o),c=te(d);if(!c.length)return;i.preventDefault(),this.editor.setSelectedRange(l);try{let m=new k(this),h=await this.allowedMediaHosts,u=await this.blockedMediaHosts,p=new Set(c.filter(g=>P(g)));[...d.querySelectorAll("iframe")].forEach(g=>p.add(g.src)),p=[...p];let y=p.filter(g=>C(g,h,u)),v=p.filter(g=>!y.includes(g)),W=await this.allowedLinkHosts,K=await this.blockedLinkHosts,$=c.filter(g=>!p.includes(g)),z=$.filter(g=>C(g,W,K)),q=$.filter(g=>!z.includes(g));if(v.length||q.length){let g=[...new Set([...v,...q])],pe=[...new Set([...h,...W])].filter(M=>!this.reservedDomains.includes(M)),fe=[...new Set([...u,...K])].filter(M=>!this.reservedDomains.includes(M));await this.insert(m.renderWarnings(g,pe,fe))}if(y.length&&await this.insert(m.renderEmbeds(y)),c.length===1&&y.length===1)return;let I=this.sanitizePastedElement(d,{renderer:m,validMediaURLs:y,validLinkURLs:z}).innerHTML.trim();I.length&&await this.insert(I,{disposition:"inline"})}catch(m){this.insert(renderer.renderError(m))}}finally{this.formElement&&delete this.formElement.trixEmbedPasting}}createTemplateElement(i){let s=document.createElement("template");return s.innerHTML=`<div>${i.trim()}</div>`,s.content.firstElementChild}extractLabelFromElement(i,s={default:null}){let a=i.title;return a&&a.length||(a=i.textContent.trim(),a&&a.length)?a:s.default}sanitizePastedElement(i,s={renderer:null,validMediaURLs:[],validLinkURLs:[]}){let{renderer:a,validMediaURLs:l,validLinkURLs:o}=s;i=i.cloneNode(!0);let d=O(i),c=[],m;for(;m=d.nextNode();)m.replacements=m.replacements||new Set,c.push(m),m.nodeValue.split(/\s+/).filter(p=>p.startsWith("http")).forEach(p=>{var v;let f=(v=b(p))==null?void 0:v.href,y=o.includes(f)||o.includes(f)?a.render("link",{url:f,label:f}):a.render("prohibited",{url:f,label:"Prohibited URL:",description:""});m.replacements.add({match:p,replacement:y})});return c.forEach(h=>{if(!h.replacements.size)return;let u=h.nodeValue;[...h.replacements].sort((f,y)=>y.match.length-f.match.length).forEach(f=>u=u.replaceAll(f.match,f.replacement)),h.replaceWith(this.createTemplateElement(u))}),i.querySelectorAll("a").forEach(h=>{let u=U(h),p=this.extractLabelFromElement(h,{default:u}),f=o.includes(u)?a.render("link",{url:u,label:p}):a.render("prohibited",{url:u,label:"Prohibited Link:",description:`(${p})`});h.replaceWith(this.createTemplateElement(f))}),i.querySelectorAll(ae.join(", ")).forEach(h=>{let u=U(h),p=this.extractLabelFromElement(h,{default:u}),f=l.includes(u)?a.render("embedded",{url:u,label:"Allowed Media:",description:"(Embedded Above)"}):a.render("prohibited",{url:u,label:"Prohibited Media:",description:""});h.replaceWith(this.createTemplateElement(f))}),i.innerHTML.replaceAll(/(\n|\r|\f|\v)+/g,"<br>"),i}createAttachment(i){return new t.Attachment({content:i,contentType:re.attachment})}insertNewlines(i=1,s={delay:1}){let{delay:a}=s;return new Promise(l=>{setTimeout(()=>{for(let o=0;o<i;o++)this.editor.insertLineBreak();l()},a)})}insertAttachment(i,s={delay:1}){let{delay:a}=s;return new Promise(l=>{setTimeout(()=>{this.editor.insertAttachment(this.createAttachment(i)),this.insertNewlines(1,{delay:a}).finally(l)},a)})}insertHTML(i,s={delay:1}){let{delay:a}=s;return new Promise(l=>{setTimeout(()=>{this.editor.insertHTML(i),this.insertNewlines(1,{delay:a}).finally(l)},a)})}insert(i,s={delay:1,disposition:"attachment"}){let{delay:a,disposition:l}=s;return i!=null&&i.length?new Promise(o=>{setTimeout(()=>{if(typeof i=="string")return l==="inline"?this.insertHTML(i,{delay:a}).catch(d=>this.renderError(d)).finally(o):this.insertAttachment(i,{delay:a}).catch(d=>this.renderError(d)).finally(o);if(Array.isArray(i)){let d=l==="inline"?i.map(c=>this.insertHTML(c,{delay:a+1})):i.map(c=>this.insertAttachment(c,{delay:a+1}));return Promise.all(d).catch(c=>this.renderError(c)).finally(o)}o()})}):Promise.resolve()}get editor(){return this.element.editor}get toolbarElement(){let i=this.element.getAttribute("toolbar"),s=i?document.getElementById(i):null;if(!s){let a=this.element.previousElementSibling;s=a!=null&&a.tagName.match(/trix-toolbar/i)?a:null}return s}get formElement(){return this.element.closest("form")}get inputElement(){var s;let i=this.element.getAttribute("input");return i?(s=this.formElement)==null?void 0:s.querySelector(`#${i}`):null}get paranoid(){return!!this.store.read("paranoid")}get key(){try{return JSON.parse(this.store.read("key"))[2]}catch(i){return null}}get hostsValueDescriptors(){return Object.values(this.valueDescriptorMap).filter(i=>i.name.endsWith("HostsValue"))}get reservedDomains(){return["embed.example","embed.invalid","embed.local","embed.localhost","embed.test","trix.embed.example","trix.embed.invalid","trix.embed.local","trix.embed.localhost","trix.embed.test","trix.example","trix.invalid","trix.local","trix.localhost","trix.test","www.embed.example","www.embed.invalid","www.embed.local","www.embed.localhost","www.embed.test","www.trix.example","www.trix.invalid","www.trix.local","www.trix.localhost","www.trix.test"]}rememberConfig(){return new Promise(async i=>{let s,a=await T();s=await x(a,w(this.reservedDomains,3)),this.store.write("key",JSON.stringify([s[0],s[1],a,s[2]])),this.paranoidValue!==!1&&(s=await x(a,w(this.reservedDomains,4)),this.store.write("paranoid",JSON.stringify(s))),this.element.removeAttribute("data-trix-embed-paranoid-value"),this.hostsValueDescriptors.forEach(async l=>{let{name:o}=l,d=o.slice(0,o.lastIndexOf("Value")),c=this[o];c.length<4&&(c=c.concat(w(this.reservedDomains,4-c.length))),this.store.write(d,JSON.stringify(await x(a,c))),this.hasOwnProperty(d)||Object.defineProperty(this,d,{get:async()=>{try{return(await X(this.key,JSON.parse(this.store.read(d)))).filter(h=>!this.reservedDomains.includes(h))}catch(m){return console.error(`Failed to get '${d}'!`,m),[]}}}),this.element.removeAttribute(`data-trix-embed-${l.key}`)}),s=await x(a,w(this.reservedDomains,4)),this.store.write("securityHosts",s),s=await x(a,w(this.reservedDomains,4)),this.store.write("obscurityHosts",s),i()})}forgetConfig(){var i,s,a,l;try{(i=this.store)==null||i.remove("key"),(s=this.store)==null||s.remove("paranoid"),this.hostsValueDescriptors.forEach(async o=>{var m;let{name:d}=o,c=d.slice(0,d.lastIndexOf("Value"));(m=this.store)==null||m.remove(c)}),(a=this.store)==null||a.remove("securityHosts"),(l=this.store)==null||l.remove("obscurityHosts")}catch(o){}}},J(n,"values",{embeddedTemplate:String,errorTemplate:String,iframeTemplate:String,imageTemplate:String,linkTemplate:String,prohibitedTemplate:String,warningTemplate:String,allowedLinkHosts:Array,blockedLinkHosts:Array,allowedMediaHosts:Array,blockedMediaHosts:Array,paranoid:{type:Boolean,default:!0}}),n}var ue=!1,Fe={application:null,Controller:null,Trix:null};function De(r=Fe){if(ue)return;let{application:e,Controller:t,Trix:n}=r;e.register("trix-embed",he({Controller:t,Trix:n})),ue=!0}self.TrixEmbed=L(E({},_),{encryptValues:x,generateKey:T,generateKeyAndEncryptValues:Q,initialize:De});var Tt=self.TrixEmbed;export{Tt as default};
|
|
5
|
+
const _0x25ec03=_0x5b82;(function(_0x1653a9,_0x53037e){const _0x5e30e6=_0x5b82,_0xa0e205=_0x1653a9();while(!![]){try{const _0x387d76=-parseInt(_0x5e30e6(0x2c6))/0x1*(parseInt(_0x5e30e6(0x310))/0x2)+-parseInt(_0x5e30e6(0x2c4))/0x3*(-parseInt(_0x5e30e6(0x2fc))/0x4)+parseInt(_0x5e30e6(0x24a))/0x5*(parseInt(_0x5e30e6(0x27c))/0x6)+-parseInt(_0x5e30e6(0x289))/0x7*(-parseInt(_0x5e30e6(0x2b5))/0x8)+parseInt(_0x5e30e6(0x21c))/0x9*(parseInt(_0x5e30e6(0x2ce))/0xa)+parseInt(_0x5e30e6(0x276))/0xb*(-parseInt(_0x5e30e6(0x2ec))/0xc)+-parseInt(_0x5e30e6(0x2b6))/0xd*(parseInt(_0x5e30e6(0x248))/0xe);if(_0x387d76===_0x53037e)break;else _0xa0e205['push'](_0xa0e205['shift']());}catch(_0x125cc0){_0xa0e205['push'](_0xa0e205['shift']());}}}(_0x1733,0xb565e));var be=Object[_0x25ec03(0x2f4)],ye=Object[_0x25ec03(0x2e2)],xe=Object['getOwnPropertyDescriptors'],G=Object[_0x25ec03(0x2d1)],we=Object[_0x25ec03(0x293)]['hasOwnProperty'],ve=Object['prototype'][_0x25ec03(0x313)],N=(_0x45de01,_0x50186e,_0x3cbb86)=>_0x50186e in _0x45de01?be(_0x45de01,_0x50186e,{'enumerable':!0x0,'configurable':!0x0,'writable':!0x0,'value':_0x3cbb86}):_0x45de01[_0x50186e]=_0x3cbb86,v=(_0x4b073f,_0x852a77)=>{const _0x4e4714=_0x25ec03;for(var _0x565983 in _0x852a77||(_0x852a77={}))we[_0x4e4714(0x2bb)](_0x852a77,_0x565983)&&N(_0x4b073f,_0x565983,_0x852a77[_0x565983]);if(G){for(var _0x565983 of G(_0x852a77))ve[_0x4e4714(0x2bb)](_0x852a77,_0x565983)&&N(_0x4b073f,_0x565983,_0x852a77[_0x565983]);}return _0x4b073f;},E=(_0x2e5804,_0x39716b)=>ye(_0x2e5804,xe(_0x39716b)),X=(_0x6503d4,_0x2f90a1,_0x3e7d9e)=>(N(_0x6503d4,typeof _0x2f90a1!=_0x25ec03(0x2b7)?_0x2f90a1+'':_0x2f90a1,_0x3e7d9e),_0x3e7d9e),Q={'version':'0.0.5'},R={'name':_0x25ec03(0x1ec),'length':0x100},Ee=!0x0,Le=[_0x25ec03(0x22d),_0x25ec03(0x237)];async function Te(){const _0x42b65c=_0x25ec03;let _0x2d1232=[_0x42b65c(0x22d),'decrypt'];return await crypto[_0x42b65c(0x2fa)][_0x42b65c(0x2aa)](R,!0x0,_0x2d1232);}async function Se(_0x1ef85c){const _0x9f2068=_0x25ec03;let _0x11c225=await crypto[_0x9f2068(0x2fa)][_0x9f2068(0x228)](_0x9f2068(0x2a5),_0x1ef85c);return JSON['stringify'](_0x11c225);}async function Y(_0x21430f){const _0x5227a5=_0x25ec03;let _0x55318f=JSON[_0x5227a5(0x2eb)](_0x21430f);return await crypto[_0x5227a5(0x2fa)]['importKey'](_0x5227a5(0x2a5),_0x55318f,R,Ee,Le);}function _0x1733(){const _0x59757c=['HostsValue','target','294kjCahX','write','413iXLBUl','connect','var','www.embed.localhost','TemplateValue','cloneNode','sup','replaceWith','1063670bWoyAg','[data-controller~=\x22trix-embed\x22]','catch','getOwnPropertySymbols','decode','error','push','submit','substring','<a\x20href=\x27{{url}}\x27>{{label}}</a>','figcaption','data-trix-embed-paranoid-value','protect','referrerpolicy','startsWith','www.trix.localhost','tagName','searchParams','video','add','defineProperties','join','removeAttribute','renderError','warning','use','[id]','allowedLinkHostsValue','Prohibited\x20Link:','parse','108FFQWeg','reconnect','remove','controller','trix.localhost','trix.test','track','templates','defineProperty','frame','www.trix.test','\x0a\x20\x20\x20\x20<div\x20data-trix-embed>\x0a\x20\x20\x20\x20\x20\x20<iframe\x20src=\x27{{src}}\x27\x20loading=\x27lazy\x27\x20referrerpolicy=\x27no-referrer\x27\x20scrolling=\x27no\x27></iframe>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20','img','inputElement','subtle','keys','55372TUrDnU','name','info','embed','<li>','blockedHosts','isArray','reservedDomains','formElement','image/avif','https://test.com','previewable','data-trix-embed-warning','insertNewlines','read','www.trix.invalid','trim','textContent','trix-paste','data-trix-embed-prohibited','698XnMOjl','image/x-icon','all','propertyIsEnumerable','http','FILTER_ACCEPT','pre','charCodeAt','tel:','embed.test','has','image/gif','FORM','forgetConfig','prohibited','blockedLinkHosts','content','pathname','onBeforeFetchResponse','Content\x20includes\x20links\x20or\x20media\x20from\x20restricted\x20protocols\x20or\x20prohibited\x20hosts.','Prohibited\x20Media:','src','forEach','FILTER_SKIP','replacement','Copy/Paste\x20Warning','filter','cite','animate','image/jp2','action-text-attachment','data-trix-embed-error','bind','obscurityHosts','data-trix-embed','AES-GCM','base','loading','object','obfuscate','Prohibited\x20URL:','image/bmp','href','link','www.embed.test','finally','iframe','trix-embed/attachment','preventAttachments','samp','guard','[data-trix-button-group=\x22file-tools\x22]','querySelector','includes','load','createElement','sgid','news:','querySelectorAll','allowpaymentrequest','small','removeEventListener','del','(Embedded\x20Above)','image','[data-trix-action=\x22link\x22]','source','www.embed.local','values','form','Attachment','frameset','<li>Not\x20configured</li>','animateTransform','turbo:before-fetch-response','animateMotion','div','slice','trix-file-accept','toolbar','trix-embed','innerHTML','extractLabelFromElement','99ZPoyrt','string','</li>','sub','template','toLowerCase','register','trix.local','span','allowedMediaHosts','toolbarElement','trixEmbedPasting','exportKey','map','setSelectedRange','image/heif','find','encrypt','embed.example','body','trix.example','allowedLinkHosts','</div>','observe','firstElementChild','ceil','SHOW_TEXT','decrypt','setAttribute','action','Failed\x20to\x20get\x20\x27','image/heic','srcdoc','renderWarnings','kbd','font-face-uri','apply','code','image/tiff','input','All','setItem','audio','reverse','154MQyywr','element','3295kyPdtL','ciphertext','Value','nodeValue','trix.embed.local','width','renderEmbed','generateStorageKey','embed.localhost','random','rememberConfig','[src],\x20[href]','trix.invalid','addEventListener','reduce','initializeTempates','Prohibited\x20Hosts','title','alt','endsWith','key','picture','Report\x20this\x20problem\x20to\x20a\x20software\x20engineer.','allow','acronym','caption','script','renderEmbeds','time','replacements','trix.embed.localhost','\x0a\x20\x20\x20\x20<div\x20data-trix-embed\x20data-trix-embed-error>\x0a\x20\x20\x20\x20\x20\x20<h1>{{header}}</h1>\x0a\x20\x20\x20\x20\x20\x20<pre><code>{{error.stack}}</code></pre>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20','getElementById','image/vnd.ms-photo','embed.invalid','<div>','abbr','blockedLinkHostsValue','insertAttachment','content-type','getRandomValues','replaceAll','allowedMediaHostsValue','number','868153hkUldB','getItem','initializeTemplate','blockedMediaHosts','Allowed\x20Media:','data-trix-embed-key-value=\x22','2640hTWNkR','lastIndexOf','log','fromCharCode','filename','split','configured','then','closest','csp','presentation','beforeFetchResponse','data-trix-embed-','4382iIhCXb','insertLineBreak','replace','xml:lang','default','previousElementSibling','paranoid','image/jpeg','render','preventDefault','prototype','\x0a\x20\x20\x20\x20<div\x20data-trix-embed>\x0a\x20\x20\x20\x20\x20\x20<img\x20src=\x27{{src}}\x27\x20loading=\x27lazy\x27></img>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20','stringify','onPaste','datetime','encode','length','editor','embed.local','createTemplateElement','removeItem','lang','embedded','data-direct-upload-url','identifier','\x0a\x20\x20\x20\x20<div\x20data-trix-embed\x20data-trix-embed-warning>\x0a\x20\x20\x20\x20\x20\x20<h1>{{header}}</h1>\x0a\x20\x20\x20\x20\x20\x20<h3>{{subheader}}</h3>\x0a\x0a\x20\x20\x20\x20\x20\x20<h2>{{prohibited.header}}</h2>\x0a\x20\x20\x20\x20\x20\x20<ul>{{prohibited.hosts}}</ul>\x0a\x0a\x20\x20\x20\x20\x20\x20<h2>{{allowed.header}}</h2>\x0a\x20\x20\x20\x20\x20\x20<ul>{{allowed.hosts}}</ul>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20','store','figure','jwk','big','trix-editor','attachment','onBeforeUnload','generateKey','dfn','inline','insert','nextNode','credentialless','https://example.com','\x0a\x20\x20\x20\x20<span>\x0a\x20\x20\x20\x20\x20\x20<strong>{{label}}</strong>\x0a\x20\x20\x20\x20\x20\x20<span>{{description}}</span>\x0a\x20\x20\x20\x20\x20\x20<del>{{url}}</del>\x0a\x20\x20\x20\x20</span>\x0a\x20\x20','concat','createAttachment','insertHTML','11424yzPsWK','2497287CCWNVu','symbol','hostsValueDescriptors','ins','size','call','paste','feImage','<br>','sanitize','Unhandled\x20Exception!','match'];_0x1733=function(){return _0x59757c;};return _0x1733();}async function ke(_0x412077,_0x5a8019){const _0x284a2e=_0x25ec03;let _0x3eea90=new TextEncoder()[_0x284a2e(0x298)](String(_0x412077)),_0x1fc97d=crypto[_0x284a2e(0x272)](new Uint8Array(0xc)),_0x7b4f0f=await crypto[_0x284a2e(0x2fa)]['encrypt'](E(v({},R),{'iv':_0x1fc97d}),_0x5a8019,_0x3eea90),_0x523aa3={'ciphertext':btoa(String['fromCharCode'](...new Uint8Array(_0x7b4f0f))),'iv':btoa(String[_0x284a2e(0x27f)](..._0x1fc97d))};return btoa(JSON[_0x284a2e(0x295)](_0x523aa3));}async function Ae(_0x5e86c8,_0x22ce58){const _0x407270=_0x25ec03;let _0x2ed876=JSON['parse'](atob(_0x5e86c8)),_0x7cca83=new Uint8Array(atob(_0x2ed876[_0x407270(0x24b)])['split']('')['map'](_0x493600=>_0x493600['charCodeAt'](0x0))),_0x52ded9=new Uint8Array(atob(_0x2ed876['iv'])[_0x407270(0x281)]('')[_0x407270(0x229)](_0x4c21c0=>_0x4c21c0['charCodeAt'](0x0))),_0x387fc4=await crypto[_0x407270(0x2fa)][_0x407270(0x237)](E(v({},R),{'iv':_0x52ded9}),_0x22ce58,_0x7cca83);return new TextDecoder()[_0x407270(0x2d2)](_0x387fc4);}async function L(){let _0x2cd2f=await Te(),_0x1ee26c=await Se(_0x2cd2f);return btoa(_0x1ee26c);}async function y(_0x5379ce,_0x26ca0c=[]){const _0x58ad3c=_0x25ec03;let _0x51cf77=await Y(atob(_0x5379ce));return Promise[_0x58ad3c(0x312)](_0x26ca0c['map'](_0x3882d8=>ke(_0x3882d8,_0x51cf77)));}async function Z(_0x5eadf3,_0x3e1230=[]){const _0x1ffbb0=_0x25ec03;let _0x32f1da=await Y(atob(_0x5eadf3));return Promise[_0x1ffbb0(0x312)](_0x3e1230['map'](_0x658293=>Ae(_0x658293,_0x32f1da)));}async function ee(_0xbcb685=[]){const _0x271882=_0x25ec03;let _0x3f2411=await L(),_0x49b7a1=await y(_0x3f2411,_0xbcb685);return console[_0x271882(0x27e)](_0x271882(0x27b)+_0x3f2411+'\x22'),console[_0x271882(0x27e)]('data-trix-embed-hosts-value=\x27'+JSON['stringify'](_0x49b7a1)+'\x27'),{'key':_0x3f2411,'encryptedValues':_0x49b7a1};}var te=_0x23bdb7=>Math['floor'](Math[_0x25ec03(0x253)]()*_0x23bdb7),w=(_0x4f97be,_0x5deb0d=null)=>{const _0x49cd25=_0x25ec03;let _0x23169d=[..._0x4f97be];_0x5deb0d===_0x49cd25(0x312)&&(_0x5deb0d=_0x23169d[_0x49cd25(0x299)]);let _0xa9c006=_0x23169d[_0x49cd25(0x299)],_0x5d4201=[],_0x17db60=new Set();for(;_0x5d4201[_0x49cd25(0x299)]<_0x5deb0d;){let _0x352877=te(_0xa9c006);for(;_0x17db60[_0x49cd25(0x31a)](_0x352877);)_0x352877=te(_0xa9c006);_0x17db60['add'](_0x352877),_0x5d4201[_0x49cd25(0x2d4)](_0x23169d[_0x352877]);}return typeof _0x5deb0d==_0x49cd25(0x275)?_0x5d4201:_0x5d4201[0x0];};function g(_0x308e7c,_0x21904f=_0x28bd86=>{}){const _0x12b85c=_0x25ec03;try{let _0x563822=new URL(String(_0x308e7c)['trim']());return _0x563822&&_0x21904f&&_0x21904f(_0x563822),_0x563822;}catch(_0x364bf1){console[_0x12b85c(0x2fe)]('Failed\x20to\x20parse\x20URL!\x20value=\x27'+_0x308e7c+'\x27]');}return null;}function re(_0x1bc740,_0x5efe72=_0x74c3dc=>{}){var _0x426130;let _0x136e2f=(_0x426130=g(_0x1bc740))==null?void 0x0:_0x426130['host'];return _0x136e2f&&_0x5efe72&&_0x5efe72(_0x136e2f),_0x136e2f;}function C(_0x566406){const _0x3b21fb=_0x25ec03;return document['createTreeWalker'](_0x566406,NodeFilter[_0x3b21fb(0x236)],_0x31fb3d=>_0x31fb3d['nodeValue'][_0x3b21fb(0x2c1)](/http/gi)?NodeFilter[_0x3b21fb(0x315)]:NodeFilter[_0x3b21fb(0x1e0)]);}function Re(_0xfd6f9){const _0x29f3f3=_0x25ec03;let _0x537c1b=new Set(),_0x51257c=C(_0xfd6f9),_0x3dc8ca;for(;_0x3dc8ca=_0x51257c['nextNode']();)_0x3dc8ca[_0x29f3f3(0x24d)][_0x29f3f3(0x281)](/\s+/)['filter'](_0x53f58f=>_0x53f58f[_0x29f3f3(0x2dc)](_0x29f3f3(0x314)))[_0x29f3f3(0x1df)](_0x7d83bc=>g(_0x7d83bc,_0x2da1d7=>_0x537c1b[_0x29f3f3(0x2e1)](_0x2da1d7[_0x29f3f3(0x1f3)])));return[..._0x537c1b];}function U(_0xe43e1d){const _0x321e78=_0x25ec03;if(_0xe43e1d[_0x321e78(0x1de)]){let _0x21b508=_0xe43e1d['src'][_0x321e78(0x30c)]();if(_0x21b508['length'])return _0x21b508;}if(_0xe43e1d[_0x321e78(0x1f3)]){let _0x56a7a5=_0xe43e1d[_0x321e78(0x1f3)][_0x321e78(0x30c)]();if(_0x56a7a5[_0x321e78(0x299)])return _0x56a7a5;}return'';}function Ue(_0x4fc340){const _0x25bf51=_0x25ec03;let _0x119f92=new Set();return _0x4fc340[_0x25bf51(0x1de)]&&g(_0x4fc340[_0x25bf51(0x1de)],_0x50b7b8=>_0x119f92[_0x25bf51(0x2e1)](_0x50b7b8[_0x25bf51(0x1f3)])),_0x4fc340['href']&&g(_0x4fc340['href'],_0x7e2c5f=>_0x119f92[_0x25bf51(0x2e1)](_0x7e2c5f[_0x25bf51(0x1f3)])),_0x4fc340['querySelectorAll'](_0x25bf51(0x255))[_0x25bf51(0x1df)](_0x810019=>g(U(_0x810019),_0x306ebc=>_0x119f92['add'](_0x306ebc[_0x25bf51(0x1f3)]))),[..._0x119f92];}function H(_0x30c919,_0x3e7684=[],_0x10b0f8=[]){const _0x5ae364=_0x25ec03;let _0x1655b8=re(_0x30c919);return _0x10b0f8[_0x5ae364(0x1fe)]('*')||_0x10b0f8[_0x5ae364(0x22c)](_0x9ab143=>_0x1655b8[_0x5ae364(0x25d)](_0x9ab143))?!0x1:!!(_0x3e7684[_0x5ae364(0x22c)](_0x586139=>_0x1655b8[_0x5ae364(0x25d)](_0x586139))||_0x3e7684[_0x5ae364(0x1fe)]('*')&&(_0x1655b8||_0x30c919[_0x5ae364(0x2dc)]('data:')||_0x30c919[_0x5ae364(0x2dc)](_0x5ae364(0x202))||_0x30c919[_0x5ae364(0x2dc)](_0x5ae364(0x318))));}function ie(_0x8f1c1){const _0x455b39=_0x25ec03;return[..._0x8f1c1[_0x455b39(0x258)]((_0x277f47,_0x181a8d)=>(re(_0x181a8d,_0x208ebd=>_0x277f47[_0x455b39(0x2e1)](_0x208ebd)),_0x277f47),new Set())];}function ne(_0x5a700f){let _0x2c03dc=Ue(_0x5a700f),_0x3138d8=Re(_0x5a700f);return[...new Set([..._0x2c03dc,..._0x3138d8])];}var se={'attachment':_0x25ec03(0x1f8)},ae={'avif':_0x25ec03(0x305),'bmp':_0x25ec03(0x1f2),'gif':_0x25ec03(0x31b),'heic':_0x25ec03(0x23b),'heif':_0x25ec03(0x22b),'ico':_0x25ec03(0x311),'jp2':_0x25ec03(0x1e6),'jpeg':'image/jpeg','jpg':_0x25ec03(0x290),'jxr':_0x25ec03(0x26b),'png':'image/png','svg':'image/svg+xml','tif':_0x25ec03(0x242),'tiff':_0x25ec03(0x242),'webp':'image/webp'},Me=ae,Ne=[_0x25ec03(0x1e5),_0x25ec03(0x214),_0x25ec03(0x212),'area',_0x25ec03(0x246),_0x25ec03(0x1ed),'embed','feDisplacementMap',_0x25ec03(0x2bd),'feTile',_0x25ec03(0x1e3),_0x25ec03(0x23f),_0x25ec03(0x1f7),_0x25ec03(0x209),_0x25ec03(0x1f4),_0x25ec03(0x1ef),'script',_0x25ec03(0x20b),'track',_0x25ec03(0x2e7),_0x25ec03(0x2e0)],Ce=[_0x25ec03(0x246),_0x25ec03(0x2ff),_0x25ec03(0x1f7),'img',_0x25ec03(0x243),_0x25ec03(0x264),_0x25ec03(0x20b),_0x25ec03(0x2f2),'video',_0x25ec03(0x2f5),_0x25ec03(0x210),_0x25ec03(0x1ef),_0x25ec03(0x25f),_0x25ec03(0x2e7)],oe='trix-editor',le=_0x25ec03(0x1e7),ce=Ne[_0x25ec03(0x2b2)](Ce);function de(_0x506ddd){const _0x52f289=_0x25ec03;return!!Object[_0x52f289(0x20d)](ae)[_0x52f289(0x22c)](_0x543690=>_0x543690===O(_0x506ddd));}function O(_0x3ae20f){const _0x4ee23e=_0x25ec03;let _0x231ad8;if(_0x231ad8=g(_0x3ae20f),!_0x231ad8)return null;let _0x40d123=_0x231ad8[_0x4ee23e(0x321)]['lastIndexOf']('.');if(!_0x40d123)return null;let _0x490d3d=_0x231ad8[_0x4ee23e(0x321)][_0x4ee23e(0x2d6)](_0x40d123+0x1);return Me[_0x490d3d];}var P,j,he=new Set(),He=oe+_0x25ec03(0x2cf);function ue(_0xaa26a){const _0x1ab9a1=_0x25ec03;var _0x5b6048;let {method:_0x3971e1,action:_0x4f20e7}=_0xaa26a||{};return _0x4f20e7=((_0x5b6048=g(_0x4f20e7))==null?void 0x0:_0x5b6048[_0x1ab9a1(0x321)])||_0x4f20e7,(_0x3971e1+':'+_0x4f20e7)[_0x1ab9a1(0x30c)]()[_0x1ab9a1(0x221)]();}function pe(_0x57bb13,_0x1ceb12){const _0x5f1d4c=_0x25ec03;if(!_0x57bb13)return;let _0x2512e5=ue(_0x57bb13);he[_0x5f1d4c(0x2e1)]({'key':_0x2512e5,'form':_0x57bb13,'input':_0x1ceb12});}function Oe(_0x3fbec1){const _0x13437d=_0x25ec03;var _0xecf7;let _0x2cca21=ue(_0x3fbec1),_0x441f25=[...he][_0x13437d(0x1e3)](_0x338125=>_0x338125[_0x13437d(0x25e)]===_0x2cca21);if(!_0x441f25[_0x13437d(0x299)])return!0x0;if(_0x3fbec1[_0x13437d(0x227)])return!0x1;if(_0x3fbec1[_0x13437d(0x1fd)](He))return!0x0;let _0x1fef73=new FormData(_0x3fbec1),_0x471eb9=((_0xecf7=g(_0x3fbec1[_0x13437d(0x239)]))==null?void 0x0:_0xecf7[_0x13437d(0x2df)])||new URLSearchParams();return!_0x441f25['map'](_0x2bd0b2=>_0x2bd0b2[_0x13437d(0x243)])[_0x13437d(0x229)](_0x2a2813=>!(_0x2a2813[_0x13437d(0x2fd)]&&(_0x1fef73['has'](_0x2a2813[_0x13437d(0x2fd)])||_0x471eb9[_0x13437d(0x31a)](_0x2a2813[_0x13437d(0x2fd)]))||_0x2a2813['id']&&(_0x1fef73[_0x13437d(0x31a)](_0x2a2813['id'])||_0x471eb9[_0x13437d(0x31a)](_0x2a2813['id']))))['includes'](!0x1);}function me(_0x1d2aa6){const _0x123a87=_0x25ec03;Oe(_0x1d2aa6[_0x123a87(0x2c3)])||_0x1d2aa6[_0x123a87(0x292)]();}function V(_0x1a449e){const _0x4f6e42=_0x25ec03;_0x1a449e['removeEventListener'](_0x4f6e42(0x2d5),me,!0x0),_0x1a449e[_0x4f6e42(0x257)](_0x4f6e42(0x2d5),me,!0x0);}function Pe(){const _0xa91ed9=_0x25ec03;if(P)return;let _0x53bb45=Document[_0xa91ed9(0x293)][_0xa91ed9(0x200)];P={'value':function(){const _0x1e5e61=_0xa91ed9;let _0x47c5fb=_0x53bb45[_0x1e5e61(0x240)](this,arguments);try{String(arguments[0x0])['toUpperCase']()===_0x1e5e61(0x31c)&&V(_0x47c5fb);}catch(_0x42d714){}return _0x47c5fb;},'configurable':!0x1},Object[_0xa91ed9(0x2f4)](Document[_0xa91ed9(0x293)],_0xa91ed9(0x200),P);}function F(_0x50363d=0x0){const _0x249c15=_0x25ec03;if(!document['body']&&_0x50363d<0x64)return setTimeout(()=>F(_0x50363d+0x1),0x19);j||(j=new MutationObserver(_0x36e795=>_0x36e795[_0x249c15(0x1df)](_0x7c2c7d=>_0x7c2c7d['addedNodes'][_0x249c15(0x1df)](_0x18e0f0=>{_0x18e0f0 instanceof HTMLFormElement&&V(_0x18e0f0);}))),j[_0x249c15(0x233)](document[_0x249c15(0x22f)],{'childList':!0x0,'subtree':!0x0}));}addEventListener(_0x25ec03(0x1ff),()=>F()),Pe(),F(),document[_0x25ec03(0x203)](_0x25ec03(0x20e))[_0x25ec03(0x1df)](_0xaf42c7=>V(_0xaf42c7));var T=class{constructor(_0x4cd962){const _0x5f2d5a=_0x25ec03;this[_0x5f2d5a(0x2ef)]=_0x4cd962;}[_0x25ec03(0x1f9)](){const _0x2cbbde=_0x25ec03;var _0x47dd3c,_0x5a024f,_0x33ce1b,_0x5b7f57,_0x589d17;(_0x47dd3c=this[_0x2cbbde(0x29a)])==null||_0x47dd3c['removeAttribute'](_0x2cbbde(0x2a0)),(_0x5a024f=this[_0x2cbbde(0x29a)])==null||_0x5a024f['removeAttribute']('data-blob-url-template'),(_0x33ce1b=this[_0x2cbbde(0x29a)])==null||_0x33ce1b[_0x2cbbde(0x257)](_0x2cbbde(0x217),_0x28639d=>_0x28639d[_0x2cbbde(0x292)](),!0x0),(_0x589d17=(_0x5b7f57=this['toolbar'])==null?void 0x0:_0x5b7f57[_0x2cbbde(0x1fd)](_0x2cbbde(0x1fc)))==null||_0x589d17[_0x2cbbde(0x2ee)]();}async['preventLinks'](){const _0x4d0381=_0x25ec03;var _0x3e6780,_0x5f3ffb;let _0x467d93=await this[_0x4d0381(0x2ef)][_0x4d0381(0x231)];!(await this[_0x4d0381(0x2ef)]['blockedLinkHosts'])['length']&&_0x467d93[_0x4d0381(0x1fe)]('*')||(_0x5f3ffb=(_0x3e6780=this[_0x4d0381(0x218)])==null?void 0x0:_0x3e6780[_0x4d0381(0x1fd)](_0x4d0381(0x20a)))==null||_0x5f3ffb[_0x4d0381(0x2ee)]();}[_0x25ec03(0x2da)](_0x70543d=0x0){const _0x82622f=_0x25ec03;if(!this[_0x82622f(0x218)]&&_0x70543d<0x64)return setTimeout(()=>this[_0x82622f(0x2da)](_0x70543d+0x1),0x19);this[_0x82622f(0x1f9)](),this['preventLinks'](),this['form']&&pe(this[_0x82622f(0x20e)],this[_0x82622f(0x243)]);}get[_0x25ec03(0x29a)](){return this['controller']['element'];}get[_0x25ec03(0x218)](){const _0x432955=_0x25ec03;return this[_0x432955(0x2ef)]['toolbarElement'];}get[_0x25ec03(0x20e)](){const _0xb2b5b6=_0x25ec03;return this[_0xb2b5b6(0x2ef)][_0xb2b5b6(0x304)];}get['input'](){const _0x1a0ea8=_0x25ec03;return this[_0x1a0ea8(0x2ef)][_0x1a0ea8(0x2f9)];}},S=class{constructor(_0x5356b0){const _0x4b3e49=_0x25ec03;var _0xfe6335,_0x4400cf,_0x55ebde;let _0x584ee0=[location[_0x4b3e49(0x321)],(_0x4400cf=g((_0xfe6335=_0x5356b0[_0x4b3e49(0x304)])==null?void 0x0:_0xfe6335[_0x4b3e49(0x239)]))==null?void 0x0:_0x4400cf['pathname'],(_0x55ebde=_0x5356b0[_0x4b3e49(0x249)][_0x4b3e49(0x284)](_0x4b3e49(0x2e8)))==null?void 0x0:_0x55ebde['id']];this[_0x4b3e49(0x2ef)]=_0x5356b0,this[_0x4b3e49(0x2a1)]=_0x584ee0[_0x4b3e49(0x1e3)](_0x5f4fd4=>_0x5f4fd4&&_0x5f4fd4[_0x4b3e49(0x299)])['join']('/')[_0x4b3e49(0x28b)](/\/{2,}/g,'/'),this[_0x4b3e49(0x1ed)]=this[_0x4b3e49(0x1f0)](this['identifier']);}[_0x25ec03(0x281)](_0x48dbb4){const _0xab7f4f=_0x25ec03;let _0x248dff=Math[_0xab7f4f(0x235)](_0x48dbb4[_0xab7f4f(0x299)]/0x2);return[_0x48dbb4[_0xab7f4f(0x216)](0x0,_0x248dff),_0x48dbb4[_0xab7f4f(0x216)](_0x248dff)];}['obfuscate'](_0x57fa32){const _0x479deb=_0x25ec03;var _0x3e58b1;let _0x397c7d=[..._0x57fa32]['map'](_0x217819=>_0x217819[_0x479deb(0x317)](0x0));return[(_0x3e58b1=this[_0x479deb(0x281)](_0x397c7d)[0x1])==null?void 0x0:_0x3e58b1[_0x479deb(0x247)](),_0x397c7d[0x0]]['flat']()['join']('');}[_0x25ec03(0x30a)](_0x2b1796){const _0x20e54b=_0x25ec03;return sessionStorage[_0x20e54b(0x277)](this[_0x20e54b(0x251)](_0x2b1796));}['write'](_0x15183e,_0x37ea35){const _0x3c37d8=_0x25ec03;return sessionStorage[_0x3c37d8(0x245)](this[_0x3c37d8(0x251)](_0x15183e),_0x37ea35);}[_0x25ec03(0x2ee)](_0x485822){const _0x3236df=_0x25ec03;return sessionStorage[_0x3236df(0x29d)](this[_0x3236df(0x251)](_0x485822));}['generateStorageKey'](_0x2c7846){const _0x1de9d8=_0x25ec03;let _0x3fe93e=[...this[_0x1de9d8(0x1f0)](_0x2c7846)],[_0x27bae8,_0x21a5be]=this[_0x1de9d8(0x281)](_0x3fe93e);return btoa(_0x27bae8+'/'+this[_0x1de9d8(0x1ed)]+'/'+_0x21a5be);}},D={'link':_0x25ec03(0x2d7),'embedded':_0x25ec03(0x2b1),'prohibited':_0x25ec03(0x2b1),'error':_0x25ec03(0x269),'iframe':_0x25ec03(0x2f7),'image':_0x25ec03(0x294),'warning':_0x25ec03(0x2a2)},je=[le,'a',_0x25ec03(0x26e),_0x25ec03(0x262),'address','b',_0x25ec03(0x2a6),'blockquote','br','cite',_0x25ec03(0x241),'dd',_0x25ec03(0x207),_0x25ec03(0x2ab),_0x25ec03(0x215),'dl','dt','em',_0x25ec03(0x2d8),_0x25ec03(0x2a4),'h1','h2','h3','h4','h5','h6','hr','i','iframe',_0x25ec03(0x2f8),_0x25ec03(0x2b9),_0x25ec03(0x23e),'li','ol','p',_0x25ec03(0x316),_0x25ec03(0x1fa),_0x25ec03(0x205),_0x25ec03(0x224),'strong',_0x25ec03(0x21f),_0x25ec03(0x2cc),_0x25ec03(0x266),'tt','ul',_0x25ec03(0x2c8)],Ve=['abbr',_0x25ec03(0x261),'allowfullscreen',_0x25ec03(0x204),_0x25ec03(0x25c),_0x25ec03(0x263),_0x25ec03(0x1e4),_0x25ec03(0x271),_0x25ec03(0x2af),_0x25ec03(0x285),_0x25ec03(0x1eb),_0x25ec03(0x1e8),_0x25ec03(0x30f),_0x25ec03(0x308),_0x25ec03(0x297),_0x25ec03(0x280),'filesize','height',_0x25ec03(0x1f3),_0x25ec03(0x29e),_0x25ec03(0x1ee),_0x25ec03(0x2fd),_0x25ec03(0x286),_0x25ec03(0x307),_0x25ec03(0x2db),'sandbox',_0x25ec03(0x201),'src',_0x25ec03(0x23c),_0x25ec03(0x25b),'url',_0x25ec03(0x24f),_0x25ec03(0x28c)],k=class{constructor(_0x34c807){const _0x57cd80=_0x25ec03;this[_0x57cd80(0x2ef)]=_0x34c807,this[_0x57cd80(0x259)]();}['sanitize'](_0xd68ef8){const _0x30d9a7=_0x25ec03;let _0x31130f=document[_0x30d9a7(0x200)](_0x30d9a7(0x220));_0x31130f[_0x30d9a7(0x21a)]='<div>'+_0xd68ef8+'</div>';let _0x2eef9c=_0x31130f['content'][_0x30d9a7(0x234)];return[_0x2eef9c]['concat']([..._0x2eef9c[_0x30d9a7(0x203)]('*')])[_0x30d9a7(0x1df)](_0x57fd14=>{const _0xe5e65d=_0x30d9a7;je[_0xe5e65d(0x1fe)](_0x57fd14['tagName'][_0xe5e65d(0x221)]())?[..._0x57fd14['attributes']][_0xe5e65d(0x1df)](_0x5e2b96=>{const _0x4b1221=_0xe5e65d;Ve[_0x4b1221(0x1fe)](_0x5e2b96['name'][_0x4b1221(0x221)]())||_0x57fd14['removeAttribute'](_0x5e2b96[_0x4b1221(0x2fd)]);}):_0x57fd14[_0xe5e65d(0x2ee)]();}),_0x2eef9c[_0x30d9a7(0x21a)];}[_0x25ec03(0x259)](){const _0x2c7d5a=_0x25ec03;this[_0x2c7d5a(0x2f3)]=D,Object[_0x2c7d5a(0x2fb)](D)[_0x2c7d5a(0x1df)](_0x5dd419=>this[_0x2c7d5a(0x278)](_0x5dd419));}['initializeTemplate'](_0xd3e339){const _0x5820c7=_0x25ec03;var _0x25048e,_0x4c5375;let _0x1c6d9f=_0xd3e339+_0x5820c7(0x2ca),_0x210670=this[_0x5820c7(0x2ef)][_0x1c6d9f],_0x4fc724=_0x210670?(_0x4c5375=(_0x25048e=document[_0x5820c7(0x26a)](_0x210670))==null?void 0x0:_0x25048e[_0x5820c7(0x21a)])==null?void 0x0:_0x4c5375[_0x5820c7(0x30c)]():null;return this[_0x5820c7(0x2ef)][_0x1c6d9f]=null,_0x4fc724&&(this[_0x5820c7(0x2f3)][_0xd3e339]=_0x4fc724),this['templates'][_0xd3e339];}[_0x25ec03(0x291)](_0x1f5e5b,_0x57fce7={}){const _0x32eef6=_0x25ec03;return this['templates'][_0x1f5e5b][_0x32eef6(0x28b)](/{{(.*?)}}/g,(_0x4c2b80,_0x37d89a)=>_0x37d89a[_0x32eef6(0x281)]('.')[_0x32eef6(0x258)]((_0x1f1674,_0x4866e1)=>_0x1f1674[_0x4866e1],_0x57fce7));}[_0x25ec03(0x250)](_0x4ece3c='https://example.com'){const _0xc7be0=_0x25ec03;let _0x441dfd=de(_0x4ece3c)?this['render'](_0xc7be0(0x209),{'src':_0x4ece3c}):this['render'](_0xc7be0(0x1f7),{'src':_0x4ece3c});return this[_0xc7be0(0x2bf)](_0x441dfd);}[_0x25ec03(0x265)](_0x4bd02d=[_0x25ec03(0x2b0),_0x25ec03(0x306)]){const _0x2eb31e=_0x25ec03;if(_0x4bd02d!=null&&_0x4bd02d[_0x2eb31e(0x299)])return _0x4bd02d[_0x2eb31e(0x229)](_0x4912d7=>this[_0x2eb31e(0x250)](_0x4912d7));}[_0x25ec03(0x23d)](_0x54e66e=[_0x25ec03(0x2b0),_0x25ec03(0x306)],_0x47ae60=[],_0x354555=[]){const _0x58b06b=_0x25ec03;if(_0x54e66e!=null&&_0x54e66e[_0x58b06b(0x299)])return _0x47ae60=[..._0x47ae60]['sort'](),_0x47ae60[_0x58b06b(0x1fe)]('*')&&(_0x47ae60=[_0x58b06b(0x244)]),_0x354555=[...new Set([..._0x354555,...ie(_0x54e66e)])]['sort'](),_0x354555['includes']('*')&&(_0x354555=['All']),this[_0x58b06b(0x291)](_0x58b06b(0x2e6),{'header':_0x58b06b(0x1e2),'subheader':_0x58b06b(0x1dc),'prohibited':{'header':_0x58b06b(0x25a),'hosts':_0x354555[_0x58b06b(0x299)]?_0x354555[_0x58b06b(0x229)](_0x21aee0=>_0x58b06b(0x300)+_0x21aee0+_0x58b06b(0x21e))['join'](''):_0x58b06b(0x211)},'allowed':{'header':'Allowed\x20Hosts','hosts':_0x47ae60['length']?_0x47ae60[_0x58b06b(0x229)](_0x3e3574=>_0x58b06b(0x300)+_0x3e3574+_0x58b06b(0x21e))[_0x58b06b(0x2e3)](''):_0x58b06b(0x211)}});}[_0x25ec03(0x2e5)](_0x1f5f1b){const _0x5229ad=_0x25ec03;return this['render'](_0x5229ad(0x2d3),{'header':_0x5229ad(0x2c0),'subheader':_0x5229ad(0x260),'error':_0x1f5f1b});}};function fe(_0x2c0490={'Controller':null,'Trix':null}){const _0x3dea0f=_0x25ec03;var _0x372023;let {Controller:_0x3e44dc,Trix:_0x3bd51a}=_0x2c0490;return _0x372023=class extends _0x3e44dc{[_0x3dea0f(0x2c7)](){const _0x3c68f2=_0x3dea0f;if(this[_0x3c68f2(0x296)]=this['paste']['bind'](this),this[_0x3c68f2(0x249)]['addEventListener'](_0x3c68f2(0x30e),this[_0x3c68f2(0x296)],!0x0),this[_0x3c68f2(0x322)]=this['beforeFetchResponse'][_0x3c68f2(0x1e9)](this),addEventListener(_0x3c68f2(0x213),this[_0x3c68f2(0x322)],!0x0),this[_0x3c68f2(0x2a9)]=this[_0x3c68f2(0x31d)]['bind'](this),addEventListener('beforeunload',this[_0x3c68f2(0x2a9)],!0x0),this[_0x3c68f2(0x2a3)]=new S(this),this[_0x3c68f2(0x1fb)]=new T(this),this['configured'])return this[_0x3c68f2(0x2da)]();this[_0x3c68f2(0x254)]()[_0x3c68f2(0x283)](()=>this[_0x3c68f2(0x2da)](this));}[_0x3dea0f(0x2ed)](){const _0x2e9b3d=_0x3dea0f;let _0x4bdbf2=this[_0x2e9b3d(0x249)]['getAttribute']('data-controller')||'',_0x1fc6db=new Set(_0x4bdbf2[_0x2e9b3d(0x281)]('\x20'));_0x1fc6db[_0x2e9b3d(0x2e1)](_0x2e9b3d(0x219)),this['element'][_0x2e9b3d(0x238)]('data-controller',[..._0x1fc6db][_0x2e9b3d(0x2e3)]('\x20')[_0x2e9b3d(0x30c)]());}['disconnect'](){const _0x351110=_0x3dea0f;this[_0x351110(0x249)][_0x351110(0x206)](_0x351110(0x30e),this[_0x351110(0x296)],!0x0),removeEventListener(_0x351110(0x213),this[_0x351110(0x322)],!0x0),removeEventListener('beforeunload',this['onBeforeUnload'],!0x0),this[_0x351110(0x2ed)]();}[_0x3dea0f(0x287)](_0x5afaf7){const _0x23f7e4=_0x3dea0f;try{_0x5afaf7[_0x23f7e4(0x2c3)]['querySelectorAll'](_0x23f7e4(0x2a7))[_0x23f7e4(0x1fe)](this[_0x23f7e4(0x249)])&&this[_0x23f7e4(0x31d)]();}catch(_0x374dc7){}}['protect'](){const _0x4de490=_0x3dea0f;this['paranoid']&&this['guard'][_0x4de490(0x2da)]();}async[_0x3dea0f(0x2bc)](_0x331459,_0x5c83c6=0x0){const _0xccf447=_0x3dea0f;if(!this['configured']&&_0x5c83c6<0x64)return setTimeout(()=>this[_0xccf447(0x2bc)](_0x331459,_0x5c83c6+0x1),0x19);this[_0xccf447(0x304)]&&(this['formElement'][_0xccf447(0x227)]=!0x0);try{let {html:_0x333f94,string:_0x30d08e,range:_0x7a61e1}=_0x331459[_0xccf447(0x2bc)],_0x341eb1=_0x333f94||_0x30d08e||'',_0xee63a6=this[_0xccf447(0x29c)](_0x341eb1),_0x33dc74=ne(_0xee63a6);if(!_0x33dc74['length'])return;_0x331459[_0xccf447(0x292)](),this[_0xccf447(0x29a)][_0xccf447(0x22a)](_0x7a61e1);let _0x42d7e4=new k(this);try{let _0xece02d=await this[_0xccf447(0x225)]||this[_0xccf447(0x274)]||[],_0x5c407a=await this[_0xccf447(0x279)]||this['blockedMediaHostsValue']||[],_0xfba6=new Set(_0x33dc74[_0xccf447(0x1e3)](_0x540e39=>O(_0x540e39)));[..._0xee63a6['querySelectorAll'](_0xccf447(0x1f7))][_0xccf447(0x1df)](_0x108af7=>_0xfba6[_0xccf447(0x2e1)](_0x108af7['src'])),_0xfba6=[..._0xfba6];let _0x45d0a5=_0xfba6[_0xccf447(0x1e3)](_0x5f32e0=>H(_0x5f32e0,_0xece02d,_0x5c407a)),_0xec9502=_0xfba6[_0xccf447(0x1e3)](_0x361ee5=>!_0x45d0a5['includes'](_0x361ee5)),_0x484c98=await this[_0xccf447(0x231)]||this[_0xccf447(0x2e9)]||[],_0x16ee64=await this[_0xccf447(0x31f)]||this[_0xccf447(0x26f)]||[],_0x4214d3=_0x33dc74[_0xccf447(0x1e3)](_0x233c30=>!_0xfba6[_0xccf447(0x1fe)](_0x233c30)),_0x4c8755=_0x4214d3[_0xccf447(0x1e3)](_0xf510d7=>H(_0xf510d7,_0x484c98,_0x16ee64)),_0x4a0857=_0x4214d3[_0xccf447(0x1e3)](_0x5a2eda=>!_0x4c8755['includes'](_0x5a2eda));if(_0xec9502[_0xccf447(0x299)]||_0x4a0857[_0xccf447(0x299)]){let _0x332460=[...new Set([..._0xec9502,..._0x4a0857])],_0x20b933=[...new Set([..._0xece02d,..._0x484c98])]['filter'](_0x2c7f91=>!this[_0xccf447(0x303)][_0xccf447(0x1fe)](_0x2c7f91)),_0x34bfdd=[...new Set([..._0x5c407a,..._0x16ee64])]['filter'](_0x3dc144=>!this[_0xccf447(0x303)]['includes'](_0x3dc144));console['log']('allowedHosts',_0x20b933),console[_0xccf447(0x27e)](_0xccf447(0x301),_0x34bfdd),await this[_0xccf447(0x2ad)](_0x42d7e4['renderWarnings'](_0x332460,_0x20b933,_0x34bfdd));}if(_0x45d0a5[_0xccf447(0x299)]&&await this[_0xccf447(0x2ad)](_0x42d7e4['renderEmbeds'](_0x45d0a5)),_0x33dc74[_0xccf447(0x299)]===0x1&&_0x45d0a5[_0xccf447(0x299)]===0x1)return;let _0x1873b8=this['sanitizePastedElement'](_0xee63a6,{'renderer':_0x42d7e4,'validMediaURLs':_0x45d0a5,'validLinkURLs':_0x4c8755})[_0xccf447(0x21a)][_0xccf447(0x30c)]();_0x1873b8[_0xccf447(0x299)]&&await this[_0xccf447(0x2ad)](_0x1873b8,{'disposition':'inline'});}catch(_0x420992){this[_0xccf447(0x2ad)](_0x42d7e4[_0xccf447(0x2e5)](_0x420992));}}finally{this[_0xccf447(0x304)]&&delete this[_0xccf447(0x304)][_0xccf447(0x227)];}}[_0x3dea0f(0x29c)](_0x3409fd){const _0xa05143=_0x3dea0f;let _0x9a6a2c=document[_0xa05143(0x200)](_0xa05143(0x220));return _0x9a6a2c['innerHTML']=_0xa05143(0x26d)+_0x3409fd['trim']()+_0xa05143(0x232),_0x9a6a2c[_0xa05143(0x320)]['firstElementChild'];}[_0x3dea0f(0x21b)](_0x302762,_0x5476af={'default':null}){const _0xf14e4c=_0x3dea0f;let _0x2395b0=_0x302762[_0xf14e4c(0x25b)];return _0x2395b0&&_0x2395b0[_0xf14e4c(0x299)]||(_0x2395b0=_0x302762[_0xf14e4c(0x30d)][_0xf14e4c(0x30c)](),_0x2395b0&&_0x2395b0[_0xf14e4c(0x299)])?_0x2395b0:_0x5476af[_0xf14e4c(0x28d)];}['sanitizePastedElement'](_0xee0d13,_0x1ed8e5={'renderer':null,'validMediaURLs':[],'validLinkURLs':[]}){const _0x39bae0=_0x3dea0f;let {renderer:_0x50a416,validMediaURLs:_0x565a22,validLinkURLs:_0x3ed902}=_0x1ed8e5;_0xee0d13=_0xee0d13[_0x39bae0(0x2cb)](!0x0);let _0x14dc0a=C(_0xee0d13),_0x5ede3c=[],_0x14eb23;for(;_0x14eb23=_0x14dc0a[_0x39bae0(0x2ae)]();)_0x14eb23[_0x39bae0(0x267)]=_0x14eb23[_0x39bae0(0x267)]||new Set(),_0x5ede3c[_0x39bae0(0x2d4)](_0x14eb23),_0x14eb23['nodeValue'][_0x39bae0(0x281)](/\s+/)[_0x39bae0(0x1e3)](_0x2e9f6d=>_0x2e9f6d[_0x39bae0(0x2dc)]('http'))[_0x39bae0(0x1df)](_0x1db479=>{const _0x5cfbc4=_0x39bae0;var _0x4ca75d;let _0x4cdf82=(_0x4ca75d=g(_0x1db479))==null?void 0x0:_0x4ca75d[_0x5cfbc4(0x1f3)],_0x1fb743=_0x3ed902[_0x5cfbc4(0x1fe)](_0x4cdf82)||_0x3ed902[_0x5cfbc4(0x1fe)](_0x4cdf82)?_0x50a416[_0x5cfbc4(0x291)](_0x5cfbc4(0x1f4),{'url':_0x4cdf82,'label':_0x4cdf82}):_0x50a416[_0x5cfbc4(0x291)](_0x5cfbc4(0x31e),{'url':_0x4cdf82,'label':_0x5cfbc4(0x1f1),'description':''});_0x14eb23[_0x5cfbc4(0x267)][_0x5cfbc4(0x2e1)]({'match':_0x1db479,'replacement':_0x1fb743});});return _0x5ede3c[_0x39bae0(0x1df)](_0x474abf=>{const _0x3b8efe=_0x39bae0;if(!_0x474abf[_0x3b8efe(0x267)][_0x3b8efe(0x2ba)])return;let _0x5f16ea=_0x474abf[_0x3b8efe(0x24d)];[..._0x474abf[_0x3b8efe(0x267)]]['sort']((_0x203b5a,_0x2da644)=>_0x2da644[_0x3b8efe(0x2c1)][_0x3b8efe(0x299)]-_0x203b5a['match']['length'])['forEach'](_0x4cbde8=>_0x5f16ea=_0x5f16ea[_0x3b8efe(0x273)](_0x4cbde8[_0x3b8efe(0x2c1)],_0x4cbde8[_0x3b8efe(0x1e1)])),_0x474abf[_0x3b8efe(0x2cd)](this[_0x3b8efe(0x29c)](_0x5f16ea));}),_0xee0d13[_0x39bae0(0x203)]('a')[_0x39bae0(0x1df)](_0x5a6afb=>{const _0x310403=_0x39bae0;let _0x470075=U(_0x5a6afb),_0x56cb59=this[_0x310403(0x21b)](_0x5a6afb,{'default':_0x470075}),_0x43e25b=_0x3ed902[_0x310403(0x1fe)](_0x470075)?_0x50a416[_0x310403(0x291)](_0x310403(0x1f4),{'url':_0x470075,'label':_0x56cb59}):_0x50a416[_0x310403(0x291)]('prohibited',{'url':_0x470075,'label':_0x310403(0x2ea),'description':'('+_0x56cb59+')'});_0x5a6afb[_0x310403(0x2cd)](this[_0x310403(0x29c)](_0x43e25b));}),_0xee0d13[_0x39bae0(0x203)](ce[_0x39bae0(0x2e3)](',\x20'))[_0x39bae0(0x1df)](_0x3a5984=>{const _0x5d40ad=_0x39bae0;let _0x508974=U(_0x3a5984),_0x18bacc=this[_0x5d40ad(0x21b)](_0x3a5984,{'default':_0x508974}),_0x89ac13=_0x565a22[_0x5d40ad(0x1fe)](_0x508974)?_0x50a416[_0x5d40ad(0x291)](_0x5d40ad(0x29f),{'url':_0x508974,'label':_0x5d40ad(0x27a),'description':_0x5d40ad(0x208)}):_0x50a416['render'](_0x5d40ad(0x31e),{'url':_0x508974,'label':_0x5d40ad(0x1dd),'description':''});_0x3a5984[_0x5d40ad(0x2cd)](this[_0x5d40ad(0x29c)](_0x89ac13));}),_0xee0d13[_0x39bae0(0x21a)][_0x39bae0(0x273)](/(\n|\r|\f|\v)+/g,_0x39bae0(0x2be)),_0xee0d13;}['createAttachment'](_0x53df96){const _0x49889f=_0x3dea0f;return new _0x3bd51a[(_0x49889f(0x20f))]({'content':_0x53df96,'contentType':se[_0x49889f(0x2a8)]});}[_0x3dea0f(0x309)](_0x341aa5=0x1,_0x2a647e={'delay':0x1}){let {delay:_0x1e28d4}=_0x2a647e;return new Promise(_0x5ebf0d=>{setTimeout(()=>{const _0x3c10ff=_0x5b82;for(let _0x540308=0x0;_0x540308<_0x341aa5;_0x540308++)this[_0x3c10ff(0x29a)][_0x3c10ff(0x28a)]();_0x5ebf0d();},_0x1e28d4);});}['insertAttachment'](_0x133f9e,_0x2fd468={'delay':0x1}){let {delay:_0xc14965}=_0x2fd468;return new Promise(_0x2e3903=>{setTimeout(()=>{const _0x3f3672=_0x5b82;this[_0x3f3672(0x29a)][_0x3f3672(0x270)](this[_0x3f3672(0x2b3)](_0x133f9e)),this[_0x3f3672(0x309)](0x1,{'delay':_0xc14965})[_0x3f3672(0x1f6)](_0x2e3903);},_0xc14965);});}[_0x3dea0f(0x2b4)](_0x8e1a46,_0x428c39={'delay':0x1}){let {delay:_0x330dbe}=_0x428c39;return new Promise(_0x3e6491=>{setTimeout(()=>{const _0x48845b=_0x5b82;this[_0x48845b(0x29a)]['insertHTML'](_0x8e1a46),this[_0x48845b(0x309)](0x1,{'delay':_0x330dbe})[_0x48845b(0x1f6)](_0x3e6491);},_0x330dbe);});}[_0x3dea0f(0x2ad)](_0xc5e31f,_0x50e4fb={'delay':0x1,'disposition':_0x3dea0f(0x2a8)}){let {delay:_0x2cb1b6,disposition:_0xbec439}=_0x50e4fb;return _0xc5e31f!=null&&_0xc5e31f['length']?new Promise(_0x3bd69b=>{setTimeout(()=>{const _0x321367=_0x5b82;if(typeof _0xc5e31f==_0x321367(0x21d))return _0xbec439===_0x321367(0x2ac)?this[_0x321367(0x2b4)](_0xc5e31f,{'delay':_0x2cb1b6})[_0x321367(0x2d0)](_0x4d66f2=>this[_0x321367(0x2e5)](_0x4d66f2))[_0x321367(0x1f6)](_0x3bd69b):this[_0x321367(0x270)](_0xc5e31f,{'delay':_0x2cb1b6})['catch'](_0x174918=>this[_0x321367(0x2e5)](_0x174918))['finally'](_0x3bd69b);if(Array[_0x321367(0x302)](_0xc5e31f)){let _0x2b9db1=_0xbec439===_0x321367(0x2ac)?_0xc5e31f['map'](_0x559f4e=>this[_0x321367(0x2b4)](_0x559f4e,{'delay':_0x2cb1b6+0x1})):_0xc5e31f[_0x321367(0x229)](_0x21f9f6=>this[_0x321367(0x270)](_0x21f9f6,{'delay':_0x2cb1b6+0x1}));return Promise[_0x321367(0x312)](_0x2b9db1)[_0x321367(0x2d0)](_0x4135a1=>this[_0x321367(0x2e5)](_0x4135a1))[_0x321367(0x1f6)](_0x3bd69b);}_0x3bd69b();});}):Promise['resolve']();}get[_0x3dea0f(0x29a)](){const _0x1a5094=_0x3dea0f;return this[_0x1a5094(0x249)][_0x1a5094(0x29a)];}get[_0x3dea0f(0x226)](){const _0x989688=_0x3dea0f;let _0x891a1e=this[_0x989688(0x249)]['getAttribute'](_0x989688(0x218)),_0x59cb0a=_0x891a1e?document[_0x989688(0x26a)](_0x891a1e):null;if(!_0x59cb0a){let _0xb213b3=this['element'][_0x989688(0x28e)];_0x59cb0a=_0xb213b3!=null&&_0xb213b3[_0x989688(0x2de)][_0x989688(0x2c1)](/trix-toolbar/i)?_0xb213b3:null;}return _0x59cb0a;}get['formElement'](){const _0x1d7362=_0x3dea0f;return this[_0x1d7362(0x249)][_0x1d7362(0x284)](_0x1d7362(0x20e));}get[_0x3dea0f(0x2f9)](){const _0x4f2cb8=_0x3dea0f;var _0x11990e;let _0x127625=this[_0x4f2cb8(0x249)]['getAttribute'](_0x4f2cb8(0x243));return _0x127625?(_0x11990e=this[_0x4f2cb8(0x304)])==null?void 0x0:_0x11990e[_0x4f2cb8(0x1fd)]('#'+_0x127625):null;}get[_0x3dea0f(0x28f)](){const _0x30836e=_0x3dea0f;return!!this['store'][_0x30836e(0x30a)](_0x30836e(0x28f));}get[_0x3dea0f(0x25e)](){const _0x5878fb=_0x3dea0f;try{return JSON[_0x5878fb(0x2eb)](this[_0x5878fb(0x2a3)][_0x5878fb(0x30a)](_0x5878fb(0x25e)))[0x2];}catch(_0x1a69bd){return null;}}get[_0x3dea0f(0x282)](){const _0xd91c00=_0x3dea0f;try{return this['store'][_0xd91c00(0x30a)]('configured')==='true';}catch(_0x115d1b){return!0x1;}}get['hostsValueDescriptors'](){const _0x2b7917=_0x3dea0f;return Object[_0x2b7917(0x20d)](this['valueDescriptorMap'])[_0x2b7917(0x1e3)](_0x447270=>_0x447270[_0x2b7917(0x2fd)][_0x2b7917(0x25d)](_0x2b7917(0x2c2)));}get['reservedDomains'](){const _0x2dbe87=_0x3dea0f;return[_0x2dbe87(0x22e),_0x2dbe87(0x26c),_0x2dbe87(0x29b),_0x2dbe87(0x252),_0x2dbe87(0x319),'trix.embed.example','trix.embed.invalid',_0x2dbe87(0x24e),_0x2dbe87(0x268),'trix.embed.test',_0x2dbe87(0x230),_0x2dbe87(0x256),_0x2dbe87(0x223),_0x2dbe87(0x2f0),_0x2dbe87(0x2f1),'www.embed.example','www.embed.invalid',_0x2dbe87(0x20c),_0x2dbe87(0x2c9),_0x2dbe87(0x1f5),'www.trix.example',_0x2dbe87(0x30b),'www.trix.local',_0x2dbe87(0x2dd),_0x2dbe87(0x2f6)];}['rememberConfig'](){return new Promise(async _0x2ab40b=>{const _0x5743c=_0x5b82;let _0x251233,_0x5b462a=await L();_0x251233=await y(_0x5b462a,w(this[_0x5743c(0x303)],0x3)),this['store']['write'](_0x5743c(0x25e),JSON[_0x5743c(0x295)]([_0x251233[0x0],_0x251233[0x1],_0x5b462a,_0x251233[0x2]])),this['paranoidValue']!==!0x1&&(_0x251233=await y(_0x5b462a,w(this[_0x5743c(0x303)],0x4)),this['store']['write'](_0x5743c(0x28f),JSON[_0x5743c(0x295)](_0x251233))),this[_0x5743c(0x249)][_0x5743c(0x2e4)](_0x5743c(0x2d9)),this[_0x5743c(0x2b8)]['forEach'](async _0x154325=>{const _0x206595=_0x5743c;let {name:_0x26cc38}=_0x154325,_0x3d0ff1=_0x26cc38['slice'](0x0,_0x26cc38['lastIndexOf'](_0x206595(0x24c))),_0x1f22f5=this[_0x26cc38];_0x1f22f5['length']<0x4&&(_0x1f22f5=_0x1f22f5[_0x206595(0x2b2)](w(this[_0x206595(0x303)],0x4-_0x1f22f5[_0x206595(0x299)]))),this[_0x206595(0x2a3)][_0x206595(0x2c5)](_0x3d0ff1,JSON['stringify'](await y(_0x5b462a,_0x1f22f5))),this['hasOwnProperty'](_0x3d0ff1)||Object['defineProperty'](this,_0x3d0ff1,{'get':async()=>{const _0xf8aa5=_0x206595;try{return(await Z(this[_0xf8aa5(0x25e)],JSON['parse'](this[_0xf8aa5(0x2a3)][_0xf8aa5(0x30a)](_0x3d0ff1))))[_0xf8aa5(0x1e3)](_0x230251=>!this['reservedDomains']['includes'](_0x230251));}catch(_0xbd12e1){return console[_0xf8aa5(0x2d3)](_0xf8aa5(0x23a)+_0x3d0ff1+'\x27!',_0xbd12e1),[];}}}),this['element'][_0x206595(0x2e4)](_0x206595(0x288)+_0x154325[_0x206595(0x25e)]);}),_0x251233=await y(_0x5b462a,w(this[_0x5743c(0x303)],0x4)),this[_0x5743c(0x2a3)][_0x5743c(0x2c5)]('securityHosts',_0x251233),_0x251233=await y(_0x5b462a,w(this[_0x5743c(0x303)],0x4)),this[_0x5743c(0x2a3)][_0x5743c(0x2c5)](_0x5743c(0x1ea),_0x251233),this['store'][_0x5743c(0x2c5)]('configured',!0x0),_0x2ab40b();});}['forgetConfig'](){const _0x960f3b=_0x3dea0f;var _0x384b94,_0x5d980e,_0xd10ddc,_0xa87f35,_0x388fd4;try{(_0x384b94=this[_0x960f3b(0x2a3)])==null||_0x384b94[_0x960f3b(0x2ee)](_0x960f3b(0x25e)),(_0x5d980e=this[_0x960f3b(0x2a3)])==null||_0x5d980e[_0x960f3b(0x2ee)](_0x960f3b(0x28f)),this[_0x960f3b(0x2b8)]['forEach'](async _0x1f4b95=>{const _0x297e9f=_0x960f3b;var _0x4f3e88;let {name:_0x3a9970}=_0x1f4b95,_0x4d46bf=_0x3a9970[_0x297e9f(0x216)](0x0,_0x3a9970[_0x297e9f(0x27d)](_0x297e9f(0x24c)));(_0x4f3e88=this['store'])==null||_0x4f3e88[_0x297e9f(0x2ee)](_0x4d46bf);}),(_0xd10ddc=this[_0x960f3b(0x2a3)])==null||_0xd10ddc[_0x960f3b(0x2ee)]('securityHosts'),(_0xa87f35=this['store'])==null||_0xa87f35[_0x960f3b(0x2ee)]('obscurityHosts'),(_0x388fd4=this['store'])==null||_0x388fd4['remove'](_0x960f3b(0x282));}catch(_0x7f4986){}}},X(_0x372023,_0x3dea0f(0x20d),{'embeddedTemplate':String,'errorTemplate':String,'iframeTemplate':String,'imageTemplate':String,'linkTemplate':String,'prohibitedTemplate':String,'warningTemplate':String,'allowedLinkHosts':Array,'blockedLinkHosts':Array,'allowedMediaHosts':Array,'blockedMediaHosts':Array,'paranoid':{'type':Boolean,'default':!0x0}}),_0x372023;}var ge=!0x1,Fe={'application':null,'Controller':null,'Trix':null};function De(_0x548be0=Fe){const _0x23dcf3=_0x25ec03;if(ge)return;let {application:_0xf317bc,Controller:_0x4ef87a,Trix:_0x26f7ab}=_0x548be0;_0xf317bc[_0x23dcf3(0x222)](_0x23dcf3(0x219),fe({'Controller':_0x4ef87a,'Trix':_0x26f7ab})),ge=!0x0;}self['TrixEmbed']=E(v({},Q),{'encryptValues':y,'generateKey':L,'generateKeyAndEncryptValues':ee,'initialize':De});function _0x5b82(_0x30e371,_0x4bfe96){const _0x1733aa=_0x1733();return _0x5b82=function(_0x5b8249,_0xe57db7){_0x5b8249=_0x5b8249-0x1dc;let _0x29c4d0=_0x1733aa[_0x5b8249];return _0x29c4d0;},_0x5b82(_0x30e371,_0x4bfe96);}var St=self['TrixEmbed'];export{St as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"app/javascript/metadata.js":{"bytes":86,"imports":[],"format":"esm"},"app/javascript/encryption.js":{"bytes":4095,"imports":[{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"app/javascript/enumerable.js":{"bytes":517,"imports":[],"format":"esm"},"app/javascript/urls.js":{"bytes":3338,"imports":[],"format":"esm"},"app/javascript/media.js":{"bytes":3618,"imports":[{"path":"app/javascript/urls.js","kind":"import-statement","original":"./urls"}],"format":"esm"},"app/javascript/forms.js":{"bytes":
|
|
1
|
+
{"inputs":{"app/javascript/metadata.js":{"bytes":86,"imports":[],"format":"esm"},"app/javascript/encryption.js":{"bytes":4095,"imports":[{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"app/javascript/enumerable.js":{"bytes":517,"imports":[],"format":"esm"},"app/javascript/urls.js":{"bytes":3338,"imports":[],"format":"esm"},"app/javascript/media.js":{"bytes":3618,"imports":[{"path":"app/javascript/urls.js","kind":"import-statement","original":"./urls"}],"format":"esm"},"app/javascript/forms.js":{"bytes":3378,"imports":[{"path":"app/javascript/media.js","kind":"import-statement","original":"./media"},{"path":"app/javascript/urls.js","kind":"import-statement","original":"./urls"}],"format":"esm"},"app/javascript/guard.js":{"bytes":1212,"imports":[{"path":"app/javascript/forms.js","kind":"import-statement","original":"./forms"}],"format":"esm"},"app/javascript/store.js":{"bytes":1219,"imports":[{"path":"app/javascript/urls.js","kind":"import-statement","original":"./urls"}],"format":"esm"},"app/javascript/templates.js":{"bytes":1235,"imports":[],"format":"esm"},"app/javascript/renderer.js":{"bytes":5087,"imports":[{"path":"app/javascript/urls.js","kind":"import-statement","original":"./urls"},{"path":"app/javascript/media.js","kind":"import-statement","original":"./media"},{"path":"app/javascript/templates.js","kind":"import-statement","original":"./templates"}],"format":"esm"},"app/javascript/controller.js":{"bytes":17141,"imports":[{"path":"app/javascript/enumerable.js","kind":"import-statement","original":"./enumerable"},{"path":"app/javascript/encryption.js","kind":"import-statement","original":"./encryption"},{"path":"app/javascript/urls.js","kind":"import-statement","original":"./urls"},{"path":"app/javascript/media.js","kind":"import-statement","original":"./media"},{"path":"app/javascript/guard.js","kind":"import-statement","original":"./guard"},{"path":"app/javascript/store.js","kind":"import-statement","original":"./store"},{"path":"app/javascript/renderer.js","kind":"import-statement","original":"./renderer"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"app/javascript/index.js":{"bytes":669,"imports":[{"path":"app/javascript/metadata.js","kind":"import-statement","original":"./metadata"},{"path":"app/javascript/encryption.js","kind":"import-statement","original":"./encryption"},{"path":"app/javascript/controller.js","kind":"import-statement","original":"./controller"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"app/assets/builds/trix-embed.js":{"imports":[],"exports":["default"],"entryPoint":"app/javascript/index.js","inputs":{"app/javascript/metadata.js":{"bytesInOutput":24},"app/javascript/encryption.js":{"bytesInOutput":1347},"app/javascript/enumerable.js":{"bytesInOutput":229},"app/javascript/urls.js":{"bytesInOutput":1203},"app/javascript/media.js":{"bytesInOutput":935},"app/javascript/forms.js":{"bytesInOutput":1353},"app/javascript/guard.js":{"bytesInOutput":1003},"app/javascript/store.js":{"bytesInOutput":835},"app/javascript/templates.js":{"bytesInOutput":969},"app/javascript/renderer.js":{"bytesInOutput":2505},"app/javascript/controller.js":{"bytesInOutput":8416},"app/javascript/index.js":{"bytesInOutput":312}},"bytes":19645}}}
|
|
@@ -48,11 +48,8 @@ export function getTrixEmbedControllerClass(options = { Controller: null, Trix:
|
|
|
48
48
|
this.store = new Store(this)
|
|
49
49
|
this.guard = new Guard(this)
|
|
50
50
|
|
|
51
|
-
if (this.
|
|
52
|
-
|
|
53
|
-
this.rememberConfig().then(() => {
|
|
54
|
-
if (this.paranoid) this.guard.protect()
|
|
55
|
-
})
|
|
51
|
+
if (this.configured) return this.protect()
|
|
52
|
+
this.rememberConfig().then(() => this.protect(this))
|
|
56
53
|
}
|
|
57
54
|
|
|
58
55
|
reconnect() {
|
|
@@ -76,7 +73,12 @@ export function getTrixEmbedControllerClass(options = { Controller: null, Trix:
|
|
|
76
73
|
} catch {}
|
|
77
74
|
}
|
|
78
75
|
|
|
79
|
-
|
|
76
|
+
protect() {
|
|
77
|
+
if (this.paranoid) this.guard.protect()
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async paste(event, attempt = 0) {
|
|
81
|
+
if (!this.configured && attempt < 100) return setTimeout(() => this.paste(event, attempt + 1), 25)
|
|
80
82
|
if (this.formElement) this.formElement.trixEmbedPasting = true
|
|
81
83
|
|
|
82
84
|
try {
|
|
@@ -90,13 +92,12 @@ export function getTrixEmbedControllerClass(options = { Controller: null, Trix:
|
|
|
90
92
|
|
|
91
93
|
event.preventDefault()
|
|
92
94
|
this.editor.setSelectedRange(range)
|
|
95
|
+
const renderer = new Renderer(this)
|
|
93
96
|
|
|
94
97
|
try {
|
|
95
|
-
const renderer = new Renderer(this)
|
|
96
|
-
|
|
97
98
|
// Media URLs (images, videos, audio etc.)
|
|
98
|
-
const allowedMediaHosts = await this.allowedMediaHosts
|
|
99
|
-
const blockedMediaHosts = await this.blockedMediaHosts
|
|
99
|
+
const allowedMediaHosts = (await this.allowedMediaHosts) || this.allowedMediaHostsValue || []
|
|
100
|
+
const blockedMediaHosts = (await this.blockedMediaHosts) || this.blockedMediaHostsValue || []
|
|
100
101
|
let mediaURLs = new Set(pastedURLs.filter(url => getMediaType(url)))
|
|
101
102
|
const iframes = [...pastedElement.querySelectorAll('iframe')]
|
|
102
103
|
iframes.forEach(frame => mediaURLs.add(frame.src))
|
|
@@ -107,8 +108,8 @@ export function getTrixEmbedControllerClass(options = { Controller: null, Trix:
|
|
|
107
108
|
const invalidMediaURLs = mediaURLs.filter(url => !validMediaURLs.includes(url))
|
|
108
109
|
|
|
109
110
|
// Link URLs (non-media resources i.e. web pages etc.)
|
|
110
|
-
const allowedLinkHosts = await this.allowedLinkHosts
|
|
111
|
-
const blockedLinkHosts = await this.blockedLinkHosts
|
|
111
|
+
const allowedLinkHosts = (await this.allowedLinkHosts) || this.allowedLinkHostsValue || []
|
|
112
|
+
const blockedLinkHosts = (await this.blockedLinkHosts) || this.blockedLinkHostsValue || []
|
|
112
113
|
const linkURLs = pastedURLs.filter(url => !mediaURLs.includes(url))
|
|
113
114
|
const validLinkURLs = linkURLs.filter(url => validateURL(url, allowedLinkHosts, blockedLinkHosts))
|
|
114
115
|
const invalidLinkURLs = linkURLs.filter(url => !validLinkURLs.includes(url))
|
|
@@ -122,6 +123,8 @@ export function getTrixEmbedControllerClass(options = { Controller: null, Trix:
|
|
|
122
123
|
const blockedHosts = [...new Set([...blockedMediaHosts, ...blockedLinkHosts])].filter(
|
|
123
124
|
host => !this.reservedDomains.includes(host)
|
|
124
125
|
)
|
|
126
|
+
console.log('allowedHosts', allowedHosts)
|
|
127
|
+
console.log('blockedHosts', blockedHosts)
|
|
125
128
|
await this.insert(renderer.renderWarnings(invalidURLs, allowedHosts, blockedHosts))
|
|
126
129
|
}
|
|
127
130
|
|
|
@@ -331,6 +334,14 @@ export function getTrixEmbedControllerClass(options = { Controller: null, Trix:
|
|
|
331
334
|
}
|
|
332
335
|
}
|
|
333
336
|
|
|
337
|
+
get configured() {
|
|
338
|
+
try {
|
|
339
|
+
return this.store.read('configured') === 'true'
|
|
340
|
+
} catch {
|
|
341
|
+
return false
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
334
345
|
get hostsValueDescriptors() {
|
|
335
346
|
return Object.values(this.valueDescriptorMap).filter(descriptor =>
|
|
336
347
|
descriptor.name.endsWith('HostsValue')
|
|
@@ -428,6 +439,7 @@ export function getTrixEmbedControllerClass(options = { Controller: null, Trix:
|
|
|
428
439
|
fakes = await encryptValues(key, sample(this.reservedDomains, 4))
|
|
429
440
|
this.store.write('obscurityHosts', fakes)
|
|
430
441
|
|
|
442
|
+
this.store.write('configured', true)
|
|
431
443
|
resolve()
|
|
432
444
|
})
|
|
433
445
|
}
|
|
@@ -445,6 +457,7 @@ export function getTrixEmbedControllerClass(options = { Controller: null, Trix:
|
|
|
445
457
|
|
|
446
458
|
this.store?.remove('securityHosts')
|
|
447
459
|
this.store?.remove('obscurityHosts')
|
|
460
|
+
this.store?.remove('configured')
|
|
448
461
|
} catch {}
|
|
449
462
|
}
|
|
450
463
|
}
|
data/app/javascript/forms.js
CHANGED
|
@@ -91,7 +91,7 @@ function patch() {
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
function observe(attempt = 0) {
|
|
94
|
-
if (!document.body && attempt <
|
|
94
|
+
if (!document.body && attempt < 100) return setTimeout(() => observe(attempt + 1), 25)
|
|
95
95
|
|
|
96
96
|
if (_observer) return
|
|
97
97
|
|
data/app/javascript/guard.js
CHANGED
|
@@ -20,7 +20,7 @@ export default class Guard {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
protect(attempt = 0) {
|
|
23
|
-
if (!this.toolbar && attempt <
|
|
23
|
+
if (!this.toolbar && attempt < 100) return setTimeout(() => this.protect(attempt + 1), 25)
|
|
24
24
|
|
|
25
25
|
this.preventAttachments()
|
|
26
26
|
this.preventLinks()
|
data/app/javascript/metadata.js
CHANGED
data/app/javascript/renderer.js
CHANGED
|
@@ -167,27 +167,25 @@ export default class Renderer {
|
|
|
167
167
|
if (!urls?.length) return
|
|
168
168
|
|
|
169
169
|
allowedHosts = [...allowedHosts].sort()
|
|
170
|
-
if (allowedHosts.includes('*')) allowedHosts
|
|
170
|
+
if (allowedHosts.includes('*')) allowedHosts = ['All']
|
|
171
171
|
|
|
172
|
-
blockedHosts = [...blockedHosts]
|
|
173
|
-
if (blockedHosts.includes('*')) blockedHosts
|
|
174
|
-
|
|
175
|
-
const hosts = [...new Set([...blockedHosts, ...extractURLHosts(urls)])].sort()
|
|
172
|
+
blockedHosts = [...new Set([...blockedHosts, ...extractURLHosts(urls)])].sort()
|
|
173
|
+
if (blockedHosts.includes('*')) blockedHosts = ['All']
|
|
176
174
|
|
|
177
175
|
return this.render('warning', {
|
|
178
176
|
header: 'Copy/Paste Warning',
|
|
179
|
-
subheader: 'Content includes
|
|
177
|
+
subheader: 'Content includes links or media from restricted protocols or prohibited hosts.',
|
|
180
178
|
prohibited: {
|
|
181
179
|
header: 'Prohibited Hosts',
|
|
182
|
-
hosts:
|
|
183
|
-
?
|
|
184
|
-
: '<li>
|
|
180
|
+
hosts: blockedHosts.length
|
|
181
|
+
? blockedHosts.map(host => `<li>${host}</li>`).join('')
|
|
182
|
+
: '<li>Not configured</li>'
|
|
185
183
|
},
|
|
186
184
|
allowed: {
|
|
187
185
|
header: 'Allowed Hosts',
|
|
188
186
|
hosts: allowedHosts.length
|
|
189
187
|
? allowedHosts.map(host => `<li>${host}</li>`).join('')
|
|
190
|
-
: '<li>
|
|
188
|
+
: '<li>Not configured</li>'
|
|
191
189
|
}
|
|
192
190
|
})
|
|
193
191
|
}
|
data/lib/trix_embed/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: trix_embed
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nate Hopkins (hopsoft)
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-08-
|
|
11
|
+
date: 2023-08-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|