UNPKG

@dr.pogodin/react-helmet

Version:

Thread-safe Helmet for React 19+ and friends

111 lines (108 loc) 3.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _Helmet = _interopRequireDefault(require("./Helmet")); var _jsxRuntime = require("react/jsx-runtime"); const Context = /*#__PURE__*/(0, _react.createContext)({ description: '', title: '' }); /** * Auxiliary wrapper around "react-helmet", which helps to inject meta tags * (page title, a brief content description, and social media thumbnails) into * generated pages. */ const MetaTags = _ref => { let { children, description, extraMetaTags, image, siteName, socialDescription, socialTitle, title, url } = _ref; // NOTE: I guess, in this very case, we should prefer title and description // also to empty social title and decscription? /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ const socTitle = socialTitle || title; const socDesc = socialDescription || description; /* eslint-enable @typescript-eslint/prefer-nullish-coalescing */ const context = (0, _react.useMemo)(() => ({ description, image, siteName, socialDescription, socialTitle, title, url }), [description, image, siteName, socialDescription, socialTitle, title, url]); const extra = []; if (extraMetaTags?.length) { for (let i = 0; i < extraMetaTags.length; ++i) { const { content, name } = extraMetaTags[i]; extra.push(/*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: content, name: name }, `extra-meta-tag-${i}`)); } } return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Helmet.default, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("title", { children: title }), /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: description, name: "description" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: "summary_large_image", name: "twitter:card" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: socTitle, name: "twitter:title" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: socDesc, name: "twitter:description" }), image ? /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: image, name: "twitter:image" }) : null, siteName ? /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: `@${siteName}`, name: "twitter:site" }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: socTitle, name: "og:title" }), image ? /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: image, name: "og:image" }) : null, image ? /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: socTitle, name: "og:image:alt" }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: socDesc, name: "og:description" }), siteName ? /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: siteName, name: "og:sitename" }) : null, url ? /*#__PURE__*/(0, _jsxRuntime.jsx)("meta", { content: url, name: "og:url" }) : null, extra] }), children ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Context, { value: context, children: children }) : null] }); }; MetaTags.Context = Context; var _default = exports.default = MetaTags; //# sourceMappingURL=MetaTags.js.map