import { a as _asyncToGenerator, r as regenerator } from './asyncToGenerator-7f8f9219.js';
import { _ as _extends } from './extends-60e0e1c6.js';
import React from 'react';
import { B as BlockContent } from './BlockContent-52cf21c5.js';
import Col from 'react-bootstrap/Col';
import Form from 'react-bootstrap/Form';
import Button from 'react-bootstrap/Button';
import { g as getSerializers } from './index-1654b705.js';
import VideoSeriesListing from './VideoSeriesListing.js';
import './_commonjsHelpers-0c4b6f40.js';
import './es6.string.iterator-bc33758b.js';
import './_to-object-b50e61c3.js';
import './web.dom.iterable-4109ff68.js';
import './_library-528f1934.js';
import './core.get-iterator-method-133dfacd.js';
import './_iter-detect-7e5e5ce2.js';
import './_object-pie-133f504a.js';
import 'prop-types';
import './index-0dbff1d1.js';
import './slicedToArray-be2f7a22.js';
import 'react-bootstrap';
import './urlFor.js';
import './index-2446af28.js';
import './events-6c3a7a63.js';
import 'next/router';
import './index-c7e2ac95.js';
import './util-3ab476bf.js';
import './Beam.js';
import './stringify-59c8f690.js';
import './Segment.js';
import './main-b5c5aac1.js';
import './index-35bdcc81.js';
import 'react-dom';
import './typeof-a286cf0c.js';
import './_is-array-3e99e06e.js';
import './brightcove-react-player-loader.es-b43c695a.js';
import './GroupDeck.js';
import './smoothscroll-fa4e3f8c.js';
import './moment-bc12cb97.js';
import './SocialShare.js';
import 'next/head';
import 'react-share';
import './_object-to-array-0f197f89.js';
import './toConsumableArray-6d9a4616.js';
import 'react-bootstrap/Pagination';
import './entities-932b50cf.js';
import './AdSlot.js';
import './debounce-533d9748.js';
import './isSymbol-a7e9aafe.js';
import './toNumber-5aeba6e7.js';
import 'react-bootstrap/Row';
import './inherits-a41fe93f.js';
import './_object-sap-f353c2a9.js';
import './define-property-fe54dc9f.js';
import './index.esm-3fdda599.js';
import './iconBase-602d52fe.js';
import 'react-bootstrap/Figure';
import 'react-bootstrap/Container';
import './visibility-sensor-f40c2564.js';
import './YoutubeGroup.js';
import './index.es-c6222053.js';

var _this = undefined;

var cache = { topic_ids: [] };

var VideoProgramLandingPage = function VideoProgramLandingPage(props) {
  var client = props.client,
      virtualBlock = props.virtualBlock,
      topics = props.topics,
      posts = props.posts,
      query = props.query,
      params = props.params,
      _props$currentPage = props.currentPage,
      currentPage = _props$currentPage === undefined ? 1 : _props$currentPage,
      pageview = props.pageview,
      _props$columns = props.columns,
      columns = _props$columns === undefined ? 'rotate' : _props$columns,
      _props$variant = props.variant,
      variant = _props$variant === undefined ? 'top' : _props$variant,
      _props$page = props.page,
      page = _props$page === undefined ? '' : _props$page,
      _props$autoScroll = props.autoScroll,
      autoScroll = _props$autoScroll === undefined ? true : _props$autoScroll,
      defaultImage = props.defaultImage,
      mapping = props.mapping;

  return React.createElement(
    'div',
    null,
    virtualBlock && React.createElement(BlockContent, _extends({ serializers: getSerializers(client), blocks: virtualBlock.body, imageOptions: { w: 320, h: 240, fit: 'max' } }, client.config())),
    React.createElement(
      'div',
      { className: 'peer-exchange-filter-container' },
      React.createElement(
        Form,
        { className: 'ml-3', method: 'post' },
        React.createElement(
          Form.Row,
          null,
          React.createElement(
            Col,
            null,
            React.createElement(
              Form.Group,
              { controlId: 'topic' },
              React.createElement(
                Form.Control,
                { as: 'select', name: 'topic_id', placeholder: 'Filter by Topic' },
                React.createElement(
                  'option',
                  { value: '' },
                  'All Topics'
                ),
                topics && topics.map(function (topic) {
                  if (props.topic_id === topic._id || topic.name == 'Peer Exchange') {
                    return null;
                  } else {
                    return React.createElement(
                      'option',
                      { value: topic._id },
                      topic.name
                    );
                  }
                })
              )
            )
          ),
          React.createElement(
            Col,
            null,
            React.createElement(
              Button,
              { type: 'submit', variant: 'secondary' },
              'Apply'
            )
          )
        )
      )
    ),
    posts && React.createElement(VideoSeriesListing, {
      client: client,
      mapping: mapping,
      dataRecord: posts,
      query: query,
      params: params,
      currentPage: currentPage,
      pageview: pageview,
      columns: columns,
      variant: variant,
      page: page,
      autoScroll: autoScroll,
      defaultImage: defaultImage
    })
  );
};

