@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.js CHANGED
@@ -16,6 +16,8 @@ var Link = _interopDefault(require('next/link'));
16
16
  var router = require('next/router');
17
17
  var Media = _interopDefault(require('react-bootstrap/Media'));
18
18
  var reactBootstrap = require('react-bootstrap');
19
+ var Button = _interopDefault(require('react-bootstrap/Button'));
20
+ var Badge = _interopDefault(require('react-bootstrap/Badge'));
19
21
  var ListGroup = _interopDefault(require('react-bootstrap/ListGroup'));
20
22
  var Head = _interopDefault(require('next/head'));
21
23
  var Accordion = _interopDefault(require('react-bootstrap/Accordion'));
@@ -23,7 +25,6 @@ var AccordionToggle = require('react-bootstrap/AccordionToggle');
23
25
  var reactShare = require('react-share');
24
26
  var Form = _interopDefault(require('react-bootstrap/Form'));
25
27
  var FormControl = _interopDefault(require('react-bootstrap/FormControl'));
26
- var Button = _interopDefault(require('react-bootstrap/Button'));
27
28
  var Nav = _interopDefault(require('react-bootstrap/Nav'));
28
29
  var Navbar = _interopDefault(require('react-bootstrap/Navbar'));
29
30
  var NavDropdown = _interopDefault(require('react-bootstrap/NavDropdown'));
@@ -11594,7 +11595,7 @@ var TaxonomyCard = function TaxonomyCard(props) {
11594
11595
  ),
11595
11596
  icon && React__default.createElement(
11596
11597
  'style',
11597
- { jsx: true },
11598
+ { jsx: 'true' },
11598
11599
  '\n .taxonomy-card:hover .taxonomy-icon {\n transform: translateY(-50%) scale(1.5) translateX(0) !important;\n }\n '
11599
11600
  )
11600
11601
  );
@@ -11738,7 +11739,7 @@ var GroupDeck = function GroupDeck(props) {
11738
11739
  ),
11739
11740
  React__default.createElement(
11740
11741
  'style',
11741
- { jsx: true },
11742
+ { jsx: 'true' },
11742
11743
  '\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 '
11743
11744
  )
11744
11745
  );
@@ -11938,7 +11939,7 @@ var YoutubeGroup = function YoutubeGroup(props) {
11938
11939
  ),
11939
11940
  React__default.createElement(
11940
11941
  'style',
11941
- { jsx: true },
11942
+ { jsx: 'true' },
11942
11943
  '\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 '
11943
11944
  )
11944
11945
  );
