@mjhls/mjh-framework 1.0.851 → 1.0.853

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # mjh-framework v. 1.0.851
1
+ # mjh-framework v. 1.0.853
2
2
 
3
3
  [![NPM](https://img.shields.io/npm/v/mjh-framework.svg)](https://www.npmjs.com/package/mjh-framework) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
4
4
 
@@ -14129,7 +14129,7 @@ var AlgoliaSearch = function (_React$Component) {
14129
14129
  if (moment.moment().isSameOrBefore(props.hit.pubDateSort)) return null;
14130
14130
  return React__default['default'].createElement(
14131
14131
  'div',
14132
- { key: hit.url, className: styles.article },
14132
+ { key: hit.url, className: 'hitResult ' + styles.article },
14133
14133
  React__default['default'].createElement(
14134
14134
  'a',
14135
14135
  { href: '/view/' + hit.url, style: this.props.variant === 'right' ? { flexDirection: 'row-reverse' } : {} },
@@ -14141,39 +14141,43 @@ var AlgoliaSearch = function (_React$Component) {
14141
14141
  null,
14142
14142
  React__default['default'].createElement(
14143
14143
  index$1.LazyLoad,
14144
- null,
14144
+ { once: true },
14145
14145
  React__default['default'].createElement('img', {
14146
14146
  src: hit.thumbnail && hit.thumbnail.asset ? urlFor({ client: client, source: hit.thumbnail }) : hit.thumbnail && _typeof$2._typeof(hit.thumbnail === 'string') ? hit.thumbnail : this.props.defaultImage
14147
14147
  })
14148
14148
  )
14149
14149
  )
14150
- ),
14150
+ )
14151
+ ),
14152
+ React__default['default'].createElement(
14153
+ 'div',
14154
+ { className: styles.info, style: this.props.variant === 'right' ? { padding: '0 1rem 0 0' } : { padding: ' 0 0 0 1rem' } },
14151
14155
  React__default['default'].createElement(
14152
- 'div',
14153
- { className: styles.info, style: this.props.variant === 'right' ? { padding: '0 1rem 0 0' } : { padding: ' 0 0 0 1rem' } },
14156
+ 'a',
14157
+ { href: '/view/' + hit.url },
14154
14158
  React__default['default'].createElement(
14155
14159
  'h2',
14156
14160
  null,
14157
14161
  hit.title
14158
- ),
14159
- hit.pubDateSort && React__default['default'].createElement(
14160
- 'p',
14161
- { className: styles.published },
14162
- moment.moment(hit.pubDateSort).format('MMMM Do YYYY')
14163
- ),
14164
- hit.authorMapping && hit.authorMapping.length > 0 && React__default['default'].createElement(
14165
- 'p',
14166
- { className: styles.author },
14167
- hit.authorMapping.map(function (author) {
14168
- return React__default['default'].createElement(
14169
- 'span',
14170
- null,
14171
- author.displayName
14172
- );
14173
- })
14174
- ),
14175
- hit.summary && React__default['default'].createElement('p', { dangerouslySetInnerHTML: { __html: hit.summary }, className: styles.summary })
14176
- )
14162
+ )
14163
+ ),
14164
+ hit.pubDateSort && React__default['default'].createElement(
14165
+ 'p',
14166
+ { className: styles.published },
14167
+ moment.moment(hit.pubDateSort).format('MMMM Do YYYY')
14168
+ ),
14169
+ hit.authorMapping && hit.authorMapping.length > 0 && React__default['default'].createElement(
14170
+ 'p',
14171
+ { className: styles.author },
14172
+ hit.authorMapping.map(function (author) {
14173
+ return React__default['default'].createElement(
14174
+ 'span',
14175
+ null,
14176
+ author.displayName
14177
+ );
14178
+ })
14179
+ ),
14180
+ hit.summary && React__default['default'].createElement('p', { dangerouslySetInnerHTML: { __html: hit.summary }, className: styles.summary })
14177
14181
  )
14178
14182
  );
14179
14183
  }
