@mjhls/mjh-framework 1.0.366 → 1.0.368

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.
package/dist/cjs/index.js CHANGED
@@ -30,7 +30,7 @@ var entities = require('./entities-310b46ee.js');
30
30
  var slicedToArray = require('./slicedToArray-879ab2fb.js');
31
31
  var AdSlot = require('./AdSlot-c5bff604.js');
32
32
  require('./promise-3b44b2a3.js');
33
- require('./ADInfeed-43996091.js');
33
+ var ADInfeed = require('./ADInfeed-43996091.js');
34
34
  var DeckContent = require('./DeckContent.js');
35
35
  var get$1 = require('./get-3b23d857.js');
36
36
  var GridContent = require('./GridContent-7a85d904.js');
@@ -75,6 +75,632 @@ var useSWR = _interopDefault(require('swr'));
75
75
  var Local = _interopDefault(require('passport-local'));
76
76
  var mysql = _interopDefault(require('mysql'));
77
77
 
78
+ var urlFor$1 = function urlFor(source, builder) {
79
+ return builder.image(source).auto('format');
80
+ };
81
+
82
+ var renderCardImage = function renderCardImage(row, builder, imageHeight, imageWidth) {
83
+ var url = urlFor$1(row.thumbnail, builder);
84
+ if (imageHeight) url = url.height(imageHeight);
85
+ if (imageWidth) url = url.width(imageWidth);
86
+ return url.url();
87
+ };
88
+
89
+ var loadMore = function loadMore(values, setValues, per) {
90
+ setValues({
91
+ page: values.page + 1,
92
+ from: values.from + per,
93
+ to: values.to + per
94
+ });
95
+ };
96
+
97
+ var loadData = function loadData(values, query, client, params, setData, setScrolling, pointer, pointerArray) {
98
+ params = _extends$2._extends({}, params, {
99
+ from: values.from,
100
+ to: values.to
101
+ });
102
+
103
+ client.fetch(query, params).then(function (dataArr) {
104
+ if (pointer && pointerArray) {
105
+ dataArr = dataArr[pointerArray][pointer];
106
+ }
107
+
108
+ if (!dataArr) {
109
+ dataArr = [];
110
+ }
111
+
112
+ dataArr = dataArr.map(function (item) {
113
+ return _extends$2._extends({}, item, {
114
+ pageNumber: values.page
115
+ });
116
+ });
117
+
118
+ if (dataArr.length > 0) {
119
+ setData(function (prevData) {
120
+ return [].concat(toConsumableArray._toConsumableArray(prevData), toConsumableArray._toConsumableArray(dataArr));
121
+ });
122
+ setScrolling(true);
123
+ } else {
124
+ setScrolling(false);
125
+ }
126
+ });
127
+ };
128
+
129
+ var changePageNumber = function changePageNumber(pageNumber, seoPaginate, pageview, router, currentPage, setCurrentPage, itemsPerPage, itemIndex) {
130
+ if (seoPaginate) {
131
+ var path = router.asPath;
132
+ var qrIndex = path.indexOf('?');
133
+ var pathname = router.pathname;
134
+ var queryString = '';
135
+
136
+ if (qrIndex > 0) {
137
+ path = path.substring(1, qrIndex);
138
+
139
+ var partialQS = router.asPath.substring(qrIndex + 1);
140
+ var partialQSArr = partialQS.split('&');
141
+
142
+ // exclude page=xxx from query string
143
+ partialQSArr.map(function (item) {
144
+ var itemArr = item.split('=');
145
+ var key = itemArr[0];
146
+ var val = itemArr[1];
147
+
148
+ if (key !== 'page') {
149
+ queryString += (queryString.length === 0 ? '' : '&') + key + '=' + val;
150
+ }
151
+ });
152
+ }
153
+
154
+ if (queryString.length > 0) {
155
+ path += '?' + queryString;
156
+ }
157
+
158
+ // pageNumber = parseInt(pageNumber)
159
+
160
+ var index = Number(itemIndex);
161
+ var perPage = Number(itemsPerPage);
162
+
163
+ pageNumber = Math.ceil((index + 1) / perPage);
164
+
165
+ if (currentPage !== pageNumber) {
166
+ debounce.lib_3.refresh();
167
+
168
+ setCurrentPage(pageNumber);
169
+ if (path[0] !== '/') {
170
+ path = '/' + path;
171
+ }
172
+ var newPath = pageNumber === 1 ? '' + path : '' + path + (queryString.length > 0 ? '&' : '?') + 'page=' + pageNumber;
173
+
174
+ if (pageview) {
175
+ pageview(newPath);
176
+ }
177
+
178
+ router.push(pathname, newPath, {
179
+ shallow: true
180
+ });
181
+ }
182
+ }
183
+ };
184
+
185
+ var renderAuthor = function renderAuthor(authorDetail, index, length) {
186
+ if (authorDetail) {
187
+ var _id = authorDetail._id,
188
+ displayName = authorDetail.displayName,
189
+ url = authorDetail.url;
190
+
191
+ if (displayName && url && url.current) {
192
+ return React__default.createElement(
193
+ 'div',
194
+ { key: _id },
195
+ index === 0 && React__default.createElement(
196
+ 'span',
197
+ { className: 'pr-1' },
198
+ 'By'
199
+ ),
200
+ React__default.createElement(
201
+ 'a',
202
+ { href: '/authors/' + url.current, className: 'text-muted' },
203
+ displayName,
204
+ length !== index + 1 && React__default.createElement('br', null)
205
+ )
206
+ );
207
+ } else if (displayName) {
208
+ return React__default.createElement(
209
+ 'div',
210
+ { key: _id },
211
+ index === 0 && React__default.createElement(
212
+ 'span',
213
+ { className: 'pr-1' },
214
+ 'By'
215
+ ),
216
+ React__default.createElement(
217
+ 'span',
218
+ { className: 'text-muted' },
219
+ displayName,
220
+ length !== index + 1 && React__default.createElement('br', null)
221
+ )
222
+ );
223
+ }
224
+ } else return null;
225
+ };
226
+
227
+ var checkExternalUrl = function checkExternalUrl(url) {
228
+ return new RegExp(['http', 'https'].join('|')).test(url);
229
+ };
230
+
231
+ var cardLoader = function cardLoader(data, builder, mapping, values, seoPaginate, pageview, router, currentPage, setCurrentPage, showPublished, defaultImage, showAuthor, showCategory, imageHeight, imageWidth, rightItems, brandInsightAd, showBI, itemsPerPage) {
232
+ var numberOfItemsBeforeAd = 6;
233
+
234
+ var insertBrandInsightAd = function insertBrandInsightAd(arr, index, newElement) {
235
+ return [].concat(toConsumableArray._toConsumableArray(arr.slice(0, index)), [newElement], toConsumableArray._toConsumableArray(arr.slice(index)));
236
+ };
237
+ if (showBI && brandInsightAd) {
238
+ var pos = 0;
239
+ for (var i = 1; pos < data.length; i++) {
240
+ var inFeedAd = {
241
+ adUnit: brandInsightAd.adUnit,
242
+ className: brandInsightAd.className,
243
+ networkID: brandInsightAd.networkID,
244
+ sizes: brandInsightAd.sizes,
245
+ slotId: brandInsightAd.slotId + '_' + i,
246
+ targeting: {
247
+ pos: 'article' + i,
248
+ content_placement: brandInsightAd.targeting.content_placement,
249
+ document_url: brandInsightAd.targeting.document_url
250
+ },
251
+ _type: 'brandInsightAd'
252
+ };
253
+
254
+ data = insertBrandInsightAd(data, pos, inFeedAd);
255
+ pos += brandInsightAd.interval + 1;
256
+ }
257
+ }
258
+
259
+ return React__default.createElement(
260
+ 'div',
261
+ null,
262
+ data && data.length > 0 ? data.map(function (article, index) {
263
+ var pageNumber = article.pageNumber || values.page;
264
+
265
+ var contentCategoryName = article.contentCategory ? article.contentCategory.name : 'Articles';
266
+
267
+ if (article._type === 'feature') {
268
+ if (article.blank || checkExternalUrl(article.url.current)) {
269
+ return React__default.createElement(
270
+ React__default.Fragment,
271
+ { key: article._id ? article._id : index },
272
+ React__default.createElement(
273
+ visibilitySensor.VisibilitySensor,
274
+ {
275
+ key: article._id ? article._id : index,
276
+ partialVisibility: true,
277
+ onChange: function onChange(isVisible) {
278
+ isVisible && changePageNumber(1, seoPaginate, pageview, router, currentPage, setCurrentPage, itemsPerPage, parseInt(index));
279
+ } },
280
+ React__default.createElement(
281
+ React__default.Fragment,
282
+ null,
283
+ React__default.createElement(
284
+ reactBootstrap.Media,
285
+ {
286
+ key: article._id ? article._id : index,
287
+ className: 'feature-media',
288
+ style: { flexDirection: 'column', marginBottom: '1.25rem', paddingBottom: '1.25rem', borderBottom: '1px solid #ddd' } },
289
+ (article.thumbnail && article.thumbnail.asset || defaultImage) && React__default.createElement(
290
+ 'a',
291
+ { href: article.url.current, target: '_blank', className: 'feature-wrapper' },
292
+ React__default.createElement(
293
+ index$1.LazyLoad,
294
+ { height: imageHeight },
295
+ article.thumbnail && article.thumbnail.asset ? React__default.createElement('img', { className: 'img-fluid', src: renderCardImage(article, builder, imageHeight, imageWidth), alt: article.title }) : article.thumbnail ? React__default.createElement('img', { src: article.thumbnail, className: 'mr-3', alt: article.title }) : React__default.createElement('img', { src: defaultImage, src2: article.thumbnail, className: 'mr-3', width: '240', height: '135', alt: article.title })
296
+ )
297
+ ),
298
+ React__default.createElement(
299
+ reactBootstrap.Media.Body,
300
+ null,
301
+ React__default.createElement(
302
+ 'a',
303
+ { href: article.url.current, target: '_blank' },
304
+ article.title && React__default.createElement(
305
+ 'h4',
306
+ { className: 'card-title', style: { fontWeight: '500', color: 'var(--gray-dark)', marginBottom: '.5rem' } },
307
+ article.title
308
+ )
309
+ ),
310
+ showPublished && article.published && React__default.createElement(
311
+ 'p',
312
+ { className: 'card-text', style: { color: 'var(--dark)', marginBottom: '.25rem' } },
313
+ moment.moment(article.published).format('MMMM DD, YYYY')
314
+ ),
315
+ showAuthor && article.authorMapping && article.authorMapping.length > 0 && article.authorMapping.map(function (authorDetail, index) {
316
+ return renderAuthor(authorDetail, index, article.authorMapping.length);
317
+ }),
318
+ article.source && React__default.createElement(
319
+ 'p',
320
+ { className: 'p-0 mb-1' },
321
+ article.source
322
+ ),
323
+ showCategory && article.contentCategory && React__default.createElement(
324
+ 'p',
325
+ {
326
+ className: 'article-category',
327
+ style: {
328
+ background: '#3FB618',
329
+ color: '#ffffff',
330
+ marginBottom: '.25rem',
331
+ display: 'inline-block',
332
+ padding: '0 .25rem',
333
+ fontSize: '.8rem'
334
+ } },
335
+ article.contentCategory.name.slice(0, article.contentCategory.name.length - 1)
336
+ ),
337
+ article.summary && React__default.createElement(
338
+ 'p',
339
+ { className: 'pt-2 card-text' },
340
+ entities.clean_html_1(article.summary)
341
+ )
342
+ )
343
+ )
344
+ )
345
+ ),
346
+ main.main_39 && rightItems && (index + 1) % numberOfItemsBeforeAd === 0 && renderMobileAd(index, numberOfItemsBeforeAd, rightItems)
347
+ );
348
+ } else {
349
+ return React__default.createElement(
350
+ React__default.Fragment,
351
+ { key: article._id ? article._id : index },
352
+ React__default.createElement(
353
+ visibilitySensor.VisibilitySensor,
354
+ {
355
+ key: article._id ? article._id : index,
356
+ partialVisibility: true,
357
+ onChange: function onChange(isVisible) {
358
+ isVisible && changePageNumber(1, seoPaginate, pageview, router, currentPage, setCurrentPage, itemsPerPage, parseInt(index));
359
+ } },
360
+ React__default.createElement(
361
+ React__default.Fragment,
362
+ null,
363
+ React__default.createElement(
364
+ reactBootstrap.Media,
365
+ {
366
+ key: article._id ? article._id : index,
367
+ className: 'feature-media',
368
+ style: { flexDirection: 'column', marginBottom: '1.25rem', paddingBottom: '1.25rem', borderBottom: '1px solid #ddd' } },
369
+ (article.thumbnail && article.thumbnail.asset || defaultImage) && React__default.createElement(
370
+ 'a',
371
+ { href: article.url.current, className: 'feature-wrapper' },
372
+ React__default.createElement(
373
+ index$1.LazyLoad,
374
+ { height: imageHeight },
375
+ article.thumbnail && article.thumbnail.asset ? React__default.createElement('img', { className: 'img-fluid', src: renderCardImage(article, builder, imageHeight, imageWidth), alt: article.title }) : article.thumbnail ? React__default.createElement('img', { src: article.thumbnail, className: 'mr-3', alt: article.title }) : React__default.createElement('img', { src: defaultImage, src2: article.thumbnail, className: 'mr-3', width: '240', height: '135', alt: article.title })
376
+ )
377
+ ),
378
+ React__default.createElement(
379
+ reactBootstrap.Media.Body,
380
+ null,
381
+ React__default.createElement(
382
+ 'a',
383
+ { href: article.url.current },
384
+ article.title && React__default.createElement(
385
+ 'h4',
386
+ { className: 'card-title', style: { fontWeight: '500', color: 'var(--gray-dark)', marginBottom: '.5rem' } },
387
+ article.title
388
+ )
389
+ ),
390
+ showPublished && article.published && React__default.createElement(
391
+ 'p',
392
+ { className: 'card-text', style: { color: 'var(--dark)', marginBottom: '.25rem' } },
393
+ moment.moment(article.published).format('MMMM DD, YYYY')
394
+ ),
395
+ showAuthor && article.authorMapping && article.authorMapping.length > 0 && article.authorMapping.map(function (authorDetail, index) {
396
+ return renderAuthor(authorDetail, index, article.authorMapping.length);
397
+ }),
398
+ article.source && React__default.createElement(
399
+ 'p',
400
+ { className: 'p-0 mb-1' },
401
+ article.source
402
+ ),
403
+ showCategory && article.contentCategory && React__default.createElement(
404
+ 'p',
405
+ {
406
+ style: {
407
+ background: '#3FB618',
408
+ color: '#ffffff',
409
+ marginBottom: '.25rem',
410
+ display: 'inline-block',
411
+ padding: '0 .25rem',
412
+ fontSize: '.8rem'
413
+ } },
414
+ article.contentCategory.name.slice(0, article.contentCategory.name.length - 1)
415
+ ),
416
+ article.summary && React__default.createElement(
417
+ 'p',
418
+ { className: 'pt-2 card-text' },
419
+ entities.clean_html_1(article.summary)
420
+ )
421
+ )
422
+ )
423
+ )
424
+ ),
425
+ main.main_39 && rightItems && (index + 1) % numberOfItemsBeforeAd === 0 && renderMobileAd(index, numberOfItemsBeforeAd, rightItems)
426
+ );
427
+ }
428
+ } else if (article._type === 'brandInsightAd' && article.adUnit) {
429
+ return React__default.createElement(ADInfeed.ADInfeed, { index: index, infeedAd: article });
430
+ }
431
+
432
+ return React__default.createElement(
433
+ React__default.Fragment,
434
+ { key: article._id ? article._id : index },
435
+ React__default.createElement(
436
+ visibilitySensor.VisibilitySensor,
437
+ {
438
+ key: article._id ? article._id : index,
439
+ onChange: function onChange(isVisible) {
440
+ isVisible && changePageNumber(pageNumber, seoPaginate, pageview, router, currentPage, setCurrentPage, itemsPerPage, parseInt(index));
441
+ } },
442
+ React__default.createElement(
443
+ React__default.Fragment,
444
+ null,
445
+ React__default.createElement(
446
+ reactBootstrap.Media,
447
+ {
448
+ key: article._id ? article._id : index,
449
+ style: { flexDirection: 'row', marginBottom: '1.25rem', paddingBottom: '1.25rem', borderBottom: '1px solid #ddd' } },
450
+ (article.thumbnail && article.thumbnail.asset || defaultImage) && React__default.createElement(
451
+ 'a',
452
+ { href: mapping[contentCategoryName] + '/' + article.url.current, className: 'img-wrapper' },
453
+ React__default.createElement(
454
+ index$1.LazyLoad,
455
+ { height: imageHeight },
456
+ article.thumbnail && article.thumbnail.asset ? React__default.createElement('img', { className: 'mr-3 img-fluid', src: renderCardImage(article, builder, imageHeight, imageWidth), alt: article.title }) : article.thumbnail ? React__default.createElement('img', { src: article.thumbnail, className: 'mr-3', alt: article.title }) : React__default.createElement('img', { src: defaultImage, src2: article.thumbnail, className: 'mr-3', width: '240', height: '135', alt: article.title })
457
+ )
458
+ ),
459
+ React__default.createElement(
460
+ reactBootstrap.Media.Body,
461
+ null,
462
+ React__default.createElement(
463
+ 'a',
464
+ { href: mapping[contentCategoryName] + '/' + article.url.current },
465
+ article.title && React__default.createElement(
466
+ 'h4',
467
+ { className: 'card-title', style: { fontWeight: '500', color: 'var(--gray-dark)', marginBottom: '.5rem' } },
468
+ article.title
469
+ )
470
+ ),
471
+ showPublished && article.published && React__default.createElement(
472
+ 'p',
473
+ { className: 'card-text', style: { color: 'var(--dark)', marginBottom: '.25rem' } },
474
+ moment.moment(article.published).format('MMMM DD, YYYY')
475
+ ),
476
+ showAuthor && article.authorMapping && article.authorMapping.length > 0 && article.authorMapping.map(function (authorDetail, index) {
477
+ return renderAuthor(authorDetail, index, article.authorMapping.length);
478
+ }),
479
+ article.source && React__default.createElement(
480
+ 'p',
481
+ { className: 'p-0 mb-1' },
482
+ article.source
483
+ ),
484
+ showCategory && article.contentCategory && React__default.createElement(
485
+ 'p',
486
+ {
487
+ style: {
488
+ background: '#3FB618',
489
+ color: '#ffffff',
490
+ marginBottom: '.25rem',
491
+ display: 'inline-block',
492
+ padding: '0 .25rem',
493
+ fontSize: '.8rem'
494
+ } },
495
+ article.contentCategory.name.slice(0, article.contentCategory.name.length - 1)
496
+ ),
497
+ article.summary && React__default.createElement(
498
+ 'p',
499
+ { className: 'pt-2 card-text' },
500
+ entities.clean_html_1(article.summary)
501
+ )
502
+ )
503
+ )
504
+ )
505
+ ),
506
+ main.main_39 && rightItems && (index + 1) % numberOfItemsBeforeAd === 0 && renderMobileAd(index, numberOfItemsBeforeAd, rightItems)
507
+ );
508
+ }) : React__default.createElement(
509
+ 'div',
510
+ null,
511
+ React__default.createElement(
512
+ 'h5',
513
+ null,
514
+ React__default.createElement(
515
+ 'em',
516
+ null,
517
+ 'New content coming soon, please check back later.'
518
+ )
519
+ )
520
+ ),
521
+ React__default.createElement(
522
+ 'style',
523
+ { jsx: 'true' },
524
+ '\n .feature-media > .media-body {\n -webkit-box-flex: none;\n -ms-flex: none;\n flex: none;\n }\n .img-wrapper img {\n max-height: 240px;\n height: auto;\n width: 100%;\n object-fit: contain;\n }\n .feature-wrapper {\n height: 100%;\n width: 100%;\n }\n .feature-wrapper img {\n width: 100%;\n margin-bottom: 1em;\n }\n @media only screen and (min-width: 768px) {\n .img-wrapper > img {\n padding-right: 1em;\n }\n }\n @media only screen and (max-width: 767px) {\n .img-wrapper {\n width: 100%;\n }\n .img-wrapper img {\n padding-bottom: 1em;\n }\n .media {\n flex-direction: column !important;\n }\n }\n '
525
+ )
526
+ );
527
+ };
528
+
529
+ var renderMobileAd = function renderMobileAd(index, numberOfItemsBeforeAd, rightItems) {
530
+ var i = ((index + 1) / numberOfItemsBeforeAd - 1) % rightItems.length;
531
+ return React__default.createElement(
532
+ 'div',
533
+ { style: { display: 'flex', flex: '1 0 auto' } },
534
+ rightItems[i].component
535
+ );
536
+ };
537
+
538
+ var renderManualPagination = function renderManualPagination(currentPage) {
539
+ return React__default.createElement(
540
+ 'div',
541
+ { className: 'd-flex justify-content-between' },
542
+ currentPage && currentPage > 1 && React__default.createElement(
543
+ 'a',
544
+ { href: '?page=' + (currentPage - 1) },
545
+ '<< Previous'
546
+ ),
547
+ React__default.createElement(
548
+ 'a',
549
+ { href: '?page=' + (currentPage + 1) },
550
+ 'Next >>'
551
+ )
552
+ );
553
+ };
554
+
555
+ var usePrevious = function usePrevious(value) {
556
+ var ref = React.useRef();
557
+ React.useEffect(function () {
558
+ ref.current = value;
559
+ });
560
+ return ref.current;
561
+ };
562
+
563
+ var InfiniteScrollDeck = function InfiniteScrollDeck(props) {
564
+ var router = Router.useRouter();
565
+ var initialData = props.dataRecord,
566
+ client = props.client,
567
+ params = props.params,
568
+ query = props.query,
569
+ autoScroll = props.autoScroll,
570
+ pointer = props.pointer,
571
+ pointerArray = props.pointerArray,
572
+ mapping = props.mapping,
573
+ seoPaginate = props.seoPaginate,
574
+ pageview = props.pageview,
575
+ defaultImage = props.defaultImage,
576
+ showAuthor = props.showAuthor,
577
+ showCategory = props.showCategory,
578
+ imageHeight = props.imageHeight,
579
+ imageWidth = props.imageWidth,
580
+ rightItems = props.rightItems,
581
+ brandInsightAd = props.brandInsightAd,
582
+ _props$showBI = props.showBI,
583
+ showBI = _props$showBI === undefined ? false : _props$showBI;
584
+ var initialCurrentPage = props.currentPage,
585
+ showPublished = props.showPublished;
586
+
587
+ var builder = index.imageUrlBuilder(client);
588
+
589
+ var _useState = React.useState(initialData),
590
+ _useState2 = slicedToArray._slicedToArray(_useState, 2),
591
+ data = _useState2[0],
592
+ setData = _useState2[1];
593
+
594
+ var _useState3 = React.useState(true),
595
+ _useState4 = slicedToArray._slicedToArray(_useState3, 2),
596
+ scrolling = _useState4[0],
597
+ setScrolling = _useState4[1];
598
+
599
+ var _useState5 = React.useState(params ? params.to : 0),
600
+ _useState6 = slicedToArray._slicedToArray(_useState5, 1),
601
+ per = _useState6[0];
602
+
603
+ var _useState7 = React.useState(initialCurrentPage || 1),
604
+ _useState8 = slicedToArray._slicedToArray(_useState7, 2),
605
+ currentPage = _useState8[0],
606
+ setCurrentPage = _useState8[1];
607
+
608
+ var _useState9 = React.useState({
609
+ from: params ? params.from : 0,
610
+ to: params ? params.to : 0,
611
+ page: 1
612
+ }),
613
+ _useState10 = slicedToArray._slicedToArray(_useState9, 2),
614
+ values = _useState10[0],
615
+ setValues = _useState10[1];
616
+
617
+ var itemsPerPage = params.itemsPerPage;
618
+
619
+ var prevValues = usePrevious(values);
620
+
621
+ React.useEffect(function () {
622
+ if (prevValues) {
623
+ if (values.page !== prevValues.page && values.from !== prevValues.from && values.to !== prevValues.from) {
624
+ loadData(values, query, client, params, setData, setScrolling, pointer, pointerArray);
625
+ }
626
+ }
627
+ }, [values, prevValues, query, client, params, setData, setScrolling, pointer, pointerArray]);
628
+
629
+ React.useEffect(function () {
630
+ document.addEventListener('scroll', trackScrolling);
631
+ return function () {
632
+ document.removeEventListener('scroll', trackScrolling);
633
+ };
634
+ }, [currentPage]);
635
+
636
+ var trackScrolling = function trackScrolling(current) {
637
+ if (window.pageYOffset === 0) {
638
+ if (currentPage > 1) {
639
+ changePageNumber(1, seoPaginate, pageview, router, currentPage, setCurrentPage, itemsPerPage, 1);
640
+ }
641
+ }
642
+ };
643
+
644
+ return React__default.createElement(
645
+ 'div',
646
+ null,
647
+ autoScroll ? React__default.createElement(
648
+ React__default.Fragment,
649
+ null,
650
+ React__default.createElement(
651
+ visibilitySensor.InfiniteScroll,
652
+ { dataLength: data && data.length, next: function next() {
653
+ return loadMore(values, setValues, per);
654
+ }, hasMore: scrolling, scrollThreshold: 0.9 },
655
+ React__default.createElement(
656
+ reactBootstrap.Container,
657
+ null,
658
+ cardLoader(data, builder, mapping, values, seoPaginate, pageview, router, currentPage, setCurrentPage, showPublished, defaultImage, showAuthor, showCategory, imageHeight, imageWidth, rightItems, brandInsightAd, showBI, itemsPerPage)
659
+ )
660
+ ),
661
+ React__default.createElement(
662
+ 'noscript',
663
+ null,
664
+ renderManualPagination(currentPage)
665
+ )
666
+ ) : React__default.createElement(
667
+ React__default.Fragment,
668
+ null,
669
+ React__default.createElement(
670
+ reactBootstrap.Container,
671
+ null,
672
+ cardLoader(data, builder, mapping, values, seoPaginate, pageview, router, currentPage, setCurrentPage, showPublished, defaultImage, showAuthor, showCategory, rightItems, brandInsightAd, showBI, itemsPerPage)
673
+ ),
674
+ React__default.createElement(
675
+ 'div',
676
+ { style: { padding: '0px 10px' } },
677
+ scrolling ? React__default.createElement(
678
+ 'button',
679
+ {
680
+ style: { margin: 'auto', width: '100%' },
681
+ onClick: function onClick(e) {
682
+ loadMore(values, setValues, per);
683
+ } },
684
+ 'Load More'
685
+ ) : React__default.createElement(
686
+ 'p',
687
+ { style: { textAlign: 'center' } },
688
+ React__default.createElement(
689
+ 'b',
690
+ null,
691
+ 'End of data'
692
+ )
693
+ )
694
+ ),
695
+ React__default.createElement(
696
+ 'noscript',
697
+ null,
698
+ renderManualPagination(currentPage)
699
+ )
700
+ )
701
+ );
702
+ };
703
+
78
704
  var momentTimezone = _commonjsHelpers.createCommonjsModule(function (module) {
79
705
  //! moment-timezone.js
80
706
  //! version : 0.5.31
@@ -1626,12 +2252,12 @@ var latest = {
1626
2252
  };
1627
2253
 
1628
2254
  var latest$1 = /*#__PURE__*/Object.freeze({
1629
- __proto__: null,
1630
- version: version,
1631
- zones: zones,
1632
- links: links,
1633
- countries: countries,
1634
- 'default': latest
2255
+ __proto__: null,
2256
+ version: version,
2257
+ zones: zones,
2258
+ links: links,
2259
+ countries: countries,
2260
+ 'default': latest
1635
2261
  });
1636
2262
 
1637
2263
  var require$$1 = _commonjsHelpers.getCjsExportFromNamespace(latest$1);
@@ -1804,7 +2430,9 @@ var itemsPerPage = 200;
1804
2430
  var EventsDeck = function EventsDeck(_ref) {
1805
2431
  var rightItems = _ref.rightItems,
1806
2432
  _ref$filter = _ref.filter,
1807
- filter = _ref$filter === undefined ? 'start gt \'' + currentTime + '\' and status eq \'Active\'' : _ref$filter;
2433
+ filter = _ref$filter === undefined ? 'start gt \'' + currentTime + '\' and status eq \'Active\'' : _ref$filter,
2434
+ _ref$hardCodedEvents = _ref.hardCodedEvents,
2435
+ hardCodedEvents = _ref$hardCodedEvents === undefined ? null : _ref$hardCodedEvents;
1808
2436
 
1809
2437
  var _useState = React.useState(true),
1810
2438
  _useState2 = slicedToArray._slicedToArray(_useState, 2),
@@ -1845,11 +2473,31 @@ var EventsDeck = function EventsDeck(_ref) {
1845
2473
  return response.json();
1846
2474
  }).then(function (events) {
1847
2475
  setIsLoading(false);
2476
+
2477
+ if (hardCodedEvents) {
2478
+ var temp = [].concat(toConsumableArray._toConsumableArray(events.data));
2479
+ if (filter.indexOf('start') >= 0 && hardCodedEvents.upcomingEvents.length > 0) {
2480
+ for (var event in hardCodedEvents.upcomingEvents) {
2481
+ temp.push(hardCodedEvents.upcomingEvents[event]);
2482
+ }
2483
+ }
2484
+ if (filter.indexOf('end') >= 0 && hardCodedEvents.pastEvents.length > 0) {
2485
+ for (var _event in hardCodedEvents.pastEvents) {
2486
+ temp.push(hardCodedEvents.pastEvents[_event]);
2487
+ }
2488
+ }
2489
+ events.data = temp;
2490
+ }
2491
+
1848
2492
  if (events.data && events.data.length > 0) {
1849
2493
  var filteredEventsByTestMode = events.data.filter(function (event) {
1850
2494
  return event.testMode === false;
1851
2495
  });
1852
2496
  var sortedEventsByStartData = filteredEventsByTestMode.sort(function (a, b) {
2497
+ console.log(a.start);
2498
+ if (a.start.indexOf('TBD') >= 0 || b.start.indexOf('TBD') >= 0) {
2499
+ return -1;
2500
+ }
1853
2501
  if (momentTimezone$1(a.start).isAfter(b.start)) {
1854
2502
  return 1;
1855
2503
  } else if (momentTimezone$1(a.start).isBefore(b.start)) {
@@ -1920,10 +2568,10 @@ var EventsDeck = function EventsDeck(_ref) {
1920
2568
  fetch(url, {
1921
2569
  headers: {
1922
2570
  'Content-Type': 'application/json',
1923
- 'Accept': 'application/json'
2571
+ Accept: 'application/json'
1924
2572
  },
1925
2573
  method: 'post',
1926
- credentials: "include",
2574
+ credentials: 'include',
1927
2575
  body: AdSlot._JSON$stringify({
1928
2576
  clientId: clientId,
1929
2577
  clientSecret: clientSecret
@@ -1951,6 +2599,17 @@ var EventsDeck = function EventsDeck(_ref) {
1951
2599
  )
1952
2600
  );
1953
2601
  };
2602
+ var renderLearnMoreButton = function renderLearnMoreButton(links) {
2603
+ return React__default.createElement(
2604
+ 'a',
2605
+ { href: links.summary.href || '#', target: '_blank' },
2606
+ React__default.createElement(
2607
+ Button,
2608
+ { size: 'sm', className: 'registration-button', style: { borderRadius: '8px' } },
2609
+ 'Learn More'
2610
+ )
2611
+ );
2612
+ };
1954
2613
 
1955
2614
  var cardLoader = function cardLoader() {
1956
2615
  var numberOfItemsBeforeAd = 5;
@@ -1967,7 +2626,7 @@ var EventsDeck = function EventsDeck(_ref) {
1967
2626
  }
1968
2627
  });
1969
2628
  }
1970
-
2629
+ var isHardcoded = row.hardCoded;
1971
2630
  var start = row.start,
1972
2631
  end = row.end,
1973
2632
  venues = row.venues,
@@ -1990,14 +2649,24 @@ var EventsDeck = function EventsDeck(_ref) {
1990
2649
  }
1991
2650
  return result;
1992
2651
  }, '') : '';
1993
-
2652
+ var startDay = momentTimezone$1(start).tz(timezone).format();
2653
+ var endDay = momentTimezone$1(end).tz(timezone).format();
2654
+ var showEndTime = momentTimezone$1(startDay.split('T')[0]).isBefore(endDay.split('T')[0]) ? ' to ' + momentTimezone$1(end).tz(timezone).format('LLL zz') : null;
1994
2655
  return React__default.createElement(
1995
2656
  React__default.Fragment,
1996
2657
  { key: index },
1997
2658
  React__default.createElement(
1998
2659
  Card,
1999
2660
  null,
2000
- isRegister && _links && React__default.createElement(
2661
+ isHardcoded ? _links && React__default.createElement(
2662
+ Row,
2663
+ null,
2664
+ React__default.createElement(
2665
+ Col,
2666
+ null,
2667
+ renderLearnMoreButton(_links)
2668
+ )
2669
+ ) : isRegister && _links && React__default.createElement(
2001
2670
  Row,
2002
2671
  null,
2003
2672
  React__default.createElement(
@@ -2021,10 +2690,15 @@ var EventsDeck = function EventsDeck(_ref) {
2021
2690
  React__default.createElement(
2022
2691
  Col,
2023
2692
  null,
2024
- React__default.createElement(
2693
+ start.indexOf('TBD') >= 0 ? React__default.createElement(
2025
2694
  'p',
2026
2695
  { className: 'start-time', style: { padding: 0, margin: 0 } },
2027
- momentTimezone$1(start).tz(timezone).format('LLL')
2696
+ start
2697
+ ) : React__default.createElement(
2698
+ 'p',
2699
+ { className: 'start-time', style: { padding: 0, margin: 0 } },
2700
+ start.indexOf('T') >= 0 ? momentTimezone$1(start).tz(timezone).format('LLL zz') : momentTimezone$1(start).format('LL'),
2701
+ showEndTime
2028
2702
  )
2029
2703
  )
2030
2704
  ),
@@ -3162,7 +3836,7 @@ var ADSponsoredResources = function ADSponsoredResources(_ref) {
3162
3836
  } else return null;
3163
3837
  };
3164
3838
 
3165
- var urlFor$1 = function urlFor(source, builder) {
3839
+ var urlFor$2 = function urlFor(source, builder) {
3166
3840
  return builder.image(source).auto('format');
3167
3841
  };
3168
3842
 
@@ -3213,7 +3887,7 @@ var Slideshow = function Slideshow(_ref) {
3213
3887
  return React__default.createElement(
3214
3888
  reactBootstrap.Carousel.Item,
3215
3889
  { key: slide._key },
3216
- React__default.createElement('img', { src: slide.asset && urlFor$1(slide.asset, builder).url(), alt: slide.alt && slide.alt, style: { width: '100%' } }),
3890
+ React__default.createElement('img', { src: slide.asset && urlFor$2(slide.asset, builder).url(), alt: slide.alt && slide.alt, style: { width: '100%' } }),
3217
3891
  slide.caption && React__default.createElement(
3218
3892
  'p',
3219
3893
  { className: 'p-2' },
@@ -13522,7 +14196,7 @@ var Leads = function Leads(_ref) {
13522
14196
  );
13523
14197
  };
13524
14198
 
13525
- var urlFor$2 = function urlFor(source, client) {
14199
+ var urlFor$3 = function urlFor(source, client) {
13526
14200
  var builder = index.imageUrlBuilder(client);
13527
14201
  return builder.image(source).auto('format');
13528
14202
  };
@@ -13579,7 +14253,7 @@ var Slideshow$1 = function Slideshow(_ref) {
13579
14253
  React__default.createElement(
13580
14254
  index$1.LazyLoad,
13581
14255
  null,
13582
- React__default.createElement('img', { src: urlFor$2(slide.slideshowImage, client).url(), alt: slide.slideshowImage.alt || 'slideshow image', style: { width: '100%' } })
14256
+ React__default.createElement('img', { src: urlFor$3(slide.slideshowImage, client).url(), alt: slide.slideshowImage.alt || 'slideshow image', style: { width: '100%' } })
13583
14257
  )
13584
14258
  ),
13585
14259
  React__default.createElement(
@@ -14013,13 +14687,13 @@ var SetCookie = function SetCookie(key, value) {
14013
14687
  js_cookie.set(key, value, { expires: 1, sameSite: 'none', secure: true });
14014
14688
  };
14015
14689
 
14016
- var urlFor$3 = function urlFor(source, client) {
14690
+ var urlFor$4 = function urlFor(source, client) {
14017
14691
  var builder = index.imageUrlBuilder(client);
14018
14692
  return builder.image(source).auto('format');
14019
14693
  };
14020
14694
 
14021
- var renderCardImage = function renderCardImage(thumbnail, client, imageHeight, imageWidth) {
14022
- var url = urlFor$3(thumbnail, client);
14695
+ var renderCardImage$1 = function renderCardImage(thumbnail, client, imageHeight, imageWidth) {
14696
+ var url = urlFor$4(thumbnail, client);
14023
14697
  if (imageHeight) url = url.height(imageHeight);
14024
14698
  if (imageWidth) url = url.width(imageWidth);
14025
14699
  return url.url();
@@ -14046,7 +14720,7 @@ var Hero = function Hero(_ref) {
14046
14720
  { className: 'h4' },
14047
14721
  title
14048
14722
  ),
14049
- thumbnail && client && React__default.createElement(reactBootstrap.Card.Img, { src: renderCardImage(thumbnail, client, imageHeight, imageWidth) }),
14723
+ thumbnail && client && React__default.createElement(reactBootstrap.Card.Img, { src: renderCardImage$1(thumbnail, client, imageHeight, imageWidth) }),
14050
14724
  summary && React__default.createElement(
14051
14725
  reactBootstrap.Card.Footer,
14052
14726
  { className: 'h6' },
@@ -16217,7 +16891,7 @@ var InscreenSensor = function (_React$Component) {
16217
16891
  return InscreenSensor;
16218
16892
  }(React__default.Component);
16219
16893
 
16220
- var renderAuthor = function renderAuthor(authorName, authorURL, index, length) {
16894
+ var renderAuthor$1 = function renderAuthor(authorName, authorURL, index, length) {
16221
16895
  if (authorName && authorURL) {
16222
16896
  return React__default.createElement(
16223
16897
  'a',
@@ -16519,7 +17193,7 @@ var Article = function Article(props) {
16519
17193
  return React__default.createElement(
16520
17194
  'div',
16521
17195
  { key: index },
16522
- renderAuthor(authorDetail.displayName, authorDetail.url, index, authorDetails.length)
17196
+ renderAuthor$1(authorDetail.displayName, authorDetail.url, index, authorDetails.length)
16523
17197
  );
16524
17198
  }),
16525
17199
  React__default.createElement(
@@ -17094,8 +17768,8 @@ function useUser() {
17094
17768
  }
17095
17769
 
17096
17770
  var hooks = /*#__PURE__*/Object.freeze({
17097
- __proto__: null,
17098
- useUser: useUser
17771
+ __proto__: null,
17772
+ useUser: useUser
17099
17773
  });
17100
17774
 
17101
17775
  var LoginForm = function LoginForm(props) {
@@ -18317,11 +18991,11 @@ function getTokenCookie(req) {
18317
18991
  }
18318
18992
 
18319
18993
  var authCookies = /*#__PURE__*/Object.freeze({
18320
- __proto__: null,
18321
- setTokenCookie: setTokenCookie,
18322
- removeTokenCookie: removeTokenCookie,
18323
- parseCookies: parseCookies,
18324
- getTokenCookie: getTokenCookie
18994
+ __proto__: null,
18995
+ setTokenCookie: setTokenCookie,
18996
+ removeTokenCookie: removeTokenCookie,
18997
+ parseCookies: parseCookies,
18998
+ getTokenCookie: getTokenCookie
18325
18999
  });
18326
19000
 
18327
19001
  function encryptSession(session) {
@@ -18365,9 +19039,9 @@ var getSession = function () {
18365
19039
  }();
18366
19040
 
18367
19041
  var iron = /*#__PURE__*/Object.freeze({
18368
- __proto__: null,
18369
- encryptSession: encryptSession,
18370
- getSession: getSession
19042
+ __proto__: null,
19043
+ encryptSession: encryptSession,
19044
+ getSession: getSession
18371
19045
  });
18372
19046
 
18373
19047
  var toStr = Object.prototype.toString;
@@ -20622,10 +21296,10 @@ var findUser$1 = function () {
20622
21296
  }();
20623
21297
 
20624
21298
  var user = /*#__PURE__*/Object.freeze({
20625
- __proto__: null,
20626
- createUser: createUser$1,
20627
- updateUser: updateUser$1,
20628
- findUser: findUser$1
21299
+ __proto__: null,
21300
+ createUser: createUser$1,
21301
+ updateUser: updateUser$1,
21302
+ findUser: findUser$1
20629
21303
  });
20630
21304
 
20631
21305
  var localStrategy = new Local.Strategy({
@@ -20641,8 +21315,8 @@ var localStrategy = new Local.Strategy({
20641
21315
  });
20642
21316
 
20643
21317
  var passportLocal = /*#__PURE__*/Object.freeze({
20644
- __proto__: null,
20645
- localStrategy: localStrategy
21318
+ __proto__: null,
21319
+ localStrategy: localStrategy
20646
21320
  });
20647
21321
 
20648
21322
  var _this$4 = undefined;
@@ -20889,6 +21563,7 @@ exports.GridHero = GridHero;
20889
21563
  exports.Hero = Hero;
20890
21564
  exports.HighlightenVideo = HighlightenVideo;
20891
21565
  exports.HorizontalHero = HorizontalHero;
21566
+ exports.InfiniteScrollDeck = InfiniteScrollDeck;
20892
21567
  exports.KMTracker = KMTracker;
20893
21568
  exports.OncliveHero = OncliveHero;
20894
21569
  exports.OncliveLargeHero = OncliveLargeHero;