@@ -12179,7 +12180,7 @@ var QueueDeckExpanded = function QueueDeckExpanded(props) {
12179
12180
  var contentCategoryName = article.contentCategory ? article.contentCategory.name : 'Articles';
12180
12181
  return React__default.createElement(
12181
12182
  React__default.Fragment,
12182
- null,
12183
+ { key: article._id ? article._id : index$$1 },
12183
12184
  React__default.createElement(
12184
12185
  VisibilitySensor,
12185
12186
  {
@@ -12199,7 +12200,7 @@ var QueueDeckExpanded = function QueueDeckExpanded(props) {
12199
12200
  React__default.createElement(
12200
12201
  'a',
12201
12202
  null,
12202
- 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' })
12203
+ 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 })
12203
12204
  )
12204
12205
  ),
12205
12206
  React__default.createElement(
@@ -12648,6 +12649,221 @@ var VideoSeriesListing = function (_React$Component) {
12648
12649
  }(React__default.Component);
12649
12650
  var VideoSeriesListing$1 = router.withRouter(VideoSeriesListing);
12650
12651
 
12652
+ var PublicationDeck = function PublicationDeck(props) {
12653
+ var data = props.data,
12654
+ imageHeight = props.imageHeight,
12655
+ imageWidth = props.imageWidth,
12656
+ href = props.href,
12657
+ Website = props.Website,
12658
+ client = props.client;
12659
+
12660
+ var urlFor = function urlFor(source) {
12661
+ var builder = imageUrlBuilder(client);
12662
+ return builder.image(source);
12663
+ };
12664
+
12665
+ var renderCardImage = function renderCardImage(thumbnail) {
12666
+ if (thumbnail && thumbnail.asset) {
12667
+ var url = urlFor(thumbnail);
12668
+ if (imageHeight) url = url.height(imageHeight);
12669
+ if (imageWidth) url = url.width(imageWidth);
12670
+ return url.url();
12671
+ } else {
12672
+ return Website.logo;
12673
+ }
12674
+ };
12675
+
12676
+ return React__default.createElement(
12677
+ Row,
12678
+ null,
12679
+ data && data.map(function (row, index) {
12680
+ return row.identifier && row.identifier.current && React__default.createElement(
12681
+ Col,
12682
+ { md: 12, lg: '4', style: { display: 'flex', flex: '1 0 auto' }, key: index },
12683
+ React__default.createElement(
12684
+ Card,
12685
+ { className: 'block-card', style: { width: '200px' } },
12686
+ React__default.createElement(
12687
+ Link,
12688
+ { href: href + '/' + row.identifier.current },
12689
+ React__default.createElement(
12690
+ 'a',
12691
+ null,
12692
+ row.childIssue && row.childIssue.thumbnail && React__default.createElement(Card.Img, { variant: 'top', src: renderCardImage(row.childIssue.thumbnail), alt: row.name }),
12693
+ React__default.createElement(
12694
+ Card.Body,
12695
+ null,
12696
+ React__default.createElement(
12697
+ Card.Title,
12698
+ null,
12699
+ row.name
12700
+ ),
12701
+ React__default.createElement(
12702
+ Button,
12703
+ { variant: 'secondary' },
12704
+ 'Browse Issues'
12705
+ )
12706
+ )
12707
+ )
12708
+ )
12709
+ )
12710
+ );
12711
+ })
12712
+ );
12713
+ };
12714
+
12715
+ var IssueDeck = function IssueDeck(props) {
12716
+ var data = props.data,
12717
+ href = props.href,
12718
+ imageHeight = props.imageHeight,
12719
+ imageWidth = props.imageWidth,
12720
+ Website = props.Website,
12721
+ client = props.client,
12722
+ publication = props.publication;
12723
+
12724
+
12725
+ var urlFor = function urlFor(source) {
12726
+ var builder = imageUrlBuilder(client);
12727
+ return builder.image(source);
12728
+ };
12729
+
12730
+ var renderCardImage = function renderCardImage(thumbnail) {
12731
+ if (thumbnail && thumbnail.asset) {
12732
+ var url = urlFor(thumbnail);
12733
+ if (imageHeight) url = url.height(imageHeight);
12734
+ if (imageWidth) url = url.width(imageWidth);
12735
+ return url.url();
12736
+ } else {
12737
+ return Website.logo;
12738
+ }
12739
+ };
12740
+
12741
+ return React__default.createElement(
12742
+ Row,
12743
+ null,
12744
+ data && data.map(function (row, index) {
12745
+ return publication && row.identifier && row.identifier.current && React__default.createElement(
12746
+ Col,
12747
+ { md: 12, lg: 12, key: index },
12748
+ React__default.createElement(
12749
+ Link,
12750
+ { href: href + '/' + publication + '/' + row.identifier.current },
12751
+ React__default.createElement(
12752
+ 'a',
12753
+ null,
12754
+ React__default.createElement(
12755
+ Card,
12756
+ { className: 'queue-card journal-queue', style: { borderTop: '1px solid #EEE' } },
12757
+ React__default.createElement(
12758
+ Row,
12759
+ { style: { flexDirection: 'left' } },
12760
+ React__default.createElement(
12761
+ Col,
12762
+ { md: 12, lg: 4 },
12763
+ row.thumbnail && React__default.createElement(Card.Img, { variant: 'top', src: renderCardImage(row.thumbnail), alt: row.name })
12764
+ ),
12765
+ React__default.createElement(
12766
+ Col,
12767
+ null,
12768
+ React__default.createElement(
12769
+ Card.Body,
12770
+ { style: { padding: '20px' } },
12771
+ React__default.createElement(
12772
+ Card.Title,
12773
+ null,
12774
+ row.name
12775
+ ),
12776
+ React__default.createElement(
12777
+ 'div',
12778
+ null,
12779
+ 'Volume: ',
12780
+ row.volume
12781
+ ),
12782
+ React__default.createElement(
12783
+ 'div',
12784
+ null,
12785
+ 'Number: ',
12786
+ row.number
12787
+ ),
12788
+ React__default.createElement(
12789
+ Button,
12790
+ { style: { marginTop: '20px' }, variant: 'secondary' },
12791
+ 'View Issue'
12792
+ )
12793
+ )
12794
+ )
12795
+ )
12796
+ )
12797
+ )
12798
+ )
12799
+ );
12800
+ })
12801
+ );
12802
+ };
12803
+
12804
+ var IssueContentDeck = function IssueContentDeck(props) {
12805
+ var data = props.data,
12806
+ imageHeight = props.imageHeight,
12807
+ imageWidth = props.imageWidth,
12808
+ Website = props.Website,
12809
+ client = props.client;
12810
+
12811
+
12812
+ var urlFor = function urlFor(source) {
12813
+ var builder = imageUrlBuilder(client);
12814
+ return builder.image(source);
12815
+ };
12816
+
12817
+ var renderCardImage = function renderCardImage(thumbnail) {
12818
+ if (thumbnail && thumbnail.asset) {
12819
+ var url = urlFor(thumbnail);
12820
+ if (imageHeight) url = url.height(imageHeight);
12821
+ if (imageWidth) url = url.width(imageWidth);
12822
+ return url.url();
12823
+ } else {
12824
+ return Website.logo;
12825
+ }
12826
+ };
12827
+
12828
+ return React__default.createElement(
12829
+ Row,
12830
+ null,
12831
+ data && data.map(function (row, index) {
12832
+ return row.url && row.url.current && React__default.createElement(
12833
+ Col,
12834
+ { md: 12, lg: 6, style: { display: 'flex', flex: '1 0 auto' }, key: index },
12835
+ React__default.createElement(
12836
+ Card,
12837
+ null,
12838
+ React__default.createElement(
12839
+ Link,
12840
+ { href: '/view/[url]', as: '/view/' + row.url.current },
12841
+ React__default.createElement(
12842
+ 'a',
12843
+ null,
12844
+ row.thumbnail && React__default.createElement(Card.Img, { variant: 'top', src: renderCardImage(row.thumbnail), alt: row.title }),
12845
+ React__default.createElement(
12846
+ Card.Body,
12847
+ null,
12848
+ row.issueSection && row.issueSection.name ? React__default.createElement(
12849
+ Badge,
12850
+ { variant: 'success' },
12851
+ row.issueSection && row.issueSection.name.name
12852
+ ) : '',
12853
+ React__default.createElement(
12854
+ Card.Title,
12855
+ null,
12856
+ row.title
12857
+ )
12858
+ )
12859
+ )
12860
+ )
12861
+ )
12862
+ );
12863
+ })
12864
+ );
12865
+ };
12866
+
12651
12867
  var Column1 = function Column1(props) {
12652
12868
  var title = props.title;
12653
12869
 
@@ -12819,12 +13035,12 @@ var LeftNav = function LeftNav(props) {
12819
13035
  { key: subIndex },
12820
13036
  React__default.createElement(
12821
13037
  ListGroup.Item,
12822
- { as: 'li', active: true },
13038
+ { as: 'li', active: true, key: subIndex + '_1' },
12823
13039
  row.name
12824
13040
  ),
12825
13041
  React__default.createElement(
12826
13042
  ListGroup.Item,
12827
- { as: 'li' },
13043
+ { as: 'li', key: subIndex + '_2' },
12828
13044
  renderListGroupItem(subRow)
12829
13045
  )
12830
13046
  );
@@ -12834,7 +13050,7 @@ var LeftNav = function LeftNav(props) {
12834
13050
  { key: subIndex },
12835
13051
  React__default.createElement(
12836
13052
  ListGroup.Item,
12837
- { as: 'li' },
13053
+ { as: 'li', key: subIndex + '_1' },
12838
13054
  renderListGroupItem(subRow)
12839
13055
  )
12840
13056
  );
@@ -12895,7 +13111,7 @@ var PageFilter = function PageFilter(props) {
12895
13111
  ),
12896
13112
  React__default.createElement(
12897
13113
  'style',
12898
- { jsx: true },
13114
+ { jsx: 'true' },
12899
13115
  '\n .select-dropdown > a {\n color: #8e8c84;\n }\n '
12900
13116
  )
12901
13117
  );
@@ -12951,7 +13167,7 @@ var Column3 = function Column3(props) {
12951
13167
  ),
12952
13168
  React__default.createElement(
12953
13169
  'style',
12954
- { jsx: true },
13170
+ { jsx: 'true' },
12955
13171
  '\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 '
12956
13172
  ),
12957
13173
  (!main_36 || showRightAd) && React__default.createElement(
@@ -13185,7 +13401,7 @@ var Search = function Search(props) {
13185
13401
  ),
13186
13402
  React__default.createElement(
13187
13403
  'style',
13188
- { jsx: true },
13404
+ { jsx: 'true' },
13189
13405
  '\n .mobile-search {\n width: 75%;\n margin-right: 15px;\n }\n '
13190
13406
  )
13191
13407
  );
@@ -13239,6 +13455,336 @@ var NavFooter = function NavFooter(props) {
13239
13455
  );
13240
13456
  };
13241
13457
 
13458
+ /*!
13459
+ * cookie
13460
+ * Copyright(c) 2012-2014 Roman Shtylman
13461
+ * Copyright(c) 2015 Douglas Christopher Wilson
13462
+ * MIT Licensed
13463
+ */
13464
+
13465
+ /**
13466
+ * Module exports.
13467
+ * @public
13468
+ */
13469
+
13470
+ var parse_1 = parse;
13471
+ var serialize_1 = serialize;
13472
+
13473
+ /**
13474
+ * Module variables.
13475
+ * @private
13476
+ */
13477
+
13478
+ var decode = decodeURIComponent;
13479
+ var encode = encodeURIComponent;
13480
+ var pairSplitRegExp = /; */;
13481
+
13482
+ /**
13483
+ * RegExp to match field-content in RFC 7230 sec 3.2
13484
+ *
13485
+ * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
13486
+ * field-vchar = VCHAR / obs-text
13487
+ * obs-text = %x80-FF
13488
+ */
13489
+
13490
+ var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
13491
+
13492
+ /**
13493
+ * Parse a cookie header.
13494
+ *
13495
+ * Parse the given cookie header string into an object
13496
+ * The object has the various cookies as keys(names) => values
13497
+ *
13498
+ * @param {string} str
13499
+ * @param {object} [options]
13500
+ * @return {object}
13501
+ * @public
13502
+ */
13503
+
13504
+ function parse(str, options) {
13505
+ if (typeof str !== 'string') {
13506
+ throw new TypeError('argument str must be a string');
13507
+ }
13508
+
13509
+ var obj = {};
13510
+ var opt = options || {};
13511
+ var pairs = str.split(pairSplitRegExp);
13512
+ var dec = opt.decode || decode;
13513
+
13514
+ for (var i = 0; i < pairs.length; i++) {
13515
+ var pair = pairs[i];
13516
+ var eq_idx = pair.indexOf('=');
13517
+
13518
+ // skip things that don't look like key=value
13519
+ if (eq_idx < 0) {
13520
+ continue;
13521
+ }
13522
+
13523
+ var key = pair.substr(0, eq_idx).trim();
13524
+ var val = pair.substr(++eq_idx, pair.length).trim();
13525
+
13526
+ // quoted values
13527
+ if ('"' == val[0]) {
13528
+ val = val.slice(1, -1);
13529
+ }
13530
+
13531
+ // only assign once
13532
+ if (undefined == obj[key]) {
13533
+ obj[key] = tryDecode(val, dec);
13534
+ }
13535
+ }
13536
+
13537
+ return obj;
13538
+ }
13539
+
13540
+ /**
13541
+ * Serialize data into a cookie header.
13542
+ *
13543
+ * Serialize the a name value pair into a cookie string suitable for
13544
+ * http headers. An optional options object specified cookie parameters.
13545
+ *
13546
+ * serialize('foo', 'bar', { httpOnly: true })
13547
+ * => "foo=bar; httpOnly"
13548
+ *
13549
+ * @param {string} name
13550
+ * @param {string} val
13551
+ * @param {object} [options]
13552
+ * @return {string}
13553
+ * @public
13554
+ */
13555
+
13556
+ function serialize(name, val, options) {
13557
+ var opt = options || {};
13558
+ var enc = opt.encode || encode;
13559
+
13560
+ if (typeof enc !== 'function') {
13561
+ throw new TypeError('option encode is invalid');
13562
+ }
13563
+
13564
+ if (!fieldContentRegExp.test(name)) {
13565
+ throw new TypeError('argument name is invalid');
13566
+ }
13567
+
13568
+ var value = enc(val);
13569
+
13570
+ if (value && !fieldContentRegExp.test(value)) {
13571
+ throw new TypeError('argument val is invalid');
13572
+ }
13573
+
13574
+ var str = name + '=' + value;
13575
+
13576
+ if (null != opt.maxAge) {
13577
+ var maxAge = opt.maxAge - 0;
13578
+ if (isNaN(maxAge)) throw new Error('maxAge should be a Number');
13579
+ str += '; Max-Age=' + Math.floor(maxAge);
13580
+ }
13581
+
13582
+ if (opt.domain) {
13583
+ if (!fieldContentRegExp.test(opt.domain)) {
13584
+ throw new TypeError('option domain is invalid');
13585
+ }
13586
+
13587
+ str += '; Domain=' + opt.domain;
13588
+ }
13589
+
13590
+ if (opt.path) {
13591
+ if (!fieldContentRegExp.test(opt.path)) {
13592
+ throw new TypeError('option path is invalid');
13593
+ }
13594
+
13595
+ str += '; Path=' + opt.path;
13596
+ }
13597
+
13598
+ if (opt.expires) {
13599
+ if (typeof opt.expires.toUTCString !== 'function') {
13600
+ throw new TypeError('option expires is invalid');
13601
+ }
13602
+
13603
+ str += '; Expires=' + opt.expires.toUTCString();
13604
+ }
13605
+
13606
+ if (opt.httpOnly) {
13607
+ str += '; HttpOnly';
13608
+ }
13609
+
13610
+ if (opt.secure) {
13611
+ str += '; Secure';
13612
+ }
13613
+
13614
+ if (opt.sameSite) {
13615
+ var sameSite = typeof opt.sameSite === 'string'
13616
+ ? opt.sameSite.toLowerCase() : opt.sameSite;
13617
+
13618
+ switch (sameSite) {
13619
+ case true:
13620
+ str += '; SameSite=Strict';
13621
+ break;
13622
+ case 'lax':
13623
+ str += '; SameSite=Lax';
13624
+ break;
13625
+ case 'strict':
13626
+ str += '; SameSite=Strict';
13627
+ break;
13628
+ case 'none':
13629
+ str += '; SameSite=None';
13630
+ break;
13631
+ default:
13632
+ throw new TypeError('option sameSite is invalid');
13633
+ }
13634
+ }
13635
+
13636
+ return str;
13637
+ }
13638
+
13639
+ /**
13640
+ * Try decoding a string using a decoding function.
13641
+ *
13642
+ * @param {string} str
13643
+ * @param {function} decode
13644
+ * @private
13645
+ */
13646
+
13647
+ function tryDecode(str, decode) {
13648
+ try {
13649
+ return decode(str);
13650
+ } catch (e) {
13651
+ return str;
13652
+ }
13653
+ }
13654
+
13655
+ function hasDocumentCookie() {
13656
+ // Can we get/set cookies on document.cookie?
13657
+ return typeof document === 'object' && typeof document.cookie === 'string';
13658
+ }
13659
+ function parseCookies(cookies, options) {
13660
+ if (typeof cookies === 'string') {
13661
+ return parse_1(cookies, options);
13662
+ }
13663
+ else if (typeof cookies === 'object' && cookies !== null) {
13664
+ return cookies;
13665
+ }
13666
+ else {
13667
+ return {};
13668
+ }
13669
+ }
13670
+ function isParsingCookie(value, doNotParse) {
13671
+ if (typeof doNotParse === 'undefined') {
13672
+ // We guess if the cookie start with { or [, it has been serialized
13673
+ doNotParse =
13674
+ !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '"');
13675
+ }
13676
+ return !doNotParse;
13677
+ }
13678
+ function readCookie(value, options) {
13679
+ if (options === void 0) { options = {}; }
13680
+ var cleanValue = cleanupCookieValue(value);
13681
+ if (isParsingCookie(cleanValue, options.doNotParse)) {
13682
+ try {
13683
+ return JSON.parse(cleanValue);
13684
+ }
13685
+ catch (e) {
13686
+ // At least we tried
13687
+ }
13688
+ }
13689
+ // Ignore clean value if we failed the deserialization
13690
+ // It is not relevant anymore to trim those values
13691
+ return value;
13692
+ }
13693
+ function cleanupCookieValue(value) {
13694
+ // express prepend j: before serializing a cookie
13695
+ if (value && value[0] === 'j' && value[1] === ':') {
13696
+ return value.substr(2);
13697
+ }
13698
+ return value;
13699
+ }
13700
+
13701
+ // We can't please Rollup and TypeScript at the same time
13702
+ // Only way to make both of them work
13703
+ var objectAssign = require('object-assign');
13704
+ var Cookies = /** @class */ (function () {
13705
+ function Cookies(cookies, options) {
13706
+ var _this = this;
13707
+ this.changeListeners = [];
13708
+ this.HAS_DOCUMENT_COOKIE = false;
13709
+ this.cookies = parseCookies(cookies, options);
13710
+ new Promise(function () {
13711
+ _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();
13712
+ }).catch(function () { });
13713
+ }
13714
+ Cookies.prototype._updateBrowserValues = function (parseOptions) {
13715
+ if (!this.HAS_DOCUMENT_COOKIE) {
13716
+ return;
13717
+ }
13718
+ this.cookies = parse_1(document.cookie, parseOptions);
13719
+ };
13720
+ Cookies.prototype._emitChange = function (params) {
13721
+ for (var i = 0; i < this.changeListeners.length; ++i) {
13722
+ this.changeListeners[i](params);
13723
+ }
13724
+ };
13725
+ Cookies.prototype.get = function (name, options, parseOptions) {
13726
+ if (options === void 0) { options = {}; }
13727
+ this._updateBrowserValues(parseOptions);
13728
+ return readCookie(this.cookies[name], options);
13729
+ };
13730
+ Cookies.prototype.getAll = function (options, parseOptions) {
13731
+ if (options === void 0) { options = {}; }
13732
+ this._updateBrowserValues(parseOptions);
13733
+ var result = {};
13734
+ for (var name_1 in this.cookies) {
13735
+ result[name_1] = readCookie(this.cookies[name_1], options);
13736
+ }
13737
+ return result;
13738
+ };
13739
+ Cookies.prototype.set = function (name, value, options) {
13740
+ var _a;
13741
+ if (typeof value === 'object') {
13742
+ value = JSON.stringify(value);
13743
+ }
13744
+ this.cookies = objectAssign({}, this.cookies, (_a = {}, _a[name] = value, _a));
13745
+ if (this.HAS_DOCUMENT_COOKIE) {
13746
+ document.cookie = serialize_1(name, value, options);
13747
+ }
13748
+ this._emitChange({ name: name, value: value, options: options });
13749
+ };
13750
+ Cookies.prototype.remove = function (name, options) {
13751
+ var finalOptions = (options = objectAssign({}, options, {
13752
+ expires: new Date(1970, 1, 1, 0, 0, 1),
13753
+ maxAge: 0
13754
+ }));
13755
+ this.cookies = objectAssign({}, this.cookies);
13756
+ delete this.cookies[name];
13757
+ if (this.HAS_DOCUMENT_COOKIE) {
13758
+ document.cookie = serialize_1(name, '', finalOptions);
13759
+ }
13760
+ this._emitChange({ name: name, value: undefined, options: options });
13761
+ };
13762
+ Cookies.prototype.addChangeListener = function (callback) {
13763
+ this.changeListeners.push(callback);
13764
+ };
13765
+ Cookies.prototype.removeChangeListener = function (callback) {
13766
+ var idx = this.changeListeners.indexOf(callback);
13767
+ if (idx >= 0) {
13768
+ this.changeListeners.splice(idx, 1);
13769
+ }
13770
+ };
13771
+ return Cookies;
13772
+ }());
13773
+
13774
+ var Cookies$1 = Cookies;
13775
+ // we seem to sometimes get the ES6 version despite requesting cjs here, not sure why
13776
+ // this isn't the ideal fix, but it'll do for now
13777
+ Cookies$1 = Cookies$1.default || Cookies$1;
13778
+
13779
+ function nextCookies(ctx, options) {
13780
+ // Note: Next.js Static export sets ctx.req to a fake request with no headers
13781
+ var header = ctx.req && ctx.req.headers && ctx.req.headers.cookie;
13782
+ var uc = new Cookies$1(header);
13783
+ return uc.getAll(options);
13784
+ }
13785
+
13786
+ var nextCookies_1 = nextCookies;
13787
+
13242
13788
  var NavMagazine = function NavMagazine(props) {
13243
13789
  /*
13244
13790
  Example Nav with acceptable props
@@ -13259,8 +13805,7 @@ var NavMagazine = function NavMagazine(props) {
13259
13805
  website = props.website,
13260
13806
  _props$showLogin = props.showLogin,
13261
13807
  showLogin = _props$showLogin === undefined ? false : _props$showLogin,
13262
- _props$loginState = props.loginState,
13263
- loginState = _props$loginState === undefined ? false : _props$loginState;
13808
+ allCookies = props.allCookies;
13264
13809
 
13265
13810
  var navRef = React.useRef(null);
13266
13811
 
@@ -13274,6 +13819,13 @@ var NavMagazine = function NavMagazine(props) {
13274
13819
  screenWidth = _useState4[0],
13275
13820
  setScreenWidth = _useState4[1];
13276
13821
 
13822
+ var initialLoginState = allCookies.loggedIn;
13823
+
13824
+ var _useState5 = React.useState(initialLoginState),
13825
+ _useState6 = slicedToArray(_useState5, 2),
13826
+ loginState = _useState6[0],
13827
+ setLoginState = _useState6[1];
13828
+
13277
13829
  React.useEffect(function () {
13278
13830
  document.addEventListener('scroll', trackScrolling);
13279
13831
  return function () {
@@ -13286,6 +13838,50 @@ var NavMagazine = function NavMagazine(props) {
13286
13838
  setScreenWidth(parseInt(window.innerWidth));
13287
13839
  }, []);
13288
13840
 
13841
+ React.useLayoutEffect(function () {
13842
+ if (typeof GCN !== 'undefined') {
13843
+ GCN.on('init').then(function (data) {
13844
+ console.log('GCN init...');
13845
+ setLoginState(data.loggedin);
13846
+ if (data.loggedIn) {
13847
+ console.log(' - logged in status');
13848
+ document.cookie = 'loggedIn=' + data.loggedIn + '; path=/';
13849
+ } else {
13850
+ console.log(' - logged out status');
13851
+ document.cookie = 'loggedIn=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT';
13852
+ }
13853
+ });
13854
+
13855
+ GCN.on('login').then(function (data) {
13856
+ setLoginState(data.loggedin);
13857
+ console.log('GCN login...');
13858
+ document.cookie = 'loggedIn=' + data.loggedIn + '; path=/';
13859
+ });
13860
+
13861
+ GCN.on('logout').then(function (data) {
13862
+ setLoginState(data.loggedin);
13863
+ console.log('GCN logout...');
13864
+ document.cookie = 'loggedIn=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT';
13865
+ });
13866
+ } else {
13867
+ console.error('GCN not defined for GCN events');
13868
+ }
13869
+ }, []);
13870
+
13871
+ React.useEffect(function () {
13872
+ toggleLogin();
13873
+ }, [loginState]);
13874
+
13875
+ var toggleLogin = function toggleLogin() {
13876
+ if (loginState) {
13877
+ document.getElementsByClassName('logged-in').style.display = '';
13878
+ document.getElementsByClassName('logged-out').style.display = 'none';
13879
+ } else {
13880
+ document.getElementsByClassName('logged-in').style.display = 'none';
13881
+ document.getElementsByClassName('logged-out').style.display = '';
13882
+ }
13883
+ };
13884
+
13289
13885
  var trackScrolling = function trackScrolling() {
13290
13886
  var offsetTop = navRef.current.getBoundingClientRect().top;
13291
13887
 
@@ -13296,6 +13892,34 @@ var NavMagazine = function NavMagazine(props) {
13296
13892
  }
13297
13893
  };
13298
13894
 
13895
+ var handleLogin = function handleLogin(e) {
13896
+ if (typeof GCN !== 'undefined' && GCN && GCN.onecount) {
13897
+ GCN.onecount.login().then(function (result) {
13898
+ console.log('login result: ', result);
13899
+ setLoginState(GCN.onecount.isLoggedIn());
13900
+ }).catch(function (error) {
13901
+ console.log('login error:', error);
13902
+ setLoginState(GCN.onecount.isLoggedIn());
13903
+ });
13904
+ } else {
13905
+ console.error('GCN not defined');
13906
+ }
13907
+ };
13908
+
13909
+ var handleLogout = function handleLogout(e) {
13910
+ if (typeof GCN !== 'undefined' && GCN && GCN.onecount) {
13911
+ GCN.onecount.logout().then(function (result) {
13912
+ console.log('logout result:', result);
13913
+ setLoginState(GCN.onecount.isLoggedIn());
13914
+ }).catch(function (error) {
13915
+ console.log('logout error:', error);
13916
+ setLoginState(GCN.onecount.isLoggedIn());
13917
+ });
13918
+ } else {
13919
+ console.error('GCN not defined');
13920
+ }
13921
+ };
13922
+
13299
13923
  return React__default.createElement(
13300
13924
  React__default.Fragment,
13301
13925
  null,
@@ -13308,12 +13932,14 @@ var NavMagazine = function NavMagazine(props) {
13308
13932
  React__default.createElement(
13309
13933
  Nav,
13310
13934
  { id: 'navbar-top', className: 'justify-content-center navbar-top', style: { margin: '0 auto' } },
13311
- showLogin && !loginState && React__default.createElement(
13935
+ showLogin && React__default.createElement(
13312
13936
  Nav.Item,
13313
- { id: 'nav-mobile-register' },
13937
+ { id: 'nav-mobile-register', className: 'logged-out', style: { display: loginState ? 'none' : '' } },
13314
13938
  React__default.createElement(
13315
13939
  'div',
13316
- { className: 'px-2 py-2' },
13940
+ { className: 'px-2 py-2', onClick: function onClick(e) {
13941
+ return handleLogin(e);
13942
+ } },
13317
13943
  React__default.createElement(MdEmail, null),
13318
13944
  ' Register'
13319
13945
  )
@@ -13331,25 +13957,29 @@ var NavMagazine = function NavMagazine(props) {
13331
13957
  )
13332
13958
  )
13333
13959
  ),
13334
- showLogin && !loginState && React__default.createElement(
13960
+ showLogin && React__default.createElement(
13335
13961
  Nav.Item,
13336
- { id: 'nav-mobile-login' },
13962
+ { id: 'nav-mobile-login', className: 'logged-out', style: { display: loginState ? 'none' : '' } },
13337
13963
  React__default.createElement(
13338
13964
  'div',
13339
- { className: 'px-2 py-2 ' },
13965
+ { className: 'px-2 py-2 ', onClick: function onClick(e) {
13966
+ return handleLogin(e);
13967
+ } },
13340
13968
  React__default.createElement(IoMdLogIn, null),
13341
13969
  ' Login'
13342
13970
  )
13343
13971
  ),
13344
- showLogin && loginState && React__default.createElement(
13972
+ showLogin && React__default.createElement(
13345
13973
  React__default.Fragment,
13346
- null,
13974
+ { className: 'logged-in', style: { display: !loginState ? 'none' : '' } },
13347
13975
  React__default.createElement(
13348
13976
  Nav.Item,
13349
13977
  { id: 'nav-mobile-logout' },
13350
13978
  React__default.createElement(
13351
13979
  'div',
13352
- { className: ' pl-2 pr-3 py-2 text-right' },
13980
+ { className: 'pl-2 pr-3 py-2 text-right', onClick: function onClick(e) {
13981
+ return handleLogout(e);
13982
+ } },
13353
13983
  React__default.createElement(IoMdLogIn, null),
13354
13984
  ' Logout'
13355
13985
  )
@@ -13359,15 +13989,17 @@ var NavMagazine = function NavMagazine(props) {
13359
13989
  React__default.createElement(
13360
13990
  Nav,
13361
13991
  { style: { position: 'absolute', right: '15px' }, className: 'justify-content-end rightHeader' },
13362
- showLogin && !loginState && React__default.createElement(
13992
+ showLogin && React__default.createElement(
13363
13993
  React__default.Fragment,
13364
- null,
13994
+ { className: 'logged-out', style: { display: loginState ? 'none' : '' } },
13365
13995
  React__default.createElement(
13366
13996
  Nav.Item,
13367
13997
  null,
13368
13998
  React__default.createElement(
13369
13999
  'div',
13370
- { className: 'px-2 py-2 mr-2', id: 'nav-register' },
14000
+ { className: 'px-2 py-2 mr-2', id: 'nav-register', onClick: function onClick(e) {
14001
+ return handleLogin(e);
14002
+ } },
13371
14003
  React__default.createElement(MdEmail, null),
13372
14004
  ' Register'
13373
14005
  )
@@ -13377,21 +14009,25 @@ var NavMagazine = function NavMagazine(props) {
13377
14009
  null,
13378
14010
  React__default.createElement(
13379
14011
  'div',
13380
- { className: ' px-2 py-2', id: 'nav-login' },
14012
+ { className: 'px-2 py-2', id: 'nav-login', onClick: function onClick(e) {
14013
+ return handleLogin(e);
14014
+ } },
13381
14015
  React__default.createElement(IoMdLogIn, null),
13382
14016
  ' Login'
13383
14017
  )
13384
14018
  )
13385
14019
  ),
13386
- showLogin && loginState && React__default.createElement(
14020
+ showLogin && React__default.createElement(
13387
14021
  React__default.Fragment,
13388
- null,
14022
+ { className: 'logged-in', style: { display: !loginState ? 'none' : '' } },
13389
14023
  React__default.createElement(
13390
14024
  Nav.Item,
13391
14025
  null,
13392
14026
  React__default.createElement(
13393
14027
  'div',
13394
- { className: ' px-2 py-2', id: 'nav-logout' },
14028
+ { className: 'px-2 py-2', id: 'nav-logout', onClick: function onClick(e) {
14029
+ return handleLogout(e);
14030
+ } },
13395
14031
  React__default.createElement(IoMdLogIn, null),
13396
14032
  ' Logout'
13397
14033
  )
@@ -13519,12 +14155,18 @@ var NavMagazine = function NavMagazine(props) {
13519
14155
  ),
13520
14156
  React__default.createElement(
13521
14157
  'style',
13522
- { jsx: true },
14158
+ { jsx: 'true' },
13523
14159
  '\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 '
13524
14160
  )
13525
14161
  );
13526
14162
  };
13527
14163
 
14164
+ NavMagazine.getInitialProps = function (ctx) {
14165
+ return {
14166
+ allCookies: nextCookies_1(ctx)
14167
+ };
14168
+ };
14169
+
13528
14170
  var NavNative = function NavNative(props) {
13529
14171
  var logo = props.logo,
13530
14172
  dataObject = props.dataObject,
@@ -13649,7 +14291,7 @@ var NavNative = function NavNative(props) {
13649
14291
  ),
13650
14292
  React__default.createElement(
13651
14293
  'style',
13652
- { jsx: true },
14294
+ { jsx: 'true' },
13653
14295
  '\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 '
13654
14296
  )
13655
14297
  );
@@ -13727,7 +14369,7 @@ var NavNormal = function NavNormal(props) {
13727
14369
  ),
13728
14370
  React__default.createElement(
13729
14371
  'style',
13730
- { jsx: true },
14372
+ { jsx: 'true' },
13731
14373
  '\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 '
13732
14374
  )
13733
14375
  );
@@ -14018,19 +14660,17 @@ var AD = function AD(_ref) {
14018
14660
  _ref$targeting = _ref.targeting,
14019
14661
  targeting = _ref$targeting === undefined ? {} : _ref$targeting;
14020
14662
 
14021
-
14022
14663
  return React__default.createElement(
14023
14664
  lib_1,
14024
- { dfpNetworkId: networkID, targetingArguments: targeting, sizeMapping: sizeMapping, lazyLoad: { fetchMarginPercent: 500, renderMarginPercent: 200, mobileScaling: 2.0 } },
14665
+ {
14666
+ dfpNetworkId: networkID,
14667
+ targetingArguments: targeting,
14668
+ sizeMapping: sizeMapping,
14669
+ lazyLoad: { fetchMarginPercent: 500, renderMarginPercent: 200, mobileScaling: 2.0 } },
14025
14670
  React__default.createElement(
14026
14671
  'div',
14027
14672
  { className: className },
14028
- React__default.createElement(lib_2, {
14029
- slotId: slotId,
14030
- sizes: sizes,
14031
- adUnit: adUnit,
14032
- sizeMapping: sizeMapping
14033
- })
14673
+ React__default.createElement(lib_2, { slotId: slotId, sizes: sizes, adUnit: adUnit, sizeMapping: sizeMapping })
14034
14674
  )
14035
14675
  );
14036
14676
  };
@@ -14067,6 +14707,37 @@ var AD300x250x600 = function AD300x250x600(_ref) {
14067
14707
  });
14068
14708
  };
14069
14709
 
14710
+ var ADFooter = function ADFooter(_ref) {
14711
+ var children = _ref.children;
14712
+
14713
+ var _useState = React.useState(true),
14714
+ _useState2 = slicedToArray(_useState, 2),
14715
+ showAd = _useState2[0],
14716
+ setShowAd = _useState2[1];
14717
+
14718
+ return React__default.createElement(
14719
+ React__default.Fragment,
14720
+ null,
14721
+ showAd && React__default.createElement(
14722
+ 'div',
14723
+ { className: 'ADFooter' },
14724
+ children,
14725
+ React__default.createElement(
14726
+ 'div',
14727
+ { className: 'closeButton', onClick: function onClick() {
14728
+ return setShowAd(false);
14729
+ } },
14730
+ 'x'
14731
+ )
14732
+ ),
14733
+ React__default.createElement(
14734
+ 'style',
14735
+ { jsx: true },
14736
+ '\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 '
14737
+ )
14738
+ );
14739
+ };
14740
+
14070
14741
  var urlFor$1 = function urlFor(source, client) {
14071
14742
  var builder = imageUrlBuilder(client);
14072
14743
  return builder.image(source);
@@ -14469,7 +15140,7 @@ var ms = function(val, options) {
14469
15140
  options = options || {};
14470
15141
  var type = typeof val;
14471
15142
  if (type === 'string' && val.length > 0) {
14472
- return parse(val);
15143
+ return parse$1(val);
14473
15144
  } else if (type === 'number' && isNaN(val) === false) {
14474
15145
  return options.long ? fmtLong(val) : fmtShort(val);
14475
15146
  }
@@ -14487,7 +15158,7 @@ var ms = function(val, options) {
14487
15158
  * @api private
14488
15159
  */
14489
15160
 
14490
- function parse(str) {
15161
+ function parse$1(str) {
14491
15162
  str = String(str);
14492
15163
  if (str.length > 100) {
14493
15164
  return;
@@ -16902,7 +17573,7 @@ function shouldUseNative() {
16902
17573
  }
16903
17574
  }
16904
17575
 
16905
- var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
17576
+ var objectAssign$1 = shouldUseNative() ? Object.assign : function (target, source) {
16906
17577
  var from;
16907
17578
  var to = toObject(target);
16908
17579
  var symbols;
@@ -16977,7 +17648,7 @@ var buildUrl = function buildUrl(props) {
16977
17648
  throw new Error('Invalid image reference in block, no `_ref` found on `asset`');
16978
17649
  }
16979
17650
 
16980
- return node(objectAssign({
17651
+ return node(objectAssign$1({
16981
17652
  projectId: projectId,
16982
17653
  dataset: dataset
16983
17654
  }, options.imageOptions || {})).image(node$$1).toString();
@@ -17117,7 +17788,7 @@ var serializers = function (h, serializerOpts) {
17117
17788
  };
17118
17789
  }
17119
17790
 
17120
- var serializedNode = objectAssign({}, span, children);
17791
+ var serializedNode = objectAssign$1({}, span, children);
17121
17792
  return h(serializers.span, {
17122
17793
  key: span._key || "span-".concat(index),
17123
17794
  node: serializedNode,
@@ -17355,7 +18026,7 @@ function nestLists(blocks) {
17355
18026
  // will mutate the input, and we don't want to blindly clone the entire tree.
17356
18027
  // Clone the last child while adding our new list as the last child of it
17357
18028
  var lastListItem = lastChild(currentList);
17358
- var newLastChild = objectAssign({}, lastListItem, {
18029
+ var newLastChild = objectAssign$1({}, lastListItem, {
17359
18030
  children: lastListItem.children.concat(newList)
17360
18031
  }); // Swap the last child
17361
18032
 
@@ -17457,7 +18128,7 @@ var generateKeys = function (blocks) {
17457
18128
  return block;
17458
18129
  }
17459
18130
 
17460
- return objectAssign({
18131
+ return objectAssign$1({
17461
18132
  _key: getStaticKey(block)
17462
18133
  }, block);
17463
18134
  });
@@ -17501,7 +18172,7 @@ var mergeSerializers = function mergeSerializers(defaultSerializers, userSeriali
17501
18172
  if (type === 'function') {
17502
18173
  acc[key] = isDefined(userSerializers[key]) ? userSerializers[key] : defaultSerializers[key];
17503
18174
  } else if (type === 'object') {
17504
- acc[key] = objectAssign({}, defaultSerializers[key], userSerializers[key]);
18175
+ acc[key] = objectAssign$1({}, defaultSerializers[key], userSerializers[key]);
17505
18176
  } else {
17506
18177
  acc[key] = typeof userSerializers[key] === 'undefined' ? defaultSerializers[key] : userSerializers[key];
17507
18178
  }
@@ -17524,7 +18195,7 @@ var defaults$1 = {
17524
18195
  };
17525
18196
 
17526
18197
  function blocksToNodes(h, properties, defaultSerializers, serializeSpan) {
17527
- var props = objectAssign({}, defaults$1, properties);
18198
+ var props = objectAssign$1({}, defaults$1, properties);
17528
18199
  var rawBlocks = Array.isArray(props.blocks) ? props.blocks : [props.blocks];
17529
18200
  var keyedBlocks = generateKeys(rawBlocks);
17530
18201
  var blocks = nestLists_1(keyedBlocks, props.listNestMode);
@@ -17763,7 +18434,7 @@ var Sidebar = function Sidebar(_ref) {
17763
18434
  ),
17764
18435
  React__default.createElement(
17765
18436
  'style',
17766
- { jsx: true },
18437
+ { jsx: 'true' },
17767
18438
  '\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 '
17768
18439
  )
17769
18440
  );
@@ -17861,7 +18532,7 @@ var IFrame = function IFrame(_ref) {
17861
18532
  return React__default.createElement(
17862
18533
  'div',
17863
18534
  { className: 'd-block text-center mb-3' },
17864
- React__default.createElement('iframe', { className: 'w-100', src: url, frameBorder: '0' })
18535
+ React__default.createElement('iframe', { className: 'w-100 iFrame-block', src: url, frameBorder: '0' })
17865
18536
  );
17866
18537
  };
17867
18538
 
@@ -18008,7 +18679,7 @@ function removeEventListener(type, listener) {
18008
18679
  }
18009
18680
  }
18010
18681
 
18011
- var serialize = serializeNode;
18682
+ var serialize$1 = serializeNode;
18012
18683
 
18013
18684
  var voidElements = ["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"];
18014
18685
 
@@ -18310,7 +18981,7 @@ DOMElement.prototype.focus = function _Element_focus() {
18310
18981
  };
18311
18982
 
18312
18983
  DOMElement.prototype.toString = function _Element_toString() {
18313
- return serialize(this)
18984
+ return serialize$1(this)
18314
18985
  };
18315
18986
 
18316
18987
  DOMElement.prototype.getElementsByClassName = function _Element_getElementsByClassName(classNames) {
@@ -20144,8 +20815,8 @@ var YouTubeGallery = function YouTubeGallery(_ref) {
20144
20815
  //variables
20145
20816
 
20146
20817
 
20147
- var get2 = router$$1.asPath.split('/')[1];
20148
- var get3 = router$$1.asPath.split('/')[2].split('?')[0];
20818
+ var get2 = router$$1 && router$$1.asPath ? router$$1.asPath.split('/')[1] : '';
20819
+ var get3 = router$$1 && router$$1.asPath ? router$$1.asPath.split('/')[2].split('?')[0] : '';
20149
20820
 
20150
20821
  // Once component mounts, set the variables
20151
20822
  React.useEffect(function () {
@@ -20286,7 +20957,7 @@ var YouTubeGallery = function YouTubeGallery(_ref) {
20286
20957
  ),
20287
20958
  React__default.createElement(
20288
20959
  'style',
20289
- { jsx: true },
20960
+ { jsx: 'true' },
20290
20961
  '\n .vid-series .video-detail iframe {\n height: 415px !important;\n }\n span.btn {\n margin: 0 1rem;\n }\n '
20291
20962
  )
20292
20963
  );
@@ -20486,7 +21157,17 @@ var Quiz = function Quiz(_ref) {
20486
21157
  );
20487
21158
  };
20488
21159
 
20489
- var getSerializers$1 = function getSerializers(client, pageview, videoAccountIDs, onVote, showVotes) {
21160
+ var Leads = function Leads(_ref) {
21161
+ var url = _ref.url;
21162
+
21163
+ return React__default.createElement(
21164
+ 'div',
21165
+ { className: 'd-block text-center mb-3' },
21166
+ url && React__default.createElement('iframe', { className: 'w-100 h-100 leads-block', src: url, frameBorder: '0', allow: 'fullscreen' })
21167
+ );
21168
+ };
21169
+
21170
+ var getSerializers$1 = function getSerializers(client, pageview, videoAccountIDs, onVote, showVotes, drupalLeadSettings) {
20490
21171
  return {
20491
21172
  types: {
20492
21173
  youtube: function youtube(_ref) {
@@ -20558,6 +21239,13 @@ var getSerializers$1 = function getSerializers(client, pageview, videoAccountIDs
20558
21239
  var quizzes = node.quizzes;
20559
21240
 
20560
21241
  return React__default.createElement(Quiz, { quizzes: quizzes });
21242
+ },
21243
+ leads: function leads(_ref13) {
21244
+ var node = _ref13.node;
21245
+ var leadID = node.leadID;
21246
+
21247
+ var url = '' + drupalLeadSettings.baseUrl + leadID;
21248
+ return React__default.createElement(Leads, { url: url });
20561
21249
  }
20562
21250
  },
20563
21251
  marks: {
@@ -20587,32 +21275,32 @@ var getSerializers$1 = function getSerializers(client, pageview, videoAccountIDs
20587
21275
  children
20588
21276
  );
20589
21277
  },
20590
- alignleft: function alignleft(_ref13) {
20591
- var children = _ref13.children;
21278
+ alignleft: function alignleft(_ref14) {
21279
+ var children = _ref14.children;
20592
21280
  return React__default.createElement(
20593
21281
  'div',
20594
21282
  { style: { textAlign: 'left' } },
20595
21283
  children
20596
21284
  );
20597
21285
  },
20598
- alignright: function alignright(_ref14) {
20599
- var children = _ref14.children;
21286
+ alignright: function alignright(_ref15) {
21287
+ var children = _ref15.children;
20600
21288
  return React__default.createElement(
20601
21289
  'div',
20602
21290
  { style: { textAlign: 'right' } },
20603
21291
  children
20604
21292
  );
20605
21293
  },
20606
- aligncenter: function aligncenter(_ref15) {
20607
- var children = _ref15.children;
21294
+ aligncenter: function aligncenter(_ref16) {
21295
+ var children = _ref16.children;
20608
21296
  return React__default.createElement(
20609
21297
  'div',
20610
21298
  { style: { textAlign: 'center' } },
20611
21299
  children
20612
21300
  );
20613
21301
  },
20614
- alignjustify: function alignjustify(_ref16) {
20615
- var children = _ref16.children;
21302
+ alignjustify: function alignjustify(_ref17) {
21303
+ var children = _ref17.children;
20616
21304
  return React__default.createElement(
20617
21305
  'div',
20618
21306
  { style: { textAlign: 'justify' } },
@@ -20628,9 +21316,60 @@ var getSerializers$1 = function getSerializers(client, pageview, videoAccountIDs
20628
21316
  // ...,
20629
21317
  // feature_img { asset-> {url} }
20630
21318
  // }`
21319
+
21320
+
20631
21321
  var Feature = function Feature(props) {
20632
21322
  var dataset = props.dataset;
20633
21323
 
21324
+ var checkUrlIsExternal = function checkUrlIsExternal(url) {
21325
+ if (/(http|https?)([^\s]+)/g.test(url)) {
21326
+ return true;
21327
+ }
21328
+ return false;
21329
+ };
21330
+
21331
+ var renderUrl = function renderUrl(feature_link, feature_title, feature_body) {
21332
+ if (checkUrlIsExternal(feature_link)) {
21333
+ return React__default.createElement(
21334
+ React__default.Fragment,
21335
+ null,
21336
+ React__default.createElement(
21337
+ 'a',
21338
+ { href: feature_link, target: '_blank' },
21339
+ React__default.createElement(
21340
+ 'h3',
21341
+ { style: { color: 'white' } },
21342
+ feature_title
21343
+ ),
21344
+ React__default.createElement(
21345
+ 'p',
21346
+ { style: { color: '#eee' } },
21347
+ feature_body
21348
+ )
21349
+ )
21350
+ );
21351
+ }
21352
+
21353
+ return React__default.createElement(
21354
+ Link,
21355
+ { href: feature_link },
21356
+ React__default.createElement(
21357
+ 'a',
21358
+ null,
21359
+ React__default.createElement(
21360
+ 'h3',
21361
+ { style: { color: 'white' } },
21362
+ feature_title
21363
+ ),
21364
+ React__default.createElement(
21365
+ 'p',
21366
+ { style: { color: '#eee' } },
21367
+ feature_body
21368
+ )
21369
+ )
21370
+ );
21371
+ };
21372
+
20634
21373
  return React__default.createElement(
20635
21374
  'div',
20636
21375
  null,
@@ -20651,24 +21390,7 @@ var Feature = function Feature(props) {
20651
21390
  React__default.createElement(
20652
21391
  Carousel.Caption,
20653
21392
  { style: { paddingRight: '50%', left: '3rem', right: '3rem', top: '0', height: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center' } },
20654
- React__default.createElement(
20655
- Link,
20656
- { href: feature_link },
20657
- React__default.createElement(
20658
- 'a',
20659
- null,
20660
- React__default.createElement(
20661
- 'h3',
20662
- { style: { color: 'white' } },
20663
- feature_title
20664
- ),
20665
- React__default.createElement(
20666
- 'p',
20667
- { style: { color: '#eee' } },
20668
- feature_body
20669
- )
20670
- )
20671
- )
21393
+ renderUrl(feature_link, feature_title, feature_body)
20672
21394
  )
20673
21395
  );
20674
21396
  })
@@ -20712,7 +21434,7 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
20712
21434
  }),
20713
21435
  React__default.createElement(
20714
21436
  'style',
20715
- { jsx: true },
21437
+ { jsx: 'true' },
20716
21438
  '\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 '
20717
21439
  )
20718
21440
  );
@@ -20738,7 +21460,7 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
20738
21460
  ),
20739
21461
  React__default.createElement(
20740
21462
  'style',
20741
- { jsx: true },
21463
+ { jsx: 'true' },
20742
21464
  '\n ol.breadcrumb {\n background: transparent;\n padding-left: 0.25rem;\n }\n '
20743
21465
  )
20744
21466
  );
@@ -21107,6 +21829,9 @@ exports.GroupDeck = GroupDeck;
21107
21829
  exports.YoutubeGroup = YoutubeGroup;
21108
21830
  exports.QueueDeckExpanded = QueueDeckExpanded;
21109
21831
  exports.VideoSeriesListing = VideoSeriesListing$1;
21832
+ exports.PublicationDeck = PublicationDeck;
21833
+ exports.IssueDeck = IssueDeck;
21834
+ exports.IssueContentDeck = IssueContentDeck;
21110
21835
  exports.Column1 = Column1;
21111
21836
  exports.Column2 = Column2;
21112
21837
  exports.Column3 = Column3;
@@ -21120,9 +21845,11 @@ exports.NavNative = NavNative;
21120
21845
  exports.NavNormal = NavNormal;
21121
21846
  exports.NavDvm = NavDvm;
21122
21847
  exports.TemplateNormal = TemplateNormal;
21848
+ exports.AD = AD;
21123
21849
  exports.AD300x250 = AD300x250;
21124
21850
  exports.AD300x250x600 = AD300x250x600;
21125
21851
  exports.AD728x90 = AD728x90;
21852
+ exports.ADFooter = ADFooter;
21126
21853
  exports.getSerializers = getSerializers$1;
21127
21854
  exports.Search = Search;
21128
21855
  exports.Feature = Feature;