@mjhls/mjh-framework 1.0.593 → 1.0.596

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 (79) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/ArticleQueue.js +296 -25
  3. package/dist/cjs/{AuthorComponent-cb8b8128.js → AuthorComponent-3c79e1ab.js} +2 -2
  4. package/dist/cjs/DeckContent.js +1 -1
  5. package/dist/cjs/DeckQueue.js +1 -1
  6. package/dist/cjs/ExternalResources.js +4 -3
  7. package/dist/cjs/ForbesHero.js +1 -1
  8. package/dist/cjs/GridContent.js +2 -2
  9. package/dist/cjs/GridHero.js +1 -1
  10. package/dist/cjs/InscreenSensor-e45e95e3.js +85 -0
  11. package/dist/cjs/IssueContentDeck.js +1 -1
  12. package/dist/cjs/IssueLanding.js +1 -1
  13. package/dist/cjs/MasterDeck.js +1 -1
  14. package/dist/cjs/OncliveLargeHero.js +1 -1
  15. package/dist/cjs/PartnerDetailListing.js +3 -3
  16. package/dist/cjs/QueueDeckExpanded.js +1 -1
  17. package/dist/cjs/RecentNews.js +93 -0
  18. package/dist/cjs/VideoSeriesListing.js +1 -1
  19. package/dist/cjs/View.js +234 -120
  20. package/dist/cjs/YahooHero.js +1 -1
  21. package/dist/cjs/getQuery.js +3 -5
  22. package/dist/cjs/getRelatedArticle.js +4 -6
  23. package/dist/cjs/getSerializers.js +31 -8305
  24. package/dist/cjs/getSeriesDetail.js +0 -1
  25. package/dist/cjs/index-e7f86168.js +8562 -0
  26. package/dist/cjs/index.js +7 -7
  27. package/dist/cjs/{inherits-14962339.js → inherits-93684212.js} +4 -4
  28. package/dist/esm/AD.js +1 -1
  29. package/dist/esm/AD300x250.js +2 -2
  30. package/dist/esm/AD300x250x600.js +2 -2
  31. package/dist/esm/AD728x90.js +2 -2
  32. package/dist/esm/ADFloatingFooter.js +2 -2
  33. package/dist/esm/ADGutter.js +2 -2
  34. package/dist/esm/ADSkyscraper.js +2 -2
  35. package/dist/esm/ADSponsoredResources.js +2 -2
  36. package/dist/esm/ADWebcast.js +2 -2
  37. package/dist/esm/ADWelcome.js +2 -2
  38. package/dist/esm/AdSlot.js +2 -2
  39. package/dist/esm/ArticleQueue.js +287 -16
  40. package/dist/esm/{AuthorComponent-158226c9.js → AuthorComponent-357dbee9.js} +2 -2
  41. package/dist/esm/CMEDeck.js +2 -2
  42. package/dist/esm/Column2.js +3 -3
  43. package/dist/esm/Column3.js +4 -4
  44. package/dist/esm/DeckContent.js +3 -3
  45. package/dist/esm/DeckQueue.js +4 -4
  46. package/dist/esm/{Dfp-ae9336e2.js → Dfp-56444b73.js} +2 -2
  47. package/dist/esm/ExternalResources.js +4 -3
  48. package/dist/esm/ForbesHero.js +1 -1
  49. package/dist/esm/GridContent.js +7 -7
  50. package/dist/esm/GridHero.js +1 -1
  51. package/dist/esm/InscreenSensor-beb2ec79.js +80 -0
  52. package/dist/esm/IssueContentDeck.js +1 -1
  53. package/dist/esm/IssueLanding.js +5 -5
  54. package/dist/esm/LeftNav.js +2 -2
  55. package/dist/esm/MasterDeck.js +4 -4
  56. package/dist/esm/OncliveLargeHero.js +1 -1
  57. package/dist/esm/PartnerDetailListing.js +6 -6
  58. package/dist/esm/QueueDeckExpanded.js +5 -5
  59. package/dist/esm/RecentNews.js +88 -0
  60. package/dist/esm/SideFooter.js +3 -3
  61. package/dist/esm/TemplateNormal.js +4 -4
  62. package/dist/esm/VideoSeriesListing.js +2 -2
  63. package/dist/esm/View.js +224 -110
  64. package/dist/esm/YahooHero.js +1 -1
  65. package/dist/esm/{_arrayMap-64cbe0e4.js → _arrayMap-818441dd.js} +1 -1
  66. package/dist/esm/{debounce-048d9cb6.js → debounce-a0d9abca.js} +1 -1
  67. package/dist/esm/{get-0eb56363.js → get-58d2f7cc.js} +2 -2
  68. package/dist/esm/getQuery.js +3 -5
  69. package/dist/esm/getRelatedArticle.js +4 -6
  70. package/dist/esm/getSerializers.js +29 -8303
  71. package/dist/esm/getSeriesDetail.js +0 -1
  72. package/dist/esm/index-91506c27.js +8555 -0
  73. package/dist/esm/index.js +10 -10
  74. package/dist/esm/{isSymbol-b7b7434f.js → isSymbol-47f5ff3b.js} +1 -1
  75. package/package.json +1 -1
  76. package/dist/cjs/InscreenSensor-3aec8492.js +0 -361
  77. package/dist/esm/InscreenSensor-280b2b10.js +0 -352
  78. /package/dist/esm/{ADInfeed-c7dba95f.js → ADInfeed-cecd42e8.js} +0 -0
  79. /package/dist/esm/{ADlgInfeed-8bfd6d58.js → ADlgInfeed-234ba767.js} +0 -0
