@mjhls/mjh-framework 1.0.594 → 1.0.597

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/README.md +172 -172
  2. package/dist/cjs/AD.js +1 -1
  3. package/dist/cjs/AD300x250.js +3 -3
  4. package/dist/cjs/AD300x250x600.js +3 -3
  5. package/dist/cjs/AD728x90.js +4 -4
  6. package/dist/cjs/ADFloatingFooter.js +5 -5
  7. package/dist/cjs/ADGutter.js +2 -2
  8. package/dist/cjs/ADSkyscraper.js +2 -2
  9. package/dist/cjs/ADSponsoredResources.js +2 -2
  10. package/dist/cjs/ADWebcast.js +2 -2
  11. package/dist/cjs/ADWelcome.js +2 -2
  12. package/dist/cjs/AdSlot.js +2 -2
  13. package/dist/cjs/AdSlotsProvider.js +1 -1
  14. package/dist/cjs/ArticleQueue.js +298 -28
  15. package/dist/cjs/Auth.js +256 -507
  16. package/dist/cjs/{AuthorComponent-cb8b8128.js → AuthorComponent-3c79e1ab.js} +2 -2
  17. package/dist/cjs/{BlockContent-f942392e.js → BlockContent-77f81ffc.js} +1 -1
  18. package/dist/cjs/CMEDeck.js +5 -5
  19. package/dist/cjs/Column3.js +4 -4
  20. package/dist/cjs/ConferenceArticleCard.js +17 -17
  21. package/dist/cjs/DeckContent.js +16 -16
  22. package/dist/cjs/DeckQueue.js +7 -7
  23. package/dist/cjs/{Dfp-fbe32b96.js → Dfp-fcdeabc4.js} +1 -1
  24. package/dist/cjs/EventsDeck.js +22 -22
  25. package/dist/cjs/ExternalResources.js +7 -7
  26. package/dist/cjs/Feature.js +3 -3
  27. package/dist/cjs/ForbesHero.js +3 -3
  28. package/dist/cjs/GridContent.js +12 -12
  29. package/dist/cjs/GridHero.js +3 -3
  30. package/dist/cjs/GroupDeck.js +5 -5
  31. package/dist/cjs/HamMagazine.js +11 -11
  32. package/dist/cjs/Hero.js +1 -1
  33. package/dist/cjs/HorizontalHero.js +2 -2
  34. package/dist/cjs/InscreenSensor-22a96661.js +85 -0
  35. package/dist/cjs/IssueContentDeck.js +3 -3
  36. package/dist/cjs/IssueDeck.js +2 -2
  37. package/dist/cjs/IssueLanding.js +37 -37
  38. package/dist/cjs/KMTracker.js +15 -15
  39. package/dist/cjs/LeftNav.js +2 -2
  40. package/dist/cjs/MasterDeck.js +17 -17
  41. package/dist/cjs/NavMagazine.js +12 -12
  42. package/dist/cjs/NavNative.js +11 -11
  43. package/dist/cjs/OncliveHero.js +2 -2
  44. package/dist/cjs/OncliveLargeHero.js +3 -3
  45. package/dist/cjs/PartnerDetailListing.js +1307 -30
  46. package/dist/cjs/PublicationDeck.js +1 -1
  47. package/dist/cjs/PublicationLanding.js +33 -33
  48. package/dist/cjs/QueueDeckExpanded.js +10 -10
  49. package/dist/cjs/RecentNews.js +93 -0
  50. package/dist/cjs/RelatedContent.js +30 -30
  51. package/dist/cjs/RelatedTopicsDropdown.js +10 -10
  52. package/dist/cjs/SideFooter.js +2 -2
  53. package/dist/cjs/TaxonomyCard.js +2 -2
  54. package/dist/cjs/TemplateNormal.js +2 -2
  55. package/dist/cjs/ThumbnailCard.js +1 -1
  56. package/dist/cjs/Ustream.js +2 -2
  57. package/dist/cjs/VerticalHero.js +2 -2
  58. package/dist/cjs/VideoSeriesFilter.js +1 -1
  59. package/dist/cjs/VideoSeriesListing.js +5 -5
  60. package/dist/cjs/View.js +259 -88
  61. package/dist/cjs/YahooHero.js +3 -3
  62. package/dist/cjs/YoutubeGroup.js +5 -5
  63. package/dist/cjs/getQuery.js +2 -4
  64. package/dist/cjs/getRelatedArticle.js +358 -11
  65. package/dist/cjs/getSerializers.js +6 -6
  66. package/dist/cjs/{getTargeting-b15993cb.js → getTargeting-3d208b98.js} +11 -11
  67. package/dist/cjs/getTargeting.js +1 -1
  68. package/dist/cjs/{index-5be2866f.js → index-3294d3bc.js} +1 -1
  69. package/dist/cjs/index-bd6c9f56.js +211 -0
  70. package/dist/cjs/{index-b5eb3ff8.js → index-be0c82be.js} +19 -20
  71. package/dist/cjs/{index-e7f86168.js → index-c4972b44.js} +441 -453
  72. package/dist/cjs/{index-f7ee1612.js → index-fa3cec70.js} +6 -4
  73. package/dist/cjs/{index.es-ab3f2690.js → index.es-9110add6.js} +1 -3
  74. package/dist/cjs/index.js +17 -18
  75. package/dist/cjs/{inherits-93684212.js → inherits-14962339.js} +4 -4
  76. package/dist/cjs/{main-bc4db521.js → main-88348b15.js} +35 -66
  77. package/dist/cjs/{moment-66a6a284.js → moment-575fe24c.js} +1 -1
  78. package/dist/cjs/urlFor.js +2 -2
  79. package/dist/esm/AD.js +1 -1
  80. package/dist/esm/AD300x250.js +5 -5
  81. package/dist/esm/AD300x250x600.js +5 -5
  82. package/dist/esm/AD728x90.js +6 -6
  83. package/dist/esm/ADFloatingFooter.js +7 -7
  84. package/dist/esm/ADGutter.js +4 -4
  85. package/dist/esm/ADSkyscraper.js +4 -4
  86. package/dist/esm/ADSponsoredResources.js +4 -4
  87. package/dist/esm/ADWebcast.js +4 -4
  88. package/dist/esm/ADWelcome.js +4 -4
  89. package/dist/esm/AdSlot.js +4 -4
  90. package/dist/esm/AdSlotsProvider.js +1 -1
  91. package/dist/esm/ArticleQueue.js +296 -26
  92. package/dist/esm/Auth.js +248 -499
  93. package/dist/esm/{AuthorComponent-158226c9.js → AuthorComponent-357dbee9.js} +2 -2
  94. package/dist/esm/{BlockContent-a614acdf.js → BlockContent-e9b4ddcf.js} +1 -1
  95. package/dist/esm/CMEDeck.js +7 -7
  96. package/dist/esm/Column2.js +3 -3
  97. package/dist/esm/Column3.js +8 -8
  98. package/dist/esm/ConferenceArticleCard.js +17 -17
  99. package/dist/esm/DeckContent.js +17 -17
  100. package/dist/esm/DeckQueue.js +10 -10
  101. package/dist/esm/{Dfp-ae9336e2.js → Dfp-a36ad202.js} +3 -3
  102. package/dist/esm/EventsDeck.js +22 -22
  103. package/dist/esm/ExternalResources.js +9 -9
  104. package/dist/esm/Feature.js +3 -3
  105. package/dist/esm/ForbesHero.js +3 -3
  106. package/dist/esm/GridContent.js +15 -15
  107. package/dist/esm/GridHero.js +3 -3
  108. package/dist/esm/GroupDeck.js +5 -5
  109. package/dist/esm/HamMagazine.js +11 -11
  110. package/dist/esm/Hero.js +1 -1
  111. package/dist/esm/HorizontalHero.js +2 -2
  112. package/dist/esm/InscreenSensor-beb2ec79.js +80 -0
  113. package/dist/esm/IssueContentDeck.js +3 -3
  114. package/dist/esm/IssueDeck.js +2 -2
  115. package/dist/esm/IssueLanding.js +39 -39
  116. package/dist/esm/KMTracker.js +15 -15
  117. package/dist/esm/LeftNav.js +4 -4
  118. package/dist/esm/MasterDeck.js +18 -18
  119. package/dist/esm/NavMagazine.js +12 -12
  120. package/dist/esm/NavNative.js +11 -11
  121. package/dist/esm/OncliveHero.js +2 -2
  122. package/dist/esm/OncliveLargeHero.js +3 -3
  123. package/dist/esm/PartnerDetailListing.js +1307 -30
  124. package/dist/esm/PublicationDeck.js +1 -1
  125. package/dist/esm/PublicationLanding.js +33 -33
  126. package/dist/esm/QueueDeckExpanded.js +12 -12
  127. package/dist/esm/RecentNews.js +88 -0
  128. package/dist/esm/RelatedContent.js +30 -30
  129. package/dist/esm/RelatedTopicsDropdown.js +10 -10
  130. package/dist/esm/SideFooter.js +5 -5
  131. package/dist/esm/TaxonomyCard.js +2 -2
  132. package/dist/esm/TemplateNormal.js +6 -6
  133. package/dist/esm/ThumbnailCard.js +1 -1
  134. package/dist/esm/Ustream.js +2 -2
  135. package/dist/esm/VerticalHero.js +2 -2
  136. package/dist/esm/VideoSeriesFilter.js +1 -1
  137. package/dist/esm/VideoSeriesListing.js +6 -6
  138. package/dist/esm/View.js +237 -66
  139. package/dist/esm/YahooHero.js +3 -3
  140. package/dist/esm/YoutubeGroup.js +5 -5
  141. package/dist/esm/{_arrayMap-64cbe0e4.js → _arrayMap-818441dd.js} +1 -1
  142. package/dist/esm/{debounce-048d9cb6.js → debounce-a0d9abca.js} +1 -1
  143. package/dist/esm/{get-0eb56363.js → get-58d2f7cc.js} +2 -2
  144. package/dist/esm/getQuery.js +2 -4
  145. package/dist/esm/getRelatedArticle.js +358 -11
  146. package/dist/esm/getSerializers.js +8 -8
  147. package/dist/esm/{getTargeting-1a0bd08d.js → getTargeting-1f2c61e3.js} +9 -9
  148. package/dist/esm/getTargeting.js +1 -1
  149. package/dist/esm/{index-93ec3c59.js → index-3f4dd6f2.js} +6 -4
  150. package/dist/esm/{index-51a80699.js → index-73819142.js} +19 -20
  151. package/dist/esm/{index-80cb5ee6.js → index-7ca90052.js} +441 -453
  152. package/dist/esm/index-db3bb315.js +207 -0
  153. package/dist/esm/{index-d2f90501.js → index-ef6d5dcf.js} +1 -1
  154. package/dist/esm/{index.es-938a3a58.js → index.es-29c1cef5.js} +1 -3
  155. package/dist/esm/index.js +19 -20
  156. package/dist/esm/{isSymbol-b7b7434f.js → isSymbol-47f5ff3b.js} +1 -1
  157. package/dist/esm/{main-7255814e.js → main-d7ee6151.js} +34 -65
  158. package/dist/esm/{moment-12415288.js → moment-e2f9b20c.js} +1 -1
  159. package/dist/esm/urlFor.js +2 -2
  160. package/package.json +107 -107
  161. package/dist/cjs/InscreenSensor-e7f3579f.js +0 -361
  162. package/dist/esm/InscreenSensor-280b2b10.js +0 -352
  163. /package/dist/cjs/{ADInfeed-17a378db.js → ADInfeed-df340285.js} +0 -0
  164. /package/dist/cjs/{ADlgInfeed-070d911c.js → ADlgInfeed-2110d08c.js} +0 -0
  165. /package/dist/esm/{ADInfeed-c7dba95f.js → ADInfeed-a5a1f81f.js} +0 -0
  166. /package/dist/esm/{ADlgInfeed-8bfd6d58.js → ADlgInfeed-99f14909.js} +0 -0
