{"version":3,"sources":["webpack:///./src/components/SideDrawer/SideDrawer.tsx","webpack:///./src/data/edition_state.ts","webpack:///./src/components/SelectElement/SelectElement.tsx","webpack:///./src/components/Skeleton/Skeleton.tsx"],"names":["react__WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","react__WEBPACK_IMPORTED_MODULE_0___default","n","react_redux__WEBPACK_IMPORTED_MODULE_1__","antd_mobile__WEBPACK_IMPORTED_MODULE_2__","actions_ConfigActions__WEBPACK_IMPORTED_MODULE_3__","memoize_one__WEBPACK_IMPORTED_MODULE_4__","actions_ArticleActions__WEBPACK_IMPORTED_MODULE_5__","data_sections__WEBPACK_IMPORTED_MODULE_6__","components_SearchResults_SearchResults__WEBPACK_IMPORTED_MODULE_7__","components_SectionNavigation_SectionNavigation__WEBPACK_IMPORTED_MODULE_8__","services_content_contentProxy__WEBPACK_IMPORTED_MODULE_9__","Item","getChildSections","id","Object","values","filter","section","parent","memGetSections","sections","level","map","text","newSections","oldSections","keys","join","__webpack_exports__","state","activeEdition","config","menuTypes","variants","drawerPosition","selected","editions","allSections","reduce","acc","s","menuType","setActiveSection","setActiveArticle","setViewMode","importSectionArticlePreviews","[object Object]","props","super","this","handleClose","setState","searchOpen","searchValue","articleResults","fetchingArticles","history","back","searchWebArticles","length","then","searchResults","suggestedSections","generateSuggestedSections","results","catch","err","console","error","handleClusterClick","log","pushState","handleInput","val","timeoutID","clearTimeout","newTimeoutID","window","setTimeout","handleCancel","handleClear","handleFocus","header","a","createElement","className","leftContent","onClick","cancelText","onCancel","onChange","onClear","onFocus","placeholder","showCancelButton","value","handleSelectArticle","selectedId","undefined","c","topResult","deDupedSearchResults","r","includes","deDupedSearchResultsIds","duDupedSuggestedResults","renderHeader","key","selectSection","articleIds","selectArticle","isOpen","children","Sidebar","buildNavList","transitions","contentStyle","overflow","onOpenChange","open","position","sidebar","sidebarStyle","right","left","style","minHeight","d","editionState","data_sections__WEBPACK_IMPORTED_MODULE_0__","LIVE_EDITION","edition_id","published","last_updated","downloaded","downloading","download_progress","assign","loaded","fetching","articles","packages","type","2019-05-27","front_page_0001","title","url","front_page_0002","2019-05-26","2019-05-25","2019-05-24","2019-05-23","SelectElement","handleChange","options","name","v","Skeleton","count","height","isAnimated","elementCount","styleRules","elements","Array","i"],"mappings":"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","file":"main~21833f8f.bundle.js","sourcesContent":["import React, { PureComponent } from \"react\";\nimport { connect } from \"react-redux\";\nimport { DrawerProps } from \"antd-mobile/lib/drawer/PropsType\";\nimport { Drawer, List, NavBar, SearchBar } from \"antd-mobile\";\nimport {\n  setActiveSection,\n  setActiveArticle,\n  setViewMode\n} from \"actions/ConfigActions\";\nimport { StateInterface } from \"reducers/rootReducer\";\nimport memoizeOne from \"memoize-one\";\nimport { importSectionArticlePreviews } from \"actions/ArticleActions\";\nimport {\n  SECTIONS,\n  MiniSectionInterface,\n  getSectionByFuzzyName,\n  sectionSearch\n} from \"data/sections\";\nimport { EditionSectionInterface } from \"actions/EditionActions\";\nimport { SectionInterface } from \"data/sections\";\nimport { MenuChoicesTypes } from \"variants/menuTypes\";\nimport SearchResult from \"components/SearchResults/SearchResults\";\nimport { SectionNavigation } from \"components/SectionNavigation/SectionNavigation\";\nimport { getSearchResults } from \"services/content/contentProxy\";\nimport { ViewModes } from \"reducers/configReducer\";\nimport { navHistory } from \"libs/NavHistory\";\nimport \"./SideDrawer.css\";\n\nconst { Item } = List;\n\ntype SuggestedSections = { id: string; text: string }[];\n\ninterface PropsInterface extends MapStatePropsInterface, MapDispatchProps {\n  isOpen: boolean;\n  children: JSX.Element[];\n}\n\ninterface LocalStateInterface {\n  selectedId: undefined | string;\n  searchOpen: boolean;\n  searchValue: string;\n  fetchingArticles: boolean;\n  timeoutID: number;\n  suggestedSections: SuggestedSections;\n  articleResults: string[];\n}\n\nclass SideDrawer extends PureComponent<PropsInterface, LocalStateInterface> {\n  public constructor(props: PropsInterface) {\n    super(props);\n    this.state = {\n      selectedId: undefined,\n      searchOpen: false,\n      searchValue: \"\",\n      timeoutID: 0,\n      articleResults: [],\n      suggestedSections: [],\n      fetchingArticles: false\n    };\n  }\n\n  private handleClose = (): void => {\n    this.setState({\n      searchOpen: false,\n      searchValue: \"\",\n      articleResults: [],\n      fetchingArticles: false\n    });\n\n    history.back();\n  };\n\n  private generateSuggestedSections(results: string[]): SuggestedSections {\n    return results.reduce((acc: SuggestedSections, c): SuggestedSections => {\n      const topResult = getSectionByFuzzyName(c);\n\n      return topResult\n        ? [...acc, { id: topResult.id, text: topResult.text }]\n        : acc;\n    }, []);\n  }\n\n  private searchWebArticles = (): void => {\n    const { importSectionArticlePreviews } = this.props;\n    const { searchValue } = this.state;\n\n    if (searchValue.length < 4) {\n      this.setState({ fetchingArticles: false });\n      return;\n    }\n\n    getSearchResults(searchValue)\n      .then((searchResults): void => {\n        const suggestedSections = this.generateSuggestedSections(\n          searchResults.suggestedSections\n        );\n\n        this.setState({\n          suggestedSections: [\n            ...this.state.suggestedSections,\n            ...suggestedSections\n          ],\n          articleResults: Object.keys(searchResults.results) || [],\n          fetchingArticles: false\n        });\n\n        importSectionArticlePreviews(searchResults.results);\n      })\n      .catch((err): void => {\n        console.error(err && err);\n        this.setState({ fetchingArticles: false });\n      });\n\n    this.setState({ fetchingArticles: true });\n  };\n\n  private handleClusterClick = (id: string): void => {\n    console.log(\"clicked\", id);\n    history.pushState(null, \"\", id);\n  };\n\n  private handleInput = (val: string): void => {\n    const { timeoutID } = this.state;\n    timeoutID && clearTimeout(timeoutID);\n\n    const newTimeoutID = window.setTimeout(this.searchWebArticles, 1000);\n    this.setState({\n      searchValue: val,\n      timeoutID: newTimeoutID,\n      articleResults: [],\n      suggestedSections: [],\n      fetchingArticles: val.length > 3\n    });\n  };\n\n  private handleCancel = (): void =>\n    this.setState({\n      searchOpen: false,\n      searchValue: \"\",\n      articleResults: [],\n      fetchingArticles: false\n    });\n\n  private handleClear = (): void =>\n    this.setState({\n      searchValue: \"\",\n      articleResults: [],\n      fetchingArticles: false\n    });\n\n  private handleFocus = (): void => this.setState({ searchOpen: true });\n\n  private header = (): JSX.Element => {\n    const { searchOpen, searchValue } = this.state;\n\n    return (\n      <div>\n        <NavBar\n          className=\"navbar\"\n          leftContent={<button onClick={this.handleClose}>Back</button>}\n        >\n          <SearchBar\n            cancelText=\"Cancel\"\n            className=\"sidebar__search\"\n            onCancel={this.handleCancel}\n            onChange={this.handleInput}\n            onClear={this.handleClear}\n            onFocus={this.handleFocus}\n            placeholder=\"Search for sections, articles and more\"\n            showCancelButton={false}\n            value={searchValue}\n          />\n        </NavBar>\n      </div>\n    );\n  };\n\n  public handleSelectArticle = (id: string): void => {\n    // const { setActiveArticle, setViewMode } = this.props;\n    // setActiveArticle(id);\n    // setViewMode(ViewModes.ARTICLE_SINGLE);\n    history.pushState(null, \"\", `article/${id}`);\n  };\n\n  private buildNavList(): JSX.Element {\n    const { sections, menuType } = this.props;\n    const {\n      selectedId,\n      searchOpen,\n      searchValue,\n      fetchingArticles,\n      suggestedSections,\n      articleResults\n    } = this.state;\n\n    const sectionSearchResults = sectionSearch(searchValue) || [];\n    const deDupedSearchResults = sectionSearchResults.reduce(\n      (acc: SectionInterface[], r): SectionInterface[] =>\n        acc.map((c): string => c.text).includes(r.text) ? acc : [...acc, r],\n      []\n    );\n\n    const deDupedSearchResultsIds = deDupedSearchResults.map(\n      (s): string => s.id\n    );\n\n    const duDupedSuggestedResults = suggestedSections.filter(\n      (r): boolean => deDupedSearchResultsIds.includes(r.id) === false\n    );\n\n    const searchResults = [...deDupedSearchResults, ...duDupedSuggestedResults];\n\n    return (\n      <List\n        className={`sidebar ${selectedId ? \"sidebar--selected\" : \"\"}`}\n        renderHeader={this.header}\n      >\n        {searchOpen === false && (\n          <div>\n            <Item className=\"item-top\" key=\"saved\">\n              Recently visited\n            </Item>\n            <SectionNavigation\n              menuType={menuType}\n              sections={sections}\n              selectedId={selectedId}\n              selectSection={this.handleClusterClick}\n            />\n          </div>\n        )}\n\n        {searchOpen && (\n          <SearchResult\n            articleIds={articleResults}\n            fetchingArticles={fetchingArticles}\n            searchResults={searchResults}\n            selectArticle={this.handleSelectArticle}\n            selectSection={this.handleClusterClick}\n          />\n        )}\n      </List>\n    );\n  }\n\n  public render(): JSX.Element {\n    const { isOpen, children, drawerPosition } = this.props;\n    const Sidebar = this.buildNavList();\n\n    return (\n      <Drawer\n        transitions={false}\n        className={`drawer ${isOpen ? \"drawer--open\" : \"\"}`}\n        contentStyle={{\n          overflow: \"hidden\"\n        }}\n        onOpenChange={this.handleClose}\n        open={isOpen}\n        position={drawerPosition}\n        sidebar={Sidebar}\n        sidebarStyle={{\n          right: 0,\n          left: 0\n        }}\n        style={{ minHeight: \"100%\" }}\n      >\n        {children}\n      </Drawer>\n    );\n  }\n}\n\nfunction getChildSections(id: string): SectionInterface[] {\n  return Object.values(SECTIONS).filter(\n    (section): boolean => section.parent === id\n  );\n}\n\nfunction getSections(sections: {\n  [id: string]: EditionSectionInterface;\n}): MiniSectionInterface[] {\n  return Object.values(sections)\n    .filter((section): boolean => {\n      return SECTIONS[section.id].level === 0;\n    })\n    .map(\n      (section): MiniSectionInterface => ({\n        id: section.id,\n        text: SECTIONS[section.id].text\n      })\n    );\n}\n\nconst memGetSections = memoizeOne(\n  getSections,\n  ([newSections], [oldSections]): boolean =>\n    Object.keys(newSections).join() === Object.keys(oldSections).join()\n);\n\ninterface MapStatePropsInterface {\n  sections: MiniSectionInterface[];\n  allSections: SectionInterface[];\n  drawerPosition: DrawerProps[\"position\"];\n  menuType: MenuChoicesTypes;\n}\n\nconst mapStateToProps = (state: StateInterface): MapStatePropsInterface => {\n  const { activeEdition } = state.config;\n  const { menuTypes } = state.variants;\n  const drawerPosition = state.variants[\"drawerPosition\"].selected;\n  const sections = memGetSections(state.editions[activeEdition].sections);\n\n  const allSections = sections.reduce(\n    (acc: SectionInterface[], s): SectionInterface[] => {\n      acc = [...acc, ...getChildSections(s.id), SECTIONS[s.id]];\n      return acc;\n    },\n    []\n  );\n\n  return {\n    sections,\n    allSections,\n    drawerPosition: drawerPosition,\n    menuType: menuTypes.selected\n  };\n};\n\ninterface MapDispatchProps {\n  setActiveSection: typeof setActiveSection;\n  setActiveArticle: typeof setActiveArticle;\n  setViewMode: typeof setViewMode;\n  importSectionArticlePreviews: typeof importSectionArticlePreviews;\n}\n\nexport default connect(\n  mapStateToProps,\n  {\n    setActiveSection,\n    setActiveArticle,\n    setViewMode,\n    importSectionArticlePreviews\n  }\n)(SideDrawer);\n","/* eslint @typescript-eslint/camelcase: \"off\" */\n\nimport { SECTIONS } from \"data/sections\";\n\nexport const editionState = {\n  LIVE_EDITION: {\n    edition_id: \"LIVE_EDITION\",\n    published: \"2019-05-28T14:05:28.704Z\",\n    last_updated: \"2019-05-28T14:05:28.704Z\",\n    downloaded: false,\n    downloading: false,\n    download_progress: 0,\n    sections: Object.values(SECTIONS).reduce(\n      (acc, s): {} => ({\n        ...acc,\n        [s.id]: {\n          loaded: false,\n          fetching: false,\n          id: s.id,\n          articles: [],\n          packages: []\n        }\n      }),\n      {}\n    ),\n    packages: {},\n    type: \"LIVE\"\n  },\n  \"2019-05-27\": {\n    edition_id: \"2019-05-27\",\n    published: \"2019-05-27T14:05:28.704Z\",\n    last_updated: \"2019-05-27T14:05:28.704Z\",\n    downloaded: false,\n    downloading: false,\n    download_progress: 0,\n    sections: {},\n    packages: {\n      front_page_0001: {\n        id: \"front_page_0001\",\n        title: \"package title\",\n        url: null,\n        articles: []\n      },\n      front_page_0002: {\n        id: \"front_page_0002\",\n        title: \"package title\",\n        url: null,\n        articles: []\n      }\n    },\n    type: \"DAILY\"\n  },\n  \"2019-05-26\": {\n    edition_id: \"2019-05-26\",\n    published: \"2019-05-26T14:05:28.704Z\",\n    last_updated: \"2019-05-26T14:05:28.704Z\",\n    downloaded: false,\n    downloading: false,\n    download_progress: 0,\n    sections: {},\n    packages: {\n      front_page_0001: {\n        id: \"front_page_0001\",\n        title: \"package title\",\n        url: null,\n        articles: []\n      },\n      front_page_0002: {\n        id: \"front_page_0002\",\n        title: \"package title\",\n        url: null,\n        articles: []\n      }\n    },\n    type: \"DAILY\"\n  },\n  \"2019-05-25\": {\n    edition_id: \"2019-05-25\",\n    published: \"2019-05-25T14:05:28.704Z\",\n    last_updated: \"2019-05-25T14:05:28.704Z\",\n    downloaded: false,\n    downloading: false,\n    download_progress: 0,\n    sections: {},\n    packages: {\n      front_page_0001: {\n        id: \"front_page_0001\",\n        title: \"package title\",\n        url: null,\n        articles: []\n      },\n      front_page_0002: {\n        id: \"front_page_0002\",\n        title: \"package title\",\n        url: null,\n        articles: []\n      }\n    },\n    type: \"DAILY\"\n  },\n  \"2019-05-24\": {\n    edition_id: \"2019-05-24\",\n    published: \"2019-05-24T14:05:28.704Z\",\n    last_updated: \"2019-05-24T14:05:28.704Z\",\n    downloaded: false,\n    downloading: false,\n    download_progress: 0,\n    sections: {},\n    packages: {\n      front_page_0001: {\n        id: \"front_page_0001\",\n        title: \"package title\",\n        url: null,\n        articles: []\n      },\n      front_page_0002: {\n        id: \"front_page_0002\",\n        title: \"package title\",\n        url: null,\n        articles: []\n      }\n    },\n    type: \"DAILY\"\n  },\n  \"2019-05-23\": {\n    edition_id: \"2019-05-23\",\n    published: \"2019-05-23T14:05:28.704Z\",\n    last_updated: \"2019-05-23T14:05:28.704Z\",\n    downloaded: false,\n    downloading: false,\n    download_progress: 0,\n    sections: {},\n    packages: {\n      front_page_0001: {\n        id: \"front_page_0001\",\n        title: \"package title\",\n        url: null,\n        articles: []\n      },\n      front_page_0002: {\n        id: \"front_page_0002\",\n        title: \"package title\",\n        url: null,\n        articles: []\n      }\n    },\n    articles: [\"xxx\", \"xxx\", \"xxx\"],\n    type: \"DAILY\"\n  }\n};\n\nexport const sectionsState = {\n  \"top-stories\": {\n    section_id: \"top-stories\",\n    display_name: \"Top Stories\",\n    colour: \"#F00\"\n  },\n  news: {\n    section_id: \"news\",\n    display_name: \"Front page\",\n    colour: \"#F00\"\n  },\n  politics: {\n    section_id: \"politics\",\n    display_name: \"Politics\",\n    colour: \"#045\"\n  },\n  sport: {\n    section_id: \"sport\",\n    display_name: \"Sport\",\n    colour: \"#0FF\"\n  },\n  PRINT_ONLY: {\n    section_id: \"PRINT_ONLY\",\n    display_name: \"Print only section\",\n    colour: \"#F0F\"\n  }\n};\n","import React, { ChangeEventHandler } from \"react\";\n\ninterface PropsInterface {\n  handleChange: ChangeEventHandler;\n  id: string;\n  options: (string | number | undefined)[];\n  selected: number | string | undefined;\n}\n\nexport function SelectElement(props: PropsInterface): JSX.Element {\n  const { handleChange, options, selected, id } = props;\n\n  return (\n    <select name={id} onChange={handleChange} value={selected}>\n      {options.map(\n        (v): JSX.Element => (\n          <option key={v} value={v}>\n            {v}\n          </option>\n        )\n      )}\n    </select>\n  );\n}\n","import React, { PureComponent, CSSProperties } from \"react\";\nimport \"./Skeleton.css\";\n\ninterface PropsInterface {\n  count?: number;\n  isAnimated?: boolean;\n  height?: string;\n  style?: CSSProperties;\n}\n\nexport class Skeleton extends PureComponent<PropsInterface> {\n  public render(): JSX.Element {\n    const { count, height, isAnimated = false, style = {} } = this.props;\n    const elementCount = count || 1;\n\n    const styleRules = {\n      ...style,\n      ...{ height: height ? height : \"auto\" }\n    };\n\n    const elements = [...Array(elementCount)].map(\n      (val: undefined, i: number): JSX.Element => {\n        return (\n          <div\n            className={`skeleton_element ${\n              isAnimated ? \"skeleton_element--animated\" : \"\"\n            }`}\n            key={`skeleton-${i}`}\n            style={styleRules}\n          />\n        );\n      }\n    );\n\n    return <div className=\"skeleton_wrapper\">{elements}</div>;\n  }\n}\n"],"sourceRoot":""}