@@ -14225,7 +14229,7 @@ var AlgoliaSearch = function (_React$Component) {
14225
14229
  React__default['default'].createElement(
14226
14230
  'style',
14227
14231
  { jsx: 'true' },
14228
- '\n .AlgoliaResults {\n padding-left: 15px;\n margin-top: 3rem;\n }\n\n .search_refinement {\n display: flex;\n margin: 2rem 0;\n }\n\n .search_refinement > div {\n padding-right: 1rem;\n max-height: 500px;\n }\n\n .ais-Hits-list {\n margin: 0;\n list-style: none;\n padding-inline-start: 0;\n }\n .ais-Pagination-list {\n list-style: none;\n }\n .ais-Pagination-list {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n .ais-Pagination-item + .ais-Pagination-item {\n margin-left: 0.3rem;\n }\n .ais-Pagination-link {\n padding: 0.3rem 0.6rem;\n display: block;\n border: 1px solid var(--search-primary);\n border-radius: 5px;\n transition: background-color 0.2s ease-out;\n }\n .ais-Pagination-link:focus,\n .ais-Pagination-link:hover {\n background-color: var(--search-secondary);\n color: #fff;\n }\n .ais-Pagination-item--disabled .ais-Pagination-link {\n opacity: 0.6;\n cursor: not-allowed;\n color: var(--search-secondary);\n }\n .ais-Pagination-item--disabled .ais-Pagination-link:focus,\n .ais-Pagination-item--disabled .ais-Pagination-link:hover {\n color: #fff;\n background-color: var(--search-secondary);\n }\n .ais-Pagination-item--selected .ais-Pagination-link {\n color: #fff;\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n }\n .ais-Pagination-item--selected .ais-Pagination-link:focus,\n .ais-Pagination-item--selected .ais-Pagination-link:hover {\n color: #fff;\n }\n .ais-Pagination-list,\n .ais-Results-list {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n .ais-Pagination-list,\n .ais-PoweredBy,\n .ais-RangeInput-form,\n .ais-RatingMenu-link {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n .ais-RefinementList-item {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n .ais-RefinementList-list {\n margin: 0;\n padding: 0 1rem;\n width: max-content;\n }\n .ais-SearchBox-form {\n width: 100%;\n border-radius: 5px;\n height: 48px;\n }\n .ais-SearchBox-input {\n padding: 0.5rem;\n border-radius: 5px;\n width: calc(100% - 150px);\n height: 48px;\n border: 0;\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-submit {\n width: 78px;\n border-radius: 5px;\n padding: 7px;\n margin-left: 5px;\n height: 48px;\n background-color: var(--search-primary);\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-submit > svg {\n fill: #fff;\n }\n .search_refinement > .dropdown > button {\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n }\n\n .ais-SearchBox-reset {\n height: 48px;\n width: 48px;\n color: #fff;\n background-color: var(--search-primary);\n border: 0;\n margin-left: 5px;\n border-radius: 5px;\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-reset > svg {\n fill: #fff;\n }\n .ais-RefinementList-checkbox {\n margin-right: 5px;\n }\n\n .ais-RefinementList-showMore {\n padding: 0.5rem;\n border: 0;\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n color: #fff;\n border: 1px solid;\n border-radius: 5px;\n margin-left: 1rem;\n }\n '
14232
+ '\n .hitResult {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin-bottom: 1rem;\n border-bottom: 1px solid #00000024;\n padding: 1rem 0;\n }\n .hitResult > a:first-child {\n width: 30%;\n }\n .hitResult > a:first-child > div{\n width: 100%;\n }\n .hitResult > div:last-child {\n width: 100%;\n }\n .hitResult > div:last-child > a {\n margin-bottom: .5rem;\n width: 100%;\n }\n @media only screen and (max-width: 568px) {\n .hitResult {\n flex-direction: column;\n align-items: center;\n border: none;\n padding: 0;\n }\n .hitResult > a:first-child {\n width: 100%;\n }\n .hitResult > div:last-child {\n width: 100%;\n }\n }\n .AlgoliaResults {\n padding-left: 15px;\n margin-top: 3rem;\n }\n\n .search_refinement {\n display: flex;\n margin: 2rem 0;\n }\n\n .search_refinement > div {\n padding-right: 1rem;\n max-height: 500px;\n }\n\n .ais-Hits-list {\n margin: 0;\n list-style: none;\n padding-inline-start: 0;\n }\n .ais-Pagination-list {\n list-style: none;\n }\n .ais-Pagination-list {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n .ais-Pagination-item + .ais-Pagination-item {\n margin-left: 0.3rem;\n }\n .ais-Pagination-link {\n padding: 0.3rem 0.6rem;\n display: block;\n border: 1px solid var(--search-primary);\n border-radius: 5px;\n transition: background-color 0.2s ease-out;\n }\n .ais-Pagination-link:focus,\n .ais-Pagination-link:hover {\n background-color: var(--search-secondary);\n color: #fff;\n }\n .ais-Pagination-item--disabled .ais-Pagination-link {\n opacity: 0.6;\n cursor: not-allowed;\n color: var(--search-secondary);\n }\n .ais-Pagination-item--disabled .ais-Pagination-link:focus,\n .ais-Pagination-item--disabled .ais-Pagination-link:hover {\n color: #fff;\n background-color: var(--search-secondary);\n }\n .ais-Pagination-item--selected .ais-Pagination-link {\n color: #fff;\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n }\n .ais-Pagination-item--selected .ais-Pagination-link:focus,\n .ais-Pagination-item--selected .ais-Pagination-link:hover {\n color: #fff;\n }\n .ais-Pagination-list,\n .ais-Results-list {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n .ais-Pagination-list,\n .ais-PoweredBy,\n .ais-RangeInput-form,\n .ais-RatingMenu-link {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n .ais-RefinementList-item {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n .ais-RefinementList-list {\n margin: 0;\n padding: 0 1rem;\n width: max-content;\n }\n .ais-SearchBox-form {\n width: 100%;\n border-radius: 5px;\n height: 48px;\n }\n .ais-SearchBox-input {\n padding: 0.5rem;\n border-radius: 5px;\n width: calc(100% - 150px);\n height: 48px;\n border: 0;\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-submit {\n width: 78px;\n border-radius: 5px;\n padding: 7px;\n margin-left: 5px;\n height: 48px;\n background-color: var(--search-primary);\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-submit > svg {\n fill: #fff;\n }\n .search_refinement > .dropdown > button {\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n }\n\n .ais-SearchBox-reset {\n height: 48px;\n width: 48px;\n color: #fff;\n background-color: var(--search-primary);\n border: 0;\n margin-left: 5px;\n border-radius: 5px;\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-reset > svg {\n fill: #fff;\n }\n .ais-RefinementList-checkbox {\n margin-right: 5px;\n }\n\n .ais-RefinementList-showMore {\n padding: 0.5rem;\n border: 0;\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n color: #fff;\n border: 1px solid;\n border-radius: 5px;\n margin-left: 1rem;\n }\n '
14229
14233
  )
14230
14234
  );
14231
14235
  }
@@ -5,7 +5,7 @@ var slicedToArray = require('./slicedToArray-5d1bc3b3.js');
5
5
  var _extends = require('./extends-29bdbc6d.js');
6
6
  var React = require('react');
7
7
  var BlockContent = require('./BlockContent-36e54d77.js');
8
- var getSerializers = require('./index-1b7af74f.js');
8
+ var getSerializers = require('./index-8d141227.js');
9
9
  var ArticleSeriesListing = require('./ArticleSeriesListing.js');
10
10
  require('./_commonjsHelpers-06173234.js');
11
11
  require('./es6.string.iterator-c2573ffd.js');
