@temple-wallet/extension-ads 8.1.0-dev.3 → 8.1.0-dev.4

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.
Files changed (88) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +12 -12
  3. package/package.json +1 -1
  4. package/src/ads-actions/helpers.ts +19 -0
  5. package/src/ads-actions/process-permanent-rule.ts +5 -3
  6. package/src/ads-actions/process-providers-ads.ts +28 -2
  7. package/src/execute-ads-actions/process-insert-ad-action.ts +24 -4
  8. package/src/render-ads-stack.ts +1 -1
  9. package/src/types/ads-actions.ts +1 -0
  10. package/dist/ads-actions/helpers.d.ts +0 -17
  11. package/dist/ads-actions/helpers.js +0 -96
  12. package/dist/ads-actions/helpers.js.map +0 -1
  13. package/dist/ads-actions/index.d.ts +0 -3
  14. package/dist/ads-actions/index.js +0 -63
  15. package/dist/ads-actions/index.js.map +0 -1
  16. package/dist/ads-actions/process-elements-to-hide-or-remove-rule.d.ts +0 -3
  17. package/dist/ads-actions/process-elements-to-hide-or-remove-rule.js +0 -19
  18. package/dist/ads-actions/process-elements-to-hide-or-remove-rule.js.map +0 -1
  19. package/dist/ads-actions/process-permanent-rule.d.ts +0 -3
  20. package/dist/ads-actions/process-permanent-rule.js +0 -143
  21. package/dist/ads-actions/process-permanent-rule.js.map +0 -1
  22. package/dist/ads-actions/process-providers-ads.d.ts +0 -3
  23. package/dist/ads-actions/process-providers-ads.js +0 -137
  24. package/dist/ads-actions/process-providers-ads.js.map +0 -1
  25. package/dist/ads-actions/process-rule.d.ts +0 -3
  26. package/dist/ads-actions/process-rule.js +0 -98
  27. package/dist/ads-actions/process-rule.js.map +0 -1
  28. package/dist/ads-configuration.d.ts +0 -31
  29. package/dist/ads-configuration.js +0 -30
  30. package/dist/ads-configuration.js.map +0 -1
  31. package/dist/constants.d.ts +0 -11
  32. package/dist/constants.js +0 -12
  33. package/dist/constants.js.map +0 -1
  34. package/dist/execute-ads-actions/ads-views/index.d.ts +0 -3
  35. package/dist/execute-ads-actions/ads-views/index.js +0 -4
  36. package/dist/execute-ads-actions/ads-views/index.js.map +0 -1
  37. package/dist/execute-ads-actions/ads-views/make-ads-tw-view.d.ts +0 -3
  38. package/dist/execute-ads-actions/ads-views/make-ads-tw-view.js +0 -40
  39. package/dist/execute-ads-actions/ads-views/make-ads-tw-view.js.map +0 -1
  40. package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.d.ts +0 -3
  41. package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.js +0 -22
  42. package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.js.map +0 -1
  43. package/dist/execute-ads-actions/ads-views/make-tkey-ad.d.ts +0 -3
  44. package/dist/execute-ads-actions/ads-views/make-tkey-ad.js +0 -38
  45. package/dist/execute-ads-actions/ads-views/make-tkey-ad.js.map +0 -1
  46. package/dist/execute-ads-actions/index.d.ts +0 -2
  47. package/dist/execute-ads-actions/index.js +0 -23
  48. package/dist/execute-ads-actions/index.js.map +0 -1
  49. package/dist/execute-ads-actions/observing.d.ts +0 -1
  50. package/dist/execute-ads-actions/observing.js +0 -129
  51. package/dist/execute-ads-actions/observing.js.map +0 -1
  52. package/dist/execute-ads-actions/override-element-styles.d.ts +0 -2
  53. package/dist/execute-ads-actions/override-element-styles.js +0 -6
  54. package/dist/execute-ads-actions/override-element-styles.js.map +0 -1
  55. package/dist/execute-ads-actions/process-insert-ad-action.d.ts +0 -2
  56. package/dist/execute-ads-actions/process-insert-ad-action.js +0 -153
  57. package/dist/execute-ads-actions/process-insert-ad-action.js.map +0 -1
  58. package/dist/index.js.map +0 -1
  59. package/dist/render-ads-stack.d.ts +0 -7
  60. package/dist/render-ads-stack.js +0 -156
  61. package/dist/render-ads-stack.js.map +0 -1
  62. package/dist/temple-wallet-api.d.ts +0 -23
  63. package/dist/temple-wallet-api.js +0 -67
  64. package/dist/temple-wallet-api.js.map +0 -1
  65. package/dist/transform-raw-rules.d.ts +0 -3
  66. package/dist/transform-raw-rules.js +0 -137
  67. package/dist/transform-raw-rules.js.map +0 -1
  68. package/dist/types/ad-view.d.ts +0 -7
  69. package/dist/types/ad-view.js +0 -2
  70. package/dist/types/ad-view.js.map +0 -1
  71. package/dist/types/ads-actions.d.ts +0 -56
  72. package/dist/types/ads-actions.js +0 -15
  73. package/dist/types/ads-actions.js.map +0 -1
  74. package/dist/types/ads-meta.d.ts +0 -19
  75. package/dist/types/ads-meta.js +0 -2
  76. package/dist/types/ads-meta.js.map +0 -1
  77. package/dist/types/ads-provider.d.ts +0 -8
  78. package/dist/types/ads-provider.js +0 -9
  79. package/dist/types/ads-provider.js.map +0 -1
  80. package/dist/types/ads-rules.d.ts +0 -26
  81. package/dist/types/ads-rules.js +0 -2
  82. package/dist/types/ads-rules.js.map +0 -1
  83. package/dist/types/temple-wallet-api.d.ts +0 -78
  84. package/dist/types/temple-wallet-api.js +0 -2
  85. package/dist/types/temple-wallet-api.js.map +0 -1
  86. package/dist/utils.d.ts +0 -6
  87. package/dist/utils.js +0 -4
  88. package/dist/utils.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -118,6 +118,7 @@ interface InsertAdActionProps extends Pick<RawPermanentAdPlacesRule, 'wrapperSty
118
118
  stylesOverrides?: AdStylesOverrides[];
119
119
  originalWidth: number;
120
120
  originalHeight: number;
121
+ shouldUseBlurredBackground?: boolean;
121
122
  }
