next-google-adsense
Version:
Next.js Google AdSense
57 lines (56 loc) • 2.41 kB
JavaScript
;
"use client";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AdUnit = void 0;
const tslib_1 = require("tslib");
const assert_never_1 = tslib_1.__importDefault(require("assert-never"));
const navigation_1 = require("next/navigation");
const react_1 = tslib_1.__importStar(require("react"));
const AdLayout_1 = require("./AdLayout");
const utils_1 = require("./utils");
const AdUnit = ({ publisherId, slotId, layout = "display", customLayout, comment = "regular", dummySize, }) => {
var _a;
const pathname = (0, navigation_1.usePathname)();
const containerRef = (0, react_1.useRef)(null);
(0, react_1.useEffect)(() => {
var _a;
if (!((_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth)) {
return;
}
(window.adsbygoogle = window.adsbygoogle || []).push({});
}, [pathname]);
const _publisherId = (_a = process.env.NEXT_PUBLIC_ADSENSE_PUBLISHER_ID) !== null && _a !== void 0 ? _a : publisherId;
if (!(0, utils_1.isPublisherId)(_publisherId) || !(0, utils_1.isSlotId)(slotId)) {
console.error("❌ [next-google-adsense] Invalid publisherId or slotId found for the unit.");
return null;
}
const clientId = `ca-${_publisherId}`;
let Ad;
switch (layout) {
case "display": {
const dSize = typeof dummySize === "string"
? utils_1.DISPLAY_AD_SIZES[dummySize]
: dummySize;
Ad = (react_1.default.createElement(AdLayout_1.Display, { dataAdClient: clientId, dataAdSlot: slotId, dummySize: dSize }));
break;
}
case "in-article": {
const dSize = typeof dummySize === "string"
? utils_1.ARTICLE_AD_SIZES[dummySize]
: dummySize;
Ad = (react_1.default.createElement(AdLayout_1.InArticle, { dataAdClient: clientId, dataAdSlot: slotId, dummySize: dSize }));
break;
}
case "custom":
if (!customLayout) {
console.error("❌ [next-google-adsense] Custom layout is not provided for the unit.");
return null;
}
Ad = customLayout;
break;
default:
(0, assert_never_1.default)(layout);
}
return react_1.default.createElement("div", { ref: containerRef }, Ad);
};
exports.AdUnit = AdUnit;