@@ -4,7 +4,7 @@ var _extends = require('./extends-29bdbc6d.js');
4
4
  var slicedToArray = require('./slicedToArray-5d1bc3b3.js');
5
5
  var React = require('react');
6
6
  var BlockContent = require('./BlockContent-36e54d77.js');
7
- var getSerializers = require('./index-1b7af74f.js');
7
+ var getSerializers = require('./index-8d141227.js');
8
8
  var index = require('./index-f86bb269.js');
9
9
  var Router = require('next/router');
10
10
  var Button = require('react-bootstrap/Button');
@@ -5,7 +5,7 @@ var React = require('react');
5
5
  var ArticleCarousel = require('./ArticleCarousel.js');
6
6
  var index_esm = require('./index.esm-974f47d9.js');
7
7
  var BlockContent = require('./BlockContent-36e54d77.js');
8
- var getSerializers = require('./index-1b7af74f.js');
8
+ var getSerializers = require('./index-8d141227.js');
9
9
  require('./_commonjsHelpers-06173234.js');
10
10
  require('./_to-object-6de10e57.js');
11
11
  require('./_object-pie-083f2dd6.js');
@@ -5,7 +5,7 @@ var React = require('react');
5
5
  var QueueDeckExpanded = require('./QueueDeckExpanded.js');
6
6
  var Breadcrumbs = require('./Breadcrumbs.js');
7
7
  var BlockContent = require('./BlockContent-36e54d77.js');
8
- var getSerializers = require('./index-1b7af74f.js');
8
+ var getSerializers = require('./index-8d141227.js');
9
9
  require('./_commonjsHelpers-06173234.js');
10
10
  require('./_to-object-6de10e57.js');
11
11
  require('./_object-pie-083f2dd6.js');
@@ -17,7 +17,7 @@ var urlFor = require('./urlFor.js');
17
17
  var moment = require('./moment-aca40de1.js');
18
18
  var styleInject_es = require('./style-inject.es-dcee06b6.js');
19
19
  var BlockContent = require('./BlockContent-36e54d77.js');
20
- var getSerializers = require('./index-1b7af74f.js');
20
+ var getSerializers = require('./index-8d141227.js');
21
21
  require('./define-property-c88be878.js');
22
22
  require('./_to-object-6de10e57.js');
23
23
  require('./es6.string.iterator-c2573ffd.js');
@@ -11,7 +11,7 @@ var moment = require('./moment-aca40de1.js');
11
11
  var QueueDeckExpanded = require('./QueueDeckExpanded.js');
12
12
  var Breadcrumbs = require('./Breadcrumbs.js');
13
13
  var Feature = require('./Feature.js');
14
- var getSerializers = require('./index-1b7af74f.js');
14
+ var getSerializers = require('./index-8d141227.js');
15
15
  var BlockContent = require('./BlockContent-36e54d77.js');
16
16
  require('./_commonjsHelpers-06173234.js');
17
17
  require('./es6.string.iterator-c2573ffd.js');
@@ -6,7 +6,7 @@ var React = require('react');
6
6
  var Router = require('next/router');
7
7
  var Head = require('next/head');
8
8
  var BlockContent = require('./BlockContent-36e54d77.js');
9
- var getSerializers = require('./index-1b7af74f.js');
9
+ var getSerializers = require('./index-8d141227.js');
10
10
  require('./_commonjsHelpers-06173234.js');
11
11
  require('./es6.string.iterator-c2573ffd.js');
12
12
  require('./_to-object-6de10e57.js');
@@ -7,7 +7,7 @@ var BlockContent = require('./BlockContent-36e54d77.js');
7
7
  var Col = require('react-bootstrap/Col');
8
8
  var Form = require('react-bootstrap/Form');
9
9
  var Button = require('react-bootstrap/Button');
10
- var getSerializers = require('./index-1b7af74f.js');
10
+ var getSerializers = require('./index-8d141227.js');
11
11
  var VideoSeriesListing = require('./VideoSeriesListing.js');
12
12
  require('./_commonjsHelpers-06173234.js');
13
13
  require('./es6.string.iterator-c2573ffd.js');
package/dist/cjs/View.js CHANGED
@@ -17,7 +17,7 @@ var FormControl = require('react-bootstrap/FormControl');
17
17
  var Button = require('react-bootstrap/Button');
18
18
  var visibilitySensor = require('./visibility-sensor-eb2c5b69.js');
19
19
  var SocialShare = require('./SocialShare.js');
20
- var getSerializers = require('./index-1b7af74f.js');
20
+ var getSerializers = require('./index-8d141227.js');
21
21
  var AdSlot = require('./AdSlot.js');
22
22
  var SeriesSlider = require('./SeriesSlider-cbab9f0f.js');
23
23
  var getTargeting = require('./getTargeting-faf37284.js');
@@ -1724,39 +1724,31 @@ var View = function View(props) {
1724
1724
  }
1725
1725
  }, []);
1726
1726
 