package/dist/cjs/View.js CHANGED
@@ -12,9 +12,9 @@ var toConsumableArray = require('./toConsumableArray-ca04303b.js');
12
12
  require('./_object-pie-68c5bcbc.js');
13
13
  var _extends = require('./extends-60837c34.js');
14
14
  require('./_object-sap-5e74ba08.js');
15
- var inherits = require('./inherits-14962339.js');
15
+ var inherits = require('./inherits-93684212.js');
16
16
  require('./web.dom.iterable-43c3e277.js');
17
- var _typeof$1 = require('./typeof-1869832c.js');
17
+ var _typeof = require('./typeof-1869832c.js');
18
18
  require('./_is-array-754e012d.js');
19
19
  var React = require('react');
20
20
  var React__default = _interopDefault(React);
@@ -39,12 +39,14 @@ var asyncToGenerator = require('./asyncToGenerator-8e707718.js');
39
39
  require('./_set-species-4458e975.js');
40
40
  require('./beam-d22818d3.js');
41
41
  var AdSlot = require('./AdSlot.js');
42
+ require('./lodash-fc2922d0.js');
43
+ var AuthorComponent = require('./AuthorComponent-3c79e1ab.js');
42
44
  var BlockContent = require('./BlockContent-f942392e.js');
43
45
  require('./smoothscroll-95231a70.js');
44
46
  require('./GroupDeck.js');
45
- var reactBootstrap = require('react-bootstrap');
47
+ require('react-bootstrap');
46
48
  var Button = _interopDefault(require('react-bootstrap/Button'));
47
- var getSerializers = require('./getSerializers.js');
49
+ var getSerializers = require('./index-e7f86168.js');
48
50
  require('./util-f2c1b65b.js');
49
51
  require('./brightcove-react-player-loader.es-156bd4d6.js');
50
52
  require('react-bootstrap/Pagination');
@@ -54,8 +56,8 @@ var SocialShare = require('./SocialShare.js');
54
56
  var Form = _interopDefault(require('react-bootstrap/Form'));
55
57
  var FormControl = _interopDefault(require('react-bootstrap/FormControl'));
56
58
  var keys$1 = require('./keys-a586b7a0.js');
57
- var Dropdown = _interopDefault(require('react-bootstrap/Dropdown'));
58
- var InscreenSensor = require('./InscreenSensor-3aec8492.js');
59
+ require('react-bootstrap/Dropdown');
60
+ var InscreenSensor = require('./InscreenSensor-e45e95e3.js');
59
61
  var getKeywords = require('./getKeywords.js');
60
62
  var getSeriesDetail = require('./getSeriesDetail.js');
61
63
  require('nookies');
@@ -64,64 +66,6 @@ var getRelatedArticle = require('./getRelatedArticle.js');
64
66
  var getTargeting = require('./getTargeting-b15993cb.js');
65
67
  var urlFor = require('./urlFor.js');
66
68
 