122
123
  interface ReplaceAllChildrenWithAdAction extends AdActionBase, InsertAdActionProps {
123
124
  type: AdActionType.ReplaceAllChildren;
package/dist/index.js CHANGED
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
3
  var semver = require('semver');
4
+ var lodash = require('lodash');
4
5
  var nanoid = require('nanoid');
5
- var it = require('webextension-polyfill');
6
+ var ct = require('webextension-polyfill');
6
7
  var cryptoJs = require('crypto-js');
7
- var lodash = require('lodash');
8
- var yt = require('axios');
8
+ var Pt = require('axios');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
- var it__default = /*#__PURE__*/_interopDefault(it);
13
- var yt__default = /*#__PURE__*/_interopDefault(yt);
12
+ var ct__default = /*#__PURE__*/_interopDefault(ct);
13
+ var Pt__default = /*#__PURE__*/_interopDefault(Pt);
14
14
 
15
- var Xe=Object.defineProperty,Qe=Object.defineProperties;var je=Object.getOwnPropertyDescriptors;var ie=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,xe=Object.prototype.propertyIsEnumerable;var Pe=(e,t,r)=>t in e?Xe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))Ie.call(t,r)&&Pe(e,r,t[r]);if(ie)for(var r of ie(t))xe.call(t,r)&&Pe(e,r,t[r]);return e},b=(e,t)=>Qe(e,je(t));var M=(e,t)=>{var r={};for(var s in e)Ie.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&ie)for(var s of ie(e))t.indexOf(s)<0&&xe.call(e,s)&&(r[s]=e[s]);return r};var w=(e,t,r)=>new Promise((s,a)=>{var d=i=>{try{o(r.next(i));}catch(l){a(l);}},n=i=>{try{o(r.throw(i));}catch(l){a(l);}},o=i=>i.done?s(i.value):Promise.resolve(i.value).then(d,n);o((r=r.apply(e,t)).next());});var Me=e=>!!e;var H=(e=300)=>new Promise(t=>setTimeout(t,e));var R=class{};R.IS_MISES_BROWSER=!1,R.ADS_TW_WINDOW_URL="",R.TKEY_INPAGE_AD_URL="",R.SMALL_TKEY_INPAGE_AD_URL="",R.SWAP_TKEY_URL="",R.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE="",R.personaIframePath="",R.getAdsStackIframeURL=()=>"",R.buildNativeAdsMeta=()=>[],R.bannerAdsMeta=[];var Je=e=>{let{adsTwWindowUrl:t,tkeyInpageAdUrl:r,smallTkeyInpageAdUrl:s,swapTkeyUrl:a,externalAdsActivityMessageType:d,personaIframePath:n,getAdsStackIframeURL:o,buildNativeAdsMeta:i,bannerAdsMeta:l,extVersion:p,templePassphrase:A,isMisesBrowser:c}=e;s&&(R.SMALL_TKEY_INPAGE_AD_URL=s),R.ADS_TW_WINDOW_URL=t,R.TKEY_INPAGE_AD_URL=r,R.SWAP_TKEY_URL=a,R.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE=d,R.personaIframePath=n,R.getAdsStackIframeURL=o,R.buildNativeAdsMeta=i,R.bannerAdsMeta=l,R.EXTENSION_VERSION=p,R.TEMPLE_PASSPHRASE=A,R.IS_MISES_BROWSER=c;};var V="twa",G="twa-native",Y="twa-sibling-replacement";var oe="adRenderStart",le="resize",$="ready",te="error",ae="accelerometer; gyroscope",B="crypto",ce="background";var K=/[\d.]+(px)?$/,z=`[${V}]`,_e=`[${V}]:not([${G}])`,be=`[${G}]`,pe=(e,t)=>{let r=parseInt(e,10);return isNaN(r)||!K.test(e)?t:r},k=(e,t,r)=>{e.style[t]=`${Math.max(pe(e.style[t],0),r)}px`;},q=e=>e.reduce((t,r)=>t+pe(r,0),0),X=e=>!!e.closest(z),de=e=>{var t;return !!((t=e.previousElementSibling)!=null&&t.getAttribute(Y))},re=e=>{let t=getComputedStyle(e),{x:r,right:s,width:a,height:d}=e.getBoundingClientRect(),n={width:a,height:d},o=["width","height"];for(let i of o){let l=t[i],p=e.getAttribute(i),A=Math.max(...[l,p].map(c=>pe(c!=null?c:"",-1)));A!==-1&&(n[i]=A),i==="width"&&r<0?n.width+=r:i==="width"&&s>window.innerWidth&&(n.width=window.innerWidth-r);}return n},L=(e,t,r=document)=>e?t?[...r.querySelectorAll(e)]:[r.querySelector(e)].filter(s=>!!s):[],N=(e,t)=>{let r=e;for(let s=0;s<t;s++){let a=r.parentElement;if(!a)return null;r=a;}return r},Le=(e,t,r,s,a)=>{if(e<2&&t<2)return [];if(s)return R.buildNativeAdsMeta(e,t);let d=r==="permanent"||r==="slot-replacement"?R.bannerAdsMeta.filter(({source:i})=>i.shouldNotUseStrictContainerLimits):[],n=Math.max(e,...d.map(({dimensions:i})=>i.width)),o=Math.max(t,...d.map(({dimensions:i})=>i.height));return R.bannerAdsMeta.reduce((i,{dimensions:l,source:p},A)=>{let{shouldNotUseStrictContainerLimits:c=!1,categories:m=[B]}=p;if(m.every(v=>!a.includes(v)))return i;let{minContainerWidth:E,minContainerHeight:h,width:f,maxContainerWidth:u,maxContainerHeight:T}=l,S=!1;switch(r){case"permanent":S=c||n>=f&&(o>=h||o<2);break;case"slot-replacement":S=c||n>=E&&(o>=h||o<2);break;default:S=e>=E&&t>=h&&e<=u&&t<=T;}return S&&i.push(A),i},[])};var De=(e,t)=>{let{shouldHide:r,cssString:s,parentDepth:a,isMultiple:d}=e;L(s,d).forEach(n=>{let o=N(n,a);if(!o)return;let i=window.getComputedStyle(o);i.display!=="none"&&i.visibility!=="hidden"&&t.push({type:r?"hide-element":"remove-element",element:o});});};var He=(e,t,r)=>w(void 0,null,function*(){let{parentSelector:s,displayWidth:a}=e,{isMultiple:d,cssString:n,parentDepth:o}=s;if(a&&!semver.satisfies(semver.coerce(window.innerWidth),a))return [];let i=L(n,d).map(l=>N(l,o)).filter(l=>!!l);return yield Promise.all(i.map(l=>w(void 0,null,function*(){yield H(0),tt(l,e,t,r);}))),i}),Ae=(e,t)=>{var r,s;return e?{width:(r=document.querySelector(e.width))!=null?r:t,height:(s=document.querySelector(e.height))!=null?s:t}:{width:t,height:t}},tt=(e,t,r,s)=>{var Te;let Se=t,{shouldUseDivWrapper:a,divWrapperStyle:d,wrapperStyle:n,elementStyle:o,adSelector:i,insertionIndex:l,insertBeforeSelector:p,insertAfterSelector:A,insertionsCount:c=1,elementsToMeasureSelectors:m,stylesOverrides:E,shouldHideOriginal:h=!1,isNative:f,urlRegexes:u,parentSelector:T}=Se,S=M(Se,["shouldUseDivWrapper","divWrapperStyle","wrapperStyle","elementStyle","adSelector","insertionIndex","insertBeforeSelector","insertAfterSelector","insertionsCount","elementsToMeasureSelectors","stylesOverrides","shouldHideOriginal","isNative","urlRegexes","parentSelector"]),v=S.wrapperType?n:a?d:{display:"contents"},{isMultiple:g,cssString:I,parentDepth:_}=i,x=L(f?be:_e,!0,e).reduce((y,W)=>y.some(Z=>Z.contains(W)||W.contains(Z))?y:[...y,W],[]).length,C=c-x;if(L(I,g,e).map(y=>N(y,_)).filter(y=>Me(y)&&!X(y)).forEach(y=>{var Z;let W=window.getComputedStyle(y).display==="none";if(C<=0)(!h||!W)&&s.push({type:h?"hide-element":"remove-element",element:y});else {let Ke=Ae(m,((Z=y.parentElement)==null?void 0:Z.children.length)===1?y.parentElement:y),ze=P({type:"replace-element",element:y,wrapperStyle:v,elementStyle:o,stylesOverrides:E},S),we={type:"hide-element",element:y},qe=P({type:"simple-insert-ad",wrapperStyle:v,elementStyle:o,parent:y.parentElement,insertionIndex:Array.from(y.parentElement.children).indexOf(y),isSiblingReplacement:!0,stylesOverrides:E},S),ee=[],ve=de(y);h&&ve&&!W?ee=[we]:h&&!ve?ee=[we,qe]:h||(ee=[ze]),ee.length>0&&r(Ke,"permanent",f,[B],...ee)&&C--;}}),C<=0)return;let D=-1,F=e,J={width:e,height:e},ye=p||A;if(ye){let y=e.querySelector(ye),W=y==null?void 0:y.parentElement;y&&W&&(F=W,D=Array.from(e.children).indexOf(y)+(p?0:1),J=Ae(m,y));}else {let y=l!=null?l:0;D=y<0?Math.max(e.children.length+y,0):Math.min(y,e.children.length),J=Ae(m,(Te=e.children[D])!=null?Te:e);}if(D!==-1){let y=P({type:"simple-insert-ad",wrapperStyle:v,elementStyle:o,parent:F,insertionIndex:D,isSiblingReplacement:!1,stylesOverrides:E},S);r(J,"permanent",f,[B],...Array(C).fill(y));}};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"],Ne=(e,t,r,s)=>w(void 0,null,function*(){let a=e.map(({selector:n,parentDepth:o,categories:i})=>L(n,!0).reduce((l,p)=>{var v;let A=(v=N(p,o))!=null?v:p,c=l.findIndex(({element:g})=>g.contains(A)),m=A.parentElement&&window.getComputedStyle(A.parentElement),{width:E,height:h}=re(A),f=s.some(g=>{var I;return g.type==="replace-all-children"||g.type==="simple-insert-ad"?g.parent.contains(A)||A.contains(g.parent):((I=g.element.parentElement)==null?void 0:I.contains(A))||A.contains(g.element)}),u=(m==null?void 0:m.display)==="none"||(m==null?void 0:m.visibility)==="hidden",T=c>=0&&l[c]instanceof HTMLAnchorElement;if(f||E===0||h===0||u||T)return l;let S={element:A,categories:i};return c>=0?l.splice(c,1,S):l.some(({element:g})=>g.contains(A))||l.push(S),l},[])).flat(),d=t.map(({selector:n,parentDepth:o})=>L(n,!0).map(i=>N(i,o)).filter(i=>!!i)).flat();a=a.filter(({element:n})=>!d.includes(n)),yield Promise.all(a.map(i=>w(void 0,[i],function*({element:n,categories:o}){var m,E,h,f,u,T,S,v;yield H(0);let l=n.parentElement,{width:p,height:A}=window.getComputedStyle(n),c=K.test(p)&&K.test(A)?n:(E=(m=l==null?void 0:l.closest("div, article, aside, footer, header"))!=null?m:(l==null?void 0:l.tagName.toLowerCase())==="body"?void 0:l)!=null?E:n;if(!X(n)&&!n.querySelector(z)&&!s.some(g=>g.type==="simple-insert-ad"?!1:g.type==="replace-all-children"?g.parent.contains(n):g.element===n)){let g=(h=n.getAttribute("style"))!=null?h:"",I=Object.fromEntries(g.split(";").filter(Boolean).map(F=>F.split(":").map(J=>J.trim())));if((f=I.width)!=null&&f.match(/^0[a-z]/)||(u=I.height)!=null&&u.match(/^0[a-z]/))return;let _=window.getComputedStyle(n),U=P(P({},Object.fromEntries(rt.map(F=>[F,_.getPropertyValue(F)]))),I),x={type:"hide-element",element:n},C={type:"simple-insert-ad",wrapperStyle:U,parent:(T=n.parentElement)!=null?T:document.body,insertionIndex:Array.from((v=(S=n.parentElement)==null?void 0:S.children)!=null?v:[]).indexOf(n),isSiblingReplacement:!0},j,D=n.closest(`[${Y}] + *`);D&&D!==n?j=[{type:"remove-element",element:D.previousElementSibling},x,C]:D?j=window.getComputedStyle(n).display==="none"?[]:[x]:j=[x,C],r({width:c,height:c},"provider-replacement",!1,o,...j);}})));});var Oe=(e,t,r)=>w(void 0,null,function*(){let{cssString:s,isMultiple:a}=e.selector,d=L(s,a);yield Promise.all(d.map(n=>w(void 0,null,function*(){yield H(0),nt(n,e,t,r);})));}),nt=(e,t,r,s)=>{let{selector:{shouldUseDivWrapper:a,parentDepth:d,divWrapperStyle:n},stylesOverrides:o,shouldHideOriginal:i,isNative:l=!1}=t,p=N(e,d);if(!p||r.some(m=>m.contains(p))||X(p)||p.querySelector(z))return;let A={shouldUseDivWrapper:a,wrapperStyle:n},c;if(a&&i){let m=p.parentElement,E=window.getComputedStyle(p).display==="none",h=P({type:"simple-insert-ad",parent:m,insertionIndex:Array.from(m.children).indexOf(p),stylesOverrides:o==null?void 0:o.map(T=>{var S=T,{parentDepth:f}=S,u=M(S,["parentDepth"]);return b(P({},u),{parentDepth:f-1})}),isSiblingReplacement:!0},A);c=[],E||c.push({type:"hide-element",element:p}),de(p)||c.push(h);}else if(a)c=[P({type:"replace-element",element:p,stylesOverrides:o==null?void 0:o.map(f=>{var u=f,{parentDepth:E}=u,h=M(u,["parentDepth"]);return b(P({},h),{parentDepth:E-1})})},A)];else if(i){let m={type:"simple-insert-ad",parent:p,insertionIndex:0,stylesOverrides:o,isSiblingReplacement:!0,wrapperStyle:{display:"contents"}};c=Array.from(p.children).filter(E=>window.getComputedStyle(E).display!=="none").map(E=>({type:"hide-element",element:E})),p.querySelector(z)||c.push(m);}else c=[{type:"replace-all-children",parent:p,stylesOverrides:o,wrapperStyle:{display:"contents"}}];c.length>0&&s({width:p,height:p},"slot-replacement",l,[B],...c);};var st=d=>w(void 0,[d],function*({providersSelectors:e,providersNegativeSelectors:t,adPlacesRules:r,permanentAdPlacesRules:s,elementsToHideOrRemoveRules:a}){let n=[],o=(l,p,A,c,...m)=>{if(m.length>0&&m.every(x=>x.type==="hide-element"||x.type==="remove-element"))return n.push(...m),!0;let{width:E}=re(l.width),{height:h}=re(l.height),{paddingLeft:f,paddingRight:u}=window.getComputedStyle(l.width),{paddingTop:T,paddingBottom:S}=window.getComputedStyle(l.height),v=q([f,u]),g=v===E?E:E-v,I=q([T,S]),_=I===h?h:h-I,U=Le(g,_,p,A,c);return U.length?(n.push(...m.map(x=>x.type==="hide-element"||x.type==="remove-element"?x:b(P({},x),{adsMetadata:U,originalWidth:g,originalHeight:_}))),!0):!1},i=[];return yield Promise.all(a.map(l=>w(void 0,null,function*(){yield H(0),De(l,n);}))),yield Promise.all(s.map(l=>w(void 0,null,function*(){yield H(0),i=i.concat(yield He(l,o,n));}))),yield Promise.all(r.map(l=>w(void 0,null,function*(){yield H(0),yield Oe(l,i,o);}))),yield Ne(e,t,o,n),n});var ue=(d=>(d.Optimal="Optimal",d.SmartyAds="SmartyAds",d.HypeLab="HypeLab",d.Persona="Persona",d.Temple="Temple Wallet",d))(ue||{});var he=new Set,Ce=new Set,We=new Set,ke=e=>w(void 0,null,function*(){let t=e.id;if(!he.has(t))return he.add(t),new Promise((r,s)=>{let a=!1,d=n=>{var o,i;if(n.source===e.contentWindow)try{let l=typeof n.data=="string"?JSON.parse(n.data):n.data;if(l.id!==t)return;let p=e.offsetWidth-e.clientWidth,A=e.offsetHeight-e.clientHeight;switch(l.type){case $:r(l.adMetadata.source.providerName);break;case te:window.removeEventListener("message",d),e.style.display="none",s(new Error((o=l.reason)!=null?o:"Unknown error"));break;case oe:let{dimensions:c,source:m}=l.adMetadata;a=(i=m.native)!=null?i:!1;let{width:E,height:h}=c;E>0&&h>0&&(m.native?e.style.height=`${h}px`:(k(e,"width",E),k(e,"height",h)));break;case le:let{width:f,height:u}=l;a?e.style.height=`${u+A}px`:(k(e,"width",f+p),k(e,"height",u+A));}}catch(l){console.error("Observing error:",l);}};window.addEventListener("message",d);}).then(r=>{if(Ce.has(t))return;Ce.add(t),lt(e)?Ue(t,r):ot(e,r);}).catch(r=>{throw console.error(r),r}).finally(()=>void he.delete(t))}),ot=(e,t)=>{let r=new IntersectionObserver(s=>{s.some(a=>a.isIntersecting)&&(Ue(e.id,t),r.disconnect());},{threshold:.5});r.observe(e);},Ue=(e,t)=>{if(We.has(e))return;We.add(e);let r=window.parent.location.href;it__default.default.runtime.sendMessage({type:R.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE,url:r,provider:ue[t]}).catch(s=>void console.error(s));},lt=e=>{let t=e.getBoundingClientRect(),r=window.visualViewport;if(!r)return !1;let s=Math.min(Math.max(0,t.x),r.width),a=Math.min(Math.max(0,t.x+t.width),r.width),d=Math.min(Math.max(0,t.y),r.height),n=Math.min(Math.max(0,t.y+t.height),r.height),o=t.width*t.height;return (a-s)*(n-d)/o>=.5};var ne=(e,t)=>{for(let r in t)e.style.setProperty(r,t[r]);};var dt=(e,t)=>{["width","height"].forEach(s=>{var d;let a=(d=e.style[s])!=null?d:"";K.test(a)&&parseInt(a,10)<t[s]&&e.style.removeProperty(s);});},ct=(e,t,r,s)=>w(void 0,null,function*(){let{elementStyle:a={},stylesOverrides:d=[],adsMetadata:n,wrapperType:o,originalHeight:i,originalWidth:l}=e;d.sort((u,T)=>u.parentDepth-T.parentDepth);let p,A=nanoid.nanoid(),c=document.createElement("iframe");c.loading="lazy",c.src=R.getAdsStackIframeURL(A,n,window.location.href),c.id=A,c.allow=ae;let m=n[0],{dimensions:E}=typeof m=="number"?R.bannerAdsMeta[m]:m,h={width:Math.max(l,E.width),height:Math.max(i,E.height)};c.style.width=o==="tbody"?"100%":`${h.width}px`,c.style.height=`${h.height}px`,c.style.border="none";for(let u in a)c.style.setProperty(u,a[u]);switch(c.setAttribute(V,"true"),dt(t,h),r.appendChild(c),e.type){case"replace-all-children":p=e.parent,e.parent.innerHTML="",e.parent.appendChild(t);break;case"replace-element":p=e.element.parentElement,e.element.replaceWith(t);break;default:e.isSiblingReplacement&&t.setAttribute(Y,"true"),p=e.parent,e.parent.insertBefore(t,e.parent.children[e.insertionIndex]);break}if(o!=="tbody"){let{borderLeftWidth:u,borderRightWidth:T,borderTopWidth:S,borderBottomWidth:v}=window.getComputedStyle(c),{borderLeftWidth:g,borderRightWidth:I,borderTopWidth:_,borderBottomWidth:U}=window.getComputedStyle(t),x=q([u,T,g,I]),C=q([S,v,_,U]);c.style.width=`${h.width-x}px`,c.style.height=`${h.height-C}px`;}ke(c).catch(s);let f=0;d.forEach(({parentDepth:u,style:T})=>{for(;u>f&&p;)p=p.parentElement,f++;p&&ne(p,T);});}),Fe=e=>w(void 0,null,function*(){let{wrapperStyle:t={},adsMetadata:r,wrapperType:s="div",colsAfter:a=0,colsBefore:d=0,colspan:n=1}=e,o=r.every(A=>typeof A=="object"),i,l;if(s==="div")i=document.createElement("div"),l=i;else {i=document.createElement("tbody");let A=document.createElement("tr");i.appendChild(A);for(let m=0;m<d;m++)A.appendChild(document.createElement("td"));let c=document.createElement("td");c.colSpan=n,A.appendChild(c),l=c;for(let m=0;m<a;m++)A.appendChild(document.createElement("td"));}i.setAttribute(V,"true"),o&&i.setAttribute(G,"true"),ne(i,t);let p=()=>{let A=document.createElement("div");A.setAttribute(V,"true"),o&&A.setAttribute(G,"true"),e.type==="simple-insert-ad"&&e.isSiblingReplacement&&A.setAttribute(Y,"true"),A.style.display="none",i.replaceWith(A);};yield ct(e,i,l,A=>{console.error("Failed to render ads",A),p();}).catch(A=>{throw console.error("Inserting an ad attempt error:",A),p(),A});});var mt=e=>Promise.allSettled(e.map(t=>w(void 0,null,function*(){t.type==="remove-element"?t.element.remove():t.type==="hide-element"?t.element.style.setProperty("display","none","important"):yield Fe(t);})));var Ee=(e,t,r=!1)=>{let s=document.createElement("div");s.style.width=`${e}px`,s.style.height=`${t}px`;let a=document.createElement("div");if(a.style.width=`${e}px`,a.style.height=`${t}px`,s.appendChild(a),r){let o=document.createElement("a");return o.href=R.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")),a.appendChild(o),{element:s}}let d=document.createElement("a");d.href=R.SWAP_TKEY_URL,d.target="_blank",d.rel="noopener noreferrer",d.style.width="100%",d.style.height="100%",a.appendChild(d);let n=document.createElement("img");return n.src=e<=320?R.SMALL_TKEY_INPAGE_AD_URL:R.TKEY_INPAGE_AD_URL,n.style.width="100%",n.style.height="100%",d.appendChild(n),{element:s,creativeSet:{image:{url:n.src}}}};var Re=(e,t,{width:r,height:s},a)=>{let d=document.createElement("iframe");return d.id=e,d.src=At(t,a,r,s,d.id),d.style.width=t.native?"100%":`${r}px`,d.style.height=`${s}px`,d.style.border="none",d.allow=ae,{element:d}},At=(e,t,r,s,a)=>{let{providerName:d,slug:n,native:o}=e,i=new URL(R.ADS_TW_WINDOW_URL);return i.searchParams.set("ap",d.toLowerCase()),o?i.searchParams.set("vh",String(s)):i.searchParams.set("w",String(r)),i.searchParams.set("h",String(s)),i.searchParams.set("p",n),i.searchParams.set("o",ut(t)),a&&i.searchParams.set("id",a),i.toString()},ut=e=>cryptoJs.AES.encrypt(e,R.TEMPLE_PASSPHRASE).toString();var fe=(e,t,{width:r,height:s})=>{let a=document.createElement("iframe"),d="";switch(t.providerName){case"Persona":d=R.personaIframePath;break;default:throw new Error(`Ads from ${t.providerName} are unavailable via extension iframe`)}let n=new URL(d);return n.searchParams.set("id",e),n.searchParams.set("slug",t.slug),a.src=n.toString(),a.id=e,a.style.width=`${r}px`,a.style.height=`${s}px`,a.style.border="none",{element:a}};var se=e=>window.parent.postMessage(JSON.stringify(e),"*"),Ve=(e,t,r)=>w(void 0,null,function*(){if(t.length===0){se({id:e,type:te,reason:"No more ads to render"});return}let[s,...a]=t,d=typeof s=="number"?R.bannerAdsMeta[s]:s;se({id:e,type:oe,adMetadata:d});let{source:n,dimensions:o}=d,i;switch(n.providerName){case"Temple":i=Ee(o.width,o.height,n.native);break;case"HypeLab":case"SmartyAds":i=Re(e,n,o,r);break;default:i=fe(e,n,o);}let{element:l}=i,p=document.getElementById("root"),A=document.getElementById("temple-label");p.replaceChildren(l),n.native?A.removeAttribute("active"):A.setAttribute("active","");let c=(m={})=>{let E=document.getElementById(ce);if(n.native&&E&&p.removeChild(E),!n.native)try{let{image:h,video:f}=m,u;if(h?(u=document.createElement("img"),u.src=h.url,u.alt=""):f&&(u=document.createElement("video"),u.src=f.url,u.autoplay=!0,u.preload="auto",u.playsInline=!0,u.muted=!0,u.loop=!0),!u&&E&&p.removeChild(E),!u)return;u.id=ce,u.style.zIndex="-1",ne(u,{position:"absolute",top:"0px",left:"0px",right:"0px",bottom:"0px",width:"100%",height:"100%","object-fit":"cover",filter:"blur(12px)"}),E?p.replaceChild(u,E):p.appendChild(u);}catch(h){console.error(h);}};if(l instanceof HTMLIFrameElement)return new Promise((m,E)=>{let h=setTimeout(()=>{window.removeEventListener("message",u),E(new Error(`Timeout exceeded for ${e}, ad source: ${JSON.stringify(n)}`));},(a.length===0?2e4:1e4)*(R.IS_MISES_BROWSER?2:1)),f=!1,u=T=>{var S,v;if(T.source===l.contentWindow)try{let g=typeof T.data=="string"?JSON.parse(T.data):T.data;switch(g.type){case $:f||(f=!0,se({id:e,type:$,adMetadata:d}),clearTimeout(h),m()),c((S=g.ad)==null?void 0:S.creative_set);break;case te:f||(window.removeEventListener("message",u),clearTimeout(h),E(new Error((v=g.reason)!=null?v:"Unknown error")));break;case le:let{width:I,height:_}=g;I>0&&_>0&&(d.source.native?l.style.height=`${_}px`:(k(l,"width",I),k(l,"height",_)),se(b(P({},g),{id:e})));}}catch(g){console.error("Observing error:",g);}};window.addEventListener("message",u);}).catch(m=>(console.error(m),Ve(e,a,r)));c(i.creativeSet),se({id:e,type:$,adMetadata:d});});var ht=(e,t)=>{let{adPlacesRulesForAllDomains:r,providersRulesForAllDomains:s,providersSelectors:a,providersNegativeSelectors:d={},providersToReplaceAtAllSites:n,permanentAdPlacesRulesForAllDomains:o,permanentNativeAdPlacesRulesForAllDomains:i={},adsReplaceUrlsBlacklist:l=[],elementsToHideOrRemoveRules:p={},providersCategories:A={},timestamp:c}=t,{hostname:m,href:E}=e;if(l.some(u=>new RegExp(u).test(E)))return {adPlacesRules:[],permanentAdPlacesRules:[],providersSelectors:[],providersNegativeSelectors:[],elementsToHideOrRemoveRules:[],timestamp:c};let h=E.replace(/#.*$/,""),f=u=>{let T=u.source.includes("#")?E:h;return u.test(T)};return {adPlacesRules:Rt(m,f,r),permanentAdPlacesRules:ft(m,f,o,i),providersSelectors:$e(m,f,s,a,n,A),providersNegativeSelectors:$e(m,f,s,d,n,A),elementsToHideOrRemoveRules:Et(m,f,p),timestamp:c}},Et=(e,t,r)=>{var s;return ((s=r[e])!=null?s:[]).map(n=>{var o=n,{urlRegexes:a}=o,d=M(o,["urlRegexes"]);return b(P({},d),{urlRegexes:a.map(i=>new RegExp(i))})}).filter(({urlRegexes:a})=>a.some(t))},Rt=(e,t,r)=>{var d;return ((d=r[e])!=null?d:[]).map(i=>{var l=i,{urlRegexes:n}=l,o=M(l,["urlRegexes"]);return b(P({},o),{urlRegexes:n.map(p=>new RegExp(p))})}).reduce((n,p)=>{var A=p,{urlRegexes:o,selector:i}=A,l=M(A,["urlRegexes","selector"]);if(!o.some(t))return n;let h=i,{cssString:c}=h,m=M(h,["cssString"]),E=n.findIndex(T=>{var S=T,{selector:f}=S,u=M(S,["selector"]);let I=f,g=M(I,["cssString"]);return lodash.isEqual(m,g)&&lodash.isEqual(l,u)});return E===-1?n.push(P({selector:i},l)):n[E].selector.cssString+=", ".concat(c),n},[])},Ge=e=>d=>{var n=d,{urlRegexes:t,elementToMeasureSelector:r,elementsToMeasureSelectors:s}=n,a=M(n,["urlRegexes","elementToMeasureSelector","elementsToMeasureSelectors"]);return b(P({},a),{urlRegexes:t.map(o=>new RegExp(o)),isNative:e,elementsToMeasureSelectors:s!=null?s:r?{width:r,height:r}:void 0})},ft=(e,t,r,s={})=>{var o,i;let a=(o=r[e])!=null?o:[],d=(i=s[e])!=null?i:[];return a.map(Ge(!1)).concat(d.map(Ge(!0))).filter(({urlRegexes:l})=>l.some(t))};function gt(e){let t="";return e.forEach(r=>{t+=r+", ";}),t&&(t=t.slice(0,-2)),t}var $e=(e,t,r,s,a,d)=>{var A;let o=((A=r[e])!=null?A:[]).map(E=>{var h=E,{urlRegexes:c}=h,m=M(h,["urlRegexes"]);return b(P({},m),{urlRegexes:c.map(f=>new RegExp(f))})}).filter(({urlRegexes:c})=>c.some(t)),i=new Set,l={},p=c=>{var h,f;if(i.has(c))return;let m=((h=d[c])!=null?h:[B]).join("|");((f=s[c])!=null?f:[]).forEach(u=>{let{selector:T,parentDepth:S}=typeof u=="string"?{selector:u,parentDepth:0}:u;l[m]||(l[m]={});let v=l[m];v[S]||(v[S]=new Set),v[S].add(T);}),i.add(c);};return a.forEach(p),o.forEach(({providers:c})=>c.forEach(p)),Object.entries(l).map(([c,m])=>Object.entries(m).map(([E,h])=>({parentDepth:Number(E),selector:gt(h),categories:c.split("|")}))).flat()};var O=e=>(...t)=>w(void 0,null,function*(){let{data:r}=yield e(...t);return r}),ge=class{constructor(t){this.getAdPlacesRulesForAllDomains=O(()=>this.api.get("/slise-ad-rules/ad-places",this.getAdVersionRequestConfig()));this.getProvidersToReplaceAtAllSites=O(()=>this.api.get("/slise-ad-rules/providers/all-sites"));this.getProvidersCategories=O(()=>this.api.get("/slise-ad-rules/providers/categories"));this.getProvidersRulesForAllDomains=O(()=>this.api.get("/slise-ad-rules/providers/by-sites"));this.getSelectorsForAllProviders=O(()=>this.api.get("/slise-ad-rules/providers",this.getAdVersionRequestConfig()));this.getNegativeSelectorsForAllProviders=O(()=>this.api.get("/slise-ad-rules/providers/negative-selectors",this.getAdVersionRequestConfig()));this.getPermanentAdPlacesRulesForAllDomains=O(()=>this.api.get("/slise-ad-rules/ad-places/permanent",this.getAdVersionRequestConfig()));this.getPermanentNativeAdPlacesRulesForAllDomains=O(()=>this.api.get("/slise-ad-rules/ad-places/permanent-native",this.getAdVersionRequestConfig()));this.getAdsReplaceUrlsBlacklist=O(()=>this.api.get("/slise-ad-rules/replace-urls-blacklist",this.getAdVersionRequestConfig()));this.getElementsToHideOrRemoveRules=O(()=>this.api.get("/slise-ad-rules/elements-to-hide-or-remove",this.getAdVersionRequestConfig()));this.getAllRules=()=>w(this,null,function*(){let[t,r,s,a,d,n,o,i,l,p]=yield Promise.all([this.getAdPlacesRulesForAllDomains(),this.getProvidersRulesForAllDomains(),this.getSelectorsForAllProviders(),this.getProvidersToReplaceAtAllSites(),this.getPermanentAdPlacesRulesForAllDomains(),this.getPermanentNativeAdPlacesRulesForAllDomains(),this.getAdsReplaceUrlsBlacklist(),this.getNegativeSelectorsForAllProviders(),this.getElementsToHideOrRemoveRules(),this.getProvidersCategories()]);return {adPlacesRulesForAllDomains:t,providersRulesForAllDomains:r,providersSelectors:s,providersToReplaceAtAllSites:a,permanentAdPlacesRulesForAllDomains:d,permanentNativeAdPlacesRulesForAllDomains:n,adsReplaceUrlsBlacklist:o,providersNegativeSelectors:i,elementsToHideOrRemoveRules:l,providersCategories:p,timestamp:Date.now()}});this.api=yt__default.default.create({baseURL:new URL("/api",t).href,adapter:"fetch"});}getAdVersionRequestConfig(){return {params:{extVersion:R.EXTENSION_VERSION,isMisesBrowser:R.IS_MISES_BROWSER}}}};
15
+ var je=Object.defineProperty,Je=Object.defineProperties;var Ze=Object.getOwnPropertyDescriptors;var oe=Object.getOwnPropertySymbols;var Me=Object.prototype.hasOwnProperty,_e=Object.prototype.propertyIsEnumerable;var xe=(e,t,r)=>t in e?je(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,x=(e,t)=>{for(var r in t||(t={}))Me.call(t,r)&&xe(e,r,t[r]);if(oe)for(var r of oe(t))_e.call(t,r)&&xe(e,r,t[r]);return e},L=(e,t)=>Je(e,Ze(t));var _=(e,t)=>{var r={};for(var s in e)Me.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&oe)for(var s of oe(e))t.indexOf(s)<0&&_e.call(e,s)&&(r[s]=e[s]);return r};var T=(e,t,r)=>new Promise((s,l)=>{var o=i=>{try{n(r.next(i));}catch(d){l(d);}},a=i=>{try{n(r.throw(i));}catch(d){l(d);}},n=i=>i.done?s(i.value):Promise.resolve(i.value).then(o,a);n((r=r.apply(e,t)).next());});var be=e=>!!e;var N=(e=300)=>new Promise(t=>setTimeout(t,e));var g=class{};g.IS_MISES_BROWSER=!1,g.ADS_TW_WINDOW_URL="",g.TKEY_INPAGE_AD_URL="",g.SMALL_TKEY_INPAGE_AD_URL="",g.SWAP_TKEY_URL="",g.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE="",g.personaIframePath="",g.getAdsStackIframeURL=()=>"",g.buildNativeAdsMeta=()=>[],g.bannerAdsMeta=[];var et=e=>{let{adsTwWindowUrl:t,tkeyInpageAdUrl:r,smallTkeyInpageAdUrl:s,swapTkeyUrl:l,externalAdsActivityMessageType:o,personaIframePath:a,getAdsStackIframeURL:n,buildNativeAdsMeta:i,bannerAdsMeta:d,extVersion:m,templePassphrase:A,isMisesBrowser:p}=e;s&&(g.SMALL_TKEY_INPAGE_AD_URL=s),g.ADS_TW_WINDOW_URL=t,g.TKEY_INPAGE_AD_URL=r,g.SWAP_TKEY_URL=l,g.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE=o,g.personaIframePath=a,g.getAdsStackIframeURL=n,g.buildNativeAdsMeta=i,g.bannerAdsMeta=d,g.EXTENSION_VERSION=m,g.TEMPLE_PASSPHRASE=A,g.IS_MISES_BROWSER=p;};var Y="twa",z="twa-native",G="twa-sibling-replacement";var le="adRenderStart",ae="resize",K="ready",re="error",de="accelerometer; gyroscope",k="crypto",me="background";var q=/[\d.]+(px)?$/,X=`[${Y}]`,Le=`[${Y}]:not([${z}])`,De=`[${z}]`,Ae=(e,t)=>{let r=parseInt(e,10);return isNaN(r)||!q.test(e)?t:r},U=(e,t,r)=>{e.style[t]=`${Math.max(Ae(e.style[t],0),r)}px`;},Q=e=>e.reduce((t,r)=>t+Ae(r,0),0),j=e=>!!e.closest(X),ce=e=>{var t;return !!((t=e.previousElementSibling)!=null&&t.getAttribute(G))},ne=e=>{let t=getComputedStyle(e),{x:r,right:s,width:l,height:o}=e.getBoundingClientRect(),a={width:l,height:o},n=["width","height"];for(let i of n){let d=t[i],m=e.getAttribute(i),A=Math.max(...[d,m].map(p=>Ae(p!=null?p:"",-1)));A!==-1&&(a[i]=A),i==="width"&&r<0?a.width+=r:i==="width"&&s>window.innerWidth&&(a.width=window.innerWidth-r);}return a},D=(e,t,r=document)=>e?t?[...r.querySelectorAll(e)]:[r.querySelector(e)].filter(s=>!!s):[],O=(e,t)=>{let r=e;for(let s=0;s<t;s++){let l=r.parentElement;if(!l)return null;r=l;}return r},He=(e,t,r,s,l)=>{if(e<2&&t<2)return [];if(s)return g.buildNativeAdsMeta(e,t);let o=r==="permanent"||r==="slot-replacement"?g.bannerAdsMeta.filter(({source:i})=>i.shouldNotUseStrictContainerLimits):[],a=Math.max(e,...o.map(({dimensions:i})=>i.width)),n=Math.max(t,...o.map(({dimensions:i})=>i.height));return g.bannerAdsMeta.reduce((i,{dimensions:d,source:m},A)=>{let{shouldNotUseStrictContainerLimits:p=!1,categories:c=[k]}=m;if(c.every(v=>!l.includes(v)))return i;let{minContainerWidth:u,minContainerHeight:E,width:f,maxContainerWidth:h,maxContainerHeight:S}=d,R=!1;switch(r){case"permanent":R=p||a>=f&&(n>=E||n<2);break;case"slot-replacement":R=p||a>=u&&(n>=E||n<2);break;default:R=e>=u&&t>=E&&e<=h&&t<=S;}return R&&i.push(A),i},[])},tt=e=>{let{x:t,y:r,width:s,height:l}=e.getBoundingClientRect();return t!==0||r!==0||s!==0||l!==0},ue=e=>{let{display:t}=window.getComputedStyle(e);switch(t){case"none":return !0;case"contents":return Array.from(e.children).every(r=>ue(r));default:return !tt(e)}};var Ne=(e,t)=>{let{shouldHide:r,cssString:s,parentDepth:l,isMultiple:o}=e;D(s,o).forEach(a=>{let n=O(a,l);if(!n)return;let i=window.getComputedStyle(n);i.display!=="none"&&i.visibility!=="hidden"&&t.push({type:r?"hide-element":"remove-element",element:n});});};var Oe=(e,t,r)=>T(void 0,null,function*(){let{parentSelector:s,displayWidth:l}=e,{isMultiple:o,cssString:a,parentDepth:n}=s;if(l&&!semver.satisfies(semver.coerce(window.innerWidth),l))return [];let i=D(a,o).map(d=>O(d,n)).filter(d=>!!d);return yield Promise.all(i.map(d=>T(void 0,null,function*(){yield N(0),st(d,e,t,r);}))),i}),he=(e,t)=>{var r,s;return e?{width:(r=document.querySelector(e.width))!=null?r:t,height:(s=document.querySelector(e.height))!=null?s:t}:{width:t,height:t}},st=(e,t,r,s)=>{var ve;let Te=t,{shouldUseDivWrapper:l,divWrapperStyle:o,wrapperStyle:a,elementStyle:n,adSelector:i,insertionIndex:d,insertBeforeSelector:m,insertAfterSelector:A,insertionsCount:p=1,elementsToMeasureSelectors:c,stylesOverrides:u,shouldHideOriginal:E=!1,isNative:f,urlRegexes:h,parentSelector:S}=Te,R=_(Te,["shouldUseDivWrapper","divWrapperStyle","wrapperStyle","elementStyle","adSelector","insertionIndex","insertBeforeSelector","insertAfterSelector","insertionsCount","elementsToMeasureSelectors","stylesOverrides","shouldHideOriginal","isNative","urlRegexes","parentSelector"]),v=R.wrapperType?a:l?o:{display:"contents"},{isMultiple:I,cssString:P,parentDepth:w}=i,M=D(f?De:Le,!0,e).reduce((y,B)=>y.some($=>$.contains(B))?y:[...y.filter($=>!B.contains($)),B],[]),b=M.filter(ue),F=M.length-b.length,W=p-F;if(D(P,I,e).map(y=>O(y,w)).filter(y=>be(y)&&!j(y)).forEach(y=>{var $;let B=window.getComputedStyle(y).display==="none";if(W<=0)(!E||!B)&&s.push({type:E?"hide-element":"remove-element",element:y});else {let qe=he(c,(($=y.parentElement)==null?void 0:$.children.length)===1?y.parentElement:y),Xe=x({type:"replace-element",element:y,wrapperStyle:v,elementStyle:n,stylesOverrides:u},R),Pe={type:"hide-element",element:y},Qe=x({type:"simple-insert-ad",wrapperStyle:v,elementStyle:n,parent:y.parentElement,insertionIndex:Array.from(y.parentElement.children).indexOf(y),isSiblingReplacement:!0,stylesOverrides:u},R),te=[],Ie=ce(y);E&&Ie&&!B?te=[Pe]:E&&!Ie?te=[Pe,Qe]:E||(te=[Xe]),te.length>0&&r(qe,"permanent",f,[k],...te)&&W--;}}),W<=0)return;let H=-1,V=e,ee={width:e,height:e},we=m||A;if(we){let y=e.querySelector(we),B=y==null?void 0:y.parentElement;y&&B&&(V=B,H=Array.from(e.children).indexOf(y)+(m?0:1),ee=he(c,y));}else {let y=d!=null?d:0;H=y<0?Math.max(e.children.length+y,0):Math.min(y,e.children.length),ee=he(c,(ve=e.children[H])!=null?ve:e);}if(H!==-1){let y=x({type:"simple-insert-ad",wrapperStyle:v,elementStyle:n,parent:V,insertionIndex:H,isSiblingReplacement:!1,stylesOverrides:u},R);r(ee,"permanent",f,[k],...Array(W).fill(y));}};var ot=["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"],lt=lodash.memoize(e=>e.reduce((t,{dimensions:r})=>{let s=t.filter(({width:l,height:o})=>l<r.width||o<r.height);return (s.length===0||s.some(({width:l,height:o})=>l>r.width||o>r.height))&&s.push(r),s},[])),Ce=(e,t,r,s)=>T(void 0,null,function*(){let l=lt(g.bannerAdsMeta),o=e.map(({selector:n,parentDepth:i,categories:d})=>D(n,!0).reduce((m,A)=>{var P;let p=(P=O(A,i))!=null?P:A,c=m.findIndex(({element:w})=>w.contains(p)),u=p.parentElement&&window.getComputedStyle(p.parentElement),{width:E,height:f}=ne(p),h=s.some(w=>{var M;return w.type==="replace-all-children"||w.type==="simple-insert-ad"?w.parent.contains(p)||p.contains(w.parent):((M=w.element.parentElement)==null?void 0:M.contains(p))||p.contains(w.element)}),S=(u==null?void 0:u.display)==="none"||(u==null?void 0:u.visibility)==="hidden",R=c>=0&&m[c]instanceof HTMLAnchorElement,v=l.some(({width:w,height:M})=>E>=w&&f>=M);if(h||!v||S||R)return m;let I={element:p,categories:d};return c>=0?m.splice(c,1,I):m.some(({element:w})=>w.contains(p))||m.push(I),m},[])).flat(),a=t.map(({selector:n,parentDepth:i})=>D(n,!0).map(d=>O(d,i)).filter(d=>!!d)).flat();o=o.filter(({element:n})=>!a.includes(n)),yield Promise.all(o.map(d=>T(void 0,[d],function*({element:n,categories:i}){var u,E,f,h,S,R,v,I;yield N(0);let m=n.parentElement,{width:A,height:p}=window.getComputedStyle(n),c=q.test(A)&&q.test(p)?n:(E=(u=m==null?void 0:m.closest("div, article, aside, footer, header"))!=null?u:(m==null?void 0:m.tagName.toLowerCase())==="body"?void 0:m)!=null?E:n;if(!j(n)&&!n.querySelector(X)&&!s.some(P=>P.type==="simple-insert-ad"?!1:P.type==="replace-all-children"?P.parent.contains(n):P.element===n)){let P=(f=n.getAttribute("style"))!=null?f:"",w=Object.fromEntries(P.split(";").filter(Boolean).map(V=>V.split(":").map(ee=>ee.trim())));if((h=w.width)!=null&&h.match(/^0[a-z]/)||(S=w.height)!=null&&S.match(/^0[a-z]/))return;let M=window.getComputedStyle(n),b=x(x({},Object.fromEntries(ot.map(V=>[V,M.getPropertyValue(V)]))),w),F={type:"hide-element",element:n},W={type:"simple-insert-ad",wrapperStyle:b,parent:(R=n.parentElement)!=null?R:document.body,insertionIndex:Array.from((I=(v=n.parentElement)==null?void 0:v.children)!=null?I:[]).indexOf(n),isSiblingReplacement:!0,shouldUseBlurredBackground:!0},Z,H=n.closest(`[${G}] + *`);H&&H!==n?Z=[{type:"remove-element",element:H.previousElementSibling},F,W]:H?Z=window.getComputedStyle(n).display==="none"?[]:[F]:Z=[F,W],r({width:c,height:c},"provider-replacement",!1,i,...Z);}})));});var We=(e,t,r)=>T(void 0,null,function*(){let{cssString:s,isMultiple:l}=e.selector,o=D(s,l);yield Promise.all(o.map(a=>T(void 0,null,function*(){yield N(0),at(a,e,t,r);})));}),at=(e,t,r,s)=>{let{selector:{shouldUseDivWrapper:l,parentDepth:o,divWrapperStyle:a},stylesOverrides:n,shouldHideOriginal:i,isNative:d=!1}=t,m=O(e,o);if(!m||r.some(c=>c.contains(m))||j(m)||m.querySelector(X))return;let A={shouldUseDivWrapper:l,wrapperStyle:a},p;if(l&&i){let c=m.parentElement,u=window.getComputedStyle(m).display==="none",E=x({type:"simple-insert-ad",parent:c,insertionIndex:Array.from(c.children).indexOf(m),stylesOverrides:n==null?void 0:n.map(S=>{var R=S,{parentDepth:f}=R,h=_(R,["parentDepth"]);return L(x({},h),{parentDepth:f-1})}),isSiblingReplacement:!0},A);p=[],u||p.push({type:"hide-element",element:m}),ce(m)||p.push(E);}else if(l)p=[x({type:"replace-element",element:m,stylesOverrides:n==null?void 0:n.map(f=>{var h=f,{parentDepth:u}=h,E=_(h,["parentDepth"]);return L(x({},E),{parentDepth:u-1})})},A)];else if(i){let c={type:"simple-insert-ad",parent:m,insertionIndex:0,stylesOverrides:n,isSiblingReplacement:!0,wrapperStyle:{display:"contents"}};p=Array.from(m.children).filter(u=>window.getComputedStyle(u).display!=="none").map(u=>({type:"hide-element",element:u})),m.querySelector(X)||p.push(c);}else p=[{type:"replace-all-children",parent:m,stylesOverrides:n,wrapperStyle:{display:"contents"}}];p.length>0&&s({width:m,height:m},"slot-replacement",d,[k],...p);};var dt=o=>T(void 0,[o],function*({providersSelectors:e,providersNegativeSelectors:t,adPlacesRules:r,permanentAdPlacesRules:s,elementsToHideOrRemoveRules:l}){let a=[],n=(d,m,A,p,...c)=>{if(c.length>0&&c.every(b=>b.type==="hide-element"||b.type==="remove-element"))return a.push(...c),!0;let{width:u}=ne(d.width),{height:E}=ne(d.height),{paddingLeft:f,paddingRight:h}=window.getComputedStyle(d.width),{paddingTop:S,paddingBottom:R}=window.getComputedStyle(d.height),v=Q([f,h]),I=v===u?u:u-v,P=Q([S,R]),w=P===E?E:E-P,M=He(I,w,m,A,p);return M.length?(a.push(...c.map(b=>b.type==="hide-element"||b.type==="remove-element"?b:L(x({},b),{adsMetadata:M,originalWidth:I,originalHeight:w}))),!0):!1},i=[];return yield Promise.all(l.map(d=>T(void 0,null,function*(){yield N(0),Ne(d,a);}))),yield Promise.all(s.map(d=>T(void 0,null,function*(){yield N(0),i=i.concat(yield Oe(d,n,a));}))),yield Promise.all(r.map(d=>T(void 0,null,function*(){yield N(0),yield We(d,i,n);}))),yield Ce(e,t,n,a),a});var Ee=(o=>(o.Optimal="Optimal",o.SmartyAds="SmartyAds",o.HypeLab="HypeLab",o.Persona="Persona",o.Temple="Temple Wallet",o))(Ee||{});var ge=new Set,Be=new Set,ke=new Set,Fe=e=>T(void 0,null,function*(){let t=e.id;if(!ge.has(t))return ge.add(t),new Promise((r,s)=>{let l=!1,o=a=>{var n,i;if(a.source===e.contentWindow)try{let d=typeof a.data=="string"?JSON.parse(a.data):a.data;if(d.id!==t)return;let m=e.offsetWidth-e.clientWidth,A=e.offsetHeight-e.clientHeight;switch(d.type){case K:r(d.adMetadata.source.providerName);break;case re:window.removeEventListener("message",o),e.style.display="none",s(new Error((n=d.reason)!=null?n:"Unknown error"));break;case le:let{dimensions:p,source:c}=d.adMetadata;l=(i=c.native)!=null?i:!1;let{width:u,height:E}=p;u>0&&E>0&&(c.native?e.style.height=`${E}px`:(U(e,"width",u),U(e,"height",E)));break;case ae:let{width:f,height:h}=d;l?e.style.height=`${h+A}px`:(U(e,"width",f+m),U(e,"height",h+A));}}catch(d){console.error("Observing error:",d);}};window.addEventListener("message",o);}).then(r=>{if(Be.has(t))return;Be.add(t),pt(e)?Ve(t,r):mt(e,r);}).catch(r=>{throw console.error(r),r}).finally(()=>void ge.delete(t))}),mt=(e,t)=>{let r=new IntersectionObserver(s=>{s.some(l=>l.isIntersecting)&&(Ve(e.id,t),r.disconnect());},{threshold:.5});r.observe(e);},Ve=(e,t)=>{if(ke.has(e))return;ke.add(e);let r=window.parent.location.href;ct__default.default.runtime.sendMessage({type:g.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE,url:r,provider:Ee[t]}).catch(s=>void console.error(s));},pt=e=>{let t=e.getBoundingClientRect(),r=window.visualViewport;if(!r)return !1;let s=Math.min(Math.max(0,t.x),r.width),l=Math.min(Math.max(0,t.x+t.width),r.width),o=Math.min(Math.max(0,t.y),r.height),a=Math.min(Math.max(0,t.y+t.height),r.height),n=t.width*t.height;return (l-s)*(a-o)/n>=.5};var se=(e,t)=>{for(let r in t)e.style.setProperty(r,t[r]);};var ut=(e,t)=>{["width","height"].forEach(s=>{var o;let l=(o=e.style[s])!=null?o:"";q.test(l)&&parseInt(l,10)<t[s]&&e.style.removeProperty(s);});},ht=(e,t,r,s)=>T(void 0,null,function*(){let{elementStyle:l={},stylesOverrides:o=[],adsMetadata:a,wrapperType:n,originalHeight:i,originalWidth:d,shouldUseBlurredBackground:m}=e;o.sort((S,R)=>S.parentDepth-R.parentDepth);let A,p=nanoid.nanoid(),c=document.createElement("iframe");c.loading="lazy",c.src=g.getAdsStackIframeURL(p,a,window.location.href),c.id=p,c.allow=de;let u=a[0],{dimensions:E}=typeof u=="number"?g.bannerAdsMeta[u]:u,f={width:m?Math.max(d,E.width):E.width,height:m?Math.max(i,E.height):E.height};c.style.width=n==="tbody"?"100%":`${f.width}px`,c.style.height=`${f.height}px`,c.style.border="none";for(let S in l)c.style.setProperty(S,l[S]);switch(c.setAttribute(Y,"true"),ut(t,f),r.appendChild(c),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(G,"true");let R=new MutationObserver(v=>{v.some(P=>Array.from(P.removedNodes).includes(S))&&(t.remove(),R.disconnect());});R.observe(e.parent,{childList:!0});}A=e.parent,e.parent.insertBefore(t,S);break}if(n!=="tbody"){let{borderLeftWidth:S,borderRightWidth:R,borderTopWidth:v,borderBottomWidth:I}=window.getComputedStyle(c),{borderLeftWidth:P,borderRightWidth:w,borderTopWidth:M,borderBottomWidth:b}=window.getComputedStyle(t),F=Q([S,R,P,w]),W=Q([v,I,M,b]);c.style.width=`${f.width-F}px`,c.style.height=`${f.height-W}px`;}Fe(c).catch(s);let h=0;o.forEach(({parentDepth:S,style:R})=>{for(;S>h&&A;)A=A.parentElement,h++;A&&se(A,R);});}),Ye=e=>T(void 0,null,function*(){let{wrapperStyle:t={},adsMetadata:r,wrapperType:s="div",colsAfter:l=0,colsBefore:o=0,colspan:a=1}=e,n=r.every(A=>typeof A=="object"),i,d;if(s==="div")i=document.createElement("div"),d=i;else {i=document.createElement("tbody");let A=document.createElement("tr");i.appendChild(A);for(let c=0;c<o;c++)A.appendChild(document.createElement("td"));let p=document.createElement("td");p.colSpan=a,A.appendChild(p),d=p;for(let c=0;c<l;c++)A.appendChild(document.createElement("td"));}i.setAttribute(Y,"true"),n&&i.setAttribute(z,"true"),se(i,t);let m=()=>{let A=document.createElement("div");A.setAttribute(Y,"true"),n&&A.setAttribute(z,"true"),e.type==="simple-insert-ad"&&e.isSiblingReplacement&&A.setAttribute(G,"true"),A.style.display="none",i.replaceWith(A);};yield ht(e,i,d,A=>{console.error("Failed to render ads",A),m();}).catch(A=>{throw console.error("Inserting an ad attempt error:",A),m(),A});});var Et=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 Ye(t);})));var fe=(e,t,r=!1)=>{let s=document.createElement("div");s.style.width=`${e}px`,s.style.height=`${t}px`;let l=document.createElement("div");if(l.style.width=`${e}px`,l.style.height=`${t}px`,s.appendChild(l),r){let n=document.createElement("a");return n.href=g.SWAP_TKEY_URL,n.target="_blank",n.rel="noopener noreferrer",n.style.width=`${e}px`,n.style.height=`${t}px`,n.style.overflow="hidden",n.style.textOverflow="ellipsis",n.appendChild(document.createTextNode("TODO: Native TKEY ad")),l.appendChild(n),{element:s}}let o=document.createElement("a");o.href=g.SWAP_TKEY_URL,o.target="_blank",o.rel="noopener noreferrer",o.style.width="100%",o.style.height="100%",l.appendChild(o);let a=document.createElement("img");return a.src=e<=320?g.SMALL_TKEY_INPAGE_AD_URL:g.TKEY_INPAGE_AD_URL,a.style.width="100%",a.style.height="100%",o.appendChild(a),{element:s,creativeSet:{image:{url:a.src}}}};var Re=(e,t,{width:r,height:s},l)=>{let o=document.createElement("iframe");return o.id=e,o.src=ft(t,l,r,s,o.id),o.style.width=t.native?"100%":`${r}px`,o.style.height=`${s}px`,o.style.border="none",o.allow=de,{element:o}},ft=(e,t,r,s,l)=>{let{providerName:o,slug:a,native:n}=e,i=new URL(g.ADS_TW_WINDOW_URL);return i.searchParams.set("ap",o.toLowerCase()),n?i.searchParams.set("vh",String(s)):i.searchParams.set("w",String(r)),i.searchParams.set("h",String(s)),i.searchParams.set("p",a),i.searchParams.set("o",Rt(t)),l&&i.searchParams.set("id",l),i.toString()},Rt=e=>cryptoJs.AES.encrypt(e,g.TEMPLE_PASSPHRASE).toString();var ye=(e,t,{width:r,height:s})=>{let l=document.createElement("iframe"),o="";switch(t.providerName){case"Persona":o=g.personaIframePath;break;default:throw new Error(`Ads from ${t.providerName} are unavailable via extension iframe`)}let a=new URL(o);return a.searchParams.set("id",e),a.searchParams.set("slug",t.slug),l.src=a.toString(),l.id=e,l.style.width=`${r}px`,l.style.height=`${s}px`,l.style.border="none",{element:l}};var ie=e=>window.parent.postMessage(JSON.stringify(e),"*"),Ge=(e,t,r)=>T(void 0,null,function*(){if(t.length===0){ie({id:e,type:re,reason:"No more ads to render"});return}let[s,...l]=t,o=typeof s=="number"?g.bannerAdsMeta[s]:s;ie({id:e,type:le,adMetadata:o});let{source:a,dimensions:n}=o,i;switch(a.providerName){case"Temple":i=fe(n.width,n.height,a.native);break;case"HypeLab":case"SmartyAds":i=Re(e,a,n,r);break;default:i=ye(e,a,n);}let{element:d}=i,m=document.getElementById("root"),A=document.getElementById("temple-label");m.replaceChildren(d),a.native?A.removeAttribute("active"):A.setAttribute("active","");let p=(c={})=>{let u=document.getElementById(me);if(a.native&&u&&m.removeChild(u),!a.native)try{let{image:E,video:f}=c,h;if(E?(h=document.createElement("img"),h.src=E.url,h.alt=""):f&&(h=document.createElement("video"),h.src=f.url,h.autoplay=!0,h.preload="auto",h.playsInline=!0,h.muted=!0,h.loop=!0),!h&&u&&m.removeChild(u),!h)return;h.id=me,h.style.zIndex="-1",se(h,{position:"absolute",top:"0px",left:"0px",right:"0px",bottom:"0px",width:"100%",height:"100%","object-fit":"cover",filter:"blur(12px)"}),u?m.replaceChild(h,u):m.prepend(h);}catch(E){console.error(E);}};if(d instanceof HTMLIFrameElement)return new Promise((c,u)=>{let E=setTimeout(()=>{window.removeEventListener("message",h),u(new Error(`Timeout exceeded for ${e}, ad source: ${JSON.stringify(a)}`));},(l.length===0?2e4:1e4)*(g.IS_MISES_BROWSER?2:1)),f=!1,h=S=>{var R,v;if(S.source===d.contentWindow)try{let I=typeof S.data=="string"?JSON.parse(S.data):S.data;switch(I.type){case K:f||(f=!0,ie({id:e,type:K,adMetadata:o}),clearTimeout(E),c()),p((R=I.ad)==null?void 0:R.creative_set);break;case re:f||(window.removeEventListener("message",h),clearTimeout(E),u(new Error((v=I.reason)!=null?v:"Unknown error")));break;case ae:let{width:P,height:w}=I;P>0&&w>0&&(o.source.native?d.style.height=`${w}px`:(U(d,"width",P),U(d,"height",w)),ie(L(x({},I),{id:e})));}}catch(I){console.error("Observing error:",I);}};window.addEventListener("message",h);}).catch(c=>(console.error(c),Ge(e,l,r)));p(i.creativeSet),ie({id:e,type:K,adMetadata:o});});var yt=(e,t)=>{let{adPlacesRulesForAllDomains:r,providersRulesForAllDomains:s,providersSelectors:l,providersNegativeSelectors:o={},providersToReplaceAtAllSites:a,permanentAdPlacesRulesForAllDomains:n,permanentNativeAdPlacesRulesForAllDomains:i={},adsReplaceUrlsBlacklist:d=[],elementsToHideOrRemoveRules:m={},providersCategories:A={},timestamp:p}=t,{hostname:c,href:u}=e;if(d.some(h=>new RegExp(h).test(u)))return {adPlacesRules:[],permanentAdPlacesRules:[],providersSelectors:[],providersNegativeSelectors:[],elementsToHideOrRemoveRules:[],timestamp:p};let E=u.replace(/#.*$/,""),f=h=>{let S=h.source.includes("#")?u:E;return h.test(S)};return {adPlacesRules:wt(c,f,r),permanentAdPlacesRules:Tt(c,f,n,i),providersSelectors:Ke(c,f,s,l,a,A),providersNegativeSelectors:Ke(c,f,s,o,a,A),elementsToHideOrRemoveRules:St(c,f,m),timestamp:p}},St=(e,t,r)=>{var s;return ((s=r[e])!=null?s:[]).map(a=>{var n=a,{urlRegexes:l}=n,o=_(n,["urlRegexes"]);return L(x({},o),{urlRegexes:l.map(i=>new RegExp(i))})}).filter(({urlRegexes:l})=>l.some(t))},wt=(e,t,r)=>{var o;return ((o=r[e])!=null?o:[]).map(i=>{var d=i,{urlRegexes:a}=d,n=_(d,["urlRegexes"]);return L(x({},n),{urlRegexes:a.map(m=>new RegExp(m))})}).reduce((a,m)=>{var A=m,{urlRegexes:n,selector:i}=A,d=_(A,["urlRegexes","selector"]);if(!n.some(t))return a;let E=i,{cssString:p}=E,c=_(E,["cssString"]),u=a.findIndex(S=>{var R=S,{selector:f}=R,h=_(R,["selector"]);let P=f,I=_(P,["cssString"]);return lodash.isEqual(c,I)&&lodash.isEqual(d,h)});return u===-1?a.push(x({selector:i},d)):a[u].selector.cssString+=", ".concat(p),a},[])},ze=e=>o=>{var a=o,{urlRegexes:t,elementToMeasureSelector:r,elementsToMeasureSelectors:s}=a,l=_(a,["urlRegexes","elementToMeasureSelector","elementsToMeasureSelectors"]);return L(x({},l),{urlRegexes:t.map(n=>new RegExp(n)),isNative:e,elementsToMeasureSelectors:s!=null?s:r?{width:r,height:r}:void 0})},Tt=(e,t,r,s={})=>{var n,i;let l=(n=r[e])!=null?n:[],o=(i=s[e])!=null?i:[];return l.map(ze(!1)).concat(o.map(ze(!0))).filter(({urlRegexes:d})=>d.some(t))};function vt(e){let t="";return e.forEach(r=>{t+=r+", ";}),t&&(t=t.slice(0,-2)),t}var Ke=(e,t,r,s,l,o)=>{var A;let n=((A=r[e])!=null?A:[]).map(u=>{var E=u,{urlRegexes:p}=E,c=_(E,["urlRegexes"]);return L(x({},c),{urlRegexes:p.map(f=>new RegExp(f))})}).filter(({urlRegexes:p})=>p.some(t)),i=new Set,d={},m=p=>{var E,f;if(i.has(p))return;let c=((E=o[p])!=null?E:[k]).join("|");((f=s[p])!=null?f:[]).forEach(h=>{let{selector:S,parentDepth:R}=typeof h=="string"?{selector:h,parentDepth:0}:h;d[c]||(d[c]={});let v=d[c];v[R]||(v[R]=new Set),v[R].add(S);}),i.add(p);};return l.forEach(m),n.forEach(({providers:p})=>p.forEach(m)),Object.entries(d).map(([p,c])=>Object.entries(c).map(([u,E])=>({parentDepth:Number(u),selector:vt(E),categories:p.split("|")}))).flat()};var C=e=>(...t)=>T(void 0,null,function*(){let{data:r}=yield e(...t);return r}),Se=class{constructor(t){this.getAdPlacesRulesForAllDomains=C(()=>this.api.get("/slise-ad-rules/ad-places",this.getAdVersionRequestConfig()));this.getProvidersToReplaceAtAllSites=C(()=>this.api.get("/slise-ad-rules/providers/all-sites"));this.getProvidersCategories=C(()=>this.api.get("/slise-ad-rules/providers/categories"));this.getProvidersRulesForAllDomains=C(()=>this.api.get("/slise-ad-rules/providers/by-sites"));this.getSelectorsForAllProviders=C(()=>this.api.get("/slise-ad-rules/providers",this.getAdVersionRequestConfig()));this.getNegativeSelectorsForAllProviders=C(()=>this.api.get("/slise-ad-rules/providers/negative-selectors",this.getAdVersionRequestConfig()));this.getPermanentAdPlacesRulesForAllDomains=C(()=>this.api.get("/slise-ad-rules/ad-places/permanent",this.getAdVersionRequestConfig()));this.getPermanentNativeAdPlacesRulesForAllDomains=C(()=>this.api.get("/slise-ad-rules/ad-places/permanent-native",this.getAdVersionRequestConfig()));this.getAdsReplaceUrlsBlacklist=C(()=>this.api.get("/slise-ad-rules/replace-urls-blacklist",this.getAdVersionRequestConfig()));this.getElementsToHideOrRemoveRules=C(()=>this.api.get("/slise-ad-rules/elements-to-hide-or-remove",this.getAdVersionRequestConfig()));this.getAllRules=()=>T(this,null,function*(){let[t,r,s,l,o,a,n,i,d,m]=yield Promise.all([this.getAdPlacesRulesForAllDomains(),this.getProvidersRulesForAllDomains(),this.getSelectorsForAllProviders(),this.getProvidersToReplaceAtAllSites(),this.getPermanentAdPlacesRulesForAllDomains(),this.getPermanentNativeAdPlacesRulesForAllDomains(),this.getAdsReplaceUrlsBlacklist(),this.getNegativeSelectorsForAllProviders(),this.getElementsToHideOrRemoveRules(),this.getProvidersCategories()]);return {adPlacesRulesForAllDomains:t,providersRulesForAllDomains:r,providersSelectors:s,providersToReplaceAtAllSites:l,permanentAdPlacesRulesForAllDomains:o,permanentNativeAdPlacesRulesForAllDomains:a,adsReplaceUrlsBlacklist:n,providersNegativeSelectors:i,elementsToHideOrRemoveRules:d,providersCategories:m,timestamp:Date.now()}});this.api=Pt__default.default.create({baseURL:new URL("/api",t).href,adapter:"fetch"});}getAdVersionRequestConfig(){return {params:{extVersion:g.EXTENSION_VERSION,isMisesBrowser:g.IS_MISES_BROWSER}}}};
16
16
 
17
- exports.TempleWalletApi = ge;
18
- exports.configureAds = Je;
19
- exports.executeAdsActions = mt;
20
- exports.getAdsActions = st;
21
- exports.renderAdsStack = Ve;
22
- exports.transformRawRules = ht;
17
+ exports.TempleWalletApi = Se;
18
+ exports.configureAds = et;
19
+ exports.executeAdsActions = Et;
20
+ exports.getAdsActions = dt;
21
+ exports.renderAdsStack = Ge;
22
+ exports.transformRawRules = yt;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temple-wallet/extension-ads",
3
- "version": "8.1.0-dev.3",
3
+ "version": "8.1.0-dev.4",
4
4
  "main": "dist/index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -153,3 +153,22 @@ export const pickAdsToDisplay = (
153
153
  return acc;
154
154
  }, []);
