@temple-wallet/extension-ads 15.0.0 → 15.0.1
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.
- package/dist/index.js +7 -7
- package/package.json +1 -1
- package/src/constants.ts +1 -0
- package/src/execute-ads-actions/observing.ts +25 -31
- package/src/render-ads-stack.ts +4 -0
package/dist/index.js
CHANGED
|
@@ -5,18 +5,18 @@ var lodash = require('lodash');
|
|
|
5
5
|
var nanoid = require('nanoid');
|
|
6
6
|
var Tt = require('webextension-polyfill');
|
|
7
7
|
var cryptoJs = require('crypto-js');
|
|
8
|
-
var
|
|
8
|
+
var kt = require('axios');
|
|
9
9
|
|
|
10
10
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
|
|
12
12
|
var Tt__default = /*#__PURE__*/_interopDefault(Tt);
|
|
13
|
-
var
|
|
13
|
+
var kt__default = /*#__PURE__*/_interopDefault(kt);
|
|
14
14
|
|
|
15
|
-
var dt=Object.defineProperty,ct=Object.defineProperties;var mt=Object.getOwnPropertyDescriptors;var le=Object.getOwnPropertySymbols;var Oe=Object.prototype.hasOwnProperty,We=Object.prototype.propertyIsEnumerable;var Be=(e,t,n)=>t in e?dt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v=(e,t)=>{for(var n in t||(t={}))Oe.call(t,n)&&Be(e,n,t[n]);if(le)for(var n of le(t))We.call(t,n)&&Be(e,n,t[n]);return e},N=(e,t)=>ct(e,mt(t));var x=(e,t)=>{var n={};for(var s in e)Oe.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&le)for(var s of le(e))t.indexOf(s)<0&&We.call(e,s)&&(n[s]=e[s]);return n};var T=(e,t,n)=>new Promise((s,i)=>{var l=a=>{try{o(n.next(a));}catch(p){i(p);}},r=a=>{try{o(n.throw(a));}catch(p){i(p);}},o=a=>a.done?s(a.value):Promise.resolve(a.value).then(l,r);o((n=n.apply(e,t)).next());});process&&process.env&&process.env.NODE_ENV==="development";navigator.userAgent.includes("Macintosh");var ke=e=>!!e,pt=300,B=(e=pt)=>new Promise(t=>setTimeout(t,e));var m=class{};m.HYPELAB_PROPERTY_SLUG="",m.IS_MISES_BROWSER=!1,m.ADS_TW_WINDOW_URL="",m.TKEY_INPAGE_AD_URL="",m.SMALL_TKEY_INPAGE_AD_URL="",m.SWAP_TKEY_URL="",m.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE="",m.personaIframePath="",m.getAdsStackIframeURL=()=>"",m.buildNativeAdsMeta=()=>[],m.pickNextAdMetadata=()=>{},m.bannerAdsMeta=[];var At=e=>{let{hypelabPropertySlug:t,adsTwWindowUrl:n,tkeyInpageAdUrl:s,smallTkeyInpageAdUrl:i,swapTkeyUrl:l,externalAdsActivityMessageType:r,personaIframePath:o,getAdsStackIframeURL:a,buildNativeAdsMeta:p,bannerAdsMeta:d,extVersion:A,templePassphrase:c,isMisesBrowser:h,pickNextAdMetadata:g,evmAccountAddress:u,chainName:E}=e;i&&(m.SMALL_TKEY_INPAGE_AD_URL=i),m.HYPELAB_PROPERTY_SLUG=t,m.ADS_TW_WINDOW_URL=n,m.TKEY_INPAGE_AD_URL=s,m.SWAP_TKEY_URL=l,m.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE=r,m.personaIframePath=o,m.getAdsStackIframeURL=a,m.buildNativeAdsMeta=p,m.pickNextAdMetadata=g,m.bannerAdsMeta=d,m.EXTENSION_VERSION=A,m.TEMPLE_PASSPHRASE=c,m.IS_MISES_BROWSER=h,m.evmAccountAddress=u,m.chainName=E;};var z="twa",te="twa-native",ne="twa-hidden",$="twa-sibling-replacement";var de="adRenderStart",ce="resize",re="ready",se="error",me="accelerometer; gyroscope",b="crypto",ue="background";var K=/[\d.]+(px)?$/,X=`[${z}]`,Ue=`[${z}]:not([${te}])`,Fe=`[${te}]`,j=(e,t)=>{let n=parseInt(e,10);return isNaN(n)||!K.test(e)?t:n},k=(e,t,n)=>{e.style[t]=`${Math.max(j(e.style[t],0),n)}px`;},Q=e=>e.reduce((t,n)=>t+j(n,0),0),q=e=>!!e.closest(X),pe=e=>{var t;return !!((t=e.previousElementSibling)!=null&&t.getAttribute($))},ie=e=>{let t=getComputedStyle(e),{x:n,right:s,width:i,height:l}=e.getBoundingClientRect(),r={width:i,height:l},o=["width","height"];for(let a of o){let p=t[a],d=e.getAttribute(a),A=Math.max(...[p,d].map(c=>j(c!=null?c:"",-1)));A!==-1&&(r[a]=A),a==="width"&&n<0?r.width+=n:a==="width"&&s>window.innerWidth&&(r.width=window.innerWidth-n);}return r},C=(e,t,n=document)=>e?t?[...n.querySelectorAll(e)]:[n.querySelector(e)].filter(s=>!!s):[],O=(e,t)=>{let n=e;for(let s=0;s<t;s++){let i=n.parentElement;if(!i)return null;n=i;}return n},Ye=(e,t,n,s,i)=>{if(e<2&&t<2)return [];if(s)return m.buildNativeAdsMeta(e,t);let l=n==="permanent"||n==="slot-replacement"?m.bannerAdsMeta.filter(({source:a})=>a.shouldNotUseStrictContainerLimits):[],r=Math.max(e,...l.map(({dimensions:a})=>a.width)),o=Math.max(t,...l.map(({dimensions:a})=>a.height));return m.bannerAdsMeta.reduce((a,{dimensions:p,source:d},A)=>{let{shouldNotUseStrictContainerLimits:c=!1,categories:h=[b],providerName:g}=d;if(h.every(I=>!i.includes(I))||a.some(I=>m.bannerAdsMeta[I].source.providerName===g))return a;let{minContainerWidth:u,minContainerHeight:E,width:R,maxContainerWidth:y,maxContainerHeight:S}=p,P=!1;switch(n){case"permanent":P=c||r>=R&&(o>=E||o<2);break;case"slot-replacement":P=c||r>=u&&(o>=E||o<2);break;default:P=e>=u&&t>=E&&e<=y&&t<=S;}return P&&a.push(A),a},[])},ht=e=>{let{x:t,y:n,width:s,height:i}=e.getBoundingClientRect();return t!==0||n!==0||s!==0||i!==0},Ee=e=>{let{display:t}=window.getComputedStyle(e);switch(t){case"none":return !0;case"contents":return Array.from(e.children).every(n=>Ee(n));default:return !ht(e)}};var Ve=(e,t)=>{let{shouldHide:n,cssString:s,parentDepth:i,isMultiple:l}=e;C(s,l).forEach(r=>{let o=O(r,i);if(!o)return;let a=window.getComputedStyle(o);a.display!=="none"&&a.visibility!=="hidden"&&t.push({type:n?"hide-element":"remove-element",element:o});});};var Ge=(e,t,n,s)=>T(void 0,null,function*(){let{parentSelector:i,displayWidth:l}=e,{isMultiple:r,cssString:o,parentDepth:a}=i;if(l&&!semver.satisfies(semver.coerce(window.innerWidth),l))return [];let p=C(o,r).map(d=>O(d,a)).filter(d=>!!d);return yield Promise.all(p.map(d=>T(void 0,null,function*(){yield B(0),Et(d,e,t,n,s);}))),p}),fe=(e,t)=>{var n,s;return e?{width:(n=document.querySelector(e.width))!=null?n:t,height:(s=document.querySelector(e.height))!=null?s:t}:{width:t,height:t}},Et=(e,t,n,s,i)=>{var be;let xe=t,{shouldUseDivWrapper:l,divWrapperStyle:r,wrapperStyle:o,elementStyle:a,adSelector:p,insertionIndex:d,insertBeforeSelector:A,insertAfterSelector:c,insertionsCount:h=1,elementsToMeasureSelectors:g,stylesOverrides:u,shouldHideOriginal:E=!1,isNative:R,urlRegexes:y,parentSelector:S,supportsTheming:P,enableForNonMises:I,fontSampleSelector:w,displayWidth:M}=xe,_=x(xe,["shouldUseDivWrapper","divWrapperStyle","wrapperStyle","elementStyle","adSelector","insertionIndex","insertBeforeSelector","insertAfterSelector","insertionsCount","elementsToMeasureSelectors","stylesOverrides","shouldHideOriginal","isNative","urlRegexes","parentSelector","supportsTheming","enableForNonMises","fontSampleSelector","displayWidth"]),H=_.wrapperType?o:l?r:{display:"contents"},{isMultiple:L,cssString:F,parentDepth:Y}=p,U=C(R?Fe:Ue,!0,e).reduce((f,W)=>f.some(G=>G.contains(W))?f:[...f.filter(G=>!W.contains(G)),W],[]),V=U.filter(f=>Ee(f)&&!f.hasAttribute(ne)),Ae=U.length-V.length,ae=h-Ae;if(C(F,L,e).map(f=>O(f,Y)).filter(f=>ke(f)&&!q(f)).forEach(f=>{var G;let W=window.getComputedStyle(f).display==="none";if(ae<=0)(!E||!W)&&s.push({type:E?"hide-element":"remove-element",element:f});else {let st=fe(g,((G=f.parentElement)==null?void 0:G.children.length)===1?f.parentElement:f),_e=P&&w?document.querySelector(w):null,{fontSize:Le,lineHeight:Ne}=_e?window.getComputedStyle(_e):{fontSize:void 0,lineHeight:void 0},it=Le?j(Le,0):0,ot=Ne?j(Ne,0):0,He=v({themeColor:P?i:void 0,fontSize:it||void 0,lineHeight:ot||void 0,wrapperStyle:H,elementStyle:a,stylesOverrides:u},_),at=v({type:"replace-element",element:f,adCategories:[b]},He),Ce={type:"hide-element",element:f},lt=v({type:"simple-insert-ad",parent:f.parentElement,insertionIndex:Array.from(f.parentElement.children).indexOf(f),isSiblingReplacement:!0,adCategories:[b]},He),ee=[],De=pe(f);E&&De&&!W?ee=[Ce]:E&&!De?ee=[Ce,lt]:E||(ee=[at]),ee.length>0&&n(st,"permanent",R,[b],...ee)&&ae--;}}),ae<=0)return;let Z=-1,Me=e,he={width:e,height:e},Ie=A||c;if(Ie){let f=e.querySelector(Ie),W=f==null?void 0:f.parentElement;f&&W&&(Me=W,Z=Array.from(e.children).indexOf(f)+(A?0:1),he=fe(g,f));}else {let f=d!=null?d:0;Z=f<0?Math.max(e.children.length+f,0):Math.min(f,e.children.length),he=fe(g,(be=e.children[Z])!=null?be:e);}if(Z!==-1){let f=v({type:"simple-insert-ad",wrapperStyle:H,elementStyle:a,parent:Me,insertionIndex:Z,isSiblingReplacement:!1,stylesOverrides:u,adCategories:[b]},_);n(he,"permanent",R,[b],...Array(ae).fill(f));}};var Rt=["align-items","align-self","bottom","display","flex","flex-grow","flex-shrink","float","justify-content","justify-self","left","margin","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","padding","position","right","top","vertical-align","z-index"],yt=lodash.memoize(e=>e.reduce((t,{dimensions:n})=>{let s=t.filter(({width:i,height:l})=>i<n.width||l<n.height);return (s.length===0||s.some(({width:i,height:l})=>i>n.width||l>n.height))&&s.push(n),s},[])),ze=(e,t,n,s)=>T(void 0,null,function*(){let i=yt(m.bannerAdsMeta),l=e.map(({selector:o,parentDepth:a,categories:p})=>C(o,!0).reduce((d,A)=>{var w;let c=(w=O(A,a))!=null?w:A,h=d.findIndex(({element:M})=>M.contains(c)),g=c.parentElement&&window.getComputedStyle(c.parentElement),{width:u,height:E}=ie(c),R=s.some(M=>{var _;return M.type==="replace-all-children"||M.type==="simple-insert-ad"?M.parent.contains(c)||c.contains(M.parent):((_=M.element.parentElement)==null?void 0:_.contains(c))||c.contains(M.element)}),y=(g==null?void 0:g.display)==="none"||(g==null?void 0:g.visibility)==="hidden",S=h>=0&&d[h]instanceof HTMLAnchorElement,P=i.some(({width:M,height:_})=>u>=M&&E>=_);if(R||!P||y||S)return d;let I={element:c,categories:p};return h>=0?d.splice(h,1,I):d.some(({element:M})=>M.contains(c))||d.push(I),d},[])).flat(),r=t.map(({selector:o,parentDepth:a})=>C(o,!0).map(p=>O(p,a)).filter(p=>!!p)).flat();l=l.filter(({element:o})=>!r.includes(o)),yield Promise.all(l.map(p=>T(void 0,[p],function*({element:o,categories:a}){var g,u,E,R,y,S,P,I;yield B(0);let d=o.parentElement,{width:A,height:c}=window.getComputedStyle(o),h=K.test(A)&&K.test(c)?o:(u=(g=d==null?void 0:d.closest("div, article, aside, footer, header"))!=null?g:(d==null?void 0:d.tagName.toLowerCase())==="body"?void 0:d)!=null?u:o;if(!q(o)&&!o.querySelector(X)&&!s.some(w=>w.type==="simple-insert-ad"?!1:w.type==="replace-all-children"?w.parent.contains(o):w.element===o)){let w=(E=o.getAttribute("style"))!=null?E:"",M=Object.fromEntries(w.split(";").filter(Boolean).map(V=>V.split(":").map(Ae=>Ae.trim())));if((R=M.width)!=null&&R.match(/^0[a-z]/)||(y=M.height)!=null&&y.match(/^0[a-z]/))return;let _=window.getComputedStyle(o),H=v(v({},Object.fromEntries(Rt.map(V=>[V,_.getPropertyValue(V)]))),M);H.display==="none"&&delete H.display;let L={type:"hide-element",element:o},F={type:"simple-insert-ad",wrapperStyle:H,parent:(S=o.parentElement)!=null?S:document.body,insertionIndex:Array.from((I=(P=o.parentElement)==null?void 0:P.children)!=null?I:[]).indexOf(o),isSiblingReplacement:!0,shouldUseBlurredBackground:!0,adCategories:a},Y,U=o.closest(`[${$}] + *`);U&&U!==o?Y=[{type:"remove-element",element:U.previousElementSibling},L,F]:U?Y=window.getComputedStyle(o).display==="none"?[]:[L]:Y=[L,F],n({width:h,height:h},"provider-replacement",!1,a,...Y);}})));});var $e=(e,t,n)=>T(void 0,null,function*(){let{cssString:s,isMultiple:i}=e.selector,l=C(s,i);yield Promise.all(l.map(r=>T(void 0,null,function*(){yield B(0),St(r,e,t,n);})));}),St=(e,t,n,s)=>{let{selector:{shouldUseDivWrapper:i,parentDepth:l,divWrapperStyle:r},stylesOverrides:o,shouldHideOriginal:a,isNative:p=!1}=t,d=O(e,l);if(!d||n.some(h=>h.contains(d))||q(d)||d.querySelector(X))return;let A={shouldUseDivWrapper:i,wrapperStyle:r},c;if(i&&a){let h=d.parentElement,g=window.getComputedStyle(d).display==="none",u=v({type:"simple-insert-ad",parent:h,insertionIndex:Array.from(h.children).indexOf(d),stylesOverrides:o==null?void 0:o.map(y=>{var S=y,{parentDepth:E}=S,R=x(S,["parentDepth"]);return N(v({},R),{parentDepth:E-1})}),isSiblingReplacement:!0,adCategories:[b]},A);c=[],g||c.push({type:"hide-element",element:d}),pe(d)||c.push(u);}else if(i)c=[v({type:"replace-element",element:d,stylesOverrides:o==null?void 0:o.map(E=>{var R=E,{parentDepth:g}=R,u=x(R,["parentDepth"]);return N(v({},u),{parentDepth:g-1})}),adCategories:[b]},A)];else if(a){let h={type:"simple-insert-ad",parent:d,insertionIndex:0,stylesOverrides:o,isSiblingReplacement:!0,adCategories:[b],wrapperStyle:{display:"contents"}};c=Array.from(d.children).filter(g=>window.getComputedStyle(g).display!=="none").map(g=>({type:"hide-element",element:g})),d.querySelector(X)||c.push(h);}else c=[{type:"replace-all-children",parent:d,stylesOverrides:o,adCategories:[b],wrapperStyle:{display:"contents"}}];c.length>0&&s({width:d,height:d},"slot-replacement",p,[b],...c);};var vt=l=>T(void 0,[l],function*({providersSelectors:e,providersNegativeSelectors:t,adPlacesRules:n,permanentAdPlacesRules:s,elementsToHideOrRemoveRules:i}){let r=[],o=(d,A,c,h,...g)=>{if(g.length>0&&g.every(L=>L.type==="hide-element"||L.type==="remove-element"))return r.push(...g),!0;let{width:u}=ie(d.width),{height:E}=ie(d.height),{paddingLeft:R,paddingRight:y}=window.getComputedStyle(d.width),{paddingTop:S,paddingBottom:P}=window.getComputedStyle(d.height),I=Q([R,y]),w=I===u?u:u-I,M=Q([S,P]),_=M===E?E:E-M,H=Ye(w,_,A,c,h);return H.length?(r.push(...g.map(L=>L.type==="hide-element"||L.type==="remove-element"?L:N(v({},L),{adsMetadata:H,originalWidth:w,originalHeight:_}))),!0):!1},a=[],{backgroundColor:p}=window.getComputedStyle(document.body);return yield Promise.all(i.map(d=>T(void 0,null,function*(){yield B(0),Ve(d,r);}))),yield Promise.all(s.map(d=>T(void 0,null,function*(){yield B(0),a=a.concat(yield Ge(d,o,r,p));}))),yield Promise.all(n.map(d=>T(void 0,null,function*(){yield B(0),yield $e(d,a,o);}))),yield ze(e,t,o,r),r});var Re=(i=>(i.HypeLab="HypeLab",i.Persona="Persona",i.Temple="Temple Wallet",i.Bitmedia="Bitmedia",i))(Re||{});var ye=new Set,Ke=new Set,Xe=new Set,Qe=e=>T(void 0,null,function*(){let t=e.id;if(!ye.has(t))return ye.add(t),new Promise((n,s)=>{let i=!1,l=r=>{var o,a;if(r.source===e.contentWindow)try{let p=typeof r.data=="string"?JSON.parse(r.data):r.data;if(p.id!==t)return;let d=e.offsetWidth-e.clientWidth,A=e.offsetHeight-e.clientHeight;switch(p.type){case re:n(p.adMetadata.source.providerName);break;case se:window.removeEventListener("message",l),e.style.display="none",s(new Error((o=p.reason)!=null?o:"Unknown error"));break;case de:let{dimensions:c,source:h}=p.adMetadata;i=(a=h.native)!=null?a:!1;let{width:g,height:u}=c;g>0&&u>0&&(h.native?e.style.height=`${u}px`:(k(e,"width",g),k(e,"height",u)));break;case ce:let{width:E,height:R}=p;i?e.style.height=`${R+A}px`:(k(e,"width",E+d),k(e,"height",R+A));}}catch(p){console.error("Observing error:",p);}};window.addEventListener("message",l);}).then(n=>{if(Ke.has(t))return;Ke.add(t),wt(e)?qe(t,n):Pt(e,n);}).catch(n=>{throw console.error(n),n}).finally(()=>void ye.delete(t))}),Pt=(e,t)=>{let n=new IntersectionObserver(s=>{s.some(i=>i.isIntersecting)&&(qe(e.id,t),n.disconnect());},{threshold:.5});n.observe(e);},qe=(e,t)=>{if(Xe.has(e))return;Xe.add(e);let n=window.parent.location.href;Tt__default.default.runtime.sendMessage({type:m.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE,url:n,provider:Re[t]}).catch(s=>void console.error(s));},wt=e=>{let t=e.getBoundingClientRect(),n=window.visualViewport;if(!n)return !1;let s=Math.min(Math.max(0,t.x),n.width),i=Math.min(Math.max(0,t.x+t.width),n.width),l=Math.min(Math.max(0,t.y),n.height),r=Math.min(Math.max(0,t.y+t.height),n.height),o=t.width*t.height;return (i-s)*(r-l)/o>=.5};var oe=(e,t)=>{for(let n in t)e.style.setProperty(n,t[n]);};var It=(e,t)=>{["width","height"].forEach(s=>{var l;let i=(l=e.style[s])!=null?l:"";K.test(i)&&parseInt(i,10)<t[s]&&e.style.removeProperty(s);});},Ze=e=>{let{adsMetadata:t,originalHeight:n,originalWidth:s,shouldUseBlurredBackground:i}=e,l=t[0],{dimensions:r}=typeof l=="number"?m.bannerAdsMeta[l]:l;return {width:i?Math.max(s,r.width):r.width,height:i?Math.max(n,r.height):r.height}},xt=(e,t,n,s,i)=>T(void 0,null,function*(){let{elementStyle:l={},stylesOverrides:r=[],adsMetadata:o,wrapperType:a,adCategories:p,themeColor:d,fontSize:A,lineHeight:c}=e;r.sort((y,S)=>y.parentDepth-S.parentDepth);let h,g=nanoid.nanoid(),u=document.createElement("iframe");u.loading="lazy",u.src=m.getAdsStackIframeURL({id:g,adsMetadataIds:o,origin:window.location.href,adCategories:p,themeColor:d,fontSize:A,lineHeight:c,evmAccountAddress:m.evmAccountAddress,chainName:m.chainName}),u.id=g,u.allow=me;let E=Ze(e);u.style.width=a==="tbody"?"100%":`${E.width}px`,u.style.height=`${E.height}px`,u.style.border="none";for(let y in l)u.style.setProperty(y,l[y]);switch(u.setAttribute(z,"true"),n.appendChild(u),e.type){case"replace-all-children":h=e.parent,e.parent.innerHTML="",e.parent.appendChild(t);break;case"replace-element":h=e.element.parentElement,e.element.replaceWith(t);break;default:let y=e.parent.children[e.insertionIndex];if(e.isSiblingReplacement){t.setAttribute($,"true");let S=new MutationObserver(P=>{P.some(w=>Array.from(w.removedNodes).includes(y))&&(t.remove(),S.disconnect());});S.observe(e.parent,{childList:!0});}h=e.parent,e.parent.insertBefore(t,y);break}if(a!=="tbody"){let{borderLeftWidth:y,borderRightWidth:S,borderTopWidth:P,borderBottomWidth:I}=window.getComputedStyle(u),{borderLeftWidth:w,borderRightWidth:M,borderTopWidth:_,borderBottomWidth:H}=window.getComputedStyle(t),L=Q([y,S,w,M]),F=Q([P,I,_,H]);u.style.width=`${E.width-L}px`,u.style.height=`${E.height-F}px`;}Qe(u).then(s).catch(i);let R=0;r.forEach(({parentDepth:y,style:S})=>{for(;y>R&&h;)h=h.parentElement,R++;h&&oe(h,S);});}),Je={width:"0px",height:"0px",display:"block","overflow-x":"hidden","overflow-y":"hidden","max-block-size":"none","max-height":"none","max-inline-size":"none","max-width":"none","min-block-size":"0px","min-height":"0px","min-inline-size":"0px","min-width":"0px"},et=e=>T(void 0,null,function*(){let{wrapperStyle:t={},adsMetadata:n,wrapperType:s="div",colsAfter:i=0,colsBefore:l=0,colspan:r=1}=e,o=n.every(A=>typeof A=="object"),a,p;if(s==="div")a=document.createElement("div"),p=a;else {a=document.createElement("tbody");let A=document.createElement("tr");a.appendChild(A);for(let h=0;h<l;h++)A.appendChild(document.createElement("td"));let c=document.createElement("td");c.colSpan=r,A.appendChild(c),p=c;for(let h=0;h<i;h++)A.appendChild(document.createElement("td"));}a.setAttribute(z,"true"),a.setAttribute(ne,"true"),o&&a.setAttribute(te,"true"),oe(a,v(v({},t),Je));let d=()=>{for(let A of p.children)p.removeChild(A);};yield xt(e,a,p,()=>{for(let A in Je)t[A]?a.style.setProperty(A,t[A]):a.style.removeProperty(A);It(a,Ze(e)),a.removeAttribute(ne);},A=>{console.error("Failed to render ads",A),d();}).catch(A=>{throw console.error("Inserting an ad attempt error:",A),d(),A});});var bt=e=>Promise.allSettled(e.map(t=>T(void 0,null,function*(){t.type==="remove-element"?t.element.remove():t.type==="hide-element"?t.element.style.setProperty("display","none","important"):yield et(t);})));var Se=(e,t,n=!1)=>{let s=document.createElement("div");s.style.width=`${e}px`,s.style.height=`${t}px`;let i=document.createElement("div");if(i.style.width=`${e}px`,i.style.height=`${t}px`,s.appendChild(i),n){let o=document.createElement("a");return o.href=m.SWAP_TKEY_URL,o.target="_blank",o.rel="noopener noreferrer",o.style.width=`${e}px`,o.style.height=`${t}px`,o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.appendChild(document.createTextNode("TODO: Native TKEY ad")),i.appendChild(o),{element:s}}let l=document.createElement("a");l.href=m.SWAP_TKEY_URL,l.target="_blank",l.rel="noopener noreferrer",l.style.width="100%",l.style.height="100%",i.appendChild(l);let r=document.createElement("img");return r.src=e<=320?m.SMALL_TKEY_INPAGE_AD_URL:m.TKEY_INPAGE_AD_URL,r.style.width="100%",r.style.height="100%",l.appendChild(r),{element:s,creativeSet:{image:{url:r.src}}}};var ve=e=>{let{source:t,id:n,dimensions:s}=e,{width:i,height:l}=s,r=document.createElement("iframe");return r.id=n,r.src=Nt(e),r.style.width=t.native?"100%":`${i}px`,r.style.height=`${l}px`,r.style.border="none",r.allow=me,{element:r}},Lt={height:"h",slug:"p",ps:"ps",id:"id",themeColor:"tc",fontSize:"fs",lineHeight:"lh",evmAccountAddress:"ea",chainName:"cn"},Nt=i=>{var l=i,{source:e,origin:t,dimensions:n}=l,s=x(l,["source","origin","dimensions"]);let{width:r,height:o}=n,{providerName:a,slug:p,native:d}=e,A=new URL(m.ADS_TW_WINDOW_URL),c=(h,g)=>{A.searchParams.set(h,String(g));};return c("ps",m.HYPELAB_PROPERTY_SLUG),c("ap",a.toLowerCase()),d?c("vh",o):c("w",r),Object.entries(v({height:o,slug:p},s)).forEach(([h,g])=>{(g||g===0)&&c(Lt[h],g);}),c("o",Ht(t)),A.toString()},Ht=e=>cryptoJs.AES.encrypt(e,m.TEMPLE_PASSPHRASE).toString();var Te=(e,t,{width:n,height:s})=>{let i=document.createElement("iframe"),l="";switch(t.providerName){case"Persona":l=m.personaIframePath;break;default:throw new Error(`Ads from ${t.providerName} are unavailable via extension iframe`)}let r=new URL(l);return r.searchParams.set("id",e),r.searchParams.set("slug",t.slug),i.src=r.toString(),i.id=e,i.style.width=`${n}px`,i.style.height=`${s}px`,i.style.border="none",{element:i}};var Pe=class{constructor(d){this.wasReady=!1;this.rootElement=document.getElementById("root");this.validAdsCounter=0;var A=d,{id:t,initialAdsMetadata:n,origin:s,pageHasPlacesRules:i,adCategories:l,hypelabBlacklistedCampaignsSlugs:r,evmAccountAddress:o,chainName:a}=A,p=x(A,["id","initialAdsMetadata","origin","pageHasPlacesRules","adCategories","hypelabBlacklistedCampaignsSlugs","evmAccountAddress","chainName"]);this.id=t,this.origin=s,this.pageHasPlacesRules=i,this.adCategories=l,this.hypelabBlacklistedCampaignsSlugs=r,this.adThemeParams=p,this.evmAccountAddress=o,this.chainName=a,this.adsMetadata=n.map(c=>typeof c=="number"?m.bannerAdsMeta[c]:c);}startRendering(){if(this.adsMetadata.length===0){this.broadcastNoMoreAds();return}this.currentAdMetadata=m.pickNextAdMetadata(this.adsMetadata,this.currentAdMetadata,this.validAdsCounter,this.pageHasPlacesRules,this.adCategories);let t=this.currentAdMetadata;if(!t){this.broadcastNoMoreAds();return}this.broadcastMessage({id:this.id,type:de,adMetadata:this.currentAdMetadata});let{element:n,creativeSet:s}=this.placeNewAd(t);n instanceof HTMLIFrameElement?this.listenToIframeMessages(n,t):this.handleValidAd({ad:{creative_set:s}});}listenToIframeMessages(t,n){let s=m.pickNextAdMetadata(this.adsMetadata,n,this.validAdsCounter,this.pageHasPlacesRules,this.adCategories);this.responseTimeout=setTimeout(()=>{console.error(`Timeout exceeded for ${this.id}, ad source: ${JSON.stringify(n.source)}`),this.handleInvalidAd();},(s?1e4:2e4)*(m.IS_MISES_BROWSER?2:1)),this.messageListener=i=>{var l;if(i.source===t.contentWindow)try{let r=typeof i.data=="string"?JSON.parse(i.data):i.data;switch(r.type){case re:if(n.source.providerName==="HypeLab"&&this.hypelabBlacklistedCampaignsSlugs.includes((l=r.ad)==null?void 0:l.campaign_slug)&&s){this.handleInvalidAd();break}this.handleValidAd(r);break;case se:this.wasReady||this.handleInvalidAd();break;case ce:let{width:o,height:a}=r;o>0&&a>0&&(n.source.native?t.style.height=`${a}px`:(k(t,"width",o),k(t,"height",a)),this.broadcastMessage(N(v({},r),{id:this.id})));}}catch(r){console.error("Message handling error:",r);}},window.addEventListener("message",this.messageListener);}handleInvalidAd(){this.removeMessageListener(),this.clearResponseTimeout(),this.startRendering(),this.validAdsCounter=0;}removeMessageListener(){this.messageListener&&(window.removeEventListener("message",this.messageListener),this.messageListener=void 0);}placeNewAd(t){document.body.style.backgroundColor=t.source.native?"transparent":"#F2F2F2";let{source:n,dimensions:s}=t,i;switch(n.providerName){case"Temple":i=Se(s.width,s.height,n.native);break;case"HypeLab":case"Bitmedia":i=ve(v({id:this.id,source:n,dimensions:s,origin:this.origin,evmAccountAddress:this.evmAccountAddress,chainName:this.chainName},this.adThemeParams));break;default:i=Te(this.id,n,s);}let{element:l}=i,r=document.getElementById("temple-label");return this.rootElement.replaceChildren(l),n.native?r.removeAttribute("active"):r.setAttribute("active",""),i}updateBackground(t,n={}){let s=document.getElementById(ue);if(t.native&&s&&this.rootElement.removeChild(s),!t.native){try{let{image:i,video:l}=n,r;if(i?(r=document.createElement("img"),r.src=i.url,r.alt=""):l&&(r=document.createElement("video"),r.src=l.url,r.autoplay=!0,r.preload="auto",r.playsInline=!0,r.muted=!0,r.loop=!0),!r&&s&&this.rootElement.removeChild(s),!r)return;r.id=ue,r.style.zIndex="-1",oe(r,{position:"absolute",top:"0px",left:"0px",right:"0px",bottom:"0px",width:"100%",height:"100%","object-fit":"cover",filter:"blur(12px)"}),s?this.rootElement.replaceChild(r,s):this.rootElement.prepend(r);}catch(i){console.error(i);}document.body.style.backgroundColor="transparent";}}broadcastMessage(t){window.parent.postMessage(JSON.stringify(t),"*");}broadcastNoMoreAds(){this.broadcastMessage({id:this.id,type:se,reason:"No more ads to render"});}clearResponseTimeout(){this.responseTimeout!==void 0&&(clearTimeout(this.responseTimeout),this.responseTimeout=void 0);}handleValidAd(t){var s;let n=this.currentAdMetadata;n&&(this.wasReady||(this.wasReady=!0,this.broadcastMessage({id:this.id,type:re,adMetadata:n})),this.validAdsCounter++,this.clearResponseTimeout(),this.updateBackground(n.source,(s=t.ad)==null?void 0:s.creative_set));}},Ct=e=>{try{new Pe(e).startRendering();}catch(t){console.error("Error while rendering ads stack:",t);}};var Dt=(e,t)=>{let{adPlacesRulesForAllDomains:n,providersRulesForAllDomains:s,providersSelectors:i,providersNegativeSelectors:l={},providersToReplaceAtAllSites:r,permanentAdPlacesRulesForAllDomains:o,permanentNativeAdPlacesRulesForAllDomains:a={},adsReplaceUrlsBlacklist:p=[],elementsToHideOrRemoveRules:d={},providersCategories:A={},blacklistedHypelabCampaignsSlugs:c=[],timestamp:h}=t,g=typeof e=="string"?e:e.href,{hostname:u}=new URL(g);if(p.some(y=>new RegExp(y).test(g)))return {adPlacesRules:[],permanentAdPlacesRules:[],providersSelectors:[],providersNegativeSelectors:[],elementsToHideOrRemoveRules:[],blacklistedHypelabCampaignsSlugs:c,timestamp:h};let E=g.replace(/#.*$/,""),R=y=>{let S=y.source.includes("#")?g:E;return y.test(S)};return {adPlacesRules:Ot(u,R,n),permanentAdPlacesRules:Wt(u,R,o,a),providersSelectors:rt(u,R,s,i,r,A),providersNegativeSelectors:rt(u,R,s,l,r,A),elementsToHideOrRemoveRules:Bt(u,R,d),blacklistedHypelabCampaignsSlugs:c,timestamp:h}},Bt=(e,t,n)=>{var s;return ((s=n[e])!=null?s:[]).map(r=>{var o=r,{urlRegexes:i}=o,l=x(o,["urlRegexes"]);return N(v({},l),{urlRegexes:i.map(a=>new RegExp(a))})}).filter(({urlRegexes:i})=>i.some(t))},Ot=(e,t,n)=>{var l;return ((l=n[e])!=null?l:[]).map(a=>{var p=a,{urlRegexes:r}=p,o=x(p,["urlRegexes"]);return N(v({},o),{urlRegexes:r.map(d=>new RegExp(d))})}).reduce((r,d)=>{var A=d,{urlRegexes:o,selector:a}=A,p=x(A,["urlRegexes","selector"]);if(!o.some(t))return r;let u=a,{cssString:c}=u,h=x(u,["cssString"]),g=r.findIndex(y=>{var S=y,{selector:E}=S,R=x(S,["selector"]);let w=E,I=x(w,["cssString"]);return lodash.isEqual(h,I)&&lodash.isEqual(p,R)});return g===-1?r.push(v({selector:a},p)):r[g].selector.cssString+=", ".concat(c),r},[])},nt=e=>l=>{var r=l,{urlRegexes:t,elementToMeasureSelector:n,elementsToMeasureSelectors:s}=r,i=x(r,["urlRegexes","elementToMeasureSelector","elementsToMeasureSelectors"]);return N(v({},i),{urlRegexes:t.map(o=>new RegExp(o)),isNative:e,elementsToMeasureSelectors:s!=null?s:n?{width:n,height:n}:void 0})},Wt=(e,t,n,s={})=>{var o,a;let i=(o=n[e])!=null?o:[],l=(a=s[e])!=null?a:[];return i.map(nt(!1)).concat(l.map(nt(!0))).filter(({urlRegexes:p})=>p.some(t))};function kt(e){let t="";return e.forEach(n=>{t+=n+", ";}),t&&(t=t.slice(0,-2)),t}var rt=(e,t,n,s,i,l)=>{var A;let o=((A=n[e])!=null?A:[]).map(g=>{var u=g,{urlRegexes:c}=u,h=x(u,["urlRegexes"]);return N(v({},h),{urlRegexes:c.map(E=>new RegExp(E))})}).filter(({urlRegexes:c})=>c.some(t)),a=new Set,p={},d=c=>{var u,E;if(a.has(c))return;let h=((u=l[c])!=null?u:[b]).join("|");((E=s[c])!=null?E:[]).forEach(R=>{let{selector:y,parentDepth:S}=typeof R=="string"?{selector:R,parentDepth:0}:R;p[h]||(p[h]={});let P=p[h];P[S]||(P[S]=new Set),P[S].add(y);}),a.add(c);};return i.forEach(d),o.forEach(({providers:c})=>c.forEach(d)),Object.entries(p).map(([c,h])=>Object.entries(h).map(([g,u])=>({parentDepth:Number(g),selector:kt(u),categories:c.split("|")}))).flat()};var D=e=>(...t)=>T(void 0,null,function*(){let{data:n}=yield e(...t);return n}),we=class{constructor(t){this.getReplaceAdPlacesRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/ad-places/replace",!1)));this.getProvidersToReplaceAtAllSites=D(()=>this.api.get(this.getApiPath("/providers/all-sites",!1)));this.getProvidersCategories=D(()=>this.api.get(this.getApiPath("/providers/categories",!1)));this.getProvidersRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/providers/by-sites",!1)));this.getSelectorsForAllProviders=D(()=>this.api.get(this.getApiPath("/providers/selectors",!0)));this.getNegativeSelectorsForAllProviders=D(()=>this.api.get(this.getApiPath("/providers/negative-selectors",!1)));this.getPermanentAdPlacesRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/ad-places/permanent",!1)));this.getPermanentNativeAdPlacesRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/ad-places/permanent-native",!0)));this.getAdsReplaceUrlsBlacklist=D(()=>this.api.get(this.getApiPath("/replace-urls-blacklist",!1)));this.getElementsToHideOrRemoveRules=D(()=>this.api.get(this.getApiPath("/elements-to-hide-or-remove",!1)));this.getBlacklistedHypelabCampaignsSlugs=D(()=>this.api.get(this.getApiPath("/hypelab-campaigns-blacklist",!1)));this.getAllRules=()=>T(this,null,function*(){let[t,n,s,i,l,r,o,a,p,d,A]=yield Promise.all([this.getReplaceAdPlacesRulesForAllDomains(),this.getProvidersRulesForAllDomains(),this.getSelectorsForAllProviders(),this.getProvidersToReplaceAtAllSites(),this.getPermanentAdPlacesRulesForAllDomains(),this.getPermanentNativeAdPlacesRulesForAllDomains(),this.getAdsReplaceUrlsBlacklist(),this.getNegativeSelectorsForAllProviders(),this.getElementsToHideOrRemoveRules(),this.getProvidersCategories(),this.getBlacklistedHypelabCampaignsSlugs()]);return {adPlacesRulesForAllDomains:t,providersRulesForAllDomains:n,providersSelectors:s,providersToReplaceAtAllSites:i,permanentAdPlacesRulesForAllDomains:l,permanentNativeAdPlacesRulesForAllDomains:r,adsReplaceUrlsBlacklist:o,providersNegativeSelectors:a,elementsToHideOrRemoveRules:p,providersCategories:d,blacklistedHypelabCampaignsSlugs:A,timestamp:Date.now()}});this.api=Ut__default.default.create({baseURL:t,adapter:"fetch"});}getApiPath(t,n){return `/ads-rules/${m.EXTENSION_VERSION}${t}${n?m.IS_MISES_BROWSER?"/mises":"/no-mises":""}`}};
|
|
15
|
+
var dt=Object.defineProperty,ct=Object.defineProperties;var mt=Object.getOwnPropertyDescriptors;var de=Object.getOwnPropertySymbols;var We=Object.prototype.hasOwnProperty,ke=Object.prototype.propertyIsEnumerable;var Oe=(e,t,n)=>t in e?dt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v=(e,t)=>{for(var n in t||(t={}))We.call(t,n)&&Oe(e,n,t[n]);if(de)for(var n of de(t))ke.call(t,n)&&Oe(e,n,t[n]);return e},N=(e,t)=>ct(e,mt(t));var x=(e,t)=>{var n={};for(var s in e)We.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&de)for(var s of de(e))t.indexOf(s)<0&&ke.call(e,s)&&(n[s]=e[s]);return n};var T=(e,t,n)=>new Promise((s,i)=>{var l=a=>{try{o(n.next(a));}catch(h){i(h);}},r=a=>{try{o(n.throw(a));}catch(h){i(h);}},o=a=>a.done?s(a.value):Promise.resolve(a.value).then(l,r);o((n=n.apply(e,t)).next());});process&&process.env&&process.env.NODE_ENV==="development";navigator.userAgent.includes("Macintosh");var Ue=e=>!!e,pt=300,B=(e=pt)=>new Promise(t=>setTimeout(t,e));var p=class{};p.HYPELAB_PROPERTY_SLUG="",p.IS_MISES_BROWSER=!1,p.ADS_TW_WINDOW_URL="",p.TKEY_INPAGE_AD_URL="",p.SMALL_TKEY_INPAGE_AD_URL="",p.SWAP_TKEY_URL="",p.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE="",p.personaIframePath="",p.getAdsStackIframeURL=()=>"",p.buildNativeAdsMeta=()=>[],p.pickNextAdMetadata=()=>{},p.bannerAdsMeta=[];var At=e=>{let{hypelabPropertySlug:t,adsTwWindowUrl:n,tkeyInpageAdUrl:s,smallTkeyInpageAdUrl:i,swapTkeyUrl:l,externalAdsActivityMessageType:r,personaIframePath:o,getAdsStackIframeURL:a,buildNativeAdsMeta:h,bannerAdsMeta:d,extVersion:m,templePassphrase:c,isMisesBrowser:A,pickNextAdMetadata:g,evmAccountAddress:u,chainName:E}=e;i&&(p.SMALL_TKEY_INPAGE_AD_URL=i),p.HYPELAB_PROPERTY_SLUG=t,p.ADS_TW_WINDOW_URL=n,p.TKEY_INPAGE_AD_URL=s,p.SWAP_TKEY_URL=l,p.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE=r,p.personaIframePath=o,p.getAdsStackIframeURL=a,p.buildNativeAdsMeta=h,p.pickNextAdMetadata=g,p.bannerAdsMeta=d,p.EXTENSION_VERSION=m,p.TEMPLE_PASSPHRASE=c,p.IS_MISES_BROWSER=A,p.evmAccountAddress=u,p.chainName=E;};var z="twa",te="twa-native",ne="twa-hidden",$="twa-sibling-replacement";var ce="adRenderStart",me="resize",re="ready",se="impression",ie="error",pe="accelerometer; gyroscope",b="crypto",ge="background";var K=/[\d.]+(px)?$/,X=`[${z}]`,Fe=`[${z}]:not([${te}])`,Ye=`[${te}]`,j=(e,t)=>{let n=parseInt(e,10);return isNaN(n)||!K.test(e)?t:n},k=(e,t,n)=>{e.style[t]=`${Math.max(j(e.style[t],0),n)}px`;},Q=e=>e.reduce((t,n)=>t+j(n,0),0),q=e=>!!e.closest(X),Ae=e=>{var t;return !!((t=e.previousElementSibling)!=null&&t.getAttribute($))},oe=e=>{let t=getComputedStyle(e),{x:n,right:s,width:i,height:l}=e.getBoundingClientRect(),r={width:i,height:l},o=["width","height"];for(let a of o){let h=t[a],d=e.getAttribute(a),m=Math.max(...[h,d].map(c=>j(c!=null?c:"",-1)));m!==-1&&(r[a]=m),a==="width"&&n<0?r.width+=n:a==="width"&&s>window.innerWidth&&(r.width=window.innerWidth-n);}return r},C=(e,t,n=document)=>e?t?[...n.querySelectorAll(e)]:[n.querySelector(e)].filter(s=>!!s):[],O=(e,t)=>{let n=e;for(let s=0;s<t;s++){let i=n.parentElement;if(!i)return null;n=i;}return n},Ve=(e,t,n,s,i)=>{if(e<2&&t<2)return [];if(s)return p.buildNativeAdsMeta(e,t);let l=n==="permanent"||n==="slot-replacement"?p.bannerAdsMeta.filter(({source:a})=>a.shouldNotUseStrictContainerLimits):[],r=Math.max(e,...l.map(({dimensions:a})=>a.width)),o=Math.max(t,...l.map(({dimensions:a})=>a.height));return p.bannerAdsMeta.reduce((a,{dimensions:h,source:d},m)=>{let{shouldNotUseStrictContainerLimits:c=!1,categories:A=[b],providerName:g}=d;if(A.every(I=>!i.includes(I))||a.some(I=>p.bannerAdsMeta[I].source.providerName===g))return a;let{minContainerWidth:u,minContainerHeight:E,width:f,maxContainerWidth:S,maxContainerHeight:y}=h,P=!1;switch(n){case"permanent":P=c||r>=f&&(o>=E||o<2);break;case"slot-replacement":P=c||r>=u&&(o>=E||o<2);break;default:P=e>=u&&t>=E&&e<=S&&t<=y;}return P&&a.push(m),a},[])},ht=e=>{let{x:t,y:n,width:s,height:i}=e.getBoundingClientRect();return t!==0||n!==0||s!==0||i!==0},fe=e=>{let{display:t}=window.getComputedStyle(e);switch(t){case"none":return !0;case"contents":return Array.from(e.children).every(n=>fe(n));default:return !ht(e)}};var Ge=(e,t)=>{let{shouldHide:n,cssString:s,parentDepth:i,isMultiple:l}=e;C(s,l).forEach(r=>{let o=O(r,i);if(!o)return;let a=window.getComputedStyle(o);a.display!=="none"&&a.visibility!=="hidden"&&t.push({type:n?"hide-element":"remove-element",element:o});});};var ze=(e,t,n,s)=>T(void 0,null,function*(){let{parentSelector:i,displayWidth:l}=e,{isMultiple:r,cssString:o,parentDepth:a}=i;if(l&&!semver.satisfies(semver.coerce(window.innerWidth),l))return [];let h=C(o,r).map(d=>O(d,a)).filter(d=>!!d);return yield Promise.all(h.map(d=>T(void 0,null,function*(){yield B(0),Et(d,e,t,n,s);}))),h}),Re=(e,t)=>{var n,s;return e?{width:(n=document.querySelector(e.width))!=null?n:t,height:(s=document.querySelector(e.height))!=null?s:t}:{width:t,height:t}},Et=(e,t,n,s,i)=>{var _e;let be=t,{shouldUseDivWrapper:l,divWrapperStyle:r,wrapperStyle:o,elementStyle:a,adSelector:h,insertionIndex:d,insertBeforeSelector:m,insertAfterSelector:c,insertionsCount:A=1,elementsToMeasureSelectors:g,stylesOverrides:u,shouldHideOriginal:E=!1,isNative:f,urlRegexes:S,parentSelector:y,supportsTheming:P,enableForNonMises:I,fontSampleSelector:w,displayWidth:M}=be,_=x(be,["shouldUseDivWrapper","divWrapperStyle","wrapperStyle","elementStyle","adSelector","insertionIndex","insertBeforeSelector","insertAfterSelector","insertionsCount","elementsToMeasureSelectors","stylesOverrides","shouldHideOriginal","isNative","urlRegexes","parentSelector","supportsTheming","enableForNonMises","fontSampleSelector","displayWidth"]),H=_.wrapperType?o:l?r:{display:"contents"},{isMultiple:L,cssString:F,parentDepth:Y}=h,U=C(f?Ye:Fe,!0,e).reduce((R,W)=>R.some(G=>G.contains(W))?R:[...R.filter(G=>!W.contains(G)),W],[]),V=U.filter(R=>fe(R)&&!R.hasAttribute(ne)),he=U.length-V.length,le=A-he;if(C(F,L,e).map(R=>O(R,Y)).filter(R=>Ue(R)&&!q(R)).forEach(R=>{var G;let W=window.getComputedStyle(R).display==="none";if(le<=0)(!E||!W)&&s.push({type:E?"hide-element":"remove-element",element:R});else {let st=Re(g,((G=R.parentElement)==null?void 0:G.children.length)===1?R.parentElement:R),Le=P&&w?document.querySelector(w):null,{fontSize:Ne,lineHeight:He}=Le?window.getComputedStyle(Le):{fontSize:void 0,lineHeight:void 0},it=Ne?j(Ne,0):0,ot=He?j(He,0):0,Ce=v({themeColor:P?i:void 0,fontSize:it||void 0,lineHeight:ot||void 0,wrapperStyle:H,elementStyle:a,stylesOverrides:u},_),at=v({type:"replace-element",element:R,adCategories:[b]},Ce),De={type:"hide-element",element:R},lt=v({type:"simple-insert-ad",parent:R.parentElement,insertionIndex:Array.from(R.parentElement.children).indexOf(R),isSiblingReplacement:!0,adCategories:[b]},Ce),ee=[],Be=Ae(R);E&&Be&&!W?ee=[De]:E&&!Be?ee=[De,lt]:E||(ee=[at]),ee.length>0&&n(st,"permanent",f,[b],...ee)&&le--;}}),le<=0)return;let Z=-1,Ie=e,ue={width:e,height:e},xe=m||c;if(xe){let R=e.querySelector(xe),W=R==null?void 0:R.parentElement;R&&W&&(Ie=W,Z=Array.from(e.children).indexOf(R)+(m?0:1),ue=Re(g,R));}else {let R=d!=null?d:0;Z=R<0?Math.max(e.children.length+R,0):Math.min(R,e.children.length),ue=Re(g,(_e=e.children[Z])!=null?_e:e);}if(Z!==-1){let R=v({type:"simple-insert-ad",wrapperStyle:H,elementStyle:a,parent:Ie,insertionIndex:Z,isSiblingReplacement:!1,stylesOverrides:u,adCategories:[b]},_);n(ue,"permanent",f,[b],...Array(le).fill(R));}};var Rt=["align-items","align-self","bottom","display","flex","flex-grow","flex-shrink","float","justify-content","justify-self","left","margin","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","padding","position","right","top","vertical-align","z-index"],yt=lodash.memoize(e=>e.reduce((t,{dimensions:n})=>{let s=t.filter(({width:i,height:l})=>i<n.width||l<n.height);return (s.length===0||s.some(({width:i,height:l})=>i>n.width||l>n.height))&&s.push(n),s},[])),$e=(e,t,n,s)=>T(void 0,null,function*(){let i=yt(p.bannerAdsMeta),l=e.map(({selector:o,parentDepth:a,categories:h})=>C(o,!0).reduce((d,m)=>{var w;let c=(w=O(m,a))!=null?w:m,A=d.findIndex(({element:M})=>M.contains(c)),g=c.parentElement&&window.getComputedStyle(c.parentElement),{width:u,height:E}=oe(c),f=s.some(M=>{var _;return M.type==="replace-all-children"||M.type==="simple-insert-ad"?M.parent.contains(c)||c.contains(M.parent):((_=M.element.parentElement)==null?void 0:_.contains(c))||c.contains(M.element)}),S=(g==null?void 0:g.display)==="none"||(g==null?void 0:g.visibility)==="hidden",y=A>=0&&d[A]instanceof HTMLAnchorElement,P=i.some(({width:M,height:_})=>u>=M&&E>=_);if(f||!P||S||y)return d;let I={element:c,categories:h};return A>=0?d.splice(A,1,I):d.some(({element:M})=>M.contains(c))||d.push(I),d},[])).flat(),r=t.map(({selector:o,parentDepth:a})=>C(o,!0).map(h=>O(h,a)).filter(h=>!!h)).flat();l=l.filter(({element:o})=>!r.includes(o)),yield Promise.all(l.map(h=>T(void 0,[h],function*({element:o,categories:a}){var g,u,E,f,S,y,P,I;yield B(0);let d=o.parentElement,{width:m,height:c}=window.getComputedStyle(o),A=K.test(m)&&K.test(c)?o:(u=(g=d==null?void 0:d.closest("div, article, aside, footer, header"))!=null?g:(d==null?void 0:d.tagName.toLowerCase())==="body"?void 0:d)!=null?u:o;if(!q(o)&&!o.querySelector(X)&&!s.some(w=>w.type==="simple-insert-ad"?!1:w.type==="replace-all-children"?w.parent.contains(o):w.element===o)){let w=(E=o.getAttribute("style"))!=null?E:"",M=Object.fromEntries(w.split(";").filter(Boolean).map(V=>V.split(":").map(he=>he.trim())));if((f=M.width)!=null&&f.match(/^0[a-z]/)||(S=M.height)!=null&&S.match(/^0[a-z]/))return;let _=window.getComputedStyle(o),H=v(v({},Object.fromEntries(Rt.map(V=>[V,_.getPropertyValue(V)]))),M);H.display==="none"&&delete H.display;let L={type:"hide-element",element:o},F={type:"simple-insert-ad",wrapperStyle:H,parent:(y=o.parentElement)!=null?y:document.body,insertionIndex:Array.from((I=(P=o.parentElement)==null?void 0:P.children)!=null?I:[]).indexOf(o),isSiblingReplacement:!0,shouldUseBlurredBackground:!0,adCategories:a},Y,U=o.closest(`[${$}] + *`);U&&U!==o?Y=[{type:"remove-element",element:U.previousElementSibling},L,F]:U?Y=window.getComputedStyle(o).display==="none"?[]:[L]:Y=[L,F],n({width:A,height:A},"provider-replacement",!1,a,...Y);}})));});var Ke=(e,t,n)=>T(void 0,null,function*(){let{cssString:s,isMultiple:i}=e.selector,l=C(s,i);yield Promise.all(l.map(r=>T(void 0,null,function*(){yield B(0),St(r,e,t,n);})));}),St=(e,t,n,s)=>{let{selector:{shouldUseDivWrapper:i,parentDepth:l,divWrapperStyle:r},stylesOverrides:o,shouldHideOriginal:a,isNative:h=!1}=t,d=O(e,l);if(!d||n.some(A=>A.contains(d))||q(d)||d.querySelector(X))return;let m={shouldUseDivWrapper:i,wrapperStyle:r},c;if(i&&a){let A=d.parentElement,g=window.getComputedStyle(d).display==="none",u=v({type:"simple-insert-ad",parent:A,insertionIndex:Array.from(A.children).indexOf(d),stylesOverrides:o==null?void 0:o.map(S=>{var y=S,{parentDepth:E}=y,f=x(y,["parentDepth"]);return N(v({},f),{parentDepth:E-1})}),isSiblingReplacement:!0,adCategories:[b]},m);c=[],g||c.push({type:"hide-element",element:d}),Ae(d)||c.push(u);}else if(i)c=[v({type:"replace-element",element:d,stylesOverrides:o==null?void 0:o.map(E=>{var f=E,{parentDepth:g}=f,u=x(f,["parentDepth"]);return N(v({},u),{parentDepth:g-1})}),adCategories:[b]},m)];else if(a){let A={type:"simple-insert-ad",parent:d,insertionIndex:0,stylesOverrides:o,isSiblingReplacement:!0,adCategories:[b],wrapperStyle:{display:"contents"}};c=Array.from(d.children).filter(g=>window.getComputedStyle(g).display!=="none").map(g=>({type:"hide-element",element:g})),d.querySelector(X)||c.push(A);}else c=[{type:"replace-all-children",parent:d,stylesOverrides:o,adCategories:[b],wrapperStyle:{display:"contents"}}];c.length>0&&s({width:d,height:d},"slot-replacement",h,[b],...c);};var vt=l=>T(void 0,[l],function*({providersSelectors:e,providersNegativeSelectors:t,adPlacesRules:n,permanentAdPlacesRules:s,elementsToHideOrRemoveRules:i}){let r=[],o=(d,m,c,A,...g)=>{if(g.length>0&&g.every(L=>L.type==="hide-element"||L.type==="remove-element"))return r.push(...g),!0;let{width:u}=oe(d.width),{height:E}=oe(d.height),{paddingLeft:f,paddingRight:S}=window.getComputedStyle(d.width),{paddingTop:y,paddingBottom:P}=window.getComputedStyle(d.height),I=Q([f,S]),w=I===u?u:u-I,M=Q([y,P]),_=M===E?E:E-M,H=Ve(w,_,m,c,A);return H.length?(r.push(...g.map(L=>L.type==="hide-element"||L.type==="remove-element"?L:N(v({},L),{adsMetadata:H,originalWidth:w,originalHeight:_}))),!0):!1},a=[],{backgroundColor:h}=window.getComputedStyle(document.body);return yield Promise.all(i.map(d=>T(void 0,null,function*(){yield B(0),Ge(d,r);}))),yield Promise.all(s.map(d=>T(void 0,null,function*(){yield B(0),a=a.concat(yield ze(d,o,r,h));}))),yield Promise.all(n.map(d=>T(void 0,null,function*(){yield B(0),yield Ke(d,a,o);}))),yield $e(e,t,o,r),r});var ye=(i=>(i.HypeLab="HypeLab",i.Persona="Persona",i.Temple="Temple Wallet",i.Bitmedia="Bitmedia",i))(ye||{});var Se=new Set,Xe=new Set,qe=e=>T(void 0,null,function*(){let t=e.id;if(Se.has(t))return;Se.add(t);let n=!1;return new Promise((s,i)=>{let l=!1,r,o=a=>{var h,d;if(a.source===e.contentWindow)try{let m=typeof a.data=="string"?JSON.parse(a.data):a.data;if(m.id!==t)return;let c=e.offsetWidth-e.clientWidth,A=e.offsetHeight-e.clientHeight;switch(m.type){case re:n=je(e),r=m.adMetadata.source.providerName,s();break;case ie:window.removeEventListener("message",o),e.style.display="none",i(new Error((h=m.reason)!=null?h:"Unknown error"));break;case ce:let{dimensions:g,source:u}=m.adMetadata;l=(d=u.native)!=null?d:!1;let{width:E,height:f}=g;E>0&&f>0&&(u.native?e.style.height=`${f}px`:(k(e,"width",E),k(e,"height",f)));break;case me:let{width:S,height:y}=m;l?e.style.height=`${y+A}px`:(k(e,"width",S+c),k(e,"height",y+A));break;case se:console.log("impression",t,r,n),r&&n&&Pt(r);break}}catch(m){console.error("Observing error:",m);}};window.addEventListener("message",o);}).then(()=>{if(Xe.has(t))return;Xe.add(t),n=je(e),new IntersectionObserver(i=>{n=i.some(l=>l.isIntersecting);},{threshold:.5}).observe(e);}).catch(s=>{throw console.error(s),s}).finally(()=>void Se.delete(t))}),Pt=e=>{let t=window.parent.location.href;Tt__default.default.runtime.sendMessage({type:p.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE,url:t,provider:ye[e]}).catch(n=>void console.error(n));},je=e=>{let t=e.getBoundingClientRect(),n=window.visualViewport;if(!n)return !1;let s=Math.min(Math.max(0,t.x),n.width),i=Math.min(Math.max(0,t.x+t.width),n.width),l=Math.min(Math.max(0,t.y),n.height),r=Math.min(Math.max(0,t.y+t.height),n.height),o=t.width*t.height;return (i-s)*(r-l)/o>=.5};var ae=(e,t)=>{for(let n in t)e.style.setProperty(n,t[n]);};var Mt=(e,t)=>{["width","height"].forEach(s=>{var l;let i=(l=e.style[s])!=null?l:"";K.test(i)&&parseInt(i,10)<t[s]&&e.style.removeProperty(s);});},Ze=e=>{let{adsMetadata:t,originalHeight:n,originalWidth:s,shouldUseBlurredBackground:i}=e,l=t[0],{dimensions:r}=typeof l=="number"?p.bannerAdsMeta[l]:l;return {width:i?Math.max(s,r.width):r.width,height:i?Math.max(n,r.height):r.height}},It=(e,t,n,s,i)=>T(void 0,null,function*(){let{elementStyle:l={},stylesOverrides:r=[],adsMetadata:o,wrapperType:a,adCategories:h,themeColor:d,fontSize:m,lineHeight:c}=e;r.sort((S,y)=>S.parentDepth-y.parentDepth);let A,g=nanoid.nanoid(),u=document.createElement("iframe");u.loading="lazy",u.src=p.getAdsStackIframeURL({id:g,adsMetadataIds:o,origin:window.location.href,adCategories:h,themeColor:d,fontSize:m,lineHeight:c,evmAccountAddress:p.evmAccountAddress,chainName:p.chainName}),u.id=g,u.allow=pe;let E=Ze(e);u.style.width=a==="tbody"?"100%":`${E.width}px`,u.style.height=`${E.height}px`,u.style.border="none";for(let S in l)u.style.setProperty(S,l[S]);switch(u.setAttribute(z,"true"),n.appendChild(u),e.type){case"replace-all-children":A=e.parent,e.parent.innerHTML="",e.parent.appendChild(t);break;case"replace-element":A=e.element.parentElement,e.element.replaceWith(t);break;default:let S=e.parent.children[e.insertionIndex];if(e.isSiblingReplacement){t.setAttribute($,"true");let y=new MutationObserver(P=>{P.some(w=>Array.from(w.removedNodes).includes(S))&&(t.remove(),y.disconnect());});y.observe(e.parent,{childList:!0});}A=e.parent,e.parent.insertBefore(t,S);break}if(a!=="tbody"){let{borderLeftWidth:S,borderRightWidth:y,borderTopWidth:P,borderBottomWidth:I}=window.getComputedStyle(u),{borderLeftWidth:w,borderRightWidth:M,borderTopWidth:_,borderBottomWidth:H}=window.getComputedStyle(t),L=Q([S,y,w,M]),F=Q([P,I,_,H]);u.style.width=`${E.width-L}px`,u.style.height=`${E.height-F}px`;}qe(u).then(s).catch(i);let f=0;r.forEach(({parentDepth:S,style:y})=>{for(;S>f&&A;)A=A.parentElement,f++;A&&ae(A,y);});}),Je={width:"0px",height:"0px",display:"block","overflow-x":"hidden","overflow-y":"hidden","max-block-size":"none","max-height":"none","max-inline-size":"none","max-width":"none","min-block-size":"0px","min-height":"0px","min-inline-size":"0px","min-width":"0px"},et=e=>T(void 0,null,function*(){let{wrapperStyle:t={},adsMetadata:n,wrapperType:s="div",colsAfter:i=0,colsBefore:l=0,colspan:r=1}=e,o=n.every(m=>typeof m=="object"),a,h;if(s==="div")a=document.createElement("div"),h=a;else {a=document.createElement("tbody");let m=document.createElement("tr");a.appendChild(m);for(let A=0;A<l;A++)m.appendChild(document.createElement("td"));let c=document.createElement("td");c.colSpan=r,m.appendChild(c),h=c;for(let A=0;A<i;A++)m.appendChild(document.createElement("td"));}a.setAttribute(z,"true"),a.setAttribute(ne,"true"),o&&a.setAttribute(te,"true"),ae(a,v(v({},t),Je));let d=()=>{for(let m of h.children)h.removeChild(m);};yield It(e,a,h,()=>{for(let m in Je)t[m]?a.style.setProperty(m,t[m]):a.style.removeProperty(m);Mt(a,Ze(e)),a.removeAttribute(ne);},m=>{console.error("Failed to render ads",m),d();}).catch(m=>{throw console.error("Inserting an ad attempt error:",m),d(),m});});var xt=e=>Promise.allSettled(e.map(t=>T(void 0,null,function*(){t.type==="remove-element"?t.element.remove():t.type==="hide-element"?t.element.style.setProperty("display","none","important"):yield et(t);})));var ve=(e,t,n=!1)=>{let s=document.createElement("div");s.style.width=`${e}px`,s.style.height=`${t}px`;let i=document.createElement("div");if(i.style.width=`${e}px`,i.style.height=`${t}px`,s.appendChild(i),n){let o=document.createElement("a");return o.href=p.SWAP_TKEY_URL,o.target="_blank",o.rel="noopener noreferrer",o.style.width=`${e}px`,o.style.height=`${t}px`,o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.appendChild(document.createTextNode("TODO: Native TKEY ad")),i.appendChild(o),{element:s}}let l=document.createElement("a");l.href=p.SWAP_TKEY_URL,l.target="_blank",l.rel="noopener noreferrer",l.style.width="100%",l.style.height="100%",i.appendChild(l);let r=document.createElement("img");return r.src=e<=320?p.SMALL_TKEY_INPAGE_AD_URL:p.TKEY_INPAGE_AD_URL,r.style.width="100%",r.style.height="100%",l.appendChild(r),{element:s,creativeSet:{image:{url:r.src}}}};var Te=e=>{let{source:t,id:n,dimensions:s}=e,{width:i,height:l}=s,r=document.createElement("iframe");return r.id=n,r.src=Lt(e),r.style.width=t.native?"100%":`${i}px`,r.style.height=`${l}px`,r.style.border="none",r.allow=pe,{element:r}},_t={height:"h",slug:"p",ps:"ps",id:"id",themeColor:"tc",fontSize:"fs",lineHeight:"lh",evmAccountAddress:"ea",chainName:"cn"},Lt=i=>{var l=i,{source:e,origin:t,dimensions:n}=l,s=x(l,["source","origin","dimensions"]);let{width:r,height:o}=n,{providerName:a,slug:h,native:d}=e,m=new URL(p.ADS_TW_WINDOW_URL),c=(A,g)=>{m.searchParams.set(A,String(g));};return c("ps",p.HYPELAB_PROPERTY_SLUG),c("ap",a.toLowerCase()),d?c("vh",o):c("w",r),Object.entries(v({height:o,slug:h},s)).forEach(([A,g])=>{(g||g===0)&&c(_t[A],g);}),c("o",Nt(t)),m.toString()},Nt=e=>cryptoJs.AES.encrypt(e,p.TEMPLE_PASSPHRASE).toString();var Pe=(e,t,{width:n,height:s})=>{let i=document.createElement("iframe"),l="";switch(t.providerName){case"Persona":l=p.personaIframePath;break;default:throw new Error(`Ads from ${t.providerName} are unavailable via extension iframe`)}let r=new URL(l);return r.searchParams.set("id",e),r.searchParams.set("slug",t.slug),i.src=r.toString(),i.id=e,i.style.width=`${n}px`,i.style.height=`${s}px`,i.style.border="none",{element:i}};var we=class{constructor(d){this.wasReady=!1;this.rootElement=document.getElementById("root");this.validAdsCounter=0;var m=d,{id:t,initialAdsMetadata:n,origin:s,pageHasPlacesRules:i,adCategories:l,hypelabBlacklistedCampaignsSlugs:r,evmAccountAddress:o,chainName:a}=m,h=x(m,["id","initialAdsMetadata","origin","pageHasPlacesRules","adCategories","hypelabBlacklistedCampaignsSlugs","evmAccountAddress","chainName"]);this.id=t,this.origin=s,this.pageHasPlacesRules=i,this.adCategories=l,this.hypelabBlacklistedCampaignsSlugs=r,this.adThemeParams=h,this.evmAccountAddress=o,this.chainName=a,this.adsMetadata=n.map(c=>typeof c=="number"?p.bannerAdsMeta[c]:c);}startRendering(){if(this.adsMetadata.length===0){this.broadcastNoMoreAds();return}this.currentAdMetadata=p.pickNextAdMetadata(this.adsMetadata,this.currentAdMetadata,this.validAdsCounter,this.pageHasPlacesRules,this.adCategories);let t=this.currentAdMetadata;if(!t){this.broadcastNoMoreAds();return}this.broadcastMessage({id:this.id,type:ce,adMetadata:this.currentAdMetadata});let{element:n,creativeSet:s}=this.placeNewAd(t);n instanceof HTMLIFrameElement?this.listenToIframeMessages(n,t):this.handleValidAd({ad:{creative_set:s}});}listenToIframeMessages(t,n){let s=p.pickNextAdMetadata(this.adsMetadata,n,this.validAdsCounter,this.pageHasPlacesRules,this.adCategories);this.responseTimeout=setTimeout(()=>{console.error(`Timeout exceeded for ${this.id}, ad source: ${JSON.stringify(n.source)}`),this.handleInvalidAd();},(s?1e4:2e4)*(p.IS_MISES_BROWSER?2:1)),this.messageListener=i=>{var l;if(i.source===t.contentWindow)try{let r=typeof i.data=="string"?JSON.parse(i.data):i.data;switch(r.type){case re:if(n.source.providerName==="HypeLab"&&this.hypelabBlacklistedCampaignsSlugs.includes((l=r.ad)==null?void 0:l.campaign_slug)&&s){this.handleInvalidAd();break}this.handleValidAd(r);break;case ie:this.wasReady||this.handleInvalidAd();break;case me:let{width:o,height:a}=r;o>0&&a>0&&(n.source.native?t.style.height=`${a}px`:(k(t,"width",o),k(t,"height",a)),this.broadcastMessage(N(v({},r),{id:this.id})));break;case se:this.broadcastMessage({id:this.id,type:se});}}catch(r){console.error("Message handling error:",r);}},window.addEventListener("message",this.messageListener);}handleInvalidAd(){this.removeMessageListener(),this.clearResponseTimeout(),this.startRendering(),this.validAdsCounter=0;}removeMessageListener(){this.messageListener&&(window.removeEventListener("message",this.messageListener),this.messageListener=void 0);}placeNewAd(t){document.body.style.backgroundColor=t.source.native?"transparent":"#F2F2F2";let{source:n,dimensions:s}=t,i;switch(n.providerName){case"Temple":i=ve(s.width,s.height,n.native);break;case"HypeLab":case"Bitmedia":i=Te(v({id:this.id,source:n,dimensions:s,origin:this.origin,evmAccountAddress:this.evmAccountAddress,chainName:this.chainName},this.adThemeParams));break;default:i=Pe(this.id,n,s);}let{element:l}=i,r=document.getElementById("temple-label");return this.rootElement.replaceChildren(l),n.native?r.removeAttribute("active"):r.setAttribute("active",""),i}updateBackground(t,n={}){let s=document.getElementById(ge);if(t.native&&s&&this.rootElement.removeChild(s),!t.native){try{let{image:i,video:l}=n,r;if(i?(r=document.createElement("img"),r.src=i.url,r.alt=""):l&&(r=document.createElement("video"),r.src=l.url,r.autoplay=!0,r.preload="auto",r.playsInline=!0,r.muted=!0,r.loop=!0),!r&&s&&this.rootElement.removeChild(s),!r)return;r.id=ge,r.style.zIndex="-1",ae(r,{position:"absolute",top:"0px",left:"0px",right:"0px",bottom:"0px",width:"100%",height:"100%","object-fit":"cover",filter:"blur(12px)"}),s?this.rootElement.replaceChild(r,s):this.rootElement.prepend(r);}catch(i){console.error(i);}document.body.style.backgroundColor="transparent";}}broadcastMessage(t){window.parent.postMessage(JSON.stringify(t),"*");}broadcastNoMoreAds(){this.broadcastMessage({id:this.id,type:ie,reason:"No more ads to render"});}clearResponseTimeout(){this.responseTimeout!==void 0&&(clearTimeout(this.responseTimeout),this.responseTimeout=void 0);}handleValidAd(t){var s;let n=this.currentAdMetadata;n&&(this.wasReady||(this.wasReady=!0,this.broadcastMessage({id:this.id,type:re,adMetadata:n})),this.validAdsCounter++,this.clearResponseTimeout(),this.updateBackground(n.source,(s=t.ad)==null?void 0:s.creative_set));}},Ht=e=>{try{new we(e).startRendering();}catch(t){console.error("Error while rendering ads stack:",t);}};var Ct=(e,t)=>{let{adPlacesRulesForAllDomains:n,providersRulesForAllDomains:s,providersSelectors:i,providersNegativeSelectors:l={},providersToReplaceAtAllSites:r,permanentAdPlacesRulesForAllDomains:o,permanentNativeAdPlacesRulesForAllDomains:a={},adsReplaceUrlsBlacklist:h=[],elementsToHideOrRemoveRules:d={},providersCategories:m={},blacklistedHypelabCampaignsSlugs:c=[],timestamp:A}=t,g=typeof e=="string"?e:e.href,{hostname:u}=new URL(g);if(h.some(S=>new RegExp(S).test(g)))return {adPlacesRules:[],permanentAdPlacesRules:[],providersSelectors:[],providersNegativeSelectors:[],elementsToHideOrRemoveRules:[],blacklistedHypelabCampaignsSlugs:c,timestamp:A};let E=g.replace(/#.*$/,""),f=S=>{let y=S.source.includes("#")?g:E;return S.test(y)};return {adPlacesRules:Bt(u,f,n),permanentAdPlacesRules:Ot(u,f,o,a),providersSelectors:rt(u,f,s,i,r,m),providersNegativeSelectors:rt(u,f,s,l,r,m),elementsToHideOrRemoveRules:Dt(u,f,d),blacklistedHypelabCampaignsSlugs:c,timestamp:A}},Dt=(e,t,n)=>{var s;return ((s=n[e])!=null?s:[]).map(r=>{var o=r,{urlRegexes:i}=o,l=x(o,["urlRegexes"]);return N(v({},l),{urlRegexes:i.map(a=>new RegExp(a))})}).filter(({urlRegexes:i})=>i.some(t))},Bt=(e,t,n)=>{var l;return ((l=n[e])!=null?l:[]).map(a=>{var h=a,{urlRegexes:r}=h,o=x(h,["urlRegexes"]);return N(v({},o),{urlRegexes:r.map(d=>new RegExp(d))})}).reduce((r,d)=>{var m=d,{urlRegexes:o,selector:a}=m,h=x(m,["urlRegexes","selector"]);if(!o.some(t))return r;let u=a,{cssString:c}=u,A=x(u,["cssString"]),g=r.findIndex(S=>{var y=S,{selector:E}=y,f=x(y,["selector"]);let w=E,I=x(w,["cssString"]);return lodash.isEqual(A,I)&&lodash.isEqual(h,f)});return g===-1?r.push(v({selector:a},h)):r[g].selector.cssString+=", ".concat(c),r},[])},nt=e=>l=>{var r=l,{urlRegexes:t,elementToMeasureSelector:n,elementsToMeasureSelectors:s}=r,i=x(r,["urlRegexes","elementToMeasureSelector","elementsToMeasureSelectors"]);return N(v({},i),{urlRegexes:t.map(o=>new RegExp(o)),isNative:e,elementsToMeasureSelectors:s!=null?s:n?{width:n,height:n}:void 0})},Ot=(e,t,n,s={})=>{var o,a;let i=(o=n[e])!=null?o:[],l=(a=s[e])!=null?a:[];return i.map(nt(!1)).concat(l.map(nt(!0))).filter(({urlRegexes:h})=>h.some(t))};function Wt(e){let t="";return e.forEach(n=>{t+=n+", ";}),t&&(t=t.slice(0,-2)),t}var rt=(e,t,n,s,i,l)=>{var m;let o=((m=n[e])!=null?m:[]).map(g=>{var u=g,{urlRegexes:c}=u,A=x(u,["urlRegexes"]);return N(v({},A),{urlRegexes:c.map(E=>new RegExp(E))})}).filter(({urlRegexes:c})=>c.some(t)),a=new Set,h={},d=c=>{var u,E;if(a.has(c))return;let A=((u=l[c])!=null?u:[b]).join("|");((E=s[c])!=null?E:[]).forEach(f=>{let{selector:S,parentDepth:y}=typeof f=="string"?{selector:f,parentDepth:0}:f;h[A]||(h[A]={});let P=h[A];P[y]||(P[y]=new Set),P[y].add(S);}),a.add(c);};return i.forEach(d),o.forEach(({providers:c})=>c.forEach(d)),Object.entries(h).map(([c,A])=>Object.entries(A).map(([g,u])=>({parentDepth:Number(g),selector:Wt(u),categories:c.split("|")}))).flat()};var D=e=>(...t)=>T(void 0,null,function*(){let{data:n}=yield e(...t);return n}),Me=class{constructor(t){this.getReplaceAdPlacesRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/ad-places/replace",!1)));this.getProvidersToReplaceAtAllSites=D(()=>this.api.get(this.getApiPath("/providers/all-sites",!1)));this.getProvidersCategories=D(()=>this.api.get(this.getApiPath("/providers/categories",!1)));this.getProvidersRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/providers/by-sites",!1)));this.getSelectorsForAllProviders=D(()=>this.api.get(this.getApiPath("/providers/selectors",!0)));this.getNegativeSelectorsForAllProviders=D(()=>this.api.get(this.getApiPath("/providers/negative-selectors",!1)));this.getPermanentAdPlacesRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/ad-places/permanent",!1)));this.getPermanentNativeAdPlacesRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/ad-places/permanent-native",!0)));this.getAdsReplaceUrlsBlacklist=D(()=>this.api.get(this.getApiPath("/replace-urls-blacklist",!1)));this.getElementsToHideOrRemoveRules=D(()=>this.api.get(this.getApiPath("/elements-to-hide-or-remove",!1)));this.getBlacklistedHypelabCampaignsSlugs=D(()=>this.api.get(this.getApiPath("/hypelab-campaigns-blacklist",!1)));this.getAllRules=()=>T(this,null,function*(){let[t,n,s,i,l,r,o,a,h,d,m]=yield Promise.all([this.getReplaceAdPlacesRulesForAllDomains(),this.getProvidersRulesForAllDomains(),this.getSelectorsForAllProviders(),this.getProvidersToReplaceAtAllSites(),this.getPermanentAdPlacesRulesForAllDomains(),this.getPermanentNativeAdPlacesRulesForAllDomains(),this.getAdsReplaceUrlsBlacklist(),this.getNegativeSelectorsForAllProviders(),this.getElementsToHideOrRemoveRules(),this.getProvidersCategories(),this.getBlacklistedHypelabCampaignsSlugs()]);return {adPlacesRulesForAllDomains:t,providersRulesForAllDomains:n,providersSelectors:s,providersToReplaceAtAllSites:i,permanentAdPlacesRulesForAllDomains:l,permanentNativeAdPlacesRulesForAllDomains:r,adsReplaceUrlsBlacklist:o,providersNegativeSelectors:a,elementsToHideOrRemoveRules:h,providersCategories:d,blacklistedHypelabCampaignsSlugs:m,timestamp:Date.now()}});this.api=kt__default.default.create({baseURL:t,adapter:"fetch"});}getApiPath(t,n){return `/ads-rules/${p.EXTENSION_VERSION}${t}${n?p.IS_MISES_BROWSER?"/mises":"/no-mises":""}`}};
|
|
16
16
|
|
|
17
|
-
exports.TempleAdsApi =
|
|
17
|
+
exports.TempleAdsApi = Me;
|
|
18
18
|
exports.configureAds = At;
|
|
19
|
-
exports.executeAdsActions =
|
|
19
|
+
exports.executeAdsActions = xt;
|
|
20
20
|
exports.getAdsActions = vt;
|
|
21
|
-
exports.renderAdsStack =
|
|
22
|
-
exports.transformRawRules =
|
|
21
|
+
exports.renderAdsStack = Ht;
|
|
22
|
+
exports.transformRawRules = Ct;
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
|
@@ -6,6 +6,7 @@ export const AD_SEEN_THRESHOLD = 0.5;
|
|
|
6
6
|
export const AD_RENDER_START_MESSAGE_TYPE = 'adRenderStart';
|
|
7
7
|
export const AD_RESIZE_MESSAGE_TYPE = 'resize';
|
|
8
8
|
export const AD_READY_MESSAGE_TYPE = 'ready';
|
|
9
|
+
export const AD_IMPRESSION_MESSAGE_TYPE = 'impression';
|
|
9
10
|
export const AD_ERROR_MESSAGE_TYPE = 'error';
|
|
10
11
|
export const IFRAME_ALLOWANCE = 'accelerometer; gyroscope';
|
|
11
12
|
export const CRYPTO_CATEGORY_NAME = 'crypto';
|
|
@@ -4,6 +4,7 @@ import { extendOrKeepDimension } from 'src/ads-actions/helpers';
|
|
|
4
4
|
import { AdsConfiguration } from 'src/ads-configuration';
|
|
5
5
|
import {
|
|
6
6
|
AD_ERROR_MESSAGE_TYPE,
|
|
7
|
+
AD_IMPRESSION_MESSAGE_TYPE,
|
|
7
8
|
AD_READY_MESSAGE_TYPE,
|
|
8
9
|
AD_RENDER_START_MESSAGE_TYPE,
|
|
9
10
|
AD_RESIZE_MESSAGE_TYPE,
|
|
@@ -14,7 +15,6 @@ import { AdsProviderName, AdsProviderTitle } from 'src/types/ads-provider';
|
|
|
14
15
|
|
|
15
16
|
const loadingAdsIds = new Set();
|
|
16
17
|
const loadedAdsIds = new Set();
|
|
17
|
-
const alreadySentAnalyticsAdsIds = new Set();
|
|
18
18
|
|
|
19
19
|
export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFrameElement) => {
|
|
20
20
|
const adId = element.id;
|
|
@@ -24,9 +24,11 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
loadingAdsIds.add(adId);
|
|
27
|
+
let adIsVisible = false;
|
|
27
28
|
|
|
28
|
-
return new Promise<
|
|
29
|
+
return new Promise<void>((resolve, reject) => {
|
|
29
30
|
let adIsNative = false;
|
|
31
|
+
let providerName: AdsProviderName | undefined;
|
|
30
32
|
const messageListener = (event: MessageEvent<any>) => {
|
|
31
33
|
if (event.source !== element.contentWindow) return;
|
|
32
34
|
|
|
@@ -40,7 +42,9 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
40
42
|
|
|
41
43
|
switch (data.type) {
|
|
42
44
|
case AD_READY_MESSAGE_TYPE:
|
|
43
|
-
|
|
45
|
+
adIsVisible = adRectIsSeen(element);
|
|
46
|
+
providerName = data.adMetadata.source.providerName;
|
|
47
|
+
resolve();
|
|
44
48
|
break;
|
|
45
49
|
case AD_ERROR_MESSAGE_TYPE:
|
|
46
50
|
window.removeEventListener('message', messageListener);
|
|
@@ -69,6 +73,13 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
69
73
|
extendOrKeepDimension(element, 'width', newWidth + horizontalBordersWidth);
|
|
70
74
|
extendOrKeepDimension(element, 'height', newHeight + verticalBordersWidth);
|
|
71
75
|
}
|
|
76
|
+
break;
|
|
77
|
+
case AD_IMPRESSION_MESSAGE_TYPE:
|
|
78
|
+
console.log('impression', adId, providerName, adIsVisible);
|
|
79
|
+
if (providerName && adIsVisible) {
|
|
80
|
+
sendExternalAdsActivity(providerName);
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
72
83
|
}
|
|
73
84
|
} catch (error) {
|
|
74
85
|
console.error('Observing error:', error);
|
|
@@ -77,17 +88,20 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
77
88
|
|
|
78
89
|
window.addEventListener('message', messageListener);
|
|
79
90
|
})
|
|
80
|
-
.then(
|
|
91
|
+
.then(() => {
|
|
81
92
|
if (loadedAdsIds.has(adId)) return;
|
|
82
93
|
|
|
83
94
|
loadedAdsIds.add(adId);
|
|
84
|
-
|
|
95
|
+
adIsVisible = adRectIsSeen(element);
|
|
85
96
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
97
|
+
const observer = new IntersectionObserver(
|
|
98
|
+
entries => {
|
|
99
|
+
adIsVisible = entries.some(entry => entry.isIntersecting);
|
|
100
|
+
},
|
|
101
|
+
{ threshold: AD_SEEN_THRESHOLD }
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
observer.observe(element);
|
|
91
105
|
})
|
|
92
106
|
.catch(e => {
|
|
93
107
|
console.error(e);
|
|
@@ -97,27 +111,7 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
97
111
|
.finally(() => void loadingAdsIds.delete(adId));
|
|
98
112
|
};
|
|
99
113
|
|
|
100
|
-
const
|
|
101
|
-
const observer = new IntersectionObserver(
|
|
102
|
-
entries => {
|
|
103
|
-
if (entries.some(entry => entry.isIntersecting)) {
|
|
104
|
-
sendExternalAdsActivity(element.id, providerName);
|
|
105
|
-
observer.disconnect();
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
{ threshold: AD_SEEN_THRESHOLD }
|
|
109
|
-
);
|
|
110
|
-
|
|
111
|
-
observer.observe(element);
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
const sendExternalAdsActivity = (adId: string, providerName: AdsProviderName) => {
|
|
115
|
-
if (alreadySentAnalyticsAdsIds.has(adId)) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
alreadySentAnalyticsAdsIds.add(adId);
|
|
120
|
-
|
|
114
|
+
const sendExternalAdsActivity = (providerName: AdsProviderName) => {
|
|
121
115
|
const url = window.parent.location.href;
|
|
122
116
|
|
|
123
117
|
browser.runtime
|
package/src/render-ads-stack.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { extendOrKeepDimension } from './ads-actions/helpers';
|
|
|
2
2
|
import { AdsConfiguration } from './ads-configuration';
|
|
3
3
|
import {
|
|
4
4
|
AD_ERROR_MESSAGE_TYPE,
|
|
5
|
+
AD_IMPRESSION_MESSAGE_TYPE,
|
|
5
6
|
AD_READY_MESSAGE_TYPE,
|
|
6
7
|
AD_RENDER_START_MESSAGE_TYPE,
|
|
7
8
|
AD_RESIZE_MESSAGE_TYPE,
|
|
@@ -152,6 +153,9 @@ class AdsStack {
|
|
|
152
153
|
}
|
|
153
154
|
this.broadcastMessage({ ...data, id: this.id });
|
|
154
155
|
}
|
|
156
|
+
break;
|
|
157
|
+
case AD_IMPRESSION_MESSAGE_TYPE:
|
|
158
|
+
this.broadcastMessage({ id: this.id, type: AD_IMPRESSION_MESSAGE_TYPE });
|
|
155
159
|
}
|
|
156
160
|
} catch (error) {
|
|
157
161
|
console.error('Message handling error:', error);
|