67
- var renderAuthor = function renderAuthor(authorName, authorURL, index, length) {
68
- var defaultUrl = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'authors';
69
- var biography = arguments[5];
70
- var profileImage = arguments[6];
71
-
72
- if (authorName && authorURL) {
73
- return React__default.createElement(
74
- 'span',
75
- null,
76
- React__default.createElement(
77
- 'a',
78
- { className: 'author-details-link-' + index, rel: 'author', href: '/' + defaultUrl + '/' + authorURL.current, key: index },
79
- authorName
80
- ),
81
- React__default.createElement(
82
- reactBootstrap.Card,
83
- { className: 'author-details-card-' + index },
84
- React__default.createElement(
85
- reactBootstrap.Row,
86
- null,
87
- profileImage && React__default.createElement(
88
- reactBootstrap.Col,
89
- { sm: 12, md: 4, className: 'author-details-img-container' },
90
- React__default.createElement(reactBootstrap.Card.Img, { className: 'author-details-img', src: profileImage, alt: authorName })
91
- ),
92
- React__default.createElement(
93
- reactBootstrap.Col,
94
- { className: 'author-details-col', sm: 12, md: profileImage ? 8 : 12 },
95
- React__default.createElement(
96
- 'h5',
97
- null,
98
- authorName
99
- ),
100
- React__default.createElement(
101
- 'p',
102
- null,
103
- biography
104
- )
105
- )
106
- )
107
- ),
108
- React__default.createElement(
109
- 'style',
110
- { jsx: 'true' },
111
- '\n .author-details-card-' + index + ' {\n display: none;\n position: absolute;\n width: 90%;\n max-width: 450px;\n z-index: 9999;\n }\n .author-details-card-' + index + ' h5 {\n font-weight: 500;\n }\n .author-details-link-' + index + ':hover + .author-details-card-' + index + ', .author-details-card-' + index + ':hover {\n display: block;\n box-shadow: 0px 0px 5px #aaa;\n padding: 15px;\n border-radius: 5px;\n }\n '
112
- ),
113
- length !== index + 1 && ' , '
114
- );
115
- } else if (authorName) {
116
- return React__default.createElement(
117
- 'span',
118
- { key: index },
119
- authorName,
120
- length !== index + 1 && ' , '
121
- );
122
- }
123
- };
124
-
125
69
  var getArticleSummary = function getArticleSummary(article) {
126
70
  if (article.summary && article.summary.length > 0) {
127
71
  return article.summary;
@@ -208,7 +152,7 @@ var DocumentGroup = function DocumentGroup(_ref) {
208
152
 
209
153
  var findIndex = function findIndex(arr) {
210
154
  var indexes = [];
211
- if ((typeof arr === 'undefined' ? 'undefined' : _typeof$1._typeof(arr)) === 'object') {
155
+ if ((typeof arr === 'undefined' ? 'undefined' : _typeof._typeof(arr)) === 'object') {
212
156
  var _iteratorNormalCompletion = true;
213
157
  var _didIteratorError = false;
214
158
  var _iteratorError = undefined;
@@ -243,6 +187,89 @@ var findIndex = function findIndex(arr) {
243
187
  return indexes;
244
188
  };
245
189
 
190
+ function styleInject(css, ref) {
191
+ if ( ref === void 0 ) ref = {};
192
+ var insertAt = ref.insertAt;
193
+
194
+ if (!css || typeof document === 'undefined') { return; }
195
+
196
+ var head = document.head || document.getElementsByTagName('head')[0];
197
+ var style = document.createElement('style');
198
+ style.type = 'text/css';
199
+
200
+ if (insertAt === 'top') {
201
+ if (head.firstChild) {
202
+ head.insertBefore(style, head.firstChild);
203
+ } else {
204
+ head.appendChild(style);
205
+ }
206
+ } else {
207
+ head.appendChild(style);
208
+ }
209
+
210
+ if (style.styleSheet) {
211
+ style.styleSheet.cssText = css;
212
+ } else {
213
+ style.appendChild(document.createTextNode(css));
214
+ }
215
+ }
216
+
217
+ var css = ".RelatedArticles-module_mediaCard__3wQbn {\r\n display: flex;\r\n flex-direction: row;\r\n margin-bottom: .75rem;\r\n padding-bottom: .75rem;\r\n border-bottom: none;\r\n}\r\n.RelatedArticles-module_mediaCard__3wQbn:last-child {\r\n border-bottom: none;\r\n}\r\n.RelatedArticles-module_cardTitle__3P-Ib {\r\n font-weight: bold;\r\n color: #252525;\r\n margin-bottom: 0.25rem;\r\n font-size: 19px;\r\n}\r\n.RelatedArticles-module_authorListing__1EFg4 span.RelatedArticles-module_text-muted__3b0zX {\r\n color: #000;\r\n font-weight: bold;\r\n}\r\n.RelatedArticles-module_cardDate__1wOR5 {\r\n color: var(--dark);\r\n display: block;\r\n background: #fff!important;\r\n margin-bottom: 0;\r\n}\r\n.RelatedArticles-module_mediaCard__3wQbn a img {\r\n width: 175px;\r\n min-width: 175px;\r\n height: auto;\r\n object-fit: contain;\r\n}\r\n@media screen and (max-width: 1064px) {\r\n .RelatedArticles-module_cardTitle__3P-Ib {\r\n font-size: 1.1rem;\r\n }\r\n}\r\n@media screen and (max-width: 768px) {\r\n .RelatedArticles-module_mediaCard__3wQbn {\r\n flex-direction: column;\r\n }\r\n .RelatedArticles-module_mediaCard__3wQbn a img {\r\n width: 100%;\r\n height: auto;\r\n max-height: 175px;\r\n object-fit: contain;\r\n margin-bottom: 1rem;\r\n }\r\n}";
218
+ 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" };
219
+ styleInject(css);
220
+
221
+ var RelatedArticle = function RelatedArticle(_ref) {
222
+ var articles = _ref.articles,
223
+ client = _ref.client;
224
+
225
+ if (!articles || articles.length == 0 || !articles[0]) {
226
+ return null;
227
+ }
228
+ return React__default.createElement(
229
+ 'div',
230
+ null,
231
+ articles.map(function (article, index) {
232
+ return React__default.createElement(
233
+ 'div',
234
+ { id: 'related-card', key: index, className: styles.mediaCard },
235
+ React__default.createElement(
236
+ 'a',
237
+ { className: styles.imgWrapper, href: '/view/' + (article.url ? article.url.current : '') },
238
+ article.thumbnail && React__default.createElement('img', {
239
+ style: { maxHeight: '135px', objectFit: 'cover', objectPosition: 'center' },
240
+ className: 'mr-3 img-fluid',
241
+ src: article.thumbnail && urlFor(client, article.thumbnail.asset).width(250).url(),
242
+ alt: article.title
243
+ })
244
+ ),
245
+ React__default.createElement(
246
+ 'div',
247
+ { className: styles.mediaBody },
248
+ React__default.createElement(
249
+ 'a',
250
+ { href: '/view/' + (article.url ? article.url.current : '') },
251
+ React__default.createElement(
252
+ 'h4',
253
+ { className: styles.cardTitle },
254
+ article.title
255
+ )
256
+ ),
257
+ React__default.createElement(
258
+ 'span',
259
+ { className: styles.cardDate },
260
+ moment.moment(article.published).format('MMMM Do YYYY, h:mma')
261
+ ),
262
+ article.authorDetails && article.authorDetails.length > 0 && React__default.createElement(
263
+ 'div',
264
+ { className: 'author-listing' },
265
+ React__default.createElement(AuthorComponent.AuthorComponent, { index: index, authors: article.authorDetails })
266
+ )
267
+ )
268
+ );
269
+ })
270
+ );
271
+ };
272
+
246
273
  var Article = function Article(props) {
247
274
  var onVote = function () {
248
275
  var _ref = asyncToGenerator._asyncToGenerator( /*#__PURE__*/asyncToGenerator.regenerator.mark(function _callee(nodeKey, selectedChoice) {
@@ -295,7 +322,8 @@ var Article = function Article(props) {
295
322
  }();
296
323
 
297
324
  var article = props.article,
298
- Ads = props.Ads;
325
+ Ads = props.Ads,
326
+ showRelatedArticles = props.showRelatedArticles;
299
327
  var client = props.client,
300
328
  pageview = props.pageview,
301
329
  videoAccountIDs = props.videoAccountIDs,
@@ -339,6 +367,7 @@ var Article = function Article(props) {
339
367
  if (sponsoredFlag) {
340
368
  article.contextualVideoAD = false;
341
369
  article.contextualAD = false;
370
+ showRelatedArticles = false;
342
371
  }
343
372
  //This was being done in ArticleQueue2 which wasnt effecting articles excluded from infinite scroll, moved inside article component
344
373
  if (!sponsoredFlag && Ads.getVideoContextualAD) {
@@ -389,7 +418,7 @@ var Article = function Article(props) {
389
418
  var renderAuthorBiography = function renderAuthorBiography(biography) {
390
419
  if (biography) {
391
420
  return React__default.createElement(BlockContent.BlockContent, _extends._extends({
392
- serializers: getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false, contextualADFlag),
421
+ serializers: getSerializers.getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false, contextualADFlag),
393
422
  blocks: [biography]
394
423
  }, client.config()));
395
424
  }
@@ -405,34 +434,55 @@ var Article = function Article(props) {
405
434
  return null;
406
435
  };
407
436
 
408
- var renderRelevantTopicsDropdown = function renderRelevantTopicsDropdown() {
437
+ var RelevantTopics = function RelevantTopics() {
409
438
  if (content_placement && content_placement.length > 0 || documentGroup) {
410
439
  return React__default.createElement(
411
- Dropdown,
412
- null,
440
+ 'div',
441
+ { style: { color: '#262626' } },
413
442
  React__default.createElement(
414
- Dropdown.Toggle,
415
- { variant: 'primary', id: 'partner-dropdown' },
416
- 'Relevant Topics'
443
+ 'p',
444
+ { className: 'mb-0' },
445
+ React__default.createElement(
446
+ 'b',
447
+ null,
448
+ 'Related Content:'
449
+ )
417
450
  ),
418
- React__default.createElement(
419
- Dropdown.Menu,
451
+ documentGroup && documentGroup.parent && React__default.createElement(
452
+ React__default.Fragment,
420
453
  null,
421
- documentGroup && documentGroup.parent && React__default.createElement(
422
- Dropdown.Item,
423
- { href: cpModificationRequired ? '/' + documentGroup.parent.identifier.current + '/' + documentGroup.path : '/' + documentGroup.path },
424
- documentGroup.name
454
+ React__default.createElement(
455
+ 'span',
456
+ { className: '' },
457
+ React__default.createElement(
458
+ 'a',
459
+ {
460
+ className: 'related-links',
461
+ style: { color: 'blue' },
462
+ href: cpModificationRequired ? '/' + documentGroup.parent.identifier.current + '/' + documentGroup.path : '/' + documentGroup.path },
463
+ documentGroup.name
464
+ )
425
465
  ),
426
- content_placement && content_placement.length > 0 ? content_placement.map(function (cp, index) {
427
- var cp_url = cpModificationRequired ? getTargeting.getContentPlacementUrl(cp) : cp.path;
428
- var href = '/' + cp_url;
429
- return React__default.createElement(
430
- Dropdown.Item,
431
- { key: index, href: href },
432
- cp.name
433
- );
434
- }) : null
435
- )
466
+ content_placement && content_placement.length ? ' | ' : null
467
+ ),
468
+ content_placement && content_placement.length > 0 ? content_placement.map(function (cp, index) {
469
+ var cp_url = cpModificationRequired ? getTargeting.getContentPlacementUrl(cp) : cp.path;
470
+ var href = '/' + cp_url;
471
+ return React__default.createElement(
472
+ React__default.Fragment,
473
+ { key: index },
474
+ React__default.createElement(
475
+ 'span',
476
+ null,
477
+ React__default.createElement(
478
+ 'a',
479
+ { className: 'related-links', key: index, href: href, style: { color: 'blue' } },
480
+ cp.name
481
+ )
482
+ ),
483
+ content_placement.length > index + 1 ? ' | ' : null
484
+ );
485
+ }) : null
436
486
  );
437
487
  }
438
488
  return null;
@@ -525,7 +575,7 @@ var Article = function Article(props) {
525
575
  React__default.Fragment,
526
576
  null,
527
577
  React__default.createElement(BlockContent.BlockContent, _extends._extends({
528
- serializers: getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false, contextualADFlag),
578
+ serializers: getSerializers.getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false, contextualADFlag),
529
579
  blocks: [].concat(toConsumableArray._toConsumableArray(articleBody.slice(0, selectedIndex))),
530
580
  imageOptions: { w: 320, h: 240, fit: 'max' }
531
581
  }, client.config())),
@@ -542,7 +592,7 @@ var Article = function Article(props) {
542
592
  React__default.createElement(AdSlot, _extends._extends({}, payload.contextualVideoAD, { refreshFlag: false, checkIsAdFound: checkIsVideoAdFound }))
543
593
  ),
544
594
  React__default.createElement(BlockContent.BlockContent, _extends._extends({
545
- serializers: getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false),
595
+ serializers: getSerializers.getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false),
546
596
  blocks: [].concat(toConsumableArray._toConsumableArray(articleBody.slice(selectedIndex))),
547
597
  imageOptions: { w: 320, h: 240, fit: 'max' }
548
598
  }, client.config()))
@@ -597,7 +647,7 @@ var Article = function Article(props) {
597
647
  React__default.Fragment,
598
648
  null,
599
649
  React__default.createElement(BlockContent.BlockContent, _extends._extends({
600
- serializers: getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false, contextualADFlag),
650
+ serializers: getSerializers.getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false, contextualADFlag),
601
651
  blocks: [].concat(toConsumableArray._toConsumableArray(articleBody.slice(0, _selectedIndex))),
602
652
  imageOptions: { w: 320, h: 240, fit: 'max' }
603
653
  }, client.config())),
@@ -609,7 +659,7 @@ var Article = function Article(props) {
609
659
  ),
610
660
  contextualADFlag && React__default.createElement('span', { className: 'clearfix' }),
611
661
  React__default.createElement(BlockContent.BlockContent, _extends._extends({
612
- serializers: getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false),
662
+ serializers: getSerializers.getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false),
613
663
  blocks: [].concat(toConsumableArray._toConsumableArray(articleBody.slice(_selectedIndex))),
614
664
  imageOptions: { w: 320, h: 240, fit: 'max' }
615
665
  }, client.config()))
@@ -640,7 +690,7 @@ var Article = function Article(props) {
640
690
  React__default.Fragment,
641
691
  null,
642
692
  React__default.createElement(BlockContent.BlockContent, _extends._extends({
643
- serializers: getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false, contextualADFlag),
693
+ serializers: getSerializers.getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false, contextualADFlag),
644
694
  blocks: [].concat(toConsumableArray._toConsumableArray(articleBody.slice(0, _selectedIndex2))),
645
695
  imageOptions: { w: 320, h: 240, fit: 'max' }
646
696
  }, client.config())),
@@ -651,14 +701,14 @@ var Article = function Article(props) {
651
701
  React__default.createElement(AdSlot, _extends._extends({}, payload.contextualVideoAD, { refreshFlag: false, checkIsAdFound: _checkIsAdFound2 }))
652
702
  ),
653
703
  React__default.createElement(BlockContent.BlockContent, _extends._extends({
654
- serializers: getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false),
704
+ serializers: getSerializers.getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false),
655
705
  blocks: [].concat(toConsumableArray._toConsumableArray(articleBody.slice(_selectedIndex2))),
656
706
  imageOptions: { w: 320, h: 240, fit: 'max' }
657
707
  }, client.config()))
658
708
  );
659
709
  } else {
660
710
  return React__default.createElement(BlockContent.BlockContent, _extends._extends({
661
- serializers: getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false),
711
+ serializers: getSerializers.getSerializers(client, pageview, videoAccountIDs, onVote, true, drupalLeadSettings, currentPage, false),
662
712
  blocks: articleBody,
663
713
  imageOptions: { w: 320, h: 240, fit: 'max' }
664
714
  }, client.config()));
@@ -724,7 +774,7 @@ var Article = function Article(props) {
724
774
  ),
725
775
  React__default.createElement(
726
776
  'div',
727
- { className: 'mb-4 doc-group-container', style: { display: 'flex', justifyContent: 'space-between', alignItems: 'flex-end' } },
777
+ { className: 'mb-3 doc-group-container', style: { display: 'flex', justifyContent: 'space-between', alignItems: 'flex-end' } },
728
778
  React__default.createElement(
729
779
  'style',
730
780
  { jsx: 'true' },
@@ -747,7 +797,7 @@ var Article = function Article(props) {
747
797
  return React__default.createElement(
748
798
  'span',
749
799
  { key: index },
750
- renderAuthor(authorDetail.displayName, authorDetail.url, index, authorDetails.length, authorPrefix, authorDetail.biography && renderAuthorBiography(authorDetail.biography[0]), authorDetail.profileImage && urlFor(props.client, authorDetail.profileImage).url())
800
+ getSerializers.renderAuthor(authorDetail.displayName, authorDetail.url, index, authorDetails.length, authorPrefix, authorDetail.biography && renderAuthorBiography(authorDetail.biography[0]), authorDetail.profileImage && urlFor(props.client, authorDetail.profileImage).url())
751
801
  );
752
802
  }),
753
803
  React__default.createElement(
@@ -771,6 +821,23 @@ var Article = function Article(props) {
771
821
  issue && React__default.createElement(
772
822
  'div',
773
823
  { className: 'volume-issue' },
824
+ issue.publication && issue.publication.name && React__default.createElement(
825
+ 'span',
826
+ { className: 'mb-0' },
827
+ React__default.createElement(
828
+ 'b',
829
+ null,
830
+ issue.publication.name
831
+ ),
832
+ ',',
833
+ ' '
834
+ ),
835
+ issue.name && React__default.createElement(
836
+ 'span',
837
+ { className: 'mb-0' },
838
+ issue.name,
839
+ ', '
840
+ ),
774
841
  issue.volume && React__default.createElement(
775
842
  'span',
776
843
  null,
@@ -804,8 +871,7 @@ var Article = function Article(props) {
804
871
  twitterSiteName: twitterSiteName,
805
872
  disableMeta: true
806
873
  })
807
- ),
808
- renderRelevantTopicsDropdown()
874
+ )
809
875
  ),
810
876
  React__default.createElement(
811
877
  'div',
@@ -848,6 +914,7 @@ var Article = function Article(props) {
848
914
  'div',
849
915
  { className: 'block-content mt-3' },
850
916
  renderBlockContent(article),
917
+ React__default.createElement('div', { className: 'clearfix' }),
851
918
  React__default.createElement(
852
919
  'noscript',
853
920
  null,
@@ -875,6 +942,17 @@ var Article = function Article(props) {
875
942
  'Download Issue : ',
876
943
  issue.name
877
944
  )
945
+ ),
946
+ React__default.createElement('div', { className: 'clearfix', style: { minHeight: '1px' } }),
947
+ React__default.createElement(
948
+ 'div',
949
+ null,
950
+ React__default.createElement(RelevantTopics, null)
951
+ ),
952
+ showRelatedArticles && React__default.createElement(
953
+ 'div',
954
+ { className: 'pt-2', style: { borderTop: '1px solid #eee' } },
955
+ React__default.createElement(RelatedArticle, { articles: article.relatedArticle, client: client })
878
956
  )
879
957
  ),
880
958
  renderIsiContent(props.article)
@@ -889,21 +967,21 @@ var Article = function Article(props) {
889
967
  );
890
968
  }
891
969
  }),
892
- React__default.createElement('div', { className: 'clearfix', style: { minHeight: '1px' } }),
893
- React__default.createElement('hr', { className: 'article-seperater my-5' }),
894
970
  React__default.createElement(
895
971
  'noscript',
896
972
  null,
897
- props.infiniteScroll && props.article.relatedArticle && props.article.relatedArticle.url && props.article.relatedArticle.url.current && React__default.createElement(
973
+ props.infiniteScroll && props.article.relatedArticle && props.article.relatedArticle[0] && props.article.relatedArticle[0].url && props.article.relatedArticle[0].url.current && React__default.createElement(
898
974
  'div',
899
975
  { style: { textAlign: 'center' } },
900
976
  React__default.createElement(
901
977
  'a',
902
- { href: '/view/' + props.article.relatedArticle.url.current },
903
- 'Related Article >>>'
978
+ { href: '/view/' + props.article.relatedArticle[0].url.current },
979
+ 'Related Article ',
980
+ '>>>'
904
981
  )
905
982
  )
906
- )
983
+ ),
984
+ React__default.createElement('hr', { className: 'article-seperater my-5' })
907
985
  );
908
986
  };
909
987
 
@@ -946,6 +1024,8 @@ exports.default = function (obj, key, value) {
946
1024
 
947
1025
  var _defineProperty = _commonjsHelpers.unwrapExports(defineProperty);
948
1026
 
1027
+ var _this = undefined;
1028
+
949
1029
  var ArticleQueue = function ArticleQueue(props) {
950
1030
  var _props$prevUrl = props.prevUrl,
951
1031
  prevUrl = _props$prevUrl === undefined ? '/' : _props$prevUrl,
@@ -956,7 +1036,8 @@ var ArticleQueue = function ArticleQueue(props) {
956
1036
  _props$cpModification = props.cpModificationRequired,
957
1037
  cpModificationRequired = _props$cpModification === undefined ? false : _props$cpModification,
958
1038
  _props$authorPrefix = props.authorPrefix,
959
- authorPrefix = _props$authorPrefix === undefined ? 'authors' : _props$authorPrefix;
1039
+ authorPrefix = _props$authorPrefix === undefined ? 'authors' : _props$authorPrefix,
1040
+ showRelatedArticles = props.showRelatedArticles;
960
1041
 
961
1042
 
962
1043
  var firstArticle = function firstArticle() {
@@ -1061,13 +1142,43 @@ var ArticleQueue = function ArticleQueue(props) {
1061
1142
  var params = props.params;
1062
1143
  if (queueData && queueData.length < maxListLength) {
1063
1144
  params.index = queueData.length - 1;
1064
- props.client.fetch(query, params).then(function (article) {
1065
- if (article && article._id) {
1066
- var targeting = getTargeting.getTargeting({ article: article, cpModificationRequired: cpModificationRequired, prevUrl: prevUrl });
1067
- article.Ads = Ads.getRightItems(targeting);
1068
- setQueueData([].concat(toConsumableArray._toConsumableArray(queueData), [article]));
1069
- }
1070
- });
1145
+ props.client.fetch(query, params).then(function () {
1146
+ var _ref = asyncToGenerator._asyncToGenerator( /*#__PURE__*/asyncToGenerator.regenerator.mark(function _callee(article) {
1147
+ var startingIndex, endingIndex, targeting;
1148
+ return asyncToGenerator.regenerator.wrap(function _callee$(_context) {
1149
+ while (1) {
1150
+ switch (_context.prev = _context.next) {
1151
+ case 0:
1152
+ if (!(article && article._id)) {
1153
+ _context.next = 9;
1154
+ break;
1155
+ }
1156
+
1157
+ //query next 4 related article without repeating previous 4 related articles
1158
+ startingIndex = queueData.length;
1159
+ endingIndex = startingIndex + 3;
1160
+ _context.next = 5;
1161
+ return getRelatedArticle(null, props.client, article, prevUrl, startingIndex + '..' + endingIndex);
1162
+
1163
+ case 5:
1164
+ article.relatedArticle = _context.sent;
1165
+ targeting = getTargeting.getTargeting({ article: article, cpModificationRequired: cpModificationRequired, prevUrl: prevUrl });
1166
+
1167
+ article.Ads = Ads.getRightItems(targeting);
1168
+ setQueueData([].concat(toConsumableArray._toConsumableArray(queueData), [article]));
1169
+
1170
+ case 9:
1171
+ case 'end':
1172
+ return _context.stop();
1173
+ }
1174
+ }
1175
+ }, _callee, _this);
1176
+ }));
1177
+
1178
+ return function (_x) {
1179
+ return _ref.apply(this, arguments);
1180
+ };
1181
+ }());
1071
1182
  }
1072
1183
  };
1073
1184
 
@@ -1132,7 +1243,8 @@ var ArticleQueue = function ArticleQueue(props) {
1132
1243
  article: article,
1133
1244
  cpModificationRequired: cpModificationRequired
1134
1245
  // Passing queueData to check for single article
1135
- , queueData: queueData
1246
+ , queueData: queueData,
1247
+ showRelatedArticles: showRelatedArticles
1136
1248
  }));
1137
1249
  })
1138
1250
  );
@@ -1205,7 +1317,7 @@ var Articles = function Articles(props) {
1205
1317
  }, _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));