package/dist/esm/View.js CHANGED
@@ -13,19 +13,19 @@ import './web.dom.iterable-46c95e52.js';
13
13
  import { _ as _typeof } from './typeof-5f046efd.js';
14
14
  import './_is-array-dd5523d6.js';
15
15
  import React__default, { useState, useEffect } from 'react';
16
- import { l as lib_3 } from './index-93ec3c59.js';
16
+ import { l as lib_3 } from './index-3f4dd6f2.js';
17
17
  import 'prop-types';
18
18
  import 'react-bootstrap/Row';
19
19
  import 'react-bootstrap/Col';
20
- import { m as moment } from './moment-12415288.js';
20
+ import { m as moment } from './moment-e2f9b20c.js';
21
21
  import { useRouter } from 'next/router';
22
- import './isSymbol-b7b7434f.js';
23
- import './debounce-048d9cb6.js';
24
- import { I as InfiniteScroll } from './index.es-938a3a58.js';
22
+ import './isSymbol-47f5ff3b.js';
23
+ import './debounce-a0d9abca.js';
24
+ import { I as InfiniteScroll } from './index.es-29c1cef5.js';
25
25
  import 'react-dom';
26
- import './index-51a80699.js';
26
+ import './index-73819142.js';
27
27
  import './index-5f9f807a.js';
