gatsby-plugin-iubenda-cookie-footer
Version:
Gatsby plugin to add the Iubenda's cookie policy banner
28 lines (27 loc) • 1.75 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.onRenderBody = void 0;
var _react = _interopRequireDefault(require("react"));
var _utils = require("./utils");
var onRenderBody = function onRenderBody(_ref, options) {
var setPostBodyComponents = _ref.setPostBodyComponents;
// the cookiePolicyId option is required
if (!options || !options.iubendaOptions) {
throw new Error("gatsby-plugin-iubenda-cookie-footer: Missing `options.iubendaOptions`");
}
var callback = "";
if ((0, _utils.isGTMEnabled)(options)) {
var gtmDataLayerName = (0, _utils.getGTMDataLayerName)(options);
// see https://www.iubenda.com/en/help/1235-how-to-use-google-tag-manager-to-simplify-the-adoption-of-cookie-law-requirements
callback = "{onConsentGiven: function() { if(!window." + gtmDataLayerName + "){ window." + gtmDataLayerName + " = [] } window." + gtmDataLayerName + ".push({ 'event': '" + (0, _utils.getGTMEventName)(options) + "' }); }}";
}
setPostBodyComponents([/*#__PURE__*/_react.default.createElement('div', {
// see https://github.com/gatsbyjs/gatsby/issues/6299
key: "gatsby-plugin-iubenda-cookie-footer",
dangerouslySetInnerHTML: {
__html: "\n<script type=\"text/javascript\" src=\"//cdn.iubenda.com/cs/tcf/stub.js\"></script><script type=\"text/javascript\">\nvar _iub = _iub || [];\n_iub.csConfiguration = " + JSON.stringify(options.iubendaOptions) + ";\n" + (callback ? "_iub.csConfiguration.callback = " + callback + ";" : "") + "\n</script><script type=\"text/javascript\" src=\"//cdn.iubenda.com/cs/iubenda_cs.js\" charset=\"UTF-8\" async> </script>\n "
}
})]);
};
exports.onRenderBody = onRenderBody;