@mjhls/mjh-framework 1.0.220 → 1.0.222

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/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- # mjh-framework v. 1.0.220
2
+ # mjh-framework v. 1.0.222
3
3
 
4
4
 
5
5
 
@@ -0,0 +1,69 @@
1
+ 'use strict';
2
+
3
+ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
4
+
5
+ var React = require('react');
6
+ var React__default = _interopDefault(React);
7
+ var index = require('./index-0322e486.js');
8
+ var PropTypes = _interopDefault(require('prop-types'));
9
+ var debounce = require('./debounce-a963b136.js');
10
+ var _babelHelpers = require('./_babelHelpers-f321c258.js');
11
+
12
+ var DFPAdSlot = function DFPAdSlot(_ref) {
13
+ var adUnit = _ref.adUnit,
14
+ sizeMapping = _ref.sizeMapping,
15
+ className = _ref.className,
16
+ slotId = _ref.slotId,
17
+ sizes = _ref.sizes,
18
+ _ref$targeting = _ref.targeting,
19
+ targeting = _ref$targeting === undefined ? {} : _ref$targeting;
20
+
21
+ var _useState = React.useState(false),
22
+ _useState2 = _babelHelpers.slicedToArray(_useState, 2),
23
+ adRendered = _useState2[0],
24
+ setAdRendered = _useState2[1];
25
+
26
+ var _useState3 = React.useState(false),
27
+ _useState4 = _babelHelpers.slicedToArray(_useState3, 2),
28
+ adRefreshable = _useState4[0],
29
+ setAdRefreshable = _useState4[1];
30
+
31
+ var handleVisibilityChange = debounce.debounce_1(function (_ref2) {
32
+ var event = _ref2.event;
33
+
34
+ if (event.inViewPercentage <= 0) {
35
+ setAdRefreshable(false);
36
+ } else {
37
+ setAdRefreshable(true);
38
+ }
39
+ }, 500);
40
+
41
+ return React__default.createElement(
42
+ 'div',
43
+ { className: className },
44
+ React__default.createElement(index.lib_2, {
45
+ slotId: slotId,
46
+ sizes: sizes,
47
+ adUnit: adUnit,
48
+ sizeMapping: sizeMapping,
49
+ targetingArguments: targeting,
50
+ onSlotRender: function onSlotRender(eventData) {
51
+ setAdRendered(true);
52
+ },
53
+ onSlotVisibilityChanged: handleVisibilityChange,
54
+ shouldRefresh: function shouldRefresh() {
55
+ if (adRendered && adRefreshable) return true;else return false;
56
+ }
57
+ })
58
+ );
59
+ };
60
+
61
+ DFPAdSlot.propTypes = {
62
+ adUnit: PropTypes.string.isRequired,
63
+ slotId: PropTypes.string,
64
+ className: PropTypes.string,
65
+ sizeMapping: PropTypes.array,
66
+ sizes: PropTypes.array
67
+ };
68
+
69
+ exports.DFPAdSlot = DFPAdSlot;
@@ -22,6 +22,7 @@ var index$2 = require('./index-0d0efcfa.js');
22
22
  var main = require('./main-58839f4e.js');
23
23
  var entities = require('./entities-3e0b4a16.js');
24
24
  var _babelHelpers = require('./_babelHelpers-f321c258.js');
25
+ var AdSlot = require('./AdSlot-d87cef08.js');
25
26
 
26
27
  var DeckContent = function (_React$Component) {
27
28
  _babelHelpers.inherits(DeckContent, _React$Component);
@@ -222,16 +223,47 @@ var DeckContent = function (_React$Component) {
222
223
  );
223
224
  }
224
225
  } else return null;