1727
- // disable infinite scroll
1728
- var checkVideoSeries = function checkVideoSeries(article) {
1727
+ var isVideoSeries = false;
1728
+ //check for certain serializers that need to disable infinite scroll
1729
+ var checkBodyForDisableInfiniteScroll = function checkBodyForDisableInfiniteScroll(article) {
1729
1730
  if (!article || !article.body) {
1730
1731
  return false;
1731
1732
  }
1732
1733
  for (var i = 0; i < article.body.length; i++) {
1733
- var row = article.body[i];
1734
- if (typeof row.videos !== 'undefined') {
1734
+ if (article.body[i]._type === 'articleSeries' || article.body[i]._type === 'slideshows') {
1735
1735
  return true;
1736
1736
  }
1737
- }
1738
- return false;
1739
- };
1740
-
1741
- var checkArticleSeries = function checkArticleSeries(article) {
1742
- if (!article || !article.body) {
1743
- return false;
1744
- }
1745
- for (var i = 0; i < article.body.length; i++) {
1746
- if (article.body[i]._type === 'articleSeries') {
1737
+ var row = article.body[i];
1738
+ if (typeof row.videos !== 'undefined') {
1739
+ isVideoSeries = true;
1747
1740
  return true;
1748
1741
  }
1749
1742
  }
1750
1743
  return false;
1751
1744
  };
1752
1745
 
1753
- var isVideoSeries = checkVideoSeries(props.article);
1754
- var isArticleSeries = checkArticleSeries(props.article);
1746
+ var disableInfiniteScroll = checkBodyForDisableInfiniteScroll(props.article);
1755
1747
  var commentsEnabledInTaxonomy = Array.isArray(content_placement) && content_placement.some(function (t) {
1756
1748
  return t.showComments === true;
1757
1749
  });
1758
1750
  var showDisqus = commentsEnabledInTaxonomy || hideComments === false;
1759
- var needInfiniteScroll = ['Articles', 'Videos', 'Podcasts'].includes(article.category.name) && article.taxonomyMapping && article.passwordLock !== true && !isVideoSeries && !isArticleSeries && !article.ExcludeFromInfiniteScroll && !sponsoredFlag && infiniteScrollFlag && !article.showIsi && (!article.documentGroup || !article.documentGroup.isSeries) && !showDisqus;
1751
+ var needInfiniteScroll = ['Articles', 'Videos', 'Podcasts'].includes(article.category.name) && article.taxonomyMapping && article.passwordLock !== true && !disableInfiniteScroll && !article.ExcludeFromInfiniteScroll && !sponsoredFlag && infiniteScrollFlag && !article.showIsi && (!article.documentGroup || !article.documentGroup.isSeries) && !showDisqus;
1760
1752
 
1761
1753
  if (['Articles', 'Videos', 'Podcasts'].includes(article.category.name)) {
1762
1754
  title = null;
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  require('react');
4
- var getSerializers = require('./index-1b7af74f.js');
4
+ var getSerializers = require('./index-8d141227.js');
5
5
  require('./BlockContent-36e54d77.js');
6
6
  require('./entities-3f9d0f2f.js');
7
7
  require('./slicedToArray-5d1bc3b3.js');
@@ -8181,7 +8181,7 @@ var Slideshow = function Slideshow(_ref) {
8181
8181
  { href: slide.slideshowImage.link && slide.slideshowImage.link, target: slide.slideshowImage.blank ? '_blank' : '_self' },
8182
8182
  React__default['default'].createElement(
8183
8183
  'div',
8184
- { className: 'embed-responsive embed-responsive-slide' },
8184
+ { style: { textAlign: 'center' }, className: '' },
8185
8185
  React__default['default'].createElement(
8186
8186
  index$2.LazyLoad,
8187
8187
  null,
@@ -8191,13 +8191,8 @@ var Slideshow = function Slideshow(_ref) {
8191
8191
  React__default['default'].createElement('source', { media: '(min-width: 1200px)', srcSet: urlFor({ source: slide.slideshowImage, client: client, imageWidth: 1500, imageFit: 'max' }) }),
8192
8192
  React__default['default'].createElement('source', { media: '(min-width: 600px)', srcSet: urlFor({ source: slide.slideshowImage, client: client, imageWidth: 1000, imageFit: 'max' }) }),
8193
8193
  React__default['default'].createElement('source', { media: '(max-width: 600px)', srcSet: urlFor({ source: slide.slideshowImage, client: client, imageWidth: 500, imageFit: 'max' }) }),
8194
- React__default['default'].createElement('img', { src: urlFor({ source: slide.slideshowImage, client: client }), alt: slide.slideshowImage.alt || 'slideshow image', className: 'embed-responsive-item' })
8194
+ React__default['default'].createElement('img', { src: urlFor({ source: slide.slideshowImage, client: client }), alt: slide.slideshowImage.alt || 'slideshow image', className: 'embed-item-img' })
8195
8195
  )
8196
- ),
8197
- React__default['default'].createElement(
8198
- 'style',
8199
- { jsx: 'true' },
8200
- '\n .embed-responsive-slide::before {\n padding-top: ' + slide.slideshowImage.height / slide.slideshowImage.width * 100 + '%;\n }\n '
8201
8196
  )
8202
8197
  )
8203
8198
  ),
@@ -8219,7 +8214,7 @@ var Slideshow = function Slideshow(_ref) {
8219
8214
  React__default['default'].createElement(
8220
8215
  'style',
8221
8216
  { jsx: 'true' },
8222
- '\n .carousel-indicators {\n bottom: -2.5rem !important;\n }\n .carousel-indicators li {\n width: 20px;\n height: 20px;\n border-radius: 50% !important;\n background-color: var(--secondary);\n }\n .carousel-control-prev {\n justify-content: flex-start;\n }\n .carousel-control-next {\n justify-content: flex-end;\n }\n '
8217
+ '\n .embed-item-img {\n max-width: 100%;\n max-height: 750px;\n }\n .carousel-indicators {\n bottom: -2.5rem !important;\n }\n .carousel-indicators li {\n width: 20px;\n height: 20px;\n border-radius: 50% !important;\n background-color: var(--secondary);\n }\n .carousel-control-prev {\n justify-content: flex-start;\n }\n .carousel-control-next {\n justify-content: flex-end;\n }\n '
8223
8218
  )
8224
8219
  );
8225
8220
  };
package/dist/cjs/index.js CHANGED
@@ -82,7 +82,7 @@ var VerticalHero = require('./VerticalHero.js');
82
82
  var YahooHero = require('./YahooHero.js');
83
83
  var GridHero = require('./GridHero.js');
84
84
  var ConferenceArticleCard = require('./ConferenceArticleCard.js');
85
- var getSerializers = require('./index-1b7af74f.js');
85
+ var getSerializers = require('./index-8d141227.js');
86
86
  var Beam = require('./Beam.js');
87
87
  var Segment = require('./Segment.js');
88
88
  var KMTracker = require('./KMTracker.js');
@@ -14122,7 +14122,7 @@ var AlgoliaSearch = function (_React$Component) {
14122
14122
  if (moment().isSameOrBefore(props.hit.pubDateSort)) return null;
14123
14123
  return React.createElement(
14124
14124
  'div',
14125
- { key: hit.url, className: styles.article },
14125
+ { key: hit.url, className: 'hitResult ' + styles.article },
14126
14126
  React.createElement(
14127
14127
  'a',
14128
14128
  { href: '/view/' + hit.url, style: this.props.variant === 'right' ? { flexDirection: 'row-reverse' } : {} },
@@ -14134,39 +14134,43 @@ var AlgoliaSearch = function (_React$Component) {
14134
14134
  null,
14135
14135
  React.createElement(
14136
14136
  LazyLoad,
14137
- null,
14137
+ { once: true },
14138
14138
  React.createElement('img', {
14139
14139
  src: hit.thumbnail && hit.thumbnail.asset ? urlFor({ client: client, source: hit.thumbnail }) : hit.thumbnail && _typeof$2(hit.thumbnail === 'string') ? hit.thumbnail : this.props.defaultImage
14140
14140
  })
14141
14141
  )
14142
14142
  )
14143
- ),
14143
+ )
14144
+ ),
14145
+ React.createElement(
14146
+ 'div',
14147
+ { className: styles.info, style: this.props.variant === 'right' ? { padding: '0 1rem 0 0' } : { padding: ' 0 0 0 1rem' } },
14144
14148
  React.createElement(
14145
- 'div',
14146
- { className: styles.info, style: this.props.variant === 'right' ? { padding: '0 1rem 0 0' } : { padding: ' 0 0 0 1rem' } },
14149
+ 'a',
14150
+ { href: '/view/' + hit.url },
14147
14151
  React.createElement(
14148
14152
  'h2',
14149
14153
  null,
14150
14154
  hit.title
14151
- ),
14152
- hit.pubDateSort && React.createElement(
14153
- 'p',
14154
- { className: styles.published },
14155
- moment(hit.pubDateSort).format('MMMM Do YYYY')
14156
- ),
14157
- hit.authorMapping && hit.authorMapping.length > 0 && React.createElement(
14158
- 'p',
14159
- { className: styles.author },
14160
- hit.authorMapping.map(function (author) {
14161
- return React.createElement(
14162
- 'span',
14163
- null,
14164
- author.displayName
14165
- );
14166
- })
14167
- ),
14168
- hit.summary && React.createElement('p', { dangerouslySetInnerHTML: { __html: hit.summary }, className: styles.summary })
14169
- )
14155
+ )
14156
+ ),
14157
+ hit.pubDateSort && React.createElement(
14158
+ 'p',
14159
+ { className: styles.published },
14160
+ moment(hit.pubDateSort).format('MMMM Do YYYY')
14161
+ ),
14162
+ hit.authorMapping && hit.authorMapping.length > 0 && React.createElement(
14163
+ 'p',
14164
+ { className: styles.author },
14165
+ hit.authorMapping.map(function (author) {
14166
+ return React.createElement(
14167
+ 'span',
14168
+ null,
14169
+ author.displayName
14170
+ );
14171
+ })
14172
+ ),
14173
+ hit.summary && React.createElement('p', { dangerouslySetInnerHTML: { __html: hit.summary }, className: styles.summary })
14170
14174
  )
14171
14175
  );
