goopubtag
Version:
React library for Google Publisher tag
2 lines (1 loc) • 15 kB
JavaScript
import{createContext as Le,useContext as Ae,useMemo as xe}from"react";import{jsx as s,jsxs as y}from"react/jsx-runtime";var I=()=>y("svg",{xmlns:"http://www.w3.org/2000/svg",width:56,height:56,viewBox:"0 0 270.933 270.933",children:[s("title",{children:"Dev icon"}),y("defs",{children:[y("filter",{id:"b",width:1.795,height:1.354,x:-.493,y:-.214,style:{},children:[s("feFlood",{floodColor:"#000",floodOpacity:.243,result:"flood"}),s("feComposite",{in:"flood",in2:"SourceGraphic",operator:"in",result:"composite1"}),s("feGaussianBlur",{in:"composite1",result:"blur",stdDeviation:10}),s("feOffset",{dx:-15.109,dy:-12.617,result:"offset"}),s("feComposite",{in:"SourceGraphic",in2:"offset",result:"composite2"})]}),y("filter",{id:"a",width:1.819,height:1.335,x:-.516,y:-.195,style:{},children:[s("feFlood",{floodColor:"#000",floodOpacity:.243,result:"flood"}),s("feComposite",{in:"flood",in2:"SourceGraphic",operator:"in",result:"composite1"}),s("feGaussianBlur",{in:"composite1",result:"blur",stdDeviation:10}),s("feOffset",{dx:-16.978,dy:-9.502,result:"offset"}),s("feComposite",{in:"SourceGraphic",in2:"offset",result:"composite2"})]})]}),y("g",{style:{display:"inline"},children:[y("g",{style:{display:"inline",opacity:1},transform:"rotate(-20.363 177.66 214.553)",children:[s("rect",{width:79.375,height:132.292,x:87.28,y:70.478,rx:13.79,ry:11.742,style:{opacity:1,fill:"#4249d0",fillOpacity:1,stroke:"#604d29",strokeWidth:0}}),s("path",{d:"M126.36 31.374c-3.717.064-7.878 2.154-12.028 8.231l-.007.01-6.626 9.71-19.38 28.398 38.648.055 38.647.056-19.267-28.455-6.612-9.764s-5.758-8.372-13.375-8.241zm.864 16.092a9.803 10.294 0 0 1 2.28.348 9.803 10.294 0 0 1 6.932 12.606 9.803 10.294 0 0 1-12.005 7.28 9.803 10.294 0 0 1-6.932-12.606l9.468 2.662-9.468-2.663a9.803 10.294 0 0 1 8.955-7.616 9.803 10.294 0 0 1 .77-.01z",style:{opacity:1,fill:"#4249d0",fillOpacity:1,stroke:"#64a1bd",strokeWidth:0,strokeLinejoin:"round",strokeDasharray:"none",strokeOpacity:1}})]}),s("text",{xmlSpace:"preserve",x:184.785,y:-27.732,style:{fontStyle:"normal",fontVariant:"normal",fontWeight:400,fontStretch:"normal",fontSize:"25.4px",fontFamily:""",display:"inline",opacity:1,fill:"#141c9f",fillOpacity:.768627,stroke:"#64a1bd",strokeWidth:0,strokeLinejoin:"round",strokeDasharray:"none",strokeOpacity:1},transform:"rotate(68.298)",children:s("tspan",{x:184.785,y:-27.732,style:{fontStyle:"normal",fontVariant:"normal",fontWeight:400,fontStretch:"normal",fontFamily:""",fill:"#141c9f",fillOpacity:.768627,strokeWidth:0},children:"TAG"})}),y("g",{style:{display:"inline",opacity:.9,filter:"url(#a)"},transform:"rotate(-60.67 129.82 122.094)",children:[s("rect",{width:79.375,height:132.292,x:95.779,y:69.321,rx:13.79,ry:11.742,style:{opacity:1,fill:"#22278b",fillOpacity:1,stroke:"#604d29",strokeWidth:0}}),s("path",{d:"M134.86 30.216c-3.718.064-7.879 2.154-12.029 8.232l-.007.01-6.625 9.709-19.38 28.398 38.647.055 38.648.056-19.268-28.455-6.612-9.764s-5.758-8.372-13.374-8.24zm.863 16.093a9.803 10.294 0 0 1 2.28.347 9.803 10.294 0 0 1 6.932 12.607 9.803 10.294 0 0 1-12.005 7.28 9.803 10.294 0 0 1-6.932-12.607l9.469 2.663-9.469-2.664a9.803 10.294 0 0 1 8.955-7.615 9.803 10.294 0 0 1 .77-.011z",style:{opacity:1,fill:"#22278b",fillOpacity:1,stroke:"#64a1bd",strokeWidth:0,strokeLinejoin:"round",strokeDasharray:"none",strokeOpacity:1}})]}),s("text",{xmlSpace:"preserve",x:182.305,y:46.888,style:{fontStyle:"normal",fontVariant:"normal",fontWeight:400,fontStretch:"normal",fontSize:"25.4px",fontFamily:""",display:"inline",opacity:1,fill:"#0c0e57",fillOpacity:.768627,stroke:"#64a1bd",strokeWidth:0,strokeLinejoin:"round",strokeDasharray:"none",strokeOpacity:1},transform:"rotate(30.23)",children:s("tspan",{x:182.305,y:46.888,style:{fontStyle:"normal",fontVariant:"normal",fontWeight:400,fontStretch:"normal",fontFamily:""",fill:"#0c0e57",fillOpacity:.768627,strokeWidth:0},children:"PUB"})}),y("g",{style:{display:"inline",opacity:.85,filter:"url(#b)"},transform:"rotate(-97.4 118.082 97.204)",children:[s("rect",{width:79.375,height:132.292,x:95.779,y:69.321,rx:13.79,ry:11.742,style:{opacity:.9,fill:"#2d36e5",fillOpacity:1,stroke:"#604d29",strokeWidth:0}}),s("path",{d:"M134.86 30.216c-3.718.064-7.879 2.154-12.029 8.232l-.007.01-6.625 9.709-19.38 28.398 38.647.055 38.648.056-19.268-28.455-6.612-9.764s-5.758-8.372-13.374-8.24zm.863 16.093a9.803 10.294 0 0 1 2.28.347 9.803 10.294 0 0 1 6.932 12.607 9.803 10.294 0 0 1-12.005 7.28 9.803 10.294 0 0 1-6.932-12.607l9.469 2.663-9.469-2.664a9.803 10.294 0 0 1 8.955-7.615 9.803 10.294 0 0 1 .77-.011z",style:{opacity:.9,fill:"#2d36e5",fillOpacity:1,stroke:"#64a1bd",strokeWidth:0,strokeLinejoin:"round",strokeDasharray:"none",strokeOpacity:1}})]}),s("text",{xmlSpace:"preserve",x:135.099,y:97.69,style:{fontStyle:"normal",fontVariant:"normal",fontWeight:400,fontStretch:"normal",fontSize:"25.4px",fontFamily:""",display:"inline",opacity:1,fill:"#121581",fillOpacity:.768627,stroke:"#64a1bd",strokeWidth:0,strokeLinejoin:"round",strokeDasharray:"none",strokeOpacity:1},transform:"rotate(-5.23)",children:s("tspan",{x:135.099,y:97.69,style:{fontStyle:"normal",fontVariant:"normal",fontWeight:400,fontStretch:"normal",fontFamily:""",fill:"#121581",fillOpacity:.768627,strokeWidth:0},children:"GOO"})}),s("ellipse",{cx:75.247,cy:83.959,fill:"none",rx:9.858,ry:9.195,style:{opacity:1,fill:"#141c9f",fillOpacity:0,stroke:"#161b94",strokeWidth:4.61478,strokeLinejoin:"round",strokeDasharray:"none",strokeOpacity:.94902}})]})]});import{jsx as x}from"react/jsx-runtime";var k=()=>x("div",{style:{position:"fixed",bottom:"8px",right:"8px",width:"56px",height:"56px",padding:"4px 4px 0px 4px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"12px",border:"1px dotted rebeccapurple",backgroundColor:"#66339933",zIndex:"9999"},"data-testid":"gpt-dev-icon",children:x("button",{type:"button",onClick:()=>{window.googletag?.openConsole()},style:{all:"unset",color:"white",textAlign:"center",cursor:"pointer"},children:x(I,{})})});import{useCallback as b,useEffect as M,useState as B}from"react";var _={STANDARD:"https://securepubads.g.doubleclick.net/tag/js/gpt.js",LIMITED_ADS:"https://pagead2.googlesyndication.com/tag/js/gpt.js"};var Y=e=>e?_.LIMITED_ADS:_.STANDARD,D=e=>{let{limitedAds:r}=e,n=document.createElement("script");return n.src=Y(r),n.async=!0,n.type="text/javascript",n};var h=(e,r)=>{let n=new CustomEvent(e,{bubbles:!0,detail:r});document.dispatchEvent(n)},O=(e,r)=>{document.addEventListener(e,n=>{r(n.detail)})},G=(e,r)=>{document.removeEventListener(e,n=>{r(n.detail)})};var $=()=>{window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[]},X=e=>{window.googletag?.cmd.push(e)},Q=()=>{window.googletag?.pubads().collapseEmptyDivs()},Z=()=>{window.googletag?.pubads().collapseEmptyDivs(!0)},C=()=>window.googletag?.enums.OutOfPageFormat.TOP_ANCHOR||null,U=()=>window.googletag?.enums.OutOfPageFormat.BOTTOM_ANCHOR||null,V=()=>window.googletag?.enums.OutOfPageFormat.LEFT_SIDE_RAIL||null,q=()=>window.googletag?.enums.OutOfPageFormat.RIGHT_SIDE_RAIL||null,N=()=>window.googletag?.enums.OutOfPageFormat.REWARDED||null,J=e=>{switch(e.type){case"anchor":return e.settings.position==="top"?C():e.settings.position==="bottom"?U():null;case"rewarded":return N();case"rail":return e.settings.position==="left"?V():e.settings.position==="right"?q():null;default:return null}},ee=(e,r)=>window.googletag?.defineOutOfPageSlot(e,r)||null,te=e=>{if(e&&e!=="default")switch(e){case"collapse":{Q();break}case"expand":{Z();break}default:break}},oe=(e,r)=>{window.googletag?.pubads().setTargeting(e,r)},ne=e=>{e?window.googletag?.pubads().clearTargeting(e):window.googletag?.pubads().clearTargeting()},ie=e=>{e.addService(window.googletag?.pubads())},re=(e,r)=>`/${e}/${r}`,se=e=>{window.googletag?.pubads().setPrivacySettings(e)},ae=e=>{e?window.googletag?.pubads().refresh(e):window.googletag?.pubads().refresh()},de=(e,r,n)=>window.googletag?.defineSlot(e,r,n)?.addService(window.googletag?.pubads())||null,le=()=>window.googletag?.sizeMapping(),ge=e=>{window.googletag?.pubads().addEventListener("rewardedSlotReady",e)},pe=e=>{window.googletag?.pubads().addEventListener("rewardedSlotClosed",e)},ce=e=>{window.googletag?.pubads().addEventListener("rewardedSlotGranted",e)},ue=e=>{window.googletag?.pubads().removeEventListener("rewardedSlotReady",e)},fe=e=>{window.googletag?.pubads().removeEventListener("rewardedSlotClosed",e)},ve=e=>{window.googletag?.pubads().removeEventListener("rewardedSlotGranted",e)},Se=e=>{window.googletag?.pubads().addEventListener("slotOnload",e)},me=e=>{window.googletag?.pubads().addEventListener("slotRequested",e)},ye=e=>{window.googletag?.pubads().addEventListener("impressionViewable",e)},Ee=e=>{window.googletag?.pubads().addEventListener("slotRenderEnded",e)},we=e=>{window.googletag?.pubads().removeEventListener("slotOnload",e)},Pe=e=>{window.googletag?.pubads().removeEventListener("slotRequested",e)},Te=e=>{window.googletag?.pubads().removeEventListener("impressionViewable",e)},be=e=>{window.googletag?.pubads().removeEventListener("slotRenderEnded",e)},z=()=>{window.googletag?.enableServices()},Re=e=>{z(),window?.googletag?.display(e)},he=e=>{z(),window?.googletag?.display(e)},Oe=()=>{window.googletag?.pubads().enableSingleRequest()},Ge=e=>{typeof e=="boolean"?window.googletag?.pubads().enableLazyLoad():window.googletag?.pubads().enableLazyLoad(e)},t={init:$,push:X,getAdUnitPath:re,getTopAnchor:C,getBottomAnchor:U,getLeftSideRail:V,getRightSideRail:q,getRewarded:N,getOutOfPageSlotId:J,getMapping:le,createSlot:de,createOutOfPageSlot:ee,handleFallback:te,handleRewardedSlotReady:ge,handleRewardedSlotClosed:pe,handleRewardedSlotGranted:ce,removeRewardedSlotReady:ue,removeRewardedSlotClosed:fe,removeRewardedSlotGranted:ve,handleSlotLoad:Se,handleSlotRequested:me,handleSlotIsViewable:ye,handleSlotRenderEnded:Ee,removeSlotLoad:we,removeSlotRequested:Pe,removeSlotIsViewable:Te,removeSlotRenderEnded:be,setTargeting:oe,setPrivacySettings:se,clearTargeting:ne,refresh:ae,addService:ie,enableService:Re,enableOutOfPageService:he,enableSingleRequest:Oe,enableLazyLoad:Ge};var W=e=>{let[r,n]=B([]),[p,d]=B([]),{networkId:m,limitedAds:f=!1,fallback:v="default",targetingArguments:i,outOfPage:o}=e,c=b(l=>d(g=>[...g,l]),[]),u=b(l=>n(g=>[...g,l]),[]),w=b(l=>{h("slot_load",l)},[]),E=b(l=>{h("slot_requested",l)},[]),P=b(l=>{h("impression_viewable",l)},[]),T=b(l=>{h("slot_render_ended",l)},[]);return M(()=>{let l=D({limitedAds:f});document.getElementsByTagName("head")[0].appendChild(l)},[f]),M(()=>(p.find(g=>g.slotId===o?.type)||(t.init(),t.push(()=>{if(o){let g=t.createOutOfPageSlot(t.getAdUnitPath(m,o.adUnit),t.getOutOfPageSlotId(o));if(g){if(o.targetingArguments)for(let A of Object.keys(o.targetingArguments))g.setTargeting(A,o.targetingArguments[A]);o.onSlotLoad&&t.handleSlotLoad(o.onSlotLoad),o.onSlotRequested&&t.handleSlotRequested(o.onSlotRequested),o.onSlotIsViewable&&t.handleSlotIsViewable(o.onSlotIsViewable),o.onSlotRenderEnded&&t.handleSlotRenderEnded(o.onSlotRenderEnded),o.type==="rewarded"&&o.settings.onReady&&t.handleRewardedSlotReady(o.settings.onReady),o.type==="rewarded"&&o.settings.onClosed&&t.handleRewardedSlotClosed(o.settings.onClosed),o.type==="rewarded"&&o.settings.onGranted&&t.handleRewardedSlotGranted(o.settings.onGranted),t.addService(g),o.withStaticAds||t.enableOutOfPageService(g),c({slotId:o.type,unit:g})}}if(i)for(let g of Object.keys(i))t.setTargeting(g,i[g]);t.handleSlotLoad(w),t.handleSlotRequested(E),t.handleSlotIsViewable(P),t.handleSlotRenderEnded(T),t.handleFallback(v)})),()=>{t.removeSlotLoad(w),t.removeSlotRequested(E),t.removeSlotIsViewable(P),t.removeSlotRenderEnded(T)}),[v,o,i,m,p,c,w,E,P,T]),{units:r,addUnit:u}};import{jsx as Ie,jsxs as ke}from"react/jsx-runtime";var F=Le({}),_e=e=>{let{children:r,...n}=e,p=W(n),d=xe(()=>p,[p]);return ke(F.Provider,{value:{...n,...d},children:[r,n.debug&&Ie(k,{})]})},L=()=>Ae(F);import{memo as Ue}from"react";import{useEffect as De,useRef as Ce}from"react";var K=e=>{let{adUnit:r,sizes:n,sizeMapping:p,slotId:d,targetingArguments:m,onSlotLoad:f,onSlotRequested:v,onSlotIsViewable:i,onSlotRenderEnded:o,fallback:c="default"}=e,{networkId:u,units:w,lazyLoad:E,singleRequest:P,addUnit:T}=L(),l=t.getAdUnitPath(u,r),g=Ce();return De(()=>(t.init(),t.push(()=>{let S=null;if(!(g.current||w?.find(a=>a.slotId===d))&&(S=t.createSlot(l,n,d),S!==null)){if(p){let a=t.getMapping();for(let{viewport:j,sizes:H}of p)a.addSize(j,H);let R=a.build();S.defineSizeMapping(R)}if(m)for(let a of Object.keys(m))S.setTargeting(a,m[a]);if(E!==void 0&&t.enableLazyLoad(E),f&&O("slot_load",a=>{a.slot.getSlotElementId()===d&&f(a)}),v&&O("slot_requested",a=>{a.slot.getSlotElementId()===d&&v(a)}),i&&O("impression_viewable",a=>{a.slot.getSlotElementId()===d&&i(a)}),o&&O("slot_render_ended",a=>{a.slot.getSlotElementId()===d&&o(a)}),c&&c!=="default")switch(c){case"expand":{S.setCollapseEmptyDiv(!0,!0);break}case"expand_strict":{S.setCollapseEmptyDiv(!1);break}case"collapse":{S.setCollapseEmptyDiv(!0);break}default:break}g.current={slotId:d,unit:S},d&&T({slotId:d,unit:S}),P&&t.enableSingleRequest(),t.enableService(d)}}),()=>{f&&G("slot_load",f),v&&G("slot_requested",v),i&&G("impression_viewable",i),o&&G("slot_render_ended",o)}),[m,p,d,l,c,n,w,E,P,T,f,v,i,o]),{style:n?typeof n=="string"?{width:"100%"}:Array.isArray(n[0])?{width:"100%"}:{width:`${n[0]}px`,height:`${n[1]}px`}:{}}};import{jsx as Ne}from"react/jsx-runtime";var Ve=e=>{let{slotId:r,className:n,dataTestId:p}=e,{style:d}=K(e);return Ne("div",{id:r,style:d,className:n,"data-testid":p})},qe=Ue(Ve);var ze={BILLBOARD:[970,250],SKYSCRAPER_WIDE:[300,600],SKYSCRAPER:[160,600],SKYSCRAPER_SLIM:[120,600],LEADERBOARD_XL:[970,90],LEADERBOARD_LARGE:[920,90],LEADERBOARD:[728,90],MPU:[320,250],MPU_300:[300,250],MOBILE_LEADERBOARD_LARGE:[468,60],MOBILE_LEADERBOARD_MEDIUM:[320,100],MOBILE_LEADERBOARD:[320,50],LINE_TEXT_UNIT:[280,18],ONE_BY_ONE:[1,1],FLUID:"fluid"},Me={DESKTOP_LARGEST:[1220,0],DESKTOP_PLUS:[970,0],DESKTOP:[861,0],TABLET_PLUS:[728,0],TABLET:[600,0],MOBILE_PLUS:[468,0],MOBILE:[320,0]},Be={UNIT_SIZE:ze,SCREEN_SIZE:Me};var We=()=>{let{units:e,limitedAds:r}=L();return{refresh:i=>{t.push(()=>{i&&i.length!==0?t.refresh(i):t.refresh()})},setTargetingAttributes:(i,o)=>{t.push(()=>{let c=e.find(u=>u.slotId===i)?.unit;for(let u of Object.keys(o))c?.setTargeting(u,o[u])})},setPageTargetingAttributes:i=>{t.push(()=>{for(let o of Object.keys(i))t.setTargeting(o,i[o])})},clearTargetingAttributes:(i,o)=>{t.push(()=>{let c=e.find(u=>u.slotId===i)?.unit;if(o)for(let u of o)c?.clearTargeting(u);else c?.clearTargeting()})},clearPageTargetingAttributes:i=>{t.push(()=>{if(i)for(let o of i)t.clearTargeting(o);else t.clearTargeting()})},setPrivacySettings:i=>{if(!r&&i.limitedAds!==void 0)throw new Error("limited ads must be enabled on GPTContext to set privacy settings");t.push(()=>{t.setPrivacySettings(i)})}}};export{_e as GPTProvider,qe as GPTSlot,Be as GUIDELINES,We as useGPT};