225
- }, _this.cardLoader = function (page, columns, variant) {
226
+ }, _this.cardLoader = function (page, columns, variant, showBI, brandInsight) {
226
227
  var mode = variant && variant === 'bottom' ? 'column-reverse' : 'column';
227
228
 
228
229
  var itemCounter = 0;
229
230
  var lgVar = 12;
230
231
  var numberOfItemsBeforeAd = 6;
232
+
233
+ var insert = function insert(arr, index, newElement) {
234
+ return [].concat(_babelHelpers.toConsumableArray(arr.slice(0, index)), [newElement], _babelHelpers.toConsumableArray(arr.slice(index)));
235
+ };
236
+ var articles = [];
237
+ if (showBI) {
238
+ var data = _this.state.data;
239
+ articles = data;
240
+ var pos = 3;
241
+ for (var i = 1; pos < articles.length; i++) {
242
+ var inFeedAd = {
243
+ adUnit: brandInsight.adUnit,
244
+ className: brandInsight.className,
245
+ networkID: brandInsight.networkID,
246
+ sizes: brandInsight.sizes,
247
+ slotId: brandInsight.slotId,
248
+ targeting: {
249
+ pos: 'article' + i,
250
+ content_placement: brandInsight.targeting.content_placement,
251
+ document_url: brandInsight.targeting.document_url
252
+ },
253
+ _type: 'BrandInsight'
254
+ };
255
+
256
+ articles = insert(articles, pos, inFeedAd);
257
+ pos += brandInsight.interval + 1;
258
+ }
259
+ } else {
260
+ articles = _this.state.data;
261
+ }
262
+
231
263
  return React__default.createElement(
232
264
  Row,
233
265
  null,
234
- _this.state.data && _this.state.data.map(function (row, index) {
266
+ articles && articles.map(function (row, index) {
235
267
  if (columns === 'rotate' && itemCounter % 3 === 0) {
236
268
  lgVar = 12;
237
269
  } else if (columns && columns !== 'rotate') {
@@ -239,64 +271,87 @@ var DeckContent = function (_React$Component) {
239
271
  } else {
240
272
  lgVar = 6;
241
273
  }
242
-
243
- var pageNumber = row.pageNumber || _this.state.page;
244
- var contentCategoryName = row.contentCategory && row.contentCategory.name && _this.mapping[row.contentCategory.name] ? row.contentCategory.name : 'Articles';
245
- return React__default.createElement(
246
- React__default.Fragment,
247
- { key: itemCounter },
248
- React__default.createElement(
249
- visibilitySensor.VisibilitySensor,
250
- {
251
- onChange: function onChange(isVisible) {
252
- isVisible && _this.changePageNumber(pageNumber);
253
- } },
274
+ if (row._type === 'BrandInsight' && row.adUnit) {
275
+ return React__default.createElement(
276
+ React__default.Fragment,
277
+ { key: itemCounter, className: 'brand-insight-wrapper' },
254
278
  React__default.createElement(
255
279
  Col,
256
- { md: 12, lg: lgVar, counter: itemCounter++, style: { display: 'flex', flex: '1 0 auto' } },
280
+ { sm: 12, counter: itemCounter++, style: { display: 'flex', flex: '1 0 auto' } },
257
281
  React__default.createElement(
258
282
  Card,
259
- { className: 'content-card', style: { flexDirection: mode } },
260
- (row.thumbnail && row.thumbnail.asset || _this.props.defaultImage) && React__default.createElement(
261
- 'a',
262
- { href: _this.mapping[contentCategoryName] + '/' + row.url.current },
263
- React__default.createElement(
264
- index$2.LazyLoad,
265
- { height: _this.props.imageHeight },
266
- React__default.createElement(Card.Img, { variant: 'top', src: _this.renderCardImage(row, page), alt: row.thumbnail && row.thumbnail.asset ? row.thumbnail.asset.originalFilename : '' })
267
- )
268
- ),
283
+ { className: 'content-card ad-wrapper', style: { flexDirection: index === 0 || index % 4 === 0 ? 'top' : 'row' } },
269
284
  React__default.createElement(
270
- Card.Body,
271
- null,
272
- React__default.createElement(
285
+ 'div',
286
+ { className: row.className, style: { width: '100%', height: 'auto' } },
287
+ React__default.createElement(AdSlot.DFPAdSlot, { networkID: row.networkID, adUnit: row.adUnit, slotId: row.slotId, targeting: row.targeting, sizes: row.sizes })
288
+ )
289
+ )
290
+ )
291
+ );
292
+ } else {
293
+ var pageNumber = row.pageNumber || _this.state.page;
294
+ var contentCategoryName = row.contentCategory && row.contentCategory.name && _this.mapping[row.contentCategory.name] ? row.contentCategory.name : 'Articles';
295
+ return React__default.createElement(
296
+ React__default.Fragment,
297
+ { key: itemCounter },
298
+ React__default.createElement(
299
+ visibilitySensor.VisibilitySensor,
300
+ {
301
+ onChange: function onChange(isVisible) {
302
+ isVisible && _this.changePageNumber(pageNumber);
303
+ } },
304
+ React__default.createElement(
305
+ Col,
306
+ { md: 12, lg: lgVar, counter: itemCounter++, style: { display: 'flex', flex: '1 0 auto' } },
307
+ React__default.createElement(
308
+ Card,
309
+ { className: 'content-card', style: { flexDirection: mode } },
310
+ (row.thumbnail && row.thumbnail.asset || _this.props.defaultImage) && React__default.createElement(
273
311
  'a',
274
312
  { href: _this.mapping[contentCategoryName] + '/' + row.url.current },
275
313
  React__default.createElement(
276
- Card.Title,
277
- null,
278
- row.title
314
+ index$2.LazyLoad,
315
+ { height: _this.props.imageHeight },
316
+ React__default.createElement(Card.Img, {
317
+ variant: 'top',
318
+ src: _this.renderCardImage(row, page),
319
+ alt: row.thumbnail && row.thumbnail.asset ? row.thumbnail.asset.originalFilename : ''
320
+ })
279
321
  )
280
322
  ),
281
- _this.props.showPublished && row.published && React__default.createElement(
282
- Card.Subtitle,
283
- null,
284
- visibilitySensor.moment(row.published).format('MMMM DD, YYYY')
285
- ),
286
- _this.props.showAuthor && row.authorMapping && row.authorMapping.length > 0 && row.authorMapping.map(function (authorDetail, index) {
287
- return _this.renderAuthor(authorDetail, index, row.authorMapping.length);
288
- }),
289
323
  React__default.createElement(
290
- Card.Text,
324
+ Card.Body,
291
325
  null,
292
- entities.clean_html_1(row.summary)
326
+ React__default.createElement(
327
+ 'a',
328
+ { href: _this.mapping[contentCategoryName] + '/' + row.url.current },
329
+ React__default.createElement(
330
+ Card.Title,
331
+ null,
332
+ row.title
333
+ )
334
+ ),
335
+ _this.props.showPublished && row.published && React__default.createElement(
336
+ Card.Subtitle,
337
+ null,
338
+ visibilitySensor.moment(row.published).format('MMMM DD, YYYY')
339
+ ),
340
+ _this.props.showAuthor && row.authorMapping && row.authorMapping.length > 0 && row.authorMapping.map(function (authorDetail, index) {
341
+ return _this.renderAuthor(authorDetail, index, row.authorMapping.length);
342
+ }),
343
+ React__default.createElement(
344
+ Card.Text,
345
+ null,
346
+ entities.clean_html_1(row.summary)
347
+ )
293
348
  )
294
349
  )
295
350
  )
296
- )
297
- ),
298
- main.main_36 && _this.props.rightItems && (index + 1) % numberOfItemsBeforeAd === 0 && _this.renderMobileAd(index, numberOfItemsBeforeAd)
299
- );
351
+ ),
352
+ main.main_36 && _this.props.rightItems && (index + 1) % numberOfItemsBeforeAd === 0 && _this.renderMobileAd(index, numberOfItemsBeforeAd)
353
+ );
354
+ }
300
355
  })
301
356
  );
302
357
  }, _this.renderMobileAd = function (index, numberOfItemsBeforeAd) {
@@ -360,7 +415,9 @@ var DeckContent = function (_React$Component) {
360
415
  columns = _props.columns,
361
416
  variant = _props.variant,
362
417
  autoScroll = _props.autoScroll,
363
- page = _props.page;
418
+ page = _props.page,
419
+ showBI = _props.showBI,
420
+ brandInsight = _props.brandInsight;
364
421
 
365
422
 
366
423
  return React__default.createElement(
@@ -375,7 +432,7 @@ var DeckContent = function (_React$Component) {
375
432
  React__default.createElement(
376
433
  Container,
377
434
  null,
378
- this.cardLoader(page, columns, variant)
435
+ this.cardLoader(page, columns, variant, showBI, brandInsight)
379
436
  )
380
437
  ),
381
438
  React__default.createElement(
@@ -389,7 +446,7 @@ var DeckContent = function (_React$Component) {
389
446
  React__default.createElement(
390
447
  Container,
391
448
  null,
392
- this.cardLoader(page, columns, variant)
449
+ this.cardLoader(page, columns, variant, showBI, brandInsight)
393
450
  ),
394
451
  React__default.createElement(
395
452
  'div',
@@ -19,6 +19,7 @@ var index$2 = require('./index-0d0efcfa.js');
19
19
  var main = require('./main-58839f4e.js');
20
20
  var entities = require('./entities-3e0b4a16.js');
21
21
  var _babelHelpers = require('./_babelHelpers-f321c258.js');
22
+ var AdSlot = require('./AdSlot-d87cef08.js');
22
23
  var get$1 = require('./get-126b1712.js');
23
24
 
24
25
  var Dfp = React__default.lazy(function () {
@@ -342,11 +343,22 @@ var GridContent = function (_React$Component) {
342
343
  var data = this.state.data;
343
344
  posts = data;
344
345
  var pos = 3;
345
- var i = 1;
346
- while (pos < posts.length) {
347
- brandInsight.targeting.pos = 'article' + i;
348
- posts = insert(posts, pos, brandInsight);
349
- i++;
346
+ for (var i = 1; pos < posts.length; i++) {
347
+ var inFeedAd = {
348
+ adUnit: brandInsight.adUnit,
349
+ className: brandInsight.className,
350
+ networkID: brandInsight.networkID,
351
+ sizes: brandInsight.sizes,
352
+ slotId: brandInsight.slotId,
353
+ targeting: {
354
+ pos: 'article' + i,
355
+ content_placement: brandInsight.targeting.content_placement,
356
+ document_url: brandInsight.targeting.document_url
357
+ },
358
+ _type: 'BrandInsight'
359
+ };
360
+
361
+ posts = insert(posts, pos, inFeedAd);
350
362
  pos += brandInsight.interval + 1;
351
363
  }
352
364
  } else {
@@ -494,7 +506,11 @@ var GridContent = function (_React$Component) {
494
506
  React__default.createElement(
495
507
  Card,
496
508
  { className: 'content-card ad-wrapper', style: { flexDirection: index === 0 || index % 4 === 0 ? 'top' : 'row' } },
497
- React__default.createElement(AD, { networkID: row.networkID, adUnit: row.adUnit, targeting: row.targeting, className: row.className, sizes: row.sizes, slotId: row.slotId })
509
+ React__default.createElement(
510
+ 'div',
511
+ { className: row.className },
512
+ React__default.createElement(AdSlot.DFPAdSlot, { networkID: row.networkID, adUnit: row.adUnit, slotId: row.slotId, targeting: row.targeting, sizes: row.sizes })
513
+ )
498
514
  )
499
515
  )
500
516
  );
@@ -18,8 +18,9 @@ require('./index-0d0efcfa.js');
18
18
  require('./main-58839f4e.js');
19
19
  require('./entities-3e0b4a16.js');
20
20
  require('./_babelHelpers-f321c258.js');
21
+ require('./AdSlot-d87cef08.js');
21
22
  require('./get-126b1712.js');
22
- var GridContent = require('./GridContent-089aa22c.js');
23
+ var GridContent = require('./GridContent-1575c8db.js');
23
24
 
24
25
 
25
26
 
@@ -5,15 +5,14 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
5
5
  var React = require('react');
6
6
  var React__default = _interopDefault(React);
7
7
  var _commonjsHelpers = require('./_commonjsHelpers-3fc1f64e.js');
8
- var index = require('./index-0322e486.js');
9
8
  var PropTypes = _interopDefault(require('prop-types'));
10
9
  var Container = _interopDefault(require('react-bootstrap/Container'));
11
10
  var Row = _interopDefault(require('react-bootstrap/Row'));
12
11
  var Col = _interopDefault(require('react-bootstrap/Col'));
13
12
  var Link = _interopDefault(require('next/link'));
14
- var debounce = require('./debounce-a963b136.js');
15
13
  var main = require('./main-58839f4e.js');
16
14
  var _babelHelpers = require('./_babelHelpers-f321c258.js');
15
+ var AdSlot = require('./AdSlot-d87cef08.js');
17
16
  var get$1 = require('./get-126b1712.js');
18
17
  var reactBootstrap = require('react-bootstrap');
19
18
  var index_esm = require('./index.esm-340d3792.js');
@@ -951,6 +950,27 @@ var Column3 = function Column3(props) {
951
950
  showRightAd = props.showRightAd,
952
951
  logo = props.logo;
953
952
 
953
+ var adRef = React.useRef(null);
954
+
955
+ React.useEffect(function () {
956
+ if (!main.main_36) {
957
+ var navbar = document.querySelector('.navbar');
958
+ var AdOffsetTop = adRef.current.getBoundingClientRect().top;
959
+ window.addEventListener('scroll', function () {
960
+ if (window.pageYOffset + (AdOffsetTop - navbar.offsetHeight) > AdOffsetTop) {
961
+ if (adRef.current && adRef.current.style) {
962
+ adRef.current.style.position = 'fixed';
963
+ adRef.current.style.top = '60px';
964
+ }
965
+ } else {
966
+ if (adRef.current && adRef.current.style) {
967
+ adRef.current.style.position = 'relative';
968
+ adRef.current.style.top = '';
969
+ }
970
+ }
971
+ });
972
+ }
973
+ }, []);
954
974
 
955
975
  return React__default.createElement(
956
976
  'section',
@@ -998,7 +1018,7 @@ var Column3 = function Column3(props) {
998
1018
  website && website.conferenceBannerContent && React__default.createElement(ConferenceBanner, { website: website }),
999
1019
  React__default.createElement(
1000
1020
  'div',
1001
- { className: 'sticky-top', style: { top: '60px' } },
1021
+ { ref: adRef },
1002
1022
  rightItems && rightItems.map(function (row, index) {
1003
1023
  return React__default.createElement(
1004
1024
  'div',
@@ -1980,6 +2000,29 @@ var HamMagazine = function HamMagazine(props) {
1980
2000
  console.log('useEffect onClick', isOpen);
1981
2001
  }, [isOpen]);
1982
2002
 
2003
+ React.useEffect(function () {
2004
+ var navOffsetTop = navRef.current.getBoundingClientRect().top;
2005
+ var navOffsetHeight = navRef.current.getBoundingClientRect().height;
2006
+ var adSection = document.querySelector('.AD728x90');
2007
+ window.addEventListener('scroll', function () {
2008
+ if (window.pageYOffset > navOffsetTop) {
2009
+ if (navRef.current && navRef.current.style) {
2010
+ navRef.current.style.position = 'fixed';
2011
+ navRef.current.style.top = 0;
2012
+ navRef.current.style.width = '100%';
2013
+ navRef.current.style.zIndex = '9999';
2014
+ adSection.style.marginTop = navOffsetHeight + 'px';
2015
+ }
2016
+ } else {
2017
+ if (navRef.current && navRef.current.style) {
2018
+ navRef.current.style.position = 'relative';
2019
+ navRef.current.style.top = '';
2020
+ adSection.style.marginTop = '';
2021
+ }
2022
+ }
2023
+ });
2024
+ }, []);
2025
+
1983
2026
  var trackScrolling = function trackScrolling() {
1984
2027
  var offsetTop = navRef.current.getBoundingClientRect().top;
1985
2028
 
@@ -2231,68 +2274,11 @@ var HamMagazine = function HamMagazine(props) {
2231
2274
  React__default.createElement(
2232
2275
  'style',
2233
2276
  { jsx: 'true' },
2234
- '\n .sticky-home {\n position: relative;\n top: -3px;\n left: -6px;\n cursor: pointer;\n }\n .nav-item svg {\n margin-bottom: 2px;\n }\n #nav-login,\n #nav-logout,\n #nav-register {\n padding: 0.5rem;\n cursor: pointer;\n }\n #nav-mobile-login,\n #nav-mobile-logout,\n #nav-mobile-register {\n display: none;\n }\n #nav-mobile-logout,\n #nav-mobile-login {\n position: absolute;\n right: 1rem;\n }\n #nav-mobile-register {\n position: absolute;\n left: 1rem;\n }\n @media screen and (max-width: 376px) {\n .mobile-nav .nav-toggle .form-inline .mobile-search {\n width: 60%;\n }\n .mobile-nav .nav-toggle .form-inline {\n width: 70%;\n }\n }\n @media screen and (max-width: 328px) {\n .mobile-nav .nav-toggle .form-inline .mobile-search {\n margin-right: 5px;\n }\n }\n @media screen and (max-width: 767px) {\n .logo {\n width: 100%;\n padding-left: 10px;\n padding-right: 10px;\n }\n }\n @media screen and (max-width: 1199px) {\n .nav-close {\n position: sticky;\n top: -70px;\n }\n .nav-open {\n position: relative;\n }\n\n .mobile-nav .nav-toggle {\n width: 100%;\n }\n\n .android-nav {\n max-height: 80vh;\n }\n\n .ios-nav {\n max-height: none;\n }\n\n .navbar.bg-primary {\n overflow: auto;\n }\n\n .mobile-nav .nav-toggle .navbar-toggler {\n float: left;\n height: 45px;\n }\n .mobile-nav .nav-toggle .form-inline {\n float: right;\n margin: 4px 0px 0px 0px;\n }\n .mobile-nav .form-inline .mobile-search {\n width: auto;\n }\n .sticky-home {\n display: none;\n }\n .dropdown-menu {\n max-height: 315px;\n overflow: auto;\n }\n ::-webkit-scrollbar {\n width: 10px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(214, 214, 214, 0.8);\n box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n }\n .navbar-expand-xl .show#basic-navbar-sub {\n display: block;\n }\n .navbar .mobile-nav .navbar-collapse.show {\n padding-bottom: 10px;\n border-bottom: 0.5px solid white;\n }\n .navbar .mobile-nav .navbar-collapse .form-inline {\n display: none;\n }\n .navbar .mobile-nav .navbar-collapse {\n margin-top: 15px;\n }\n .navbar .mobile-nav .navbar-collapse:last-child {\n border-bottom: none;\n margin-bottom: 0px;\n padding-bottom: 0px;\n margin-top: 0px;\n padding-top: 10px;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer ul {\n list-style-type: none;\n padding: inherit;\n margin-bottom: 0rem;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer .nav-link {\n text-transform: capitalize !important;\n font-weight: 300;\n }\n .navbar .mobile-nav .dropdown-item:focus {\n background-color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: white;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: inherit;\n border: none;\n }\n .navbar .mobile-nav .dropdown-menu.show {\n max-height: 100px;\n }\n }\n @media screen and (min-width: 1200px) {\n .nav-close {\n position: sticky;\n top: -70px;\n }\n #basic-navbar-sub {\n display: none !important;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: white;\n border: 1 px solid #708090;\n }\n .mobile-nav .nav-toggle .form-inline {\n display: none;\n }\n }\n @media screen and (max-width: 1199px) {\n #nav-mobile-login,\n #nav-mobile-logout,\n #nav-mobile-register {\n display: block;\n }\n .navbar-top {\n flex-direction: row;\n justify-content: space-around !important;\n align-items: center;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n width: 100%;\n }\n }\n '
2277
+ '\n .sticky-home {\n position: relative;\n top: -3px;\n left: -6px;\n cursor: pointer;\n }\n .nav-item svg {\n margin-bottom: 2px;\n }\n #nav-login,\n #nav-logout,\n #nav-register {\n padding: 0.5rem;\n cursor: pointer;\n }\n #nav-mobile-login,\n #nav-mobile-logout,\n #nav-mobile-register {\n display: none;\n }\n #nav-mobile-logout,\n #nav-mobile-login {\n position: absolute;\n right: 1rem;\n }\n #nav-mobile-register {\n position: absolute;\n left: 1rem;\n }\n @media screen and (max-width: 376px) {\n .mobile-nav .nav-toggle .form-inline .mobile-search {\n width: 60%;\n }\n .mobile-nav .nav-toggle .form-inline {\n width: 70%;\n }\n }\n @media screen and (max-width: 328px) {\n .mobile-nav .nav-toggle .form-inline .mobile-search {\n margin-right: 5px;\n }\n }\n @media screen and (max-width: 767px) {\n .logo {\n width: 100%;\n padding-left: 10px;\n padding-right: 10px;\n }\n }\n @media screen and (max-width: 1199px) {\n .nav-open {\n position: relative;\n }\n\n .mobile-nav .nav-toggle {\n width: 100%;\n }\n\n .android-nav {\n max-height: 80vh;\n }\n\n .ios-nav {\n max-height: none;\n }\n\n .navbar.bg-primary {\n overflow: auto;\n }\n\n .mobile-nav .nav-toggle .navbar-toggler {\n float: left;\n height: 45px;\n }\n .mobile-nav .nav-toggle .form-inline {\n float: right;\n margin: 4px 0px 0px 0px;\n }\n .mobile-nav .form-inline .mobile-search {\n width: auto;\n }\n .sticky-home {\n display: none;\n }\n .dropdown-menu {\n max-height: 315px;\n overflow: auto;\n }\n ::-webkit-scrollbar {\n width: 10px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(214, 214, 214, 0.8);\n box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n }\n .navbar-expand-xl .show#basic-navbar-sub {\n display: block;\n }\n .navbar .mobile-nav .navbar-collapse.show {\n padding-bottom: 10px;\n border-bottom: 0.5px solid white;\n }\n .navbar .mobile-nav .navbar-collapse .form-inline {\n display: none;\n }\n .navbar .mobile-nav .navbar-collapse {\n margin-top: 15px;\n }\n .navbar .mobile-nav .navbar-collapse:last-child {\n border-bottom: none;\n margin-bottom: 0px;\n padding-bottom: 0px;\n margin-top: 0px;\n padding-top: 10px;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer ul {\n list-style-type: none;\n padding: inherit;\n margin-bottom: 0rem;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer .nav-link {\n text-transform: capitalize !important;\n font-weight: 300;\n }\n .navbar .mobile-nav .dropdown-item:focus {\n background-color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: white;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: inherit;\n border: none;\n }\n .navbar .mobile-nav .dropdown-menu.show {\n max-height: 100px;\n }\n }\n @media screen and (min-width: 1200px) {\n #basic-navbar-sub {\n display: none !important;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: white;\n border: 1 px solid #708090;\n }\n .mobile-nav .nav-toggle .form-inline {\n display: none;\n }\n }\n @media screen and (max-width: 1199px) {\n #nav-mobile-login,\n #nav-mobile-logout,\n #nav-mobile-register {\n display: block;\n }\n .navbar-top {\n flex-direction: row;\n justify-content: space-around !important;\n align-items: center;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n width: 100%;\n }\n }\n '
2235
2278
  )
2236
2279
  );
2237
2280
  };
2238
2281
 
2239
- var DFPAdSlot = function DFPAdSlot(_ref) {
2240
- var adUnit = _ref.adUnit,
2241
- sizeMapping = _ref.sizeMapping,
2242
- className = _ref.className,
2243
- slotId = _ref.slotId,
2244
- sizes = _ref.sizes,
2245
- _ref$targeting = _ref.targeting,
2246
- targeting = _ref$targeting === undefined ? {} : _ref$targeting;
2247
-
2248
- var _useState = React.useState(false),
2249
- _useState2 = _babelHelpers.slicedToArray(_useState, 2),
2250
- adRendered = _useState2[0],
2251
- setAdRendered = _useState2[1];
2252
-
2253
- var _useState3 = React.useState(false),
2254
- _useState4 = _babelHelpers.slicedToArray(_useState3, 2),
2255
- adRefreshable = _useState4[0],
2256
- setAdRefreshable = _useState4[1];
2257
-
2258
- var handleVisibilityChange = debounce.debounce_1(function (_ref2) {
2259
- var event = _ref2.event;
2260
-
2261
- if (event.inViewPercentage <= 0) {
2262
- setAdRefreshable(false);
2263
- } else {
2264
- setAdRefreshable(true);
2265
- }
2266
- }, 500);
2267
-
2268
- return React__default.createElement(
2269
- 'div',
2270
- { className: className },
2271
- React__default.createElement(index.lib_2, {
2272
- slotId: slotId,
2273
- sizes: sizes,
2274
- adUnit: adUnit,
2275
- sizeMapping: sizeMapping,
2276
- targetingArguments: targeting,
2277
- onSlotRender: function onSlotRender(eventData) {
2278
- setAdRendered(true);
2279
- },
2280
- onSlotVisibilityChanged: handleVisibilityChange,
2281
- shouldRefresh: function shouldRefresh() {
2282
- if (adRendered && adRefreshable) return true;else return false;
2283
- }
2284
- })
2285
- );
2286
- };
2287
-
2288
- DFPAdSlot.propTypes = {
2289
- adUnit: PropTypes.string.isRequired,
2290
- slotId: PropTypes.string,
2291
- className: PropTypes.string,
2292
- sizeMapping: PropTypes.array,
2293
- sizes: PropTypes.array
2294
- };
2295
-
2296
2282
  var AD728x90 = function AD728x90(_ref) {
2297
2283
  var networkID = _ref.networkID,
2298
2284
  adUnit = _ref.adUnit,
@@ -2300,7 +2286,7 @@ var AD728x90 = function AD728x90(_ref) {
2300
2286
  _ref$targeting = _ref.targeting,
2301
2287
  targeting = _ref$targeting === undefined ? {} : _ref$targeting;
2302
2288
 
2303
- return React__default.createElement(DFPAdSlot, {
2289
+ return React__default.createElement(AdSlot.DFPAdSlot, {
2304
2290
  slotId: slotId,
2305
2291
  networkID: networkID,
2306
2292
  adUnit: adUnit,
@@ -2418,7 +2404,6 @@ exports.AD728x90 = AD728x90;
2418
2404
  exports.Column1 = Column1;
2419
2405
  exports.Column2 = Column2;
2420
2406
  exports.Column3 = Column3;
2421
- exports.DFPAdSlot = DFPAdSlot;
2422
2407
  exports.HamMagazine = HamMagazine;
2423
2408
  exports.Header = Header$1;
2424
2409
  exports.LeftNav = LeftNav$1;
@@ -228,7 +228,8 @@ var cardLoader = function cardLoader(data, builder, mapping, values, seoPaginate
228
228
  }),
229
229
  showCategory && article.contentCategory && React__default.createElement(
230
230
  'p',
231
- { className: 'article-category',
231
+ {
232
+ className: 'article-category',
232
233
  style: {
233
234
  background: '#3FB618',
234
235
  color: '#ffffff',
@@ -401,7 +402,7 @@ var cardLoader = function cardLoader(data, builder, mapping, values, seoPaginate
401
402
  React__default.createElement(
402
403
  'style',
403
404
  { jsx: 'true' },
404
- '\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 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;\n }\n }\n '
405
+ '\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;\n }\n }\n '
405
406
  )
406
407
  );
407
408
  };
@@ -11,11 +11,12 @@ require('next/link');
11
11
  require('./debounce-a963b136.js');
12
12
  require('./main-58839f4e.js');
13
13
  require('./_babelHelpers-f321c258.js');
14
+ require('./AdSlot-d87cef08.js');
14
15
  require('./get-126b1712.js');
15
16
  require('react-bootstrap');
16
17
  require('./index.esm-340d3792.js');
17
18
  require('react-bootstrap/Button');
18
- var TemplateNormal = require('./Normal-47d9e184.js');
19
+ var TemplateNormal = require('./Normal-2886d08f.js');
19
20
  require('react-bootstrap/ListGroup');
20
21
  require('next/head');
21
22
  require('react-bootstrap/Nav');