14172
14176
  }
@@ -14218,7 +14222,7 @@ var AlgoliaSearch = function (_React$Component) {
14218
14222
  React.createElement(
14219
14223
  'style',
14220
14224
  { jsx: 'true' },
14221
- '\n .AlgoliaResults {\n padding-left: 15px;\n margin-top: 3rem;\n }\n\n .search_refinement {\n display: flex;\n margin: 2rem 0;\n }\n\n .search_refinement > div {\n padding-right: 1rem;\n max-height: 500px;\n }\n\n .ais-Hits-list {\n margin: 0;\n list-style: none;\n padding-inline-start: 0;\n }\n .ais-Pagination-list {\n list-style: none;\n }\n .ais-Pagination-list {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n .ais-Pagination-item + .ais-Pagination-item {\n margin-left: 0.3rem;\n }\n .ais-Pagination-link {\n padding: 0.3rem 0.6rem;\n display: block;\n border: 1px solid var(--search-primary);\n border-radius: 5px;\n transition: background-color 0.2s ease-out;\n }\n .ais-Pagination-link:focus,\n .ais-Pagination-link:hover {\n background-color: var(--search-secondary);\n color: #fff;\n }\n .ais-Pagination-item--disabled .ais-Pagination-link {\n opacity: 0.6;\n cursor: not-allowed;\n color: var(--search-secondary);\n }\n .ais-Pagination-item--disabled .ais-Pagination-link:focus,\n .ais-Pagination-item--disabled .ais-Pagination-link:hover {\n color: #fff;\n background-color: var(--search-secondary);\n }\n .ais-Pagination-item--selected .ais-Pagination-link {\n color: #fff;\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n }\n .ais-Pagination-item--selected .ais-Pagination-link:focus,\n .ais-Pagination-item--selected .ais-Pagination-link:hover {\n color: #fff;\n }\n .ais-Pagination-list,\n .ais-Results-list {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n .ais-Pagination-list,\n .ais-PoweredBy,\n .ais-RangeInput-form,\n .ais-RatingMenu-link {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n .ais-RefinementList-item {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n .ais-RefinementList-list {\n margin: 0;\n padding: 0 1rem;\n width: max-content;\n }\n .ais-SearchBox-form {\n width: 100%;\n border-radius: 5px;\n height: 48px;\n }\n .ais-SearchBox-input {\n padding: 0.5rem;\n border-radius: 5px;\n width: calc(100% - 150px);\n height: 48px;\n border: 0;\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-submit {\n width: 78px;\n border-radius: 5px;\n padding: 7px;\n margin-left: 5px;\n height: 48px;\n background-color: var(--search-primary);\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-submit > svg {\n fill: #fff;\n }\n .search_refinement > .dropdown > button {\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n }\n\n .ais-SearchBox-reset {\n height: 48px;\n width: 48px;\n color: #fff;\n background-color: var(--search-primary);\n border: 0;\n margin-left: 5px;\n border-radius: 5px;\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-reset > svg {\n fill: #fff;\n }\n .ais-RefinementList-checkbox {\n margin-right: 5px;\n }\n\n .ais-RefinementList-showMore {\n padding: 0.5rem;\n border: 0;\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n color: #fff;\n border: 1px solid;\n border-radius: 5px;\n margin-left: 1rem;\n }\n '
14225
+ '\n .hitResult {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin-bottom: 1rem;\n border-bottom: 1px solid #00000024;\n padding: 1rem 0;\n }\n .hitResult > a:first-child {\n width: 30%;\n }\n .hitResult > a:first-child > div{\n width: 100%;\n }\n .hitResult > div:last-child {\n width: 100%;\n }\n .hitResult > div:last-child > a {\n margin-bottom: .5rem;\n width: 100%;\n }\n @media only screen and (max-width: 568px) {\n .hitResult {\n flex-direction: column;\n align-items: center;\n border: none;\n padding: 0;\n }\n .hitResult > a:first-child {\n width: 100%;\n }\n .hitResult > div:last-child {\n width: 100%;\n }\n }\n .AlgoliaResults {\n padding-left: 15px;\n margin-top: 3rem;\n }\n\n .search_refinement {\n display: flex;\n margin: 2rem 0;\n }\n\n .search_refinement > div {\n padding-right: 1rem;\n max-height: 500px;\n }\n\n .ais-Hits-list {\n margin: 0;\n list-style: none;\n padding-inline-start: 0;\n }\n .ais-Pagination-list {\n list-style: none;\n }\n .ais-Pagination-list {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n .ais-Pagination-item + .ais-Pagination-item {\n margin-left: 0.3rem;\n }\n .ais-Pagination-link {\n padding: 0.3rem 0.6rem;\n display: block;\n border: 1px solid var(--search-primary);\n border-radius: 5px;\n transition: background-color 0.2s ease-out;\n }\n .ais-Pagination-link:focus,\n .ais-Pagination-link:hover {\n background-color: var(--search-secondary);\n color: #fff;\n }\n .ais-Pagination-item--disabled .ais-Pagination-link {\n opacity: 0.6;\n cursor: not-allowed;\n color: var(--search-secondary);\n }\n .ais-Pagination-item--disabled .ais-Pagination-link:focus,\n .ais-Pagination-item--disabled .ais-Pagination-link:hover {\n color: #fff;\n background-color: var(--search-secondary);\n }\n .ais-Pagination-item--selected .ais-Pagination-link {\n color: #fff;\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n }\n .ais-Pagination-item--selected .ais-Pagination-link:focus,\n .ais-Pagination-item--selected .ais-Pagination-link:hover {\n color: #fff;\n }\n .ais-Pagination-list,\n .ais-Results-list {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n .ais-Pagination-list,\n .ais-PoweredBy,\n .ais-RangeInput-form,\n .ais-RatingMenu-link {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n .ais-RefinementList-item {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n .ais-RefinementList-list {\n margin: 0;\n padding: 0 1rem;\n width: max-content;\n }\n .ais-SearchBox-form {\n width: 100%;\n border-radius: 5px;\n height: 48px;\n }\n .ais-SearchBox-input {\n padding: 0.5rem;\n border-radius: 5px;\n width: calc(100% - 150px);\n height: 48px;\n border: 0;\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-submit {\n width: 78px;\n border-radius: 5px;\n padding: 7px;\n margin-left: 5px;\n height: 48px;\n background-color: var(--search-primary);\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-submit > svg {\n fill: #fff;\n }\n .search_refinement > .dropdown > button {\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n }\n\n .ais-SearchBox-reset {\n height: 48px;\n width: 48px;\n color: #fff;\n background-color: var(--search-primary);\n border: 0;\n margin-left: 5px;\n border-radius: 5px;\n border: 0.5px solid var(--search-secondary);\n }\n\n .ais-SearchBox-reset > svg {\n fill: #fff;\n }\n .ais-RefinementList-checkbox {\n margin-right: 5px;\n }\n\n .ais-RefinementList-showMore {\n padding: 0.5rem;\n border: 0;\n background-color: var(--search-primary);\n border-color: var(--search-primary);\n color: #fff;\n border: 1px solid;\n border-radius: 5px;\n margin-left: 1rem;\n }\n '
14222
14226
  )
14223
14227
  );
