@mjhls/mjh-framework 1.0.113 → 1.0.114

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
@@ -8508,7 +8508,10 @@ var DeckContent = function (_React$Component) {
8508
8508
  return builder.image(source);
8509
8509
  }, _this.renderCardImage = function (row, page) {
8510
8510
  if (row.thumbnail && row.thumbnail.asset) {
8511
- return _this.urlFor(row.thumbnail).url();
8511
+ var url = _this.urlFor(row.thumbnail);
8512
+ if (_this.props.imageHeight) url = url.height(_this.props.imageHeight);
8513
+ if (_this.props.imageWidth) url = url.width(_this.props.imageWidth);
8514
+ return url.url();
8512
8515
  } else {
8513
8516
  return _this.defaultImage;
8514
8517
  }
@@ -8581,6 +8584,50 @@ var DeckContent = function (_React$Component) {
8581
8584
  }
8582
8585
  }
8583
8586
  }
8587
+ }, _this.renderAuthor = function (authorDetail, index$$1, length) {
8588
+ if (authorDetail) {
8589
+ var _id = authorDetail._id,
8590
+ displayName = authorDetail.displayName,
8591
+ url = authorDetail.url;
8592
+
8593
+ if (displayName && url && url.current) {
8594
+ return React__default.createElement(
8595
+ 'div',
8596
+ { key: _id },
8597
+ index$$1 === 0 && React__default.createElement(
8598
+ 'span',
8599
+ { className: 'pr-1' },
8600
+ 'By'
8601
+ ),
8602
+ React__default.createElement(
8603
+ Link,
8604
+ { href: '/authors/[url]', as: '/authors/' + url.current },
8605
+ React__default.createElement(
8606
+ 'a',
8607
+ { className: 'text-muted' },
8608
+ displayName,
8609
+ length !== index$$1 + 1 && React__default.createElement('br', null)
8610
+ )
8611
+ )
8612
+ );
8613
+ } else if (displayName) {
8614
+ return React__default.createElement(
8615
+ 'div',
8616
+ { key: _id },
8617
+ index$$1 === 0 && React__default.createElement(
8618
+ 'span',
8619
+ { className: 'pr-1' },
8620
+ 'By'
8621
+ ),
8622
+ React__default.createElement(
8623
+ 'span',
8624
+ { className: 'text-muted' },
8625
+ displayName,
8626
+ length !== index$$1 + 1 && React__default.createElement('br', null)
8627
+ )
8628
+ );
8629
+ }
8630
+ } else return null;
8584
8631
  }, _this.cardLoader = function (page, columns, variant) {
8585
8632
  var mode = variant && variant === 'bottom' ? 'column-reverse' : 'column';
8586
8633
 
@@ -8635,18 +8682,21 @@ var DeckContent = function (_React$Component) {
8635
8682
  Card.Title,
8636
8683
  null,
8637
8684
  row.title
8638
- ),
8639
- _this.props.showPublished && row.published && React__default.createElement(
8640
- Card.Subtitle,
8641
- null,
8642
- moment(row.published).format('MMMM DD, YYYY')
8643
- ),
8644
- React__default.createElement(
8645
- Card.Text,
8646
- null,
8647
- row.summary
8648
8685
  )
8649
8686
  )
8687
+ ),
8688
+ _this.props.showPublished && row.published && React__default.createElement(
8689
+ Card.Subtitle,
8690
+ null,
8691
+ moment(row.published).format('MMMM DD, YYYY')
8692
+ ),
8693
+ _this.props.showAuthor && row.authorMapping && row.authorMapping.length > 0 && row.authorMapping.map(function (authorDetail, index$$1) {
8694
+ return _this.renderAuthor(authorDetail, index$$1, row.authorMapping.length);
8695
+ }),
8696
+ React__default.createElement(
8697
+ Card.Text,
8698
+ null,
8699
+ row.summary
8650
8700
  )
8651
8701
  )
8652
8702
  )
