UNPKG

gatsby-plugin-next-seo

Version:
117 lines (97 loc) 4.13 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.LocalBusinessJsonLd = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _jsonld = require("./jsonld"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } var converter = { Mon: 'Monday', Tues: 'Tuesday', Wed: 'Wednesday', Thurs: 'Thursday', Fri: 'Friday', Sat: 'Saturday', Sun: 'Sunday' }; var validDay = function validDay(day) { var _converter; return "http://schema.org/".concat((_converter = converter[day]) !== null && _converter !== void 0 ? _converter : day); }; var getDayOfWeek = function getDayOfWeek(dayOfWeek) { return !dayOfWeek ? undefined : Array.isArray(dayOfWeek) ? dayOfWeek.map(validDay) : validDay(dayOfWeek); }; var getOpeningHoursSpecification = function getOpeningHoursSpecification(openingHours) { if (!openingHours) { return undefined; } if (Array.isArray(openingHours)) { return openingHours.map(function (_ref) { var dayOfWeek = _ref.dayOfWeek, rest = (0, _objectWithoutProperties2["default"])(_ref, ["dayOfWeek"]); return _objectSpread({ '@type': 'OpeningHoursSpecification', dayOfWeek: getDayOfWeek(dayOfWeek) }, rest); }); } return _objectSpread(_objectSpread({ '@type': 'OpeningHoursSpecification' }, openingHours), {}, { dayOfWeek: getDayOfWeek(openingHours.dayOfWeek) }); }; /** * When users search for businesses on Google Search or Maps, Search results may * display a prominent Knowledge Graph card with details about a business that * matched the query. */ var LocalBusinessJsonLd = function LocalBusinessJsonLd(_ref2) { var type = _ref2.type, id = _ref2.id, name = _ref2.name, description = _ref2.description, url = _ref2.url, telephone = _ref2.telephone, address = _ref2.address, geo = _ref2.geo, images = _ref2.images, openingHours = _ref2.openingHours, rating = _ref2.rating, priceRange = _ref2.priceRange, _ref2$overrides = _ref2.overrides, overrides = _ref2$overrides === void 0 ? {} : _ref2$overrides, _ref2$defer = _ref2.defer, defer = _ref2$defer === void 0 ? false : _ref2$defer; var json = _objectSpread({ '@context': 'https://schema.org', '@type': type, '@id': id, name: name, description: description, url: url, telephone: telephone, priceRange: priceRange, image: images, geo: _objectSpread({ '@type': 'GeoCoordinates' }, geo), address: _objectSpread({ '@type': 'PostalAddress' }, address), aggregateRating: rating ? _objectSpread({ '@type': 'AggregateRating' }, rating) : undefined, openingHoursSpecification: getOpeningHoursSpecification(openingHours) }, overrides); return /*#__PURE__*/_react["default"].createElement(_jsonld.JsonLd, { defer: defer, json: json }); }; exports.LocalBusinessJsonLd = LocalBusinessJsonLd;