UNPKG

next-google-ads

Version:

Google AdSense component for Next.js with optimized script loading

1 lines 33.7 kB
{"version":3,"file":"index.mjs","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/index.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import Script from 'next/script';\nimport type { CSSProperties, FC } from 'react';\n\ninterface WindowWithAdsbygoogle extends Window {\n adsbygoogle?: Array<Record<string, unknown>>;\n}\n\ndeclare const window: WindowWithAdsbygoogle;\n\n// Consent Mode v2 types (2024 GDPR requirement)\nexport type ConsentModeV2 = {\n ad_storage?: 'granted' | 'denied';\n analytics_storage?: 'granted' | 'denied';\n ad_user_data?: 'granted' | 'denied';\n ad_personalization?: 'granted' | 'denied';\n};\n\n// Auto Ads configuration (2024 feature)\nexport type AutoAdsConfig = {\n enableAutoAds?: boolean;\n pageExclusions?: string[];\n adDensity?: 'low' | 'medium' | 'high';\n enableAdIntents?: boolean; // New 2024 format\n};\n\n// Anchor positioning (2024 feature)\nexport type AnchorPosition = 'top' | 'bottom' | 'both';\n\nexport type GoogleAdsenseProps = {\n className?: string;\n style?: CSSProperties;\n client: string;\n slot: string;\n layout?: string;\n layoutKey?: string;\n format?: 'auto' | 'fluid' | 'rectangle' | 'vertical' | 'horizontal';\n responsive?: string;\n path?: string;\n // Non-personalized ads mode (privacy-focused)\n npaMode?: boolean;\n // Ad test mode\n adTest?: 'on' | 'off';\n // Channel for tracking\n adChannel?: string;\n};\n\n// In-Article Ads (modern format)\nexport type InArticleAdProps = {\n className?: string;\n style?: CSSProperties;\n client: string;\n slot: string;\n npaMode?: boolean;\n};\n\n// In-Feed Ads (modern format)\nexport type InFeedAdProps = {\n className?: string;\n style?: CSSProperties;\n client: string;\n slot: string;\n layoutKey: string;\n npaMode?: boolean;\n};\n\n// Multiplex Ads (modern format)\nexport type MultiplexAdProps = {\n className?: string;\n style?: CSSProperties;\n client: string;\n slot: string;\n format?: 'autorelaxed';\n npaMode?: boolean;\n};\n\n// Anchor Ad Props (2024 feature)\nexport type AnchorAdProps = {\n client: string;\n slot: string;\n position?: AnchorPosition;\n collapsible?: boolean;\n npaMode?: boolean;\n};\n\n// Auto Ads Props (2024 major feature)\nexport type AutoAdsProps = {\n client: string;\n config?: AutoAdsConfig;\n consentMode?: ConsentModeV2;\n npaMode?: boolean;\n};\n\nexport const GoogleAdsenseWidget: FC<GoogleAdsenseProps> = ({\n className = '',\n style = {\n display: 'block',\n width: '728px',\n height: '90px',\n },\n format = 'auto',\n layout = '',\n layoutKey = '',\n responsive = 'false',\n client,\n slot,\n npaMode = false,\n adTest,\n adChannel,\n}) => {\n return (\n <ins\n className={`${className} adsbygoogle`}\n style={style}\n data-ad-client={client}\n data-ad-slot={slot}\n data-ad-layout={layout}\n data-ad-layout-key={layoutKey}\n data-ad-format={format}\n data-full-width-responsive={responsive}\n data-npa-mode={npaMode ? '1' : undefined}\n data-adtest={adTest}\n data-ad-channel={adChannel}\n ></ins>\n );\n};\n\n// In-Article Ads Component (Modern format for content)\nexport const InArticleAd: FC<InArticleAdProps> = ({\n className = '',\n style = { display: 'block', textAlign: 'center' },\n client,\n slot,\n npaMode = false,\n}) => {\n return (\n <ins\n className={`${className} adsbygoogle`}\n style={style}\n data-ad-client={client}\n data-ad-slot={slot}\n data-ad-format=\"fluid\"\n data-ad-layout=\"in-article\"\n data-npa-mode={npaMode ? '1' : undefined}\n ></ins>\n );\n};\n\n// In-Feed Ads Component (Modern format for feeds/lists)\nexport const InFeedAd: FC<InFeedAdProps> = ({\n className = '',\n style = { display: 'block' },\n client,\n slot,\n layoutKey,\n npaMode = false,\n}) => {\n return (\n <ins\n className={`${className} adsbygoogle`}\n style={style}\n data-ad-client={client}\n data-ad-slot={slot}\n data-ad-format=\"fluid\"\n data-ad-layout=\"in-feed\"\n data-ad-layout-key={layoutKey}\n data-npa-mode={npaMode ? '1' : undefined}\n ></ins>\n );\n};\n\n// Multiplex Ads Component (Modern format for related content)\nexport const MultiplexAd: FC<MultiplexAdProps> = ({\n className = '',\n style = { display: 'block' },\n client,\n slot,\n format = 'autorelaxed',\n npaMode = false,\n}) => {\n return (\n <ins\n className={`${className} adsbygoogle`}\n style={style}\n data-ad-client={client}\n data-ad-slot={slot}\n data-ad-format={format}\n data-npa-mode={npaMode ? '1' : undefined}\n ></ins>\n );\n};\n\n// Anchor Ad Component (2024 feature - collapsible mobile ads)\nexport const AnchorAd: FC<AnchorAdProps> = ({\n client,\n slot,\n position = 'bottom',\n collapsible = true,\n npaMode = false,\n}) => {\n return (\n <ins\n className=\"adsbygoogle\"\n style={{ display: 'block' }}\n data-ad-client={client}\n data-ad-slot={slot}\n data-ad-format=\"anchor\"\n data-anchor-position={position}\n data-collapsible={collapsible ? 'true' : 'false'}\n data-npa-mode={npaMode ? '1' : undefined}\n ></ins>\n );\n};\n\n// Auto Ads Script Component (2024 major feature)\nexport const AutoAdsScript: FC<AutoAdsProps> = ({\n client,\n config,\n consentMode,\n npaMode = false,\n}) => {\n if (!client) return null;\n\n return (\n <>\n {consentMode && (\n <Script\n id=\"google-consent-mode-v2\"\n strategy=\"beforeInteractive\"\n dangerouslySetInnerHTML={{\n __html: `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('consent', 'default', ${JSON.stringify(consentMode)});\n `,\n }}\n />\n )}\n <Script\n id=\"google-adsense-auto\"\n src=\"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"\n data-ad-client={client}\n crossOrigin=\"anonymous\"\n strategy=\"afterInteractive\"\n data-npa-mode={npaMode ? '1' : undefined}\n onLoad={() => {\n if (typeof window !== 'undefined' && config?.enableAutoAds) {\n (window.adsbygoogle = window.adsbygoogle || []).push({\n google_ad_client: client,\n enable_page_level_ads: true,\n ...(config.adDensity && { ad_density: config.adDensity }),\n ...(config.enableAdIntents && { ad_intents: true }),\n });\n }\n }}\n />\n </>\n );\n};\n\nexport const NextGoogleAdsenseScript: FC<\n Pick<GoogleAdsenseProps, 'client'> & {\n npaMode?: boolean;\n crossOrigin?: boolean;\n }\n> = ({ client, npaMode = false, crossOrigin = true }) => {\n if (!client) return null;\n return (\n <Script\n id=\"google-adsense\"\n src=\"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"\n data-ad-client={client}\n strategy=\"afterInteractive\"\n crossOrigin={crossOrigin ? 'anonymous' : undefined}\n data-npa-mode={npaMode ? '1' : undefined}\n onLoad={() => {\n try {\n (window.adsbygoogle = window.adsbygoogle || []).push({});\n } catch (err) {\n console.error('AdSense error:', err);\n }\n }}\n />\n );\n};\n\nexport const GoogleAdsense: FC<GoogleAdsenseProps> = props => {\n return (\n <>\n <NextGoogleAdsenseScript client={props.client} npaMode={props.npaMode} />\n <GoogleAdsenseWidget {...props} />\n </>\n );\n};\n\nexport default GoogleAdsense;\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","GoogleAdsenseWidget","className","style","format","layout","layoutKey","responsive","client","slot","npaMode","adTest","adChannel","jsx","InArticleAd","InFeedAd","MultiplexAd","AnchorAd","position","collapsible","AutoAdsScript","consentMode","jsxs","Fragment","Script","NextGoogleAdsenseScript","crossOrigin","err","GoogleAdsense"],"mappings":"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","x_google_ignoreList":[0,1,2]}