next-seo.umd.js 73 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111
  1. (function (global, factory) {
  2. typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('next/head')) :
  3. typeof define === 'function' && define.amd ? define(['exports', 'react', 'next/head'], factory) :
  4. (global = global || self, factory(global.nextSeo = {}, global.react, global.Head));
  5. })(this, (function (exports, React, Head) {
  6. function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
  7. var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
  8. var Head__default = /*#__PURE__*/_interopDefaultLegacy(Head);
  9. function _extends() {
  10. _extends = Object.assign ? Object.assign.bind() : function (target) {
  11. for (var i = 1; i < arguments.length; i++) {
  12. var source = arguments[i];
  13. for (var key in source) {
  14. if (Object.prototype.hasOwnProperty.call(source, key)) {
  15. target[key] = source[key];
  16. }
  17. }
  18. }
  19. return target;
  20. };
  21. return _extends.apply(this, arguments);
  22. }
  23. function _objectWithoutPropertiesLoose(source, excluded) {
  24. if (source == null) return {};
  25. var target = {};
  26. var sourceKeys = Object.keys(source);
  27. var key, i;
  28. for (i = 0; i < sourceKeys.length; i++) {
  29. key = sourceKeys[i];
  30. if (excluded.indexOf(key) >= 0) continue;
  31. target[key] = source[key];
  32. }
  33. return target;
  34. }
  35. var _excluded$x = ["keyOverride"];
  36. var defaults = {
  37. templateTitle: '',
  38. noindex: false,
  39. nofollow: false,
  40. defaultOpenGraphImageWidth: 0,
  41. defaultOpenGraphImageHeight: 0,
  42. defaultOpenGraphVideoWidth: 0,
  43. defaultOpenGraphVideoHeight: 0
  44. };
  45. var buildOpenGraphMediaTags = function buildOpenGraphMediaTags(mediaType, media, _temp) {
  46. if (media === void 0) {
  47. media = [];
  48. }
  49. var _ref = _temp === void 0 ? {} : _temp,
  50. defaultWidth = _ref.defaultWidth,
  51. defaultHeight = _ref.defaultHeight;
  52. return media.reduce(function (tags, medium, index) {
  53. tags.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  54. key: "og:" + mediaType + ":0" + index,
  55. property: "og:" + mediaType,
  56. content: medium.url
  57. }));
  58. if (medium.alt) {
  59. tags.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  60. key: "og:" + mediaType + ":alt0" + index,
  61. property: "og:" + mediaType + ":alt",
  62. content: medium.alt
  63. }));
  64. }
  65. if (medium.secureUrl) {
  66. tags.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  67. key: "og:" + mediaType + ":secure_url0" + index,
  68. property: "og:" + mediaType + ":secure_url",
  69. content: medium.secureUrl.toString()
  70. }));
  71. }
  72. if (medium.type) {
  73. tags.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  74. key: "og:" + mediaType + ":type0" + index,
  75. property: "og:" + mediaType + ":type",
  76. content: medium.type.toString()
  77. }));
  78. }
  79. if (medium.width) {
  80. tags.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  81. key: "og:" + mediaType + ":width0" + index,
  82. property: "og:" + mediaType + ":width",
  83. content: medium.width.toString()
  84. }));
  85. } else if (defaultWidth) {
  86. tags.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  87. key: "og:" + mediaType + ":width0" + index,
  88. property: "og:" + mediaType + ":width",
  89. content: defaultWidth.toString()
  90. }));
  91. }
  92. if (medium.height) {
  93. tags.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  94. key: "og:" + mediaType + ":height" + index,
  95. property: "og:" + mediaType + ":height",
  96. content: medium.height.toString()
  97. }));
  98. } else if (defaultHeight) {
  99. tags.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  100. key: "og:" + mediaType + ":height" + index,
  101. property: "og:" + mediaType + ":height",
  102. content: defaultHeight.toString()
  103. }));
  104. }
  105. return tags;
  106. }, []);
  107. };
  108. var buildTags = function buildTags(config) {
  109. var _config$openGraph, _config$openGraph3, _config$additionalLin;
  110. var tagsToRender = [];
  111. if (config.titleTemplate) {
  112. defaults.templateTitle = config.titleTemplate;
  113. }
  114. var updatedTitle = '';
  115. if (config.title) {
  116. updatedTitle = config.title;
  117. if (defaults.templateTitle) {
  118. updatedTitle = defaults.templateTitle.replace(/%s/g, function () {
  119. return updatedTitle;
  120. });
  121. }
  122. } else if (config.defaultTitle) {
  123. updatedTitle = config.defaultTitle;
  124. }
  125. if (updatedTitle) {
  126. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("title", {
  127. key: "title"
  128. }, updatedTitle));
  129. }
  130. var noindex = config.noindex || defaults.noindex || config.dangerouslySetAllPagesToNoIndex;
  131. var nofollow = config.nofollow || defaults.nofollow || config.dangerouslySetAllPagesToNoFollow;
  132. var robotsParams = '';
  133. if (config.robotsProps) {
  134. var _config$robotsProps = config.robotsProps,
  135. nosnippet = _config$robotsProps.nosnippet,
  136. maxSnippet = _config$robotsProps.maxSnippet,
  137. maxImagePreview = _config$robotsProps.maxImagePreview,
  138. maxVideoPreview = _config$robotsProps.maxVideoPreview,
  139. noarchive = _config$robotsProps.noarchive,
  140. noimageindex = _config$robotsProps.noimageindex,
  141. notranslate = _config$robotsProps.notranslate,
  142. unavailableAfter = _config$robotsProps.unavailableAfter;
  143. robotsParams = "" + (nosnippet ? ',nosnippet' : '') + (maxSnippet ? ",max-snippet:" + maxSnippet : '') + (maxImagePreview ? ",max-image-preview:" + maxImagePreview : '') + (noarchive ? ',noarchive' : '') + (unavailableAfter ? ",unavailable_after:" + unavailableAfter : '') + (noimageindex ? ',noimageindex' : '') + (maxVideoPreview ? ",max-video-preview:" + maxVideoPreview : '') + (notranslate ? ',notranslate' : '');
  144. }
  145. if (noindex || nofollow) {
  146. if (config.dangerouslySetAllPagesToNoIndex) {
  147. defaults.noindex = true;
  148. }
  149. if (config.dangerouslySetAllPagesToNoFollow) {
  150. defaults.nofollow = true;
  151. }
  152. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  153. key: "robots",
  154. name: "robots",
  155. content: (noindex ? 'noindex' : 'index') + "," + (nofollow ? 'nofollow' : 'follow') + robotsParams
  156. }));
  157. } else {
  158. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  159. key: "robots",
  160. name: "robots",
  161. content: "index,follow" + robotsParams
  162. }));
  163. }
  164. if (config.description) {
  165. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  166. key: "description",
  167. name: "description",
  168. content: config.description
  169. }));
  170. }
  171. if (config.themeColor) {
  172. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  173. key: "theme-color",
  174. name: "theme-color",
  175. content: config.themeColor
  176. }));
  177. }
  178. if (config.mobileAlternate) {
  179. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("link", {
  180. rel: "alternate",
  181. key: "mobileAlternate",
  182. media: config.mobileAlternate.media,
  183. href: config.mobileAlternate.href
  184. }));
  185. }
  186. if (config.languageAlternates && config.languageAlternates.length > 0) {
  187. config.languageAlternates.forEach(function (languageAlternate) {
  188. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("link", {
  189. rel: "alternate",
  190. key: "languageAlternate-" + languageAlternate.hrefLang,
  191. hrefLang: languageAlternate.hrefLang,
  192. href: languageAlternate.href
  193. }));
  194. });
  195. }
  196. if (config.twitter) {
  197. if (config.twitter.cardType) {
  198. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  199. key: "twitter:card",
  200. name: "twitter:card",
  201. content: config.twitter.cardType
  202. }));
  203. }
  204. if (config.twitter.site) {
  205. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  206. key: "twitter:site",
  207. name: "twitter:site",
  208. content: config.twitter.site
  209. }));
  210. }
  211. if (config.twitter.handle) {
  212. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  213. key: "twitter:creator",
  214. name: "twitter:creator",
  215. content: config.twitter.handle
  216. }));
  217. }
  218. }
  219. if (config.facebook) {
  220. if (config.facebook.appId) {
  221. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  222. key: "fb:app_id",
  223. property: "fb:app_id",
  224. content: config.facebook.appId
  225. }));
  226. }
  227. }
  228. if ((_config$openGraph = config.openGraph) != null && _config$openGraph.title || updatedTitle) {
  229. var _config$openGraph2;
  230. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  231. key: "og:title",
  232. property: "og:title",
  233. content: ((_config$openGraph2 = config.openGraph) == null ? void 0 : _config$openGraph2.title) || updatedTitle
  234. }));
  235. }
  236. if ((_config$openGraph3 = config.openGraph) != null && _config$openGraph3.description || config.description) {
  237. var _config$openGraph4;
  238. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  239. key: "og:description",
  240. property: "og:description",
  241. content: ((_config$openGraph4 = config.openGraph) == null ? void 0 : _config$openGraph4.description) || config.description
  242. }));
  243. }
  244. if (config.openGraph) {
  245. if (config.openGraph.url || config.canonical) {
  246. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  247. key: "og:url",
  248. property: "og:url",
  249. content: config.openGraph.url || config.canonical
  250. }));
  251. }
  252. if (config.openGraph.type) {
  253. var type = config.openGraph.type.toLowerCase();
  254. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  255. key: "og:type",
  256. property: "og:type",
  257. content: type
  258. }));
  259. if (type === 'profile' && config.openGraph.profile) {
  260. if (config.openGraph.profile.firstName) {
  261. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  262. key: "profile:first_name",
  263. property: "profile:first_name",
  264. content: config.openGraph.profile.firstName
  265. }));
  266. }
  267. if (config.openGraph.profile.lastName) {
  268. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  269. key: "profile:last_name",
  270. property: "profile:last_name",
  271. content: config.openGraph.profile.lastName
  272. }));
  273. }
  274. if (config.openGraph.profile.username) {
  275. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  276. key: "profile:username",
  277. property: "profile:username",
  278. content: config.openGraph.profile.username
  279. }));
  280. }
  281. if (config.openGraph.profile.gender) {
  282. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  283. key: "profile:gender",
  284. property: "profile:gender",
  285. content: config.openGraph.profile.gender
  286. }));
  287. }
  288. } else if (type === 'book' && config.openGraph.book) {
  289. if (config.openGraph.book.authors && config.openGraph.book.authors.length) {
  290. config.openGraph.book.authors.forEach(function (author, index) {
  291. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  292. key: "book:author:0" + index,
  293. property: "book:author",
  294. content: author
  295. }));
  296. });
  297. }
  298. if (config.openGraph.book.isbn) {
  299. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  300. key: "book:isbn",
  301. property: "book:isbn",
  302. content: config.openGraph.book.isbn
  303. }));
  304. }
  305. if (config.openGraph.book.releaseDate) {
  306. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  307. key: "book:release_date",
  308. property: "book:release_date",
  309. content: config.openGraph.book.releaseDate
  310. }));
  311. }
  312. if (config.openGraph.book.tags && config.openGraph.book.tags.length) {
  313. config.openGraph.book.tags.forEach(function (tag, index) {
  314. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  315. key: "book:tag:0" + index,
  316. property: "book:tag",
  317. content: tag
  318. }));
  319. });
  320. }
  321. } else if (type === 'article' && config.openGraph.article) {
  322. if (config.openGraph.article.publishedTime) {
  323. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  324. key: "article:published_time",
  325. property: "article:published_time",
  326. content: config.openGraph.article.publishedTime
  327. }));
  328. }
  329. if (config.openGraph.article.modifiedTime) {
  330. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  331. key: "article:modified_time",
  332. property: "article:modified_time",
  333. content: config.openGraph.article.modifiedTime
  334. }));
  335. }
  336. if (config.openGraph.article.expirationTime) {
  337. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  338. key: "article:expiration_time",
  339. property: "article:expiration_time",
  340. content: config.openGraph.article.expirationTime
  341. }));
  342. }
  343. if (config.openGraph.article.authors && config.openGraph.article.authors.length) {
  344. config.openGraph.article.authors.forEach(function (author, index) {
  345. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  346. key: "article:author:0" + index,
  347. property: "article:author",
  348. content: author
  349. }));
  350. });
  351. }
  352. if (config.openGraph.article.section) {
  353. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  354. key: "article:section",
  355. property: "article:section",
  356. content: config.openGraph.article.section
  357. }));
  358. }
  359. if (config.openGraph.article.tags && config.openGraph.article.tags.length) {
  360. config.openGraph.article.tags.forEach(function (tag, index) {
  361. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  362. key: "article:tag:0" + index,
  363. property: "article:tag",
  364. content: tag
  365. }));
  366. });
  367. }
  368. } else if ((type === 'video.movie' || type === 'video.episode' || type === 'video.tv_show' || type === 'video.other') && config.openGraph.video) {
  369. if (config.openGraph.video.actors && config.openGraph.video.actors.length) {
  370. config.openGraph.video.actors.forEach(function (actor, index) {
  371. if (actor.profile) {
  372. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  373. key: "video:actor:0" + index,
  374. property: "video:actor",
  375. content: actor.profile
  376. }));
  377. }
  378. if (actor.role) {
  379. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  380. key: "video:actor:role:0" + index,
  381. property: "video:actor:role",
  382. content: actor.role
  383. }));
  384. }
  385. });
  386. }
  387. if (config.openGraph.video.directors && config.openGraph.video.directors.length) {
  388. config.openGraph.video.directors.forEach(function (director, index) {
  389. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  390. key: "video:director:0" + index,
  391. property: "video:director",
  392. content: director
  393. }));
  394. });
  395. }
  396. if (config.openGraph.video.writers && config.openGraph.video.writers.length) {
  397. config.openGraph.video.writers.forEach(function (writer, index) {
  398. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  399. key: "video:writer:0" + index,
  400. property: "video:writer",
  401. content: writer
  402. }));
  403. });
  404. }
  405. if (config.openGraph.video.duration) {
  406. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  407. key: "video:duration",
  408. property: "video:duration",
  409. content: config.openGraph.video.duration.toString()
  410. }));
  411. }
  412. if (config.openGraph.video.releaseDate) {
  413. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  414. key: "video:release_date",
  415. property: "video:release_date",
  416. content: config.openGraph.video.releaseDate
  417. }));
  418. }
  419. if (config.openGraph.video.tags && config.openGraph.video.tags.length) {
  420. config.openGraph.video.tags.forEach(function (tag, index) {
  421. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  422. key: "video:tag:0" + index,
  423. property: "video:tag",
  424. content: tag
  425. }));
  426. });
  427. }
  428. if (config.openGraph.video.series) {
  429. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  430. key: "video:series",
  431. property: "video:series",
  432. content: config.openGraph.video.series
  433. }));
  434. }
  435. }
  436. }
  437. // images
  438. if (config.defaultOpenGraphImageWidth) {
  439. defaults.defaultOpenGraphImageWidth = config.defaultOpenGraphImageWidth;
  440. }
  441. if (config.defaultOpenGraphImageHeight) {
  442. defaults.defaultOpenGraphImageHeight = config.defaultOpenGraphImageHeight;
  443. }
  444. if (config.openGraph.images && config.openGraph.images.length) {
  445. tagsToRender.push.apply(tagsToRender, buildOpenGraphMediaTags('image', config.openGraph.images, {
  446. defaultWidth: defaults.defaultOpenGraphImageWidth,
  447. defaultHeight: defaults.defaultOpenGraphImageHeight
  448. }));
  449. }
  450. // videos
  451. if (config.defaultOpenGraphVideoWidth) {
  452. defaults.defaultOpenGraphVideoWidth = config.defaultOpenGraphVideoWidth;
  453. }
  454. if (config.defaultOpenGraphVideoHeight) {
  455. defaults.defaultOpenGraphVideoHeight = config.defaultOpenGraphVideoHeight;
  456. }
  457. if (config.openGraph.videos && config.openGraph.videos.length) {
  458. tagsToRender.push.apply(tagsToRender, buildOpenGraphMediaTags('video', config.openGraph.videos, {
  459. defaultWidth: defaults.defaultOpenGraphVideoWidth,
  460. defaultHeight: defaults.defaultOpenGraphVideoHeight
  461. }));
  462. }
  463. // audio
  464. if (config.openGraph.audio) {
  465. tagsToRender.push.apply(tagsToRender, buildOpenGraphMediaTags('audio', config.openGraph.audio));
  466. }
  467. if (config.openGraph.locale) {
  468. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  469. key: "og:locale",
  470. property: "og:locale",
  471. content: config.openGraph.locale
  472. }));
  473. }
  474. if (config.openGraph.siteName || config.openGraph.site_name) {
  475. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", {
  476. key: "og:site_name",
  477. property: "og:site_name",
  478. content: config.openGraph.siteName || config.openGraph.site_name
  479. }));
  480. }
  481. }
  482. if (config.canonical) {
  483. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("link", {
  484. rel: "canonical",
  485. href: config.canonical,
  486. key: "canonical"
  487. }));
  488. }
  489. if (config.additionalMetaTags && config.additionalMetaTags.length > 0) {
  490. config.additionalMetaTags.forEach(function (_ref2) {
  491. var _ref3, _ref4;
  492. var keyOverride = _ref2.keyOverride,
  493. tag = _objectWithoutPropertiesLoose(_ref2, _excluded$x);
  494. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("meta", _extends({
  495. key: "meta:" + ((_ref3 = (_ref4 = keyOverride != null ? keyOverride : tag.name) != null ? _ref4 : tag.property) != null ? _ref3 : tag.httpEquiv)
  496. }, tag)));
  497. });
  498. }
  499. if ((_config$additionalLin = config.additionalLinkTags) != null && _config$additionalLin.length) {
  500. config.additionalLinkTags.forEach(function (tag) {
  501. var _tag$keyOverride;
  502. tagsToRender.push( /*#__PURE__*/React__default["default"].createElement("link", _extends({
  503. key: "link" + ((_tag$keyOverride = tag.keyOverride) != null ? _tag$keyOverride : tag.href) + tag.rel
  504. }, tag)));
  505. });
  506. }
  507. return tagsToRender;
  508. };
  509. var WithHead = function WithHead(props) {
  510. return /*#__PURE__*/React__default["default"].createElement(Head__default["default"], null, buildTags(props));
  511. };
  512. var DefaultSeo = function DefaultSeo(_ref) {
  513. var title = _ref.title,
  514. titleTemplate = _ref.titleTemplate,
  515. defaultTitle = _ref.defaultTitle,
  516. themeColor = _ref.themeColor,
  517. _ref$dangerouslySetAl = _ref.dangerouslySetAllPagesToNoIndex,
  518. dangerouslySetAllPagesToNoIndex = _ref$dangerouslySetAl === void 0 ? false : _ref$dangerouslySetAl,
  519. _ref$dangerouslySetAl2 = _ref.dangerouslySetAllPagesToNoFollow,
  520. dangerouslySetAllPagesToNoFollow = _ref$dangerouslySetAl2 === void 0 ? false : _ref$dangerouslySetAl2,
  521. description = _ref.description,
  522. canonical = _ref.canonical,
  523. facebook = _ref.facebook,
  524. openGraph = _ref.openGraph,
  525. additionalMetaTags = _ref.additionalMetaTags,
  526. twitter = _ref.twitter,
  527. defaultOpenGraphImageWidth = _ref.defaultOpenGraphImageWidth,
  528. defaultOpenGraphImageHeight = _ref.defaultOpenGraphImageHeight,
  529. defaultOpenGraphVideoWidth = _ref.defaultOpenGraphVideoWidth,
  530. defaultOpenGraphVideoHeight = _ref.defaultOpenGraphVideoHeight,
  531. mobileAlternate = _ref.mobileAlternate,
  532. languageAlternates = _ref.languageAlternates,
  533. additionalLinkTags = _ref.additionalLinkTags,
  534. robotsProps = _ref.robotsProps;
  535. return /*#__PURE__*/React__default["default"].createElement(WithHead, {
  536. title: title,
  537. titleTemplate: titleTemplate,
  538. defaultTitle: defaultTitle,
  539. themeColor: themeColor,
  540. dangerouslySetAllPagesToNoIndex: dangerouslySetAllPagesToNoIndex,
  541. dangerouslySetAllPagesToNoFollow: dangerouslySetAllPagesToNoFollow,
  542. description: description,
  543. canonical: canonical,
  544. facebook: facebook,
  545. openGraph: openGraph,
  546. additionalMetaTags: additionalMetaTags,
  547. twitter: twitter,
  548. defaultOpenGraphImageWidth: defaultOpenGraphImageWidth,
  549. defaultOpenGraphImageHeight: defaultOpenGraphImageHeight,
  550. defaultOpenGraphVideoWidth: defaultOpenGraphVideoWidth,
  551. defaultOpenGraphVideoHeight: defaultOpenGraphVideoHeight,
  552. mobileAlternate: mobileAlternate,
  553. languageAlternates: languageAlternates,
  554. additionalLinkTags: additionalLinkTags,
  555. robotsProps: robotsProps
  556. });
  557. };
  558. var NextSeo = function NextSeo(_ref) {
  559. var title = _ref.title,
  560. themeColor = _ref.themeColor,
  561. _ref$noindex = _ref.noindex,
  562. noindex = _ref$noindex === void 0 ? false : _ref$noindex,
  563. nofollow = _ref.nofollow,
  564. robotsProps = _ref.robotsProps,
  565. description = _ref.description,
  566. canonical = _ref.canonical,
  567. openGraph = _ref.openGraph,
  568. facebook = _ref.facebook,
  569. twitter = _ref.twitter,
  570. additionalMetaTags = _ref.additionalMetaTags,
  571. titleTemplate = _ref.titleTemplate,
  572. defaultTitle = _ref.defaultTitle,
  573. mobileAlternate = _ref.mobileAlternate,
  574. languageAlternates = _ref.languageAlternates,
  575. additionalLinkTags = _ref.additionalLinkTags,
  576. _ref$useAppDir = _ref.useAppDir,
  577. useAppDir = _ref$useAppDir === void 0 ? false : _ref$useAppDir;
  578. return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, useAppDir ? buildTags({
  579. title: title,
  580. themeColor: themeColor,
  581. noindex: noindex,
  582. nofollow: nofollow,
  583. robotsProps: robotsProps,
  584. description: description,
  585. canonical: canonical,
  586. facebook: facebook,
  587. openGraph: openGraph,
  588. additionalMetaTags: additionalMetaTags,
  589. twitter: twitter,
  590. titleTemplate: titleTemplate,
  591. defaultTitle: defaultTitle,
  592. mobileAlternate: mobileAlternate,
  593. languageAlternates: languageAlternates,
  594. additionalLinkTags: additionalLinkTags
  595. }) : /*#__PURE__*/React__default["default"].createElement(WithHead, {
  596. title: title,
  597. themeColor: themeColor,
  598. noindex: noindex,
  599. nofollow: nofollow,
  600. robotsProps: robotsProps,
  601. description: description,
  602. canonical: canonical,
  603. facebook: facebook,
  604. openGraph: openGraph,
  605. additionalMetaTags: additionalMetaTags,
  606. twitter: twitter,
  607. titleTemplate: titleTemplate,
  608. defaultTitle: defaultTitle,
  609. mobileAlternate: mobileAlternate,
  610. languageAlternates: languageAlternates,
  611. additionalLinkTags: additionalLinkTags
  612. }));
  613. };
  614. var toJson = function toJson(type, jsonld) {
  615. var data = jsonld;
  616. if (Array.isArray(data) && data.length === 1) {
  617. data = _extends({}, jsonld[0]);
  618. }
  619. var jsonLdObject = Array.isArray(data) ? data.map(function (item) {
  620. return formatObjectForSchema(type, item);
  621. }) : formatObjectForSchema(type, data);
  622. return {
  623. __html: JSON.stringify(jsonLdObject, safeJsonLdReplacer)
  624. };
  625. };
  626. var formatObjectForSchema = function formatObjectForSchema(type, jsonld) {
  627. var _jsonld$id = jsonld.id,
  628. id = _jsonld$id === void 0 ? undefined : _jsonld$id;
  629. var updated = _extends({}, id ? {
  630. '@id': jsonld.id
  631. } : {}, jsonld);
  632. delete updated.id;
  633. return _extends({
  634. '@context': 'https://schema.org',
  635. '@type': type
  636. }, updated);
  637. };
  638. var ESCAPE_ENTITIES = Object.freeze({
  639. '&': '&amp;',
  640. '<': '&lt;',
  641. '>': '&gt;',
  642. '"': '&quot;',
  643. "'": '&apos;'
  644. });
  645. var ESCAPE_REGEX = new RegExp("[" + Object.keys(ESCAPE_ENTITIES).join('') + "]", 'g');
  646. var ESCAPE_REPLACER = function ESCAPE_REPLACER(t) {
  647. return ESCAPE_ENTITIES[t];
  648. };
  649. /**
  650. * A replacer for JSON.stringify to strip JSON-LD of illegal HTML entities
  651. * per https://www.w3.org/TR/json-ld11/#restrictions-for-contents-of-json-ld-script-elements
  652. */
  653. var safeJsonLdReplacer = function () {
  654. // Replace per https://www.w3.org/TR/json-ld11/#restrictions-for-contents-of-json-ld-script-elements
  655. // Solution from https://stackoverflow.com/a/5499821/864313
  656. return function (_, value) {
  657. switch (typeof value) {
  658. case 'object':
  659. // Omit null values.
  660. if (value === null) {
  661. return undefined;
  662. }
  663. return value;
  664. // JSON.stringify will recursively call replacer.
  665. case 'number':
  666. case 'boolean':
  667. case 'bigint':
  668. return value;
  669. // These values are not risky.
  670. case 'string':
  671. return value.replace(ESCAPE_REGEX, ESCAPE_REPLACER);
  672. default:
  673. {
  674. // JSON.stringify will remove this element.
  675. return undefined;
  676. }
  677. }
  678. };
  679. }();
  680. var _excluded$w = ["type", "keyOverride", "scriptKey", "scriptId", "dataArray", "useAppDir"];
  681. function JsonLd(_ref) {
  682. var _ref$type = _ref.type,
  683. type = _ref$type === void 0 ? 'Thing' : _ref$type,
  684. keyOverride = _ref.keyOverride,
  685. scriptKey = _ref.scriptKey,
  686. _ref$scriptId = _ref.scriptId,
  687. scriptId = _ref$scriptId === void 0 ? undefined : _ref$scriptId,
  688. dataArray = _ref.dataArray,
  689. _ref$useAppDir = _ref.useAppDir,
  690. useAppDir = _ref$useAppDir === void 0 ? false : _ref$useAppDir,
  691. rest = _objectWithoutPropertiesLoose(_ref, _excluded$w);
  692. var JsonLdScript = function JsonLdScript() {
  693. return /*#__PURE__*/React__default["default"].createElement("script", {
  694. type: "application/ld+json",
  695. id: scriptId,
  696. "data-testid": scriptId,
  697. dangerouslySetInnerHTML: toJson(type, dataArray === undefined ? _extends({}, rest) : dataArray),
  698. key: "jsonld-" + scriptKey + (keyOverride ? "-" + keyOverride : '')
  699. });
  700. };
  701. if (useAppDir) {
  702. return /*#__PURE__*/React__default["default"].createElement(JsonLdScript, null);
  703. }
  704. return /*#__PURE__*/React__default["default"].createElement(Head__default["default"], null, JsonLdScript());
  705. }
  706. /**
  707. * Generate author information
  708. * @param author
  709. * @returns
  710. */
  711. function generateAuthorInfo(author) {
  712. if (typeof author === 'string') {
  713. return {
  714. '@type': 'Person',
  715. name: author
  716. };
  717. } else if (!!author.name) {
  718. var _author$type;
  719. return {
  720. '@type': (_author$type = author == null ? void 0 : author.type) != null ? _author$type : 'Person',
  721. name: author.name,
  722. url: author == null ? void 0 : author.url
  723. };
  724. }
  725. return;
  726. }
  727. function setAuthor(author) {
  728. if (Array.isArray(author)) {
  729. return author.map(function (item) {
  730. return generateAuthorInfo(item);
  731. }).filter(function (item) {
  732. return !!item;
  733. });
  734. } else if (author) {
  735. return generateAuthorInfo(author);
  736. }
  737. return;
  738. }
  739. function setImage(image) {
  740. if (image) {
  741. return {
  742. '@type': 'ImageObject',
  743. url: image
  744. };
  745. }
  746. return undefined;
  747. }
  748. function setPublisher(publisherName, publisherLogo) {
  749. if (!publisherName) {
  750. return undefined;
  751. }
  752. return {
  753. '@type': 'Organization',
  754. name: publisherName,
  755. logo: setImage(publisherLogo)
  756. };
  757. }
  758. function setReviewRating(rating) {
  759. if (rating) {
  760. return _extends({}, rating, {
  761. '@type': 'Rating'
  762. });
  763. }
  764. return undefined;
  765. }
  766. var _excluded$v = ["reviewRating", "author", "publisher"];
  767. function setReviews(reviews) {
  768. function mapReview(_ref) {
  769. var reviewRating = _ref.reviewRating,
  770. author = _ref.author,
  771. publisher = _ref.publisher,
  772. rest = _objectWithoutPropertiesLoose(_ref, _excluded$v);
  773. return _extends({}, rest, {
  774. '@type': 'Review'
  775. }, author && {
  776. author: setAuthor(author)
  777. }, reviewRating && {
  778. reviewRating: setReviewRating(reviewRating)
  779. }, publisher && {
  780. publisher: setPublisher(publisher.name)
  781. });
  782. }
  783. if (Array.isArray(reviews)) {
  784. return reviews.map(mapReview);
  785. } else if (reviews) {
  786. return mapReview(reviews);
  787. }
  788. return undefined;
  789. }
  790. function setNutrition(calories) {
  791. if (calories) {
  792. return {
  793. '@type': 'NutritionInformation',
  794. calories: calories + " calories"
  795. };
  796. }
  797. return undefined;
  798. }
  799. function setAggregateRating(aggregateRating) {
  800. if (aggregateRating) {
  801. return {
  802. '@type': 'AggregateRating',
  803. ratingCount: aggregateRating.ratingCount,
  804. reviewCount: aggregateRating.reviewCount,
  805. bestRating: aggregateRating.bestRating,
  806. ratingValue: aggregateRating.ratingValue
  807. };
  808. }
  809. return undefined;
  810. }
  811. function setClip(clips) {
  812. function mapClip(clip) {
  813. return _extends({}, clip, {
  814. '@type': 'Clip'
  815. });
  816. }
  817. if (Array.isArray(clips)) {
  818. return clips.map(mapClip);
  819. } else if (clips) {
  820. return mapClip(clips);
  821. }
  822. return undefined;
  823. }
  824. function setInteractionStatistic(watchCount) {
  825. if (watchCount) {
  826. return {
  827. '@type': 'InteractionCounter',
  828. interactionType: 'https://schema.org/WatchAction',
  829. userInteractionCount: watchCount
  830. };
  831. }
  832. return undefined;
  833. }
  834. function setBroadcastEvent(publication) {
  835. function mapBroadcastEvent(publication) {
  836. return _extends({}, publication, {
  837. '@type': 'BroadcastEvent'
  838. });
  839. }
  840. if (publication) {
  841. if (Array.isArray(publication)) {
  842. return publication.map(mapBroadcastEvent);
  843. }
  844. return mapBroadcastEvent(publication);
  845. }
  846. return undefined;
  847. }
  848. var _excluded$u = ["thumbnailUrls", "hasPart", "watchCount", "publication"];
  849. function setVideo(video, setContext) {
  850. if (setContext === void 0) {
  851. setContext = false;
  852. }
  853. function mapVideo(_ref, context) {
  854. var thumbnailUrls = _ref.thumbnailUrls,
  855. hasPart = _ref.hasPart,
  856. watchCount = _ref.watchCount,
  857. publication = _ref.publication,
  858. rest = _objectWithoutPropertiesLoose(_ref, _excluded$u);
  859. return _extends({}, rest, {
  860. '@type': 'VideoObject'
  861. }, context && {
  862. '@context': 'https://schema.org'
  863. }, {
  864. thumbnailUrl: thumbnailUrls,
  865. hasPart: setClip(hasPart),
  866. interactionStatistic: setInteractionStatistic(watchCount),
  867. publication: setBroadcastEvent(publication)
  868. });
  869. }
  870. if (video) {
  871. return mapVideo(video, setContext);
  872. }
  873. return undefined;
  874. }
  875. function setInstruction(instruction) {
  876. if (instruction) {
  877. return _extends({}, instruction, {
  878. '@type': 'HowToStep'
  879. });
  880. }
  881. return undefined;
  882. }
  883. var _excluded$t = ["type", "keyOverride", "ofType", "data"],
  884. _excluded2$1 = ["authorName", "images", "yields", "category", "calories", "aggregateRating", "video", "ingredients", "instructions", "cuisine"];
  885. function CarouselJsonLd(_ref) {
  886. var _ref$type = _ref.type,
  887. type = _ref$type === void 0 ? 'Carousel' : _ref$type,
  888. keyOverride = _ref.keyOverride,
  889. ofType = _ref.ofType,
  890. data = _ref.data,
  891. rest = _objectWithoutPropertiesLoose(_ref, _excluded$t);
  892. function generateList(data, ofType) {
  893. switch (ofType) {
  894. case 'default':
  895. return data.map(function (item, index) {
  896. return {
  897. '@type': 'ListItem',
  898. position: "" + (index + 1),
  899. url: item.url
  900. };
  901. });
  902. case 'course':
  903. return data.map(function (item, index) {
  904. return {
  905. '@type': 'ListItem',
  906. position: "" + (index + 1),
  907. item: {
  908. '@context': 'https://schema.org',
  909. '@type': 'Course',
  910. url: item.url,
  911. name: item.courseName,
  912. description: item.description,
  913. provider: {
  914. '@type': 'Organization',
  915. name: item.providerName,
  916. sameAs: item.providerUrl
  917. }
  918. }
  919. };
  920. });
  921. case 'movie':
  922. return data.map(function (item, index) {
  923. return {
  924. '@type': 'ListItem',
  925. position: "" + (index + 1),
  926. item: {
  927. '@context': 'https://schema.org',
  928. '@type': 'Movie',
  929. name: item.name,
  930. url: item.url,
  931. image: item.image,
  932. dateCreated: item.dateCreated,
  933. director: item.director ? Array.isArray(item.director) ? item.director.map(function (director) {
  934. return {
  935. '@type': 'Person',
  936. name: director.name
  937. };
  938. }) : {
  939. '@type': 'Person',
  940. name: item.director.name
  941. } : undefined,
  942. review: setReviews(item.review)
  943. }
  944. };
  945. });
  946. case 'recipe':
  947. return data.map(function (_ref2, index) {
  948. var authorName = _ref2.authorName,
  949. images = _ref2.images,
  950. yields = _ref2.yields,
  951. category = _ref2.category,
  952. calories = _ref2.calories,
  953. aggregateRating = _ref2.aggregateRating,
  954. video = _ref2.video,
  955. ingredients = _ref2.ingredients,
  956. instructions = _ref2.instructions,
  957. cuisine = _ref2.cuisine,
  958. rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
  959. return {
  960. '@type': 'ListItem',
  961. position: "" + (index + 1),
  962. item: _extends({
  963. '@context': 'https://schema.org',
  964. '@type': 'Recipe'
  965. }, rest, {
  966. author: setAuthor(authorName),
  967. image: images,
  968. recipeYield: yields,
  969. recipeCategory: category,
  970. recipeCuisine: cuisine,
  971. nutrition: setNutrition(calories),
  972. aggregateRating: setAggregateRating(aggregateRating),
  973. video: setVideo(video),
  974. recipeIngredient: ingredients,
  975. recipeInstructions: instructions.map(setInstruction)
  976. })
  977. };
  978. });
  979. }
  980. }
  981. var jsonLdData = _extends({
  982. '@type': 'ItemList',
  983. itemListElement: generateList(data, ofType)
  984. }, rest);
  985. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  986. type: type,
  987. keyOverride: keyOverride
  988. }, jsonLdData, {
  989. scriptKey: "Carousel"
  990. }));
  991. }
  992. var _excluded$s = ["type", "keyOverride", "url", "title", "images", "section", "dateCreated", "datePublished", "dateModified", "authorName", "authorType", "publisherName", "publisherLogo", "body", "isAccessibleForFree"];
  993. function NewsArticleJsonLd(_ref) {
  994. var _ref$type = _ref.type,
  995. type = _ref$type === void 0 ? 'NewsArticle' : _ref$type,
  996. keyOverride = _ref.keyOverride,
  997. url = _ref.url,
  998. title = _ref.title,
  999. images = _ref.images,
  1000. section = _ref.section,
  1001. dateCreated = _ref.dateCreated,
  1002. datePublished = _ref.datePublished,
  1003. dateModified = _ref.dateModified,
  1004. authorName = _ref.authorName,
  1005. publisherName = _ref.publisherName,
  1006. publisherLogo = _ref.publisherLogo,
  1007. body = _ref.body,
  1008. isAccessibleForFree = _ref.isAccessibleForFree,
  1009. rest = _objectWithoutPropertiesLoose(_ref, _excluded$s);
  1010. var data = _extends({}, rest, {
  1011. mainEntityOfPage: {
  1012. '@type': 'WebPage',
  1013. '@id': url
  1014. },
  1015. headline: title,
  1016. image: images,
  1017. articleSection: section,
  1018. dateCreated: dateCreated || datePublished,
  1019. datePublished: datePublished,
  1020. dateModified: dateModified || datePublished,
  1021. author: setAuthor(authorName),
  1022. publisher: setPublisher(publisherName, publisherLogo),
  1023. articleBody: body,
  1024. isAccessibleForFree: isAccessibleForFree
  1025. });
  1026. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1027. type: type,
  1028. keyOverride: keyOverride
  1029. }, data, {
  1030. scriptKey: "NewsArticle"
  1031. }));
  1032. }
  1033. var _excluded$r = ["type", "keyOverride", "baseSalary", "hiringOrganization", "applicantLocationRequirements", "experienceRequirements", "jobLocation"];
  1034. function JobPostingJsonLd(_ref) {
  1035. var _ref$type = _ref.type,
  1036. type = _ref$type === void 0 ? 'JobPosting' : _ref$type,
  1037. keyOverride = _ref.keyOverride,
  1038. baseSalary = _ref.baseSalary,
  1039. hiringOrganization = _ref.hiringOrganization,
  1040. applicantLocationRequirements = _ref.applicantLocationRequirements,
  1041. experienceRequirements = _ref.experienceRequirements,
  1042. jobLocation = _ref.jobLocation,
  1043. rest = _objectWithoutPropertiesLoose(_ref, _excluded$r);
  1044. function setBaseSalary(baseSalary) {
  1045. if (baseSalary) {
  1046. return {
  1047. '@type': 'MonetaryAmount',
  1048. currency: baseSalary.currency,
  1049. value: _extends({
  1050. '@type': 'QuantitativeValue',
  1051. unitText: baseSalary.unitText
  1052. }, Array.isArray(baseSalary.value) ? {
  1053. minValue: baseSalary.value[0],
  1054. maxValue: baseSalary.value[1]
  1055. } : {
  1056. value: baseSalary.value
  1057. })
  1058. };
  1059. }
  1060. return undefined;
  1061. }
  1062. function setHiringOrganization(org) {
  1063. return {
  1064. '@type': 'Organization',
  1065. name: org.name,
  1066. sameAs: org.sameAs,
  1067. logo: org.logo
  1068. };
  1069. }
  1070. function setJobLocation(location) {
  1071. if (location) {
  1072. return {
  1073. '@type': 'Place',
  1074. address: {
  1075. '@type': 'PostalAddress',
  1076. addressCountry: location.addressCountry,
  1077. addressLocality: location.addressLocality,
  1078. addressRegion: location.addressRegion,
  1079. postalCode: location.postalCode,
  1080. streetAddress: location.streetAddress
  1081. }
  1082. };
  1083. }
  1084. return undefined;
  1085. }
  1086. function setApplicantLocationRequirements(requirements) {
  1087. if (requirements) {
  1088. return {
  1089. '@type': 'Country',
  1090. name: requirements
  1091. };
  1092. }
  1093. return undefined;
  1094. }
  1095. function setOccupationalExperienceRequirements(requirements) {
  1096. if (requirements) {
  1097. return {
  1098. '@type': requirements['@type'] ? requirements['@type'] : 'OccupationalExperienceRequirements',
  1099. monthsOfExperience: requirements.minimumMonthsOfExperience
  1100. };
  1101. }
  1102. return undefined;
  1103. }
  1104. function setEducationalOccupationalCredential(requirements) {
  1105. if (requirements) {
  1106. return {
  1107. '@type': requirements['@type'] ? requirements['@type'] : 'EducationalOccupationalCredential',
  1108. credentialCategory: requirements.credentialCategory
  1109. };
  1110. }
  1111. return undefined;
  1112. }
  1113. var data = _extends({}, rest, {
  1114. baseSalary: setBaseSalary(baseSalary),
  1115. hiringOrganization: setHiringOrganization(hiringOrganization),
  1116. jobLocation: setJobLocation(jobLocation),
  1117. applicantLocationRequirements: setApplicantLocationRequirements(applicantLocationRequirements),
  1118. experienceRequirements: setOccupationalExperienceRequirements(experienceRequirements == null ? void 0 : experienceRequirements.occupational),
  1119. educationRequirements: setEducationalOccupationalCredential(experienceRequirements == null ? void 0 : experienceRequirements.educational),
  1120. experienceInPlaceOfEducation: experienceRequirements == null ? void 0 : experienceRequirements.experienceInPlaceOfEducation
  1121. });
  1122. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1123. type: type,
  1124. keyOverride: keyOverride
  1125. }, data, {
  1126. scriptKey: "JobPosting"
  1127. }));
  1128. }
  1129. function setAddress(address) {
  1130. if (!address) return undefined;
  1131. if (!Array.isArray(address)) return toPostalAddress(address);
  1132. // If array of one address, replace with single address
  1133. if (address.length === 1) return toPostalAddress(address[0]);
  1134. // If array, return mapped array of PostalAddresses
  1135. return address.map(toPostalAddress);
  1136. }
  1137. function toPostalAddress(address) {
  1138. if (typeof address === 'string') return address;
  1139. return _extends({
  1140. '@type': 'PostalAddress'
  1141. }, address);
  1142. }
  1143. function setGeo(geo) {
  1144. if (geo) {
  1145. return _extends({}, geo, {
  1146. '@type': 'GeoCoordinates'
  1147. });
  1148. }
  1149. return undefined;
  1150. }
  1151. function setAction(action) {
  1152. if (action) {
  1153. return {
  1154. '@type': action.actionType,
  1155. name: action.actionName,
  1156. target: action.target
  1157. };
  1158. }
  1159. return undefined;
  1160. }
  1161. function setGeoCircle(geoCircle) {
  1162. if (geoCircle) {
  1163. return {
  1164. '@type': 'GeoCircle',
  1165. geoMidpoint: {
  1166. '@type': 'GeoCoordinates',
  1167. latitude: geoCircle.geoMidpoint.latitude,
  1168. longitude: geoCircle.geoMidpoint.longitude
  1169. },
  1170. geoRadius: geoCircle.geoRadius
  1171. };
  1172. }
  1173. return undefined;
  1174. }
  1175. function setOffer(offer) {
  1176. function setPriceSpecification(priceSpecification) {
  1177. if (priceSpecification) {
  1178. return {
  1179. '@type': priceSpecification.type,
  1180. priceCurrency: priceSpecification.priceCurrency,
  1181. price: priceSpecification.price
  1182. };
  1183. }
  1184. return undefined;
  1185. }
  1186. function setItemOffered(itemOffered) {
  1187. if (itemOffered) {
  1188. return _extends({}, itemOffered, {
  1189. '@type': 'Service'
  1190. });
  1191. }
  1192. return undefined;
  1193. }
  1194. if (offer) {
  1195. return _extends({}, offer, {
  1196. '@type': 'Offer',
  1197. priceSpecification: setPriceSpecification(offer.priceSpecification),
  1198. itemOffered: setItemOffered(offer.itemOffered)
  1199. });
  1200. }
  1201. return undefined;
  1202. }
  1203. function setOpeningHours(openingHours) {
  1204. if (openingHours) {
  1205. return _extends({}, openingHours, {
  1206. '@type': 'OpeningHoursSpecification'
  1207. });
  1208. }
  1209. return undefined;
  1210. }
  1211. var _excluded$q = ["type", "keyOverride", "address", "geo", "rating", "review", "action", "areaServed", "makesOffer", "openingHours", "images"];
  1212. function LocalBusinessJsonLd(_ref) {
  1213. var _ref$type = _ref.type,
  1214. type = _ref$type === void 0 ? 'LocalBusiness' : _ref$type,
  1215. keyOverride = _ref.keyOverride,
  1216. address = _ref.address,
  1217. geo = _ref.geo,
  1218. rating = _ref.rating,
  1219. review = _ref.review,
  1220. action = _ref.action,
  1221. areaServed = _ref.areaServed,
  1222. makesOffer = _ref.makesOffer,
  1223. openingHours = _ref.openingHours,
  1224. images = _ref.images,
  1225. rest = _objectWithoutPropertiesLoose(_ref, _excluded$q);
  1226. var data = _extends({}, rest, {
  1227. image: images,
  1228. address: setAddress(address),
  1229. geo: setGeo(geo),
  1230. aggregateRating: setAggregateRating(rating),
  1231. review: setReviews(review),
  1232. potentialAction: setAction(action),
  1233. areaServed: areaServed && areaServed.map(setGeoCircle),
  1234. makesOffer: makesOffer == null ? void 0 : makesOffer.map(setOffer),
  1235. openingHoursSpecification: Array.isArray(openingHours) ? openingHours.map(setOpeningHours) : setOpeningHours(openingHours)
  1236. });
  1237. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1238. type: type,
  1239. keyOverride: keyOverride
  1240. }, data, {
  1241. scriptKey: "LocalBusiness"
  1242. }));
  1243. }
  1244. var _excluded$p = ["type", "keyOverride", "mainEntity"],
  1245. _excluded2 = ["upvoteCount"];
  1246. function QAPageJsonLd(_ref) {
  1247. var _mainEntity$author, _mainEntity$acceptedA, _mainEntity$acceptedA2;
  1248. var _ref$type = _ref.type,
  1249. type = _ref$type === void 0 ? 'QAPage' : _ref$type,
  1250. keyOverride = _ref.keyOverride,
  1251. mainEntity = _ref.mainEntity,
  1252. rest = _objectWithoutPropertiesLoose(_ref, _excluded$p);
  1253. var data = _extends({}, rest, {
  1254. mainEntity: _extends({}, mainEntity, {
  1255. '@type': 'Question',
  1256. author: setAuthor((_mainEntity$author = mainEntity.author) == null ? void 0 : _mainEntity$author.name)
  1257. }, mainEntity.acceptedAnswer && {
  1258. acceptedAnswer: _extends({}, mainEntity.acceptedAnswer, {
  1259. '@type': 'Answer',
  1260. author: setAuthor((_mainEntity$acceptedA = mainEntity.acceptedAnswer) == null ? void 0 : (_mainEntity$acceptedA2 = _mainEntity$acceptedA.author) == null ? void 0 : _mainEntity$acceptedA2.name)
  1261. })
  1262. }, mainEntity.suggestedAnswer && {
  1263. suggestedAnswer: mainEntity.suggestedAnswer.map(function (_ref2) {
  1264. var _rest$author;
  1265. var upvoteCount = _ref2.upvoteCount,
  1266. rest = _objectWithoutPropertiesLoose(_ref2, _excluded2);
  1267. return _extends({}, rest, {
  1268. '@type': 'Answer',
  1269. upvoteCount: upvoteCount || 0,
  1270. author: setAuthor((_rest$author = rest.author) == null ? void 0 : _rest$author.name)
  1271. });
  1272. })
  1273. })
  1274. });
  1275. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1276. type: type,
  1277. keyOverride: keyOverride
  1278. }, data, {
  1279. scriptKey: "QAPage"
  1280. }));
  1281. }
  1282. function setItemListElements(items) {
  1283. if (items && items.length) {
  1284. return items.map(function (item) {
  1285. return {
  1286. '@type': 'ListItem',
  1287. position: item.position,
  1288. item: {
  1289. '@id': item.item,
  1290. name: item.name
  1291. }
  1292. };
  1293. });
  1294. }
  1295. return undefined;
  1296. }
  1297. var _excluded$o = ["type", "keyOverride", "breadcrumb"];
  1298. function ProfilePageJsonLd(_ref) {
  1299. var _ref$type = _ref.type,
  1300. type = _ref$type === void 0 ? 'ProfilePage' : _ref$type,
  1301. keyOverride = _ref.keyOverride,
  1302. breadcrumb = _ref.breadcrumb,
  1303. rest = _objectWithoutPropertiesLoose(_ref, _excluded$o);
  1304. var data = _extends({}, rest, {
  1305. breadcrumb: Array.isArray(breadcrumb) ? {
  1306. '@type': 'BreadcrumbList',
  1307. itemListElement: setItemListElements(breadcrumb)
  1308. } : breadcrumb
  1309. });
  1310. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1311. type: type,
  1312. keyOverride: keyOverride
  1313. }, data, {
  1314. scriptKey: "ProfilePage"
  1315. }));
  1316. }
  1317. var _excluded$n = ["type", "keyOverride", "potentialActions"];
  1318. function SiteLinksSearchBoxJsonLd(_ref) {
  1319. var _ref$type = _ref.type,
  1320. type = _ref$type === void 0 ? 'WebSite' : _ref$type,
  1321. keyOverride = _ref.keyOverride,
  1322. potentialActions = _ref.potentialActions,
  1323. rest = _objectWithoutPropertiesLoose(_ref, _excluded$n);
  1324. function setPotentialAction(action) {
  1325. if (action) {
  1326. var target = action.target,
  1327. queryInput = action.queryInput;
  1328. return {
  1329. '@type': 'SearchAction',
  1330. target: target + "={" + queryInput + "}",
  1331. 'query-input': "required name=" + queryInput
  1332. };
  1333. }
  1334. return undefined;
  1335. }
  1336. var data = _extends({}, rest, {
  1337. potentialAction: potentialActions.map(setPotentialAction)
  1338. });
  1339. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1340. type: type,
  1341. keyOverride: keyOverride
  1342. }, data, {
  1343. scriptKey: "jsonld-siteLinksSearchBox"
  1344. }));
  1345. }
  1346. var _excluded$m = ["type", "keyOverride", "authorName", "images", "yields", "category", "cuisine", "calories", "aggregateRating", "video", "ingredients", "instructions"];
  1347. function RecipeJsonLd(_ref) {
  1348. var _ref$type = _ref.type,
  1349. type = _ref$type === void 0 ? 'Recipe' : _ref$type,
  1350. keyOverride = _ref.keyOverride,
  1351. authorName = _ref.authorName,
  1352. images = _ref.images,
  1353. yields = _ref.yields,
  1354. category = _ref.category,
  1355. cuisine = _ref.cuisine,
  1356. calories = _ref.calories,
  1357. aggregateRating = _ref.aggregateRating,
  1358. video = _ref.video,
  1359. ingredients = _ref.ingredients,
  1360. instructions = _ref.instructions,
  1361. rest = _objectWithoutPropertiesLoose(_ref, _excluded$m);
  1362. var data = _extends({}, rest, {
  1363. author: setAuthor(authorName),
  1364. image: images,
  1365. recipeYield: yields,
  1366. recipeCategory: category,
  1367. recipeCuisine: cuisine,
  1368. nutrition: setNutrition(calories),
  1369. aggregateRating: setAggregateRating(aggregateRating),
  1370. video: setVideo(video),
  1371. recipeIngredient: ingredients,
  1372. recipeInstructions: instructions ? instructions.map(setInstruction) : undefined
  1373. });
  1374. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1375. type: type,
  1376. keyOverride: keyOverride
  1377. }, data, {
  1378. scriptKey: "recipe"
  1379. }));
  1380. }
  1381. function setLocation(location) {
  1382. if (!location) {
  1383. return undefined;
  1384. }
  1385. if (typeof location === 'string') {
  1386. return location;
  1387. }
  1388. if ('url' in location) {
  1389. return setVirtualLocation(location);
  1390. } else {
  1391. return setPlace(location);
  1392. }
  1393. }
  1394. function setVirtualLocation(location) {
  1395. return _extends({}, location, {
  1396. '@type': 'VirtualLocation'
  1397. });
  1398. }
  1399. function setPlace(location) {
  1400. return _extends({}, location, {
  1401. address: setAddress(location.address),
  1402. '@type': 'Place'
  1403. });
  1404. }
  1405. var _excluded$l = ["type"];
  1406. function setPerformer(performer) {
  1407. if (performer) {
  1408. var type = performer.type,
  1409. restPerformer = _objectWithoutPropertiesLoose(performer, _excluded$l);
  1410. return _extends({}, restPerformer, {
  1411. '@type': type || 'PerformingGroup'
  1412. });
  1413. }
  1414. return undefined;
  1415. }
  1416. var _excluded$k = ["seller"];
  1417. function setOffers(offers) {
  1418. function mapOffer(_ref) {
  1419. var seller = _ref.seller,
  1420. rest = _objectWithoutPropertiesLoose(_ref, _excluded$k);
  1421. return _extends({}, rest, {
  1422. '@type': 'Offer'
  1423. }, seller && {
  1424. seller: {
  1425. '@type': 'Organization',
  1426. name: seller.name
  1427. }
  1428. });
  1429. }
  1430. if (Array.isArray(offers)) {
  1431. return offers.map(mapOffer);
  1432. } else if (offers) {
  1433. return mapOffer(offers);
  1434. }
  1435. return undefined;
  1436. }
  1437. function setAggregateOffer(aggregateOffer) {
  1438. if (aggregateOffer) {
  1439. return {
  1440. '@type': 'AggregateOffer',
  1441. priceCurrency: aggregateOffer.priceCurrency,
  1442. highPrice: aggregateOffer.highPrice,
  1443. lowPrice: aggregateOffer.lowPrice,
  1444. offerCount: aggregateOffer.offerCount,
  1445. offers: setOffers(aggregateOffer.offers)
  1446. };
  1447. }
  1448. return undefined;
  1449. }
  1450. var _excluded$j = ["type"];
  1451. function setOrganizer(organizer) {
  1452. if (organizer) {
  1453. var type = organizer.type,
  1454. restOrganizer = _objectWithoutPropertiesLoose(organizer, _excluded$j);
  1455. return _extends({}, restOrganizer, {
  1456. '@type': type || 'Person'
  1457. });
  1458. }
  1459. return undefined;
  1460. }
  1461. var _excluded$i = ["type", "keyOverride", "location", "images", "offers", "aggregateOffer", "performers", "organizer", "eventStatus", "eventAttendanceMode"];
  1462. function EventJsonLd(_ref) {
  1463. var _ref$type = _ref.type,
  1464. type = _ref$type === void 0 ? 'Event' : _ref$type,
  1465. keyOverride = _ref.keyOverride,
  1466. location = _ref.location,
  1467. images = _ref.images,
  1468. offers = _ref.offers,
  1469. aggregateOffer = _ref.aggregateOffer,
  1470. performers = _ref.performers,
  1471. organizer = _ref.organizer,
  1472. eventStatus = _ref.eventStatus,
  1473. eventAttendanceMode = _ref.eventAttendanceMode,
  1474. rest = _objectWithoutPropertiesLoose(_ref, _excluded$i);
  1475. var data = _extends({}, rest, {
  1476. location: setLocation(location),
  1477. image: images,
  1478. offers: offers ? setOffers(offers) : setAggregateOffer(aggregateOffer),
  1479. performer: Array.isArray(performers) ? performers.map(setPerformer) : setPerformer(performers),
  1480. organizer: Array.isArray(organizer) ? organizer.map(setOrganizer) : setOrganizer(organizer),
  1481. eventStatus: eventStatus ? "https://schema.org/" + eventStatus : undefined,
  1482. eventAttendanceMode: eventAttendanceMode ? "https://schema.org/" + eventAttendanceMode : undefined
  1483. });
  1484. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1485. type: type,
  1486. keyOverride: keyOverride
  1487. }, data, {
  1488. scriptKey: "Event"
  1489. }));
  1490. }
  1491. function setContactPoint(contactPoint) {
  1492. if (contactPoint) {
  1493. return _extends({}, contactPoint, {
  1494. '@type': 'ContactPoint'
  1495. });
  1496. }
  1497. return undefined;
  1498. }
  1499. var _excluded$h = ["type", "keyOverride", "contactPoint"];
  1500. function CorporateContactJsonLd(_ref) {
  1501. var _ref$type = _ref.type,
  1502. type = _ref$type === void 0 ? 'Organization' : _ref$type,
  1503. keyOverride = _ref.keyOverride,
  1504. contactPoint = _ref.contactPoint,
  1505. rest = _objectWithoutPropertiesLoose(_ref, _excluded$h);
  1506. var data = _extends({}, rest, {
  1507. contactPoint: contactPoint.map(setContactPoint)
  1508. });
  1509. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1510. type: type,
  1511. keyOverride: keyOverride
  1512. }, data, {
  1513. scriptKey: "CorporateContact"
  1514. }));
  1515. }
  1516. function setCreativeWork(creativeWork) {
  1517. if (creativeWork) {
  1518. return _extends({}, creativeWork, {
  1519. '@type': 'CreativeWork'
  1520. });
  1521. }
  1522. return undefined;
  1523. }
  1524. var _excluded$g = ["type", "keyOverride", "hasPart"];
  1525. function CollectionPageJsonLd(_ref) {
  1526. var _ref$type = _ref.type,
  1527. type = _ref$type === void 0 ? 'CollectionPage' : _ref$type,
  1528. keyOverride = _ref.keyOverride,
  1529. hasPart = _ref.hasPart,
  1530. rest = _objectWithoutPropertiesLoose(_ref, _excluded$g);
  1531. var data = _extends({}, rest, {
  1532. hasPart: hasPart.map(setCreativeWork)
  1533. });
  1534. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1535. type: type,
  1536. keyOverride: keyOverride
  1537. }, data, {
  1538. scriptKey: "CollectionPage"
  1539. }));
  1540. }
  1541. function setManufacturer(manufacturer) {
  1542. if (manufacturer && (manufacturer.manufacturerName || manufacturer.manufacturerLogo)) {
  1543. return {
  1544. '@type': 'Organization',
  1545. name: manufacturer.manufacturerName,
  1546. logo: setImage(manufacturer.manufacturerLogo)
  1547. };
  1548. }
  1549. return undefined;
  1550. }
  1551. function setBrand(brand) {
  1552. if (brand) {
  1553. return {
  1554. '@type': 'Brand',
  1555. name: brand
  1556. };
  1557. }
  1558. return undefined;
  1559. }
  1560. var _excluded$f = ["type", "keyOverride", "images", "brand", "reviews", "aggregateRating", "manufacturerLogo", "manufacturerName", "offers", "aggregateOffer", "productName"];
  1561. function ProductJsonLd(_ref) {
  1562. var _ref$type = _ref.type,
  1563. type = _ref$type === void 0 ? 'Product' : _ref$type,
  1564. keyOverride = _ref.keyOverride,
  1565. images = _ref.images,
  1566. brand = _ref.brand,
  1567. reviews = _ref.reviews,
  1568. aggregateRating = _ref.aggregateRating,
  1569. manufacturerLogo = _ref.manufacturerLogo,
  1570. manufacturerName = _ref.manufacturerName,
  1571. offers = _ref.offers,
  1572. aggregateOffer = _ref.aggregateOffer,
  1573. productName = _ref.productName,
  1574. rest = _objectWithoutPropertiesLoose(_ref, _excluded$f);
  1575. var data = _extends({}, rest, {
  1576. image: images,
  1577. brand: setBrand(brand),
  1578. review: setReviews(reviews),
  1579. aggregateRating: setAggregateRating(aggregateRating),
  1580. manufacturer: setManufacturer({
  1581. manufacturerLogo: manufacturerLogo,
  1582. manufacturerName: manufacturerName
  1583. }),
  1584. offers: offers ? setOffers(offers) : setAggregateOffer(aggregateOffer),
  1585. name: productName
  1586. });
  1587. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1588. type: type,
  1589. keyOverride: keyOverride
  1590. }, data, {
  1591. scriptKey: "Product"
  1592. }));
  1593. }
  1594. var _excluded$e = ["type", "keyOverride", "priceCurrency", "price", "aggregateRating", "review"];
  1595. function SoftwareAppJsonLd(_ref) {
  1596. var _ref$type = _ref.type,
  1597. type = _ref$type === void 0 ? 'SoftwareApplication' : _ref$type,
  1598. keyOverride = _ref.keyOverride,
  1599. priceCurrency = _ref.priceCurrency,
  1600. price = _ref.price,
  1601. aggregateRating = _ref.aggregateRating,
  1602. review = _ref.review,
  1603. rest = _objectWithoutPropertiesLoose(_ref, _excluded$e);
  1604. var data = _extends({}, rest, {
  1605. offers: {
  1606. '@type': 'Offer',
  1607. price: price,
  1608. priceCurrency: priceCurrency
  1609. },
  1610. aggregateRating: setAggregateRating(aggregateRating),
  1611. review: setReviews(review)
  1612. });
  1613. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1614. type: type,
  1615. keyOverride: keyOverride
  1616. }, data, {
  1617. scriptKey: "SoftwareApp"
  1618. }));
  1619. }
  1620. var _excluded$d = ["type", "keyOverride"];
  1621. function VideoJsonLd(_ref) {
  1622. var _ref$type = _ref.type,
  1623. type = _ref$type === void 0 ? 'Video' : _ref$type,
  1624. keyOverride = _ref.keyOverride,
  1625. rest = _objectWithoutPropertiesLoose(_ref, _excluded$d);
  1626. var data = setVideo(rest, true);
  1627. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1628. type: type,
  1629. keyOverride: keyOverride
  1630. }, data, {
  1631. scriptKey: "Video"
  1632. }));
  1633. }
  1634. function setProducer(producer) {
  1635. if (producer) {
  1636. return {
  1637. '@type': 'Organization',
  1638. sameAs: producer.url,
  1639. name: producer.name
  1640. };
  1641. }
  1642. return undefined;
  1643. }
  1644. function setProvider(provider) {
  1645. if (provider) {
  1646. return {
  1647. '@type': provider.type || 'Organization',
  1648. name: provider.name,
  1649. sameAs: provider.url
  1650. };
  1651. }
  1652. return undefined;
  1653. }
  1654. var _excluded$c = ["type", "keyOverride", "aggregateRating", "trailer", "reviews", "image", "authorName", "provider", "producerName", "producerUrl", "offers", "operatingSystemName", "platformName", "translatorName", "languageName", "genreName", "publisherName"];
  1655. function VideoGameJsonLd(_ref) {
  1656. var _ref$type = _ref.type,
  1657. type = _ref$type === void 0 ? 'VideoGame' : _ref$type,
  1658. keyOverride = _ref.keyOverride,
  1659. aggregateRating = _ref.aggregateRating,
  1660. trailer = _ref.trailer,
  1661. reviews = _ref.reviews,
  1662. image = _ref.image,
  1663. authorName = _ref.authorName,
  1664. provider = _ref.provider,
  1665. producerName = _ref.producerName,
  1666. producerUrl = _ref.producerUrl,
  1667. offers = _ref.offers,
  1668. operatingSystemName = _ref.operatingSystemName,
  1669. platformName = _ref.platformName,
  1670. translatorName = _ref.translatorName,
  1671. languageName = _ref.languageName,
  1672. genreName = _ref.genreName,
  1673. publisherName = _ref.publisherName,
  1674. rest = _objectWithoutPropertiesLoose(_ref, _excluded$c);
  1675. var data = _extends({}, rest, {
  1676. aggregateRating: setAggregateRating(aggregateRating),
  1677. trailer: setVideo(trailer),
  1678. review: setReviews(reviews),
  1679. image: setImage(image),
  1680. author: setAuthor(authorName),
  1681. provider: setProvider(provider),
  1682. producer: setProducer({
  1683. name: producerName,
  1684. url: producerUrl
  1685. }),
  1686. offers: setOffers(offers),
  1687. operatingSystem: operatingSystemName,
  1688. gamePlatform: platformName,
  1689. translator: translatorName,
  1690. inLanguage: languageName,
  1691. genre: genreName,
  1692. publisher: publisherName
  1693. });
  1694. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1695. type: type,
  1696. keyOverride: keyOverride
  1697. }, data, {
  1698. scriptKey: "VideoGame"
  1699. }));
  1700. }
  1701. function setContactPoints(contactPoint) {
  1702. if (contactPoint && contactPoint.length) {
  1703. return contactPoint.map(function (contactPoint) {
  1704. return _extends({
  1705. '@type': 'ContactPoint'
  1706. }, contactPoint);
  1707. });
  1708. }
  1709. return undefined;
  1710. }
  1711. var _excluded$b = ["type", "keyOverride", "address", "contactPoints", "contactPoint"];
  1712. function OrganizationJsonLd(_ref) {
  1713. var _ref$type = _ref.type,
  1714. type = _ref$type === void 0 ? 'Organization' : _ref$type,
  1715. keyOverride = _ref.keyOverride,
  1716. address = _ref.address,
  1717. contactPoints = _ref.contactPoints,
  1718. contactPoint = _ref.contactPoint,
  1719. rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
  1720. var data = _extends({}, rest, {
  1721. address: setAddress(address),
  1722. contactPoint: setContactPoints(contactPoint || contactPoints)
  1723. });
  1724. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1725. type: type,
  1726. keyOverride: keyOverride
  1727. }, data, {
  1728. scriptKey: "organization"
  1729. }));
  1730. }
  1731. function setQuestions(questions) {
  1732. if (questions && questions.length) {
  1733. return questions.map(function (question) {
  1734. return {
  1735. '@type': 'Question',
  1736. name: question.questionName,
  1737. acceptedAnswer: {
  1738. '@type': 'Answer',
  1739. text: question.acceptedAnswerText
  1740. }
  1741. };
  1742. });
  1743. }
  1744. return undefined;
  1745. }
  1746. var _excluded$a = ["type", "keyOverride", "mainEntity"];
  1747. function FAQPageJsonLd(_ref) {
  1748. var _ref$type = _ref.type,
  1749. type = _ref$type === void 0 ? 'FAQPage' : _ref$type,
  1750. keyOverride = _ref.keyOverride,
  1751. mainEntity = _ref.mainEntity,
  1752. rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
  1753. var data = _extends({}, rest, {
  1754. mainEntity: setQuestions(mainEntity)
  1755. });
  1756. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1757. type: type,
  1758. keyOverride: keyOverride
  1759. }, data, {
  1760. scriptKey: "faq-page"
  1761. }));
  1762. }
  1763. var _excluded$9 = ["type", "keyOverride"];
  1764. function LogoJsonLd(_ref) {
  1765. var _ref$type = _ref.type,
  1766. type = _ref$type === void 0 ? 'Organization' : _ref$type,
  1767. keyOverride = _ref.keyOverride,
  1768. rest = _objectWithoutPropertiesLoose(_ref, _excluded$9);
  1769. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1770. type: type,
  1771. keyOverride: keyOverride
  1772. }, rest, {
  1773. scriptKey: "Logo"
  1774. }));
  1775. }
  1776. var _excluded$8 = ["type", "keyOverride"];
  1777. function DatasetJsonLd(_ref) {
  1778. var _ref$type = _ref.type,
  1779. type = _ref$type === void 0 ? 'Dataset' : _ref$type,
  1780. keyOverride = _ref.keyOverride,
  1781. rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
  1782. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1783. type: type,
  1784. keyOverride: keyOverride
  1785. }, rest, {
  1786. scriptKey: "dataset"
  1787. }));
  1788. }
  1789. var _excluded$7 = ["type", "keyOverride", "courseName", "provider"];
  1790. function CourseJsonLd(_ref) {
  1791. var _ref$type = _ref.type,
  1792. type = _ref$type === void 0 ? 'Course' : _ref$type,
  1793. keyOverride = _ref.keyOverride,
  1794. courseName = _ref.courseName,
  1795. provider = _ref.provider,
  1796. rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
  1797. var data = _extends({
  1798. name: courseName
  1799. }, rest, {
  1800. provider: setProvider(provider)
  1801. });
  1802. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1803. type: type,
  1804. keyOverride: keyOverride
  1805. }, data, {
  1806. scriptKey: "course"
  1807. }));
  1808. }
  1809. var _excluded$6 = ["type", "keyOverride", "itemListElements"];
  1810. function BreadCrumbJsonLd(_ref) {
  1811. var _ref$type = _ref.type,
  1812. type = _ref$type === void 0 ? 'BreadcrumbList' : _ref$type,
  1813. keyOverride = _ref.keyOverride,
  1814. itemListElements = _ref.itemListElements,
  1815. rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
  1816. var data = _extends({}, rest, {
  1817. itemListElement: setItemListElements(itemListElements)
  1818. });
  1819. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1820. type: type,
  1821. keyOverride: keyOverride
  1822. }, data, {
  1823. scriptKey: "breadcrumb"
  1824. }));
  1825. }
  1826. var _excluded$5 = ["type", "id", "keyOverride", "aggregateRating"];
  1827. function BrandJsonLd(_ref) {
  1828. var _ref$type = _ref.type,
  1829. type = _ref$type === void 0 ? 'Brand' : _ref$type,
  1830. id = _ref.id,
  1831. keyOverride = _ref.keyOverride,
  1832. aggregateRating = _ref.aggregateRating,
  1833. rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
  1834. var data = _extends({
  1835. aggregateRating: setAggregateRating(aggregateRating),
  1836. '@id': id
  1837. }, rest);
  1838. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1839. type: type,
  1840. keyOverride: keyOverride
  1841. }, data, {
  1842. scriptKey: "brand"
  1843. }));
  1844. }
  1845. var _excluded$4 = ["type", "keyOverride", "url", "title", "images", "datePublished", "dateModified", "authorName", "publisherName", "publisherLogo", "description", "isAccessibleForFree"];
  1846. function ArticleJsonLd(_ref) {
  1847. var _ref$type = _ref.type,
  1848. type = _ref$type === void 0 ? 'Article' : _ref$type,
  1849. keyOverride = _ref.keyOverride,
  1850. url = _ref.url,
  1851. title = _ref.title,
  1852. images = _ref.images,
  1853. datePublished = _ref.datePublished,
  1854. dateModified = _ref.dateModified,
  1855. authorName = _ref.authorName,
  1856. _ref$publisherName = _ref.publisherName,
  1857. publisherName = _ref$publisherName === void 0 ? undefined : _ref$publisherName,
  1858. _ref$publisherLogo = _ref.publisherLogo,
  1859. publisherLogo = _ref$publisherLogo === void 0 ? undefined : _ref$publisherLogo,
  1860. description = _ref.description,
  1861. isAccessibleForFree = _ref.isAccessibleForFree,
  1862. rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
  1863. var data = _extends({
  1864. datePublished: datePublished,
  1865. description: description,
  1866. mainEntityOfPage: {
  1867. '@type': 'WebPage',
  1868. '@id': url
  1869. },
  1870. headline: title,
  1871. image: images,
  1872. dateModified: dateModified || datePublished,
  1873. author: setAuthor(authorName),
  1874. publisher: setPublisher(publisherName, publisherLogo),
  1875. isAccessibleForFree: isAccessibleForFree
  1876. }, rest);
  1877. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1878. type: type,
  1879. keyOverride: keyOverride
  1880. }, data, {
  1881. scriptKey: "article"
  1882. }));
  1883. }
  1884. function setReviewedBy(reviewedBy) {
  1885. if (reviewedBy) {
  1886. return _extends({
  1887. '@type': (reviewedBy == null ? void 0 : reviewedBy.type) || 'Organization'
  1888. }, reviewedBy);
  1889. }
  1890. return undefined;
  1891. }
  1892. var _excluded$3 = ["keyOverride", "reviewedBy"];
  1893. function WebPageJsonLd(_ref) {
  1894. var keyOverride = _ref.keyOverride,
  1895. reviewedBy = _ref.reviewedBy,
  1896. rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
  1897. var data = _extends({}, rest, {
  1898. reviewedBy: setReviewedBy(reviewedBy)
  1899. });
  1900. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1901. keyOverride: keyOverride
  1902. }, data, {
  1903. type: "WebPage",
  1904. scriptKey: "WebPage"
  1905. }));
  1906. }
  1907. var _excluded$2 = ["type", "keyOverride"];
  1908. function SocialProfileJsonLd(_ref) {
  1909. var type = _ref.type,
  1910. keyOverride = _ref.keyOverride,
  1911. rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
  1912. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1913. type: type,
  1914. keyOverride: keyOverride
  1915. }, rest, {
  1916. scriptKey: "social"
  1917. }));
  1918. }
  1919. function setCost(cost) {
  1920. if (cost) {
  1921. return _extends({}, cost, {
  1922. '@type': 'MonetaryAmount'
  1923. });
  1924. }
  1925. return undefined;
  1926. }
  1927. function setSupply(supply) {
  1928. if (supply) {
  1929. return supply.map(function (supplyItem) {
  1930. return {
  1931. '@type': 'HowToSupply',
  1932. name: supplyItem
  1933. };
  1934. });
  1935. }
  1936. return undefined;
  1937. }
  1938. function setTool(tool) {
  1939. if (tool) {
  1940. return tool.map(function (toolItem) {
  1941. return {
  1942. '@type': 'HowToTool',
  1943. name: toolItem
  1944. };
  1945. });
  1946. }
  1947. return undefined;
  1948. }
  1949. function setStep(step) {
  1950. if (step) {
  1951. return step.map(function (stepElement) {
  1952. var itemListElement = stepElement.itemListElement,
  1953. image = stepElement.image;
  1954. var currentListElements = itemListElement == null ? void 0 : itemListElement.map(function (_ref) {
  1955. var type = _ref.type,
  1956. text = _ref.text;
  1957. return {
  1958. '@type': type,
  1959. text: text
  1960. };
  1961. });
  1962. return _extends({}, stepElement, {
  1963. '@type': 'HowToStep',
  1964. itemListElement: currentListElements,
  1965. image: setImage(image)
  1966. });
  1967. });
  1968. }
  1969. return undefined;
  1970. }
  1971. var _excluded$1 = ["type", "keyOverride", "image", "estimatedCost", "supply", "tool", "step"];
  1972. function howToJsonLd(_ref) {
  1973. var _ref$type = _ref.type,
  1974. type = _ref$type === void 0 ? 'HowTo' : _ref$type,
  1975. keyOverride = _ref.keyOverride,
  1976. image = _ref.image,
  1977. estimatedCost = _ref.estimatedCost,
  1978. supply = _ref.supply,
  1979. tool = _ref.tool,
  1980. step = _ref.step,
  1981. rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
  1982. var data = _extends({}, rest, {
  1983. image: setImage(image),
  1984. estimatedCost: setCost(estimatedCost),
  1985. supply: setSupply(supply),
  1986. tool: setTool(tool),
  1987. step: setStep(step)
  1988. });
  1989. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({
  1990. type: type,
  1991. keyOverride: keyOverride
  1992. }, data, {
  1993. scriptKey: "howTo"
  1994. }));
  1995. }
  1996. var _excluded = ["keyOverride", "images"];
  1997. function ImageJsonLd(_ref) {
  1998. var keyOverride = _ref.keyOverride,
  1999. images = _ref.images,
  2000. rest = _objectWithoutPropertiesLoose(_ref, _excluded);
  2001. return /*#__PURE__*/React__default["default"].createElement(JsonLd, _extends({}, rest, {
  2002. type: "ImageObject",
  2003. keyOverride: keyOverride,
  2004. dataArray: images,
  2005. scriptKey: "image"
  2006. }));
  2007. }
  2008. exports.ArticleJsonLd = ArticleJsonLd;
  2009. exports.BrandJsonLd = BrandJsonLd;
  2010. exports.BreadcrumbJsonLd = BreadCrumbJsonLd;
  2011. exports.CarouselJsonLd = CarouselJsonLd;
  2012. exports.CollectionPageJsonLd = CollectionPageJsonLd;
  2013. exports.CorporateContactJsonLd = CorporateContactJsonLd;
  2014. exports.CourseJsonLd = CourseJsonLd;
  2015. exports.DatasetJsonLd = DatasetJsonLd;
  2016. exports.DefaultSeo = DefaultSeo;
  2017. exports.EventJsonLd = EventJsonLd;
  2018. exports.FAQPageJsonLd = FAQPageJsonLd;
  2019. exports.HowToJsonLd = howToJsonLd;
  2020. exports.ImageJsonLd = ImageJsonLd;
  2021. exports.JobPostingJsonLd = JobPostingJsonLd;
  2022. exports.LocalBusinessJsonLd = LocalBusinessJsonLd;
  2023. exports.LogoJsonLd = LogoJsonLd;
  2024. exports.NewsArticleJsonLd = NewsArticleJsonLd;
  2025. exports.NextSeo = NextSeo;
  2026. exports.OrganizationJsonLd = OrganizationJsonLd;
  2027. exports.ProductJsonLd = ProductJsonLd;
  2028. exports.ProfilePageJsonLd = ProfilePageJsonLd;
  2029. exports.QAPageJsonLd = QAPageJsonLd;
  2030. exports.RecipeJsonLd = RecipeJsonLd;
  2031. exports.SiteLinksSearchBoxJsonLd = SiteLinksSearchBoxJsonLd;
  2032. exports.SocialProfileJsonLd = SocialProfileJsonLd;
  2033. exports.SoftwareAppJsonLd = SoftwareAppJsonLd;
  2034. exports.VideoGameJsonLd = VideoGameJsonLd;
  2035. exports.VideoJsonLd = VideoJsonLd;
  2036. exports.WebPageJsonLd = WebPageJsonLd;
  2037. }));