UNPKG

@pittica/gatsby-plugin-seo

Version:
93 lines (80 loc) 2.24 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = Webpage; var _react = _interopRequireDefault(require("react")); var _reactHelmetAsync = require("react-helmet-async"); var _propTypes = _interopRequireDefault(require("prop-types")); var _gatsbyPluginUtils = require("@pittica/gatsby-plugin-utils"); function Webpage({ author, siteUrl, datePublished, defaultTitle, description, image, isBlogPost, organization, title, url, headline }) { const entity = { "@context": "http://schema.org", "@type": isBlogPost ? "BlogPosting" : "WebPage", url: (0, _gatsbyPluginUtils.withUrl)(url, siteUrl), name: title, description, mainEntityOfPage: { "@type": "WebSite", "@id": siteUrl } }; if (image) { entity.image = { "@type": "ImageObject", url: (0, _gatsbyPluginUtils.withUrl)(image, siteUrl) }; } if (organization !== null && organization !== void 0 && organization.name) { entity.publisher = { "@type": "Organization", url: organization.url, logo: organization.logo, name: organization.name }; } if (isBlogPost) { entity.alternateName = defaultTitle; entity.headline = headline; entity.datePublished = datePublished; if (author) { entity.author = { "@type": "Person", name: author, url: siteUrl }; } } return /*#__PURE__*/_react.default.createElement(_reactHelmetAsync.Helmet, null, /*#__PURE__*/_react.default.createElement("script", { type: "application/ld+json", key: "ld-json-schemaorg" }, JSON.stringify(entity))); } Webpage.propTypes = { author: _propTypes.default.string, siteUrl: _propTypes.default.string, datePublished: _propTypes.default.any, defaultTitle: _propTypes.default.string, description: _propTypes.default.string, image: _propTypes.default.string, isBlogPost: _propTypes.default.bool, organization: _propTypes.default.object, title: _propTypes.default.string, url: _propTypes.default.string, headline: _propTypes.default.string }; Webpage.defaultProps = { isBlogPost: false, organization: {} };