155
155
  };
156
+
157
+ const elementHasBox = (element: Element) => {
158
+ const { x, y, width, height } = element.getBoundingClientRect();
159
+
160
+ return x !== 0 || y !== 0 || width !== 0 || height !== 0;
161
+ };
162
+
163
+ export const elementIsHidden = (element: Element): boolean => {
164
+ const { display } = window.getComputedStyle(element);
165
+
166
+ switch (display) {
167
+ case 'none':
168
+ return true;
169
+ case 'contents':
170
+ return Array.from(element.children).every(child => elementIsHidden(child));
171
+ default:
172
+ return !elementHasBox(element);
173
+ }
174
+ };
@@ -18,6 +18,7 @@ import { delay, isTruthy } from 'src/utils';
18
18
 
19
19
  import {
20
20
  applyQuerySelector,
21
+ elementIsHidden,
21
22
  elementIsOurAd,
22
23
  getParentOfDepth,
23
24
  ourBannerAdQuerySelector,
@@ -111,14 +112,15 @@ const processPermanentAdsParent = (
111
112
  true,
112
113
  parent
113
114
  ).reduce<Element[]>((acc, element) => {
114
- if (acc.some(prevElement => prevElement.contains(element) || element.contains(prevElement))) {
115
+ if (acc.some(prevElement => prevElement.contains(element))) {
115
116
  return acc;
116
117
  }
117
118
 
118
- return [...acc, element];
119
+ return [...acc.filter(prevElement => !element.contains(prevElement)), element];
119
120
  }, []);
121
+ const ourHiddenAds = ourAds.filter(elementIsHidden);
120
122
 
121
- const ourAdsCount = ourAds.length;
123
+ const ourAdsCount = ourAds.length - ourHiddenAds.length;
122
124
  let insertionsLeft = insertionsCount - ourAdsCount;
123
125
 
124
126
  const banners = applyQuerySelector<HTMLElement>(bannerCssString, shouldSearchForManyBannersInParent, parent)
@@ -1,3 +1,6 @@
1
+ import { memoize } from 'lodash';
2
+
3
+ import { AdsConfiguration } from 'src/ads-configuration';
1
4
  import { SIBLING_REPLACEMENT_ATTRIBUTE_NAME } from 'src/constants';
2
5
  import {
3
6
  AdAction,
@@ -10,6 +13,7 @@ import {
10
13
  RemoveElementAction,
11
14
  SimpleInsertAdAction
12
15
  } from 'src/types/ads-actions';
16
+ import { AdDimensions, AdMetadata } from 'src/types/ads-meta';
13
17
  import { AdsRules } from 'src/types/ads-rules';
14
18
  import { delay } from 'src/utils';
15
19
 
@@ -56,12 +60,30 @@ interface BannerFromProviderEntry {
56
60
  categories: string[];
57
61
  }
58
62
 
63
+ /** Returns such a minimal subset of ads dimensions that we can use to filter containers that cannot place any of our ads */
64
+ const getSmallestBannersDimensions = memoize((bannerAdsMeta: AdMetadata[]) =>
65
+ bannerAdsMeta.reduce<AdDimensions[]>((acc, { dimensions }) => {
66
+ const result = acc.filter(({ width, height }) => width < dimensions.width || height < dimensions.height);
67
+
68
+ if (
69
+ result.length === 0 ||
70
+ result.some(({ width, height }) => width > dimensions.width || height > dimensions.height)
71
+ ) {
72
+ result.push(dimensions);
73
+ }
74
+
75
+ return result;
76
+ }, [])
77
+ );
78
+
59
79
  export const processProvidersAds = async (
60
80
  providersSelectors: AdsRules['providersSelectors'],
61
81
  providersNegativeSelectors: AdsRules['providersNegativeSelectors'],
62
82
  addActionsIfAdResolutionAvailable: AddActionsIfAdResolutionAvailable,
63
83
  result: AdAction[]
64
84
  ) => {
85
+ const smallestBannersDimensions = getSmallestBannersDimensions(AdsConfiguration.bannerAdsMeta);
86
+
65
87
  let bannersFromProviders = providersSelectors
66
88
  .map(({ selector: providersSelector, parentDepth, categories }) =>
67
89
  applyQuerySelector(providersSelector, true).reduce<BannerFromProviderEntry[]>((acc, foundElement) => {
@@ -79,8 +101,11 @@ export const processProvidersAds = async (
79
101
  });
80
102
  const bannerIsHiddenByParent = parentStyles?.display === 'none' || parentStyles?.visibility === 'hidden';
81
103
  const hasAnchorParent = parentElementIndex >= 0 && acc[parentElementIndex] instanceof HTMLAnchorElement;
104
+ const canPlaceAds = smallestBannersDimensions.some(
105
+ ({ width: minWidth, height: minHeight }) => width >= minWidth && height >= minHeight
106
+ );
82
107
 
83
- if (bannerIsTouchedByOtherActions || width === 0 || height === 0 || bannerIsHiddenByParent || hasAnchorParent) {
108
+ if (bannerIsTouchedByOtherActions || !canPlaceAds || bannerIsHiddenByParent || hasAnchorParent) {
84
109
  return acc;
85
110
  }
86
111
 
@@ -155,7 +180,8 @@ export const processProvidersAds = async (
155
180
  wrapperStyle,
156
181
  parent: banner.parentElement ?? document.body,
157
182
  insertionIndex: Array.from(banner.parentElement?.children ?? []).indexOf(banner),
158
- isSiblingReplacement: true
183
+ isSiblingReplacement: true,
184
+ shouldUseBlurredBackground: true
159
185
  };
160
186
 
161
187
  let actions: (InsertAdActionWithoutMeta | HideElementAction | RemoveElementAction)[];
@@ -33,7 +33,15 @@ const processInsertAdActionOnce = async (
33
33
  insertionPoint: HTMLDivElement | HTMLTableCellElement,
34
34
  onAdsStackError: (error: Error) => void
35
35
  ) => {
36
- const { elementStyle = {}, stylesOverrides = [], adsMetadata, wrapperType, originalHeight, originalWidth } = action;
36
+ const {
37
+ elementStyle = {},
38
+ stylesOverrides = [],
39
+ adsMetadata,
40
+ wrapperType,
41
+ originalHeight,
42
+ originalWidth,
43
+ shouldUseBlurredBackground
44
+ } = action;
37
45
 
38
46
  stylesOverrides.sort((a, b) => a.parentDepth - b.parentDepth);
39
47
 
@@ -49,8 +57,8 @@ const processInsertAdActionOnce = async (
49
57
  const { dimensions: minDimensions } =
50
58
  typeof firstAdMetadataOrId === 'number' ? AdsConfiguration.bannerAdsMeta[firstAdMetadataOrId] : firstAdMetadataOrId;
51
59
  const dimensions = {
52
- width: Math.max(originalWidth, minDimensions.width),
53
- height: Math.max(originalHeight, minDimensions.height)
60
+ width: shouldUseBlurredBackground ? Math.max(originalWidth, minDimensions.width) : minDimensions.width,
61
+ height: shouldUseBlurredBackground ? Math.max(originalHeight, minDimensions.height) : minDimensions.height
54
62
  };
55
63
  adElement.style.width = wrapperType === 'tbody' ? '100%' : `${dimensions.width}px`;
56
64
  adElement.style.height = `${dimensions.height}px`;
@@ -74,11 +82,23 @@ const processInsertAdActionOnce = async (
74
82
  action.element.replaceWith(wrapperElement);
75
83
  break;
76
84
  default:
85
+ const nextSibling = action.parent.children[action.insertionIndex];
77
86
  if (action.isSiblingReplacement) {
78
87
  wrapperElement.setAttribute(SIBLING_REPLACEMENT_ATTRIBUTE_NAME, 'true');
88
+ const observer = new MutationObserver(mutations => {
89
+ const hasRemoveSiblingMutation = mutations.some(mutation =>
90
+ Array.from(mutation.removedNodes).includes(nextSibling)
91
+ );
92
+
93
+ if (hasRemoveSiblingMutation) {
94
+ wrapperElement.remove();
95
+ observer.disconnect();
96
+ }
97
+ });
98
+ observer.observe(action.parent, { childList: true });
79
99
  }
80
100
  stylesOverridesCurrentElement = action.parent;
81
- action.parent.insertBefore(wrapperElement, action.parent.children[action.insertionIndex]);
101
+ action.parent.insertBefore(wrapperElement, nextSibling);
82
102
  break;
83
103
  }
84
104
 
@@ -106,7 +106,7 @@ export const renderAdsStack = async (
106
106
  if (prevBackgroundElement) {
107
107
  rootElement.replaceChild(backgroundElement, prevBackgroundElement);
108
108
  } else {
109
- rootElement.appendChild(backgroundElement);
109
+ rootElement.prepend(backgroundElement);
110
110
  }
111
111
  } catch (e) {
112
112
  console.error(e);
@@ -31,6 +31,7 @@ interface InsertAdActionProps
31
31
  stylesOverrides?: AdStylesOverrides[];
32
32
  originalWidth: number;
33
33
  originalHeight: number;
34
+ shouldUseBlurredBackground?: boolean;
34
35
  }
35
36
 
36
37
  export interface ReplaceAllChildrenWithAdAction extends AdActionBase, InsertAdActionProps {
@@ -1,17 +0,0 @@
1
- import { AdType } from 'src/types/ads-actions';
2
- import { AdMetadata } from 'src/types/ads-meta';
3
- export declare const PX_VALUE_REGEX: RegExp;
4
- export declare const ourAdQuerySelector = "[twa]";
5
- export declare const ourBannerAdQuerySelector = "[twa]:not([twa-native])";
6
- export declare const ourNativeAdQuerySelector = "[twa-native]";
7
- export declare const extendOrKeepDimension: (element: HTMLElement, dimension: 'width' | 'height', suggestedValue: number) => void;
8
- export declare const sumPxValues: (values: string[]) => number;
9
- export declare const elementIsOurAd: (element: Element) => boolean;
10
- export declare const prevBannerSiblingIsReplacement: (banner: Element) => boolean;
11
- export declare const getFinalSize: (element: Element) => {
12
- width: number;
13
- height: number;
14
- };
15
- export declare const applyQuerySelector: <E extends Element = Element>(querySelector: string, isMultiple: boolean, element?: Element | Document) => E[];
16
- export declare const getParentOfDepth: (element: HTMLElement, depth: number) => HTMLElement | null;
17
- export declare const pickAdsToDisplay: (containerWidth: number, containerHeight: number, adType: AdType, adIsNative: boolean, expectedCategories: string[]) => (number | AdMetadata)[];
@@ -1,96 +0,0 @@
1
- import { AdsConfiguration } from 'src/ads-configuration';
2
- import { CRYPTO_CATEGORY_NAME, SIBLING_REPLACEMENT_ATTRIBUTE_NAME, TEMPLE_WALLET_AD_ATTRIBUTE_NAME, TEMPLE_WALLET_NATIVE_AD_ATTRIBUTE_NAME } from 'src/constants';
3
- import { AdType } from 'src/types/ads-actions';
4
- export const PX_VALUE_REGEX = /[\d.]+(px)?$/;
5
- export const ourAdQuerySelector = `[${TEMPLE_WALLET_AD_ATTRIBUTE_NAME}]`;
6
- export const ourBannerAdQuerySelector = `[${TEMPLE_WALLET_AD_ATTRIBUTE_NAME}]:not([${TEMPLE_WALLET_NATIVE_AD_ATTRIBUTE_NAME}])`;
7
- export const ourNativeAdQuerySelector = `[${TEMPLE_WALLET_NATIVE_AD_ATTRIBUTE_NAME}]`;
8
- const parsePxValue = (value, fallback) => {
9
- const parsedValue = parseInt(value, 10);
10
- return isNaN(parsedValue) || !PX_VALUE_REGEX.test(value) ? fallback : parsedValue;
11
- };
12
- export const extendOrKeepDimension = (element, dimension, suggestedValue) => {
13
- element.style[dimension] = `${Math.max(parsePxValue(element.style[dimension], 0), suggestedValue)}px`;
14
- };
15
- export const sumPxValues = (values) => values.reduce((acc, value) => acc + parsePxValue(value, 0), 0);
16
- export const elementIsOurAd = (element) => Boolean(element.closest(ourAdQuerySelector));
17
- export const prevBannerSiblingIsReplacement = (banner) => { var _a; return Boolean((_a = banner.previousElementSibling) === null || _a === void 0 ? void 0 : _a.getAttribute(SIBLING_REPLACEMENT_ATTRIBUTE_NAME)); };
18
- export const getFinalSize = (element) => {
19
- const elementStyle = getComputedStyle(element);
20
- const { x, right, width: rectWidth, height: rectHeight } = element.getBoundingClientRect();
21
- const size = { width: rectWidth, height: rectHeight };
22
- const dimensions = ['width', 'height'];
23
- for (const dimension of dimensions) {
24
- const rawDimensionFromStyle = elementStyle[dimension];
25
- const rawDimensionFromAttribute = element.getAttribute(dimension);
26
- const parsedDimension = Math.max(...[rawDimensionFromStyle, rawDimensionFromAttribute].map(rawValue => parsePxValue(rawValue !== null && rawValue !== void 0 ? rawValue : '', -1)));
27
- if (parsedDimension !== -1) {
28
- size[dimension] = parsedDimension;
29
- }
30
- if (dimension === 'width' && x < 0) {
31
- size.width += x;
32
- }
33
- else if (dimension === 'width' && right > window.innerWidth) {
34
- size.width = window.innerWidth - x;
35
- }
36
- }
37
- return size;
38
- };
39
- export const applyQuerySelector = (querySelector, isMultiple, element = document) => {
40
- if (!querySelector) {
41
- return [];
42
- }
43
- return isMultiple
44
- ? [...element.querySelectorAll(querySelector)]
45
- : [element.querySelector(querySelector)].filter((el) => Boolean(el));
46
- };
47
- export const getParentOfDepth = (element, depth) => {
48
- let parent = element;
49
- for (let i = 0; i < depth; i++) {
50
- const nextParent = parent.parentElement;
51
- if (!nextParent) {
52
- return null;
53
- }
54
- parent = nextParent;
55
- }
56
- return parent;
57
- };
58
- export const pickAdsToDisplay = (containerWidth, containerHeight, adType, adIsNative, expectedCategories) => {
59
- if (containerWidth < 2 && containerHeight < 2) {
60
- return [];
61
- }
62
- if (adIsNative) {
63
- return AdsConfiguration.buildNativeAdsMeta(containerWidth, containerHeight);
64
- }
65
- return AdsConfiguration.bannerAdsMeta.reduce((acc, { dimensions, source }, i) => {
66
- const { shouldNotUseStrictContainerLimits = false, categories = [CRYPTO_CATEGORY_NAME] } = source;
67
- if (categories.every(category => !expectedCategories.includes(category))) {
68
- return acc;
69
- }
70
- const { minContainerWidth, minContainerHeight, width, maxContainerWidth, maxContainerHeight } = dimensions;
71
- let matches = false;
72
- switch (adType) {
73
- case AdType.Permanent:
74
- matches =
75
- shouldNotUseStrictContainerLimits ||
76
- (containerWidth >= width && (containerHeight >= minContainerHeight || containerHeight < 2));
77
- break;
78
- case AdType.SlotReplacement:
79
- matches =
80
- shouldNotUseStrictContainerLimits ||
81
- (containerWidth >= minContainerWidth && (containerHeight >= minContainerHeight || containerHeight < 2));
82
- break;
83
- default:
84
- matches =
85
- containerWidth >= minContainerWidth &&
86
- containerHeight >= minContainerHeight &&
87
- containerWidth <= maxContainerWidth &&
88
- containerHeight <= maxContainerHeight;
89
- }
90
- if (matches) {
91
- acc.push(i);
92
- }
93
- return acc;
94
- }, []);
95
- };
96
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/ads-actions/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { AdAction } from 'src/types/ads-actions';
2
- import type { AdsRules } from 'src/types/ads-rules';
3
- export declare const getAdsActions: ({ providersSelectors, providersNegativeSelectors, adPlacesRules, permanentAdPlacesRules, elementsToHideOrRemoveRules }: AdsRules) => Promise<AdAction[]>;
@@ -1,63 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { AdActionType } from 'src/types/ads-actions';
11
- import { delay } from 'src/utils';
12
- import { getFinalSize, pickAdsToDisplay, sumPxValues } from './helpers';
13
- import { processElementsToHideOrRemoveRule } from './process-elements-to-hide-or-remove-rule';
14
- import { processPermanentAdPlacesRule } from './process-permanent-rule';
15
- import { processProvidersAds } from './process-providers-ads';
16
- import { processAdPlacesRule } from './process-rule';
17
- export const getAdsActions = (_a) => __awaiter(void 0, [_a], void 0, function* ({ providersSelectors, providersNegativeSelectors, adPlacesRules, permanentAdPlacesRules, elementsToHideOrRemoveRules }) {
18
- const result = [];
19
- const addActionsIfAdResolutionAvailable = (elementsToMeasure, adType, adIsNative, categories, ...actionsBases) => {
20
- if (actionsBases.length > 0 &&
21
- actionsBases.every((action) => action.type === AdActionType.HideElement || action.type === AdActionType.RemoveElement)) {
22
- result.push(...actionsBases);
23
- return true;
24
- }
25
- const { width } = getFinalSize(elementsToMeasure.width);
26
- const { height } = getFinalSize(elementsToMeasure.height);
27
- const { paddingLeft, paddingRight } = window.getComputedStyle(elementsToMeasure.width);
28
- const { paddingTop, paddingBottom } = window.getComputedStyle(elementsToMeasure.height);
29
- const horizontalPadding = sumPxValues([paddingLeft, paddingRight]);
30
- const innerWidth = horizontalPadding === width ? width : width - horizontalPadding;
31
- const verticalPadding = sumPxValues([paddingTop, paddingBottom]);
32
- const innerHeight = verticalPadding === height ? height : height - verticalPadding;
33
- const adsMetadata = pickAdsToDisplay(innerWidth, innerHeight, adType, adIsNative, categories);
34
- if (!adsMetadata.length) {
35
- return false;
36
- }
37
- result.push(...actionsBases.map(actionBase => actionBase.type === AdActionType.HideElement || actionBase.type === AdActionType.RemoveElement
38
- ? actionBase
39
- : Object.assign(Object.assign({}, actionBase), { adsMetadata, originalWidth: innerWidth, originalHeight: innerHeight })));
40
- return true;
41
- };
42
- let permanentAdsParents = [];
43
- /*
44
- Asynchronizing processing to free-up the thread on heavyish work here.
45
- 'Parallelizing' it (through `Promise.all`) to fill-up Event Loop right away.
46
- Otherwise (with `for` loop), original ads start glitching through more.
47
- */
48
- yield Promise.all(elementsToHideOrRemoveRules.map((rule) => __awaiter(void 0, void 0, void 0, function* () {
49
- yield delay(0);
50
- processElementsToHideOrRemoveRule(rule, result);
51
- })));
52
- yield Promise.all(permanentAdPlacesRules.map((rule) => __awaiter(void 0, void 0, void 0, function* () {
53
- yield delay(0);
54
- permanentAdsParents = permanentAdsParents.concat(yield processPermanentAdPlacesRule(rule, addActionsIfAdResolutionAvailable, result));
55
- })));
56
- yield Promise.all(adPlacesRules.map((rule) => __awaiter(void 0, void 0, void 0, function* () {
57
- yield delay(0);
58
- yield processAdPlacesRule(rule, permanentAdsParents, addActionsIfAdResolutionAvailable);
59
- })));
60
- yield processProvidersAds(providersSelectors, providersNegativeSelectors, addActionsIfAdResolutionAvailable, result);
61
- return result;
62
- });
63
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ads-actions/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { AdAction } from 'src/types/ads-actions';
2
- import { ElementsToHideOrRemoveRule } from 'src/types/ads-rules';
3
- export declare const processElementsToHideOrRemoveRule: (rule: ElementsToHideOrRemoveRule, result: AdAction[]) => void;
@@ -1,19 +0,0 @@
1
- import { AdActionType } from 'src/types/ads-actions';
2
- import { applyQuerySelector, getParentOfDepth } from './helpers';
3
- export const processElementsToHideOrRemoveRule = (rule, result) => {
4
- const { shouldHide, cssString, parentDepth, isMultiple } = rule;
5
- applyQuerySelector(cssString, isMultiple).forEach(elem => {
6
- const element = getParentOfDepth(elem, parentDepth);
7
- if (!element) {
8
- return;
9
- }
10
- const styles = window.getComputedStyle(element);
11
- if (styles.display !== 'none' && styles.visibility !== 'hidden') {
12
- result.push({
13
- type: shouldHide ? AdActionType.HideElement : AdActionType.RemoveElement,
14
- element
15
- });
16
- }
17
- });
18
- };
19
- //# sourceMappingURL=process-elements-to-hide-or-remove-rule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-elements-to-hide-or-remove-rule.js","sourceRoot":"","sources":["../../src/ads-actions/process-elements-to-hide-or-remove-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEjE,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,IAAgC,EAAE,MAAkB,EAAE,EAAE;IACxG,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEhE,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAmB,EAAE,WAAW,CAAC,CAAC;QAEnE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,UAAU,CAAC,CAAC,CAAE,YAAY,CAAC,WAAqB,CAAC,CAAC,CAAE,YAAY,CAAC,aAAuB;gBAC9F,OAAO;aACR,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { AdAction, AddActionsIfAdResolutionAvailable } from 'src/types/ads-actions';
2
- import { PermanentAdPlacesRule } from 'src/types/ads-rules';
3
- export declare const processPermanentAdPlacesRule: (rule: PermanentAdPlacesRule, addActionsIfAdResolutionAvailable: AddActionsIfAdResolutionAvailable, result: AdAction[]) => Promise<HTMLElement[]>;