gatsby-plugin-next-seo
Version:
SEO plugin for Gatsby projects
117 lines (97 loc) • 4.13 kB
JavaScript
;
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;