@mjhls/mjh-framework 1.0.118 → 1.0.120

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/index.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import React__default, { Component, useState, useEffect, useRef, createElement, createContext } from 'react';
1
+ import React__default, { Component, useState, useEffect, useRef, useLayoutEffect, createElement, createContext } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import reactDom from 'react-dom';
4
4
  import Container from 'react-bootstrap/Container';
@@ -9,6 +9,8 @@ import Link from 'next/link';
9
9
  import { withRouter, useRouter } from 'next/router';
10
10
  import Media from 'react-bootstrap/Media';
11
11
  import { Media as Media$1, Container as Container$1, Dropdown, Figure, Carousel, Table, Button as Button$1, ProgressBar, Card as Card$1 } from 'react-bootstrap';
12
+ import Button from 'react-bootstrap/Button';
13
+ import Badge from 'react-bootstrap/Badge';
12
14
  import ListGroup from 'react-bootstrap/ListGroup';
13
15
  import Head from 'next/head';
14
16
  import Accordion from 'react-bootstrap/Accordion';
@@ -16,7 +18,6 @@ import { useAccordionToggle } from 'react-bootstrap/AccordionToggle';
16
18
  import { FacebookShareButton, TwitterShareButton, PinterestShareButton, EmailShareButton, FacebookIcon, TwitterIcon, PinterestIcon, EmailIcon } from 'react-share';
17
19
  import Form from 'react-bootstrap/Form';
18
20
  import FormControl from 'react-bootstrap/FormControl';
19
- import Button from 'react-bootstrap/Button';
20
21
  import Nav from 'react-bootstrap/Nav';
21
22
  import Navbar from 'react-bootstrap/Navbar';
22
23
  import NavDropdown from 'react-bootstrap/NavDropdown';
@@ -11587,7 +11588,7 @@ var TaxonomyCard = function TaxonomyCard(props) {
11587
11588
  ),
11588
11589
  icon && React__default.createElement(
11589
11590
  'style',
11590
- { jsx: true },
11591
+ { jsx: 'true' },
11591
11592
  '\n .taxonomy-card:hover .taxonomy-icon {\n transform: translateY(-50%) scale(1.5) translateX(0) !important;\n }\n '
11592
11593
  )
11593
11594
  );
@@ -11731,7 +11732,7 @@ var GroupDeck = function GroupDeck(props) {
11731
11732
  ),
11732
11733
  React__default.createElement(
11733
11734
  'style',
11734
- { jsx: true },
11735
+ { jsx: 'true' },
11735
11736
  '\n #vid-slider * {\n box-sizing: border-box;\n }\n #vid-slider {\n position: relative;\n }\n #vid-slider .now-playing {\n position: absolute;\n top: 0.5rem;\n left: 0.5rem;\n color: white;\n padding: 0 1rem;\n background: rgba(0, 0, 0, 0.75);\n }\n #vid-slider h1,\n #vid-slider p {\n text-align: center;\n width: 100%;\n max-width: 500px;\n margin: auto;\n }\n #vid-slider a:link,\n #vid-slider a:hover,\n #vid-slider a:active,\n #vid-slider a:visited {\n transition: color 150ms;\n color: #95a5a6;\n text-decoration: none;\n }\n #vid-slider a:hover {\n color: #7f8c8d;\n text-decoration: underline;\n }\n #vid-slider .contain {\n width: 100%;\n }\n #vid-slider .row {\n overflow: scroll;\n width: 100%;\n }\n #vid-slider .tile__info {\n white-space: normal !important;\n position: absolute;\n text-align: center;\n color: ' + (props.dark ? 'white' : '#383838') + ';\n opacity: 1;\n font-size: 1rem;\n transition: opacity 0.25s;\n }\n #vid-slider .row__inner {\n transition: 450ms -webkit-transform;\n transition: 450ms transform;\n transition: 450ms transform, 450ms -webkit-transform;\n font-size: 0;\n white-space: nowrap;\n margin: 55px 0;\n padding-bottom: 10px;\n padding-left: 0;\n }\n #vid-slider .tile {\n position: relative;\n display: inline-block;\n width: 250px;\n height: 140.625px;\n margin-right: 10px;\n font-size: 20px;\n cursor: pointer;\n transition: 450ms all;\n -webkit-transform-origin: center left;\n transform-origin: center left;\n }\n #vid-slider .tile__img {\n width: 250px;\n height: 140.625px;\n -o-object-fit: cover;\n object-fit: cover;\n }\n #vid-slider .tile__details {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n font-size: 10px;\n opacity: 0;\n background: linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);\n transition: 450ms opacity;\n }\n #vid-slider .tile__details:after,\n #vid-slider .tile__details:before {\n content: \'\';\n position: absolute;\n top: 50%;\n left: 50%;\n display: #000;\n }\n #vid-slider .tile__details:after {\n margin-top: -25px;\n margin-left: -25px;\n width: 50px;\n height: 50px;\n border: 3px solid #ecf0f1;\n line-height: 50px;\n text-align: center;\n border-radius: 100%;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1;\n }\n #vid-slider .tile__details:before {\n content: \'\u25B6\';\n left: 0;\n width: 100%;\n font-size: 30px;\n margin-left: 3px;\n margin-top: -22px;\n text-align: center;\n z-index: 2;\n color: white;\n }\n #vid-slider .tile:hover .tile__details {\n opacity: 1;\n }\n #vid-slider .tile__title {\n position: absolute;\n bottom: 0;\n padding: 10px;\n max-width: 250px;\n }\n #vid-slider .tile__title_text {\n position: relative;\n left: 0;\n white-space: normal;\n }\n #vid-slider .row__inner:hover {\n -webkit-transform: translate3d(-62.5px, 0, 0);\n transform: translate3d(-62.5px, 0, 0);\n }\n #vid-slider .row__inner:hover .tile {\n opacity: 0.3;\n }\n #vid-slider .row__inner:hover .tile:hover {\n -webkit-transform: scale(1.25);\n transform: scale(1.25);\n opacity: 1;\n }\n #vid-slider .tile:hover ~ .tile {\n -webkit-transform: translate3d(62px, 0, 0);\n transform: translate3d(62px, 0, 0);\n }\n #vid-slider .tile:hover .tile__info {\n opacity: 0;\n }\n #vid-slider .tile__slider-prev,\n #vid-slider .tile__slider-next {\n width: 30px;\n background: transparent;\n border: none;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n z-index: 99;\n cursor: pointer;\n color: ' + (props.dark ? 'white' : 'black') + ';\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 2rem;\n }\n #vid-slider .tile__slider-prev {\n left: -3px;\n }\n #vid-slider .tile__slider-next {\n right: 0;\n }\n #vid-slider,\n #vid-slider .row {\n margin: 0;\n padding: 0 1.2rem;\n }\n #vid-slider .tile:last-child {\n margin-right: 2rem;\n }\n #vid-slider .row::-webkit-scrollbar-thumb {\n background-color: transparent !important;\n }\n #vid-slider i {\n border: solid ' + (props.dark ? 'white' : 'black') + ';\n border-width: 0 4px 4px 0;\n display: inline-block;\n padding: 4px;\n pointer-events: none;\n }\n\n #vid-slider .right {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n }\n\n #vid-slider .left {\n transform: rotate(135deg);\n -webkit-transform: rotate(135deg);\n }\n '
11736
11737
  )
11737
11738
  );
@@ -11931,7 +11932,7 @@ var YoutubeGroup = function YoutubeGroup(props) {
11931
11932
  ),