14224
14228
  }
@@ -3,7 +3,7 @@ import { _ as _slicedToArray } from './slicedToArray-be2f7a22.js';
3
3
  import { _ as _extends } from './extends-60e0e1c6.js';
4
4
  import React from 'react';
5
5
  import { B as BlockContent } from './BlockContent-52cf21c5.js';
6
- import { g as getSerializers } from './index-37df0726.js';
6
+ import { g as getSerializers } from './index-b03f775b.js';
7
7
  import ArticleSeriesListing from './ArticleSeriesListing.js';
8
8
  import './_commonjsHelpers-0c4b6f40.js';
9
9
  import './es6.string.iterator-bc33758b.js';
@@ -2,7 +2,7 @@ import { _ as _extends } from './extends-60e0e1c6.js';
2
2
  import { _ as _slicedToArray } from './slicedToArray-be2f7a22.js';
3
3
  import React, { useState, useEffect } from 'react';
4
4
  import { B as BlockContent } from './BlockContent-52cf21c5.js';
5
- import { g as getSerializers } from './index-37df0726.js';
5
+ import { g as getSerializers } from './index-b03f775b.js';
6
6
  import { m as momentTimezone } from './index-79cfd25c.js';
7
7
  import { useRouter } from 'next/router';
8
8
  import Button from 'react-bootstrap/Button';
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import ArticleCarousel from './ArticleCarousel.js';
4
4
  import { I as IoIosArrowForward } from './index.esm-3fdda599.js';