1206
1318
  };
1207
1319
 
1208
- var _this = undefined;
1320
+ var _this$1 = undefined;
1209
1321
 
1210
1322
  var View = function View(props) {
1211
1323
  var router = Router.useRouter();
@@ -1218,7 +1330,9 @@ var View = function View(props) {
1218
1330
  setCustomDimensions = props.setCustomDimensions,
1219
1331
  statusCode = props.statusCode,
1220
1332
  prevUrl = props.prevUrl,
1221
- pageview = props.pageview;
1333
+ pageview = props.pageview,
1334
+ _props$showRelatedArt = props.showRelatedArticles,
1335
+ showRelatedArticles = _props$showRelatedArt === undefined ? false : _props$showRelatedArt;
1222
1336
  var _props$article = props.article,
1223
1337
  _props$article$passwo = _props$article.passwordLock,
1224
1338
  passwordLock = _props$article$passwo === undefined ? false : _props$article$passwo,
@@ -1312,7 +1426,7 @@ var View = function View(props) {
1312
1426
  props.article.seriesDetail && props.article.seriesDetail.nextUrl && React__default.createElement('link', { rel: 'next', href: props.article.seriesDetail.nextUrl })
1313
1427
  )
1314
1428
  ),
1315
- !needInfiniteScroll ? React__default.createElement(Article, _extends._extends({ infiniteScroll: false }, props)) : React__default.createElement(Articles, _extends._extends({ infiniteScroll: true }, props))
1429
+ !needInfiniteScroll ? React__default.createElement(Article, _extends._extends({ infiniteScroll: false, showRelatedArticles: showRelatedArticles }, props)) : React__default.createElement(Articles, _extends._extends({ infiniteScroll: true, showRelatedArticles: showRelatedArticles }, props))
1316
1430
  );