11932
11933
  React__default.createElement(
11933
11934
  'style',
11934
- { jsx: true },
11935
+ { jsx: 'true' },
11935
11936
  '\n #vid-slider * {\n box-sizing: border-box;\n }\n #vid-slider {\n position: relative;\n }\n #vid-slider .now-playing {\n position: absolute;\n top: 0.5rem;\n left: 1rem;\n color: white;\n background: rgba(0, 0, 0, 0.75);\n }\n #vid-slider h1,\n #vid-slider p {\n text-align: center;\n width: 100%;\n max-width: 500px;\n margin: auto;\n }\n #vid-slider a:link,\n #vid-slider a:hover,\n #vid-slider a:active,\n #vid-slider a:visited {\n transition: color 150ms;\n color: #95a5a6;\n text-decoration: none;\n }\n #vid-slider a:hover {\n color: #7f8c8d;\n text-decoration: underline;\n }\n #vid-slider .contain {\n width: 100%;\n }\n #vid-slider .row {\n overflow: scroll;\n width: 100%;\n }\n #vid-slider .tile__info {\n white-space: normal !important;\n position: absolute;\n text-align: center;\n color: ' + (props.dark ? 'white' : '#383838') + ';\n opacity: 1;\n font-size: 1rem;\n transition: opacity 0.25s;\n }\n #vid-slider .row__inner {\n transition: 450ms -webkit-transform;\n transition: 450ms transform;\n transition: 450ms transform, 450ms -webkit-transform;\n font-size: 0;\n white-space: nowrap;\n margin: 55px 0;\n padding-bottom: 10px;\n padding-left: 0;\n }\n #vid-slider .tile {\n position: relative;\n display: inline-block;\n width: 250px;\n height: 140.625px;\n margin-right: 10px;\n font-size: 20px;\n cursor: pointer;\n transition: 450ms all;\n -webkit-transform-origin: center left;\n transform-origin: center left;\n }\n #vid-slider .tile__img {\n width: 250px;\n height: 140.625px;\n -o-object-fit: cover;\n object-fit: cover;\n }\n #vid-slider .tile__details {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n font-size: 10px;\n opacity: 0;\n background: linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);\n transition: 450ms opacity;\n }\n #vid-slider .tile__details:after,\n #vid-slider .tile__details:before {\n content: \'\';\n position: absolute;\n top: 50%;\n left: 50%;\n display: #000;\n }\n #vid-slider .tile__details:after {\n margin-top: -25px;\n margin-left: -25px;\n width: 50px;\n height: 50px;\n border: 3px solid #ecf0f1;\n line-height: 50px;\n text-align: center;\n border-radius: 100%;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1;\n }\n #vid-slider .tile__details:before {\n content: \'\u25B6\';\n left: 0;\n width: 100%;\n font-size: 30px;\n margin-left: 2px;\n margin-top: -23px;\n text-align: center;\n z-index: 2;\n color: white;\n }\n #vid-slider .tile:hover .tile__details {\n opacity: 1;\n }\n #vid-slider .tile__title {\n position: absolute;\n bottom: 0;\n padding: 10px;\n max-width: 250px;\n }\n #vid-slider .tile__title_text {\n position: relative;\n left: 0;\n white-space: normal;\n }\n #vid-slider .row__inner:hover {\n -webkit-transform: translate3d(-62.5px, 0, 0);\n transform: translate3d(-62.5px, 0, 0);\n }\n #vid-slider .row__inner:hover .tile {\n opacity: 0.3;\n }\n #vid-slider .row__inner:hover .tile:hover {\n -webkit-transform: scale(1.25);\n transform: scale(1.25);\n opacity: 1;\n }\n #vid-slider .tile:hover ~ .tile {\n -webkit-transform: translate3d(62px, 0, 0);\n transform: translate3d(62px, 0, 0);\n }\n #vid-slider .tile:hover .tile__info {\n opacity: 0;\n }\n #vid-slider .tile__slider-prev,\n #vid-slider .tile__slider-next {\n width: 30px;\n background: transparent;\n border: none;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n z-index: 99;\n cursor: pointer;\n color: ' + (props.dark ? 'white' : 'black') + ';\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 2rem;\n }\n #vid-slider .tile__slider-prev {\n left: -3px;\n }\n #vid-slider .tile__slider-next {\n right: 0;\n }\n #vid-slider,\n #vid-slider .row {\n margin: 0;\n padding: 0 1.2rem;\n }\n #vid-slider .tile:last-child {\n margin-right: 2rem;\n }\n #vid-slider .row::-webkit-scrollbar-thumb {\n background-color: transparent !important;\n }\n #vid-slider i {\n border: solid ' + (props.dark ? 'white' : 'black') + ';\n border-width: 0 4px 4px 0;\n display: inline-block;\n padding: 4px;\n pointer-events: none;\n }\n\n #vid-slider .right {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n }\n\n #vid-slider .left {\n transform: rotate(135deg);\n -webkit-transform: rotate(135deg);\n }\n '
11936
11937
  )
11937
11938
  );
