@pittica/gatsby-plugin-seo
Version:
SEO optimization plugin for GatsbyJS.
51 lines (39 loc) • 1.45 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.onRenderBody = onRenderBody;
exports.wrapPageElement = void 0;
exports.wrapRootElement = wrapRootElement;
var _react = _interopRequireDefault(require("react"));
var _reactHelmetAsync = require("react-helmet-async");
var _socialContext = _interopRequireDefault(require("./context/social-context"));
var _gatsbyBrowser = require("./gatsby-browser");
exports.wrapPageElement = _gatsbyBrowser.wrapPageElement;
const helmetContext = {};
function wrapRootElement({
element
}, pluginOptions) {
return /*#__PURE__*/_react.default.createElement(_reactHelmetAsync.HelmetProvider, {
context: helmetContext
}, /*#__PURE__*/_react.default.createElement(_socialContext.default.Provider, {
value: pluginOptions
}, element));
}
function onRenderBody({
setHtmlAttributes,
setBodyAttributes,
setHeadComponents
}) {
const {
helmet
} = helmetContext;
if (helmet) {
setHeadComponents([helmet.base.toComponent(), helmet.title.toComponent(), helmet.meta.toComponent(), helmet.link.toComponent(), helmet.style.toComponent(), helmet.script.toComponent(), helmet.noscript.toComponent()]);
if (setHtmlAttributes) {
setHtmlAttributes(helmet.htmlAttributes.toComponent());
}
if (setBodyAttributes) {
setBodyAttributes(helmet.bodyAttributes.toComponent());
}
}
}