28
- import { m as main_39 } from './main-7255814e.js';
28
+ import { m as main_36 } from './main-d7ee6151.js';
29
29
  import './entities-7cc3bf45.js';
30
30
  import { a as _getIterator, _ as _slicedToArray } from './slicedToArray-f1e40361.js';
31
31
  import { _ as _JSON$stringify } from './stringify-e30bc114.js';
@@ -34,12 +34,13 @@ import './_set-species-6f64f1c1.js';
34
34
  import './beam-a25bd8fd.js';
35
35
  import DFPAdSlot from './AdSlot.js';
36
36
  import './lodash-17fdfebb.js';
37
- import { B as BlockContent } from './BlockContent-a614acdf.js';
37
+ import { A as AuthorComponent } from './AuthorComponent-357dbee9.js';
38
+ import { B as BlockContent } from './BlockContent-e9b4ddcf.js';
38
39
  import './smoothscroll-4b699764.js';
39
40
  import './GroupDeck.js';
40
41
  import 'react-bootstrap';
41
42
  import Button from 'react-bootstrap/Button';
42
- import { r as renderAuthor, g as getSerializers } from './index-80cb5ee6.js';
43
+ import { r as renderAuthor, g as getSerializers } from './index-7ca90052.js';
43
44
  import './util-7700fc59.js';
44
45
  import './brightcove-react-player-loader.es-83f53e4e.js';
45
46
  import 'react-bootstrap/Pagination';
@@ -49,14 +50,14 @@ import SocialShare from './SocialShare.js';
49
50
  import Form from 'react-bootstrap/Form';
50
51
  import FormControl from 'react-bootstrap/FormControl';
51
52
  import { _ as _Object$keys } from './keys-04cdec91.js';
52
- import Dropdown from 'react-bootstrap/Dropdown';
53
- import { I as InscreenSensor } from './InscreenSensor-280b2b10.js';
53
+ import 'react-bootstrap/Dropdown';
54
+ import { I as InscreenSensor } from './InscreenSensor-beb2ec79.js';
54
55
  import getKeywords from './getKeywords.js';
55
56
  import getSeriesDetail from './getSeriesDetail.js';
56
- import 'nookies';
57
- import getQuery from './getQuery.js';
57
+ import './index-db3bb315.js';
58
58
  import getRelatedArticle from './getRelatedArticle.js';
59
- import { g as getTargeting, a as getContentPlacementUrl } from './getTargeting-1a0bd08d.js';
59
+ import getQuery from './getQuery.js';
60
+ import { g as getTargeting, a as getContentPlacementUrl } from './getTargeting-1f2c61e3.js';
60
61
  import urlFor from './urlFor.js';
61
62
 