@@ -12172,7 +12173,7 @@ var QueueDeckExpanded = function QueueDeckExpanded(props) {
12172
12173
  var contentCategoryName = article.contentCategory ? article.contentCategory.name : 'Articles';
12173
12174
  return React__default.createElement(
12174
12175
  React__default.Fragment,
12175
- null,
12176
+ { key: article._id ? article._id : index$$1 },
12176
12177
  React__default.createElement(
12177
12178
  VisibilitySensor,
12178
12179
  {
@@ -12192,7 +12193,7 @@ var QueueDeckExpanded = function QueueDeckExpanded(props) {
12192
12193
  React__default.createElement(
12193
12194
  'a',
12194
12195
  null,
12195
- article.thumbnail && article.thumbnail.asset ? React__default.createElement('img', { className: 'mr-3', src: renderCardImage(article, builder, imageHeight, imageWidth), alt: article.title }) : React__default.createElement('img', { src: defaultImage, className: 'mr-3', width: '240', height: '135' })
12196
+ article.thumbnail && article.thumbnail.asset ? React__default.createElement('img', { className: 'mr-3', 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 })
12196
12197
  )
12197
12198
  ),
12198
12199
  React__default.createElement(
@@ -12641,6 +12642,221 @@ var VideoSeriesListing = function (_React$Component) {
12641
12642
  }(React__default.Component);
12642
12643
  var VideoSeriesListing$1 = withRouter(VideoSeriesListing);
12643
12644
 
12645
+ var PublicationDeck = function PublicationDeck(props) {
12646
+ var data = props.data,
12647
+ imageHeight = props.imageHeight,
12648
+ imageWidth = props.imageWidth,
12649
+ href = props.href,
12650
+ Website = props.Website,
12651
+ client = props.client;
12652
+
12653
+ var urlFor = function urlFor(source) {
12654
+ var builder = imageUrlBuilder(client);
12655
+ return builder.image(source);
12656
+ };
12657
+
12658
+ var renderCardImage = function renderCardImage(thumbnail) {
12659
+ if (thumbnail && thumbnail.asset) {
12660
+ var url = urlFor(thumbnail);
12661
+ if (imageHeight) url = url.height(imageHeight);
12662
+ if (imageWidth) url = url.width(imageWidth);
12663
+ return url.url();
12664
+ } else {
12665
+ return Website.logo;
12666
+ }
12667
+ };
12668
+
12669
+ return React__default.createElement(
12670
+ Row,
12671
+ null,
12672
+ data && data.map(function (row, index) {
12673
+ return row.identifier && row.identifier.current && React__default.createElement(
12674
+ Col,
12675
+ { md: 12, lg: '4', style: { display: 'flex', flex: '1 0 auto' }, key: index },
12676
+ React__default.createElement(
12677
+ Card,
12678
+ { className: 'block-card', style: { width: '200px' } },
12679
+ React__default.createElement(
12680
+ Link,
12681
+ { href: href + '/' + row.identifier.current },
12682
+ React__default.createElement(
12683
+ 'a',
12684
+ null,
12685
+ row.childIssue && row.childIssue.thumbnail && React__default.createElement(Card.Img, { variant: 'top', src: renderCardImage(row.childIssue.thumbnail), alt: row.name }),
12686
+ React__default.createElement(
12687
+ Card.Body,
12688
+ null,
12689
+ React__default.createElement(
12690
+ Card.Title,
12691
+ null,
12692
+ row.name
12693
+ ),
12694
+ React__default.createElement(
12695
+ Button,
12696
+ { variant: 'secondary' },
12697
+ 'Browse Issues'
12698
+ )
12699
+ )
12700
+ )
12701
+ )
12702
+ )
12703
+ );
12704
+ })
12705
+ );
12706
+ };
12707
+
12708
+ var IssueDeck = function IssueDeck(props) {
12709
+ var data = props.data,
12710
+ href = props.href,
12711
+ imageHeight = props.imageHeight,
12712
+ imageWidth = props.imageWidth,
12713
+ Website = props.Website,
12714
+ client = props.client,
12715
+ publication = props.publication;
12716
+
12717
+
12718
+ var urlFor = function urlFor(source) {
12719
+ var builder = imageUrlBuilder(client);
12720
+ return builder.image(source);
12721
+ };
12722
+
12723
+ var renderCardImage = function renderCardImage(thumbnail) {
12724
+ if (thumbnail && thumbnail.asset) {
12725
+ var url = urlFor(thumbnail);
12726
+ if (imageHeight) url = url.height(imageHeight);
12727
+ if (imageWidth) url = url.width(imageWidth);
12728
+ return url.url();
12729
+ } else {
12730
+ return Website.logo;
12731
+ }
12732
+ };
12733
+
12734
+ return React__default.createElement(
12735
+ Row,
12736
+ null,
12737
+ data && data.map(function (row, index) {
12738
+ return publication && row.identifier && row.identifier.current && React__default.createElement(
12739
+ Col,
12740
+ { md: 12, lg: 12, key: index },
12741
+ React__default.createElement(
12742
+ Link,
12743
+ { href: href + '/' + publication + '/' + row.identifier.current },
12744
+ React__default.createElement(
12745
+ 'a',
12746
+ null,
12747
+ React__default.createElement(
12748
+ Card,
12749
+ { className: 'queue-card journal-queue', style: { borderTop: '1px solid #EEE' } },
12750
+ React__default.createElement(
12751
+ Row,
12752
+ { style: { flexDirection: 'left' } },
12753
+ React__default.createElement(
12754
+ Col,
12755
+ { md: 12, lg: 4 },
12756
+ row.thumbnail && React__default.createElement(Card.Img, { variant: 'top', src: renderCardImage(row.thumbnail), alt: row.name })
12757
+ ),
12758
+ React__default.createElement(
12759
+ Col,
12760
+ null,
12761
+ React__default.createElement(
12762
+ Card.Body,
12763
+ { style: { padding: '20px' } },
12764
+ React__default.createElement(
12765
+ Card.Title,
12766
+ null,
12767
+ row.name
12768
+ ),
12769
+ React__default.createElement(
12770
+ 'div',
12771
+ null,
12772
+ 'Volume: ',
12773
+ row.volume
12774
+ ),
12775
+ React__default.createElement(
12776
+ 'div',
12777
+ null,
12778
+ 'Number: ',
12779
+ row.number
12780
+ ),
12781
+ React__default.createElement(
12782
+ Button,
12783
+ { style: { marginTop: '20px' }, variant: 'secondary' },
12784
+ 'View Issue'
12785
+ )
12786
+ )
12787
+ )
12788
+ )
12789
+ )
12790
+ )
12791
+ )
12792
+ );
12793
+ })
12794
+ );
12795
+ };
12796
+
12797
+ var IssueContentDeck = function IssueContentDeck(props) {
12798
+ var data = props.data,
12799
+ imageHeight = props.imageHeight,
12800
+ imageWidth = props.imageWidth,
12801
+ Website = props.Website,
12802
+ client = props.client;
12803
+
12804
+
12805
+ var urlFor = function urlFor(source) {
12806
+ var builder = imageUrlBuilder(client);
12807
+ return builder.image(source);
12808
+ };
12809
+
12810
+ var renderCardImage = function renderCardImage(thumbnail) {
12811
+ if (thumbnail && thumbnail.asset) {
12812
+ var url = urlFor(thumbnail);
12813
+ if (imageHeight) url = url.height(imageHeight);
12814
+ if (imageWidth) url = url.width(imageWidth);
12815
+ return url.url();
12816
+ } else {
12817
+ return Website.logo;
12818
+ }
12819
+ };
12820
+
12821
+ return React__default.createElement(
12822
+ Row,
12823
+ null,
12824
+ data && data.map(function (row, index) {
12825
+ return row.url && row.url.current && React__default.createElement(
12826
+ Col,
12827
+ { md: 12, lg: 6, style: { display: 'flex', flex: '1 0 auto' }, key: index },
12828
+ React__default.createElement(
12829
+ Card,
12830
+ null,
12831
+ React__default.createElement(
12832
+ Link,
12833
+ { href: '/view/[url]', as: '/view/' + row.url.current },
12834
+ React__default.createElement(
12835
+ 'a',
12836
+ null,
12837
+ row.thumbnail && React__default.createElement(Card.Img, { variant: 'top', src: renderCardImage(row.thumbnail), alt: row.title }),
12838
+ React__default.createElement(
12839
+ Card.Body,
12840
+ null,
12841
+ row.issueSection && row.issueSection.name ? React__default.createElement(
12842
+ Badge,
12843
+ { variant: 'success' },
12844
+ row.issueSection && row.issueSection.name.name
12845
+ ) : '',
12846
+ React__default.createElement(
12847
+ Card.Title,
12848
+ null,
12849
+ row.title
12850
+ )
12851
+ )
12852
+ )
12853
+ )
12854
+ )
12855
+ );
12856
+ })
12857
+ );
12858
+ };
12859
+
12644
12860
  var Column1 = function Column1(props) {
12645
12861
  var title = props.title;
12646
12862
 
@@ -12812,12 +13028,12 @@ var LeftNav = function LeftNav(props) {
12812
13028
  { key: subIndex },
12813
13029
  React__default.createElement(
12814
13030
  ListGroup.Item,
12815
- { as: 'li', active: true },
13031
+ { as: 'li', active: true, key: subIndex + '_1' },
12816
13032
  row.name
12817
13033
  ),
12818
13034
  React__default.createElement(
12819
13035
  ListGroup.Item,
12820
- { as: 'li' },
13036
+ { as: 'li', key: subIndex + '_2' },
12821
13037
  renderListGroupItem(subRow)
12822
13038
  )
12823
13039
  );
@@ -12827,7 +13043,7 @@ var LeftNav = function LeftNav(props) {
12827
13043
  { key: subIndex },
12828
13044
  React__default.createElement(
12829
13045
  ListGroup.Item,
12830
- { as: 'li' },
13046
+ { as: 'li', key: subIndex + '_1' },
12831
13047
  renderListGroupItem(subRow)
12832
13048
  )
12833
13049
  );
@@ -12888,7 +13104,7 @@ var PageFilter = function PageFilter(props) {
12888
13104
  ),
12889
13105
  React__default.createElement(
12890
13106
  'style',
12891
- { jsx: true },
13107
+ { jsx: 'true' },
12892
13108
  '\n .select-dropdown > a {\n color: #8e8c84;\n }\n '
12893
13109
  )
12894
13110
  );
@@ -12944,7 +13160,7 @@ var Column3 = function Column3(props) {
12944
13160
  ),
12945
13161
  React__default.createElement(
12946
13162
  'style',
12947
- { jsx: true },
13163
+ { jsx: 'true' },
12948
13164
  '\n .filter-box {\n padding-top: 6px;\n padding-right: 18px;\n }\n @media only screen and (min-width: 768px) {\n .title-wrap {\n display: flex;\n justify-content: space-between;\n }\n }\n @media only screen and (max-width: 767px) {\n .filter-box {\n float: right;\n display: flex;\n justify-content: flex-end;\n }\n .title-wrap {\n display: flex;\n flex-direction: column;\n margin-bottom: 10px;\n }\n }\n '
12949
13165
  ),
12950
13166
  (!main_36 || showRightAd) && React__default.createElement(
@@ -13178,7 +13394,7 @@ var Search = function Search(props) {
13178
13394
  ),
13179
13395
  React__default.createElement(
13180
13396
  'style',
13181
- { jsx: true },
13397
+ { jsx: 'true' },
13182
13398
  '\n .mobile-search {\n width: 75%;\n margin-right: 15px;\n }\n '
13183
13399
  )
13184
13400
  );
@@ -13232,6 +13448,336 @@ var NavFooter = function NavFooter(props) {
13232
13448
  );
13233
13449
  };
13234
13450
 
13451
+ /*!
13452
+ * cookie
13453
+ * Copyright(c) 2012-2014 Roman Shtylman
13454
+ * Copyright(c) 2015 Douglas Christopher Wilson
13455
+ * MIT Licensed
13456
+ */
13457
+
13458
+ /**
13459
+ * Module exports.
13460
+ * @public
13461
+ */
13462
+
13463
+ var parse_1 = parse;
13464
+ var serialize_1 = serialize;
13465
+
13466
+ /**
13467
+ * Module variables.
13468
+ * @private
13469
+ */
13470
+
13471
+ var decode = decodeURIComponent;
13472
+ var encode = encodeURIComponent;
13473
+ var pairSplitRegExp = /; */;
13474
+
13475
+ /**
13476
+ * RegExp to match field-content in RFC 7230 sec 3.2
13477
+ *
13478
+ * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
13479
+ * field-vchar = VCHAR / obs-text
13480
+ * obs-text = %x80-FF
13481
+ */
13482
+
13483
+ var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
13484
+
13485
+ /**
13486
+ * Parse a cookie header.
13487
+ *
13488
+ * Parse the given cookie header string into an object
13489
+ * The object has the various cookies as keys(names) => values
13490
+ *
13491
+ * @param {string} str
13492
+ * @param {object} [options]
13493
+ * @return {object}
13494
+ * @public
13495
+ */
13496
+
13497
+ function parse(str, options) {
13498
+ if (typeof str !== 'string') {
13499
+ throw new TypeError('argument str must be a string');
13500
+ }
13501
+
13502
+ var obj = {};
13503
+ var opt = options || {};
13504
+ var pairs = str.split(pairSplitRegExp);
13505
+ var dec = opt.decode || decode;
13506
+
13507
+ for (var i = 0; i < pairs.length; i++) {
13508
+ var pair = pairs[i];
13509
+ var eq_idx = pair.indexOf('=');
13510
+
13511
+ // skip things that don't look like key=value
13512
+ if (eq_idx < 0) {
13513
+ continue;
13514
+ }
13515
+
13516
+ var key = pair.substr(0, eq_idx).trim();
13517
+ var val = pair.substr(++eq_idx, pair.length).trim();
13518
+
13519
+ // quoted values
13520
+ if ('"' == val[0]) {
13521
+ val = val.slice(1, -1);
13522
+ }
13523
+
13524
+ // only assign once
13525
+ if (undefined == obj[key]) {
13526
+ obj[key] = tryDecode(val, dec);
13527
+ }
13528
+ }
13529
+
13530
+ return obj;
13531
+ }
13532
+
13533
+ /**
13534
+ * Serialize data into a cookie header.
13535
+ *
13536
+ * Serialize the a name value pair into a cookie string suitable for
13537
+ * http headers. An optional options object specified cookie parameters.
13538
+ *
13539
+ * serialize('foo', 'bar', { httpOnly: true })
13540
+ * => "foo=bar; httpOnly"
13541
+ *
13542
+ * @param {string} name
13543
+ * @param {string} val
13544
+ * @param {object} [options]
13545
+ * @return {string}
13546
+ * @public
13547
+ */
13548
+
13549
+ function serialize(name, val, options) {
13550
+ var opt = options || {};
13551
+ var enc = opt.encode || encode;
13552
+
13553
+ if (typeof enc !== 'function') {
13554
+ throw new TypeError('option encode is invalid');
13555
+ }
13556
+
13557
+ if (!fieldContentRegExp.test(name)) {
13558
+ throw new TypeError('argument name is invalid');
13559
+ }
13560
+
13561
+ var value = enc(val);
13562
+
13563
+ if (value && !fieldContentRegExp.test(value)) {
13564
+ throw new TypeError('argument val is invalid');
13565
+ }
13566
+
13567
+ var str = name + '=' + value;
13568
+
13569
+ if (null != opt.maxAge) {
13570
+ var maxAge = opt.maxAge - 0;
13571
+ if (isNaN(maxAge)) throw new Error('maxAge should be a Number');
13572
+ str += '; Max-Age=' + Math.floor(maxAge);
13573
+ }
13574
+
13575
+ if (opt.domain) {
13576
+ if (!fieldContentRegExp.test(opt.domain)) {
13577
+ throw new TypeError('option domain is invalid');
13578
+ }
13579
+
13580
+ str += '; Domain=' + opt.domain;
13581
+ }
13582
+
13583
+ if (opt.path) {
13584
+ if (!fieldContentRegExp.test(opt.path)) {
13585
+ throw new TypeError('option path is invalid');
13586
+ }
13587
+
13588
+ str += '; Path=' + opt.path;
13589
+ }
13590
+
13591
+ if (opt.expires) {
13592
+ if (typeof opt.expires.toUTCString !== 'function') {
13593
+ throw new TypeError('option expires is invalid');
13594
+ }
13595
+
13596
+ str += '; Expires=' + opt.expires.toUTCString();
13597
+ }
13598
+
13599
+ if (opt.httpOnly) {
13600
+ str += '; HttpOnly';
13601
+ }
13602
+
13603
+ if (opt.secure) {
13604
+ str += '; Secure';
13605
+ }
13606
+
13607
+ if (opt.sameSite) {
13608
+ var sameSite = typeof opt.sameSite === 'string'
13609
+ ? opt.sameSite.toLowerCase() : opt.sameSite;
13610
+
13611
+ switch (sameSite) {
13612
+ case true:
13613
+ str += '; SameSite=Strict';
13614
+ break;
13615
+ case 'lax':
13616
+ str += '; SameSite=Lax';
13617
+ break;
13618
+ case 'strict':
13619
+ str += '; SameSite=Strict';
13620
+ break;
13621
+ case 'none':
13622
+ str += '; SameSite=None';
13623
+ break;
13624
+ default:
13625
+ throw new TypeError('option sameSite is invalid');
13626
+ }
13627
+ }
13628
+
13629
+ return str;
13630
+ }
13631
+
13632
+ /**
13633
+ * Try decoding a string using a decoding function.
13634
+ *
13635
+ * @param {string} str
13636
+ * @param {function} decode
13637
+ * @private
13638
+ */
13639
+
13640
+ function tryDecode(str, decode) {
13641
+ try {
13642
+ return decode(str);
13643
+ } catch (e) {
13644
+ return str;
13645
+ }
13646
+ }
13647
+
13648
+ function hasDocumentCookie() {
13649
+ // Can we get/set cookies on document.cookie?
13650
+ return typeof document === 'object' && typeof document.cookie === 'string';
13651
+ }
13652
+ function parseCookies(cookies, options) {
13653
+ if (typeof cookies === 'string') {
13654
+ return parse_1(cookies, options);
13655
+ }
13656
+ else if (typeof cookies === 'object' && cookies !== null) {
13657
+ return cookies;
13658
+ }
13659
+ else {
13660
+ return {};
13661
+ }
13662
+ }
13663
+ function isParsingCookie(value, doNotParse) {
13664
+ if (typeof doNotParse === 'undefined') {
13665
+ // We guess if the cookie start with { or [, it has been serialized
13666
+ doNotParse =
13667
+ !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '"');
13668
+ }
13669
+ return !doNotParse;
13670
+ }
13671
+ function readCookie(value, options) {
13672
+ if (options === void 0) { options = {}; }
13673
+ var cleanValue = cleanupCookieValue(value);
13674
+ if (isParsingCookie(cleanValue, options.doNotParse)) {
13675
+ try {
13676
+ return JSON.parse(cleanValue);
13677
+ }
13678
+ catch (e) {
13679
+ // At least we tried
13680
+ }
13681
+ }
13682
+ // Ignore clean value if we failed the deserialization
13683
+ // It is not relevant anymore to trim those values
13684
+ return value;
13685
+ }
13686
+ function cleanupCookieValue(value) {
13687
+ // express prepend j: before serializing a cookie
13688
+ if (value && value[0] === 'j' && value[1] === ':') {
13689
+ return value.substr(2);
13690
+ }
13691
+ return value;
13692
+ }
13693
+
13694
+ // We can't please Rollup and TypeScript at the same time
13695
+ // Only way to make both of them work
13696
+ var objectAssign = require('object-assign');
13697
+ var Cookies = /** @class */ (function () {
13698
+ function Cookies(cookies, options) {
13699
+ var _this = this;
13700
+ this.changeListeners = [];
13701
+ this.HAS_DOCUMENT_COOKIE = false;
13702
+ this.cookies = parseCookies(cookies, options);
13703
+ new Promise(function () {
13704
+ _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();
13705
+ }).catch(function () { });
13706
+ }
13707
+ Cookies.prototype._updateBrowserValues = function (parseOptions) {
13708
+ if (!this.HAS_DOCUMENT_COOKIE) {
13709
+ return;
13710
+ }
13711
+ this.cookies = parse_1(document.cookie, parseOptions);
13712
+ };
13713
+ Cookies.prototype._emitChange = function (params) {
13714
+ for (var i = 0; i < this.changeListeners.length; ++i) {
13715
+ this.changeListeners[i](params);
13716
+ }
13717
+ };
13718
+ Cookies.prototype.get = function (name, options, parseOptions) {
13719
+ if (options === void 0) { options = {}; }
13720
+ this._updateBrowserValues(parseOptions);
13721
+ return readCookie(this.cookies[name], options);
13722
+ };
13723
+ Cookies.prototype.getAll = function (options, parseOptions) {
13724
+ if (options === void 0) { options = {}; }
13725
+ this._updateBrowserValues(parseOptions);
13726
+ var result = {};
13727
+ for (var name_1 in this.cookies) {
13728
+ result[name_1] = readCookie(this.cookies[name_1], options);
13729
+ }
13730
+ return result;
13731
+ };
13732
+ Cookies.prototype.set = function (name, value, options) {
13733
+ var _a;
13734
+ if (typeof value === 'object') {
13735
+ value = JSON.stringify(value);
13736
+ }
13737
+ this.cookies = objectAssign({}, this.cookies, (_a = {}, _a[name] = value, _a));
13738
+ if (this.HAS_DOCUMENT_COOKIE) {
13739
+ document.cookie = serialize_1(name, value, options);
13740
+ }
13741
+ this._emitChange({ name: name, value: value, options: options });
13742
+ };
13743
+ Cookies.prototype.remove = function (name, options) {
13744
+ var finalOptions = (options = objectAssign({}, options, {
13745
+ expires: new Date(1970, 1, 1, 0, 0, 1),
13746
+ maxAge: 0
13747
+ }));
13748
+ this.cookies = objectAssign({}, this.cookies);
13749
+ delete this.cookies[name];
13750
+ if (this.HAS_DOCUMENT_COOKIE) {
13751
+ document.cookie = serialize_1(name, '', finalOptions);
13752
+ }
13753
+ this._emitChange({ name: name, value: undefined, options: options });
13754
+ };
13755
+ Cookies.prototype.addChangeListener = function (callback) {
13756
+ this.changeListeners.push(callback);
13757
+ };
13758
+ Cookies.prototype.removeChangeListener = function (callback) {
13759
+ var idx = this.changeListeners.indexOf(callback);
13760
+ if (idx >= 0) {
13761
+ this.changeListeners.splice(idx, 1);
13762
+ }
13763
+ };
13764
+ return Cookies;
13765
+ }());
13766
+
13767
+ var Cookies$1 = Cookies;
13768
+ // we seem to sometimes get the ES6 version despite requesting cjs here, not sure why
13769
+ // this isn't the ideal fix, but it'll do for now
13770
+ Cookies$1 = Cookies$1.default || Cookies$1;
13771
+
13772
+ function nextCookies(ctx, options) {
13773
+ // Note: Next.js Static export sets ctx.req to a fake request with no headers
13774
+ var header = ctx.req && ctx.req.headers && ctx.req.headers.cookie;
13775
+ var uc = new Cookies$1(header);
13776
+ return uc.getAll(options);
13777
+ }
13778
+
13779
+ var nextCookies_1 = nextCookies;
13780
+
13235
13781
  var NavMagazine = function NavMagazine(props) {
13236
13782
  /*
13237
13783
  Example Nav with acceptable props
@@ -13252,8 +13798,7 @@ var NavMagazine = function NavMagazine(props) {
13252
13798
  website = props.website,
13253
13799
  _props$showLogin = props.showLogin,
13254
13800
  showLogin = _props$showLogin === undefined ? false : _props$showLogin,
13255
- _props$loginState = props.loginState,
13256
- loginState = _props$loginState === undefined ? false : _props$loginState;
13801
+ allCookies = props.allCookies;
13257
13802
 
13258
13803
  var navRef = useRef(null);
13259
13804
 
@@ -13267,6 +13812,13 @@ var NavMagazine = function NavMagazine(props) {
13267
13812
  screenWidth = _useState4[0],
13268
13813
  setScreenWidth = _useState4[1];
13269
13814
 
13815
+ var initialLoginState = allCookies.loggedIn;
13816
+
13817
+ var _useState5 = useState(initialLoginState),
13818
+ _useState6 = slicedToArray(_useState5, 2),
13819
+ loginState = _useState6[0],
13820
+ setLoginState = _useState6[1];
13821
+
13270
13822
  useEffect(function () {
13271
13823
  document.addEventListener('scroll', trackScrolling);
13272
13824
  return function () {
@@ -13279,6 +13831,50 @@ var NavMagazine = function NavMagazine(props) {
13279
13831
  setScreenWidth(parseInt(window.innerWidth));
13280
13832
  }, []);
13281
13833
 
13834
+ useLayoutEffect(function () {
13835
+ if (typeof GCN !== 'undefined') {
13836
+ GCN.on('init').then(function (data) {
13837
+ console.log('GCN init...');
13838
+ setLoginState(data.loggedin);
13839
+ if (data.loggedIn) {
13840
+ console.log(' - logged in status');
13841
+ document.cookie = 'loggedIn=' + data.loggedIn + '; path=/';
13842
+ } else {
13843
+ console.log(' - logged out status');
13844
+ document.cookie = 'loggedIn=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT';
13845
+ }
13846
+ });
13847
+
13848
+ GCN.on('login').then(function (data) {
13849
+ setLoginState(data.loggedin);
13850
+ console.log('GCN login...');
13851
+ document.cookie = 'loggedIn=' + data.loggedIn + '; path=/';
13852
+ });
13853
+
13854
+ GCN.on('logout').then(function (data) {
13855
+ setLoginState(data.loggedin);
13856
+ console.log('GCN logout...');
13857
+ document.cookie = 'loggedIn=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT';
13858
+ });
13859
+ } else {
13860
+ console.error('GCN not defined for GCN events');
13861
+ }
13862
+ }, []);
13863
+
13864
+ useEffect(function () {
13865
+ toggleLogin();
13866
+ }, [loginState]);
13867
+
13868
+ var toggleLogin = function toggleLogin() {
13869
+ if (loginState) {
13870
+ document.getElementsByClassName('logged-in').style.display = '';
13871
+ document.getElementsByClassName('logged-out').style.display = 'none';
13872
+ } else {
13873
+ document.getElementsByClassName('logged-in').style.display = 'none';
13874
+ document.getElementsByClassName('logged-out').style.display = '';
13875
+ }
13876
+ };
13877
+
13282
13878
  var trackScrolling = function trackScrolling() {
13283
13879
  var offsetTop = navRef.current.getBoundingClientRect().top;
13284
13880
 
@@ -13289,6 +13885,34 @@ var NavMagazine = function NavMagazine(props) {
13289
13885
  }
13290
13886
  };
13291
13887
 
13888
+ var handleLogin = function handleLogin(e) {
13889
+ if (typeof GCN !== 'undefined' && GCN && GCN.onecount) {
13890
+ GCN.onecount.login().then(function (result) {
13891
+ console.log('login result: ', result);
13892
+ setLoginState(GCN.onecount.isLoggedIn());
13893
+ }).catch(function (error) {
13894
+ console.log('login error:', error);
13895
+ setLoginState(GCN.onecount.isLoggedIn());
13896
+ });
13897
+ } else {
13898
+ console.error('GCN not defined');
13899
+ }
13900
+ };
13901
+
13902
+ var handleLogout = function handleLogout(e) {
13903
+ if (typeof GCN !== 'undefined' && GCN && GCN.onecount) {
13904
+ GCN.onecount.logout().then(function (result) {
13905
+ console.log('logout result:', result);
13906
+ setLoginState(GCN.onecount.isLoggedIn());
13907
+ }).catch(function (error) {
13908
+ console.log('logout error:', error);
13909
+ setLoginState(GCN.onecount.isLoggedIn());
13910
+ });
13911
+ } else {
13912
+ console.error('GCN not defined');
13913
+ }
13914
+ };
13915
+
13292
13916
  return React__default.createElement(
13293
13917
  React__default.Fragment,
13294
13918
  null,
@@ -13301,12 +13925,14 @@ var NavMagazine = function NavMagazine(props) {
13301
13925
  React__default.createElement(
13302
13926
  Nav,
13303
13927
  { id: 'navbar-top', className: 'justify-content-center navbar-top', style: { margin: '0 auto' } },
13304
- showLogin && !loginState && React__default.createElement(
13928
+ showLogin && React__default.createElement(
13305
13929
  Nav.Item,
13306
- { id: 'nav-mobile-register' },
13930
+ { id: 'nav-mobile-register', className: 'logged-out', style: { display: loginState ? 'none' : '' } },
13307
13931
  React__default.createElement(
13308
13932
  'div',
13309
- { className: 'px-2 py-2' },
13933
+ { className: 'px-2 py-2', onClick: function onClick(e) {
13934
+ return handleLogin(e);
13935
+ } },
13310
13936
  React__default.createElement(MdEmail, null),
13311
13937
  ' Register'
13312
13938
  )
@@ -13324,25 +13950,29 @@ var NavMagazine = function NavMagazine(props) {
13324
13950
  )
13325
13951
  )
13326
13952
  ),
13327
- showLogin && !loginState && React__default.createElement(
13953
+ showLogin && React__default.createElement(
13328
13954
  Nav.Item,
13329
- { id: 'nav-mobile-login' },
13955
+ { id: 'nav-mobile-login', className: 'logged-out', style: { display: loginState ? 'none' : '' } },
13330
13956
  React__default.createElement(
13331
13957
  'div',
13332
- { className: 'px-2 py-2 ' },
13958
+ { className: 'px-2 py-2 ', onClick: function onClick(e) {
13959
+ return handleLogin(e);
13960
+ } },
13333
13961
  React__default.createElement(IoMdLogIn, null),
13334
13962
  ' Login'
13335
13963
  )
13336
13964
  ),
13337
- showLogin && loginState && React__default.createElement(
13965
+ showLogin && React__default.createElement(
13338
13966
  React__default.Fragment,
13339
- null,
13967
+ { className: 'logged-in', style: { display: !loginState ? 'none' : '' } },
13340
13968
  React__default.createElement(
13341
13969
  Nav.Item,
13342
13970
  { id: 'nav-mobile-logout' },
13343
13971
  React__default.createElement(
13344
13972
  'div',
13345
- { className: ' pl-2 pr-3 py-2 text-right' },
13973
+ { className: 'pl-2 pr-3 py-2 text-right', onClick: function onClick(e) {
13974
+ return handleLogout(e);
13975
+ } },
13346
13976
  React__default.createElement(IoMdLogIn, null),
13347
13977
  ' Logout'
13348
13978
  )
@@ -13352,15 +13982,17 @@ var NavMagazine = function NavMagazine(props) {
13352
13982
  React__default.createElement(
13353
13983
  Nav,
13354
13984
  { style: { position: 'absolute', right: '15px' }, className: 'justify-content-end rightHeader' },
13355
- showLogin && !loginState && React__default.createElement(
13985
+ showLogin && React__default.createElement(
13356
13986
  React__default.Fragment,
13357
- null,
13987
+ { className: 'logged-out', style: { display: loginState ? 'none' : '' } },
13358
13988
  React__default.createElement(
13359
13989
  Nav.Item,
13360
13990
  null,
13361
13991
  React__default.createElement(
13362
13992
  'div',
13363
- { className: 'px-2 py-2 mr-2', id: 'nav-register' },
13993
+ { className: 'px-2 py-2 mr-2', id: 'nav-register', onClick: function onClick(e) {
13994
+ return handleLogin(e);
13995
+ } },
13364
13996
  React__default.createElement(MdEmail, null),
13365
13997
  ' Register'
13366
13998
  )
@@ -13370,21 +14002,25 @@ var NavMagazine = function NavMagazine(props) {
13370
14002
  null,
13371
14003
  React__default.createElement(
13372
14004
  'div',
13373
- { className: ' px-2 py-2', id: 'nav-login' },
14005
+ { className: 'px-2 py-2', id: 'nav-login', onClick: function onClick(e) {
14006
+ return handleLogin(e);
14007
+ } },
13374
14008
  React__default.createElement(IoMdLogIn, null),
13375
14009
  ' Login'
13376
14010
  )
13377
14011
  )
13378
14012
  ),
13379
- showLogin && loginState && React__default.createElement(
14013
+ showLogin && React__default.createElement(
13380
14014
  React__default.Fragment,
13381
- null,
14015
+ { className: 'logged-in', style: { display: !loginState ? 'none' : '' } },
13382
14016
  React__default.createElement(
13383
14017
  Nav.Item,
13384
14018
  null,
13385
14019
  React__default.createElement(
13386
14020
  'div',
13387
- { className: ' px-2 py-2', id: 'nav-logout' },
14021
+ { className: 'px-2 py-2', id: 'nav-logout', onClick: function onClick(e) {
14022
+ return handleLogout(e);
14023
+ } },
13388
14024
  React__default.createElement(IoMdLogIn, null),
13389
14025
  ' Logout'
13390
14026
  )
@@ -13512,12 +14148,18 @@ var NavMagazine = function NavMagazine(props) {
13512
14148
  ),
13513
14149
  React__default.createElement(
13514
14150
  'style',
13515
- { jsx: true },
14151
+ { jsx: 'true' },
13516
14152
  '\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 }\n #nav-mobile-logout, #nav-mobile-login{\n position: absolute;\n right: 1rem;\n }\n #nav-mobile-register {\n position: absolute;\n left: 1rem;\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\n @media screen and (max-width: 991px) {\n .mobile-nav .nav-toggle {\n width: 100%;\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-lg .show#basic-navbar-sub {\n display: block;\n }\n .navbar .mobile-nav .navbar-collapse.show {\n padding-bottom: 20px;\n border-bottom: 0.5px solid white;\n margin-bottom: 15px;\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 }\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: 992px) {\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\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 }\n '
13517
14153
  )
13518
14154
  );
13519
14155
  };
13520
14156
 
14157
+ NavMagazine.getInitialProps = function (ctx) {
14158
+ return {
14159
+ allCookies: nextCookies_1(ctx)
14160
+ };
14161
+ };
14162
+
13521
14163
  var NavNative = function NavNative(props) {
13522
14164
  var logo = props.logo,
13523
14165
  dataObject = props.dataObject,
@@ -13642,7 +14284,7 @@ var NavNative = function NavNative(props) {
13642
14284
  ),
13643
14285
  React__default.createElement(
13644
14286
  'style',
13645
- { jsx: true },
14287
+ { jsx: 'true' },
13646
14288
  '\n @media screen and (max-width: 991px) {\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-lg .show#basic-navbar-sub {\n display: block;\n }\n .navbar .mobile-nav .navbar-collapse.show {\n padding-bottom: 20px;\n border-bottom: 0.5px solid white;\n margin-bottom: 15px;\n }\n .navbar .mobile-nav .navbar-collapse .form-inline {\n margin: 5px 0px;\n }\n .navbar .mobile-nav .navbar-collapse:last-child {\n border-bottom: none;\n margin-bottom: 0px;\n padding-bottom: 0px;\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 }\n @media screen and (min-width: 992px) {\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 }\n '
13647
14289
  )
13648
14290
  );
@@ -13720,7 +14362,7 @@ var NavNormal = function NavNormal(props) {
13720
14362
  ),
13721
14363
  React__default.createElement(
13722
14364
  'style',
13723
- { jsx: true },
14365
+ { jsx: 'true' },
13724
14366
  '\n @media screen and (max-width: 991px) {\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 }\n '
13725
14367
  )
13726
14368
  );
@@ -14011,19 +14653,17 @@ var AD = function AD(_ref) {
14011
14653
  _ref$targeting = _ref.targeting,
14012
14654
  targeting = _ref$targeting === undefined ? {} : _ref$targeting;
14013
14655
 
14014
-
14015
14656
  return React__default.createElement(
14016
14657
  lib_1,
14017
- { dfpNetworkId: networkID, targetingArguments: targeting, sizeMapping: sizeMapping, lazyLoad: { fetchMarginPercent: 500, renderMarginPercent: 200, mobileScaling: 2.0 } },
14658
+ {
14659
+ dfpNetworkId: networkID,
14660
+ targetingArguments: targeting,
14661
+ sizeMapping: sizeMapping,
14662
+ lazyLoad: { fetchMarginPercent: 500, renderMarginPercent: 200, mobileScaling: 2.0 } },
14018
14663
  React__default.createElement(
14019
14664
  'div',
14020
14665
  { className: className },
14021
- React__default.createElement(lib_2, {
14022
- slotId: slotId,
14023
- sizes: sizes,
14024
- adUnit: adUnit,
14025
- sizeMapping: sizeMapping
14026
- })
14666
+ React__default.createElement(lib_2, { slotId: slotId, sizes: sizes, adUnit: adUnit, sizeMapping: sizeMapping })
14027
14667
  )
14028
14668
  );
14029
14669
  };
@@ -14060,6 +14700,37 @@ var AD300x250x600 = function AD300x250x600(_ref) {
14060
14700
  });
14061
14701
  };
14062
14702
 
14703
+ var ADFooter = function ADFooter(_ref) {
14704
+ var children = _ref.children;
14705
+
14706
+ var _useState = useState(true),
14707
+ _useState2 = slicedToArray(_useState, 2),
14708
+ showAd = _useState2[0],
14709
+ setShowAd = _useState2[1];
14710
+
14711
+ return React__default.createElement(
14712
+ React__default.Fragment,
14713
+ null,
14714
+ showAd && React__default.createElement(
14715
+ 'div',
14716
+ { className: 'ADFooter' },
14717
+ children,
14718
+ React__default.createElement(
14719
+ 'div',
14720
+ { className: 'closeButton', onClick: function onClick() {
14721
+ return setShowAd(false);
14722
+ } },
14723
+ 'x'
14724
+ )
14725
+ ),
14726
+ React__default.createElement(
14727
+ 'style',
14728
+ { jsx: true },
14729
+ '\n .ADFooter {\n width: auto;\n margin: 0;\n background-color: #f5f5f5;\n position: fixed;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n z-index: 9000;\n }\n .closeButton {\n position: absolute;\n top: -10px;\n right: -10px;\n background: grey;\n color: white;\n font-weight: 500;\n border: 2px solid white;\n border-radius: 50%;\n width: 30px;\n height: 30px;\n text-align: center;\n font-size: 17px;\n cursor: pointer;\n }\n '
14730
+ )
14731
+ );
14732
+ };
14733
+
14063
14734
  var urlFor$1 = function urlFor(source, client) {
14064
14735
  var builder = imageUrlBuilder(client);
14065
14736
  return builder.image(source);
@@ -14462,7 +15133,7 @@ var ms = function(val, options) {
14462
15133
  options = options || {};
14463
15134
  var type = typeof val;
14464
15135
  if (type === 'string' && val.length > 0) {
14465
- return parse(val);
15136
+ return parse$1(val);
14466
15137
  } else if (type === 'number' && isNaN(val) === false) {
14467
15138
  return options.long ? fmtLong(val) : fmtShort(val);
14468
15139
  }
@@ -14480,7 +15151,7 @@ var ms = function(val, options) {
14480
15151
  * @api private
14481
15152
  */
14482
15153
 
14483
- function parse(str) {
15154
+ function parse$1(str) {
14484
15155
  str = String(str);
14485
15156
  if (str.length > 100) {
14486
15157
  return;
@@ -16895,7 +17566,7 @@ function shouldUseNative() {
16895
17566
  }
16896
17567
  }
16897
17568
 
16898
- var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
17569
+ var objectAssign$1 = shouldUseNative() ? Object.assign : function (target, source) {
16899
17570
  var from;
16900
17571
  var to = toObject(target);
16901
17572
  var symbols;
@@ -16970,7 +17641,7 @@ var buildUrl = function buildUrl(props) {
16970
17641
  throw new Error('Invalid image reference in block, no `_ref` found on `asset`');
16971
17642
  }
16972
17643
 
16973
- return node(objectAssign({
17644
+ return node(objectAssign$1({
16974
17645
  projectId: projectId,
16975
17646
  dataset: dataset
16976
17647
  }, options.imageOptions || {})).image(node$$1).toString();
@@ -17110,7 +17781,7 @@ var serializers = function (h, serializerOpts) {
17110
17781
  };
17111
17782
  }
17112
17783
 
17113
- var serializedNode = objectAssign({}, span, children);
17784
+ var serializedNode = objectAssign$1({}, span, children);
17114
17785
  return h(serializers.span, {
17115
17786
  key: span._key || "span-".concat(index),
17116
17787
  node: serializedNode,
@@ -17348,7 +18019,7 @@ function nestLists(blocks) {
17348
18019
  // will mutate the input, and we don't want to blindly clone the entire tree.
17349
18020
  // Clone the last child while adding our new list as the last child of it
17350
18021
  var lastListItem = lastChild(currentList);
17351
- var newLastChild = objectAssign({}, lastListItem, {
18022
+ var newLastChild = objectAssign$1({}, lastListItem, {
17352
18023
  children: lastListItem.children.concat(newList)
17353
18024
  }); // Swap the last child
17354
18025
 
@@ -17450,7 +18121,7 @@ var generateKeys = function (blocks) {
17450
18121
  return block;
17451
18122
  }
17452
18123
 
17453
- return objectAssign({
18124
+ return objectAssign$1({
17454
18125
  _key: getStaticKey(block)
17455
18126
  }, block);
17456
18127
  });
@@ -17494,7 +18165,7 @@ var mergeSerializers = function mergeSerializers(defaultSerializers, userSeriali
17494
18165
  if (type === 'function') {
17495
18166
  acc[key] = isDefined(userSerializers[key]) ? userSerializers[key] : defaultSerializers[key];
17496
18167
  } else if (type === 'object') {
17497
- acc[key] = objectAssign({}, defaultSerializers[key], userSerializers[key]);
18168
+ acc[key] = objectAssign$1({}, defaultSerializers[key], userSerializers[key]);
17498
18169
  } else {
17499
18170
  acc[key] = typeof userSerializers[key] === 'undefined' ? defaultSerializers[key] : userSerializers[key];
17500
18171
  }
@@ -17517,7 +18188,7 @@ var defaults$1 = {
17517
18188
  };
17518
18189
 
17519
18190
  function blocksToNodes(h, properties, defaultSerializers, serializeSpan) {
17520
- var props = objectAssign({}, defaults$1, properties);
18191
+ var props = objectAssign$1({}, defaults$1, properties);
17521
18192
  var rawBlocks = Array.isArray(props.blocks) ? props.blocks : [props.blocks];
17522
18193
  var keyedBlocks = generateKeys(rawBlocks);
17523
18194
  var blocks = nestLists_1(keyedBlocks, props.listNestMode);
@@ -17756,7 +18427,7 @@ var Sidebar = function Sidebar(_ref) {
17756
18427
  ),
17757
18428
  React__default.createElement(
17758
18429
  'style',
17759
- { jsx: true },
18430
+ { jsx: 'true' },
17760
18431
  '\n .sidebar {\n width: 40%;\n padding: 1rem 0 0;\n margin-left: 1rem;\n margin-right: 10%;\n }\n @media screen and (max-width: 991px) {\n .sidebar {\n width: unset;\n padding: 1.25rem;\n margin-left: 1rem;\n margin-right: 1rem;\n }\n }\n '
17761
18432
  )
17762
18433
  );
@@ -17854,7 +18525,7 @@ var IFrame = function IFrame(_ref) {
17854
18525
  return React__default.createElement(
17855
18526
  'div',
17856
18527
  { className: 'd-block text-center mb-3' },
17857
- React__default.createElement('iframe', { className: 'w-100', src: url, frameBorder: '0' })
18528
+ React__default.createElement('iframe', { className: 'w-100 iFrame-block', src: url, frameBorder: '0' })
17858
18529
  );
17859
18530
  };
17860
18531
 
@@ -18001,7 +18672,7 @@ function removeEventListener(type, listener) {
18001
18672
  }
18002
18673
  }
18003
18674
 
18004
- var serialize = serializeNode;
18675
+ var serialize$1 = serializeNode;
18005
18676
 
18006
18677
  var voidElements = ["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"];
18007
18678
 
@@ -18303,7 +18974,7 @@ DOMElement.prototype.focus = function _Element_focus() {
18303
18974
  };
18304
18975
 
18305
18976
  DOMElement.prototype.toString = function _Element_toString() {
18306
- return serialize(this)
18977
+ return serialize$1(this)
18307
18978
  };
18308
18979
 
18309
18980
  DOMElement.prototype.getElementsByClassName = function _Element_getElementsByClassName(classNames) {
@@ -20137,8 +20808,8 @@ var YouTubeGallery = function YouTubeGallery(_ref) {
20137
20808
  //variables
20138
20809
 
20139
20810
 
20140
- var get2 = router.asPath.split('/')[1];
20141
- var get3 = router.asPath.split('/')[2].split('?')[0];
20811
+ var get2 = router && router.asPath ? router.asPath.split('/')[1] : '';
20812
+ var get3 = router && router.asPath ? router.asPath.split('/')[2].split('?')[0] : '';
20142
20813
 
20143
20814
  // Once component mounts, set the variables
20144
20815
  useEffect(function () {
@@ -20279,7 +20950,7 @@ var YouTubeGallery = function YouTubeGallery(_ref) {
20279
20950
  ),
20280
20951
  React__default.createElement(
20281
20952
  'style',
20282
- { jsx: true },
20953
+ { jsx: 'true' },
20283
20954
  '\n .vid-series .video-detail iframe {\n height: 415px !important;\n }\n span.btn {\n margin: 0 1rem;\n }\n '
20284
20955
  )
20285
20956
  );
@@ -20479,7 +21150,17 @@ var Quiz = function Quiz(_ref) {
20479
21150
  );
20480
21151
  };
20481
21152
 
20482
- var getSerializers$1 = function getSerializers(client, pageview, videoAccountIDs, onVote, showVotes) {
21153
+ var Leads = function Leads(_ref) {
21154
+ var url = _ref.url;
21155
+
21156
+ return React__default.createElement(
21157
+ 'div',
21158
+ { className: 'd-block text-center mb-3' },
21159
+ url && React__default.createElement('iframe', { className: 'w-100 h-100 leads-block', src: url, frameBorder: '0', allow: 'fullscreen' })
21160
+ );
21161
+ };
21162
+
21163
+ var getSerializers$1 = function getSerializers(client, pageview, videoAccountIDs, onVote, showVotes, drupalLeadSettings) {
20483
21164
  return {
20484
21165
  types: {
20485
21166
  youtube: function youtube(_ref) {
@@ -20551,6 +21232,13 @@ var getSerializers$1 = function getSerializers(client, pageview, videoAccountIDs
20551
21232
  var quizzes = node.quizzes;
20552
21233
 
20553
21234
  return React__default.createElement(Quiz, { quizzes: quizzes });
21235
+ },
21236
+ leads: function leads(_ref13) {
21237
+ var node = _ref13.node;
21238
+ var leadID = node.leadID;
21239
+
21240
+ var url = '' + drupalLeadSettings.baseUrl + leadID;
21241
+ return React__default.createElement(Leads, { url: url });
20554
21242
  }
20555
21243
  },
20556
21244
  marks: {
@@ -20580,32 +21268,32 @@ var getSerializers$1 = function getSerializers(client, pageview, videoAccountIDs
20580
21268
  children
20581
21269
  );
20582
21270
  },
20583
- alignleft: function alignleft(_ref13) {
20584
- var children = _ref13.children;
21271
+ alignleft: function alignleft(_ref14) {
21272
+ var children = _ref14.children;
20585
21273
  return React__default.createElement(
20586
21274
  'div',
20587
21275
  { style: { textAlign: 'left' } },
20588
21276
  children
20589
21277
  );
20590
21278
  },
20591
- alignright: function alignright(_ref14) {
20592
- var children = _ref14.children;
21279
+ alignright: function alignright(_ref15) {
21280
+ var children = _ref15.children;
20593
21281
  return React__default.createElement(
20594
21282
  'div',
20595
21283
  { style: { textAlign: 'right' } },
20596
21284
  children
20597
21285
  );
20598
21286
  },
20599
- aligncenter: function aligncenter(_ref15) {
20600
- var children = _ref15.children;
21287
+ aligncenter: function aligncenter(_ref16) {
21288
+ var children = _ref16.children;
20601
21289
  return React__default.createElement(
20602
21290
  'div',
20603
21291
  { style: { textAlign: 'center' } },
20604
21292
  children
20605
21293
  );
20606
21294
  },
20607
- alignjustify: function alignjustify(_ref16) {
20608
- var children = _ref16.children;
21295
+ alignjustify: function alignjustify(_ref17) {
21296
+ var children = _ref17.children;
20609
21297
  return React__default.createElement(
20610
21298
  'div',
20611
21299
  { style: { textAlign: 'justify' } },
@@ -20621,9 +21309,60 @@ var getSerializers$1 = function getSerializers(client, pageview, videoAccountIDs
20621
21309
  // ...,
20622
21310
  // feature_img { asset-> {url} }
20623
21311
  // }`
21312
+
21313
+
20624
21314
  var Feature = function Feature(props) {
20625
21315
  var dataset = props.dataset;
20626
21316
 
21317
+ var checkUrlIsExternal = function checkUrlIsExternal(url) {
21318
+ if (/(http|https?)([^\s]+)/g.test(url)) {
21319
+ return true;
21320
+ }
21321
+ return false;
21322
+ };
21323
+
21324
+ var renderUrl = function renderUrl(feature_link, feature_title, feature_body) {
21325
+ if (checkUrlIsExternal(feature_link)) {
21326
+ return React__default.createElement(
21327
+ React__default.Fragment,
21328
+ null,
21329
+ React__default.createElement(
21330
+ 'a',
21331
+ { href: feature_link, target: '_blank' },
21332
+ React__default.createElement(
21333
+ 'h3',
21334
+ { style: { color: 'white' } },
21335
+ feature_title
21336
+ ),
21337
+ React__default.createElement(
21338
+ 'p',
21339
+ { style: { color: '#eee' } },
21340
+ feature_body
21341
+ )
21342
+ )
21343
+ );
21344
+ }
21345
+
21346
+ return React__default.createElement(
21347
+ Link,
21348
+ { href: feature_link },
21349
+ React__default.createElement(
21350
+ 'a',
21351
+ null,
21352
+ React__default.createElement(
21353
+ 'h3',
21354
+ { style: { color: 'white' } },
21355
+ feature_title
21356
+ ),
21357
+ React__default.createElement(
21358
+ 'p',
21359
+ { style: { color: '#eee' } },
21360
+ feature_body
21361
+ )
21362
+ )
21363
+ );
21364
+ };
21365
+
20627
21366
  return React__default.createElement(
20628
21367
  'div',
20629
21368
  null,
@@ -20644,24 +21383,7 @@ var Feature = function Feature(props) {
20644
21383
  React__default.createElement(
20645
21384
  Carousel$1.Caption,
20646
21385
  { style: { paddingRight: '50%', left: '3rem', right: '3rem', top: '0', height: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center' } },
20647
- React__default.createElement(
20648
- Link,
20649
- { href: feature_link },
20650
- React__default.createElement(
20651
- 'a',
20652
- null,
20653
- React__default.createElement(
20654
- 'h3',
20655
- { style: { color: 'white' } },
20656
- feature_title
20657
- ),
20658
- React__default.createElement(
20659
- 'p',
20660
- { style: { color: '#eee' } },
20661
- feature_body
20662
- )
20663
- )
20664
- )
21386
+ renderUrl(feature_link, feature_title, feature_body)
20665
21387
  )
20666
21388
  );
20667
21389
  })
@@ -20705,7 +21427,7 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
20705
21427
  }),
20706
21428
  React__default.createElement(
20707
21429
  'style',
20708
- { jsx: true },
21430
+ { jsx: 'true' },
20709
21431
  '\n .breadcrumb {\n border: none;\n background: transparent;\n }\n .breadcrumb .breadcrumb-item a {\n color: var(--primary);\n font-size: 12px;\n }\n .breadcrumb .breadcrumb-item .active{\n font-size: 12px;\n }\n .breadcrumb-item + .breadcrumb-item::before {\n content: \'' + separator + '\';\n }\n '
20710
21432
  )
20711
21433
  );
@@ -20731,7 +21453,7 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
20731
21453
  ),
20732
21454
  React__default.createElement(
20733
21455
  'style',
20734
- { jsx: true },
21456
+ { jsx: 'true' },
20735
21457
  '\n ol.breadcrumb {\n background: transparent;\n padding-left: 0.25rem;\n }\n '
20736
21458
  )
20737
21459
  );
@@ -21091,5 +21813,5 @@ var PdfDownload = function PdfDownload(props) {
21091
21813
  );
21092
21814
  };
21093
21815
 
21094
- export { ContentCard as DeckContent, GridContent$1 as GridContent, Queue as DeckQueue, ThumbnailCard, TaxonomyCard, GroupDeck, YoutubeGroup, QueueDeckExpanded, VideoSeriesListing$1 as VideoSeriesListing, Column1, Column2, Column3, Header, LeftNav, AccordionPanel, SocialShare, PageFilter, NavMagazine, NavNative, NavNormal, NavDvm, TemplateNormal, AD300x250, AD300x250x600, AD728x90, getSerializers$1 as getSerializers, Search, Feature, Breadcrumbs, SetCookie, Hero, AlphabeticList, PdfDownload };
21816
+ export { ContentCard as DeckContent, GridContent$1 as GridContent, Queue as DeckQueue, ThumbnailCard, TaxonomyCard, GroupDeck, YoutubeGroup, QueueDeckExpanded, VideoSeriesListing$1 as VideoSeriesListing, PublicationDeck, IssueDeck, IssueContentDeck, Column1, Column2, Column3, Header, LeftNav, AccordionPanel, SocialShare, PageFilter, NavMagazine, NavNative, NavNormal, NavDvm, TemplateNormal, AD, AD300x250, AD300x250x600, AD728x90, ADFooter, getSerializers$1 as getSerializers, Search, Feature, Breadcrumbs, SetCookie, Hero, AlphabeticList, PdfDownload };
21095
21817
  //# sourceMappingURL=index.es.js.map