@@ -9839,7 +9889,10 @@ var GridContent = function (_React$Component) {
9839
9889
  return builder.image(source);
9840
9890
  }, _this.renderCardImage = function (row, page) {
9841
9891
  if (row.thumbnail && row.thumbnail.asset) {
9842
- return _this.urlFor(row.thumbnail).url();
9892
+ var url = _this.urlFor(row.thumbnail);
9893
+ if (_this.props.imageHeight) url = url.height(_this.props.imageHeight);
9894
+ if (_this.props.imageWidth) url = url.width(_this.props.imageWidth);
9895
+ return url.url();
9843
9896
  } else {
9844
9897
  return _this.defaultImage;
9845
9898
  }
@@ -9902,47 +9955,49 @@ var GridContent = function (_React$Component) {
9902
9955
  }
9903
9956
  }
9904
9957
  }, _this.renderAuthor = function (authorDetail, index$$1, length) {
9905
- var _id = authorDetail._id,
9906
- displayName = authorDetail.displayName,
9907
- url = authorDetail.url;
9958
+ if (authorDetail) {
9959
+ var _id = authorDetail._id,
9960
+ displayName = authorDetail.displayName,
9961
+ url = authorDetail.url;
9908
9962
 
9909
- if (displayName && url && url.current) {
9910
- return React__default.createElement(
9911
- 'div',
9912
- { key: _id },
9913
- index$$1 === 0 && React__default.createElement(
9914
- 'span',
9915
- { className: 'pr-1' },
9916
- 'By'
9917
- ),
9918
- React__default.createElement(
9919
- Link,
9920
- { href: '/authors/[url]', as: '/authors/' + url.current },
9963
+ if (displayName && url && url.current) {
9964
+ return React__default.createElement(
9965
+ 'div',
9966
+ { key: _id },
9967
+ index$$1 === 0 && React__default.createElement(
9968
+ 'span',
9969
+ { className: 'pr-1' },
9970
+ 'By'
9971
+ ),
9921
9972
  React__default.createElement(
9922
- 'a',
9973
+ Link,
9974
+ { href: '/authors/[url]', as: '/authors/' + url.current },
9975
+ React__default.createElement(
9976
+ 'a',
9977
+ { className: 'text-muted' },
9978
+ displayName,
9979
+ length !== index$$1 + 1 && React__default.createElement('br', null)
9980
+ )
9981
+ )
9982
+ );
9983
+ } else if (displayName) {
9984
+ return React__default.createElement(
9985
+ 'div',
9986
+ { key: _id },
9987
+ index$$1 === 0 && React__default.createElement(
9988
+ 'span',
9989
+ { className: 'pr-1' },
9990
+ 'By'
9991
+ ),
9992
+ React__default.createElement(
9993
+ 'span',
9923
9994
  { className: 'text-muted' },
9924
9995
  displayName,
9925
9996
  length !== index$$1 + 1 && React__default.createElement('br', null)
9926
9997
  )
9927
- )
9928
- );
9929
- } else if (displayName) {
9930
- return React__default.createElement(
9931
- 'div',
9932
- { key: _id },
9933
- index$$1 === 0 && React__default.createElement(
9934
- 'span',
9935
- { className: 'pr-1' },
9936
- 'By'
9937
- ),
9938
- React__default.createElement(
9939
- 'span',
9940
- { className: 'text-muted' },
9941
- displayName,
9942
- length !== index$$1 + 1 && React__default.createElement('br', null)
9943
- )
9944
- );
9945
- }
9998
+ );
9999
+ }
10000
+ } else return null;
9946
10001
  }, _this.renderManualPagination = function () {
9947
10002
  var currentPage = _this.state.currentPage;
9948
10003
 
@@ -9976,7 +10031,6 @@ var GridContent = function (_React$Component) {
9976
10031
  null,
9977
10032
  this.state.data && this.state.data.map(function (row, index$$1) {
9978
10033
  // const thumbnailURL = get(row, 'thumbnail.asset.url', this.props.defaultImage)
9979
- var thumbnailURL = row.thumbnail ? _this2.urlFor(row.thumbnail).url() : _this2.props.defaultImage;
9980
10034
  return React__default.createElement(
9981
10035
  Col,
9982
10036
  { key: index$$1, md: 12, lg: lgVar, style: { display: 'flex', flex: '1 0 auto' } },
@@ -9995,7 +10049,7 @@ var GridContent = function (_React$Component) {
9995
10049
  React__default.createElement(
9996
10050
  'a',
9997
10051
  null,
9998
- React__default.createElement(Card.Img, { variant: 'top', src: thumbnailURL })
10052
+ React__default.createElement(Card.Img, { variant: 'top', src: _this2.renderCardImage(row, page), alt: row.thumbnail && row.thumbnail.asset ? row.thumbnail.asset.originalFilename : '' })
9999
10053
  )
10000
10054
  )
10001
10055
  ),
@@ -10247,6 +10301,15 @@ var DeckQueue = function (_React$Component) {
10247
10301
 
10248
10302
  var builder = imageUrlBuilder(client);
10249
10303
  return builder.image(source);
10304
+ }, _this.renderCardImage = function (row) {
10305
+ if (row.thumbnail && row.thumbnail.asset) {
10306
+ var url = _this.urlFor(row.thumbnail);
10307
+ if (_this.props.imageHeight) url = url.height(_this.props.imageHeight);
10308
+ if (_this.props.imageWidth) url = url.width(_this.props.imageWidth);
10309
+ return url.url();
10310
+ } else {
10311
+ return _this.defaultImage;
10312
+ }
10250
10313
  }, _this.changePageNumber = function (pageNumber) {
10251
10314
  var _this$props = _this.props,
10252
10315
  seoPaginate = _this$props.seoPaginate,
@@ -10339,7 +10402,7 @@ var DeckQueue = function (_React$Component) {
10339
10402
  this.state.data && this.state.data.map(function (row, index$$1) {
10340
10403
  var pageNumber = row.pageNumber || _this2.state.page;
10341
10404
  // const thumbnailURL = get(row, 'thumbnail.asset.url', this.props.defaultImage)
10342
- var thumbnailURL = row.thumbnail && row.thumbnail.asset ? _this2.urlFor(row.thumbnail).url() : _this2.props.defaultImage;
10405
+
10343
10406
  return React__default.createElement(
10344
10407
  VisibilitySensor,
10345
10408
  {
@@ -10362,7 +10425,7 @@ var DeckQueue = function (_React$Component) {
10362
10425
  React__default.createElement(
10363
10426
  Link,
10364
10427
  { href: _this2.page + '/[url]', as: _this2.page + '/' + get_1(row, 'url.current') },
10365
- React__default.createElement(Card.Img, { variant: 'top', src: thumbnailURL })
10428
+ React__default.createElement(Card.Img, { variant: 'top', src: _this2.renderCardImage(row), alt: row.thumbnail && row.thumbnail.asset ? row.thumbnail.asset.originalFilename : '' })
10366
10429
  )
10367
10430
  ),
10368
10431
  React__default.createElement(
@@ -10498,7 +10561,13 @@ var ThumbnailCard = function ThumbnailCard(_ref) {
10498
10561
  return React__default.createElement(
10499
10562
  Media,
10500
10563
  { className: 'mb-3 thumbnail-card' },
10501
- React__default.createElement('img', { width: size, height: size, className: 'mr-3', src: item.thumbnail ? urlFor(item.thumbnail).url() : defaultImage, alt: 'Generic placeholder' }),
10564
+ React__default.createElement('img', {
10565
+ width: size,
10566
+ height: size,
10567
+ className: 'mr-3',
10568
+ src: item.thumbnail ? urlFor(item.thumbnail).url() : defaultImage,
10569
+ alt: 'Generic placeholder'
10570
+ }),
10502
10571
  React__default.createElement(
10503
10572
  Media.Body,
10504
10573
  null,
@@ -10525,7 +10594,9 @@ var TaxonomyCard = function TaxonomyCard(props) {
10525
10594
  icon = _props$icon === undefined ? false : _props$icon,
10526
10595
  data = props.dataRecord,
10527
10596
  defaultImage = props.defaultImage,
10528
- client = props.client;
10597
+ client = props.client,
10598
+ imageHeight = props.imageHeight,
10599
+ imageWidth = props.imageWidth;
10529
10600
 
10530
10601
 
10531
10602
  var builder = imageUrlBuilder(client);
@@ -10534,6 +10605,13 @@ var TaxonomyCard = function TaxonomyCard(props) {
10534
10605
  return builder.image(source);
10535
10606
  };
10536
10607
 
10608
+ var renderCardImage = function renderCardImage(row) {
10609
+ var url = urlFor(row.thumbnail);
10610
+ if (imageHeight) url = url.height(imageHeight);
10611
+ if (imageWidth) url = url.width(imageWidth);
10612
+ return url.url();
10613
+ };
10614
+
10537
10615
  var mode = variant && variant === 'bottom' ? 'column-reverse' : 'column';
10538
10616
 
10539
10617
  var itemCounter = 0;
@@ -10556,7 +10634,7 @@ var TaxonomyCard = function TaxonomyCard(props) {
10556
10634
  } else {
10557
10635
  lgVar = 6;
10558
10636
  }
10559
- var thumbnailURL = row.thumbnail && row.thumbnail.asset ? urlFor(row.thumbnail.asset).url() : defaultImage;
10637
+ var thumbnailURL = row.thumbnail && row.thumbnail.asset ? renderCardImage(row) : defaultImage;
10560
10638
  return React__default.createElement(
10561
10639
  Col,
10562
10640
  { key: itemCounter, md: 12, lg: lgVar, counter: itemCounter++, style: { display: 'flex', flex: '1 0 auto' } },
@@ -10629,15 +10707,6 @@ var TaxonomyCard = function TaxonomyCard(props) {
10629
10707
  );
10630
10708
  };
10631
10709
 
10632
- /*
10633
- GROQ query -
10634
- *[_type == "article" && references(*[_type == 'documentGroup' && name == 'test']._id)][0...10]{
10635
- title,
10636
- published,
10637
- "thumbnail": thumbnail.asset->url,
10638
- "url": url.current
10639
- }
10640
- */
10641
10710
  var GroupDeck = function GroupDeck(props) {
10642
10711
  // Props should be an array of objects containing Thumbnail, title, and URL
10643
10712
  var get2 = props.get2 ? '/' + props.get2 + '/' : '/view/';
@@ -10982,10 +11051,17 @@ var YoutubeGroup = function YoutubeGroup(props) {
10982
11051
  );
10983
11052
  };
10984
11053
 
10985
- var urlFor = function urlFor(builder, source) {
11054
+ var urlFor = function urlFor(source, builder) {
10986
11055
  return builder.image(source);
10987
11056
  };
10988
11057
 
11058
+ var renderCardImage = function renderCardImage(row, builder, imageHeight, imageWidth) {
11059
+ var url = urlFor(row.thumbnail, builder);
11060
+ if (imageHeight) url = url.height(imageHeight);
11061
+ if (imageWidth) url = url.width(imageWidth);
11062
+ return url.url();
11063
+ };
11064
+
10989
11065
  var loadMore = function loadMore(values, setValues, per) {
10990
11066
  setValues({
10991
11067
  page: values.page + 1,
@@ -11070,50 +11146,52 @@ var changePageNumber = function changePageNumber(pageNumber, seoPaginate, pagevi
11070
11146
  };
11071
11147
 
11072
11148
  var renderAuthor = function renderAuthor(authorDetail, index$$1, length) {
11073
- var _id = authorDetail._id,
11074
- displayName = authorDetail.displayName,
11075
- url = authorDetail.url;
11149
+ if (authorDetail) {
11150
+ var _id = authorDetail._id,
11151
+ displayName = authorDetail.displayName,
11152
+ url = authorDetail.url;
11076
11153
 
11077
- if (displayName && url && url.current) {
11078
- return React__default.createElement(
11079
- 'div',
11080
- { key: _id },
11081
- index$$1 === 0 && React__default.createElement(
11082
- 'span',
11083
- { className: 'pr-1' },
11084
- 'By'
11085
- ),
11086
- React__default.createElement(
11087
- Link,
11088
- { href: '/authors/[url]', as: '/authors/' + url.current },
11154
+ if (displayName && url && url.current) {
11155
+ return React__default.createElement(
11156
+ 'div',
11157
+ { key: _id },
11158
+ index$$1 === 0 && React__default.createElement(
11159
+ 'span',
11160
+ { className: 'pr-1' },
11161
+ 'By'
11162
+ ),
11089
11163
  React__default.createElement(
11090
- 'a',
11164
+ Link,
11165
+ { href: '/authors/[url]', as: '/authors/' + url.current },
11166
+ React__default.createElement(
11167
+ 'a',
11168
+ { className: 'text-muted' },
11169
+ displayName,
11170
+ length !== index$$1 + 1 && React__default.createElement('br', null)
11171
+ )
11172
+ )
11173
+ );
11174
+ } else if (displayName) {
11175
+ return React__default.createElement(
11176
+ 'div',
11177
+ { key: _id },
11178
+ index$$1 === 0 && React__default.createElement(
11179
+ 'span',
11180
+ { className: 'pr-1' },
11181
+ 'By'
11182
+ ),
11183
+ React__default.createElement(
11184
+ 'span',
11091
11185
  { className: 'text-muted' },
11092
11186
  displayName,
11093
11187
  length !== index$$1 + 1 && React__default.createElement('br', null)
11094
11188
  )
11095
- )
11096
- );
11097
- } else if (displayName) {
11098
- return React__default.createElement(
11099
- 'div',
11100
- { key: _id },
11101
- index$$1 === 0 && React__default.createElement(
11102
- 'span',
11103
- { className: 'pr-1' },
11104
- 'By'
11105
- ),
11106
- React__default.createElement(
11107
- 'span',
11108
- { className: 'text-muted' },
11109
- displayName,
11110
- length !== index$$1 + 1 && React__default.createElement('br', null)
11111
- )
11112
- );
11113
- }
11189
+ );
11190
+ }
11191
+ } else return null;
11114
11192
  };
11115
11193
 
11116
- var cardLoader = function cardLoader(data, builder, mapping, values, seoPaginate, pageview, router$$1, currentPage, setCurrentPage, showPublished, defaultImage, showAuthor, showCategory) {
11194
+ var cardLoader = function cardLoader(data, builder, mapping, values, seoPaginate, pageview, router$$1, currentPage, setCurrentPage, showPublished, defaultImage, showAuthor, showCategory, imageHeight, imageWidth) {
11117
11195
  return React__default.createElement(
11118
11196
  'div',
11119
11197
  null,
@@ -11139,11 +11217,7 @@ var cardLoader = function cardLoader(data, builder, mapping, values, seoPaginate
11139
11217
  React__default.createElement(
11140
11218
  'a',
11141
11219
  null,
11142
- article.thumbnail && article.thumbnail.asset ? React__default.createElement('img', {
11143
- className: 'mr-3',
11144
- src: urlFor(builder, article.thumbnail).width(240).height(135).url(),
11145
- alt: article.title
11146
- }) : React__default.createElement('img', { src: defaultImage, className: 'mr-3', width: '240', height: '135' })
11220
+ 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' })
11147
11221
  )
11148
11222
  ),
11149
11223
  React__default.createElement(
@@ -11235,7 +11309,9 @@ var QueueDeckExpanded = function QueueDeckExpanded(props) {
11235
11309
  pageview = props.pageview,
11236
11310
  defaultImage = props.defaultImage,
11237
11311
  showAuthor = props.showAuthor,
11238
- showCategory = props.showCategory;
11312
+ showCategory = props.showCategory,
11313
+ imageHeight = props.imageHeight,
11314
+ imageWidth = props.imageWidth;
11239
11315
  var initialCurrentPage = props.currentPage,
11240
11316
  showPublished = props.showPublished;
11241
11317
 
@@ -11293,7 +11369,7 @@ var QueueDeckExpanded = function QueueDeckExpanded(props) {
11293
11369
  React__default.createElement(
11294
11370
  reactBootstrap.Container,
11295
11371
  null,
11296
- cardLoader(data, builder, mapping, values, seoPaginate, pageview, router$$1, currentPage, setCurrentPage, showPublished, defaultImage, showAuthor, showCategory)
11372
+ cardLoader(data, builder, mapping, values, seoPaginate, pageview, router$$1, currentPage, setCurrentPage, showPublished, defaultImage, showAuthor, showCategory, imageHeight, imageWidth)
11297
11373
  )
11298
11374
  ),
11299
11375
  React__default.createElement(
@@ -11763,11 +11839,74 @@ var LeftNav = function LeftNav(props) {
11763
11839
  );
11764
11840
  };
11765
11841
 
11842
+ var PageFilter = function PageFilter(props) {
11843
+ var getParams = props.getParams,
11844
+ filters = props.filters,
11845
+ defaultFilter = props.defaultFilter;
11846
+
11847
+ var _useState = React.useState(''),
11848
+ _useState2 = slicedToArray(_useState, 2),
11849
+ filter = _useState2[0],
11850
+ setFilter = _useState2[1];
11851
+
11852
+ var usePrevious = function usePrevious(value) {
11853
+ var ref = React.useRef();
11854
+ React.useEffect(function () {
11855
+ ref.current = value;
11856
+ });
11857
+ return ref.current;
11858
+ };
11859
+
11860
+ var sortAttr = usePrevious({ filter: filter });
11861
+
11862
+ React.useEffect(function () {
11863
+ if (sortAttr && sortAttr.filter !== filter) {
11864
+ getParams(filter);
11865
+ }
11866
+ }, [filter, sortAttr, getParams]);
11867
+
11868
+ if (filters.length) {
11869
+ return React__default.createElement(
11870
+ reactBootstrap.Dropdown,
11871
+ null,
11872
+ React__default.createElement(
11873
+ reactBootstrap.Dropdown.Toggle,
11874
+ { id: 'filter-dropdown' },
11875
+ filter || defaultFilter
11876
+ ),
11877
+ React__default.createElement(
11878
+ reactBootstrap.Dropdown.Menu,
11879
+ { className: 'select-dropdown' },
11880
+ filters.map(function (filter, index) {
11881
+ return React__default.createElement(
11882
+ reactBootstrap.Dropdown.Item,
11883
+ { key: index, onClick: function onClick() {
11884
+ return setFilter(filter);
11885
+ } },
11886
+ filter
11887
+ );
11888
+ })
11889
+ ),
11890
+ React__default.createElement(
11891
+ 'style',
11892
+ { jsx: true },
11893
+ '\n .select-dropdown > a {\n color: #8e8c84;\n }\n '
11894
+ )
11895
+ );
11896
+ }
11897
+ return null;
11898
+ };
11899
+
11766
11900
  var Column3 = function Column3(props) {
11767
11901
  var leftItems = props.leftItems,
11768
11902
  rightItems = props.rightItems,
11769
11903
  title = props.title,
11770
- website = props.website;
11904
+ website = props.website,
11905
+ showFilter = props.showFilter,
11906
+ getParams = props.getParams,
11907
+ filters = props.filters,
11908
+ defaultFilter = props.defaultFilter;
11909
+
11771
11910
 
11772
11911
  return React__default.createElement(
11773
11912
  'section',
@@ -11783,20 +11922,38 @@ var Column3 = function Column3(props) {
11783
11922
  React__default.createElement(
11784
11923
  Col,
11785
11924
  { md: true, className: 'middleCol', style: { maxWidth: '640px', marginTop: !title && '10px' } },
11786
- title && React__default.createElement(
11925
+ showFilter ? React__default.createElement(
11926
+ 'div',
11927
+ { className: 'title-wrap' },
11928
+ React__default.createElement(
11929
+ 'h1',
11930
+ { className: 'title' },
11931
+ title
11932
+ ),
11933
+ React__default.createElement(
11934
+ 'div',
11935
+ { className: 'filter-box' },
11936
+ React__default.createElement(PageFilter, { getParams: getParams, filters: filters, defaultFilter: defaultFilter })
11937
+ )
11938
+ ) : title && React__default.createElement(
11787
11939
  'h1',
11788
- null,
11940
+ { className: 'title' },
11789
11941
  title
11790
11942
  ),
11791
11943
  props.children
11792
11944
  ),
11945
+ React__default.createElement(
11946
+ 'style',
11947
+ { jsx: true },
11948
+ '\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 '
11949
+ ),
11793
11950
  React__default.createElement(
11794
11951
  Col,
11795
11952
  { xs: 12, className: 'rightCol' },
11796
11953
  website && website.conferenceBannerContent && React__default.createElement(ConferenceBanner, { website: website }),
11797
11954
  React__default.createElement(
11798
11955
  'div',
11799
- { style: { position: "sticky", top: "60px" } },
11956
+ { style: { position: 'sticky', top: '60px' } },
11800
11957
  rightItems && rightItems.map(function (row, index) {
11801
11958
  return React__default.createElement(
11802
11959
  'div',
@@ -12049,59 +12206,6 @@ var SocialShare = function SocialShare(props) {
12049
12206
  );
12050
12207
  };
12051
12208
 
12052
- var PageFilter = function PageFilter(props) {
12053
- var getParams = props.getParams,
12054
- filters = props.filters,
12055
- defaultFilter = props.defaultFilter;
12056
-
12057
- var _useState = React.useState(''),
12058
- _useState2 = slicedToArray(_useState, 2),
12059
- filter = _useState2[0],
12060
- setFilter = _useState2[1];
12061
-
12062
- var usePrevious = function usePrevious(value) {
12063
- var ref = React.useRef();
12064
- React.useEffect(function () {
12065
- ref.current = value;
12066
- });
12067
- return ref.current;
12068
- };
12069
-
12070
- var sortAttr = usePrevious({ filter: filter });
12071
-
12072
- React.useEffect(function () {
12073
- if (sortAttr && sortAttr.filter !== filter) {
12074
- getParams(filter);
12075
- }
12076
- }, [filter, sortAttr, getParams]);
12077
-
12078
- if (filters.length) {
12079
- return React__default.createElement(
12080
- reactBootstrap.Dropdown,
12081
- null,
12082
- React__default.createElement(
12083
- reactBootstrap.Dropdown.Toggle,
12084
- { id: 'filter-dropdown' },
12085
- filter || defaultFilter
12086
- ),
12087
- React__default.createElement(
12088
- reactBootstrap.Dropdown.Menu,
12089
- null,
12090
- filters.map(function (filter, index) {
12091
- return React__default.createElement(
12092
- reactBootstrap.Dropdown.Item,
12093
- { key: index, onClick: function onClick() {
12094
- return setFilter(filter);
12095
- } },
12096
- filter
12097
- );
12098
- })
12099
- )
12100
- );
12101
- }
12102
- return null;
12103
- };
12104
-
12105
12209
  var Search = function Search(props) {
12106
12210
  var _props$placeholder = props.placeholder,
12107
12211
  placeholder = _props$placeholder === undefined ? 'Search' : _props$placeholder,
@@ -13661,7 +13765,11 @@ var TemplateNormal = function TemplateNormal(props) {
13661
13765
  keywords = props.keywords,
13662
13766
  description = props.description,
13663
13767
  website = props.website,
13664
- horizontalAD = props.config.horizontalAD;
13768
+ horizontalAD = props.config.horizontalAD,
13769
+ showFilter = props.showFilter,
13770
+ filterParams = props.filterParams,
13771
+ filters = props.filters,
13772
+ defaultFilter = props.defaultFilter;
13665
13773
 
13666
13774
 
13667
13775
  var navigation = function navigation() {
@@ -13701,7 +13809,15 @@ var TemplateNormal = function TemplateNormal(props) {
13701
13809
  case '3':
13702
13810
  return React__default.createElement(
13703
13811
  Column3,
13704
- { title: title, leftItems: config.leftItems, rightItems: config.rightItems, website: website },
13812
+ {
13813
+ title: title,
13814
+ leftItems: config.leftItems,
13815
+ rightItems: config.rightItems,
13816
+ website: website,
13817
+ showFilter: showFilter,
13818
+ getParams: filterParams,
13819
+ filters: filters,
13820
+ defaultFilter: defaultFilter },
13705
13821
  props.children
13706
13822
  );
13707
13823
  default:
@@ -13848,7 +13964,12 @@ var FigureComponent = function FigureComponent(_ref) {
13848
13964
  link ? React__default.createElement(
13849
13965
  'a',
13850
13966
  { href: link, target: blank ? '_blank' : '_self' },
13851
- React__default.createElement(reactBootstrap.Figure.Image, { ref: imgElement, onLoad: loadImg, src: urlFor$1(node$$1, client).url(), alt: alt && alt }),
13967
+ React__default.createElement(reactBootstrap.Figure.Image, {
13968
+ ref: imgElement,
13969
+ onLoad: loadImg,
13970
+ src: urlFor$1(node$$1, client).url(),
13971
+ alt: alt && alt
13972
+ }),
13852
13973
  caption && React__default.createElement(
13853
13974
  reactBootstrap.Figure.Caption,
13854
13975
  { style: { width: captionWidth } },
@@ -13857,7 +13978,12 @@ var FigureComponent = function FigureComponent(_ref) {
13857
13978
  ) : React__default.createElement(
13858
13979
  React__default.Fragment,
13859
13980
  null,
13860
- React__default.createElement(reactBootstrap.Figure.Image, { ref: imgElement, onLoad: loadImg, src: urlFor$1(node$$1, client).url(), alt: alt && alt }),
13981
+ React__default.createElement(reactBootstrap.Figure.Image, {
13982
+ ref: imgElement,
13983
+ onLoad: loadImg,
13984
+ src: urlFor$1(node$$1, client).url(),
13985
+ alt: alt && alt
13986
+ }),
13861
13987
  caption && React__default.createElement(
13862
13988
  reactBootstrap.Figure.Caption,
13863
13989
  { style: { width: captionWidth } },
@@ -13903,7 +14029,11 @@ var Slideshow = function Slideshow(_ref) {
13903
14029
  return React__default.createElement(
13904
14030
  reactBootstrap.Carousel.Item,
13905
14031
  { key: slide._key },
13906
- React__default.createElement('img', { src: slide.asset && urlFor$2(slide.asset, builder).url(), alt: slide.alt && slide.alt, style: { width: '100%' } }),
14032
+ React__default.createElement('img', {
14033
+ src: slide.asset && urlFor$2(slide.asset, builder).url(),
14034
+ alt: slide.alt && slide.alt,
14035
+ style: { width: '100%' }
14036
+ }),
13907
14037
  slide.caption && React__default.createElement(
13908
14038
  'p',
13909
14039
  { className: 'p-2' },
@@ -17522,7 +17652,10 @@ var Media$1 = function Media$$1(_ref) {
17522
17652
  React__default.createElement(
17523
17653
  'a',
17524
17654
  { href: uploadDoc.asset.url, target: blank ? '_blank' : '_self' },
17525
- React__default.createElement(reactBootstrap.Figure.Image, { src: urlFor(poster.asset).url(), fluid: true }),
17655
+ React__default.createElement(reactBootstrap.Figure.Image, {
17656
+ src: urlFor(poster.asset).url(),
17657
+ fluid: true
17658
+ }),
17526
17659
  caption && React__default.createElement(
17527
17660
  reactBootstrap.Figure.Caption,
17528
17661
  null,
@@ -17534,7 +17667,9 @@ var Media$1 = function Media$$1(_ref) {
17534
17667
  return React__default.createElement(
17535
17668
  reactBootstrap.Figure,
17536
17669
  { className: 'd-block text-center mb-3' },
17537
- React__default.createElement(reactBootstrap.Figure.Image, { src: urlFor(poster.asset).url() }),
17670
+ React__default.createElement(reactBootstrap.Figure.Image, {
17671
+ src: urlFor(poster.asset).url()
17672
+ }),
17538
17673
  caption && React__default.createElement(
17539
17674
  reactBootstrap.Figure.Caption,
17540
17675
  null,
@@ -20480,9 +20615,18 @@ var urlFor$3 = function urlFor(source, client) {
20480
20615
  return builder.image(source);
20481
20616
  };
20482
20617
 
20618
+ var renderCardImage$1 = function renderCardImage(thumbnail, client, imageHeight, imageWidth) {
20619
+ var url = urlFor$3(thumbnail, client);
20620
+ if (imageHeight) url = url.height(imageHeight);
20621
+ if (imageWidth) url = url.width(imageWidth);
20622
+ return url.url();
20623
+ };
20624
+
20483
20625
  var Hero = function Hero(_ref) {
20484
20626
  var data = _ref.data,
20485
- client = _ref.client;
20627
+ client = _ref.client,
20628
+ imageHeight = _ref.imageHeight,
20629
+ imageWidth = _ref.imageWidth;
20486
20630
  var title = data.title,
20487
20631
  summary = data.summary,
20488
20632
  thumbnail = data.thumbnail,
@@ -20502,7 +20646,7 @@ var Hero = function Hero(_ref) {
20502
20646
  { className: 'h4' },
20503
20647
  title
20504
20648
  ),
20505
- thumbnail && React__default.createElement(reactBootstrap.Card.Img, { src: urlFor$3(thumbnail, client).url() }),
20649
+ thumbnail && client && React__default.createElement(reactBootstrap.Card.Img, { src: renderCardImage$1(thumbnail, client, imageHeight, imageWidth) }),
20506
20650
  summary && React__default.createElement(
20507
20651
  reactBootstrap.Card.Footer,
20508
20652
  { className: 'h6' },