5
5
  import { B as BlockContent } from './BlockContent-52cf21c5.js';
6
- import { g as getSerializers } from './index-37df0726.js';
6
+ import { g as getSerializers } from './index-b03f775b.js';
7
7
  import './_commonjsHelpers-0c4b6f40.js';
8
8
  import './_to-object-b50e61c3.js';
9
9
  import './_object-pie-133f504a.js';
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import QueueDeckExpanded from './QueueDeckExpanded.js';
4
4
  import Breadcrumbs from './Breadcrumbs.js';
5
5
  import { B as BlockContent } from './BlockContent-52cf21c5.js';
6
- import { g as getSerializers } from './index-37df0726.js';
6
+ import { g as getSerializers } from './index-b03f775b.js';
7
7
  import './_commonjsHelpers-0c4b6f40.js';
8
8
  import './_to-object-b50e61c3.js';
9
9
  import './_object-pie-133f504a.js';
@@ -15,7 +15,7 @@ import urlFor from './urlFor.js';
15
15
  import { m as moment } from './moment-bc12cb97.js';
16
16
  import { s as styleInject } from './style-inject.es-1f59c1d0.js';
17
17
  import { B as BlockContent } from './BlockContent-52cf21c5.js';
18
- import { g as getSerializers } from './index-37df0726.js';
18
+ import { g as getSerializers } from './index-b03f775b.js';
19
19
  import './define-property-fe54dc9f.js';
20
20
  import './_to-object-b50e61c3.js';
21
21
  import './es6.string.iterator-bc33758b.js';
@@ -9,7 +9,7 @@ import { m as moment } from './moment-bc12cb97.js';
9
9
  import QueueDeckExpanded from './QueueDeckExpanded.js';
10
10
  import Breadcrumbs from './Breadcrumbs.js';
11
11
  import Feature from './Feature.js';
12
- import { g as getSerializers } from './index-37df0726.js';
12
+ import { g as getSerializers } from './index-b03f775b.js';
13
13
  import { B as BlockContent } from './BlockContent-52cf21c5.js';
14
14
  import './_commonjsHelpers-0c4b6f40.js';
15
15
  import './es6.string.iterator-bc33758b.js';
@@ -4,7 +4,7 @@ import React from 'react';
4
4
  import { useRouter } from 'next/router';
5
5
  import Head from 'next/head';
6
6
  import { B as BlockContent } from './BlockContent-52cf21c5.js';
7
- import { g as getSerializers } from './index-37df0726.js';
7
+ import { g as getSerializers } from './index-b03f775b.js';
8
8
  import './_commonjsHelpers-0c4b6f40.js';
9
9
  import './es6.string.iterator-bc33758b.js';
10
10
  import './_to-object-b50e61c3.js';
@@ -5,7 +5,7 @@ import { B as BlockContent } from './BlockContent-52cf21c5.js';
5
5
  import Col from 'react-bootstrap/Col';
6
6
  import Form from 'react-bootstrap/Form';
7
7
  import Button from 'react-bootstrap/Button';
8
- import { g as getSerializers } from './index-37df0726.js';
8
+ import { g as getSerializers } from './index-b03f775b.js';
9
9
  import VideoSeriesListing from './VideoSeriesListing.js';
10
10
  import './_commonjsHelpers-0c4b6f40.js';
11
11
  import './es6.string.iterator-bc33758b.js';
package/dist/esm/View.js CHANGED
@@ -15,7 +15,7 @@ import FormControl from 'react-bootstrap/FormControl';
15
15
  import Button from 'react-bootstrap/Button';
16
16
  import { V as VisibilitySensor } from './visibility-sensor-f40c2564.js';
17
17
  import SocialShare from './SocialShare.js';
18
- import { r as renderAuthor, g as getSerializers } from './index-37df0726.js';
18
+ import { r as renderAuthor, g as getSerializers } from './index-b03f775b.js';
19
19
  import DFPAdSlot from './AdSlot.js';
20
20
  import { S as SeriesSlider } from './SeriesSlider-5c62a578.js';
21
21
  import { g as getTargeting, a as getContentPlacementUrl } from './getTargeting-c3401fa7.js';
@@ -1714,39 +1714,31 @@ var View = function View(props) {
1714
1714
  }
1715
1715
  }, []);
1716
1716
 