62
63
  var getArticleSummary = function getArticleSummary(article) {
@@ -133,9 +134,9 @@ var DocumentGroup = function DocumentGroup(_ref) {
133
134
  style: { display: 'flex', flexDirection: 'column', padding: '0 1rem', justifyContent: thumbnailUrl ? 'center' : 'flex-start', alignItems: 'center' } },
134
135
  thumbnailUrl && React__default.createElement('img', { style: { maxWidth: '220px', maxHeight: '100px', marginTop: '1rem' }, src: thumbnailUrl, alt: name }),
135
136
  !thumbnailUrl && React__default.createElement('p', {
136
- style: { maxWidth: '315px', margin: '0', color: 'var(--primary)', textAlign: thumbnailUrl ? 'center' : main_39 ? 'left' : 'right', marginTop: '.25rem' },
137
+ style: { maxWidth: '315px', margin: '0', color: 'var(--primary)', textAlign: thumbnailUrl ? 'center' : main_36 ? 'left' : 'right', marginTop: '.25rem' },
137
138
  dangerouslySetInnerHTML: { __html: name } }),
138
- main_39 && !thumbnailUrl && React__default.createElement(
139
+ main_36 && !thumbnailUrl && React__default.createElement(
139
140
  'style',
140
141
  { jsx: 'true' },
141
142
  '\n a.doc-group {\n display: block !important;\n padding: 0!important;\n }\n '
@@ -180,6 +181,89 @@ var findIndex = function findIndex(arr) {
180
181
  return indexes;
181
182
  };
182
183
 
184
+ function styleInject(css, ref) {
185
+ if ( ref === void 0 ) ref = {};
186
+ var insertAt = ref.insertAt;
187
+
188
+ if (!css || typeof document === 'undefined') { return; }
189
+
190
+ var head = document.head || document.getElementsByTagName('head')[0];
191
+ var style = document.createElement('style');
192
+ style.type = 'text/css';
193
+
194
+ if (insertAt === 'top') {
195
+ if (head.firstChild) {
196
+ head.insertBefore(style, head.firstChild);
197
+ } else {
198
+ head.appendChild(style);
199
+ }
200
+ } else {
201
+ head.appendChild(style);
202
+ }
203
+
204
+ if (style.styleSheet) {
205
+ style.styleSheet.cssText = css;
206
+ } else {
207
+ style.appendChild(document.createTextNode(css));
208
+ }
209
+ }
210
+
211
+ var css = ".RelatedArticles-module_mediaCard__3wQbn {\n display: flex;\n flex-direction: row;\n margin-bottom: .75rem;\n padding-bottom: .75rem;\n border-bottom: none;\n}\n.RelatedArticles-module_mediaCard__3wQbn:last-child {\n border-bottom: none;\n}\n.RelatedArticles-module_cardTitle__3P-Ib {\n font-weight: bold;\n color: #252525;\n margin-bottom: 0.25rem;\n font-size: 19px;\n}\n.RelatedArticles-module_authorListing__1EFg4 span.RelatedArticles-module_text-muted__3b0zX {\n color: #000;\n font-weight: bold;\n}\n.RelatedArticles-module_cardDate__1wOR5 {\n color: var(--dark);\n display: block;\n background: #fff!important;\n margin-bottom: 0;\n}\n.RelatedArticles-module_mediaCard__3wQbn a img {\n width: 175px;\n min-width: 175px;\n height: auto;\n object-fit: contain;\n}\n@media screen and (max-width: 1064px) {\n .RelatedArticles-module_cardTitle__3P-Ib {\n font-size: 1.1rem;\n }\n}\n@media screen and (max-width: 768px) {\n .RelatedArticles-module_mediaCard__3wQbn {\n flex-direction: column;\n }\n .RelatedArticles-module_mediaCard__3wQbn a img {\n width: 100%;\n height: auto;\n max-height: 175px;\n object-fit: contain;\n margin-bottom: 1rem;\n }\n}";
212
+ var styles = { "mediaCard": "RelatedArticles-module_mediaCard__3wQbn", "cardTitle": "RelatedArticles-module_cardTitle__3P-Ib", "authorListing": "RelatedArticles-module_authorListing__1EFg4", "text-muted": "RelatedArticles-module_text-muted__3b0zX", "cardDate": "RelatedArticles-module_cardDate__1wOR5" };
213
+ styleInject(css);
214
+
215
+ var RelatedArticle = function RelatedArticle(_ref) {
216
+ var articles = _ref.articles,
217
+ client = _ref.client;
218
+
219
+ if (!articles || articles.length == 0 || !articles[0]) {
220
+ return null;
221
+ }
222
+ return React__default.createElement(
223
+ 'div',
224
+ null,
225
+ articles.map(function (article, index) {
226
+ return React__default.createElement(
227
+ 'div',
228
+ { id: 'related-card', key: index, className: styles.mediaCard },
229
+ React__default.createElement(
230
+ 'a',
231
+ { className: styles.imgWrapper, href: '/view/' + (article.url ? article.url.current : '') },
232
+ article.thumbnail && React__default.createElement('img', {
233
+ style: { maxHeight: '135px', objectFit: 'cover', objectPosition: 'center' },
234
+ className: 'mr-3 img-fluid',
235
+ src: article.thumbnail && urlFor(client, article.thumbnail.asset).width(250).url(),
236
+ alt: article.title
237
+ })
238
+ ),
239
+ React__default.createElement(
240
+ 'div',
241
+ { className: styles.mediaBody },
242
+ React__default.createElement(
243
+ 'a',
244
+ { href: '/view/' + (article.url ? article.url.current : '') },
245
+ React__default.createElement(
246
+ 'h4',
247
+ { className: styles.cardTitle },
248
+ article.title
249
+ )
250
+ ),
251
+ React__default.createElement(
252
+ 'span',
253
+ { className: styles.cardDate },
254
+ moment(article.published).format('MMMM Do YYYY, h:mma')
255
+ ),
256
+ article.authorDetails && article.authorDetails.length > 0 && React__default.createElement(
257
+ 'div',
258
+ { className: 'author-listing' },
259
+ React__default.createElement(AuthorComponent, { index: index, authors: article.authorDetails })
260
+ )
261
+ )
262
+ );
263
+ })
264
+ );
265
+ };
266
+
183
267
  var Article = function Article(props) {
184
268
  var onVote = function () {
185
269
  var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(nodeKey, selectedChoice) {
@@ -232,7 +316,8 @@ var Article = function Article(props) {
232
316
  }();
233
317
 
234
318
  var article = props.article,
235
- Ads = props.Ads;
319
+ Ads = props.Ads,
320
+ showRelatedArticles = props.showRelatedArticles;
236
321
  var client = props.client,
237
322
  pageview = props.pageview,
238
323
  videoAccountIDs = props.videoAccountIDs,
@@ -276,6 +361,7 @@ var Article = function Article(props) {
276
361
  if (sponsoredFlag) {
277
362
  article.contextualVideoAD = false;
278
363
  article.contextualAD = false;
364
+ showRelatedArticles = false;
279
365
  }
280
366
  //This was being done in ArticleQueue2 which wasnt effecting articles excluded from infinite scroll, moved inside article component
281
367
  if (!sponsoredFlag && Ads.getVideoContextualAD) {
@@ -342,34 +428,55 @@ var Article = function Article(props) {
342
428
  return null;
343
429
  };
344
430
 
345
- var renderRelevantTopicsDropdown = function renderRelevantTopicsDropdown() {
431
+ var RelevantTopics = function RelevantTopics() {
346
432
  if (content_placement && content_placement.length > 0 || documentGroup) {
347
433
  return React__default.createElement(
348
- Dropdown,
349
- null,
434
+ 'div',
435
+ { style: { color: '#262626' } },
350
436
  React__default.createElement(
351
- Dropdown.Toggle,
352
- { variant: 'primary', id: 'partner-dropdown' },
353
- 'Relevant Topics'
437
+ 'p',
438
+ { className: 'mb-0' },
439
+ React__default.createElement(
440
+ 'b',
441
+ null,
442
+ 'Related Content:'
443
+ )
354
444
  ),
355
- React__default.createElement(
356
- Dropdown.Menu,
445
+ documentGroup && documentGroup.parent && React__default.createElement(
446
+ React__default.Fragment,
357
447
  null,
358
- documentGroup && documentGroup.parent && React__default.createElement(
359
- Dropdown.Item,
360
- { href: cpModificationRequired ? '/' + documentGroup.parent.identifier.current + '/' + documentGroup.path : '/' + documentGroup.path },
361
- documentGroup.name
448
+ React__default.createElement(
449
+ 'span',
450
+ { className: '' },
451
+ React__default.createElement(
452
+ 'a',
453
+ {
454
+ className: 'related-links',
455
+ style: { color: 'blue' },
456
+ href: cpModificationRequired ? '/' + documentGroup.parent.identifier.current + '/' + documentGroup.path : '/' + documentGroup.path },
457
+ documentGroup.name
458
+ )
362
459
  ),
363
- content_placement && content_placement.length > 0 ? content_placement.map(function (cp, index) {
364
- var cp_url = cpModificationRequired ? getContentPlacementUrl(cp) : cp.path;
365
- var href = '/' + cp_url;
366
- return React__default.createElement(
367
- Dropdown.Item,
368
- { key: index, href: href },
369
- cp.name
370
- );
371
- }) : null
372
- )
460
+ content_placement && content_placement.length ? ' | ' : null
461
+ ),
462
+ content_placement && content_placement.length > 0 ? content_placement.map(function (cp, index) {
463
+ var cp_url = cpModificationRequired ? getContentPlacementUrl(cp) : cp.path;
464
+ var href = '/' + cp_url;
465
+ return React__default.createElement(
466
+ React__default.Fragment,
467
+ { key: index },
468
+ React__default.createElement(
469
+ 'span',
470
+ null,
471
+ React__default.createElement(
472
+ 'a',
473
+ { className: 'related-links', key: index, href: href, style: { color: 'blue' } },
474
+ cp.name
475
+ )
476
+ ),
477
+ content_placement.length > index + 1 ? ' | ' : null
478
+ );
479
+ }) : null
373
480
  );
374
481
  }
375
482
  return null;
@@ -661,7 +768,7 @@ var Article = function Article(props) {
661
768
  ),
662
769
  React__default.createElement(
663
770
  'div',
664
- { className: 'mb-4 doc-group-container', style: { display: 'flex', justifyContent: 'space-between', alignItems: 'flex-end' } },
771
+ { className: 'mb-3 doc-group-container', style: { display: 'flex', justifyContent: 'space-between', alignItems: 'flex-end' } },
665
772
  React__default.createElement(
666
773
  'style',
667
774
  { jsx: 'true' },
@@ -708,6 +815,23 @@ var Article = function Article(props) {
708
815
  issue && React__default.createElement(
709
816
  'div',
710
817
  { className: 'volume-issue' },
818
+ issue.publication && issue.publication.name && React__default.createElement(
819
+ 'span',
820
+ { className: 'mb-0' },
821
+ React__default.createElement(
822
+ 'b',
823
+ null,
824
+ issue.publication.name
825
+ ),
826
+ ',',
827
+ ' '
828
+ ),
829
+ issue.name && React__default.createElement(
830
+ 'span',
831
+ { className: 'mb-0' },
832
+ issue.name,
833
+ ', '
834
+ ),
711
835
  issue.volume && React__default.createElement(
712
836
  'span',
713
837
  null,
@@ -741,8 +865,7 @@ var Article = function Article(props) {
741
865
  twitterSiteName: twitterSiteName,
742
866
  disableMeta: true
743
867
  })
744
- ),
745
- renderRelevantTopicsDropdown()
868
+ )
746
869
  ),
747
870
  React__default.createElement(
748
871
  'div',
@@ -762,7 +885,7 @@ var Article = function Article(props) {
762
885
  React__default.createElement(
763
886
  'div',
764
887
  { className: 'ad-box', style: { textAlign: 'center' } },
765
- main_39 && !sponsoredFlag && props.article.Ads && props.article.Ads.length > 0 && props.article.Ads.map(function (ad, index) {
888
+ main_36 && !sponsoredFlag && props.article.Ads && props.article.Ads.length > 0 && props.article.Ads.map(function (ad, index) {
766
889
  if (index === 0) {
767
890
  return React__default.createElement(
768
891
  'div',
@@ -785,6 +908,7 @@ var Article = function Article(props) {
785
908
  'div',
786
909
  { className: 'block-content mt-3' },
787
910
  renderBlockContent(article),
911
+ React__default.createElement('div', { className: 'clearfix' }),
788
912
  React__default.createElement(
789
913
  'noscript',
790
914
  null,
@@ -812,12 +936,23 @@ var Article = function Article(props) {
812
936
  'Download Issue : ',
813
937
  issue.name
814
938
  )
939
+ ),
940
+ React__default.createElement('div', { className: 'clearfix', style: { minHeight: '1px' } }),
941
+ React__default.createElement(
942
+ 'div',
943
+ null,
944
+ React__default.createElement(RelevantTopics, null)
945
+ ),
946
+ showRelatedArticles && React__default.createElement(
947
+ 'div',
948
+ { className: 'pt-2', style: { borderTop: '1px solid #eee' } },
949
+ React__default.createElement(RelatedArticle, { articles: article.relatedArticle, client: client })
815
950
  )
816
951
  ),
817
952
  renderIsiContent(props.article)
818
953
  )
819
954
  ),
820
- main_39 && !sponsoredFlag && props.article.Ads && props.article.Ads.length > 0 && props.article.Ads.map(function (ad, index) {
955
+ main_36 && !sponsoredFlag && props.article.Ads && props.article.Ads.length > 0 && props.article.Ads.map(function (ad, index) {
821
956
  if (index > 0) {
822
957
  return React__default.createElement(
823
958
  'div',
@@ -826,21 +961,21 @@ var Article = function Article(props) {
826
961
  );
827
962
  }
828
963
  }),
829
- React__default.createElement('div', { className: 'clearfix', style: { minHeight: '1px' } }),
830
- React__default.createElement('hr', { className: 'article-seperater my-5' }),
831
964
  React__default.createElement(
832
965
  'noscript',
833
966
  null,
834
- props.infiniteScroll && props.article.relatedArticle && props.article.relatedArticle.url && props.article.relatedArticle.url.current && React__default.createElement(
967
+ props.infiniteScroll && props.article.relatedArticle && props.article.relatedArticle[0] && props.article.relatedArticle[0].url && props.article.relatedArticle[0].url.current && React__default.createElement(
835
968
  'div',
836
969
  { style: { textAlign: 'center' } },
837
970
  React__default.createElement(
838
971
  'a',
839
- { href: '/view/' + props.article.relatedArticle.url.current },
840
- 'Related Article >>>'
972
+ { href: '/view/' + props.article.relatedArticle[0].url.current },
973
+ 'Related Article ',
974
+ '>>>'
841
975
  )
842
976
  )
843
- )
977
+ ),
978
+ React__default.createElement('hr', { className: 'article-seperater my-5' })
844
979
  );
845
980
  };
846
981
 
@@ -883,6 +1018,8 @@ exports.default = function (obj, key, value) {
883
1018
 
884
1019
  var _defineProperty = unwrapExports(defineProperty);
885
1020
 
1021
+ var _this = undefined;
1022
+
886
1023
  var ArticleQueue = function ArticleQueue(props) {
887
1024
  var _props$prevUrl = props.prevUrl,
888
1025
  prevUrl = _props$prevUrl === undefined ? '/' : _props$prevUrl,
@@ -893,7 +1030,8 @@ var ArticleQueue = function ArticleQueue(props) {
893
1030
  _props$cpModification = props.cpModificationRequired,
894
1031
  cpModificationRequired = _props$cpModification === undefined ? false : _props$cpModification,
895
1032
  _props$authorPrefix = props.authorPrefix,
896
- authorPrefix = _props$authorPrefix === undefined ? 'authors' : _props$authorPrefix;
1033
+ authorPrefix = _props$authorPrefix === undefined ? 'authors' : _props$authorPrefix,
1034
+ showRelatedArticles = props.showRelatedArticles;
897
1035
 
898
1036
 
899
1037
  var firstArticle = function firstArticle() {
@@ -914,7 +1052,7 @@ var ArticleQueue = function ArticleQueue(props) {
914
1052
  });
915
1053
  var targeting = getTargeting({ article: activeArticle, cpModificationRequired: cpModificationRequired, position: props.position, prevUrl: prevUrl });
916
1054
 
917
- if (!main_39) {
1055
+ if (!main_36) {
918
1056
  lib_3.getGoogletag().then(function (googletag) {
919
1057
  if (window.googletag && googletag.pubadsReady) {
920
1058
  var slots = googletag.pubads().getSlots();
@@ -932,7 +1070,7 @@ var ArticleQueue = function ArticleQueue(props) {
932
1070
  });
933
1071
  }
934
1072
  //Refresh leaderboard ad on mobile
935
- if (main_39) {
1073
+ if (main_36) {
936
1074
  var leaderboardSlotId = '';
937
1075
  lib_3.getGoogletag().then(function (googletag) {
938
1076
  if (window.googletag && googletag.pubadsReady) {
@@ -998,13 +1136,43 @@ var ArticleQueue = function ArticleQueue(props) {
998
1136
  var params = props.params;
999
1137
  if (queueData && queueData.length < maxListLength) {
1000
1138
  params.index = queueData.length - 1;
1001
- props.client.fetch(query, params).then(function (article) {
1002
- if (article && article._id) {
1003
- var targeting = getTargeting({ article: article, cpModificationRequired: cpModificationRequired, prevUrl: prevUrl });
1004
- article.Ads = Ads.getRightItems(targeting);
1005
- setQueueData([].concat(_toConsumableArray(queueData), [article]));
1006
- }
1007
- });
1139
+ props.client.fetch(query, params).then(function () {
1140
+ var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(article) {
1141
+ var startingIndex, endingIndex, targeting;
1142
+ return regenerator.wrap(function _callee$(_context) {
1143
+ while (1) {
1144
+ switch (_context.prev = _context.next) {
1145
+ case 0:
1146
+ if (!(article && article._id)) {
1147
+ _context.next = 9;
1148
+ break;
1149
+ }
1150
+
1151
+ //query next 4 related article without repeating previous 4 related articles
1152
+ startingIndex = queueData.length;
1153
+ endingIndex = startingIndex + 3;
1154
+ _context.next = 5;
1155
+ return getRelatedArticle(null, props.client, article, prevUrl, startingIndex + '..' + endingIndex);
1156
+
1157
+ case 5:
1158
+ article.relatedArticle = _context.sent;
1159
+ targeting = getTargeting({ article: article, cpModificationRequired: cpModificationRequired, prevUrl: prevUrl });
1160
+
1161
+ article.Ads = Ads.getRightItems(targeting);
1162
+ setQueueData([].concat(_toConsumableArray(queueData), [article]));
1163
+
1164
+ case 9:
1165
+ case 'end':
1166
+ return _context.stop();
1167
+ }
1168
+ }
1169
+ }, _callee, _this);
1170
+ }));
1171
+
1172
+ return function (_x) {
1173
+ return _ref.apply(this, arguments);
1174
+ };
1175
+ }());
1008
1176
  }
1009
1177
  };
1010
1178
 
@@ -1069,7 +1237,8 @@ var ArticleQueue = function ArticleQueue(props) {
1069
1237
  article: article,
1070
1238
  cpModificationRequired: cpModificationRequired
1071
1239
  // Passing queueData to check for single article
1072
- , queueData: queueData
1240
+ , queueData: queueData,
1241
+ showRelatedArticles: showRelatedArticles
1073
1242
  }));
1074
1243
  })
1075
1244
  );
@@ -1142,7 +1311,7 @@ var Articles = function Articles(props) {
1142
1311
  }, _defineProperty(_extends2, 'pageview', pageview), _defineProperty(_extends2, 'onVote', function onVote() {}), _defineProperty(_extends2, 'ISIContent', ISIContent), _defineProperty(_extends2, 'videoAccountIDs', videoAccountIDs), _defineProperty(_extends2, 'sponsoredTaxonomies', []), _defineProperty(_extends2, 'cpModificationRequired', cpModificationRequired), _defineProperty(_extends2, 'Settings', Settings), _extends2), props));
1143
1312
  };
1144
1313
 
1145
- var _this = undefined;
1314
+ var _this$1 = undefined;
1146
1315
 
1147
1316
  var View = function View(props) {
1148
1317
  var router = useRouter();
@@ -1155,7 +1324,9 @@ var View = function View(props) {
1155
1324
  setCustomDimensions = props.setCustomDimensions,
1156
1325
  statusCode = props.statusCode,
1157
1326
  prevUrl = props.prevUrl,
1158
- pageview = props.pageview;
1327
+ pageview = props.pageview,
1328
+ _props$showRelatedArt = props.showRelatedArticles,
1329
+ showRelatedArticles = _props$showRelatedArt === undefined ? false : _props$showRelatedArt;
1159
1330
  var _props$article = props.article,
1160
1331
  _props$article$passwo = _props$article.passwordLock,
1161
1332
  passwordLock = _props$article$passwo === undefined ? false : _props$article$passwo,
@@ -1249,7 +1420,7 @@ var View = function View(props) {
1249
1420
  props.article.seriesDetail && props.article.seriesDetail.nextUrl && React__default.createElement('link', { rel: 'next', href: props.article.seriesDetail.nextUrl })
1250
1421
  )
1251
1422
  ),
1252
- !needInfiniteScroll ? React__default.createElement(Article, _extends({ infiniteScroll: false }, props)) : React__default.createElement(Articles, _extends({ infiniteScroll: true }, props))
1423
+ !needInfiniteScroll ? React__default.createElement(Article, _extends({ infiniteScroll: false, showRelatedArticles: showRelatedArticles }, props)) : React__default.createElement(Articles, _extends({ infiniteScroll: true, showRelatedArticles: showRelatedArticles }, props))
1253
1424
  );
1254
1425
  };
1255
1426
 
@@ -1296,7 +1467,7 @@ View.returnGetInitialProps = function () {
1296
1467
  }
1297
1468
 
1298
1469
  _context.next = 13;
1299
- return getRelatedArticle(context, client, article, prevUrl);
1470
+ return getRelatedArticle(context, client, article, prevUrl, '0..3');
1300
1471
 
1301
1472
  case 13:
1302
1473
  article.relatedArticle = _context.sent;
@@ -1317,7 +1488,7 @@ View.returnGetInitialProps = function () {
1317
1488
  return _context.stop();
1318
1489
  }
1319
1490
  }
1320
- }, _callee, _this);
1491
+ }, _callee, _this$1);
1321
1492
  }));
1322
1493
 
1323
1494
  return function (_x, _x2, _x3, _x4, _x5) {
@@ -4,13 +4,13 @@ import './core.get-iterator-method-f5c0d66a.js';
4
4
  import './web.dom.iterable-46c95e52.js';
5
5
  import React__default from 'react';
6
6
  import 'prop-types';
7
- import { m as moment } from './moment-12415288.js';
7
+ import { m as moment } from './moment-e2f9b20c.js';
8
8
  import 'react-dom';
9
- import { i as imageUrlBuilder } from './index-51a80699.js';
9
+ import { i as imageUrlBuilder } from './index-73819142.js';
10
10
  import { L as LazyLoad } from './index-5f9f807a.js';
11
11
  import { c as clean_html_1 } from './entities-7cc3bf45.js';
12
12
  import './slicedToArray-f1e40361.js';
13
- import { A as AuthorComponent } from './AuthorComponent-158226c9.js';
13
+ import { A as AuthorComponent } from './AuthorComponent-357dbee9.js';
14
14
 
15
15
  var YahooHero = function YahooHero(props) {
16
16
  var removeTimeStamp = props.removeTimeStamp;
@@ -9,15 +9,15 @@ import './_is-array-dd5523d6.js';
9
9
  import React__default, { useRef, useState, useEffect } from 'react';
10
10
  import 'prop-types';
11
11
  import 'react-dom';
12
- import { i as imageUrlBuilder } from './index-51a80699.js';
12
+ import { i as imageUrlBuilder } from './index-73819142.js';
13
13
  import { L as LazyLoad } from './index-5f9f807a.js';
14
14
  import { _ as _slicedToArray } from './slicedToArray-f1e40361.js';
15
15
  import { s as smoothscroll, g as getYoutubeId } from './smoothscroll-4b699764.js';
16
16
 
17
- /*
18
- GROQ query -
19
- accepts an array of title, URL
20
- `https://img.youtube.com/vi/${getYouTubeId(vid.url)}/hqdefault.jpg`
17
+ /*
18
+ GROQ query -
19
+ accepts an array of title, URL
20
+ `https://img.youtube.com/vi/${getYouTubeId(vid.url)}/hqdefault.jpg`
21
21
  */
22
22
 
23
23
  var YoutubeGroup = function YoutubeGroup(props) {
@@ -1,4 +1,4 @@
1
- import { c as isObject_1, _ as _baseGetTag } from './isSymbol-b7b7434f.js';
1
+ import { d as isObject_1, _ as _baseGetTag } from './isSymbol-47f5ff3b.js';
2
2
 
3
3
  /**
4
4
  * Checks if `value` is classified as an `Array` object.
@@ -1,4 +1,4 @@
1
- import { a as _root, b as isSymbol_1, c as isObject_1 } from './isSymbol-b7b7434f.js';
1
+ import { a as _root, c as isSymbol_1, d as isObject_1 } from './isSymbol-47f5ff3b.js';
2
2
 
3
3
  /**
4
4
  * Gets the timestamp of the number of milliseconds that have elapsed since
@@ -1,5 +1,5 @@
1
- import { b as isSymbol_1, a as _root, c as isObject_1, d as _Symbol } from './isSymbol-b7b7434f.js';
2
- import { a as isArray_1, i as isFunction_1, _ as _arrayMap } from './_arrayMap-64cbe0e4.js';
1
+ import { c as isSymbol_1, a as _root, d as isObject_1, e as _Symbol } from './isSymbol-47f5ff3b.js';
2
+ import { a as isArray_1, i as isFunction_1, _ as _arrayMap } from './_arrayMap-818441dd.js';
3
3
 
4
4
  /** Used to match property names within property paths. */
5
5
  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
@@ -1,16 +1,14 @@
1
- import './_commonjsHelpers-0c4b6f40.js';
2
- import './moment-12415288.js';
3
-
4
1
  var getQuery = function getQuery(type) {
5
2
  var conditions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
6
3
  var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
4
+ var articleCount = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
7
5
 
8
6
  //Added feature to include additional conditions and parameters for site level operations
9
7
  //Site level conditions should start with && (logical AND), and site level params should end with , (comma) in order to execute query
10
8
 
11
9
  switch (type) {
12
10
  case 'related':
13
- return '*[\n _type == "article"\n && defined(title)\n && defined(url)\n && !(_id in path("drafts.**"))\n && is_visible == true\n && published <= now()\n && passwordLock!=true\n && taxonomyMapping[]._ref in $taxonomy\n && taxonomyMapping[].disableAds != \'true\'\n && contentCategory->.name != \'Poll\'\n && contentCategory->.name != \'Slideshows\'\n && contentCategory->.disableAds != \'true\'\n && ExcludeFromInfiniteScroll !=true\n && url.current != $url\n && !defined(body[].videos)\n ' + conditions + '\n ]| order(published desc)[$index]{\n ' + params + '\n title,\n published,\n summary,\n thumbnail,\n ...,\n passwordLock,\n password,\n "authorDetails": authorMapping[]->{ displayName, url, profileImage, biography },\n body[] {\n ...,\n upload_doc {\n _type,\n asset->\n },\n uploadAudio {\n _type,\n asset->\n }\n },\n \'content_placement\': taxonomyMapping[]-> {\n \'ancestor\': parent->parent->identifier,\n \'parent\': parent->identifier,\n \'name\': name,\n \'path\': identifier,\n disableAds\n },\n documentGroup-> {\n name,\n thumbnail,\n parent->{...,parent->},\n \'path\': identifier.current\n },\n \'issue\' : *[_type == \'publication\' && !(_id in path("drafts.**")) && is_visible == true && _id == ^.issueGroup._ref][0] {\n name,\n \'path\': identifier.current,\n \'publication\' : *[_type == \'publication\' && !(_id in path("drafts.**")) && is_visible == true && _id == ^.parent._ref][0] {\n name,\n \'path\': identifier.current\n },\n \'url\' : pdf.asset-> url\n }\n }';
11
+ return '*[\n _type == "article"\n && defined(title)\n && defined(url)\n && !(_id in path("drafts.**"))\n && is_visible == true\n && published <= now()\n && passwordLock!=true\n && taxonomyMapping[]._ref in $taxonomy\n && taxonomyMapping[].disableAds != \'true\'\n && contentCategory->.name != \'Poll\'\n && contentCategory->.name != \'Slideshows\'\n && contentCategory->.disableAds != \'true\'\n && ExcludeFromInfiniteScroll !=true\n && url.current != $url\n && !defined(body[].videos)\n ' + conditions + '\n ]| order(published desc)[' + (articleCount ? articleCount : '$index') + ']{\n ' + params + '\n title,\n published,\n summary,\n thumbnail,\n ...,\n passwordLock,\n password,\n "authorDetails": authorMapping[]->{ displayName, url, profileImage, biography },\n body[] {\n ...,\n upload_doc {\n _type,\n asset->\n },\n uploadAudio {\n _type,\n asset->\n }\n },\n \'content_placement\': taxonomyMapping[]-> {\n \'ancestor\': parent->parent->identifier,\n \'parent\': parent->identifier,\n \'name\': name,\n \'path\': identifier,\n disableAds\n },\n documentGroup-> {\n name,\n thumbnail,\n parent->{...,parent->},\n \'path\': identifier.current\n },\n \'issue\' : *[_type == \'publication\' && !(_id in path("drafts.**")) && is_visible == true && _id == ^.issueGroup._ref][0] {\n name,\n \'path\': identifier.current,\n \'publication\' : *[_type == \'publication\' && !(_id in path("drafts.**")) && is_visible == true && _id == ^.parent._ref][0] {\n name,\n \'path\': identifier.current\n },\n \'url\' : pdf.asset-> url\n }\n }';
14
12
  case 'article':
15
13
  return '*[\n _type == "article"\n && !(_id in path("drafts.**"))\n && defined(title)\n && defined(url)\n && url.current == $url\n ' + conditions + '\n ][0]{\n ' + params + '\n title,\n published,\n summary,\n thumbnail,\n ...,\n passwordLock,\n password,\n "authorDetails": authorMapping[]->{ displayName, url, profileImage, biography },\n body[] {\n ...,\n upload_doc {\n _type,\n asset->\n },\n uploadAudio {\n _type,\n asset->\n },\n medias[]{ \n ...,\n upload_doc { \n _type,\n asset-> \n } \n },\n articles[]{\n ...,\n "authorDetails": authorMapping[]->{ displayName, url, profileImage, biography },\n }\n },\n \'content_placement\': taxonomyMapping[]-> {\n ...,\n \'ancestor\': parent->parent->identifier,\n \'parent\': parent->identifier,\n \'name\': name,\n \'path\': identifier\n },\n documentGroup-> {\n name,\n thumbnail,\n parent->{...,parent->},\n \'path\': identifier.current\n },\n \'category\':contentCategory->{\n name,\n disableAds\n },\n \'issue\' : *[_type == \'publication\' && !(_id in path("drafts.**")) && is_visible == true && _id == ^.issueGroup._ref][0] {\n name,\n volume,\n \'issueNumber\': number,\n \'articleSource\': source,\n \'path\': identifier.current,\n \'publication\' : *[_type == \'publication\' && !(_id in path("drafts.**")) && is_visible == true && _id == ^.parent._ref][0] {\n name,\n \'path\': identifier.current\n },\n \'url\' : pdf.asset-> url\n }\n\n }';
16
14
  case 'publication':