1317
1431
  };
1318
1432
 
@@ -1359,7 +1473,7 @@ View.returnGetInitialProps = function () {
1359
1473
  }
1360
1474
 
1361
1475
  _context.next = 13;
1362
- return getRelatedArticle(context, client, article, prevUrl);
1476
+ return getRelatedArticle(context, client, article, prevUrl, '0..3');
1363
1477
 
1364
1478
  case 13:
1365
1479
  article.relatedArticle = _context.sent;
@@ -1380,7 +1494,7 @@ View.returnGetInitialProps = function () {
1380
1494
  return _context.stop();
1381
1495
  }
1382
1496
  }
1383
- }, _callee, _this);
1497
+ }, _callee, _this$1);
1384
1498
  }));
1385
1499
 
1386
1500
  return function (_x, _x2, _x3, _x4, _x5) {
@@ -15,7 +15,7 @@ var index$1 = require('./index-b5eb3ff8.js');
15
15
  var index$2 = require('./index-fa0fb52c.js');
16
16
  var entities = require('./entities-310b46ee.js');
17
17
  require('./slicedToArray-8063ee51.js');
18
- var AuthorComponent = require('./AuthorComponent-cb8b8128.js');
18
+ var AuthorComponent = require('./AuthorComponent-3c79e1ab.js');
19
19
 
20
20
  var YahooHero = function YahooHero(props) {
21
21
  var removeTimeStamp = props.removeTimeStamp;
@@ -1,20 +1,18 @@
1
1
  'use strict';
2
2
 
3
- require('./_commonjsHelpers-06173234.js');
4
- require('./moment-66a6a284.js');
5
-
6
3
  var getQuery = function getQuery(type) {
7
4
  var conditions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
8
5
  var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
6
+ var articleCount = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
9
7
 
10
8
  //Added feature to include additional conditions and parameters for site level operations
11
9
  //Site level conditions should start with && (logical AND), and site level params should end with , (comma) in order to execute query
12
10
 
13
11
  switch (type) {
14
12
  case 'related':
15
- 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 }';
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)[' + (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 }';
16
14
  case 'article':
17
- 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 },\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 }';
15
+ 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 }';
18
16
  case 'publication':
19
17
  return '*[_type == \'publication\'\n && identifier.current == $publication\n ' + conditions + '][0] {\n ' + params + '\n ...,\n \'issues\': *[_type == \'publication\'\n && is_visible\n && references(^._id)\n && defined(identifier)] {\n ...,\n pdf{asset->}\n } | order(year desc, month desc)\n }';
20
18
  case 'issue':