{"version":3,"file":"js/client-bundle-72af6c89841e9a5546b2.js","mappings":"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","sources":["webpack://app/./app/javascript/components/ErrorBoundary.tsx","webpack://app/./app/javascript/styles/general.ts","webpack://app/./app/javascript/components/menus/MobileNav.tsx","webpack://app/./app/javascript/components/carousels/Base.tsx","webpack://app/./app/javascript/components/carousels/base_styles.ts","webpack://app/./app/javascript/components/carousels/TextOnly.tsx","webpack://app/./app/javascript/utils/typestyle.ts","webpack://app/./app/javascript/components/carousels/Plans.tsx","webpack://app/./app/javascript/components/menus/SideMenu.tsx","webpack://app/./app/javascript/components/menus/SiteMenu.tsx","webpack://app/./app/javascript/SideMenuRoutes.tsx","webpack://app/./app/javascript/components/popups/WyskPopup.tsx","webpack://app/./app/javascript/packs/client-bundle.js","webpack://app/./app/javascript/SideMenuRouter.tsx"],"sourcesContent":["import React from 'react';\nimport _isEqual from 'lodash/isEqual';\n\ntype TProps = {\n children?: React.ReactElement,\n fallback: boolean,\n fallbackComponent?: React.ReactElement,\n resetOnChanges?: Record\n};\n\ntype TState = {\n hasError: boolean\n};\n\ntype TErrorInfo = {\n componentStack: string,\n};\n\nclass ErrorBoundary extends React.Component {\n state = { hasError: false };\n static defaultProps = { fallback: true };\n\n static getDerivedStateFromError(_error: Error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(_error: Error, _info: TErrorInfo) {\n // You can also log the error to an error reporting service\n // logErrorToMyService(error, info);\n }\n\n componentDidUpdate(prevProps: TProps) {\n if (\n this.state.hasError &&\n (this.props.resetOnChanges || prevProps.resetOnChanges) &&\n !_isEqual(prevProps.resetOnChanges, this.props.resetOnChanges)\n ) {\n this.setState({ hasError: false });\n }\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n if (this.props.fallback) {\n return this.props.fallbackComponent ||

Something went wrong.

;\n } else {\n return null;\n }\n }\n\n return this.props.children || null;\n }\n}\n\nexport default ErrorBoundary;\n","// Text styles\nexport const regularGrayText = '#696969';\nexport const lightGrayText = '#8c8c8c';\nexport const regularYellowText = '#e1a913';\nexport const headerBlueText = '#2d4066';\nexport const linkBlueText = '#1c487e';\nexport const paragraphFontFamilies = '\"acumin-pro\", Arial, Helvetica, sans-serif';\n\n// Button styles\nexport const buttonBlueBackground = '#1c487e';\nexport const buttonBlueBackgroundHover = '#194979';\n\n// Border styles\nexport const borderGrayOutline = '#e1e1e1';\nexport const borderGrayOutlineLight = '#ededed';\n","import React, { useLayoutEffect, useEffect, useRef, useState } from 'react';\nimport { stylesheet } from 'typestyle';\nimport classnames from 'classnames';\nimport { RailsContext } from 'react-on-rails/node_package/lib/types';\nimport * as csx from 'csstips';\n\nimport ErrorBoundary from '@components/ErrorBoundary';\n\nimport { linkBlueText } from '@styles/general';\n\ntype TMenuSectionProps = {\n children: React.ReactNode,\n className?: string\n};\n\ntype TMenuItemsProps = {\n children: React.ReactNode,\n className?: string\n};\n\ntype TSpacerItemProps = {\n heightMultiplier: number\n};\n\ntype TMenuNavigatorProps = {\n text: string,\n onClick?: (Text: string) => void,\n onSetSubmenu?: (Text: string) => void,\n active?: boolean\n};\n\ntype TTopLevelMenuProps = {\n onSetSubmenu: (Text: string) => void,\n currentLocation: string\n};\n\ntype TMobileNavProps = {\n railsContext: RailsContext\n};\n\ntype MenuItemType = {\n currentLocation: string;\n href: string;\n indent: number;\n text: string;\n bold?: boolean;\n bullet?: boolean;\n short?: boolean;\n spacer?: number;\n}\n\ntype MenuSchema = Record;\n\nconst menuItems: MenuSchema = require('@libbe_configs/mobile_nav_menu.json');\nconst menuWidth = 250;\nconst indentationPx = 20;\n\n// This controls the font size for top level and sub menus\nconst MENU_FONT_SIZE = 14;\n\n// With a font size of 14px, 28 results in a gap of 18px and 22 results in a gap\n// of 12.\nconst STANDARD_LINE_HEIGHT = 28;\nconst SHORT_LINE_HEIGHT = 28;\n\n// The menu config can specify any number for the spacer, which gets multiplied\n// by this value and is the resulting number of pixels used for the spacer\n// height.\nconst SPACER_BASE_HEIGHT = 10;\n\nconst MENU_BOTTOM_MARGIN = '4em';\n\nconst css = stylesheet({\n container: {\n content: `''`,\n position: 'fixed',\n background: 'rgba(0, 0, 0, 0.0)',\n top: 0,\n bottom: 0,\n right: 0,\n left: 0,\n zIndex: 2,\n overflow: 'hidden',\n transition: 'background .3s ease-in-out',\n fontSize: MENU_FONT_SIZE,\n lineHeight: `${STANDARD_LINE_HEIGHT}px`,\n\n $nest: {\n '@media (min-width: 725px)': {\n display: 'none'\n },\n '&.open': {\n transition: 'background .5s ease-in-out',\n background: 'rgba(0, 0, 0, 0.5)'\n },\n '& li, & a': {\n fontSize: MENU_FONT_SIZE,\n lineHeight: `${STANDARD_LINE_HEIGHT}px`\n },\n '& a': {\n cursor: 'pointer'\n }\n }\n },\n menu: {\n background: 'white',\n textAlign: 'left',\n top: 0,\n bottom: 0,\n width: menuWidth,\n left: 0,\n transform: `translateX(-${menuWidth}px)`,\n position: 'absolute',\n overflowY: 'auto',\n overflowX: 'hidden',\n transition: 'transform .1s ease-in-out,-webkit-transform .1s ease-in-out',\n '-webkit-overflow-scrolling': 'touch',\n\n $nest: {\n '&.open': {\n transition:\n 'transform .5s ease-in-out,-webkit-transform .5s ease-in-out',\n transform: 'translateX(0)'\n },\n '& div': {\n transition:\n 'transform .1s ease-in-out,-webkit-transform .1s ease-in-out'\n },\n '&:not(.show-sub) div:nth-of-type(2)': {\n transform: `translateX(${menuWidth}px)`\n },\n '&.show-sub > span': {\n transform: `translateX(-${menuWidth}px)`\n },\n '&.show-sub > div:first-of-type': {\n transform: `translateX(-${menuWidth}px)`\n },\n '&.show-sub > div:nth-of-type(2)': {\n transform: `translateX(0)`\n }\n }\n },\n topLevelMenu: {\n $nest: {\n '& li': {\n cursor: 'pointer'\n }\n }\n },\n section: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n display: 'block',\n padding: 20,\n\n $nest: {\n '& *:last-child': {\n marginBottom: MENU_BOTTOM_MARGIN\n }\n }\n },\n menuItem: {\n listStyleType: 'none'\n },\n activeItem: {\n $nest: {\n '&, & a': {\n textDecoration: 'underline'\n }\n }\n },\n spacerItem: {\n fontSize: '0 !important',\n lineHeight: '0 !important'\n },\n link: {\n color: 'inherit !important'\n },\n navigationLink: {\n color: linkBlueText,\n fontWeight: 'bold',\n lineHeight: `${STANDARD_LINE_HEIGHT}px`,\n position: 'relative',\n\n $nest: {\n '&::after': {\n content: `'>'`,\n display: 'block',\n position: 'absolute',\n right: 0,\n top: 0\n }\n }\n },\n showTopLevel: {\n paddingRight: 2,\n cursor: 'pointer',\n position: 'absolute',\n top: 5,\n left: `calc((2 * ${menuWidth}px) - 45px)`,\n transition: 'transform .1s ease-in-out,-webkit-transform .1s ease-in-out',\n fontWeight: 'bold',\n zIndex: 1,\n fontSize: 14,\n lineHeight: 2.14,\n borderRadius: 5,\n height: 25,\n width: 25,\n textAlign: 'center'\n },\n indent1: {\n marginLeft: indentationPx\n },\n indent2: {\n marginLeft: indentationPx * 2\n },\n indent3: {\n marginLeft: indentationPx * 3\n },\n short: {\n $nest: {\n '&, & a': {\n lineHeight: `${SHORT_LINE_HEIGHT}px !important`\n }\n }\n },\n bold: {\n $nest: {\n '&, & a': {\n fontWeight: 'bold',\n color: linkBlueText\n }\n }\n },\n bullet: {\n listStyleType: 'disc !important'\n }\n});\n\nfunction MenuSection ({ children, className }: TMenuSectionProps): React.ReactElement {\n return
{children}
;\n}\n\nfunction MenuItems ({ children }: TMenuItemsProps) {\n return
    {children}
;\n}\n\nfunction SpacerItem ({ heightMultiplier }: TSpacerItemProps): React.ReactElement {\n return (\n \n );\n}\n\nfunction MenuItem (props: MenuItemType): React.ReactElement {\n if (props.spacer) {\n return ;\n } else {\n return (\n \n {props.href ? (\n \n {props.text}\n \n ) : (\n props.text\n )}\n \n );\n }\n}\n\nfunction MenuNavigator ({\n text,\n onClick,\n onSetSubmenu,\n active\n}: TMenuNavigatorProps) {\n return (\n {\n onClick ? onClick(text) : onSetSubmenu && onSetSubmenu(text);\n }}>\n {text}\n \n );\n}\n\nfunction TopLevel ({ onSetSubmenu }: TTopLevelMenuProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nfunction Submenu ({ items = [], currentLocation }) {\n return (\n \n {items.map((item, index): React.ReactElement<{}> => {\n return (\n \n );\n })}\n \n );\n}\n\nfunction Menu ({ show, onToggleMenu, currentLocation }) {\n const menuRef = useRef(null);\n const menuItemsRef = useRef([]);\n const [renderMenu, setRenderMenu] = useState(false);\n const [openMenu, setOpenMenu] = useState(false);\n const [submenu, setSubmenu] = useState(null);\n const [showSubmenu, setShowSubmenu] = useState(false);\n\n useLayoutEffect(\n () => {\n if (!menuRef.current) return;\n if (typeof document === 'undefined') return;\n if (!renderMenu) return;\n\n const documentElement = document.documentElement;\n const body = document.body;\n\n if (!documentElement) return;\n if (!body) return;\n\n const scrollPosition = documentElement.scrollTop;\n\n body.style.top = `-${scrollPosition}px`;\n body.classList.add('lock-scroll');\n\n return () => {\n body.classList.remove('lock-scroll');\n body.style.top = '';\n\n documentElement.scrollTop = scrollPosition;\n };\n },\n [renderMenu]\n );\n\n useEffect(\n () => {\n if (show && !renderMenu) {\n setRenderMenu(true);\n } else if (show && renderMenu) {\n // Let the menu be rendered without the \"open\" class before we open it, so\n // that transitions happen properly\n setTimeout(() => {\n setOpenMenu(true);\n }, 50);\n } else if (!show && renderMenu && openMenu) {\n setOpenMenu(false);\n } else if (!show && renderMenu && !openMenu) {\n // Let transition finish before hiding the menu\n setTimeout(() => {\n setRenderMenu(false);\n }, 300);\n }\n },\n [show, renderMenu, openMenu]\n );\n\n useEffect(\n () => {\n if (submenu) {\n menuItemsRef.current = menuItems[submenu];\n\n // open it, so that transitions happen properly\n setTimeout(() => {\n setShowSubmenu(true);\n }, 50);\n }\n },\n [submenu]\n );\n\n useLayoutEffect(() => {\n const keys = Object.keys(menuItems);\n\n const activeMenu = keys.find((key) => {\n return (\n menuItems[key].findIndex((item) => {\n return item.href === currentLocation;\n }) > -1\n );\n });\n\n if (activeMenu) {\n setSubmenu(activeMenu);\n }\n }, []);\n\n const closeSubmenu = () => {\n setShowSubmenu(false);\n\n // open it, so that transitions happen properly\n setTimeout(() => {\n setSubmenu(null);\n }, 120);\n };\n\n if (!renderMenu) return null;\n\n const getTop = () => {\n if (typeof document === 'undefined') return;\n\n const documentElement = document.documentElement;\n const body = document.body;\n\n if (!documentElement) return;\n if (!body) return;\n\n let bodyTopWithUnit = body.style.top;\n // Turn negative top (scrolled up) into a positive number\n const bodyTop = bodyTopWithUnit ? Number(bodyTopWithUnit.replace('px', '').replace('-', '')) : 0;\n\n const header = (document.querySelector('.page-header') as HTMLElement ) || {\n offsetHeight: 0\n };\n const scrollTop = documentElement.scrollTop || body.scrollTop || 0;\n return header.offsetHeight - bodyTop - scrollTop;\n };\n\n return (\n \n {\n e.stopPropagation();\n }}>\n \n <\n \n \n {submenu ? (\n \n ) : null}\n \n \n );\n}\n\nfunction MobileNav (props: TMobileNavProps) {\n const [show, setShow] = useState(false);\n\n const handleShowToggle = () => {\n setShow(!show);\n };\n\n return <>\n
\n Menu\n
,\n \n \n \n ;\n}\n\nfunction SSRInterrupt (props: {railsContext: RailsContext}) {\n const [showMenu, setShowMenu] = useState(false);\n\n // Wait until after client-side hydration to show\n useEffect(() => {\n setShowMenu(true);\n }, []);\n\n if (!showMenu) {\n // You can show some kind of placeholder UI here\n return null;\n }\n\n return ;\n}\n\nexport default (props: Record, railsContext: RailsContext) => (\n \n);\n","import { Component } from 'react';\nimport { ItemType as TextOnlyItemType } from './TextOnly';\n\ntype ItemType = TextOnlyItemType;\n\ninterface PropsType {\n items: ItemType[];\n}\n\ntype StateType = {\n selectedItemIndex: number\n};\n\nclass BaseCarousel extends Component {\n state = {\n selectedItemIndex: 0\n };\n\n activeItem = (): ItemType => {\n return this.props.items[this.state.selectedItemIndex];\n };\n\n handleNextClick = () => {\n if (this.nextButtonIsDisabled()) { return; }\n this.setState({ selectedItemIndex: this.state.selectedItemIndex + 1 });\n };\n\n handlePrevClick = () => {\n if (this.prevButtonIsDisabled()) { return; }\n this.setState({ selectedItemIndex: this.state.selectedItemIndex - 1 });\n };\n\n handleDotClick = (index: number): void => this.setState({ selectedItemIndex: index });\n\n prevButtonIsDisabled = () => this.state.selectedItemIndex === 0;\n nextButtonIsDisabled = () => (\n this.state.selectedItemIndex === this.props.items.length - 1\n );\n}\n\nexport default BaseCarousel;\n","import * as csx from 'csstips';\n\nconst styles = {\n carousel: {\n ...csx.vertical,\n border: '1px solid #f0f0f0',\n borderRadius: 3,\n marginBottom: 20,\n marginTop: 20\n },\n content: {\n ...csx.horizontal\n },\n nav: {\n ...csx.vertical,\n background: '#2e5189',\n borderBottomLeftRadius: 3,\n borderBottomRightRadius: 3,\n borderTop: '1px solid #f0f0f0',\n marginTop: 'auto',\n minHeight: 60,\n paddingLeft: 18,\n paddingRight: 18,\n '&>*': {\n flex: 1\n }\n },\n navBottom: {\n display: 'flex',\n marginTop: -6,\n justifyContent: 'center'\n },\n navTop: {\n ...csx.horizontal,\n ...csx.betweenJustified\n },\n navButton: {\n background: 'transparent !important',\n color: 'white !important',\n height: 8,\n width: 10,\n margin: 0,\n padding: '15px 18px 15px 12px',\n '&.disabled': {\n opacity: 0.5\n },\n '&:first-child': {\n marginLeft: -12,\n '&::before': {\n content: \"'\\\\f053'\",\n display: 'block',\n fontFamily: 'FontAwesome',\n fontSize: 8,\n lineHeight: 1,\n height: 10,\n width: 10,\n '-webkit-font-smoothing': 'antialiased'\n }\n },\n '&:last-child': {\n marginRight: -8,\n '&::before': {\n content: \"'\\\\f054'\",\n display: 'block',\n fontFamily: 'FontAwesome',\n fontSize: 8,\n lineHeight: 1,\n height: 10,\n width: 10,\n '-webkit-font-smoothing': 'antialiased'\n }\n }\n },\n navDot: {\n background: '#6f95cc',\n marginLeft: 6,\n marginRight: 6,\n padding: 0,\n '&.active': {\n background: '#dfa812',\n '&:hover': {\n background: '#dfa812'\n }\n },\n '&:hover': {\n background: '#6f95cc'\n }\n },\n navTitle: {\n color: '#ffffff !important',\n marginBottom: '0 !important',\n marginTop: 7,\n fontWeight: 600\n },\n preloadedImage: {\n height: '0px !important',\n width: '0px !important',\n display: 'none !important'\n }\n};\n\nexport default styles;\n","import * as React from 'react';\nimport classify from '@src/utils/typestyle';\nimport { classes } from 'typestyle';\nimport BaseCarousel from './Base';\nimport baseStyles from './base_styles';\nimport deepmerge from 'deepmerge';\n\nimport { regularGrayText } from '@src/styles/general';\n\nconst styles = classify(\n deepmerge(baseStyles, {\n contentText: {\n margin: 20,\n width: '100%'\n }\n })\n);\n\ninterface TextItemType {\n headerText: string;\n text: string;\n}\n\ninterface ComponentItemType {\n headerText: string;\n component: React.ReactElement;\n}\n\nexport type ItemType = TextItemType | ComponentItemType;\n\ntype PropsType = {\n items: ItemType[];\n style?: CSSRuleList;\n contentStyles?: Record;\n contentClassName?: string;\n textAlign?: 'left' | 'right' | 'center';\n textColor?: string;\n};\n\nfunction isTextItem (item: ItemType): item is TextItemType {\n return (item as TextItemType).text !== undefined;\n}\n\nfunction isComponentItem (item: ItemType): item is ComponentItemType {\n return (item as ComponentItemType).component !== undefined;\n}\n\nclass TextOnlyCarousel extends BaseCarousel {\n activeMainContent = () => {\n const activeItem = this.activeItem();\n const contentStyles = this.props.contentStyles || {};\n let ActiveContent: React.ReactElement;\n\n if (isComponentItem(activeItem)) {\n ActiveContent = activeItem['component'];\n }\n\n return (\n \n \n {ActiveContent || null}\n \n \n );\n };\n\n navItems = () => {\n const activeItem = this.activeItem();\n\n return (\n
\n
\n \n

{activeItem.headerText}

\n \n
\n
\n {this.props.items.map((_item, index) => {\n return (\n this.handleDotClick(index)}\n key={index}\n />\n );\n })}\n
\n
\n );\n };\n\n render () {\n const propStyles = this.props.style || {};\n\n return (\n
\n {this.activeMainContent()}\n {this.navItems()}\n
\n );\n }\n}\n\nexport default TextOnlyCarousel;\n","import { style, media } from 'typestyle';\n\nexport default (styles: Object): Record => {\n let mapped = {};\n Object\n .keys(styles)\n .map(\n function (key: string): void {\n mapped[key] = style.apply(\n this,\n [\n styles[key],\n ...(styles[key].media || [])\n .map(m => media(m.query, m.rules)\n )\n ]\n );\n }\n );\n\n return mapped;\n};\n","import React from 'react';\nimport Carousel from './TextOnly';\n\nfunction Slide1 () {\n return (\n <>\n

\n Libbe offers four plans, each organized into 15 minute daily readings. Each day, you are guided through the\n larger story, while being exposed to relevant surrounding texts (such as Psalms, Proverbs, and the Prophetic\n letters).\n

\n\n

\n Each plan exposes the reader to all areas of scripture, curated in daily doses that promote increased clarity\n and understanding. Click the arrow below to learn more about each plan.\n

\n \n );\n}\n\nfunction Slide2 () {\n return (\n <>\n

\n Virtually the entire Bible in 260 individual installments. The only significant exclusions in Plan A are the gospel of Mark (due to overlap with Matthew and Luke), as well as large parts of Chronicles (which overlap with Kings).\n

\n\n

\n Plan A is best suited to those who wish to read the entire Bible (likely not for the first time), but desire the better understanding provided by the careful arrangement of texts into coherent and relevant daily doses.\n

\n \n );\n}\n\nfunction Slide3 () {\n return (\n <>\n

\n The bulk of the Bible, divided into 200 individual installments. Includes all major events, most poetic and prophetic writings, and virtually all of the New Testament. Excludes some minor prophets, and areas of content repetition.\n

\n\n

\n Plan B is a good choice for those who want a comprehensive reading, but get bogged down by finer details of law, areas of repetition and ceremonial regulations, and other non-narrative content.\n

\n \n );\n}\n\nfunction Slide4 () {\n return (\n <>\n

\n Covers nearly half the Bible in 100 daily readings. Includes all major events, content from every New Testament book, as well as selective exposure to minor prophets and wisdom literature. Excludes most secondary content; primarily in areas of Law, Wisdom, and Old Testament Prophetic books.\n

\n\n

\n Plan C is an excellent choice for first or second time readers, interested in adding a bit more background, detail, and texture to the Bible’s core narrative.\n

\n \n );\n}\n\nfunction Slide5 () {\n return (\n <>\n

\n Exposure to 50 books of the Bible, through 52 daily readings. Covers all major themes, stories, and revelations. Provides a sufficient overview of Old Testament events, God’s interaction with people, prophecies regarding a new creation and savior, Jesus’ words and actions, as well as early church development.\n

\n\n

\n Plan D is an excellent choice for non Christians, new Christians, first time Bible readers, or those who would like a concise overview of the Bible.\n

\n \n );\n}\n\nconst items = [\n {\n headerText: '“The Four Reading Plans Explained”',\n component: \n }, {\n headerText: 'Plan A: Read 95% of the Bible',\n component: \n }, {\n headerText: 'Plan B: Read 70% of the Bible',\n component: \n }, {\n headerText: 'Plan C: Read 40% of the Bible',\n component: \n }, {\n headerText: 'Plan D: Read 20% of the Bible',\n component: \n }\n];\n\nconst Plans = (props: Record) => {\n return (\n \n );\n};\n\nexport default Plans;\n","import * as React from 'react';\nimport withRouter from 'react-router-dom/withRouter';\nimport classnames from 'classnames';\nimport includes from 'lodash/includes';\n\nconst findParentNodes = (items, matches) => {\n return matches[0] > 0\n ? findParentNodes(items, [items.find(i => i.id === matches[0]).parentId, ...matches])\n : matches;\n};\n\nconst isActiveItem = (item, currentPath) => {\n return (\n item.path === currentPath ||\n includes(item.alsoActiveForPaths || [], currentPath)\n );\n};\n\nconst findActiveNodes = (items, currentPath) => {\n const activeNode = items.find((item) => isActiveItem(item, currentPath));\n return [...findParentNodes(items, [activeNode.parentId]), activeNode.id];\n};\n\nconst findAllNodesWithChildren = (items) => (\n items.reduce((a, e) => a.concat(e.parentId), [])\n);\n\nconst findHeaderItem = (items) => items.find((item) => item.parentId === -1);\n\nconst headerLink = (items, currentPath) => {\n const headerItem = findHeaderItem(items);\n\n return headerItem\n ? {headerItem.text}\n : null;\n};\n\nconst listItemIsParentNode = (item, allParentNodeIds) => (\n allParentNodeIds.indexOf(item.id) >= 0\n);\n\nconst listItemContainsExpandedlist = (item, activeNodes, allParentNodeIds) => {\n return (\n activeNodes.indexOf(item.id) >= 0 &&\n listItemIsParentNode(item, allParentNodeIds)\n );\n};\n\nconst listItemContainsCollapsedlist = (item, activeNodes, allParentNodeIds) => {\n return (\n activeNodes.indexOf(item.id) === -1 &&\n listItemIsParentNode(item, allParentNodeIds)\n );\n};\n\nconst menuLinks = (parentNodeId, items, activeNodes, allParentNodeIds) => {\n const currentItems = items.filter((item) => item.parentId === parentNodeId);\n\n return (\n
    \n {currentItems.map((item, index) => (\n
  • \n {item.text}\n {\n listItemContainsExpandedlist(item, activeNodes, allParentNodeIds)\n ? menuLinks(item.id, items, activeNodes, allParentNodeIds)\n : null\n }\n
  • \n ))}\n
\n );\n};\n\ntype PropsItem = {\n}\n\ntype Props = {\n items: PropsItem[];\n location: {\n pathname: string;\n };\n}\n\nconst SideMenu = ({ items, location }: Props) => {\n const currentPath = location.pathname;\n const activeNodes = findActiveNodes(items, currentPath);\n const allParentNodeIds = findAllNodesWithChildren(items);\n\n return (\n
\n {headerLink(items, currentPath)}\n {menuLinks(0, items, activeNodes, allParentNodeIds)}\n
\n );\n};\n\nexport default withRouter(SideMenu);\n","import * as React from 'react';\nimport SideMenu from './SideMenu';\n\nconst menuItems = require(\"@libbe_configs/side_menus/site_menu.json\");\nconst SiteMenu = () => ;\n\nexport default SiteMenu;\n","import * as React from 'react';\nimport { Route, Switch } from 'react-router-dom';\n\nimport SiteMenu from '@src/components/menus/SiteMenu';\n\nexport default (\n \n \n \n);\n","import React, { useEffect, useRef, useState, useLayoutEffect, useCallback } from 'react';\n\nimport { style, stylesheet } from 'typestyle';\nimport classnames from 'classnames';\nimport { useClickAway } from \"@uidotdev/usehooks\";\n\nconst POPUP_Y_OFFSET = 10;\nconst POPUP_X_OFFSET = -20;\nconst POPUP_WIDTH = 300;\nconst POPUP_MAX_HEIGHT = 400;\nconst POPUP_MIN_HEIGHT = 100;\nconst POPUP_MIN_BOTTOM_MARGIN = 30;\nconst POPUP_MIN_LEFT_MARGIN = 30;\nconst POPUP_MIN_RENDER_TO_RIGHT_OF_TRIGGER = 10;\nconst HEADER_HEIGHT = 25;\nconst HEADER_Y_MARGIN = 5;\n\n// This is copied from the \"computed\" tab in chrome dev tools, put here as a constant so that we don't have to calculate\n// it.\nconst POPUP_CARET_WIDTH = 15.84;\n\n// when we calculate the max height of the popup content, the result has to be (popup_height - header_height -\n// (header_y_margin * 2) - 3px). I don't know where the 3px comes from.\nconst HEADER_UNKNOWN_HEIGHT_DIFERENCE = 3;\nconst MAX_CONTENT_HEIGHT_HEADER_DIFFERENCE = HEADER_HEIGHT + (HEADER_Y_MARGIN * 2) + HEADER_UNKNOWN_HEIGHT_DIFERENCE;\n\n// When rendered, the caret has slightly more space on the right than the left. This is used to help center the caret\n// properly.\nconst CARET_EXTRA_RIGHT_MARGIN = 3;\n\nconst defaultPopupPosition: PopupPosition = {\n top: 0,\n left: 0,\n maxHeight: POPUP_MAX_HEIGHT,\n width: POPUP_WIDTH,\n caretLeft: Math.abs(POPUP_X_OFFSET)\n};\n\nconst css = stylesheet({\n 'wysk-popup': {\n backgroundColor: 'white',\n border: '1px solid #e6e5e5',\n borderLeft: '1px solid #e1a913',\n borderRadius: 5,\n boxShadow: '0 6px 35px rgba(135, 135, 135, 0.24)',\n cursor: 'default',\n fontSize: '14px',\n left: '0',\n lineHeight: '22px',\n maxHeight: POPUP_MAX_HEIGHT,\n maxWidth: POPUP_WIDTH,\n minHeight: POPUP_MIN_HEIGHT,\n minWidth: POPUP_WIDTH,\n position: 'fixed',\n textAlign: 'left',\n top: '0',\n whiteSpace: 'normal',\n width: '100%',\n zIndex: 1000,\n\n $nest: {\n '&::after': {\n '-ms-transform': 'scaleX(2) rotate(0deg)',\n '-webkit-transform': 'scaleX(2) rotate(0deg)',\n color: 'transparent',\n content: \"'▲'\",\n display: 'block',\n fontSize: '8px',\n lineHeight: '22px',\n position: 'absolute',\n textShadow: '0 0 0 white, 1px 1.5px 0 white, -1px 1.5px 0 white, 1.5px 2.5px 0 white, -1.5px 2.5px 0 white, -1px 0 0 #e6e5e5, 0 -2px 0 #e6e5e5, 1px 0 0 #E6E5E6',\n top: '-14px',\n transform: 'scaleX(2) rotate(0deg)'\n }\n }\n },\n 'wysk-popup-header': {\n color: '#21528d !important',\n cursor: 'inherit !important',\n fontSize: '14px !important',\n lineHeight: `${HEADER_HEIGHT}px !important`,\n margin: `${HEADER_Y_MARGIN}px 14px !important`,\n marginLeft: '14px !important',\n textTransform: 'none'\n },\n 'wysk-popup-header-hr': {\n borderBottom: '1px solid #EFEFEF',\n width: '100%',\n margin: 0,\n border: 'none'\n },\n 'wysk-popup-close-button': {\n background: 'transparent !important',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 'max-content',\n padding: 0,\n position: 'absolute',\n right: 7,\n top: 6,\n },\n 'wysk-popup-close-image': {\n padding: 8,\n },\n\n 'wysk-popup-content': {\n color: '#7f7f7f',\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n overflow: 'auto',\n padding: '7px 14px 14px 14px',\n '$nest': {\n 'p': {\n fontSize: 15\n },\n 'p:last-of-type': {\n marginBottom: 0\n }\n }\n },\n});\n\ninterface WyskPopupContainerProps {\n header: string;\n content: string;\n selector: string;\n}\n\ninterface WyskPopupProps {\n header: string;\n content: string;\n onClose: (event: React.MouseEvent) => void;\n triggerRef: React.MutableRefObject;\n}\n\ninterface PopupPosition {\n caretLeft: number;\n left: number;\n maxHeight: number;\n top: number;\n width: number;\n}\n\nfunction calculatePopupPosition(triggerElement: HTMLElement | void): PopupPosition {\n if (!triggerElement) return defaultPopupPosition;\n\n const contentFrame = document.querySelector('.content-frame');\n if (!contentFrame) return defaultPopupPosition;\n\n const contentFrameRect = contentFrame.getBoundingClientRect();\n const { left: contentFrameLeft, width: contentFrameWidth } = contentFrameRect;\n\n const triggerRect = triggerElement.getBoundingClientRect();\n const { top: triggerTop, left: triggerLeft, width: triggerWidth, height: triggerHeight } = triggerRect;\n\n const position = {\n caretLeft: 0,\n left: triggerLeft + (triggerWidth / 2) + POPUP_X_OFFSET,\n maxHeight: POPUP_MAX_HEIGHT,\n top: triggerTop + triggerHeight + POPUP_Y_OFFSET,\n width: POPUP_WIDTH\n };\n\n // if the popup would be off the screen, make it shorter so that it is POPUP_MIN_BOTTOM_MARGIN from the bottom of the\n // screen\n if (position.top + position.maxHeight > window.innerHeight) {\n position.maxHeight = window.innerHeight - position.top - POPUP_MIN_BOTTOM_MARGIN;\n\n if (position.maxHeight < POPUP_MIN_HEIGHT) {\n position.maxHeight = POPUP_MIN_HEIGHT;\n }\n }\n\n // if the popup would be off the right side of the content frame, move it left so that there is POPUP_MIN_LEFT_MARGIN\n // of space between the popup and the right side of the content frame\n if (position.left + position.width > contentFrameLeft + contentFrameWidth) {\n position.left = contentFrameLeft + contentFrameWidth - position.width - POPUP_MIN_LEFT_MARGIN;\n }\n\n // if the right side of the popup is less then POPUP_MIN_RENDER_TO_RIGHT_OF_TRIGGER past the right side of the\n // trigger, move it right so that it is POPUP_MIN_RENDER_TO_RIGHT_OF_TRIGGER past the right side of the trigger\n if (position.left + position.width < triggerLeft + triggerWidth + POPUP_MIN_RENDER_TO_RIGHT_OF_TRIGGER) {\n position.left = triggerLeft + triggerWidth + POPUP_MIN_RENDER_TO_RIGHT_OF_TRIGGER - position.width;\n }\n\n position.caretLeft = triggerLeft + (triggerWidth / 2) - (POPUP_CARET_WIDTH / 2) + CARET_EXTRA_RIGHT_MARGIN - position.left;\n\n return position;\n}\n\nexport default function WyskPopupContainer({ header, content, selector }: WyskPopupContainerProps) {\n const [show, setShow] = useState(false);\n const triggerRef = useRef(null);\n\n const closePopup = (event: React.MouseEvent) => {\n if (event.target === triggerRef.current) return;\n\n setShow(false);\n }\n\n useEffect(() => {\n triggerRef.current = document.getElementById(selector);\n\n const showPopup = () => setShow(true);\n const triggerRefElement = triggerRef.current;\n\n if (triggerRefElement) {\n triggerRefElement.addEventListener('mouseup', showPopup);\n }\n\n return () => {\n if (!triggerRefElement) return;\n\n triggerRefElement.removeEventListener('mouseup', showPopup);\n }\n }, [selector]);\n\n if (!show) return null;\n\n return (\n \n );\n}\n\nfunction WyskPopup({ header, content, onClose, triggerRef }: WyskPopupProps) {\n const popupRef = useClickAway(onClose);\n const [popupPosition, setPopupPosition] = useState(() => calculatePopupPosition(triggerRef.current));\n\n const updatePopupPosition = useCallback(() => {\n if (triggerRef.current) {\n setPopupPosition(calculatePopupPosition(triggerRef.current));\n }\n }, [triggerRef]);\n\n useLayoutEffect(() => {\n updatePopupPosition();\n\n window.addEventListener('resize', updatePopupPosition);\n window.addEventListener('scroll', updatePopupPosition);\n\n return () => {\n window.removeEventListener('resize', updatePopupPosition);\n window.removeEventListener('scroll', updatePopupPosition);\n }\n }, [updatePopupPosition]);\n\n return (\n \n

{header}

\n \n
\n {\n content.split(/\\r?\\n\\r?\\n/).map(\n (paragraph, index) => (

{paragraph}

)\n )\n }\n \n \n )\n}\n","import ReactOnRails from 'react-on-rails';\n\nimport MobileNav from '@components/menus/MobileNav';\nimport PlansCarousel from '@components/carousels/Plans';\nimport SideMenuRouter from '@src/SideMenuRouter';\nimport WyskPopup from '@components/popups/WyskPopup';\n\nReactOnRails.register({\n MobileNav,\n PlansCarousel,\n SideMenuRouter,\n WyskPopup,\n});\n","import * as React from 'react';\nimport { BrowserRouter } from 'react-router-dom';\n\nimport routes from '@src/SideMenuRoutes';\n\nexport default () => {\n return (\n \n {routes}\n \n );\n};\n"],"names":["ErrorBoundary","React","hasError","_error","componentDidCatch","_info","componentDidUpdate","prevProps","this","state","props","resetOnChanges","_isEqual","setState","render","fallback","fallbackComponent","children","linkBlueText","menuItems","require","menuWidth","css","stylesheet","container","content","position","background","top","bottom","right","left","zIndex","overflow","transition","fontSize","lineHeight","$nest","display","cursor","menu","textAlign","width","transform","overflowY","overflowX","topLevelMenu","section","padding","marginBottom","menuItem","listStyleType","activeItem","textDecoration","spacerItem","link","color","navigationLink","fontWeight","showTopLevel","paddingRight","borderRadius","height","indent1","marginLeft","indent2","indentationPx","indent3","short","bold","bullet","MenuSection","className","classnames","MenuItems","SpacerItem","heightMultiplier","style","MenuItem","spacer","indent","currentLocation","href","text","MenuNavigator","onClick","onSetSubmenu","active","TopLevel","Submenu","items","map","item","index","key","Menu","show","onToggleMenu","menuRef","useRef","menuItemsRef","renderMenu","setRenderMenu","useState","openMenu","setOpenMenu","submenu","setSubmenu","showSubmenu","setShowSubmenu","useLayoutEffect","current","document","documentElement","body","scrollPosition","scrollTop","classList","add","remove","useEffect","setTimeout","activeMenu","Object","keys","find","findIndex","ref","open","bodyTopWithUnit","bodyTop","Number","replace","header","querySelector","offsetHeight","getTop","e","stopPropagation","MobileNav","setShow","handleShowToggle","id","railsContext","location","SSRInterrupt","showMenu","setShowMenu","BaseCarousel","Component","selectedItemIndex","nextButtonIsDisabled","prevButtonIsDisabled","length","carousel","csx","border","marginTop","nav","borderBottomLeftRadius","borderBottomRightRadius","borderTop","minHeight","paddingLeft","flex","navBottom","justifyContent","navTop","navButton","margin","opacity","fontFamily","marginRight","navDot","navTitle","preloadedImage","styles","mapped","media","m","query","rules","classify","deepmerge","baseStyles","contentText","isTextItem","undefined","contentStyles","ActiveContent","component","parseInt","classes","contentClassName","textColor","dangerouslySetInnerHTML","__html","handlePrevClick","headerText","handleNextClick","_item","handleDotClick","propStyles","activeMainContent","navItems","Slide1","Slide2","Slide3","Slide4","Slide5","findParentNodes","matches","i","parentId","isActiveItem","currentPath","path","includes","alsoActiveForPaths","listItemIsParentNode","allParentNodeIds","indexOf","listItemContainsExpandedlist","activeNodes","listItemContainsCollapsedlist","menuLinks","parentNodeId","currentItems","filter","withRouter","pathname","activeNode","findActiveNodes","reduce","a","concat","findAllNodesWithChildren","headerItem","findHeaderItem","headerLink","Switch","Route","SiteMenu","POPUP_WIDTH","defaultPopupPosition","maxHeight","caretLeft","Math","abs","backgroundColor","borderLeft","boxShadow","maxWidth","minWidth","whiteSpace","textShadow","textTransform","borderBottom","alignItems","flexDirection","calculatePopupPosition","triggerElement","contentFrame","contentFrameRect","getBoundingClientRect","contentFrameLeft","contentFrameWidth","triggerRect","triggerTop","triggerLeft","triggerWidth","triggerHeight","window","innerHeight","POPUP_CARET_WIDTH","WyskPopup","onClose","triggerRef","popupRef","useClickAway","popupPosition","setPopupPosition","updatePopupPosition","useCallback","addEventListener","removeEventListener","tabIndex","src","alt","title","HEADER_HEIGHT","split","paragraph","ReactOnRails","PlansCarousel","SideMenuRouter","BrowserRouter","routes","selector","getElementById","showPopup","triggerRefElement","event","target"],"sourceRoot":""}