{"version":3,"file":"js/494-83b9a31691c065f72560.js","mappings":"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,sBACA,qBACA,qBACA,mBACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,4BACA,eACA,uBACA,wBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,aACA,sBACA,wBACA,mBACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,cACA,uBACA,uBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,oBACA,4BACA,qBACA,aACA,YACA,qBACA,qBACA,qBACA,oBACA,oBACA,oBACA,oBACA,oBACA,aACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,mBACA,cACA,sBACA,sBACA,sBACA,cACA,aACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,uBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,cACA,kBAGa,SAASC,IACtB,OACEpoB,EAAAA,cAAA,OAAKC,UAAU,wBACZkoB,EAAOhoB,KAAI,SAACkoB,GACX,OAAOroB,EAAAA,cAACsoB,EAAY,CAACD,MAAOA,EAAOxkB,IAAKwkB,GAC1C,IAGN,CAEA,SAASC,EAAYnb,GAAa,IAAVkb,EAAKlb,EAALkb,MACtB,OACEroB,EAAAA,cAAA,OAAKC,UAAU,oFACbD,EAAAA,cAAA,OAAKC,UAAS,GAAA0C,OAAK0lB,EAAK,sBACxBroB,EAAAA,cAAA,OAAKC,UAAU,uBAAuBooB,GAG5C,+xECpHA,IAAMf,EAAsB,CAC1BvG,MAAO,SAGHyG,EAAiB,CACrBjU,QAAS,OACTkU,IAAK,MACL1G,MAAO,OACPwH,WAAY,UAGRC,EAAiB,CACrBjB,OAAQ,QACRxG,MAAO,SAGM,SAAS0H,IACtB,IAUE/mB,EAAAC,GAVwBC,EAAAA,EAAAA,UAAS,CACjC4D,YAAa,cACbkjB,IAAK,GACLC,IAAK,IACLrT,UAAU,EACVhQ,KAAM,cACNxB,MAAO,MACPmgB,WAAY,WACZrX,UAAW,QACXD,YAAY,IACZ,GAVK5N,EAAK2C,EAA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","sources":["webpack://lc3/./app/javascript/components/ai_tools/ChatArea.jsx","webpack://lc3/./app/javascript/components/ai_tools/ChatBubble.jsx","webpack://lc3/./app/javascript/components/shared/AlphabeticalFilterSelect.jsx","webpack://lc3/./app/javascript/components/shared/AutocompleteInput.jsx","webpack://lc3/./app/javascript/components/shared/Avatar.jsx","webpack://lc3/./app/javascript/components/shared/BookmarksPopover.jsx","webpack://lc3/./app/javascript/components/shared/CiteThisPage.jsx","webpack://lc3/./app/javascript/components/shared/CiteThisQuoteBtn.jsx","webpack://lc3/./app/javascript/components/shared/CiteThisQuoteModal.jsx","webpack://lc3/./app/javascript/components/shared/ControlledCheckbox.jsx","webpack://lc3/./app/javascript/components/shared/Countdown.jsx","webpack://lc3/./app/javascript/components/shared/Expandable.jsx","webpack://lc3/./app/javascript/helpers/camelize.js","webpack://lc3/./app/javascript/components/shared/GuideList.jsx","webpack://lc3/./app/javascript/components/shared/GuideList/GuideListAlphabeticalFilterControl.jsx","webpack://lc3/./app/javascript/components/shared/GuideList/GuideListSortControl.jsx","webpack://lc3/./app/javascript/components/shared/GuideList/GuideListViewControl.jsx","webpack://lc3/./app/javascript/components/shared/LoadingPill.jsx","webpack://lc3/./app/javascript/components/shared/LocalTag.jsx","webpack://lc3/./app/javascript/components/shared/MultiSelect.jsx","webpack://lc3/./app/javascript/components/shared/RequestContentModal.jsx","webpack://lc3/./app/javascript/components/shared/ResponsiveSelect.jsx","webpack://lc3/./app/javascript/components/shared/SSRDemo.jsx","webpack://lc3/./app/javascript/components/shared/TextToggle.jsx","webpack://lc3/./app/javascript/components/shared/WriterBio.jsx","webpack://lc3/./app/javascript/components/shared/demo/ChatAreaDemo.jsx","webpack://lc3/./app/javascript/components/shared/demo/ColorsDemo.jsx","webpack://lc3/./app/javascript/components/shared/demo/InputTextCounterDemo.jsx","webpack://lc3/./app/javascript/components/shared/demo/PaymentFormDemo.jsx","webpack://lc3/./app/javascript/components/shared/demo/TabsDemo.jsx","webpack://lc3/./app/javascript/components/shared/demo/ToastDemo.jsx","webpack://lc3/./app/javascript/components/shared/demo/ToggleDemo.jsx","webpack://lc3/./app/javascript/components/shared/dialogs/APlus.jsx","webpack://lc3/./app/javascript/components/shared/dialogs/MiniAPlus.jsx","webpack://lc3/./app/javascript/components/shared/hooks/useClickOutsideElement.jsx","webpack://lc3/./app/javascript/components/shared/loading/Ellipses.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { debounce } from \"lodash\";\nimport ChatBubble, {\n  ChatBubblePropTypes,\n} from \"components/ai_tools/ChatBubble\";\n\nconst ChatArea = (props) => {\n  const { messages } = props;\n  const scrollContainerRef = useRef();\n  const scrollHeightRef = useRef();\n\n  const pinScrollToBottom = useCallback(\n    debounce(() => {\n      const container = scrollContainerRef.current;\n\n      if (messages.length > 0 && container) {\n        const newScrollHeight = container.scrollHeight;\n\n        // Fixes an issue in Safari where scrollTo was causing some violent\n        // fidgeting in the scrollbar as it tried to scrollTo the same height\n        // as it was previously\n        if (scrollHeightRef.current !== newScrollHeight) {\n          scrollHeightRef.current = container.scrollHeight;\n\n          container.scrollTo({\n            top: container.scrollHeight,\n            behavior: \"smooth\",\n          });\n        }\n      }\n    }, 100)\n  );\n\n  useEffect(() => {\n    pinScrollToBottom();\n  }, [messages]);\n\n  return (\n    <div className=\"chat-area--container\">\n      <div ref={scrollContainerRef} className=\"chat-area--content\">\n        {messages.map((message) => (\n          <ChatBubble {...message} />\n        ))}\n      </div>\n    </div>\n  );\n};\n\nChatArea.propTypes = {\n  messages: PropTypes.arrayOf(PropTypes.shape(ChatBubblePropTypes)),\n};\n\nChatArea.defaultProps = {\n  messages: [],\n};\n\nexport default ChatArea;\n","import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport classnames from \"classnames\";\nimport PropTypes from \"prop-types\";\nimport Ellipses from \"components/shared/loading/Ellipses\";\nimport spring, { toString } from \"css-spring\";\nimport styled, { keyframes } from \"styled-components\";\n\n// Stream states\nexport const DEFAULT_STATE = \"default\";\nexport const LOADING_STATE = \"loading\";\nexport const STREAMING_STATE = \"streaming\";\n\n// Variants\nconst SERVER_VARIANT = \"server\";\nconst USER_VARIANT = \"user\";\n\nexport const VARIANTS = [SERVER_VARIANT, USER_VARIANT];\nexport const STATES = [DEFAULT_STATE, LOADING_STATE, STREAMING_STATE];\nexport const ChatBubblePropTypes = {\n  children: PropTypes.node,\n  cursorAsSpan: PropTypes.bool,\n  slideUp: PropTypes.bool,\n  streamState: PropTypes.oneOf(STATES),\n  variant: PropTypes.oneOf(VARIANTS),\n};\n\nexport const userBubbleConfig = (attrs) => {\n  return {\n    children: null,\n    streamState: DEFAULT_STATE,\n    variant: USER_VARIANT,\n    slideUp: true,\n    ...attrs,\n  };\n};\n\nexport const serverBubbleConfig = (attrs) => {\n  return {\n    children: null,\n    streamState: DEFAULT_STATE,\n    variant: SERVER_VARIANT,\n    slideUp: true,\n    ...attrs,\n  };\n};\n\nconst ChatBubble = (props) => {\n  const { children, cursorAsSpan, slideUp, streamState, variant } = props;\n  const [travelDistance, setTravelDistance] = useState(0);\n  const bubbleRef = useRef();\n\n  // Calculate the slide-in distance based on position of the chat bubble\n  // in relation to the chat area bottom.\n  useLayoutEffect(() => {\n    const { parentElement } = bubbleRef.current;\n    const currentElement = bubbleRef.current;\n    const parentHeight = parentElement.scrollHeight;\n    const elementBottom =\n      currentElement.offsetTop + currentElement.offsetHeight;\n\n    const distanceToTravel =\n      elementBottom < parentHeight\n        ? parentHeight - elementBottom\n        : parentHeight;\n    setTravelDistance(distanceToTravel);\n  }, [bubbleRef]);\n\n  // Setup slide-in animation\n  const animationKeyframes = slideUp\n    ? toString(\n        spring(\n          { bottom: `-${travelDistance}px` },\n          { bottom: \"0\" },\n          { stiffness: 80, damping: 20 }\n        )\n      )\n    : \"none\";\n\n  const AnimatedDiv = styled.div`\n    animation: ${keyframes`${animationKeyframes}`} 0.6s linear;\n    position: relative;\n  `;\n\n  return (\n    <AnimatedDiv\n      ref={bubbleRef}\n      className={classnames(\n        \"chat-bubble--container\",\n        `chat-bubble--variant_${variant}`\n      )}\n    >\n      <div\n        className={`chat-bubble--content chat-bubble--content_${streamState}`}\n      >\n        {streamState === LOADING_STATE && <Ellipses />}\n        {streamState !== LOADING_STATE && (\n          <>\n            {children}\n            {streamState === STREAMING_STATE && cursorAsSpan && (\n              <span className=\"typewriter--cursor\" />\n            )}\n          </>\n        )}\n      </div>\n    </AnimatedDiv>\n  );\n};\n\nChatBubble.propTypes = ChatBubblePropTypes;\n\nChatBubble.defaultProps = {\n  children: null,\n  cursorAsSpan: false,\n  slideUp: false,\n  streamState: DEFAULT_STATE,\n  variant: SERVER_VARIANT,\n};\n\nexport default React.memo(ChatBubble);\n","import React from \"react\";\nimport Select from \"components/shared/Select\";\n\nclass AlphabeticalFilterSelect extends React.Component {\n  updateFilter(filter) {\n    const $alphabeticalFilters = $(\".alphabetical-filters\");\n    const selector = $alphabeticalFilters.data(\"selector\");\n    const $filterEntries = $alphabeticalFilters.find(\".filter-entry\");\n\n    $(selector).addClass(\"notransition\");\n\n    $filterEntries.removeAttr(\"data-selected\");\n    $filterEntries\n      .filter(`[data-filter='${filter}']`)\n      .attr(\"data-selected\", \"true\");\n\n    if (filter === \"all\") {\n      $(selector).removeClass(\"hidden\").css(\"display\", \"inline-block\");\n    } else {\n      $(selector)\n        .addClass(\"hidden\")\n        .filter(`[data-sortable^='${filter}']`)\n        .removeClass(\"hidden\")\n        .css(\"display\", \"inline-block\");\n    }\n    $(`${selector}:visible`).each(function (index) {\n      $(this).attr(\"data-column-no\", index % 4);\n    });\n\n    // flush CSS changes here to prevent toggling of 'notransition' class from happening in the same loop\n    // see https://stackoverflow.com/questions/11131875/what-is-the-cleanest-way-to-disable-css-transition-effects-temporarily\n    $(selector).each(function (_i, element) {\n      // eslint-disable-next-line no-unused-expressions\n      element.offsetHeight;\n    });\n    $(selector).removeClass(\"notransition\");\n  }\n\n  onChange(option) {\n    this.updateFilter(option.value.toLowerCase());\n  }\n\n  render() {\n    return (\n      <Select\n        {...this.props}\n        name=\"alphabetical-filters__select\"\n        id=\"alphabetical-filters__select\"\n        placeholder=\"Filter by first letter\"\n        onChange={(value) => this.onChange(value)}\n      />\n    );\n  }\n}\n\nexport default AlphabeticalFilterSelect;\n","// An input component that implements async autocomplete via an API endpoint\n// using react-autosuggest (https://github.com/moroshko/react-autosuggest)\n// This is a fully controlled component and requires its parent to manage its\n// state, see propTypes for what's needed\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Autosuggest from \"react-autosuggest\";\n\nimport LabelContainer from \"components/shared/LabelContainer\";\n\nfunction getSuggestionValue(suggestion) {\n  return suggestion.text;\n}\n\nfunction renderSuggestion(suggestion) {\n  return <span>{suggestion.text}</span>;\n}\n\nconst propTypes = {\n  // See https://github.com/moroshko/react-autosuggest#inputpropsonchange-required for api\n  handleChange: PropTypes.func.isRequired,\n  labelText: PropTypes.string,\n  name: PropTypes.string.isRequired,\n  // See https://github.com/moroshko/react-autosuggest#on-suggestion-selected-prop for api\n  onSuggestionSelect: PropTypes.func.isRequired,\n  suggestionUrl: PropTypes.string.isRequired,\n  value: PropTypes.string,\n};\n\nconst defaultProps = {\n  labelText: \"\",\n  value: \"\",\n};\n\nconst AutocompleteInput = (props) => {\n  const [suggestions, setSuggestions] = useState([]);\n\n  const loadSuggestions = async (val) => {\n    const results = await $.get(`${props.suggestionUrl}${val}`);\n    setSuggestions(results.data);\n  };\n\n  function onSuggestionsFetchRequested({ value }) {\n    loadSuggestions(value);\n  }\n\n  function onSuggestionsClearRequested() {\n    setSuggestions([]);\n  }\n\n  function onSuggestionSelected(e, { suggestion }) {\n    props.onSuggestionSelect(suggestion);\n  }\n\n  // We don't use our Input component here because react-autosuggest requires\n  // some trickery with ref passing if we use a component and using an <input />\n  // is much easier\n  function renderInput(inputProps) {\n    return (\n      <div className=\"input-container\">\n        <LabelContainer labelText={props.labelText} />\n        <input {...inputProps} className=\"input-md\" name={props.name} />\n      </div>\n    );\n  }\n\n  return (\n    <Autosuggest\n      suggestions={suggestions}\n      onSuggestionsFetchRequested={onSuggestionsFetchRequested}\n      onSuggestionsClearRequested={onSuggestionsClearRequested}\n      getSuggestionValue={getSuggestionValue}\n      onSuggestionSelected={onSuggestionSelected}\n      renderSuggestion={renderSuggestion}\n      renderInputComponent={renderInput}\n      inputProps={{ value: props.value, onChange: props.handleChange }}\n    />\n  );\n};\n\nAutocompleteInput.propTypes = propTypes;\nAutocompleteInput.defaultProps = defaultProps;\n\nexport default AutocompleteInput;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst propTypes = {\n  letter: PropTypes.string.isRequired,\n};\n\nconst Avatar = ({ letter }) => {\n  return (\n    <div className=\"avatar\" tabIndex={0} role=\"menu\">\n      <button className=\"avatar--content\" type=\"button\">\n        <span>{letter}</span>\n      </button>\n    </div>\n  );\n};\n\nAvatar.propTypes = propTypes;\n\nexport default Avatar;\n","import React, { createRef, useCallback, useState } from \"react\";\nimport Popover from \"./Popover\";\n\nexport default function BookmarksPopover() {\n  const [isVisible, setIsVisible] = useState(true);\n  const popoverRef = createRef();\n\n  const dismiss = useCallback(() => {\n    setIsVisible(false);\n  }, [setIsVisible]);\n\n  return (\n    <Popover\n      ref={popoverRef}\n      arrowX=\"right\"\n      containerClass=\"container dynamic\"\n      isVisible={isVisible}\n    >\n      <div className=\"content\">\n        <div className=\"image\" />\n        <div className=\"text\">\n          <div>\n            <strong>Save Guides</strong>\n            <span className=\"subcopy\">New</span>\n          </div>\n          <div>Save any guide for easy access later!</div>\n        </div>\n      </div>\n      <button\n        className=\"btn btn-default btn-block btn-lg\"\n        onClick={dismiss}\n        type=\"button\"\n      >\n        Got It\n      </button>\n    </Popover>\n  );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Select from \"components/shared/Select\";\nimport helpers from \"helpers/base\";\n\nconst months = [\n  \"January\",\n  \"February\",\n  \"March\",\n  \"April\",\n  \"May\",\n  \"June\",\n  \"July\",\n  \"August\",\n  \"September\",\n  \"October\",\n  \"November\",\n  \"December\",\n];\nconst shortMonths = [\n  \"Jan\",\n  \"Feb\",\n  \"Mar\",\n  \"Apr\",\n  \"May\",\n  \"Jun\",\n  \"Jul\",\n  \"Aug\",\n  \"Sep\",\n  \"Oct\",\n  \"Nov\",\n  \"Dec\",\n];\n\nclass CiteThisPage extends React.Component {\n  static propTypes = {\n    copyStatus: PropTypes.string,\n  };\n\n  static defaultProps = {\n    copyStatus: \"Copy to Clipboard\",\n  };\n\n  constructor(props) {\n    super(props);\n    // eslint-disable-next-line prefer-destructuring\n    this.initialType = Object.keys(props.howToCite)[0];\n    this.state = {\n      selectedType: this.initialType,\n      selectedValue: this.getHowToCiteWithCurrentDate(this.initialType),\n    };\n  }\n\n  onChange(option) {\n    this.setState({\n      selectedType: option.value,\n      selectedValue: this.getHowToCiteWithCurrentDate(option.value),\n    });\n  }\n\n  // updates accessed date in case it's cached or doesn't match user's time zone\n  getHowToCiteWithCurrentDate(type) {\n    const value = this.props.howToCite[type];\n\n    const date = new Date();\n    const day = date.getDate();\n    const month = date.getMonth();\n    const year = date.getFullYear();\n\n    let regex = null;\n    let replacementStr = null;\n\n    if (type === \"mla\") {\n      regex = /Web\\. \\d{1,2} \\w+ \\d{4}/;\n      replacementStr = `Web. ${day} ${shortMonths[month]} ${year}`;\n    } else if (type === \"chicago\") {\n      regex = /Retrieved \\w+ \\d{1,2}, \\d{4}/;\n      replacementStr = `Retrieved ${months[month]} ${day}, ${year}`;\n    }\n\n    if (regex && replacementStr) {\n      value.citable = value.citable.replace(regex, replacementStr);\n      value.strippedCitable = value.strippedCitable.replace(\n        regex,\n        replacementStr\n      );\n    }\n\n    return value;\n  }\n\n  copyCitation() {\n    let { copyStatus } = this.props;\n    try {\n      const $textarea = $(this._textarea);\n      $textarea.show();\n      $textarea[0].focus();\n      $textarea[0].select();\n      document.execCommand(\"copy\");\n      $textarea.blur();\n      $textarea.hide();\n      copyStatus = \"Copied!\";\n    } catch (e) {\n      copyStatus = \"Error!\";\n    } finally {\n      $(this._btn).focus(); // return focus to copy button\n      const $copyText = $(this._copyText)\n        .text(copyStatus)\n        .delay(1000)\n        .fadeOut(() => {\n          $copyText.text(this.props.copyStatus).show();\n        });\n    }\n  }\n\n  render() {\n    const { howToCite } = this.props;\n    const options = helpers.object.map(howToCite, (k, v) => {\n      return { value: k, label: v.title };\n    });\n    return (\n      <div>\n        <div className=\"modal-dialog\" role=\"document\">\n          <div className=\"modal-content\">\n            <div className=\"modal-header\">\n              <div className=\"modal-title\">Cite This Page</div>\n            </div>\n            <div className=\"modal-body\">\n              <div className=\"cite-this-page__header\">\n                Choose citation style:\n              </div>\n              <div className=\"form-group\">\n                <Select\n                  id=\"cite-this-page__select\"\n                  name=\"cite-this-page__select\"\n                  value={this.initialType}\n                  options={options}\n                  onChange={(value) => this.onChange(value)}\n                />\n              </div>\n              <div className=\"form-group\">\n                <div\n                  className={`cite-this-page__citation ${this.state.selectedType}`}\n                >\n                  <div\n                    className=\"well\"\n                    dangerouslySetInnerHTML={{\n                      __html: this.state.selectedValue.citable,\n                    }}\n                  />\n                  <textarea\n                    ref={(textarea) => {\n                      this._textarea = textarea;\n                    }}\n                    value={this.state.selectedValue.strippedCitable}\n                    readOnly\n                  />\n                </div>\n              </div>\n              <div className=\"text-center\">\n                <button\n                  id=\"cite-this-page__button--copy\"\n                  className=\"btn btn-primary btn-lg\"\n                  ref={(_btn) => this._btn}\n                  onClick={() => this.copyCitation()}\n                  type=\"button\"\n                >\n                  <span\n                    className=\"cite-this-page__copy--text\"\n                    ref={(copyText) => {\n                      this._copyText = copyText;\n                    }}\n                  >\n                    {this.props.copyStatus}\n                  </span>\n                </button>\n              </div>\n            </div>\n            <div className=\"modal-footer\">\n              <button\n                className=\"btn btn-default btn-md\"\n                data-dismiss=\"modal\"\n                type=\"button\"\n              >\n                Close\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default CiteThisPage;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport CiteThisQuoteModal from \"./CiteThisQuoteModal\";\n\nexport default class CiteThisQuoteBtn extends React.Component {\n  static propTypes = {\n    url: PropTypes.string.isRequired,\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      modalVisible: false,\n    };\n  }\n\n  renderCiteThisQuoteModal() {\n    if (!this.state.modalVisible) {\n      return null;\n    }\n\n    return (\n      <CiteThisQuoteModal\n        onHidden={() => this.setState({ modalVisible: false })}\n        url={this.props.url}\n      />\n    );\n  }\n\n  render() {\n    return (\n      <>\n        <button\n          className=\"btn btn-sm btn-primary cite-this-quote\"\n          onClick={() => this.setState({ modalVisible: true })}\n          type=\"button\"\n        >\n          Cite<span className=\"hidden-xs\"> this Quote</span>\n        </button>\n        {this.renderCiteThisQuoteModal()}\n      </>\n    );\n  }\n}\n","import React from \"react\";\nimport Modal from \"./Modal\";\nimport Select from \"./Select\";\n\nclass CitationGroup extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      copyStatus: null,\n    };\n  }\n\n  copyText() {\n    clearTimeout(this.copyStatusTimeout);\n\n    // TODO! dry up / consolidate with CiteThisPage\n    try {\n      const $textarea = $(this.textarea);\n      $textarea.show();\n      $textarea[0].focus();\n      $textarea[0].select();\n      document.execCommand(\"copy\");\n      $textarea.blur();\n      $textarea.hide();\n      this.setState({ copyStatus: \"Copied!\" });\n    } catch (e) {\n      this.setState({ copyStatus: \"Error!\" });\n    } finally {\n      this.copyStatusTimeout = setTimeout(\n        () => this.setState({ copyStatus: null }),\n        1000\n      );\n    }\n  }\n\n  render() {\n    const { heading, html, text } = this.props;\n    const { copyStatus } = this.state;\n\n    return (\n      <div className=\"group\">\n        <div className=\"heading\">{heading}</div>\n        <div className=\"well\" dangerouslySetInnerHTML={{ __html: html }} />\n        <div className=\"text-center\">\n          <button\n            className=\"btn btn-primary btn-lg copy\"\n            onClick={() => this.copyText()}\n            type=\"button\"\n          >\n            {copyStatus || \"Copy to Clipboard\"}\n          </button>\n        </div>\n        <textarea\n          ref={(el) => {\n            this.textarea = el;\n          }}\n          value={text}\n          readOnly\n          style={{ display: \"none\" }}\n        />\n      </div>\n    );\n  }\n}\n\nexport default class CiteThisQuoteModal extends React.Component {\n  static defaultProps = {\n    showOnMount: true,\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      loaded: false,\n    };\n  }\n\n  componentDidMount() {\n    if (this.props.url) {\n      $.ajax({\n        url: this.props.url,\n      })\n        .done((data) => {\n          this.setState({\n            formatIndex: 0,\n            formats: data.formats,\n            loaded: true,\n          });\n        })\n        .fail(() => {\n          alert(\n            \"Error loading citation data! Please refresh the page and try again.\"\n          );\n        });\n    } else {\n      this.setState({\n        formatIndex: 0,\n        formats: this.props.formats,\n        loaded: true,\n      });\n    }\n  }\n\n  renderCitationGroup(heading, html, text) {\n    return (\n      <CitationGroup heading={heading} html={html} key={heading} text={text} />\n    );\n  }\n\n  renderFormat(index) {\n    return (\n      <div className=\"citation\">\n        {this.state.formats[index].citations.map((c) =>\n          this.renderCitationGroup(c.heading, c.html, c.text)\n        )}\n      </div>\n    );\n  }\n\n  renderContent() {\n    if (!this.state.loaded) {\n      return null;\n    }\n\n    const { formatIndex, formats } = this.state;\n\n    return (\n      <div>\n        <div style={{ marginBottom: 4 }}>Choose citation style:</div>\n        <div className=\"form-group\">\n          <Select\n            id=\"cite-this-quote__select\"\n            name=\"format\"\n            onChange={({ _label, value }) =>\n              this.setState({ formatIndex: value })\n            }\n            options={formats.map((f, i) => ({ label: f.name, value: i }))}\n            value={formatIndex}\n          />\n        </div>\n        {this.renderFormat(formatIndex)}\n      </div>\n    );\n  }\n\n  render() {\n    // eslint-disable-next-line react/no-unstable-nested-components\n    const Footer = () => (\n      <button\n        className=\"btn btn-default btn-md\"\n        data-dismiss=\"modal\"\n        type=\"button\"\n      >\n        Close\n      </button>\n    );\n    return (\n      <Modal\n        title=\"Cite This Quote\"\n        id={this.props.modalId}\n        onHidden={this.props.onHidden}\n        footer={<Footer />}\n        showOnMount={this.props.showOnMount}\n      >\n        {this.renderContent()}\n      </Modal>\n    );\n  }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport helpers from \"helpers/base\";\n\nclass ControlledCheckbox extends React.Component {\n  static propTypes = {\n    checked: PropTypes.bool.isRequired,\n    disabled: PropTypes.bool,\n    label: PropTypes.string,\n    name: PropTypes.string.isRequired,\n    noLabel: PropTypes.bool,\n    onChange: PropTypes.func,\n    value: PropTypes.string,\n  };\n\n  static defaultProps = {\n    disabled: false,\n    label: null,\n    noLabel: false,\n    value: \"1\",\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.inputId = helpers.generateComponentUuid(\"checkbox\");\n\n    this.handleChange = this.handleChange.bind(this);\n\n    this.state = {\n      checked: props.checked,\n    };\n  }\n\n  renderLabel() {\n    const { children, label, noLabel } = this.props;\n\n    if (noLabel) {\n      return null;\n    }\n\n    return (\n      <label className=\"lc-checkbox__label\" htmlFor={this.inputId}>\n        {label || children}\n      </label>\n    );\n  }\n\n  handleChange(e) {\n    this.setState(\n      (prevState) => ({ checked: !prevState.checked }),\n      () => {\n        this.props.onChange && this.props.onChange(e);\n      }\n    );\n  }\n\n  render() {\n    return (\n      <div className=\"lc-checkbox\">\n        <input\n          className=\"lc-checkbox__input\"\n          checked={this.props.checked}\n          disabled={this.props.disabled}\n          id={this.inputId}\n          name={this.props.name}\n          onChange={this.handleChange}\n          type=\"checkbox\"\n          value={this.props.value}\n        />\n        {this.renderLabel()}\n      </div>\n    );\n  }\n}\n\nexport default ControlledCheckbox;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass Countdown extends React.Component {\n  static propTypes = {\n    endsAt: PropTypes.string.isRequired,\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = { endsAt: new Date(props.endsAt), remainder: {} };\n  }\n\n  componentDidMount() {\n    this.update();\n    setInterval(() => {\n      this.update();\n    }, 1000);\n  }\n\n  formatUnit(duration) {\n    if (duration / 10 < 1) {\n      return `0${duration}`;\n    }\n    return duration.toString();\n  }\n\n  update() {\n    const diff = this.state.endsAt.getTime() - new Date().getTime();\n    if (diff < 0) {\n      this.setState({\n        remainder: {\n          days: \"00\",\n          hours: \"00\",\n          minutes: \"00\",\n          seconds: \"00\",\n        },\n      });\n    } else {\n      const s = Math.floor(diff / 1000);\n      const m = Math.floor(s / 60);\n      const h = Math.floor(m / 60);\n      const d = Math.floor(h / 24);\n      this.setState({\n        remainder: {\n          days: this.formatUnit(d),\n          hours: this.formatUnit(h % 24),\n          minutes: this.formatUnit(m % 60),\n          seconds: this.formatUnit(s % 60),\n        },\n      });\n    }\n  }\n\n  render() {\n    const { days, hours, minutes, seconds } = this.state.remainder;\n    return (\n      <div className=\"countdown\">\n        <div className=\"countdown__cols\">\n          <div className=\"countdown__col countdown__col--days\">\n            <span className=\"countdown__col-text\">{days}</span>\n          </div>\n          <div className=\"countdown__delimiter\">\n            <span className=\"countdown__delimiter-text\">:</span>\n          </div>\n          <div className=\"countdown__col countdown__col--hours\">\n            <span className=\"countdown__col-text\">{hours}</span>\n          </div>\n          <div className=\"countdown__delimiter\">\n            <span className=\"countdown__delimiter-text\">:</span>\n          </div>\n          <div className=\"countdown__col countdown__col--minutes\">\n            <span className=\"countdown__col-text\">{minutes}</span>\n          </div>\n          <div className=\"countdown__delimiter\">\n            <span className=\"countdown__delimiter-text\">:</span>\n          </div>\n          <div className=\"countdown__col countdown__col--seconds\">\n            <span className=\"countdown__col-text\">{seconds}</span>\n          </div>\n        </div>\n        <div className=\"countdown__units\">\n          <div className=\"countdown__unit countdown__unit--days\">Days</div>\n          <div className=\"countdown__unit countdown__unit--hours\">Hrs</div>\n          <div className=\"countdown__unit countdown__unit--minutes\">Mins</div>\n          <div className=\"countdown__unit countdown__unit--seconds\">Secs</div>\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default Countdown;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass Expandable extends React.Component {\n  static propTypes = {\n    defaultIsExpanded: PropTypes.bool,\n    expandableClassName: PropTypes.string,\n  };\n\n  static defaultProps = {\n    defaultIsExpanded: false,\n    expandableClassName: \"\",\n  };\n\n  constructor(props) {\n    super(props);\n    this._element = React.createRef();\n    this.state = { isExpanded: props.defaultIsExpanded };\n    this.toggleExpand = this.toggleExpand.bind(this);\n  }\n\n  toggleExpand() {\n    // eslint-disable-next-line react/no-access-state-in-setstate\n    this.setState({ isExpanded: !this.state.isExpanded });\n  }\n\n  render() {\n    /* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n    return (\n      <div\n        className={this.props.expandableClassName}\n        ref={this._element}\n        onClick={this.toggleExpand}\n        data-is-expanded={this.state.isExpanded}\n      >\n        {React.cloneElement(this.props.children, {\n          isExpanded: this.state.isExpanded,\n        })}\n      </div>\n    );\n    /* eslint-enable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n  }\n}\n\nexport default Expandable;\n","import { transform, isArray, camelCase, isObject } from \"lodash\";\n\nexport default function camelize(collection) {\n  return transform(collection, (acc, value, key, target) => {\n    const camelKey = isArray(target) ? key : camelCase(key);\n\n    acc[camelKey] = isObject(value) ? camelize(value) : value;\n  });\n}\n","import React, { useEffect, useRef, useMemo, useState } from \"react\";\nimport GuideListViewControl from \"components/shared/GuideList/GuideListViewControl\";\nimport GuideListSortControl from \"components/shared/GuideList/GuideListSortControl\";\nimport GuideListAlphabeticalFilterControl from \"components/shared/GuideList/GuideListAlphabeticalFilterControl\";\nimport helpers from \"helpers/base\";\nimport camelize from \"helpers/camelize\";\nimport { toastNotify } from \"helpers/toastNotify\";\nimport LitCard from \"components/shared/LitCard\";\nimport Icon from \"components/shared/Icon\";\nimport { subscribe, unsubscribe } from \"helpers/pubsub\";\nimport litCards from \"views/shared/litCards\";\n\nconst viewOptions = {\n  grid: \"grid\",\n  list: \"list\",\n};\n\nconst sortOptions = {\n  title: \"title\",\n  author: \"author\",\n  recent: \"recent\",\n};\n\nconst sortOrders = {\n  asc: \"asc\",\n  desc: \"desc\",\n};\n\nconst filterOptions = {\n  all: \"All\",\n  number: \"#\",\n};\n\nconst queryParamKeys = {\n  viewOption: \"view\",\n  sortOption: \"sort\",\n  filterOption: \"filter\",\n  sortOrder: \"order\",\n};\n\nconst defaultProps = {\n  defaultViewOption: viewOptions.list,\n  defaultSortOption: sortOptions.title,\n  defaultSortOrder: sortOrders.asc,\n  defaultFilterOption: filterOptions.all,\n};\n\nconst typesOfWork = {\n  proseFiction: \"Prose Fiction\",\n  proseNonfiction: \"Prose Nonfiction\",\n};\n\nconst friendlyTypesOfWork = {\n  fiction: \"Fiction\",\n  nonfiction: \"Nonfiction\",\n};\n\nconst selectors = {\n  BACK_TO_TOP: \".guide-list__back-to-top\",\n  BACK_TO_TOP_HIDDEN: \".guide-list__back-to-top--hidden\",\n  CONTROLS: \".guide-list__controls\",\n  GLOBAL_FOOTER: \"section.footer\",\n  GROUP: \".guide-list__group\",\n  GROUPS_GRID: \".guide-list__groups--grid\",\n  GROUPS_LIST: \".guide-list__groups--list\",\n  GUIDE: \".guide-list__guide\",\n  LIT_CARD: \"#all .guide-list__guide .lit-card\",\n  MAIN: \".guide-list\",\n  MAIN_CONTROLS_FIXED: \".guide-list--with-controls-fixed\",\n};\n\nconst controlsOffset = 62; // number of px from the top of .guide-list to top of .guide-list__controls\n\nconst getFriendlyTypeOfWork = (typeOfWork) => {\n  if (typeOfWork === typesOfWork.proseFiction) {\n    return friendlyTypesOfWork.fiction;\n  }\n  if (typeOfWork === typesOfWork.proseNonfiction) {\n    return friendlyTypesOfWork.nonfiction;\n  }\n  return typeOfWork;\n};\n\nconst getOptionsFromQueryParams = () => {\n  const options = {};\n  helpers.array.each([\"viewOption\", \"sortOption\", \"filterOption\"], (option) => {\n    const param = helpers.getQueryParam(queryParamKeys[option]);\n    if (param) {\n      options[option] = param;\n    }\n    if (option === \"filterOption\" && param === \"number\") {\n      options[option] = \"number\";\n    }\n  });\n  return options;\n};\n\nexport default function GuideList({ fetchPath, title, userSignedIn }) {\n  const queryParams = getOptionsFromQueryParams();\n\n  const [viewOption, setViewOption] = useState(() => {\n    return queryParams.viewOption || viewOptions.list;\n  });\n  const [sortOption, setSortOption] = useState(() => {\n    return queryParams.sortOption || sortOptions.title;\n  });\n  const [sortOrder, setSortOrder] = useState(() => {\n    return queryParams.sortOrder || sortOrders.asc;\n  });\n  const [filterOption, setFilterOption] = useState(() => {\n    return queryParams.filterOption || filterOptions.all;\n  });\n  const [page, setPage] = useState(0);\n  const [guides, setGuides] = useState([]);\n  const [totalCount, setTotalCount] = useState(0);\n  const displayCount = guides.length;\n  const queryParamOptions = { sortOption, viewOption, filterOption };\n  const mainRef = useRef(null);\n\n  const getFallbackAuthorName = (guide) => {\n    return guide.authorLastName ? guide.authorLastName : guide.authorName;\n  };\n\n  const sortAuthorFn = (a, b) => {\n    const aSortValue = getFallbackAuthorName(a);\n    const bSortValue = getFallbackAuthorName(b);\n    if (aSortValue < bSortValue) {\n      return -1;\n    }\n    if (aSortValue > bSortValue) {\n      return 1;\n    }\n    return 0;\n  };\n\n  const groups = useMemo(() => {\n    switch (sortOption) {\n      case sortOptions.title: {\n        const grouped = helpers.array.group(guides, (guide) => {\n          if (helpers.string.isNumber(guide.sortableTitle[0])) {\n            return \"#\";\n          }\n          return guide.sortableTitle[0].toUpperCase();\n        });\n        Object.keys(grouped).forEach((key) => {\n          grouped[key] = helpers.array.sortBy(grouped[key], \"sortableTitle\");\n        });\n        return grouped;\n      }\n      case sortOptions.author: {\n        const newGroups = helpers.array.group(\n          guides,\n          (guide) => getFallbackAuthorName(guide)[0]\n        );\n        Object.keys(newGroups).forEach((key) => {\n          newGroups[key] = newGroups[key].sort(sortAuthorFn);\n        });\n        return newGroups;\n      }\n      default:\n        return { \"Recently added\": guides };\n    }\n  }, [guides]);\n\n  const fetchGuides = () => {\n    const url = `${fetchPath}?${new URLSearchParams({\n      sort: sortOption,\n      sortOrder,\n      filter: filterOption,\n      page,\n    })}`;\n    fetch(url, {\n      method: \"GET\",\n      headers: {\n        Accept: \"application/json\",\n      },\n    })\n      .then((response) => {\n        return response.json();\n      })\n      .then((data) => {\n        const camelizedGuides = camelize(data.guides);\n        const newGuides =\n          page > 0 ? [...guides, ...camelizedGuides] : camelizedGuides;\n        setGuides(newGuides);\n        setTotalCount(data.total_count);\n      })\n      .catch(() => {\n        toastNotify(\"Loading guides failed. Please try again.\");\n      });\n  };\n\n  const toggleBackToTopVisibility = () => {\n    const element = document.querySelector(selectors.BACK_TO_TOP);\n    const main = document.querySelector(selectors.MAIN);\n    const scrollPosition = helpers.dom.getScrollPosition();\n\n    if (scrollPosition.top > main.offsetTop + 5) {\n      element.classList.remove(selectors.BACK_TO_TOP_HIDDEN.substring(1));\n    } else {\n      element.classList.add(selectors.BACK_TO_TOP_HIDDEN.substring(1));\n    }\n  };\n\n  const toggleControlsFixedToTop = () => {\n    const main = document.querySelector(selectors.MAIN);\n    if (helpers.dom.getScrollPosition().top > main.offsetTop + controlsOffset) {\n      main.classList.add(selectors.MAIN_CONTROLS_FIXED.substring(1));\n    } else {\n      main.classList.remove(selectors.MAIN_CONTROLS_FIXED.substring(1));\n    }\n  };\n\n  const updateQueryParams = () => {\n    const params = {};\n    helpers.array.each(\n      [\"viewOption\", \"sortOption\", \"filterOption\"],\n      (option) => {\n        const key = queryParamKeys[option];\n        const defaultValue =\n          defaultProps[\n            `default${helpers.string.capitalizeFirstLetter(option)}`\n          ];\n        if (defaultValue !== queryParamOptions[option]) {\n          params[key] = queryParamOptions[option];\n        }\n        if (option === \"filterOption\" && queryParamOptions[option] === \"#\") {\n          params[key] = \"number\";\n        } // hashtags not allowed as query param\n      }\n    );\n\n    helpers.updateQueryParams(params);\n  };\n\n  const onScroll = () => {\n    toggleBackToTopVisibility();\n    toggleControlsFixedToTop();\n  };\n\n  useEffect(() => {\n    subscribe(\"scroll\", onScroll);\n\n    return () => {\n      unsubscribe(\"scroll\", onScroll);\n    };\n  }, []);\n\n  // Hook to fetch data\n  useEffect(() => {\n    fetchGuides(false);\n  }, [sortOrder, sortOption, filterOption, page]);\n\n  useEffect(() => {\n    updateQueryParams();\n\n    if (viewOption === viewOptions.grid) {\n      litCards.randomizeBackgrounds(selectors.LIT_CARD);\n    }\n  }, [guides, viewOption]);\n\n  const onSetViewOption = (viewOptionSelected) => {\n    setViewOption(viewOptionSelected);\n  };\n\n  const onSetSortOption = (sortOptionSelected, click = true) => {\n    const order =\n      sortOptionSelected === sortOptions.recent\n        ? sortOrders.desc\n        : sortOrders.asc;\n    setSortOrder(order);\n    setSortOption(sortOptionSelected);\n    setPage(0);\n\n    if (click) {\n      scrollToTop();\n    }\n  };\n\n  const onSetFilterOption = (filterOptionSelected, click = true) => {\n    filterOptionSelected === filterOptions.number\n      ? setFilterOption(\"number\")\n      : setFilterOption(filterOptionSelected);\n    setPage(0);\n\n    if (click) {\n      scrollToTop();\n    }\n  };\n\n  const onClickLoadMore = () => {\n    setPage(page + 1);\n  };\n\n  const scrollToTop = () => {\n    const element = document.querySelector(selectors.MAIN);\n    helpers.dom.scrollTo(element);\n  };\n\n  return (\n    <div className=\"guide-list\" data-test=\"GuideList\" ref={mainRef}>\n      <div className=\"container--max-1170-with-padding\">\n        <div className=\"guide-list__title\">\n          <div className=\"title-3\">{title}</div>\n        </div>\n      </div>\n      <div className=\"guide-list__controls-wrapper\">\n        <div className=\"container--max-1170-with-padding guide-list__controls body-2\">\n          <GuideListViewControl\n            queryParamOptions={queryParamOptions}\n            viewOptions={viewOptions}\n            defaultViewOption={viewOption}\n            onSetViewOption={onSetViewOption}\n          />\n          <GuideListSortControl\n            queryParamOptions={queryParamOptions}\n            sortOptions={sortOptions}\n            defaultSortOption={sortOption}\n            onSetSortOption={onSetSortOption}\n          />\n          <GuideListAlphabeticalFilterControl\n            queryParamOptions={queryParamOptions}\n            baseFilterOptions={filterOptions}\n            defaultFilterOption={filterOption}\n            onSetFilterOption={onSetFilterOption}\n          />\n        </div>\n      </div>\n      <div className=\"guide-list__groups-wrapper\">\n        {viewOption === viewOptions.list && <GuidesAsList groups={groups} />}\n        {viewOption === viewOptions.grid && (\n          <GuidesAsGrid groups={groups} userSignedIn={userSignedIn} />\n        )}\n      </div>\n      {totalCount > 0 ? (\n        <div className=\"guide-list__footer text-center\">\n          <div className=\"body-2\">{`You've viewed ${displayCount} of ${totalCount} guides`}</div>\n          {displayCount < totalCount && (\n            <button\n              className=\"btn btn-lg btn-default\"\n              onClick={onClickLoadMore}\n              type=\"button\"\n            >\n              Load More\n            </button>\n          )}\n        </div>\n      ) : (\n        <div className=\"guide-list__empty container--max-1170-with-padding body-2 text-center\">\n          None of our titles start with this letter.\n        </div>\n      )}\n      <div className=\"container--max-1170-with-padding guide-list__back-to-top guide-list__back-to-top--hidden\">\n        <button\n          className=\"btn btn-default btn-icon\"\n          onClick={scrollToTop}\n          type=\"button\"\n        >\n          <Icon name=\"arrow-up\" size=\"sm\" />\n        </button>\n      </div>\n    </div>\n  );\n}\n\nfunction GuidesAsList({ groups }) {\n  const keys = Object.keys(groups);\n\n  return (\n    <ul className=\"guide-list__groups guide-list__groups--list\">\n      {keys.map((key) => (\n        <li className=\"guide-list__group\" key={key}>\n          <div className=\"guide-list__group--header\">\n            <div className=\"title-1\">{key}</div>\n          </div>\n          <ul className=\"container-fluid guide-list__guides\">\n            {groups[key].map((guide) => (\n              <a\n                href={guide.url}\n                className=\"guide-list__guide\"\n                key={guide.slug}\n              >\n                <div className=\"guide-list__guide-content\">\n                  <div className=\"guide-list__guide--title-author\">\n                    <div className=\"title-5\">{guide.title}</div>\n                    <div className=\"body-2\">{guide.authorName}</div>\n                  </div>\n                  {guide.typeOfWork && (\n                    <div className=\"guide-list__guide--type subtitle-2\">\n                      {getFriendlyTypeOfWork(guide.typeOfWork)}\n                    </div>\n                  )}\n                </div>\n              </a>\n            ))}\n          </ul>\n        </li>\n      ))}\n    </ul>\n  );\n}\n\nfunction GuidesAsGrid({ groups, userSignedIn }) {\n  const keys = Object.keys(groups);\n  let index = 0;\n\n  return (\n    <ul className=\"guide-list__groups guide-list__groups--grid\">\n      {keys.map((key) => (\n        <li className=\"guide-list__group\" key={key}>\n          <div className=\"guide-list__group--header\">\n            <div className=\"title-1\">{key}</div>\n          </div>\n          <ul className=\"guide-list__guides\">\n            <div className=\"row\">\n              {groups[key].map((guide) => (\n                <div\n                  className=\"col-xxs-12 col-xs-6 col-sm-6 col-md-4 col-lg-4\"\n                  key={guide.slug}\n                >\n                  <li className=\"guide-list__guide\">\n                    <LitCard\n                      authorName={guide.authorName}\n                      bookmarkId={guide.bookmarkId}\n                      index={index++} // eslint-disable-line no-plusplus\n                      {...guide}\n                      randomizeBackgrounds={false}\n                      userSignedIn={userSignedIn}\n                    />\n                  </li>\n                </div>\n              ))}\n            </div>\n          </ul>\n        </li>\n      ))}\n    </ul>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport Select from \"components/shared/Select\";\nimport { components } from \"react-select\";\n\nconst selectInputTextPrefix = {\n  xs: \"Title starts: \",\n  sm: \"Title starts with: \",\n};\n\nconst GuideListAlphabeticalFilterControl = (props) => {\n  const filterOptions = Object.values(props.baseFilterOptions)\n    .concat(\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"))\n    .map((k) => {\n      return { label: k, value: k };\n    });\n\n  const [selectedFilterOption, setSelectedFilterOption] = useState(\n    props.defaultFilterOption\n  );\n\n  // changes to query params will be passed downstream to this component\n  useEffect(() => {\n    if (\n      props.queryParamOptions &&\n      props.queryParamOptions.filterOption !== selectedFilterOption\n    ) {\n      const filterOptionFromQP =\n        props.queryParamOptions.filterOption || props.baseFilterOptions.all;\n      setSelectedFilterOption(filterOptionFromQP);\n      props.onSetFilterOption(filterOptionFromQP, false);\n    }\n  }, [props.queryParamOptions]);\n\n  const handleChange = (option) => {\n    setSelectedFilterOption(option.value);\n    props.onSetFilterOption(option.value);\n  };\n\n  return (\n    <div className=\"guide-list__control guide-list__control--filter\">\n      <Select\n        options={filterOptions}\n        baseClassName=\"lc-select-container--md\"\n        containerClassName=\"select-container guide-list__control-select--xxs\"\n        value={selectedFilterOption}\n        isControlled\n        name=\"guide-list__filter-select\"\n        onChange={(option) => handleChange(option)}\n        labelText=\"Title starts with\"\n      />\n      <Select\n        options={filterOptions}\n        baseClassName=\"lc-select-container--md\"\n        containerClassName=\"select-container guide-list__control-select--xs\"\n        value={selectedFilterOption}\n        isControlled\n        name=\"guide-list__filter-select\"\n        onChange={(option) => handleChange(option)}\n        components={{\n          /* eslint-disable react/no-unstable-nested-components, no-shadow */\n          SingleValue: ({ children, ...props }) => {\n            return (\n              <components.SingleValue {...props}>\n                {selectInputTextPrefix.xs + children}\n              </components.SingleValue>\n            );\n          },\n          Placeholder: ({ children, ...props }) => {\n            return (\n              <components.Placeholder {...props}>\n                {selectInputTextPrefix.xs + children}\n              </components.Placeholder>\n            );\n          },\n          /* eslint-enable react/no-unstable-nested-components, no-shadow */\n        }}\n      />\n      <Select\n        options={filterOptions}\n        baseClassName=\"lc-select-container--md\"\n        containerClassName=\"select-container guide-list__control-select--sm\"\n        value={selectedFilterOption}\n        isControlled\n        name=\"guide-list__filter-select\"\n        onChange={(option) => handleChange(option)}\n        components={{\n          /* eslint-disable react/no-unstable-nested-components, no-shadow */\n          SingleValue: ({ children, ...props }) => {\n            return (\n              <components.SingleValue {...props}>\n                {selectInputTextPrefix.sm + children}\n              </components.SingleValue>\n            );\n          },\n          Placeholder: ({ children, ...props }) => {\n            return (\n              <components.Placeholder {...props}>\n                {selectInputTextPrefix.sm + children}\n              </components.Placeholder>\n            );\n          },\n          /* eslint-enable react/no-unstable-nested-components, no-shadow */\n        }}\n      />\n    </div>\n  );\n};\n\nexport default GuideListAlphabeticalFilterControl;\n","import React, { useState, useEffect } from \"react\";\nimport Select from \"components/shared/Select\";\nimport { components } from \"react-select\";\nimport helpers from \"helpers/base\";\n\nconst selectInputTextPrefix = \"Sort by: \";\n\nconst sortOptionLabels = {\n  title: \"Title A-Z\",\n  author: \"Author A-Z\",\n  recent: \"Recently Added\",\n};\nfunction GuideListSortControl(props) {\n  const [sortOption, setSortOption] = useState(props.defaultSortOption);\n\n  // changes to query params will be passed downstream to this component\n  useEffect(() => {\n    if (\n      props.queryParamOptions &&\n      props.queryParamOptions.sortOption !== sortOption\n    ) {\n      const sortOptionFromQP =\n        props.queryParamOptions.sortOption || props.sortOptions.title;\n      setSortOption(sortOptionFromQP);\n      props.onSetSortOption(sortOptionFromQP, false);\n    }\n  }, [props.queryParamOptions]);\n\n  const selectSortOptions = helpers.object.map(\n    sortOptionLabels,\n    (key, value) => {\n      return { label: value, value: key };\n    }\n  );\n  const sortOptionIsTitle = sortOption === props.sortOptions.title;\n  const sortOptionIsAuthor = sortOption === props.sortOptions.author;\n  const sortOptionIsRecent = sortOption === props.sortOptions.recent;\n\n  const handleChange = (option) => {\n    setSortOption(option.value);\n    props.onSetSortOption(option.value);\n  };\n\n  const handleClickSortOptionTitle = () => {\n    setSortOption(props.sortOptions.title);\n    props.onSetSortOption(props.sortOptions.title);\n  };\n\n  const handleClickSortOptionAuthor = () => {\n    setSortOption(props.sortOptions.author);\n    props.onSetSortOption(props.sortOptions.author);\n  };\n\n  const handleClickSortOptionRecent = () => {\n    setSortOption(props.sortOptions.recent);\n    props.onSetSortOption(props.sortOptions.recent);\n  };\n\n  return (\n    <div className=\"guide-list__control guide-list__control--sort\">\n      <div className=\"hidden-md hidden-lg\" style={{ width: \"100%\" }}>\n        <Select\n          options={selectSortOptions}\n          baseClassName=\"lc-select-container--md\"\n          containerClassName=\"select-container guide-list__control-select--xxs\"\n          value={sortOption}\n          isControlled\n          name=\"guide-list__sort-select\"\n          onChange={(option) => handleChange(option)}\n          labelText=\"Sort\"\n        />\n        <Select\n          options={selectSortOptions}\n          baseClassName=\"lc-select-container--md\"\n          containerClassName=\"select-container guide-list__control-select--xs\"\n          value={sortOption}\n          isControlled\n          name=\"guide-list__sort-select\"\n          onChange={(option) => handleChange(option)}\n          components={{\n            /* eslint-disable react/no-unstable-nested-components */\n            SingleValue: ({ children, ...selectProps }) => {\n              return (\n                <components.SingleValue {...selectProps}>\n                  {selectInputTextPrefix + children}\n                </components.SingleValue>\n              );\n            },\n            Placeholder: ({ children, ...selectProps }) => {\n              return (\n                <components.Placeholder {...selectProps}>\n                  {selectInputTextPrefix + children}\n                </components.Placeholder>\n              );\n            },\n            IndicatorSeparator: () => null,\n            /* eslint-enable react/no-unstable-nested-components */\n          }}\n        />\n      </div>\n      <div className=\"hidden-xs hidden-sm\">\n        <span>Sort:</span>\n        <button\n          className={`btn guide-list__sort-option ${\n            sortOptionIsTitle ? \"guide-list__sort-option--active\" : \"\"\n          }`}\n          data-test=\"GuideList-SortTitle\"\n          onClick={handleClickSortOptionTitle}\n          type=\"button\"\n        >\n          {sortOptionLabels.title}\n        </button>\n        <button\n          className={`btn guide-list__sort-option ${\n            sortOptionIsAuthor ? \"guide-list__sort-option--active\" : \"\"\n          }`}\n          data-test=\"GuideList-SortAuthor\"\n          onClick={handleClickSortOptionAuthor}\n          type=\"button\"\n        >\n          {sortOptionLabels.author}\n        </button>\n        <button\n          className={`btn guide-list__sort-option ${\n            sortOptionIsRecent ? \"guide-list__sort-option--active\" : \"\"\n          }`}\n          data-test=\"GuideList-SortRecent\"\n          onClick={handleClickSortOptionRecent}\n          type=\"button\"\n        >\n          {sortOptionLabels.recent}\n        </button>\n      </div>\n    </div>\n  );\n}\n\nexport default GuideListSortControl;\n","import React, { useState, useEffect } from \"react\";\nimport Icon from \"components/shared/Icon\";\n\nfunction GuideListViewControl(props) {\n  const [viewOption, setViewOption] = useState(props.defaultViewOption);\n\n  // changes to query params will be passed downstream to this component\n  useEffect(() => {\n    if (\n      props.queryParamOptions &&\n      props.queryParamOptions.viewOption !== viewOption\n    ) {\n      const viewOptionFromQP =\n        props.queryParamOptions.viewOption || props.viewOptions.list;\n      setViewOption(viewOptionFromQP);\n      props.onSetViewOption(viewOptionFromQP, false);\n    }\n  }, [props.queryParamOptions]);\n\n  const viewOptionIsList = viewOption === props.viewOptions.list;\n  const viewOptionIsGrid = viewOption === props.viewOptions.grid;\n\n  const handleClickViewOptionList = () => {\n    setViewOption(props.viewOptions.list);\n    props.onSetViewOption(props.viewOptions.list);\n  };\n\n  const handleClickViewOptionGrid = () => {\n    setViewOption(props.viewOptions.grid);\n    props.onSetViewOption(props.viewOptions.grid);\n  };\n\n  return (\n    <div className=\"guide-list__control guide-list__control--view\">\n      <span>View:</span>\n      <button\n        aria-label=\"View as list\"\n        className={`guide-list__view-option btn btn-borderless btn-icon ${\n          viewOptionIsList ? \"guide-list__view-option--active\" : \"\"\n        }`}\n        data-test=\"GuideList-ListView\"\n        onClick={handleClickViewOptionList}\n        type=\"button\"\n      >\n        <Icon name=\"list\" size=\"sm\" />\n      </button>\n      <button\n        aria-label=\"View as grid\"\n        className={`guide-list__view-option btn btn-borderless btn-icon ${\n          viewOptionIsGrid ? \"guide-list__view-option--active\" : \"\"\n        }`}\n        data-test=\"GuideList-GridView\"\n        onClick={handleClickViewOptionGrid}\n        type=\"button\"\n      >\n        <Icon name=\"grid\" size=\"sm\" />\n      </button>\n    </div>\n  );\n}\n\nexport default GuideListViewControl;\n","import React from \"react\";\nimport Loader from \"./Loader\";\n\nconst LoadingPill = () => {\n  return (\n    <div\n      className=\"loading-pill\n                 tw-bg-purple-tint-95\n                 tw-flex\n                 tw-gap-2\n                 tw-items-center\n                 tw-leading-4.5\n                 tw-py-1.5\n                 tw-px-3\n                 tw-rounded-[16px]\"\n    >\n      <Loader />\n      <span className=\"tw-text-gray-tint-10 tw-font-semibold subtitle-2\">\n        Loading messages\n      </span>\n    </div>\n  );\n};\n\nexport default LoadingPill;\n","import React from \"react\";\n\nconst LocalTag = ({ litTerm }) => (\n  <a className=\"local-tag\" href={litTerm.showPath} role=\"button\">\n    <div className=\"pill\">\n      <span className=\"subtitle-2 center-aligned\">\n        {litTerm.name}\n        {litTerm.keyExamplesCount > 1 ? ` (${litTerm.keyExamplesCount})` : \"\"}\n      </span>\n    </div>\n  </a>\n);\n\nexport default LocalTag;\n","import React from \"react\";\n\nimport Select from \"components/shared/Select\";\n\nconst MultiSelect = (props) => {\n  return (\n    <Select\n      {...props}\n      // Currently only md size is developed for multiselect\n      baseClassName=\"lc-select-container--md lc-select-container--multi\"\n      isMulti\n    />\n  );\n};\n\nexport default MultiSelect;\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport AutocompleteInput from \"components/shared/AutocompleteInput\";\nimport Input from \"components/shared/Input\";\nimport Modal from \"components/shared/Modal\";\nimport ResponsiveSelect from \"components/shared/ResponsiveSelect\";\n\nconst propTypes = {\n  logoUrl: PropTypes.string.isRequired,\n  showOnMount: PropTypes.bool,\n  showAfterDelay: PropTypes.number,\n  successMessage: PropTypes.string,\n};\n\nconst defaultProps = {\n  showOnMount: false,\n  /* eslint-disable max-len */\n  successMessage:\n    \"While we can't cover every request we receive, we pay close attention to requests, and the requests we get do influence which titles we cover.\",\n  /* eslint-enable max-len */\n};\n\nconst categoryOptionsLarge = [\n  {\n    label: \"A new literature guide\",\n    value: \"requests\",\n  },\n  {\n    label: \"A new poetry guide\",\n    value: \"poetry_guide_requests\",\n  },\n];\n\nconst categoryOptionsSmall = [\n  {\n    label: \"Lit guide\",\n    value: \"requests\",\n  },\n  {\n    label: \"Poetry guide\",\n    value: \"poetry_guide_requests\",\n  },\n];\n\nconst Title = ({ src }) => <img src={src} alt=\"logo\" />;\n\nconst initialFormState = {};\n\nconst RequestContentModal = (props) => {\n  const [canSubmit, setCanSubmit] = useState(false);\n  const [category, setCategory] = useState();\n  const [formState, setFormState] = useState(initialFormState);\n  const [showError, setShowError] = useState(false);\n  const [submitted, setSubmitted] = useState(false);\n  const [coveredResource, setCoveredResource] = useState({});\n\n  useEffect(() => {\n    if (\n      (formState.requested_book &&\n        formState.author_name &&\n        formState.requested_book.length &&\n        formState.author_name.length) ||\n      (formState.requested_poetry_guide &&\n        formState.author_name &&\n        formState.requested_poetry_guide.length &&\n        formState.author_name.length)\n    ) {\n      setCanSubmit(true);\n    }\n  }, [formState]);\n\n  // eslint-disable-next-line react/no-unstable-nested-components\n  const Footer = () =>\n    submitted ? (\n      <>\n        <div className=\"hidden-xs\">\n          <button\n            className=\"btn btn-default btn-md\"\n            onClick={resetForm}\n            type=\"button\"\n          >\n            Request another guide\n          </button>\n          <button\n            className=\"btn btn-primary btn-md\"\n            data-dismiss=\"modal\"\n            type=\"button\"\n          >\n            Close\n          </button>\n        </div>\n        <div className=\"visible-xs\">\n          <button\n            className=\"btn btn-primary btn-md\"\n            data-dismiss=\"modal\"\n            type=\"button\"\n          >\n            Close\n          </button>\n          <button\n            className=\"btn btn-default btn-md\"\n            onClick={resetForm}\n            type=\"button\"\n          >\n            Request another guide\n          </button>\n        </div>\n      </>\n    ) : (\n      <>\n        <button\n          className=\"btn btn-default btn-md\"\n          data-dismiss=\"modal\"\n          type=\"button\"\n        >\n          Cancel\n        </button>\n        <button\n          className=\"btn btn-primary btn-md\"\n          disabled={!canSubmit}\n          onClick={onSubmit}\n          form=\"content-request-form\"\n          type=\"submit\"\n        >\n          Submit\n        </button>\n      </>\n    );\n\n  const onSubmit = (e) => {\n    e.preventDefault();\n\n    setCanSubmit(false);\n    setShowError(false);\n\n    $.ajax({\n      type: \"post\",\n      url: \"/contact-content-request.json\",\n      data: { contact_inquiry: { category, ...formState } },\n    })\n      .done((data) => {\n        const { status, title, url, votes, rank } = data;\n        setCoveredResource({ title, url, votes, rank });\n        setSubmitted(status);\n        if (props.afterSubmit) {\n          props.afterSubmit();\n        }\n      })\n      .fail(() => {\n        setCanSubmit(true);\n        setShowError(true);\n      });\n  };\n\n  const onInputChange = (e) => {\n    setCanSubmit(false);\n\n    setFormState({\n      ...formState,\n      [e.target.name]: e.target.value,\n    });\n  };\n\n  const onTitleChange = (e, { newValue }) => {\n    setCanSubmit(false);\n\n    setFormState({\n      ...formState,\n      [requestedFieldNames[category]]: newValue,\n    });\n  };\n\n  const onAuthorChange = (e, { newValue }) => {\n    setCanSubmit(false);\n\n    setFormState({\n      ...formState,\n      author_name: newValue,\n    });\n  };\n\n  const onTitleAutoselect = (suggestion) => {\n    setFormState({\n      ...formState,\n      [requestedFieldNames[category]]: suggestion.title,\n      author_name: suggestion.author,\n    });\n  };\n\n  const onAuthorAutoselect = (suggestion) => {\n    setFormState({\n      ...formState,\n      author_name: suggestion.author,\n    });\n  };\n\n  const handleCategoryChange = (selectedCategory) => {\n    setFormState({}); // Clear form state to not submit unused fields\n    setCanSubmit(false);\n    setCategory(selectedCategory);\n  };\n\n  const resetForm = () => {\n    setFormState({});\n    setCategory();\n    setSubmitted(false);\n    setCanSubmit(false);\n  };\n\n  const inputs = {\n    requests: (\n      <Input\n        inputClass=\"input-md\"\n        InputComponent=\"textarea\"\n        inputId=\"contact_inquiry_message\"\n        isControlled\n        labelText=\"Why should we cover this title? (optional)\"\n        key=\"request_message\"\n        name=\"message\"\n        placeholder=\"Type message here\"\n        handleChange={onInputChange}\n        value={formState.message}\n      />\n    ),\n    poetry_guide_requests: (\n      <Input\n        handleChange={onInputChange}\n        inputClass=\"input-md\"\n        InputComponent=\"textarea\"\n        inputId=\"contact_inquiry_message\"\n        isControlled\n        labelText=\"Why should we cover this poem? (optional)\"\n        key=\"poetry_request_message\"\n        name=\"message\"\n        placeholder=\"Type message here\"\n        value={formState.message}\n      />\n    ),\n  };\n\n  const requestedFieldNames = {\n    requests: \"requested_book\",\n    poetry_guide_requests: \"requested_poetry_guide\",\n  };\n\n  const submittedViews = {\n    success: (\n      <div className=\"request-content-modal__submitted\">\n        <div className=\"top-section\">\n          <div className=\"modal__title\">Your request has been submitted!</div>\n          <div className=\"modal__subtitle\">{props.successMessage}</div>\n        </div>\n      </div>\n    ),\n    dupe_request: (\n      <div className=\"request-content-modal__submitted\">\n        <div className=\"top-section\">\n          <div className=\"modal__title\">\n            You&apos;ve already requested <i>{coveredResource.title}</i>.\n          </div>\n          <div className=\"modal__subtitle\">\n            Thanks for letting us know how much you’d like for us to cover it!\n          </div>\n        </div>\n      </div>\n    ),\n    approved_request_exists: (\n      <div className=\"request-content-modal__submitted\">\n        <div className=\"top-section\">\n          <div className=\"modal__title\">That&apos;s already on our list!</div>\n          <div className=\"modal__subtitle\">\n            We&apos;ve added your vote for <i>{coveredResource.title}</i> and\n            now it has {coveredResource.votes}{\" \"}\n            {coveredResource.votes === 1 ? \"vote\" : \"votes\"}.\n          </div>\n        </div>\n      </div>\n    ),\n    unapproved_request_exists: (\n      <div className=\"request-content-modal__submitted\">\n        <div className=\"top-section\">\n          <div className=\"modal__title\">Your request has been submitted!</div>\n          <div className=\"modal__subtitle\">\n            We’ll let you know once we approve this suggestion so you can vote\n            for it!\n          </div>\n        </div>\n      </div>\n    ),\n    already_covered: (\n      <div className=\"request-content-modal__submitted\">\n        <div className=\"top-section\">\n          <div className=\"modal__title\">You&apos;re in luck!</div>\n          <div className=\"modal__subtitle\">\n            We already have a{\" \"}\n            <a href={coveredResource.url}>\n              guide for <i>{coveredResource.title}</i>\n            </a>\n            .\n          </div>\n        </div>\n      </div>\n    ),\n  };\n  return (\n    <Modal\n      showOnMount={props.showOnMount}\n      showAfterDelay={props.showAfterDelay}\n      id=\"request-content-modal\"\n      footer={<Footer />}\n      onHidden={resetForm}\n      backdropStatic // Prevents clicks on backdrop from closing modal.\n      title={<Title src={props.logoUrl} />}\n    >\n      {submitted ? (\n        submittedViews[submitted]\n      ) : (\n        <div className=\"request-content-modal__request\">\n          <div className=\"top-section\">\n            <div className=\"modal__title\">Request a guide</div>\n            <div className=\"modal__subtitle\">\n              Please enter just one request at a time, and check your spelling\n              before submitting!\n            </div>\n          </div>\n          <div className=\"bottom-section\">\n            {showError && (\n              <div className=\"lc-banner lc-banner-warning lc-banner-section\">\n                <ul>\n                  <li>\n                    There was an error processing your request. Please try\n                    again.\n                  </li>\n                </ul>\n              </div>\n            )}\n            <form\n              className=\"modal__form\"\n              id=\"content-request-form\"\n              onSubmit={onSubmit}\n            >\n              <ResponsiveSelect\n                baseClassName=\"lc-select-container--md\"\n                inputId=\"contact_inquiry_category\"\n                inputName=\"contact_inquiry[category]\"\n                isControlled\n                labelText={\"I'd like to request:\"}\n                largeSelectOptions={categoryOptionsLarge}\n                onChange={handleCategoryChange}\n                smallSelectOptions={categoryOptionsSmall}\n                value={category}\n              />\n              <AutocompleteInput\n                handleChange={onTitleChange}\n                labelText=\"Title of book, play, story, poem...\"\n                name={requestedFieldNames[category]}\n                onSuggestionSelect={onTitleAutoselect}\n                suggestionUrl=\"/contact-inquiry-autocomplete?search_type=title&query=\"\n                value={formState[requestedFieldNames[category]]}\n              />\n              <AutocompleteInput\n                handleChange={onAuthorChange}\n                labelText=\"Author's name\"\n                name=\"author_name\"\n                onSuggestionSelect={onAuthorAutoselect}\n                suggestionUrl=\"/contact-inquiry-autocomplete?search_type=author&query=\"\n                value={formState.author_name}\n              />\n              {inputs[category]}\n            </form>\n          </div>\n        </div>\n      )}\n    </Modal>\n  );\n};\n\nRequestContentModal.propTypes = propTypes;\nRequestContentModal.defaultProps = defaultProps;\n\nexport default RequestContentModal;\n","// For use if a select needs two versions of placeholders/labels to fit\n// better on smaller screens\n\nimport React, { useCallback, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Select from \"components/shared/Select\";\n\nconst propTypes = {\n  inputId: PropTypes.string.isRequired,\n  inputName: PropTypes.string.isRequired,\n  largeSelectOptions: PropTypes.arrayOf(PropTypes.object),\n  onChange: PropTypes.func,\n  smallSelectOptions: PropTypes.arrayOf(PropTypes.object),\n  value: PropTypes.string,\n};\n\nconst defaultProps = {\n  onChange: () => {},\n  value: null,\n};\n\nconst ResponsiveSelect = (props) => {\n  const {\n    inputId,\n    inputName,\n    largeSelectOptions,\n    onChange,\n    smallSelectOptions,\n    value,\n    ...selectProps\n  } = props;\n\n  const [inputValue, setInputValue] = useState(value);\n\n  const onChangeValue = useCallback((selectedValue) => {\n    setInputValue(selectedValue.value);\n    onChange(selectedValue.value);\n  });\n\n  return (\n    <>\n      <Select\n        {...selectProps}\n        containerClassName=\"visible-xs select-container responsive-select-container-small\"\n        id={`${inputId}-small`}\n        name={`${inputName}-small`}\n        onChange={onChangeValue}\n        options={smallSelectOptions}\n        value={value}\n      />\n      <Select\n        {...selectProps}\n        containerClassName=\"hidden-xs select-container responsive-select-container-large\"\n        id={`${inputId}-large`}\n        name={`${inputName}-large`}\n        onChange={onChangeValue}\n        options={largeSelectOptions}\n        value={value}\n      />\n      <input hidden id={inputId} name={inputName} defaultValue={inputValue} />\n    </>\n  );\n};\n\nResponsiveSelect.propTypes = propTypes;\nResponsiveSelect.defaultProps = defaultProps;\n\nexport default ResponsiveSelect;\n","import React, { useMemo, useState, useEffect } from \"react\";\n\nexport default function SSRDemo() {\n  const [statusColor, setStatusColor] = useState(\"purple\");\n\n  useEffect(() => {\n    setStatusColor(\"green\");\n  }, []);\n\n  // This function is meant to slow this component down.\n  const heavyComputation = useMemo(() => {\n    if (typeof document === \"undefined\") return null;\n\n    let result = 0;\n    for (let i = 0; i < 1e8; i++) {\n      result += Math.sqrt(i);\n    }\n    return result;\n  }, []);\n\n  // This renders a fallback UI during server-side rendering (SSR).\n  if (typeof document === \"undefined\") {\n    return (\n      <div\n        className={`tw-bg-${statusColor}-tint-50 tw-flex tw-flex-col tw-items-center tw-justify-center tw-shadow-lg`}\n        data={heavyComputation}\n      >\n        <p className=\"tw-text-lg tw-font-semibold\">Server-side rendered!</p>\n      </div>\n    );\n  }\n\n  // This renders the final UI.\n  return (\n    <div\n      className={`tw-bg-${statusColor}-tint-50 tw-flex tw-flex-col tw-items-center tw-justify-center tw-shadow-lg`}\n      data={heavyComputation}\n    >\n      <p className=\"tw-text-lg tw-font-semibold\">Everything rendered!</p>\n    </div>\n  );\n}\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport classnames from \"classnames\";\nimport { ALIGNMENT_TYPES, LEFT, RIGHT } from \"../sell/constants\";\nimport { handleKeyPress } from \"./helpers/keyPressHelpers\";\n\nconst TextToggle = ({ onToggle, alignment, leftContent, rightContent }) => {\n  const [selectedAlignment, setSelectedAlignment] = useState(alignment);\n\n  const toggle = () => {\n    setSelectedAlignment(selectedAlignment === RIGHT ? LEFT : RIGHT);\n    onToggle?.();\n  };\n\n  return (\n    <div\n      onKeyPress={(event) => handleKeyPress(event, toggle)}\n      role=\"button\"\n      tabIndex={0}\n      onClick={toggle}\n      className=\"lc-text-toggle\"\n    >\n      <input\n        type=\"checkbox\"\n        onChange={(event) => handleKeyPress(event, toggle)}\n      />\n      <span\n        aria-label=\"Left\"\n        className={classnames(\"text\", { selected: selectedAlignment === LEFT })}\n        dangerouslySetInnerHTML={{ __html: leftContent }}\n      />\n      <span\n        aria-label=\"Right\"\n        className={classnames(\"text\", {\n          selected: selectedAlignment === RIGHT,\n        })}\n        dangerouslySetInnerHTML={{ __html: rightContent }}\n      />\n    </div>\n  );\n};\n\nTextToggle.propTypes = {\n  onToggle: PropTypes.func,\n  alignment: PropTypes.oneOf(ALIGNMENT_TYPES).isRequired,\n  leftContent: PropTypes.node.isRequired,\n  rightContent: PropTypes.node.isRequired,\n};\n\nTextToggle.defaultProps = {\n  onToggle: null,\n};\n\nexport default TextToggle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst propTypes = {\n  title: PropTypes.string,\n  fullName: PropTypes.string,\n  biography: PropTypes.string,\n};\n\nconst defaultProps = {\n  title: \"Writer\",\n};\n\nclass WriterBio extends React.Component {\n  constructor(props) {\n    super(props);\n    this._text = React.createRef();\n    this.state = { hasOverflow: false, isExpanded: false };\n  }\n\n  componentDidMount() {\n    const bioText = $(this._text.current).children()[0];\n    if (bioText) {\n      this.setState({\n        hasOverflow: bioText.scrollHeight > bioText.offsetHeight,\n      });\n    }\n  }\n\n  onTextToggle(_e) {\n    // eslint-disable-next-line react/no-access-state-in-setstate\n    this.setState({ isExpanded: !this.state.isExpanded });\n  }\n\n  render() {\n    const { title, fullName, biography, photoS3Url } = this.props;\n    const toggleText = this.state.isExpanded\n      ? `Read less about ${fullName}`\n      : `Read more about ${fullName}`;\n\n    return (\n      <div\n        className=\"writer-bio\"\n        data-is-expanded={this.state.isExpanded}\n        data-has-overflow={this.state.hasOverflow}\n      >\n        <div className=\"media-block\">\n          <div className=\"media-block__media\">\n            <img src={photoS3Url} alt=\"\" />\n          </div>\n          <div className=\"media-block__content\">\n            <div className=\"writer-bio__title\">\n              <span className=\"writer-bio__about\"> About the {title}:</span>\n              <span className=\"writer-bio__name\"> {fullName}</span>\n            </div>\n            <div\n              className=\"writer-bio__text\"\n              ref={this._text}\n              dangerouslySetInnerHTML={{ __html: biography }}\n            />\n            <button\n              className=\"writer-bio__text--toggle btn btn-borderless btn-text\"\n              onClick={(e) => this.onTextToggle(e)}\n              type=\"button\"\n            >\n              {toggleText}\n            </button>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n\nWriterBio.propTypes = propTypes;\nWriterBio.defaultProps = defaultProps;\n\nexport default WriterBio;\n","import React, { useRef, useState } from \"react\";\nimport ChatArea from \"components/ai_tools/ChatArea\";\n\nconst demoContainerStyles = {\n  height: \"828px\",\n  width: \"850px\",\n};\n\nconst demoFormStyles = {\n  display: \"flex\",\n  gap: \"2px\",\n};\n\nexport default function ChatAreaDemo() {\n  const [messages, setMessages] = useState([]);\n  const [currentMessage, setCurrentMessage] = useState(\"\");\n  const [streamState, setStreamState] = useState(\"default\");\n  const inputRef = useRef();\n\n  const handleClick = (variant) => {\n    if (currentMessage === \"\") {\n      return;\n    }\n\n    const newMessage = {\n      children: currentMessage,\n      streamState: variant === \"user\" ? \"default\" : streamState,\n      variant,\n      slideUp: true,\n    };\n    const newMessages = [...messages, newMessage];\n\n    setMessages(newMessages);\n    setCurrentMessage(\"\");\n    setStreamState(\"default\");\n    inputRef.current.focus();\n  };\n\n  const handleInputChange = (event) => {\n    setCurrentMessage(event.target.value);\n  };\n\n  const handleDropdownChange = (event) => {\n    setStreamState(event.target.value);\n  };\n\n  return (\n    <div style={demoContainerStyles}>\n      <div style={demoFormStyles}>\n        <input\n          ref={inputRef}\n          type=\"text\"\n          onChange={handleInputChange}\n          value={currentMessage}\n        />\n        <select onChange={handleDropdownChange} value={streamState}>\n          <option value=\"default\">Default</option>\n          <option value=\"loading\">Loading</option>\n          <option value=\"streaming\">Streaming</option>\n        </select>\n        <button type=\"button\" onClick={() => handleClick(\"server\")}>\n          Server\n        </button>\n        <button type=\"button\" onClick={() => handleClick(\"user\")}>\n          User\n        </button>\n      </div>\n      <ChatArea messages={messages} />\n    </div>\n  );\n}\n","import React from \"react\";\n\nconst colors = [\n  \"tw-bg-teal\",\n  \"tw-bg-teal-opacity-90\",\n  \"tw-bg-teal-shade-20\",\n  \"tw-bg-teal-tint-94\",\n  \"tw-bg-teal-tint-97\",\n  \"tw-bg-light-teal\",\n  \"tw-bg-light-teal-tint-20\",\n  \"tw-bg-light-teal-tint-30\",\n  \"tw-bg-light-teal-tint-50\",\n  \"tw-bg-light-teal-tint-70\",\n  \"tw-bg-light-teal-tint-80\",\n  \"tw-bg-light-teal-tint-95\",\n  \"tw-bg-light-teal-shade-20\",\n  \"tw-bg-purple\",\n  \"tw-bg-light-purple-4\",\n  \"tw-bg-purple-shade-40\",\n  \"tw-bg-purple-tint-10\",\n  \"tw-bg-purple-tint-25\",\n  \"tw-bg-purple-tint-27\",\n  \"tw-bg-purple-tint-40\",\n  \"tw-bg-purple-tint-50\",\n  \"tw-bg-purple-tint-70\",\n  \"tw-bg-purple-tint-80\",\n  \"tw-bg-purple-tint-85\",\n  \"tw-bg-purple-tint-95\",\n  \"tw-bg-blue\",\n  \"tw-bg-blue-shade-18\",\n  \"tw-bg-blue-opacity-90\",\n  \"tw-bg-light-blue\",\n  \"tw-bg-light-blue-tint-10\",\n  \"tw-bg-light-blue-tint-25\",\n  \"tw-bg-light-blue-tint-35\",\n  \"tw-bg-light-blue-tint-40\",\n  \"tw-bg-light-blue-tint-50\",\n  \"tw-bg-light-blue-tint-60\",\n  \"tw-bg-light-blue-tint-85\",\n  \"tw-bg-light-blue-tint-90\",\n  \"tw-bg-light-blue-tint-94\",\n  \"tw-bg-green\",\n  \"tw-bg-green-shade-20\",\n  \"tw-bg-green-shade-40\",\n  \"tw-bg-green-tint-10\",\n  \"tw-bg-green-tint-25\",\n  \"tw-bg-green-tint-40\",\n  \"tw-bg-green-tint-50\",\n  \"tw-bg-green-tint-60\",\n  \"tw-bg-green-tint-75\",\n  \"tw-bg-green-tint-85\",\n  \"tw-bg-light-green\",\n  \"tw-bg-light-green-tint-50\",\n  \"tw-bg-bright-green\",\n  \"tw-bg-mint\",\n  \"tw-bg-red\",\n  \"tw-bg-red-shade-13\",\n  \"tw-bg-red-shade-15\",\n  \"tw-bg-red-shade-20\",\n  \"tw-bg-red-tint-20\",\n  \"tw-bg-red-tint-50\",\n  \"tw-bg-red-tint-60\",\n  \"tw-bg-red-tint-80\",\n  \"tw-bg-red-tint-85\",\n  \"tw-bg-gold\",\n  \"tw-bg-gold-tint-20\",\n  \"tw-bg-gold-tint-45\",\n  \"tw-bg-gold-tint-50\",\n  \"tw-bg-gold-tint-60\",\n  \"tw-bg-gold-tint-80\",\n  \"tw-bg-gold-tint-95\",\n  \"tw-bg-gold-tint-98\",\n  \"tw-bg-light-gold\",\n  \"tw-bg-peach\",\n  \"tw-bg-peach-tint-45\",\n  \"tw-bg-peach-tint-50\",\n  \"tw-bg-peach-tint-80\",\n  \"tw-bg-black\",\n  \"tw-bg-gray\",\n  \"tw-bg-gray-tint-10\",\n  \"tw-bg-gray-tint-30\",\n  \"tw-bg-gray-tint-40\",\n  \"tw-bg-gray-tint-50\",\n  \"tw-bg-gray-tint-70\",\n  \"tw-bg-gray-tint-80\",\n  \"tw-bg-gray-tint-86\",\n  \"tw-bg-gray-tint-90\",\n  \"tw-bg-gray-tint-94\",\n  \"tw-bg-gray-tint-96\",\n  \"tw-bg-gray-opacity-8\",\n  \"tw-bg-gray-opacity-12\",\n  \"tw-bg-gray-opacity-15\",\n  \"tw-bg-gray-opacity-18\",\n  \"tw-bg-gray-opacity-25\",\n  \"tw-bg-gray-opacity-30\",\n  \"tw-bg-gray-opacity-32\",\n  \"tw-bg-gray-opacity-40\",\n  \"tw-bg-gray-opacity-60\",\n  \"tw-bg-white\",\n  \"tw-bg-offwhite\",\n];\n\nexport default function ColorsDemo() {\n  return (\n    <div className=\"tw-flex tw-flex-wrap\">\n      {colors.map((color) => {\n        return <ColorDisplay color={color} key={color} />;\n      })}\n    </div>\n  );\n}\n\nfunction ColorDisplay({ color }) {\n  return (\n    <div className=\"tw-flex tw-flex-col tw-items-center tw-basis-1/4 md:tw-basis-1/5 lg:tw-basis-1/6\">\n      <div className={`${color} tw-h-16 tw-w-16`} />\n      <div className=\"tw-text-black label\">{color}</div>\n    </div>\n  );\n}\n","import React, { useRef, useState } from \"react\";\nimport InputTextCounter from \"components/shared/InputTextCounter\";\n\nconst demoContainerStyles = {\n  width: \"400px\",\n};\n\nconst demoFormStyles = {\n  display: \"flex\",\n  gap: \"2px\",\n  width: \"100%\",\n  alignItems: \"center\",\n};\n\nconst textAreaStyles = {\n  height: \"250px\",\n  width: \"300px\",\n};\n\nexport default function InputTextCounterDemo() {\n  const [props, setProps] = useState({\n    placeholder: \"Placeholder\",\n    min: 10,\n    max: 100,\n    disabled: false,\n    name: \"sample_name\",\n    value: \"foo\",\n    inputClass: \"input-lg\",\n    labelText: \"Label\",\n    isRequired: true,\n  });\n  const [componentKey, setComponentKey] = useState(1);\n  const [displayedProps, setDisplayedProps] = useState(\n    JSON.stringify(props, null, \" \")\n  );\n  const textAreaRef = useRef();\n\n  const remountComponent = () => {\n    // Force a remount of the component in test to allow for new props\n    // to simulate a fresh render\n    setComponentKey(componentKey + 1);\n  };\n\n  const handleClick = () => {\n    setProps(JSON.parse(displayedProps));\n    remountComponent();\n  };\n\n  const handleChangedProps = (e) => {\n    setDisplayedProps(e.target.value);\n  };\n\n  const handleInputChange = (e) => {\n    const newDisplayedProps = {\n      ...JSON.parse(displayedProps),\n      value: e.target.value,\n    };\n\n    setDisplayedProps(JSON.stringify(newDisplayedProps, null, \" \"));\n  };\n\n  return (\n    <div style={demoContainerStyles}>\n      <div style={demoFormStyles}>\n        <textarea\n          style={textAreaStyles}\n          ref={textAreaRef}\n          value={displayedProps}\n          onChange={handleChangedProps}\n        />\n        <button type=\"button\" onClick={handleClick}>\n          Update\n        </button>\n      </div>\n      <InputTextCounter\n        key={componentKey}\n        onChange={handleInputChange}\n        {...props}\n      />\n    </div>\n  );\n}\n","import React, { useState } from \"react\";\nimport FullPaymentForm from \"components/payments/FullPaymentForm\";\nimport StripeForm from \"components/payments/StripeForm\";\n\nexport default function (props) {\n  /* eslint-disable no-unused-vars */\n  const [paypalActions, setPaypalActions] = useState({});\n  /* eslint-enable no-unused-vars */\n  const paypalHandlers = {\n    // example of getting paypal actions into parent component.\n    validate: (actions) => {\n      setPaypalActions(actions);\n    },\n    onClick: () => {},\n    payment: () => {},\n    onAuthorize: () => {},\n    onCancel: () => {},\n    onError: () => {},\n  };\n\n  const stripeHandlers = {\n    onSuccess: () => {},\n    onError: () => {},\n  };\n  return (\n    <>\n      <div className=\"row\">\n        <h2>Full Payment Form</h2>\n        <FullPaymentForm\n          paypalHandlers={paypalHandlers}\n          paypalEnvironment=\"sandbox\"\n          subscriptionType=\"annual\"\n          setupIntentsPath={props.setupIntentsPath}\n          stripeReturnUrl=\"\"\n          stripeHandlers={stripeHandlers}\n        />\n      </div>\n      <div className=\"row\">\n        <h2>Payment Form without Paypal</h2>\n        <StripeForm\n          subscriptionType=\"annual\"\n          setupIntentsPath={props.setupIntentsPath}\n          stripeReturnUrl=\"\"\n          stripeHandlers={stripeHandlers}\n          formClass=\"payment-form\"\n        />\n      </div>\n    </>\n  );\n}\n","import React from \"react\";\nimport Tabs from \"components/shared/Tabs\";\n\nconst TabsDemo = () => {\n  const tabs = [\n    {\n      buttonText: \"left\",\n      component: (\n        <p style={{ padding: \"10px\" }}>Im the content for the left tab!</p>\n      ),\n    },\n    {\n      buttonText: \"right\",\n      component: (\n        <p style={{ padding: \"10px\" }}>Im the content for the right tab!</p>\n      ),\n    },\n  ];\n  return <Tabs tabs={tabs} />;\n};\n\nexport default TabsDemo;\n","import React from \"react\";\n\nimport { toastNotify } from \"helpers/toastNotify\";\n\nexport default function ToastDemo() {\n  const longString =\n    \"We are pleased to inform you that your Smart Toast 9000 (ST9000MkII) \" +\n    \"Toaster has encountered an unexpected error.\";\n\n  return (\n    <div>\n      <h3>General Notes</h3>\n      <div>\n        <p>\n          <code>toastNotify</code> is a wrapper around the toast function\n          provided by\n          <code>react-toastify</code>. It triggers an appearance of the{\" \"}\n          <code>Toaster</code>\n          component, from the same library.\n        </p>\n        <p>\n          Our wrapper serves two functions: first, it delays the firing of the\n          toast by 300ms for UX reasons alone (this could be converted to a\n          passed argument later if we so desire), and secondly it contains the\n          theme and styling changes we require.\n        </p>\n        <p>\n          Simply pass in your content as a first argument and any extra content\n          as a second argument, optionally. The additional content will be\n          displayed to the right of the primary content. If Toasters do not\n          appear, perhaps the <code>Toaster</code> component is not rendered in\n          the layout or view you are working within.\n        </p>\n      </div>\n      <div>\n        <h3>Saving</h3>\n        <code>toastNotify(&apos;Saving&apos;)</code>\n        <button\n          type=\"button\"\n          onClick={() => {\n            toastNotify(\"Saving...\");\n          }}\n        >\n          Click Me.\n        </button>\n      </div>\n\n      <div>\n        <h3>Saved</h3>\n        <div>Second argument is url to link to:</div>\n        <code>\n          toastNotify(&apos;Guide saved&apos;, &lt;a href=&apos;/&apos;&gt;View\n          all&lt;/a&gt;)\n        </code>\n        <button\n          type=\"button\"\n          onClick={() => {\n            toastNotify(\"Guide saved\", <a href=\"/\">View all</a>);\n          }}\n        >\n          Click Me.\n        </button>\n      </div>\n\n      <div>\n        <h3>Failed to save.</h3>\n        <code>\n          toastNotify(&apos;Guide failed to save. Please try again.&apos;)\n        </code>\n        <button\n          type=\"button\"\n          onClick={() => {\n            toastNotify(\"Guide failed to save. Please try again.\");\n          }}\n        >\n          Click Me.\n        </button>\n      </div>\n\n      <div>\n        <h3>Failed to remove</h3>\n        <code>\n          toastNotify(&apos;Guide failed to remove. Please try again.&apos;)\n        </code>\n        <button\n          type=\"button\"\n          onClick={() => {\n            toastNotify(\"Guide failed to remove. Please try again.\");\n          }}\n        >\n          Click Me.\n        </button>\n      </div>\n\n      <div>\n        <h3>Long Text</h3>\n        <code>toastNotify(&apos;{longString}&apos;)</code>\n        <button\n          type=\"button\"\n          onClick={() => {\n            toastNotify(longString);\n          }}\n        >\n          Click Me.\n        </button>\n      </div>\n    </div>\n  );\n}\n","import React, { useState } from \"react\";\nimport Toggle from \"../Toggle\";\nimport PlanToggle from \"../PlanToggle\";\n\nconst ToggleDemo = () => {\n  const [alignment, setAlignment] = useState(\"right\");\n  const [selectedPlan, setSelectedPlan] = useState(\"monthly\");\n\n  const handleToggle = () => {\n    setAlignment((prevAlignment) =>\n      prevAlignment === \"right\" ? \"left\" : \"right\"\n    );\n  };\n\n  const handlePlanToggle = () => {\n    setSelectedPlan((prevPlan) =>\n      prevPlan === \"monthly\" ? \"annual\" : \"monthly\"\n    );\n  };\n\n  return (\n    <div className=\"app\">\n      <h1>Toggle Demo</h1>\n      <Toggle onToggle={handleToggle} alignment={alignment} />\n\n      <h1>Plan Toggle Demo</h1>\n      <PlanToggle onToggle={handlePlanToggle} selectedPlan={selectedPlan} />\n    </div>\n  );\n};\n\nexport default ToggleDemo;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass APlusDialog extends React.Component {\n  static defaultProps = {\n    // By default just hides the html parent, prefer to pass a handleClose if rendering from another react component\n    handleClose: (e) =>\n      $(e.target)\n        .closest('div[data-react-class=\"shared/dialogs/APlus\"]')\n        .hide(),\n    shouldRenderCloseBtn: false,\n  };\n\n  static propTypes = {\n    isFreeTier: PropTypes.bool.isRequired,\n    amplitudeKey: PropTypes.string,\n    content: PropTypes.string,\n    linkClasses: PropTypes.string,\n    handleClose: PropTypes.func,\n    href: PropTypes.string.isRequired,\n    shouldRenderCloseBtn: PropTypes.bool,\n  };\n\n  renderCloseBtn() {\n    if (!this.props.shouldRenderCloseBtn) {\n      return null;\n    }\n\n    return (\n      <div className=\"a-plus-dialog__close-btn-container\">\n        <button\n          aria-label=\"Close\"\n          className=\"btn btn-sm btn-borderless\"\n          onClick={this.props.handleClose}\n          type=\"button\"\n        >\n          <span\n            className=\"lc-icon lc-icon-sm lc-icon-close\"\n            aria-hidden=\"true\"\n          />\n        </button>\n      </div>\n    );\n  }\n\n  renderContent() {\n    if (this.props.content) {\n      return (\n        <p\n          className=\"a-plus-dialog__content\"\n          dangerouslySetInnerHTML={{ __html: this.props.content }}\n        />\n      );\n    }\n    if (this.props.children) {\n      return (\n        <div className=\"a-plus-dialog__content\">{this.props.children}</div>\n      );\n    }\n    return <p className=\"a-plus-dialog__content\" />;\n  }\n\n  render() {\n    return (\n      <div className=\"a-plus-dialog a-plus-dialog--normal\">\n        {this.renderCloseBtn()}\n        <div className=\"a-plus-dialog__header text-center\">\n          <img\n            alt=\"LitCharts Logo\"\n            className=\"brand\"\n            src={this.props.logoSrc}\n          />\n        </div>\n        <div className=\"a-plus-dialog__body subtitle-1 text-center\">\n          {this.renderContent()}\n          <p>Plus so much more...</p>\n          <a\n            {...(this.props.amplitudeKey && {\n              \"data-amplitude\": this.props.amplitudeKey,\n            })}\n            className={`a-plus-dialog__subscribe btn btn-a-plus btn-lg btn--icon-left ${\n              this.props.linkClasses || \"\"\n            }`}\n            href={this.props.href}\n          >\n            <i className=\"lc-icon lc-icon-sm lc-icon-lock-filled\" />\n            Get LitCharts A<sup>+</sup>\n          </a>\n        </div>\n        {!this.props.isFreeTier && (\n          <div className=\"a-plus-dialog__footer subtitle-2 text-left\">\n            <div className=\"a-plus-dialog__sign-in\">\n              <span className=\"a-plus-dialog__sign-in--text\">\n                Already a LitCharts A<sup>+</sup> member?\n              </span>\n              <a href=\"/sign-in\">Sign in!</a>\n            </div>\n          </div>\n        )}\n      </div>\n    );\n  }\n}\n\nexport default APlusDialog;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass MiniAPlus extends React.Component {\n  static defaultProps = {\n    // By default just hides the html parent, prefer to pass a handleClose if rendering from another react component\n    handleClose: (e) =>\n      $(e.target)\n        .closest('div[data-react-class=\"shared/dialogs/APlus\"]')\n        .hide(),\n    shouldRenderCloseBtn: false,\n  };\n\n  static propTypes = {\n    content: PropTypes.string,\n    linkClasses: PropTypes.string,\n    handleClose: PropTypes.func,\n    href: PropTypes.string.isRequired,\n    shouldRenderCloseBtn: PropTypes.bool,\n    userSignedIn: PropTypes.bool.isRequired,\n  };\n\n  renderCloseBtn() {\n    if (!this.props.shouldRenderCloseBtn) {\n      return null;\n    }\n\n    return (\n      <button\n        aria-label=\"Close\"\n        className=\"btn btn-sm btn-borderless a-plus-dialog__close-btn\"\n        onClick={this.props.handleClose}\n        type=\"button\"\n      >\n        <span className=\"lc-icon lc-icon-xs lc-icon-close\" aria-hidden=\"true\" />\n      </button>\n    );\n  }\n\n  renderContent() {\n    if (this.props.content) {\n      return (\n        <p\n          className=\"a-plus-dialog__content\"\n          dangerouslySetInnerHTML={{ __html: this.props.content }}\n        />\n      );\n    }\n    if (this.props.children) {\n      return <p className=\"a-plus-dialog__content\">{this.props.children}</p>;\n    }\n    return <p className=\"a-plus-dialog__content\" />;\n  }\n\n  render() {\n    return (\n      <div className=\"a-plus-dialog a-plus-dialog--mini\">\n        {this.renderCloseBtn()}\n        <div className=\"a-plus-dialog__header text-center\">\n          <img\n            alt=\"LitCharts Logo\"\n            className=\"brand\"\n            src={this.props.logoSrc}\n          />\n        </div>\n        <div className=\"a-plus-dialog__body subtitle-1 text-center\">\n          {this.renderContent()}\n          <a\n            data-amplitude=\"advancedSearchFilterAccess\"\n            className={`a-plus-dialog__subscribe btn btn-a-plus btn-md btn--icon-left ${\n              this.props.linkClasses || \"\"\n            }`}\n            href={this.props.href}\n          >\n            <i className=\"lc-icon lc-icon-sm lc-icon-lock-filled\" />\n            Get LitCharts A<sup>+</sup>\n          </a>\n        </div>\n        {!this.props.userSignedIn && (\n          <div className=\"a-plus-dialog__footer subtitle-2 text-center\">\n            <div className=\"a-plus-dialog__sign-in\">\n              or <a href=\"/sign-in\">sign in</a>\n            </div>\n          </div>\n        )}\n      </div>\n    );\n  }\n}\n\nexport default MiniAPlus;\n","import { useEffect } from \"react\";\n\n/**\n * Hook that invokes callback when clicked outside the ref\n */\nexport default function useClickOutsideElement(ref, callback) {\n  useEffect(() => {\n    /**\n     * Invoke callback if clicked on outside of element\n     */\n    function handleClickOutside(event) {\n      if (ref.current && !ref.current.contains(event.target)) {\n        callback();\n      }\n    }\n    // Bind the event listener\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      // Unbind the event listener on clean up\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [ref]);\n}\n","import React from \"react\";\n\nexport default function Ellipses() {\n  return (\n    <div className=\"ellipses-loader\">\n      <div />\n      <div />\n      <div />\n    </div>\n  );\n}\n"],"names":["ChatArea","props","messages","scrollContainerRef","useRef","scrollHeightRef","pinScrollToBottom","useCallback","debounce","container","current","length","newScrollHeight","scrollHeight","scrollTo","top","behavior","useEffect","React","className","ref","map","message","ChatBubble","propTypes","PropTypes","ChatBubblePropTypes","defaultProps","DEFAULT_STATE","LOADING_STATE","STREAMING_STATE","SERVER_VARIANT","USER_VARIANT","VARIANTS","STATES","children","cursorAsSpan","slideUp","streamState","variant","userBubbleConfig","attrs","_objectSpread","serverBubbleConfig","_useState2","_slicedToArray","useState","travelDistance","setTravelDistance","bubbleRef","useLayoutEffect","parentElement","currentElement","parentHeight","elementBottom","offsetTop","offsetHeight","animationKeyframes","toString","spring","bottom","concat","stiffness","damping","AnimatedDiv","styled","div","_templateObject","_taggedTemplateLiteral","keyframes","_templateObject2","classnames","Ellipses","_React$Component","AlphabeticalFilterSelect","_classCallCheck","_callSuper","arguments","_inherits","key","value","filter","$alphabeticalFilters","$","selector","data","$filterEntries","find","addClass","removeAttr","attr","removeClass","css","each","index","this","_i","element","option","updateFilter","toLowerCase","_this","Select","_extends","name","id","placeholder","onChange","_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","Array","isArray","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","from","test","_unsupportedIterableToArray","_nonIterableRest","getSuggestionValue","suggestion","text","renderSuggestion","handleChange","isRequired","labelText","onSuggestionSelect","suggestionUrl","AutocompleteInput","suggestions","setSuggestions","loadSuggestions","_ref","_callee","val","results","_context","get","apply","_next","_throw","_x","Autosuggest","onSuggestionsFetchRequested","_ref2","onSuggestionsClearRequested","onSuggestionSelected","_ref3","renderInputComponent","inputProps","LabelContainer","letter","Avatar","tabIndex","role","BookmarksPopover","isVisible","setIsVisible","popoverRef","createRef","dismiss","Popover","arrowX","containerClass","onClick","months","shortMonths","CiteThisPage","initialType","howToCite","state","selectedType","selectedValue","getHowToCiteWithCurrentDate","setState","date","Date","day","getDate","month","getMonth","year","getFullYear","regex","replacementStr","citable","replace","strippedCitable","_this2","copyStatus","$textarea","_textarea","show","focus","select","document","execCommand","blur","hide","_btn","$copyText","_copyText","delay","fadeOut","_this3","options","helpers","k","label","title","dangerouslySetInnerHTML","__html","textarea","readOnly","copyCitation","copyText","CiteThisQuoteBtn","modalVisible","CiteThisQuoteModal","onHidden","url","renderCiteThisQuoteModal","CitationGroup","_createClass","clearTimeout","copyStatusTimeout","setTimeout","_this$props","heading","html","el","style","display","_React$Component2","_this4","loaded","_this5","ajax","formatIndex","formats","fail","alert","_this6","citations","renderCitationGroup","_this7","_this$state","marginBottom","_label","renderFormat","Footer","Modal","modalId","footer","showOnMount","renderContent","ControlledCheckbox","inputId","bind","checked","noLabel","htmlFor","prevState","disabled","renderLabel","Countdown","endsAt","remainder","update","setInterval","duration","diff","getTime","days","hours","minutes","seconds","Math","floor","m","formatUnit","_this$state$remainder","Expandable","_element","isExpanded","defaultIsExpanded","toggleExpand","expandableClassName","camelize","collection","transform","acc","target","camelCase","isObject","viewOptions","grid","list","sortOptions","author","recent","sortOrders","asc","desc","filterOptions","all","number","queryParamKeys","viewOption","sortOption","filterOption","sortOrder","defaultViewOption","defaultSortOption","defaultSortOrder","defaultFilterOption","typesOfWork","friendlyTypesOfWork","selectors","BACK_TO_TOP","BACK_TO_TOP_HIDDEN","CONTROLS","GLOBAL_FOOTER","GROUP","GROUPS_GRID","GROUPS_LIST","GUIDE","LIT_CARD","MAIN","MAIN_CONTROLS_FIXED","controlsOffset","getFriendlyTypeOfWork","typeOfWork","getOptionsFromQueryParams","param","GuideList","fetchPath","userSignedIn","queryParams","setViewOption","_useState4","setSortOption","_useState6","setSortOrder","_useState8","setFilterOption","_useState10","page","setPage","_useState12","guides","setGuides","_useState14","totalCount","setTotalCount","displayCount","queryParamOptions","mainRef","getFallbackAuthorName","guide","authorLastName","authorName","sortAuthorFn","b","aSortValue","bSortValue","groups","useMemo","grouped","group","isNumber","sortableTitle","toUpperCase","sortBy","newGroups","sort","fetchGuides","URLSearchParams","fetch","headers","Accept","response","json","camelizedGuides","newGuides","_toConsumableArray","total_count","toastNotify","onScroll","main","querySelector","getScrollPosition","classList","remove","substring","add","toggleControlsFixedToTop","subscribe","unsubscribe","params","capitalizeFirstLetter","litCards","randomizeBackgrounds","scrollToTop","GuideListViewControl","onSetViewOption","viewOptionSelected","GuideListSortControl","onSetSortOption","sortOptionSelected","click","undefined","order","GuideListAlphabeticalFilterControl","baseFilterOptions","onSetFilterOption","filterOptionSelected","GuidesAsList","GuidesAsGrid","Icon","size","href","slug","LitCard","bookmarkId","selectInputTextPrefix","split","selectedFilterOption","setSelectedFilterOption","filterOptionFromQP","baseClassName","containerClassName","isControlled","components","SingleValue","_objectWithoutProperties","_excluded","Placeholder","_excluded2","_excluded3","_ref4","_excluded4","sortOptionLabels","sortOptionFromQP","selectSortOptions","sortOptionIsTitle","sortOptionIsAuthor","sortOptionIsRecent","width","selectProps","IndicatorSeparator","viewOptionFromQP","viewOptionIsList","viewOptionIsGrid","Loader","litTerm","showPath","keyExamplesCount","isMulti","logoUrl","showAfterDelay","successMessage","categoryOptionsLarge","categoryOptionsSmall","Title","src","alt","initialFormState","RequestContentModal","canSubmit","setCanSubmit","category","setCategory","formState","setFormState","showError","setShowError","submitted","setSubmitted","coveredResource","setCoveredResource","requested_book","author_name","requested_poetry_guide","resetForm","onSubmit","form","preventDefault","contact_inquiry","status","votes","rank","afterSubmit","onInputChange","_defineProperty","inputs","requests","Input","inputClass","InputComponent","poetry_guide_requests","requestedFieldNames","submittedViews","success","dupe_request","approved_request_exists","unapproved_request_exists","already_covered","backdropStatic","ResponsiveSelect","inputName","largeSelectOptions","selectedCategory","smallSelectOptions","newValue","inputValue","setInputValue","onChangeValue","hidden","defaultValue","SSRDemo","statusColor","setStatusColor","heavyComputation","result","sqrt","TextToggle","onToggle","alignment","leftContent","rightContent","selectedAlignment","setSelectedAlignment","toggle","RIGHT","LEFT","onKeyPress","event","handleKeyPress","selected","ALIGNMENT_TYPES","fullName","biography","WriterBio","_text","hasOverflow","bioText","_e","photoS3Url","toggleText","onTextToggle","demoContainerStyles","height","demoFormStyles","gap","ChatAreaDemo","setMessages","currentMessage","setCurrentMessage","setStreamState","inputRef","handleClick","newMessage","newMessages","colors","ColorsDemo","color","ColorDisplay","alignItems","textAreaStyles","InputTextCounterDemo","min","max","setProps","componentKey","setComponentKey","JSON","stringify","displayedProps","setDisplayedProps","textAreaRef","parse","InputTextCounter","newDisplayedProps","setPaypalActions","paypalHandlers","validate","actions","payment","onAuthorize","onCancel","onError","stripeHandlers","onSuccess","FullPaymentForm","paypalEnvironment","subscriptionType","setupIntentsPath","stripeReturnUrl","StripeForm","formClass","tabs","buttonText","component","padding","Tabs","ToastDemo","longString","setAlignment","selectedPlan","setSelectedPlan","Toggle","prevAlignment","PlanToggle","prevPlan","APlusDialog","shouldRenderCloseBtn","handleClose","content","renderCloseBtn","logoSrc","amplitudeKey","linkClasses","isFreeTier","closest","MiniAPlus","useClickOutsideElement","callback","handleClickOutside","contains","addEventListener","removeEventListener"],"sourceRoot":""}