1717
- // disable infinite scroll
1718
- var checkVideoSeries = function checkVideoSeries(article) {
1717
+ var isVideoSeries = false;
1718
+ //check for certain serializers that need to disable infinite scroll
1719
+ var checkBodyForDisableInfiniteScroll = function checkBodyForDisableInfiniteScroll(article) {
1719
1720
  if (!article || !article.body) {
1720
1721
  return false;
1721
1722
  }
1722
1723
  for (var i = 0; i < article.body.length; i++) {
1723
- var row = article.body[i];
1724
- if (typeof row.videos !== 'undefined') {
1724
+ if (article.body[i]._type === 'articleSeries' || article.body[i]._type === 'slideshows') {
1725
1725
  return true;
1726
1726
  }
1727
- }
1728
- return false;
1729
- };
1730
-
1731
- var checkArticleSeries = function checkArticleSeries(article) {
1732
- if (!article || !article.body) {
1733
- return false;
1734
- }
1735
- for (var i = 0; i < article.body.length; i++) {
1736
- if (article.body[i]._type === 'articleSeries') {
1727
+ var row = article.body[i];
1728
+ if (typeof row.videos !== 'undefined') {
1729
+ isVideoSeries = true;
1737
1730
  return true;
1738
1731
  }
1739
1732
  }
1740
1733
  return false;
1741
1734
  };
1742
1735
 
1743
- var isVideoSeries = checkVideoSeries(props.article);
1744
- var isArticleSeries = checkArticleSeries(props.article);
1736
+ var disableInfiniteScroll = checkBodyForDisableInfiniteScroll(props.article);
1745
1737
  var commentsEnabledInTaxonomy = Array.isArray(content_placement) && content_placement.some(function (t) {
1746
1738
  return t.showComments === true;
1747
1739
  });
1748
1740
  var showDisqus = commentsEnabledInTaxonomy || hideComments === false;
1749
- var needInfiniteScroll = ['Articles', 'Videos', 'Podcasts'].includes(article.category.name) && article.taxonomyMapping && article.passwordLock !== true && !isVideoSeries && !isArticleSeries && !article.ExcludeFromInfiniteScroll && !sponsoredFlag && infiniteScrollFlag && !article.showIsi && (!article.documentGroup || !article.documentGroup.isSeries) && !showDisqus;
1741
+ var needInfiniteScroll = ['Articles', 'Videos', 'Podcasts'].includes(article.category.name) && article.taxonomyMapping && article.passwordLock !== true && !disableInfiniteScroll && !article.ExcludeFromInfiniteScroll && !sponsoredFlag && infiniteScrollFlag && !article.showIsi && (!article.documentGroup || !article.documentGroup.isSeries) && !showDisqus;
1750
1742
 
1751
1743
  if (['Articles', 'Videos', 'Podcasts'].includes(article.category.name)) {
1752
1744
  title = null;
@@ -1,5 +1,5 @@
1
1
  import 'react';
2
- export { g as default } from './index-37df0726.js';
2
+ export { g as default } from './index-b03f775b.js';
3
3
  import './BlockContent-52cf21c5.js';
4
4
  import './entities-932b50cf.js';
5
5
  import './slicedToArray-be2f7a22.js';
@@ -8164,7 +8164,7 @@ var Slideshow = function Slideshow(_ref) {
8164
8164
  { href: slide.slideshowImage.link && slide.slideshowImage.link, target: slide.slideshowImage.blank ? '_blank' : '_self' },
8165
8165
  React.createElement(
8166
8166
  'div',
8167
- { className: 'embed-responsive embed-responsive-slide' },
8167
+ { style: { textAlign: 'center' }, className: '' },
8168
8168
  React.createElement(
8169
8169
  LazyLoad,
8170
8170
  null,
@@ -8174,13 +8174,8 @@ var Slideshow = function Slideshow(_ref) {
8174
8174
  React.createElement('source', { media: '(min-width: 1200px)', srcSet: urlFor({ source: slide.slideshowImage, client: client, imageWidth: 1500, imageFit: 'max' }) }),
8175
8175
  React.createElement('source', { media: '(min-width: 600px)', srcSet: urlFor({ source: slide.slideshowImage, client: client, imageWidth: 1000, imageFit: 'max' }) }),
8176
8176
  React.createElement('source', { media: '(max-width: 600px)', srcSet: urlFor({ source: slide.slideshowImage, client: client, imageWidth: 500, imageFit: 'max' }) }),
8177
- React.createElement('img', { src: urlFor({ source: slide.slideshowImage, client: client }), alt: slide.slideshowImage.alt || 'slideshow image', className: 'embed-responsive-item' })
8177
+ React.createElement('img', { src: urlFor({ source: slide.slideshowImage, client: client }), alt: slide.slideshowImage.alt || 'slideshow image', className: 'embed-item-img' })
8178
8178
  )
8179
- ),
8180
- React.createElement(
8181
- 'style',
8182
- { jsx: 'true' },
8183
- '\n .embed-responsive-slide::before {\n padding-top: ' + slide.slideshowImage.height / slide.slideshowImage.width * 100 + '%;\n }\n '
8184
8179
  )
8185
8180
  )
8186
8181
  ),
@@ -8202,7 +8197,7 @@ var Slideshow = function Slideshow(_ref) {
8202
8197
  React.createElement(
8203
8198
  'style',
8204
8199
  { jsx: 'true' },
8205
- '\n .carousel-indicators {\n bottom: -2.5rem !important;\n }\n .carousel-indicators li {\n width: 20px;\n height: 20px;\n border-radius: 50% !important;\n background-color: var(--secondary);\n }\n .carousel-control-prev {\n justify-content: flex-start;\n }\n .carousel-control-next {\n justify-content: flex-end;\n }\n '
8200
+ '\n .embed-item-img {\n max-width: 100%;\n max-height: 750px;\n }\n .carousel-indicators {\n bottom: -2.5rem !important;\n }\n .carousel-indicators li {\n width: 20px;\n height: 20px;\n border-radius: 50% !important;\n background-color: var(--secondary);\n }\n .carousel-control-prev {\n justify-content: flex-start;\n }\n .carousel-control-next {\n justify-content: flex-end;\n }\n '
8206
8201
  )
8207
8202
  );
8208
8203
  };
package/dist/esm/index.js CHANGED
@@ -79,7 +79,7 @@ export { default as VerticalHero } from './VerticalHero.js';
79
79
  export { default as YahooHero } from './YahooHero.js';
80
80
  export { default as GridHero } from './GridHero.js';
81
81
  export { default as ConferenceArticleCard } from './ConferenceArticleCard.js';
82
- export { g as getSerializers } from './index-37df0726.js';
82
+ export { g as getSerializers } from './index-b03f775b.js';
83
83
  export { default as Beam } from './Beam.js';
84
84
  export { default as Segment } from './Segment.js';
85
85
  export { default as KMTracker } from './KMTracker.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mjhls/mjh-framework",
3
- "version": "1.0.851",
3
+ "version": "1.0.853",
4
4
  "description": "Foundation Framework",
5
5
  "author": "mjh-framework",
6
6
  "license": "MIT",