VideoProgramLandingPage.getInitialData = function () {
  var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(context, client) {
    var itemsPerPage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 6;
    var topicId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
    var taxonomyId = arguments[4];
    var pathname, virtualBlock, query, taxonomy_ids_res, taxonomy_ids, i, res, j, topics, urlQuery, currentPage, start, params, posts;
    return regenerator.wrap(function _callee$(_context) {
      while (1) {
        switch (_context.prev = _context.next) {
          case 0:
            // Virtual Block
            pathname = context.pathname;
            _context.next = 3;
            return client.fetch('*[_type == \'virtualBlock\' && identifier == \'' + pathname + '\'][0]');

          case 3:
            virtualBlock = _context.sent;


            // Topics for filtering
            query = '';

            if (!(cache && cache.topic_ids && cache.topic_ids.length > 0)) {
              _context.next = 8;
              break;
            }

            _context.next = 15;
            break;

          case 8:
            query = '*[\n        _type == \'article\' \n        && !(_id in path("drafts.**")) \n        && defined(title) \n        && defined(url)\n        && references(\'' + taxonomyId + '\') \n        && is_visible == true \n        && dateTime(published) <= dateTime(now())\n    ]{\n        \'taxonomy_id\': taxonomyMapping[]->_id\n    }';
            _context.next = 11;
            return client.fetch(query);

          case 11:
            taxonomy_ids_res = _context.sent;
            taxonomy_ids = [];

            for (i = 0; i < taxonomy_ids_res.length; i++) {
              res = taxonomy_ids_res[i];

              for (j = 0; j < res.taxonomy_id.length; j++) {
                if (!taxonomy_ids.includes(res.taxonomy_id[j])) {
                  taxonomy_ids.push(res.taxonomy_id[j]);
                }
              }
            }
            cache.topic_ids = taxonomy_ids;

          case 15:
            query = '*[_type == \'taxonomy\' && _id in $taxonomy_ids] | order(name asc)';
            _context.next = 18;
            return client.fetch(query, { taxonomy_ids: cache.topic_ids });

          case 18:
            topics = _context.sent;


            // Posts
            urlQuery = context.query;
            currentPage = urlQuery.page ? parseInt(urlQuery.page) : 1;
            start = (currentPage - 1) * itemsPerPage;
            params = {
              from: start,
              to: start + itemsPerPage,
              url: pathname
            };

            query = '*[\n        _type == \'article\'\n        && !(_id in path("drafts.**"))\n        && defined(title)\n        && defined(url)\n        && is_visible == true\n        && dateTime(published) <= dateTime(now())\n        && references(\'' + taxonomyId + '\')\n        ' + (topicId ? '&& references(\'' + topicId + '\')' : '') + '\n      ] | order(published desc) [$from...$to]{\n  \t\t...,\n  \t\ttitle,\n  \t\tsummary,\n  \t\tpublished,\n  \t\tthumbnail,\n  \t\turl,\n  \t\ttaxonomy,\n  \t\tcontentCategory->,\n  \t\tbody[_type == "youtubeGallery"],\n  \t\t\'pageNumber\': ' + currentPage + '\n  \t}';
            _context.next = 26;
            return client.fetch(query, params);

          case 26:
            posts = _context.sent;
            return _context.abrupt('return', { virtualBlock: virtualBlock, topics: topics, posts: posts, query: query, params: params, currentPage: currentPage });

          case 28:
          case 'end':
            return _context.stop();
        }
      }
    }, _callee, _this);
  }));

  return function (_x, _x2) {
    return _ref.apply(this, arguments);
  };
}();

export default VideoProgramLandingPage;
