UNPKG

@pittica/gatsby-plugin-seo

Version:
126 lines (106 loc) 4.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.wrapPageElement = wrapPageElement; exports.wrapRootElement = wrapRootElement; var _react = _interopRequireWildcard(require("react")); var _reactHelmetAsync = require("react-helmet-async"); var _gatsbyPluginUtils = require("@pittica/gatsby-plugin-utils"); var _socialContext = _interopRequireDefault(require("./context/social-context")); var _organization = _interopRequireDefault(require("./components/ld-json/organization")); var _website = _interopRequireDefault(require("./components/ld-json/website")); var _twitterCard = _interopRequireDefault(require("./components/twitter-card")); var _openGraph = _interopRequireDefault(require("./components/open-graph")); var _extract = _interopRequireDefault(require("./utils/extract")); var _links = _interopRequireDefault(require("./components/links")); var _pageMeta = _interopRequireDefault(require("./components/page-meta")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function wrapPageElement({ element, props: { location, data } }, { image, description, socials, siteUrl, title, locale, organization, fields, resolve, debug }) { if (!organization.url) { organization.url = siteUrl; } if (!organization.name) { organization.name = title; } if (!organization.logo) { organization.logo = image; } const { facebook, twitter } = socials; const seo = (0, _extract.default)(data, { title, description, image, fields, resolve }); return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactHelmetAsync.Helmet, { htmlAttributes: { lang: locale.language }, title: seo.title || title, titleTemplate: seo.title != title ? seo.title ? `%s | ${title}` : title : null }, facebook.app && /*#__PURE__*/_react.default.createElement("meta", { property: "fb:app_id", content: facebook.app, key: "fb-app-id" }), !debug && /*#__PURE__*/_react.default.createElement("base", { href: siteUrl })), /*#__PURE__*/_react.default.createElement(_pageMeta.default, { siteUrl: siteUrl, description: seo.description, image: seo.image }), /*#__PURE__*/_react.default.createElement(_links.default, { siteUrl: siteUrl, path: location.href || location.pathname, next: (0, _gatsbyPluginUtils.searchArray)(fields.next, data), previous: (0, _gatsbyPluginUtils.searchArray)(fields.previous, data) }), /*#__PURE__*/_react.default.createElement(_openGraph.default, { url: location.href || (0, _gatsbyPluginUtils.withUrl)(location.pathname, siteUrl), title: seo.title, description: seo.description, image: seo.image, locale: locale, site: title }), /*#__PURE__*/_react.default.createElement(_twitterCard.default, { title: seo.title, description: seo.description, image: seo.image, username: twitter.username, site: twitter.site || twitter.username }), /*#__PURE__*/_react.default.createElement(_website.default, { url: siteUrl, description: description, name: title }), /*#__PURE__*/_react.default.createElement(_organization.default, { organization: organization, socials: socials }), element); } function wrapRootElement({ element }, pluginOptions) { return /*#__PURE__*/_react.default.createElement(_reactHelmetAsync.HelmetProvider, null, /*#__PURE__*/_react.default.createElement(_socialContext.default.Provider, { value: pluginOptions }, element)); }