{"version":3,"file":"js/218-9752b28e7d5a2fa991c4.js","mappings":"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","sources":["webpack://lc3/./app/javascript/helpers/array.js","webpack://lc3/./app/javascript/helpers/dom.js","webpack://lc3/./app/javascript/helpers/object.js","webpack://lc3/./app/javascript/helpers/base.js","webpack://lc3/./app/javascript/lib/poetry/line_mapper.js","webpack://lc3/./app/javascript/views/ sync ^\\.\\/.*$","webpack://lc3/./app/javascript/channels/consumer.js","webpack://lc3/./app/javascript/components/sell/VariantCountrySelect.jsx","webpack://lc3/./app/javascript/components/shared/AppBanner.jsx","webpack://lc3/./app/javascript/components/shared/Banner.jsx","webpack://lc3/./app/javascript/components/shared/BirthdayInput.jsx","webpack://lc3/./app/javascript/components/shared/Checkbox.jsx","webpack://lc3/./app/javascript/components/shared/FacebookLoginButton.jsx","webpack://lc3/./app/javascript/components/shared/GoogleAuthButton.jsx","webpack://lc3/./app/javascript/components/shared/IconButton.jsx","webpack://lc3/./app/javascript/components/shared/Input.jsx","webpack://lc3/./app/javascript/components/shared/InputErrorMessage.jsx","webpack://lc3/./app/javascript/components/shared/InputInfoMessage.jsx","webpack://lc3/./app/javascript/components/shared/InputTextCounter.jsx","webpack://lc3/./app/javascript/components/shared/Label.jsx","webpack://lc3/./app/javascript/components/shared/LabelContainer.jsx","webpack://lc3/./app/javascript/components/shared/Loader.jsx","webpack://lc3/./app/javascript/components/shared/Modal.jsx","webpack://lc3/./app/javascript/components/shared/ReactSelectOption.jsx","webpack://lc3/./app/javascript/components/shared/RequiredText.jsx","webpack://lc3/./app/javascript/components/shared/Select.jsx","webpack://lc3/./app/javascript/components/shared/Toaster.jsx","webpack://lc3/./app/javascript/components/shared/dialogs/CookieOptIn.jsx","webpack://lc3/./app/javascript/constants/breakpoints.js","webpack://lc3/./app/javascript/constants/poetry/poems/show/selectors.js","webpack://lc3/./app/javascript/helpers/number.js","webpack://lc3/./app/javascript/helpers/pubsub.js","webpack://lc3/./app/javascript/helpers/string.js","webpack://lc3/./app/javascript/initializers/view.js","webpack://lc3/./app/javascript/lib/shared/events.js","webpack://lc3/./app/javascript/lib/shared/oauth2.js","webpack://lc3/./app/javascript/lib/shared/packs.js","webpack://lc3/./app/javascript/lib/shared/rails_ujs_extensions.js","webpack://lc3/./app/javascript/lib/shared/view.js","webpack://lc3/./app/javascript/views/admin/collections/edit.js","webpack://lc3/./app/javascript/views/admin/collections/index.js","webpack://lc3/./app/javascript/channels/discussion_questions_channel.js","webpack://lc3/./app/javascript/views/admin/open_ai_prototypes/discussion_questions/show.js","webpack://lc3/./app/javascript/channels/essay_prompts_channel.js","webpack://lc3/./app/javascript/views/admin/open_ai_prototypes/essay_prompts/show.js","webpack://lc3/./app/javascript/channels/q_and_ai_channel.js","webpack://lc3/./app/javascript/views/admin/open_ai_prototypes/q_and_ai/show.js","webpack://lc3/./app/javascript/channels/quiz_questions_channel.js","webpack://lc3/./app/javascript/views/admin/open_ai_prototypes/quiz_generator/show.js","webpack://lc3/./app/javascript/views/admin/poetry/poems/preview.js","webpack://lc3/./app/javascript/helpers/AsyncQueue.js","webpack://lc3/./app/javascript/views/admin/requests/index.js","webpack://lc3/./app/javascript/views/home/index.js","webpack://lc3/./app/javascript/views/literary_devices/show.js","webpack://lc3/./app/javascript/views/poetry/authors/show.js","webpack://lc3/./app/javascript/views/poetry/poems/show.js","webpack://lc3/./app/javascript/views/quotes/index.js","webpack://lc3/./app/javascript/views/registrations/new.js","webpack://lc3/./app/javascript/views/search/index.js","webpack://lc3/./app/javascript/views/shared/header/base.js","webpack://lc3/./app/javascript/views/shared/help_on_demand/promo.js","webpack://lc3/./app/javascript/views/shared/litCards.js"],"sourcesContent":["export default {\n  // remove an element from an array\n  remove(array, element) {\n    for (let i = 0; i < array.length; i++) {\n      if (array[i] === element) {\n        array.splice(i, 1);\n        return element;\n      }\n    }\n  },\n\n  // get a new array with a number of elements removed\n  without(array, elements) {\n    const arrayElements = this.wrap(elements);\n    const newArray = [];\n    for (let i = 0; i < array.length; i++) {\n      if (!arrayElements.includes(array[i])) {\n        newArray.push(array[i]);\n      }\n    }\n    return newArray;\n  },\n\n  // wraps an object in an array, or returns it if it already is an array\n  wrap(elementOrArray) {\n    if (Array.isArray(elementOrArray)) {\n      return elementOrArray;\n    }\n    return [elementOrArray];\n  },\n\n  // removes all null or undefined elements from an array\n  compact(array) {\n    return array.filter((element) => element !== undefined && element !== null);\n  },\n\n  // call a function on each element in an array\n  each(array, callback) {\n    for (let i = 0; i < array.length; i++) {\n      const element = array[i];\n      callback(element);\n    }\n  },\n\n  // call a function on each group of n elements in an array\n  eachByN(array, n, callback) {\n    for (let i = 0; i < Math.ceil(array.length / n); i++) {\n      const set = array.slice(i * n, i * n + n);\n      callback(set);\n    }\n  },\n\n  // shuffle an array, via https://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array\n  shuffle(a) {\n    const shuffledArray = [...a];\n    for (let i = shuffledArray.length - 1; i > 0; i--) {\n      const j = Math.floor(Math.random() * (i + 1));\n      [shuffledArray[i], shuffledArray[j]] = [\n        shuffledArray[j],\n        shuffledArray[i],\n      ];\n    }\n    return shuffledArray;\n  },\n\n  // get the last n elements of an array\n  last(array, n = 1) {\n    if (!array || !array.length) {\n      return null;\n    }\n    if (n === 1) {\n      return array[array.length - 1];\n    }\n    return array.slice(Math.max(array.length - n, 0));\n  },\n\n  // collapse an array of arrays into a single array\n  flatten(arrays) {\n    return [].concat(...arrays);\n  },\n\n  // get a new array with all nondistinct elements removed\n  unique(array) {\n    const newArray = [];\n    this.each(array, (element) => {\n      if (!newArray.includes(element)) {\n        newArray.push(element);\n      }\n    });\n    return newArray;\n  },\n\n  // discern whether or not the array is empty\n  isEmpty(array) {\n    return array === undefined || array.length === 0;\n  },\n\n  // get a single element from an array based on a property value\n  findBy(array, property, value) {\n    for (let i = 0; i < array.length; i++) {\n      const element = array[i];\n      if (value === undefined) {\n        if (element[property]) {\n          return element;\n        }\n      } else if (element[property] === value) {\n        return element;\n      }\n    }\n    return null;\n  },\n\n  // sort an array based on a property value\n  sortBy(array, properties, asc = true) {\n    const sortProperties = this.wrap(properties);\n    const newArray = array.sort((a, b) => {\n      for (let i = 0; i < sortProperties.length; i++) {\n        const property = sortProperties[i];\n        if (a[property] < b[property]) {\n          return -1;\n        }\n        if (a[property] > b[property]) {\n          return 1;\n        }\n      }\n      return 0;\n    });\n    if (!asc) {\n      return newArray.reverse();\n    }\n    return newArray;\n  },\n\n  // discern whether or not an array is a subset of another array\n  isSubset(subset, superset) {\n    return subset.every((element) => superset.includes(element));\n  },\n\n  // returns array1 - array2\n  difference(array1, array2) {\n    const array = [];\n    for (let i = 0; i < array1.length; i++) {\n      if (!array2.includes(array1[i])) {\n        array.push(array1[i]);\n      }\n    }\n    return array;\n  },\n\n  // get a random subset of N elements from an array\n  // singularized if N = 1\n  sample(array, n = 1) {\n    const l = array.length;\n    const m = Math.min(n, l); // can only take up to l elements from an l-sized array\n    const results = [];\n    const taken = [];\n\n    while (results.length < m) {\n      const i = Math.floor(Math.random() * l);\n      if (!taken.includes(i)) {\n        results.push(array[i]);\n        taken.push(i);\n      }\n    }\n\n    return results.length === 1 ? results[0] : results;\n  },\n\n  // returns an object grouping objects by a value determined by the callback\n  group(array, callback) {\n    return array.reduce((acc, element) => {\n      const key = callback(element);\n      (acc[key] = acc[key] || []).push(element);\n      return acc;\n    }, {});\n  },\n\n  // returns an object grouping objects by the value of the given key\n  groupBy(array, key) {\n    return array.reduce((acc, element) => {\n      (acc[element[key]] = acc[element[key]] || []).push(element);\n      return acc;\n    }, {});\n  },\n\n  // populates an array of size n with the return value of the callback\n  populate(n, callback) {\n    const array = Array(n);\n    for (let i = 0; i < n; i++) {\n      array[i] = callback(i);\n    }\n    return array;\n  },\n};\n","export default {\n  isElementVisible(element) {\n    if (\n      element.offsetWidth ||\n      element.offsetHeight ||\n      element.getClientRects().length\n    ) {\n      return true;\n    }\n    return false;\n  },\n\n  scrollTo(element, offset = {}) {\n    window.scrollTo({\n      top: element.offsetTop + (offset.y || 0),\n      left: offset.x || 0,\n      behavior: \"smooth\",\n    });\n  },\n\n  getScrollPosition() {\n    const element = document.documentElement;\n    const top =\n      (window.pageYOffset || element.scrollTop) - (element.clientTop || 0);\n    const left =\n      (window.pageXOffset || element.scrollLeft) - (element.clientLeft || 0);\n\n    return { top, left };\n  },\n};\n","export default {\n  // call a function on each key, value pair in the object\n  each(obj, fn) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n      const value = obj[keys[i]];\n      fn(keys[i], value);\n    }\n  },\n\n  // create an array from a function call on each key, value pair in the object\n  map(obj, fn) {\n    const array = [];\n    this.each(obj, (key, value) => {\n      array.push(fn(key, value));\n    });\n    return array;\n  },\n\n  // access a nested property on an object safely\n  dig(obj, key) {\n    if (!obj || !key) {\n      return null;\n    }\n    const props = key.split(\".\");\n    if (!(typeof obj === \"object\")) {\n      return null;\n    }\n    if (props.length === 1) {\n      return obj[props[0]];\n    }\n    return this.dig(obj[props[0]], props.slice(1).join(\".\"));\n  },\n\n  // obj1 - obj2\n  difference(obj1, obj2) {\n    const delta = {};\n    this.each(obj1, (key, value) => {\n      if (obj2[key] !== value) {\n        delta[key] = value;\n      }\n    });\n    return delta;\n  },\n\n  isEmpty(obj) {\n    return Object.keys(obj).length === 0;\n  },\n};\n","import array from \"helpers/array\";\nimport dom from \"helpers/dom\";\nimport object from \"helpers/object\";\nimport string from \"helpers/string\";\nimport number from \"helpers/number\";\n\nconst MAX_MOBILE_WIDTH = 992;\n\nexport default {\n  array,\n  dom,\n  object,\n  string,\n  number,\n\n  isMobile() {\n    return this.getViewportWidth() < MAX_MOBILE_WIDTH;\n  },\n\n  isMobileAgent() {\n    return /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent);\n  },\n\n  getViewportHeight() {\n    return this.getViewportDimensions().height;\n  },\n\n  getViewportWidth() {\n    return this.getViewportDimensions().width;\n  },\n\n  getViewportDimensions() {\n    return {\n      height: Math.max(\n        document.documentElement.clientHeight,\n        window.innerHeight || 0\n      ),\n      width: Math.max(\n        document.documentElement.clientWidth,\n        window.innerWidth || 0\n      ),\n    };\n  },\n\n  getCssTransformValue($element, property) {\n    let index = 0;\n    switch (property) {\n      case \"scaleX\":\n        index = 0;\n        break;\n      case \"skewY\":\n        index = 1;\n        break;\n      case \"skewX\":\n        index = 2;\n        break;\n      case \"scaleY\":\n        index = 3;\n        break;\n      case \"translateX\":\n        index = 4;\n        break;\n      case \"translateY\":\n        index = 5;\n        break;\n      default:\n        break;\n    }\n    let str = $element.css(\"transform\").split(\",\")[index]; // get corresponding translation value\n    str = str.replace(/[^\\d.-]/g, \"\"); // remove all non-numeric\n    return parseInt(str);\n  },\n\n  isLocalhost() {\n    return window.location.hostname === \"localhost\";\n  },\n\n  isSignedIn() {\n    return !!$(\"html.signed-in\").length;\n  },\n\n  isSubscribed() {\n    return !!$(\"html.subscribed\").length;\n  },\n\n  userIAmA() {\n    return $(\"html\").attr(\"data-i-am-a\");\n  },\n\n  userType() {\n    if (!this.isSignedIn()) {\n      return \"anonymous\";\n    }\n    return this.isSubscribed() ? \"a plus subscriber\" : \"free tier user\";\n  },\n\n  showDebug() {\n    return $(\"html\").attr(\"data-environment\") === \"development\";\n  },\n\n  hasFunction(obj, fn) {\n    return this.isFunction(obj[fn]);\n  },\n\n  isFunction(fn) {\n    return typeof fn === \"function\";\n  },\n\n  getCurrentTimeInMs() {\n    return new Date().getTime().toString();\n  },\n\n  generateRandomUuid() {\n    return (\n      Math.random().toString(36).substring(2, 15) +\n      Math.random().toString(36).substring(2, 15)\n    );\n  },\n\n  generateComponentUuid(componentType) {\n    let id = this.generateRandomUuid();\n    const $others = $(`#${componentType}-${id}`); // i.e. #lc-checkbox-33jf292jfd34\n    while ($others.length) {\n      id = this.generateRandomUuid();\n    }\n    return `${componentType}-${id}`;\n  },\n\n  // see https://stackoverflow.com/questions/10730362/get-cookie-by-name\n  cookie(key) {\n    const value = `; ${document.cookie}`;\n    const parts = value.split(`; ${key}=`);\n    if (parts.length === 2) return parts.pop().split(\";\").shift();\n  },\n\n  getQueryParams() {\n    const { search } = window.location;\n    if (search === \"\") {\n      return {};\n    }\n    const params = search.slice(1).split(\"&\");\n    const qp = {};\n    this.array.each(params, (param) => {\n      const paramName = param.split(\"=\")[0];\n      const paramValue = param.split(\"=\")[1];\n      qp[paramName] = paramValue;\n    });\n\n    return qp;\n  },\n\n  getQueryParam(param) {\n    return this.getQueryParams()[param];\n  },\n\n  hasQueryParam(param) {\n    return param in this.getQueryParams();\n  },\n\n  updateQueryParams(keyValuePairs) {\n    const newParams = [];\n    this.object.each(keyValuePairs, (key, value) => {\n      newParams.push(`${key}=${value}`);\n    });\n    const paramString = newParams.join(\"&\");\n    const url =\n      window.location.origin +\n      window.location.pathname +\n      (newParams.length === 0 ? \"\" : \"?\") +\n      paramString;\n    window.history.pushState({}, \"\", url);\n  },\n\n  chosenAddOptions($select, options) {\n    const wrappedOptions = this.array.wrap(options);\n    this.array.each(wrappedOptions, (option) => {\n      let html = \"<option value='\";\n      html += option.value;\n      html += \"'>\";\n      html += option.text;\n      html += \"</option>\";\n      $select.append(html);\n    });\n    $select.trigger(\"chosen:updated\");\n  },\n\n  chosenSelectOptions($select, options) {\n    const wrappedOptions = this.array.wrap(options);\n    $select.children(\"option:selected\").prop(\"selected\", null);\n    $select.children(\"option:selected\").removeAttr(\"selected\");\n    this.array.each(wrappedOptions, (option) => {\n      const $option = $select.children(`option[value='${option}']`);\n      $option.prop(\"selected\", \"selected\");\n      $option.attr(\"selected\", \"selected\");\n    });\n    $select.trigger(\"chosen:updated\");\n  },\n\n  // requires all files in a directory from a webpack context function\n  requireAll(context) {\n    const views = [];\n    context.keys().forEach((key) => {\n      views.push(context(key));\n    });\n    return views;\n  },\n\n  // Repeat a function n times with a timeout. Have func return true to stop early\n  doNTimesWithTimeout(n, func, timeout) {\n    if (func()) {\n      return;\n    }\n\n    if (n <= 1) {\n      return;\n    }\n\n    setTimeout(() => {\n      this.doNTimesWithTimeout(n - 1, func, timeout);\n    }, timeout);\n  },\n\n  // manually set a global variable to ensure ajax requests are completed before proceeding\n  // primarily used by automated tests on script that involves multiple ajax calls in quick succession\n  setWaitForAjax() {\n    window.waitForAjax = true;\n  },\n\n  resetWaitForAjax(timeout = 2000) {\n    window.waitForAjax = false;\n    setTimeout(() => {\n      window.waitForAjax = null;\n    }, timeout);\n  },\n\n  getContextTypeAndTitle() {\n    const context = {};\n    if ($(\"html.books.show\").length) {\n      context.type = \"lit guide\";\n      context.title = $(\".book-component\").data(\"slug\");\n    } else if ($(\"html.books.index\").length) {\n      context.type = \"lit guides\";\n    } else if ($(\"html.poems.index\").length) {\n      context.type = \"poetry guides\";\n    } else if ($(\"html.poems.show\").length) {\n      context.type = \"poetry guide\";\n      context.title = $(\"#poems-show\").data(\"slug\");\n    } else if ($(\"html.lit-terms\").length) {\n      context.type = \"lit term\";\n      const titleIndex = 2;\n      context.title = window.location.pathname.split(\"/\")[titleIndex];\n    } else if ($(\"html.shakespeare-translations\").length) {\n      context.type = \"shakespeare translation\";\n      context.title = $(\".container.shakespeare\").data(\"translation\");\n    } else if ($(\"html.search\").length) {\n      context.type = \"search\";\n    } else if ($(\"html.home\").length) {\n      context.type = \"home\";\n    }\n    return context;\n  },\n};\n","import help from \"helpers/base\";\n\nexport default class PoetryLineMapper {\n  constructor(type, id, $originalContent, $targetContent, options = {}) {\n    this.type = type;\n    this.id = id;\n    this.$element = $(`[data-line-mapper='${id}']`);\n    this.$originalContent = $originalContent;\n    this.$targetContent = $targetContent;\n    this.contentApplierClass = this.getContentApplierClass();\n    this.contentApplierSelector = `.${this.contentApplierClass}`;\n    this.valueApplierClass = this.getValueApplierClass();\n    this.valueApplierSelector = `.${this.valueApplierClass}`;\n    this.mapClass = this.getMapClass();\n    this.mapSelector = `.${this.mapClass}`;\n    this.options = Object.assign(this.getDefaultOptions(), options);\n    this.isExpanded = false;\n\n    if (options.isExpanded) {\n      this.toggle();\n    }\n  }\n\n  getDefaultOptions() {\n    return {\n      colors: [\"1\", \"2\", \"3\", \"4\", \"5\"],\n      max: 999,\n    };\n  }\n\n  helper() {\n    if (typeof Lithelp === \"undefined\" || Lithelp === null) {\n      return help;\n    }\n\n    return Lithelp;\n  }\n\n  // toggle the line mapper's collapsed or expanded state\n  toggle() {\n    const $content = this.$element.find(\".line-mapping__content\");\n    const $toggle = this.$element.find(\"#line-mapping__toggle--main\");\n    const baseText = $toggle.data(\"base-text\");\n\n    $content.toggle();\n    this.isExpanded = !this.isExpanded;\n    if (this.isExpanded) {\n      $toggle.html(\n        `Hide ${baseText}<i class='fa fa-chevron-down tw-ml-2'></i>`\n      );\n    } else {\n      $toggle.html(`Show ${baseText}<i class='fa fa-chevron-up tw-ml-2'></i>`);\n    }\n  }\n\n  // apply class 'applierClass' to the current selection\n  highlightSelection() {\n    const selection = this.getSelection();\n    if (!selection.toString()) {\n      return;\n    }\n\n    const id = this.getNewLmId();\n    const selectionId = `selection-${this.getNewLmId()}`;\n    const colorId = this.selectedColorId || this.getNextColorId();\n    const attributes = { \"data-lm-id\": id };\n    if (this.type === \"highlight\") {\n      attributes[\"data-color\"] = colorId;\n    }\n    if (this.type === \"structure\") {\n      attributes[\"data-selection-id\"] = selectionId;\n    }\n\n    const contentApplier = rangy.createClassApplier(this.contentApplierClass, {\n      elementAttributes: attributes,\n      useExistingElements: false,\n    });\n\n    contentApplier.toggleSelection();\n    this.deselect();\n\n    if (this.getAllLineMapIds().length > this.options.max) {\n      this.remove(this.getOldestLineMapId());\n    }\n\n    if (this.options.afterHighlight) {\n      this.options.afterHighlight(id, this);\n    }\n  }\n\n  // create a line mapping between the current selection and the previous highlight\n  mapSelection() {\n    const selection = this.getTextEditorSelection();\n    if (!selection.toString()) {\n      return;\n    }\n\n    const id = this.getNewLmId();\n    const colorId = this.selectedColorId || this.getNextColorId();\n    const attributes = { \"data-lm-id\": id, \"data-color\": colorId };\n\n    const valueApplier = rangy.createClassApplier(this.valueApplierClass, {\n      elementAttributes: attributes,\n    });\n    valueApplier.toggleSelection(this.options.textEditor.getNativeWindow());\n\n    this.options.textEditor.deselect();\n    this.options.textEditor.didChange();\n\n    const $lineMaps = this.$originalContent.find(this.contentApplierSelector);\n    $lineMaps.each((i, element) => {\n      $(element).attr(attributes);\n      if (i === 0) {\n        $(element).attr(\"data-lm-fot\", \"\");\n      }\n      if (i === $lineMaps.length - 1) {\n        $(element).attr(\"data-lm-lot\", \"\");\n      }\n    });\n    $lineMaps.addClass(this.mapClass).removeClass(this.contentApplierClass);\n\n    if (this.options.afterMap) {\n      this.options.afterMap(id, this);\n    }\n  }\n\n  // remove line mappings by id\n  remove(ids) {\n    const that = this;\n    this.helper().array.each(this.helper().array.wrap(ids), (id) => {\n      const $lineMaps = that.$originalContent.find(`[data-lm-id='${id}']`);\n      $lineMaps.each((i, element) => {\n        $(element).replaceWith($(element).html());\n      });\n      that.removeLineMapping({ \"data-lm-id\": id });\n    });\n  }\n\n  selectColor(id) {\n    this.selectedColorId = id;\n  }\n\n  // generate a new line mapping id\n  getNewLmId() {\n    return this.helper().getCurrentTimeInMs(); // last 8 digits\n  }\n\n  // get the next color id based on the options.colors\n  getNextColorId() {\n    const newestId = this.getNewestLineMapId();\n    const $newest = this.$originalContent.find(\n      this.getSelectorForLineMapId(newestId)\n    );\n    const newestColor = $newest.data(\"color\");\n    const newestColorIndex = newestColor\n      ? this.options.colors.indexOf(newestColor.toString())\n      : -1;\n    const nextColorIndex = (newestColorIndex + 1) % this.options.colors.length;\n    return this.options.colors[nextColorIndex];\n  }\n\n  getContentApplierClass() {\n    return {\n      \"one-to-one\": \"poem-inline__lm--content-one-to-one-new\",\n      highlight: \"poem-inline__lm--content-highlight\",\n      structure: \"poem-inline__lm--content-structure-new\",\n      \"rhyme-scheme\": \"poem-inline__lm--content-rhyme-scheme-new\",\n    }[this.type];\n  }\n\n  getValueApplierClass() {\n    return {\n      \"one-to-one\": \"poem-inline__lm--value-one-to-one\",\n      structure: \"poem-inline__lm--value-structure\",\n      \"rhyme-scheme\": \"poem-inline__lm--value-rhyme-scheme\",\n    }[this.type];\n  }\n\n  getMapClass() {\n    return {\n      \"one-to-one\": \"poem-inline__lm--content-one-to-one\",\n      highlight: \"poem-inline__lm--content-highlight\",\n      structure: \"poem-inline__lm--content-structure\",\n      \"rhyme-scheme\": \"poem-inline__lm--content-rhyme-scheme\",\n    }[this.type];\n  }\n\n  // get current selection\n  getSelection() {\n    if (window.getSelection) {\n      return window.getSelection();\n    }\n    if (document.selection) {\n      return document.selection;\n    }\n    return null;\n  }\n\n  getTextEditorSelection() {\n    const w = this.options.textEditor.getNativeWindow();\n    return w.getSelection ? w.getSelection() : null;\n  }\n\n  getOldestLineMapId() {\n    return this.getAllLineMapIds().sort()[0];\n  }\n\n  getNewestLineMapId() {\n    return this.helper().array.last(this.getAllLineMapIds().sort());\n  }\n\n  // remove current selection\n  deselect() {\n    const selection = this.getSelection();\n    if (selection)\n      selection.empty ? selection.empty() : selection.removeAllRanges();\n  }\n\n  // apply line mapping style to the current selection in the text editor\n  applyLineMapping(attributes) {\n    if (!this.options.textEditor) {\n      throw new Error(\n        \"Can't apply line mapping: no textEditor option provided to PoetryLineMapper\"\n      );\n    }\n\n    const style = {\n      element: \"span\",\n      attributes: Object.assign(attributes, {\n        class: this.getValueApplierClass(),\n      }),\n    };\n    this.options.textEditor.createAndApplyStyle(style);\n  }\n\n  // remove line mapping from elements matching the provided attributes\n  removeLineMapping(attributes) {\n    if (!this.options.textEditor) {\n      throw new Error(\n        \"Can't remove line mapping: no textEditor option provided to PoetryLineMapper\"\n      );\n    }\n\n    const selector = this.helper()\n      .object.map(attributes, (name, value) => `[${name}='${value}']`)\n      .join(\"\");\n    const $lineMaps = this.$targetContent.find(selector);\n    $lineMaps.each((i, element) => {\n      $(element).replaceWith($(element).html());\n    });\n    this.options.textEditor.didChange();\n  }\n\n  createStructureMappingLine(id, color = null) {\n    const $lineMaps = this.$originalContent.find(`[data-lm-id='${id}']`);\n    // ignore line numbers\n    let lineMaps = $lineMaps\n      .filter(\n        (i) => !$($lineMaps[i]).parent().hasClass(\"poem-inline__line-number\")\n      )\n      .toArray();\n\n    lineMaps = $.uniqueSort(lineMaps);\n    let selectionIds = lineMaps.map((lineMap) =>\n      $(lineMap).data(\"selection-id\")\n    );\n    selectionIds = this.helper().array.unique(selectionIds);\n    const lineMapGroups = {};\n\n    this.helper().array.each(selectionIds, (selectionId) => {\n      if (selectionId) {\n        lineMapGroups[selectionId] = $(lineMaps).filter(\n          `[data-selection-id='${selectionId}']`\n        );\n      } else {\n        lineMapGroups[selectionId] = $(lineMaps).filter(\n          \":not([data-selection-id])\"\n        );\n      }\n    });\n\n    this.helper().object.each(lineMapGroups, (selectionId, lineMapGroup) => {\n      const colorId = color || $(lineMapGroup[0]).attr(\"data-color\");\n      const attrs = {\n        \"data-lm-id\": id,\n        \"data-color\": colorId,\n      };\n\n      const top =\n        $(lineMapGroup[0]).position().top + this.$originalContent[0].scrollTop;\n      const left = this.hasStructureMappingParent(id, selectionId) ? 12 : 0;\n      const last = $(lineMapGroup[lineMapGroup.length - 1]);\n      const height =\n        last.position().top + last.height() - $(lineMapGroup[0]).position().top;\n      const width = 8;\n\n      const $structureLine = $(\n        \"<div class='poem-inline__lm--structure-line'></div>\"\n      );\n      this.helper().object.each(attrs, (attr, val) => {\n        $structureLine.attr(attr, val);\n      });\n      $structureLine.css(\"position\", \"absolute\");\n      $structureLine.css(\"left\", left);\n      $structureLine.css(\"top\", top);\n      $structureLine.css(\"height\", `${height}px`);\n      $structureLine.css(\"width\", `${width}px`);\n\n      this.$originalContent.append($structureLine);\n    });\n  }\n\n  hasStructureMappingParent(lmId, selectionId = null) {\n    let correctedSelectionId = selectionId;\n    if (correctedSelectionId === \"undefined\") {\n      correctedSelectionId = null;\n    }\n    const that = this;\n    let ids = this.getAllLineMapIds();\n    const selectionIds = this.getAllSelectionIds();\n    // remove lm ids that have a selection id\n    ids = ids.filter((id) => {\n      const $lineMap = $(that.getSelectorForLineMapId(id));\n      return !$lineMap.attr(\"data-selection-id\");\n    });\n\n    const $lineMapsById = {};\n    const $selectionsById = {};\n\n    // object mapping lmids to all line mappings with given lmid\n    this.helper().array.each(ids, (id) => {\n      $lineMapsById[id] = that.$originalContent.find(\n        that.mapSelector + that.getSelectorForLineMapId(id)\n      );\n    });\n    // object mapping selection ids to all line mappings with given selection id\n    this.helper().array.each(selectionIds, (id) => {\n      $selectionsById[id] = that.$originalContent.find(\n        that.mapSelector + that.getSelectorForSelectionId(id)\n      );\n    });\n\n    const paragraphsById = {};\n    // object mapping lm and selection ids to parent paragraph tags\n    this.helper().object.each($lineMapsById, (id, $lineMaps) => {\n      paragraphsById[id] = $lineMaps.closest(\"p\").toArray();\n    });\n\n    this.helper().object.each($selectionsById, (id, $selections) => {\n      paragraphsById[id] = $selections.closest(\"p\").toArray();\n    });\n\n    const paragraphs = correctedSelectionId\n      ? paragraphsById[correctedSelectionId]\n      : paragraphsById[lmId];\n\n    // does a block of linemaps completely encompass this line map?\n    const hasLmParent = this.helper()\n      .array.without(ids, lmId)\n      .some((id) =>\n        that.helper().array.isSubset(paragraphs, paragraphsById[id])\n      );\n\n    // does a selection completely encompass this selection?\n    const hasSelectionParent = this.helper()\n      .array.without(selectionIds, correctedSelectionId)\n      .some((id) =>\n        that.helper().array.isSubset(paragraphs, paragraphsById[id])\n      );\n\n    return hasLmParent || hasSelectionParent;\n  }\n\n  getSelectorForLineMapId(id) {\n    return `[data-lm-id='${id}']`;\n  }\n\n  getSelectorForSelectionId(id) {\n    return `[data-selection-id='${id}']`;\n  }\n\n  getAllLineMapIds() {\n    const selector =\n      this.type === \"highlight\"\n        ? this.contentApplierSelector\n        : this.mapSelector;\n    return this.helper().array.unique(\n      this.$originalContent\n        .find(`${selector}[data-lm-id]`)\n        .map((i, element) => $(element).data(\"lm-id\"))\n    );\n  }\n\n  getAllSelectionIds() {\n    const selector =\n      this.type === \"highlight\"\n        ? this.contentApplierSelector\n        : this.mapSelector;\n    return this.helper().array.unique(\n      this.$originalContent\n        .find(`${selector}[data-selection-id]`)\n        .map((i, element) => $(element).data(\"selection-id\"))\n    );\n  }\n\n  static selectLineMapper(type) {\n    const selector = `[data-line-mapper][data-line-mapper-type='${type}']`;\n    const $lineMapper = $(selector);\n    if (!$lineMapper.length) {\n      return null;\n    }\n    return $lineMapper;\n  }\n}\n","var map = {\n\t\"./admin/collections\": 14516,\n\t\"./admin/collections/\": 14516,\n\t\"./admin/collections/edit\": 64142,\n\t\"./admin/collections/edit.js\": 64142,\n\t\"./admin/collections/index\": 14516,\n\t\"./admin/collections/index.js\": 14516,\n\t\"./admin/open_ai_prototypes/discussion_questions/show\": 69381,\n\t\"./admin/open_ai_prototypes/discussion_questions/show.js\": 69381,\n\t\"./admin/open_ai_prototypes/essay_prompts/show\": 93244,\n\t\"./admin/open_ai_prototypes/essay_prompts/show.js\": 93244,\n\t\"./admin/open_ai_prototypes/q_and_ai/show\": 1136,\n\t\"./admin/open_ai_prototypes/q_and_ai/show.js\": 1136,\n\t\"./admin/open_ai_prototypes/quiz_generator/show\": 49109,\n\t\"./admin/open_ai_prototypes/quiz_generator/show.js\": 49109,\n\t\"./admin/poetry/poems/preview\": 22037,\n\t\"./admin/poetry/poems/preview.js\": 22037,\n\t\"./admin/requests\": 49942,\n\t\"./admin/requests/\": 49942,\n\t\"./admin/requests/index\": 49942,\n\t\"./admin/requests/index.js\": 49942,\n\t\"./home\": 91240,\n\t\"./home/\": 91240,\n\t\"./home/index\": 91240,\n\t\"./home/index.js\": 91240,\n\t\"./literary_devices/show\": 2706,\n\t\"./literary_devices/show.js\": 2706,\n\t\"./poetry/authors/show\": 50320,\n\t\"./poetry/authors/show.js\": 50320,\n\t\"./poetry/poems/show\": 52956,\n\t\"./poetry/poems/show.js\": 52956,\n\t\"./quotes\": 58774,\n\t\"./quotes/\": 58774,\n\t\"./quotes/index\": 58774,\n\t\"./quotes/index.js\": 58774,\n\t\"./registrations/new\": 76769,\n\t\"./registrations/new.js\": 76769,\n\t\"./search\": 35191,\n\t\"./search/\": 35191,\n\t\"./search/index\": 35191,\n\t\"./search/index.js\": 35191,\n\t\"./shared/header/base\": 90009,\n\t\"./shared/header/base.js\": 90009,\n\t\"./shared/help_on_demand/promo\": 56245,\n\t\"./shared/help_on_demand/promo.js\": 56245,\n\t\"./shared/litCards\": 46600,\n\t\"./shared/litCards.js\": 46600\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 11074;","// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `bin/rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\";\n\nexport default createConsumer();\n","import React from \"react\";\nimport Select from \"components/shared/Select\";\n\nconst VariantCountrySelect = (props) => {\n  const onChange = (value) => {\n    $(\".marketing-optin-checkbox\").toggleClass(\n      \"hidden\",\n      !value.conforms_to_gdpr\n    );\n    $(\"input[name='user[email_marketing_optin]']\").prop(\n      \"checked\",\n      !value.conforms_to_gdpr\n    );\n  };\n\n  return <Select {...props} onChange={onChange} />;\n};\n\nexport default VariantCountrySelect;\n","import classnames from \"classnames\";\nimport React, { useEffect, useState } from \"react\";\n\nfunction AppBanner() {\n  const [content, _setContent] = useState(null);\n  const [htmlContent, setHtmlContent] = useState(null);\n\n  const clear = () => {\n    setHtmlContent(null);\n    _setContent(null);\n  };\n\n  const setContent = (event) => {\n    setHtmlContent(null);\n    _setContent(event.content);\n  };\n\n  // Progressively enhance an existing server-side generated banner by replacing it with this component. We do this\n  // for JS fault tolerance, so error messages generated server-side on form submission response (e.g. sign-in form)\n  // continue to work for clients with broken, disabled or download-impaired JavaScript. We do not want to be dependent\n  // on JS execution for showing these error messages.\n  //\n  // To use this, the banner to be replaced needs the attribute: data-progressively-enhance-with='AppBanner'\n  const progressivelyEnhanceExistingBanner = () => {\n    const bannerToReplace = document.querySelector(\n      \"[data-progressively-enhance-with='AppBanner']\"\n    );\n    if (bannerToReplace) {\n      bannerToReplace.style.display = \"none\";\n      setHtmlContent(bannerToReplace.innerHTML);\n    }\n  };\n\n  useEffect(() => {\n    progressivelyEnhanceExistingBanner();\n    $(document).on(\"AppBanner:setContent\", setContent);\n    $(document).on(\"AppBanner:clear\", clear);\n\n    // Returning useEffect cleanup function to remove any event listeners.\n    return () => {\n      $(document).off(\"AppBanner:clear\", clear);\n      $(document).off(\"AppBanner:setContent\", setContent);\n    };\n  }, []); // Empty dependencies array so this runs only once when component mounts.\n\n  if (!content && !htmlContent) return null;\n\n  const classes = classnames(\n    \"app-banner\",\n    \"lc-banner\",\n    \"lc-banner-warning\",\n    \"lc-banner-section\"\n  );\n\n  if (content) {\n    return <div className={classes}>{content}</div>;\n  }\n\n  if (htmlContent) {\n    return (\n      <div\n        className={classes}\n        dangerouslySetInnerHTML={{ __html: htmlContent }} // eslint-disable-line react/no-danger\n      />\n    );\n  }\n}\n\nAppBanner.clear = () => {\n  $(document).trigger({ type: \"AppBanner:clear\" });\n};\n\nAppBanner.setContent = (content) => {\n  $(document).trigger({ type: \"AppBanner:setContent\", content });\n};\n\nexport default AppBanner;\n","import React, { useState } from \"react\";\n\nconst Banner = ({ confirmedBannerUrl, bannerKey }) => {\n  const [showBanner, setShowBanner] = useState(true);\n\n  const messages = {\n    privacy_policy_banner: `We have updated our <u><a href=\"/privacy\">Privacy Policy</a></u>.\n    By continuing to use our site, you confirm that you have read our updated Privacy Policy.`,\n    maintenance_sep2024_banner: `LitCharts will be undergoing maintenance and will be unavailable\n    for a brief time on Friday, September 20.`,\n  };\n\n  const confirmButton = (e) => {\n    e.preventDefault();\n    const requestUrl = `${confirmedBannerUrl}?banner_key=${bannerKey}`;\n    fetch(requestUrl, {\n      headers: {\n        \"X-CSRF-Token\": $('meta[name=\"csrf-token\"]').attr(\"content\"),\n      },\n      method: \"PATCH\",\n    }).then(() => {\n      setShowBanner(false);\n    });\n  };\n\n  if (!showBanner) {\n    return null;\n  }\n\n  return (\n    <div id={bannerKey} className=\"sitewide-banner-container\">\n      <div className=\"sitewide-banner\">\n        <div>\n          <div className=\"banner-1 content-container\">\n            <span dangerouslySetInnerHTML={{ __html: messages[bannerKey] }} />\n            <button\n              type=\"button\"\n              onClick={confirmButton}\n              className=\"btn btn-default btn-sm confirm-button\"\n            >\n              Confirm\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default Banner;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport MaskInput from \"react-maskinput\";\nimport InputErrorMessage from \"components/shared/InputErrorMessage\";\nimport InputInfoMessage from \"components/shared/InputInfoMessage\";\nimport LabelContainer from \"components/shared/LabelContainer\";\n\nconst propTypes = {\n  errorMessage: PropTypes.string,\n  handleChange: PropTypes.func,\n  inputClass: PropTypes.string,\n  inputId: PropTypes.string,\n  isDisabled: PropTypes.bool,\n  isRequired: PropTypes.bool,\n  name: PropTypes.string.isRequired,\n  placeholder: PropTypes.string,\n  showErrorMessage: PropTypes.bool,\n  tokenize: PropTypes.bool,\n  value: PropTypes.string,\n};\n\nconst defaultProps = {\n  errorMessage: null,\n  handleChange: null,\n  inputClass: \"input-lg\",\n  isDisabled: false,\n  isRequired: false,\n  placeholder: \"MM / DD / YYYY\",\n  showErrorMessage: true,\n  value: \"\",\n};\n\nconst BirthdayInput = (props) => {\n  const mask = \"00/00/0000\";\n  const maskString = \"MM/DD/YYYY\";\n\n  const {\n    errorMessage,\n    handleChange,\n    infoMessage,\n    inputId = props.name, // Default input ID to the name\n    inputClass,\n    isDisabled,\n    name,\n    placeholder,\n    showErrorMessage,\n    tokenize,\n    value,\n    ...labelProps\n  } = props;\n\n  const hasError = errorMessage !== null;\n  const className = hasError ? `${inputClass} error` : inputClass;\n\n  const revealInfoMessage = (input) => {\n    const $infoMessage = $(input).siblings(\".input__info-message\");\n    input.value === \"\" ? $infoMessage.hide() : $infoMessage.show();\n  };\n\n  const tokenizeValue = (valueToTokenize) => {\n    if (valueToTokenize[2]) {\n      $(`#${inputId}\\\\(1i\\\\)`).val(parseInt(valueToTokenize[2]));\n    }\n    if (valueToTokenize[0]) {\n      $(`#${inputId}\\\\(2i\\\\)`).val(parseInt(valueToTokenize[0]));\n    }\n    if (valueToTokenize[1]) {\n      $(`#${inputId}\\\\(3i\\\\)`).val(parseInt(valueToTokenize[1]));\n    }\n  };\n\n  const onChange = (e) => {\n    tokenize && tokenizeValue(e.target.value.split(\"/\"));\n    infoMessage && revealInfoMessage(e.target);\n    handleChange && handleChange(e);\n  };\n\n  return (\n    <div className=\"input-container\">\n      <LabelContainer {...labelProps} hasError={hasError} name={name} />\n      <MaskInput\n        className={className}\n        disabled={isDisabled}\n        id={inputId}\n        inputMode=\"numeric\"\n        mask={mask}\n        maskString={maskString}\n        name={name}\n        onChange={onChange}\n        pattern=\"[0-9]*\"\n        placeholder={placeholder}\n        showMask={false}\n        size={20}\n        value={value}\n      />\n      {!errorMessage && infoMessage && (\n        <InputInfoMessage message={infoMessage} />\n      )}\n      {showErrorMessage && errorMessage && (\n        <InputErrorMessage message={errorMessage} />\n      )}\n    </div>\n  );\n};\n\nBirthdayInput.defaultProps = defaultProps;\nBirthdayInput.propTypes = propTypes;\n\nexport default BirthdayInput;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport helpers from \"helpers/base\";\nimport classnames from \"classnames\";\n\nclass Checkbox extends React.Component {\n  static propTypes = {\n    checked: PropTypes.bool,\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    containerClass: PropTypes.string,\n  };\n\n  static defaultProps = {\n    checked: false,\n    disabled: false,\n    label: null,\n    noLabel: false,\n    value: \"selected\",\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.inputId = this.props.id || helpers.generateComponentUuid(\"checkbox\");\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  render() {\n    return (\n      <div className={classnames(\"lc-checkbox\", this.props.containerClass)}>\n        <input\n          className=\"lc-checkbox__input\"\n          defaultChecked={this.props.checked}\n          disabled={this.props.disabled}\n          id={this.inputId}\n          name={this.props.name}\n          onChange={this.props.onChange}\n          type=\"checkbox\"\n          value={this.props.value}\n        />\n        {this.renderLabel()}\n      </div>\n    );\n  }\n}\n\nexport default Checkbox;\n","import React, { useRef, useState } from \"react\";\nimport FacebookLogin from \"react-facebook-login/dist/facebook-login-render-props\";\nimport helpers from \"helpers/base\";\nimport AppBanner from \"./AppBanner\";\n\nconst defaultProps = {\n  authType: \"\",\n  flow: null,\n  size: \"md\",\n  text: \"Sign up with Facebook\",\n};\n\nconst setErrorMessage = (message) => {\n  AppBanner.setContent(message);\n};\n\nconst clearErrorMessage = () => {\n  AppBanner.clear();\n};\n\nconst authCallback = (\n  response,\n  successHandler,\n  errorHandler,\n  flow = \"sign-in\",\n  openRequestLitGuideModal = false\n) => {\n  let url = \"/auth/facebook/callback\";\n  if (flow) {\n    url = `${url}?flow=${flow}`;\n  }\n  Object.assign(response, {\n    open_request_lit_guide_modal: openRequestLitGuideModal,\n  });\n  jQuery.ajax({\n    type: \"POST\",\n    data: response,\n    success: successHandler,\n    error: errorHandler,\n    url,\n  });\n};\n\nfunction FacebookLoginButton(props) {\n  let { callback } = props;\n  const [authType, setAuthType] = useState(props.authType);\n  const buttonRef = useRef(null);\n\n  if (!callback) {\n    callback = (response) => {\n      setErrorMessage(null);\n\n      const onAuthenticationSuccess = (_data, _textStatus, jqXHR) => {\n        const url = jqXHR.getResponseHeader(\"Location\");\n        if (url) {\n          window.location.href = url;\n        } else {\n          $(buttonRef.current).trigger(\"oauthRegistrationInProgress\");\n        }\n      };\n\n      const onAuthenticationError = (jqXHR, _textStatus, _errorThrown) => {\n        const errorMessage = helpers.object.dig(jqXHR, \"responseJSON.error\");\n        const emailRequired = helpers.object.dig(\n          jqXHR,\n          \"responseJSON.email_required\"\n        );\n        if (errorMessage) {\n          setErrorMessage(errorMessage);\n        } else {\n          console.error(\"Unrecognized Facebook authentication error:\", jqXHR);\n          setErrorMessage(\n            `There was an error signing in with Facebook.\n            Please try again or contact LitCharts support if the problem persists.`\n          );\n        }\n        if (emailRequired) {\n          // User declined email address permission, so we must re-request this permission, see docs:\n          // https://developers.facebook.com/docs/facebook-login/web/permissions\n          setAuthType(\"rerequest\");\n        }\n      };\n\n      if (response && !response.error) {\n        authCallback(\n          response,\n          onAuthenticationSuccess,\n          onAuthenticationError,\n          props.flow,\n          props.openRequestLitGuideModal\n        );\n      } else if (response && response.error) {\n        const errorObj = response.error;\n        console.error(\"Facebook authentication error:\", errorObj);\n        const errorStr =\n          typeof errorObj === \"string\" ? errorObj : JSON.stringify(errorObj);\n        const errorMessage = `There was an error signing up with Facebook: \"${errorStr}\".\n      Please try again or contact LitCharts support if the problem persists.`;\n        setErrorMessage(errorMessage);\n      }\n    };\n  }\n\n  return (\n    <FacebookLogin\n      appId={props.appId}\n      callback={callback}\n      cookie\n      fields=\"email\"\n      scope=\"email\"\n      authType={authType}\n      disableMobileRedirect\n      onClick={clearErrorMessage}\n      // eslint-disable-next-line react/jsx-no-bind\n      render={(renderProps) => (\n        <button\n          ref={buttonRef}\n          type=\"button\"\n          data-provider=\"facebook\"\n          onClick={renderProps.onClick}\n          id=\"sign-in-with-facebook\"\n          className={`btn btn-default btn-${props.size} btn-social`}\n        >\n          {props.iconSrc && <img src={props.iconSrc} alt=\"Facebook logo\" />}\n          <span>{props.text}</span>\n        </button>\n      )}\n    />\n  );\n}\n\nFacebookLoginButton.defaultProps = defaultProps;\n\nexport default FacebookLoginButton;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport LcOAuth2 from \"lib/shared/oauth2\";\nimport PropTypes from \"prop-types\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport AppBanner from \"./AppBanner\";\n\nconst propTypes = {\n  minWidthInPixels: PropTypes.number,\n  maxWidthInPixels: PropTypes.number,\n  onClick: PropTypes.func,\n  onSkipFormAndCreateAccount: PropTypes.func,\n  onRegistrationInProgress: PropTypes.func,\n  registrationInProgressEvent: PropTypes.shape({ type: PropTypes.string }),\n  openRequestLitGuideModal: PropTypes.bool,\n  flow: PropTypes.string,\n  text: PropTypes.string,\n  subscription: PropTypes.string,\n};\n\nconst defaultProps = {\n  minWidthInPixels: 200, // 200px _seems_ to be the minimum width accepted by Google, could not find it documented.\n  maxWidthInPixels: 400, // Largest width permitted by Google is 400px.\n  onClick: () => {}, // no-op\n  onRegistrationInProgress: () => {}, // no-op\n  registrationInProgressEvent: null,\n  openRequestLitGuideModal: false,\n  flow: null,\n  subscription: null,\n  text: \"continue_with\", // See available options at: https://developers.google.com/identity/gsi/web/reference/js-reference#text\n};\n\nconst setErrorMessage = (message) => {\n  AppBanner.setContent(message);\n};\n\nfunction GoogleAuthButton(props) {\n  const {\n    minWidthInPixels,\n    maxWidthInPixels,\n    onClick,\n    onSkipFormAndCreateAccount,\n    onRegistrationInProgress,\n    registrationInProgressEvent,\n    flow,\n    text,\n    subscription,\n  } = props;\n  const buttonContainer = useRef(null);\n  const [widthInPixels, _setWidthInPixels] = useState(0);\n  const [googleInitialized, setGoogleInitialized] = useState(false);\n\n  const callbackUrlRef = useRef(\"\");\n\n  // We do this funky assignment here of 'callbackUrlRef.current' to avoid adding 'subscription' and 'flow'\n  // into the dependency array in the useEffect where 'callbackUrlRef.current' is referenced.\n\n  useEffect(() => {\n    const callbackUrl = buildCallbackUrl();\n    callbackUrlRef.current = callbackUrl;\n  }, [subscription, flow]);\n\n  const setWidthInPixels = (width) => {\n    if (width <= 0) {\n      // Don't bother changing widthInPixels if it would be set to zero or less.\n      return;\n    }\n    let newWidth = width;\n    if (width < minWidthInPixels) {\n      newWidth = minWidthInPixels;\n    } else if (width > maxWidthInPixels) {\n      newWidth = maxWidthInPixels;\n    }\n    // Round width down to fix bug where fractional button widths are ignored on some devices (Pixel 3 - Pixel 7)\n    newWidth = Math.floor(newWidth);\n    _setWidthInPixels(newWidth);\n  };\n\n  const skipFormAndCreateAccount = () => {\n    $.ajax({\n      data: {\n        signup_origin: \"free_tier_modal\",\n        user: { simplified_signup: true, email_marketing_optin: true },\n      },\n      dataType: \"json\",\n      method: \"POST\",\n      url: \"/\",\n      success: (_data, _textStatus, jqXHR) => {\n        window.location.href = jqXHR.getResponseHeader(\"Location\");\n      },\n    });\n  };\n\n  const buildCallbackUrl = () => {\n    const callbackUrl = \"/auth/google_one_tap/callback\";\n    const params = [];\n\n    if (flow) {\n      params.push(`flow=${flow}`);\n    }\n\n    if (subscription) {\n      params.push(`subscription=${subscription}`);\n    }\n\n    return callbackUrl + (params.length ? `?${params.join(\"&\")}` : \"\");\n  };\n\n  useEffect(() => {\n    const handleCredentialResponse = (event) => {\n      const { response } = event;\n      Object.assign(response, {\n        open_request_lit_guide_modal: props.openRequestLitGuideModal,\n      });\n\n      const callbackUrl = callbackUrlRef.current;\n\n      $.ajax({\n        method: \"POST\",\n        // TODO: Use more general strategy name than google_one_tap *but* still record if user signed up with one-tap or otherwise\n        url: callbackUrl,\n        data: response,\n        success: (data, _textStatus, jqXHR) => {\n          switch (data.state) {\n            case \"skip_form_and_create_account\":\n              if (onSkipFormAndCreateAccount) {\n                onSkipFormAndCreateAccount();\n              } else {\n                skipFormAndCreateAccount();\n              }\n              break;\n            case \"registration_in_progress\":\n              onRegistrationInProgress();\n              if (registrationInProgressEvent) {\n                $(buttonContainer.current).trigger(registrationInProgressEvent);\n              }\n              break;\n            case \"signed_in\": // A previously registered user has signed in.\n            case \"sign_in_elsewhere\": // User needs to sign in on another page\n              window.location.href = jqXHR.getResponseHeader(\"Location\");\n              break;\n            default:\n              // eslint-disable-next-line no-console\n              console.log(\n                \"There was an error authenticating with Google, unrecognized state.\"\n              );\n          }\n        },\n        error: (jqXHR, _textStatus, _errorThrown) => {\n          // Happens if Users::OmniauthCallbacksController#failure responds.\n          setErrorMessage(jqXHR.responseJSON.error);\n        },\n      });\n    };\n    $(buttonContainer.current).on(\n      \"googleIdButton:credentialResponse\",\n      handleCredentialResponse\n    );\n\n    const resizeObserver = new ResizeObserver((entries) => {\n      const resizedWidth = entries[0].contentRect.width;\n      setWidthInPixels(resizedWidth);\n    });\n    resizeObserver.observe(buttonContainer.current);\n\n    LcOAuth2.initGoogle().then(() => {\n      setGoogleInitialized(true);\n    });\n\n    // Before showing the modal, to prevent glitching/flickering of the button, we calculate its width and render it.\n    //\n    // calcWidthInvisibly is currently hardcoded with the assumptions:\n    // - the button is inside a modal\n    // - the modal is hidden with 'display: none'\n    //\n    // This toggles 'visibility: hidden' on only briefly to calculate the button width, whilst still hiding the modal.\n    // With 'display: none' an element is not allocated space. With 'visibility: hidden', the element is allocated space\n    // and so allows dimensions to be calculated.\n    //\n    // If the button is not inside a hidden modal, then this function does nothing and is harmless.\n    const calcWidthInvisibly = () => {\n      const $modal = $(buttonContainer.current)\n        .closest(\".modal\")\n        .filter(\":hidden\");\n      if ($modal.length > 0) {\n        const originalVisibility = $modal.css(\"visibility\");\n        // Temporarily set 'visibility: hidden' AND remove 'display: none' so the modal stays invisible but is\n        // allocated space, which we can use to get a non-zero width value.\n        $modal.css(\"visibility\", \"hidden\").show();\n        // Set the width of the button.\n        setWidthInPixels($(buttonContainer.current).width());\n        // Return visibility and display to their original values.\n        $modal.hide().css(\"visibility\", originalVisibility);\n      }\n    };\n\n    if (document.readyState === \"complete\") {\n      // Load event already fired, calc width immediately.\n      calcWidthInvisibly();\n    } else {\n      // Load event not yet fired, add event listener.\n      window.addEventListener(\"load\", calcWidthInvisibly);\n    }\n\n    // Returning useEffect to cleanup listeners and observers.\n    return () => {\n      window.removeEventListener(\"load\", calcWidthInvisibly);\n      resizeObserver.disconnect();\n      $(buttonContainer.current).off(\n        \"googleIdButton:credentialResponse\",\n        handleCredentialResponse\n      );\n    };\n  }, []); // Empty dependencies array so this runs only once when component mounts.\n\n  const renderButton = () => {\n    if (!googleInitialized || widthInPixels <= 0) {\n      // To render button, google initialization must be complete, and width in pixels must be greater than 0.\n      return;\n    }\n\n    $(buttonContainer.current).empty(); // Removes any existing button\n\n    // Button options: https://developers.google.com/identity/gsi/web/reference/js-reference#google.accounts.id.renderButton\n    window.google.accounts.id.renderButton(buttonContainer.current, {\n      type: \"standard\",\n      theme: \"filled_blue\",\n      size: \"large\",\n      text,\n      shape: \"rectangular\",\n      logo_alignment: \"left\",\n      width: widthInPixels,\n      click_listener: () => {\n        // We record this is the last GoogleAuthButton to be clicked so the \"googleIdButton:credentialResponse\" event\n        // is triggered on this same button, which is useful if there are multiple GoogleAuthButtons on the page.\n        LcOAuth2.googleAuthButtonLastClicked = buttonContainer.current;\n        onClick();\n        $(buttonContainer.current).trigger(\"click\");\n        setErrorMessage(null);\n      },\n    });\n  };\n  // Re-renders button when width changes. Width changes when modal opens, and when window resized.\n  useEffect(renderButton, [googleInitialized, widthInPixels]);\n\n  return (\n    <div className=\"google-auth-button-parent\">\n      <div className=\"google-auth-button\" ref={buttonContainer} />\n    </div>\n  );\n}\n\nGoogleAuthButton.propTypes = propTypes;\nGoogleAuthButton.defaultProps = defaultProps;\n\nexport default GoogleAuthButton;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst propTypes = {\n  btnClass: PropTypes.string,\n  iconClass: PropTypes.string,\n  onClick: PropTypes.func,\n  text: PropTypes.string,\n};\n\nconst defaultProps = {\n  btnClass: \"btn-lg btn-primary\",\n  iconClass: \"lc-icon-close lc-icon-xs\",\n  onClick: () => {},\n  text: null,\n};\n\nfunction IconButton(props) {\n  const { btnClass, onClick, iconClass, text, ...rest } = props;\n  const btnIconClass = text ? \"btn-icon-text\" : \"btn-icon\";\n  return (\n    <button\n      className={`btn ${btnIconClass} ${btnClass}`}\n      onClick={onClick}\n      type=\"button\"\n      {...rest}\n    >\n      <i className={`lc-icon ${iconClass}`} />\n      {text && <div>{text}</div>}\n    </button>\n  );\n}\n\nIconButton.propTypes = propTypes;\nIconButton.defaultProps = defaultProps;\n\nexport default IconButton;\n","// Use this when having to create complicated inputs. See /dev/components/inputs for details\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isString from \"lodash/isString\";\n\nimport InputErrorMessage from \"components/shared/InputErrorMessage\";\nimport LabelContainer from \"components/shared/LabelContainer\";\n\nconst propTypes = {\n  autocomplete: PropTypes.string,\n  autocorrect: PropTypes.string,\n  autocapitalize: PropTypes.string,\n  errorMessage: PropTypes.string,\n  handleChange: PropTypes.func,\n  iconClass: PropTypes.string,\n  InputComponent: PropTypes.oneOf([\"input\", \"textarea\"]),\n  inputClass: PropTypes.string,\n  inputId: PropTypes.string,\n  isDisabled: PropTypes.bool,\n  isRequired: PropTypes.bool,\n  min: PropTypes.string,\n  max: PropTypes.string,\n  step: PropTypes.string,\n  name: PropTypes.string.isRequired,\n  placeholder: PropTypes.string,\n  type: PropTypes.string,\n  value: PropTypes.string,\n};\n\nconst defaultProps = {\n  autocapitalize: \"off\",\n  autocomplete: \"off\",\n  autocorrect: \"off\",\n  InputComponent: \"input\",\n  errorMessage: null,\n  handleChange: null,\n  iconClass: null,\n  inputClass: \"input-lg\",\n  isDisabled: false,\n  isRequired: false,\n  placeholder: \"\",\n  type: \"text\",\n  value: \"\",\n};\n\nconst Input = (props) => {\n  const {\n    autocapitalize,\n    autocomplete,\n    autocorrect,\n    errorMessage,\n    handleChange,\n    inputId = props.name, // Default input ID to the name\n    inputClass,\n    InputComponent,\n    isControlled,\n    isDisabled,\n    min,\n    max,\n    name,\n    placeholder,\n    step,\n    type,\n    value,\n    ...labelProps\n  } = props;\n\n  const hasError = errorMessage !== null;\n  const className = hasError ? `${inputClass} error` : inputClass;\n\n  const hasIcon = isString(props.iconClass) && props.iconClass.length > 0;\n\n  // If component is controlled externally, set isControlled to true and\n  // be sure to pass a handleChange as well\n  const valueProps = {};\n  if (isControlled) {\n    valueProps.value = value;\n  } else {\n    valueProps.defaultValue = value;\n  }\n\n  const onChange = (e) => {\n    handleChange && handleChange(e);\n  };\n\n  return (\n    <div className={`input-container ${hasIcon && \"input-container--icon\"}`}>\n      {hasIcon && <i className={props.iconClass} />}\n      <LabelContainer {...labelProps} hasError={hasError} name={inputId} />\n      <InputComponent\n        autoCapitalize={autocapitalize}\n        autoComplete={autocomplete}\n        autoCorrect={autocorrect}\n        id={inputId}\n        className={className}\n        disabled={isDisabled}\n        name={name}\n        onChange={onChange}\n        placeholder={placeholder}\n        type={type}\n        min={min}\n        max={max}\n        step={step}\n        {...valueProps}\n      />\n      {errorMessage && <InputErrorMessage message={errorMessage} />}\n    </div>\n  );\n};\n\nInput.defaultProps = defaultProps;\nInput.propTypes = propTypes;\n\nexport default Input;\n","import React from \"react\";\n\nconst InputErrorMessage = ({ message }) => (\n  <div className=\"input__error-message\">{message}</div>\n);\n\nexport default InputErrorMessage;\n","import React from \"react\";\n\nconst InputInfoMessage = ({ message }) => (\n  <div className=\"input__info-message\">{message}</div>\n);\n\nexport default InputInfoMessage;\n","// Use this when having to create complicated inputs. See /dev/components/inputs for details\n\nimport React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport classnames from \"classnames\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport LabelContainer from \"components/shared/LabelContainer\";\nimport IconButton from \"components/shared/IconButton\";\nimport { logAmplitudeCtaEvent } from \"lib/shared/events\";\n\nconst propTypes = {\n  buttonVariant: PropTypes.bool,\n  disabled: PropTypes.bool,\n  errorMessage: PropTypes.string,\n  hideSubtext: PropTypes.bool,\n  inputClass: PropTypes.string,\n  max: PropTypes.number,\n  min: PropTypes.number,\n  name: PropTypes.string.isRequired,\n  onChange: PropTypes.func,\n  onSubmit: PropTypes.func,\n  placeholder: PropTypes.string,\n  value: PropTypes.string,\n  amplitudeKey: PropTypes.string,\n};\n\nconst defaultProps = {\n  buttonVariant: false,\n  disabled: false,\n  errorMessage: null,\n  hideSubtext: false,\n  inputClass: \"input-lg\",\n  max: null,\n  min: null,\n  onChange: () => {},\n  onSubmit: () => {},\n  placeholder: \"\",\n  value: \"\",\n  amplitudeKey: null,\n};\n\nconst InputTextCounter = (props) => {\n  const {\n    buttonVariant,\n    amplitudeKey,\n    disabled,\n    locked,\n    errorMessage: errorFromProps,\n    hideSubtext,\n    inputClass,\n    min,\n    max,\n    name,\n    onChange,\n    onSubmit,\n    placeholder,\n    value,\n    ...labelProps\n  } = props;\n  const [internalErrorMessage, setInternalErrorMessage] = useState();\n  const [currentValue, setCurrentValue] = useState(value);\n  const [leftSubcopyText, setLeftSubcopyText] = useState(\"\");\n  const [rightSubcopyText, setRightSubcopyText] = useState(\"\");\n  const errorMessage = internalErrorMessage || errorFromProps;\n\n  const validate = () => {\n    const textLength = currentValue.length;\n\n    if (min && textLength < min) {\n      setLeftSubcopyText(`${min} characters required`);\n      if (textLength > 0) {\n        setInternalErrorMessage(`${min} characters required`);\n      } else {\n        setInternalErrorMessage(null);\n      }\n    } else if (max && textLength > max) {\n      setInternalErrorMessage(\"Over max character limit\");\n    } else {\n      setLeftSubcopyText(\"\");\n      setInternalErrorMessage(null);\n    }\n  };\n\n  const handleChange = (e) => {\n    const newValue = e.target.value;\n    setCurrentValue(newValue);\n\n    onChange && onChange(e);\n  };\n\n  const handleKeyDown = (event) => {\n    if (buttonVariant && event.key === \"Enter\") {\n      event.preventDefault();\n      onSubmit();\n\n      // Note: this is to track down submitting a question via the Enter key\n      logAmplitudeCtaEvent(amplitudeKey);\n    }\n  };\n\n  const disableButton = () => {\n    if (locked) {\n      // When a user is free tier or logged out, we never\n      // disable the button, so that they get redirected\n      // to the sign up page.\n      return false;\n    }\n\n    if (errorMessage || leftSubcopyText) {\n      return true;\n    }\n\n    return false;\n  };\n\n  useEffect(() => {\n    if (!min) return;\n\n    if (currentValue.length < min) {\n      setLeftSubcopyText(`${min} characters required`);\n    } else if (!max || currentValue.length <= max) {\n      setLeftSubcopyText(\"\");\n      setInternalErrorMessage(null);\n    }\n  }, [min, currentValue]);\n\n  useEffect(() => {\n    if (!max) return;\n\n    if (currentValue.length > max) {\n      setInternalErrorMessage(\"Over max character limit\");\n    } else if (!min || currentValue.length >= min) {\n      setLeftSubcopyText(\"\");\n      setInternalErrorMessage(null);\n    }\n\n    setRightSubcopyText(`${currentValue.length}/${max}`);\n  }, [max, currentValue]);\n\n  return (\n    <div className=\"input-container\">\n      <LabelContainer {...labelProps} hasError={errorMessage} name={name} />\n      <div\n        className={classnames(\"text-area-container\", {\n          buttonVariant,\n        })}\n      >\n        <TextareaAutosize\n          className={classnames(\"input-text-counter--input\", inputClass, {\n            error: errorMessage,\n            buttonVariant,\n          })}\n          data-testid=\"input-text-counter\"\n          disabled={disabled}\n          minRows={1}\n          name={name}\n          onBlur={validate}\n          onChange={handleChange}\n          onKeyDown={handleKeyDown}\n          placeholder={disabled ? \"\" : placeholder}\n          type=\"text\"\n          value={currentValue}\n        />\n        {buttonVariant && !disabled && (\n          <IconButton\n            iconClass=\"lc-icon-arrow-up lc-icon-xs\"\n            btnClass=\"btn-xs btn-primary pill\"\n            disabled={disableButton()}\n            onClick={onSubmit}\n            data-amplitude={amplitudeKey}\n          />\n        )}\n      </div>\n      {!hideSubtext && (\n        <div className=\"input-container--subcopy\">\n          <div\n            className={\n              errorMessage ? \"input__error-message\" : \"input__sub-message\"\n            }\n            data-testid=\"text-counter-left-subcopy\"\n          >\n            {errorMessage || leftSubcopyText}\n          </div>\n          <div\n            className={\n              errorMessage ? \"input__error-message\" : \"input__sub-message\"\n            }\n            data-testid=\"text-counter-right-subcopy\"\n          >\n            {rightSubcopyText}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nInputTextCounter.defaultProps = defaultProps;\nInputTextCounter.propTypes = propTypes;\n\nexport default InputTextCounter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst propTypes = {\n  classModifier: PropTypes.string,\n  labelClass: PropTypes.string,\n  labelText: PropTypes.string,\n  name: PropTypes.string.isRequired,\n};\n\nconst defaultProps = {\n  classModifier: null,\n  labelClass: \"input__label\",\n  labelText: \"\",\n};\n\nconst Label = ({ classModifier, labelClass, labelText, name }) => {\n  const className = classModifier\n    ? `${labelClass} ${classModifier}`\n    : labelClass;\n\n  return (\n    <label className={className} htmlFor={name}>\n      {labelText}\n    </label>\n  );\n};\n\nLabel.defaultProps = defaultProps;\nLabel.propTypes = propTypes;\n\nexport default Label;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Label from \"components/shared/Label\";\nimport RequiredText from \"components/shared/RequiredText\";\n\nconst propTypes = {\n  isDisabled: PropTypes.bool,\n  isRequired: PropTypes.bool,\n};\n\nconst defaultProps = {\n  isDisabled: false,\n  isRequired: false,\n};\n\nconst LabelContainer = (props) => {\n  let classModifier = null;\n\n  if (props.isDisabled) {\n    classModifier = \"disabled\";\n  }\n\n  if (!props.labelText) {\n    // In-Content AI will not pass label text\n    // when no label is necessary.\n    return null;\n  }\n\n  if (props.isRequired) {\n    return (\n      <RequiredText\n        classModifier={classModifier}\n        requiredText={props.requiredText}\n        requiredTextClass={props.requiredTextClass}\n      >\n        <Label\n          classModifier={classModifier}\n          name={props.name}\n          labelClass={props.labelClass}\n          labelText={props.labelText}\n        />\n      </RequiredText>\n    );\n  }\n\n  return (\n    <Label\n      classModifier={classModifier}\n      name={props.name}\n      labelClass={props.labelClass}\n      labelText={props.labelText}\n    />\n  );\n};\n\nLabelContainer.propTypes = propTypes;\nLabelContainer.defaultProps = defaultProps;\n\nexport default LabelContainer;\n","import React from \"react\";\n\nconst Loader = () => {\n  return <div className=\"lc-loader\" />;\n};\n\nexport default Loader;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\n\nexport default class Modal extends React.Component {\n  static propTypes = {\n    closeIcon: PropTypes.bool,\n    footer: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n    id: PropTypes.string,\n    onHidden: PropTypes.func,\n    showOnMount: PropTypes.bool,\n    showAfterDelay: PropTypes.number,\n    backdropStatic: PropTypes.bool, // Set to true to prevent clicks on backdrop from closing modal.\n    title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n    className: PropTypes.string,\n    extraClassName: PropTypes.string,\n    showAtParam: PropTypes.string,\n  };\n\n  static defaultProps = {\n    closeIcon: false,\n    footer: (\n      <button\n        className=\"btn btn-default btn-md\"\n        data-dismiss=\"modal\"\n        type=\"button\"\n      >\n        Close\n      </button>\n    ),\n    id: \"\",\n    showOnMount: false,\n    backdropStatic: false,\n    showAtParam: null,\n    className: \"modal lc-modal fade\",\n  };\n\n  componentDidMount() {\n    const { showOnMount, showAfterDelay } = this.props;\n\n    this.$modal = $(this.modal);\n\n    if (showOnMount) {\n      this.$modal.modal(\"show\");\n    }\n\n    if (showAfterDelay) {\n      setTimeout(() => {\n        this.$modal.modal(\"show\");\n      }, showAfterDelay);\n    }\n\n    this.$modal.on(\"hidden.bs.modal\", this.handleModalHidden);\n    this.$modal.on(\"shown.bs.modal\", this.handleModalShown);\n    window.addEventListener(\"popstate\", this.handleUrlChanges);\n    this.handleUrlChanges();\n  }\n\n  handleModalShown = () => {\n    if (!this.props.showAtParam) return;\n\n    const currentUrl = new URL(window.location.href);\n\n    currentUrl.searchParams.set(\"modalView\", this.props.showAtParam);\n    const newUrl = currentUrl.toString();\n    window.history.pushState({}, \"\", newUrl);\n  };\n\n  handleModalHidden = () => {\n    this.props.onHidden?.();\n    if (!this.props.showAtParam) return;\n    const url = new URL(window.location.href);\n    url.searchParams.delete(\"modalView\");\n    window.history.pushState({}, \"\", url.toString());\n  };\n\n  handleUrlChanges = () => {\n    if (!this.props.showAtParam) return;\n    const url = new URL(window.location.href);\n    const showModal =\n      url.searchParams.get(\"modalView\") === this.props.showAtParam\n        ? \"show\"\n        : \"hide\";\n    this.$modal.modal(showModal);\n  };\n\n  render() {\n    const {\n      backdropStatic,\n      children,\n      closeIcon,\n      footer,\n      id,\n      title,\n      className,\n      extraClassName,\n    } = this.props;\n\n    const fullClassName = `${className}${\n      extraClassName ? ` ${extraClassName}` : \"\"\n    }`;\n\n    return ReactDOM.createPortal(\n      <div\n        className={fullClassName}\n        id={id}\n        data-backdrop={backdropStatic ? \"static\" : \"true\"}\n        tabIndex=\"-1\"\n        role=\"dialog\"\n        ref={(el) => {\n          this.modal = el;\n        }}\n      >\n        <div className=\"modal-dialog\" role=\"document\">\n          <div className=\"modal-content\">\n            {title && (\n              <div className=\"modal-header\">\n                {closeIcon && (\n                  <button\n                    type=\"button\"\n                    className=\"btn btn-xs btn-borderless\"\n                    data-dismiss=\"modal\"\n                    aria-label=\"Close\"\n                  >\n                    <span\n                      className=\"lc-icon lc-icon-close lc-icon-xs\"\n                      aria-hidden=\"true\"\n                    />\n                  </button>\n                )}\n                <div className=\"modal-title\">{title}</div>\n              </div>\n            )}\n            <div className=\"modal-body\">{children}</div>\n            {footer && <div className=\"modal-footer\">{footer}</div>}\n          </div>\n        </div>\n      </div>,\n      document.querySelector(\"body\")\n    );\n  }\n}\n","// For use as the Option in ReactSelect\n//\n// Is a copy of Option from the react-select library - https://github.com/JedWatson/react-select/blob/master/packages/react-select/src/components/Option.js\n// With extra functionality for adding a checkmark to a selected option and a number icon\nimport React from \"react\";\nimport number from \"helpers/number\";\n\nconst ReactSelectOption = (props) => {\n  const {\n    children,\n    className,\n    cx,\n    data,\n    getValue,\n    isDisabled,\n    isFocused,\n    isSelected,\n    innerRef,\n    innerProps,\n    isMulti,\n  } = props;\n\n  const selectHasValue = !isMulti && getValue().length > 0;\n\n  return (\n    <div\n      className={cx(\n        {\n          option: true,\n          \"option--is-disabled\": isDisabled,\n          \"option--is-focused\": isFocused,\n          \"option--is-selected\": isSelected,\n        },\n        className\n      )}\n      ref={innerRef}\n      {...innerProps}\n    >\n      <div\n        className={cx(\n          {\n            \"option--icon-container\": true,\n            \"option--has-value\": selectHasValue,\n          },\n          className\n        )}\n      >\n        {isSelected && <i className=\"lc-icon lc-icon-checkmark lc-icon-xs\" />}\n      </div>\n      <div className={cx({ \"option--inner\": true }, className)}>{children}</div>\n      {data.numResults !== undefined && (\n        <div className=\"lc-select__num-results\">\n          {number.commaSeparateNumber(data.numResults)}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default ReactSelectOption;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst propTypes = {\n  classModifier: PropTypes.string,\n  requiredText: PropTypes.string,\n  requiredTextClass: PropTypes.string,\n  children: PropTypes.element.isRequired,\n};\n\nconst defaultProps = {\n  classModifier: \"\",\n  requiredText: \"Required\",\n  requiredTextClass: \"required-text__text\",\n};\n\n// children should be a label component\nconst RequiredText = ({\n  classModifier,\n  requiredText,\n  requiredTextClass,\n  children,\n}) => {\n  const className = classModifier\n    ? `${requiredTextClass}--${classModifier}`\n    : requiredTextClass;\n  return (\n    <div className=\"required-text\">\n      <span className=\"required-text__label-container\">{children}</span>\n      <span className=\"required-text__container--inner\">\n        <span className={className}>{requiredText}</span>\n      </span>\n    </div>\n  );\n};\n\nRequiredText.propTypes = propTypes;\nRequiredText.defaultProps = defaultProps;\n\nexport default RequiredText;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport help from \"helpers/base\";\nimport classnames from \"classnames\";\nimport ReactSelect from \"react-select\";\nimport InputErrorMessage from \"components/shared/InputErrorMessage\";\nimport LabelContainer from \"components/shared/LabelContainer\";\nimport ReactSelectOption from \"components/shared/ReactSelectOption\";\nimport Loader from \"./Loader\";\n\nconst isOptionDisabled = (option) => option.disabled;\n\nconst ensureOptionsHaveValues = (options) => {\n  return options.map((option) => {\n    const newOption = option; // for the linter's no-param-reassign rule\n    if (newOption.value === undefined) {\n      newOption.value = newOption.label;\n    }\n\n    return newOption;\n  });\n};\n\nconst MultiValueRemove = () => {\n  return <i className=\"lc-icon lc-icon-close lc-icon-close--xxs\" />;\n};\n\nconst MultiValueContainer = (props) => {\n  const clearValue = (e) => {\n    e.preventDefault();\n    e.stopPropagation();\n    props.innerProps.onTouchEnd();\n  };\n\n  return (\n    <div\n      className={props.innerProps.className}\n      onClick={clearValue}\n      onMouseDown={clearValue}\n      onTouchEnd={clearValue}\n      role=\"presentation\"\n    >\n      {props.children}\n    </div>\n  );\n};\n\nconst LoadingSpinner = () => {\n  return (\n    <div className=\"loading-container\">\n      <Loader />\n    </div>\n  );\n};\n\n// Same as original but passed removeProps to the container so the container can\n// also trigger a remove\nconst MultiValue = (props) => {\n  const {\n    children,\n    className,\n    components,\n    cx,\n    data,\n    innerProps,\n    isDisabled,\n    removeProps,\n    selectProps,\n  } = props;\n\n  const { Container, Label, Remove } = components;\n\n  return (\n    <Container\n      data={data}\n      innerProps={{\n        ...innerProps,\n        className: cx(\n          {\n            \"multi-value\": true,\n            \"multi-value--is-disabled\": isDisabled,\n          },\n          className\n        ),\n        ...removeProps,\n      }}\n      selectProps={selectProps}\n    >\n      <Label\n        data={data}\n        innerProps={{\n          className: cx(\n            {\n              \"multi-value__label\": true,\n            },\n            className\n          ),\n        }}\n        selectProps={selectProps}\n      >\n        {children}\n      </Label>\n      <Remove\n        data={data}\n        innerProps={{\n          className: cx(\n            {\n              \"multi-value__remove\": true,\n            },\n            className\n          ),\n          ...removeProps,\n        }}\n        selectProps={selectProps}\n      />\n    </Container>\n  );\n};\n\nconst ClearIndicator = (props) => {\n  const clearValue = (e) => {\n    e.preventDefault();\n    e.stopPropagation();\n    props.clearValue();\n    props.selectProps.onClear && props.selectProps.onClear();\n  };\n\n  return (\n    <i\n      className=\"lc-icon lc-icon-close lc-icon-xs lc-select__clear-indicator\"\n      onClick={clearValue}\n      onMouseDown={clearValue}\n      onTouchEnd={clearValue}\n      role=\"presentation\"\n    />\n  );\n};\n\nclass Select extends React.Component {\n  static propTypes = {\n    baseClassName: PropTypes.string,\n    components: PropTypes.object,\n    containerClassName: PropTypes.string,\n    errorMessage: PropTypes.string,\n    id: PropTypes.string,\n    isControlled: PropTypes.bool,\n    isDisabled: PropTypes.bool,\n    isLoading: PropTypes.bool,\n    isMulti: PropTypes.bool,\n    isRequired: PropTypes.bool,\n    isSearchable: PropTypes.bool,\n    maxMenuHeight: PropTypes.number,\n    menuPlacement: PropTypes.string,\n    name: PropTypes.string.isRequired,\n    onChange: PropTypes.func,\n    options: PropTypes.arrayOf(PropTypes.object),\n    placeholder: PropTypes.string,\n    preventSelect: PropTypes.bool,\n    value: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n  };\n\n  static defaultProps = {\n    baseClassName: \"lc-select-container\",\n    containerClassName: \"select-container\",\n    errorMessage: null,\n    isControlled: false,\n    isLoading: false,\n    isDisabled: false,\n    isMulti: false,\n    isRequired: false,\n    isSearchable: false,\n    maxMenuHeight: 300,\n    menuPlacement: \"bottom\",\n    options: [],\n    preventSelect: false,\n    value: \"\",\n    components: {},\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      menuOpen: false,\n      value: ensureOptionsHaveValues(props.options).filter(\n        (o) => props.value === o.value\n      ),\n    };\n    this.selectRef = React.createRef();\n  }\n\n  componentDidMount() {\n    this.replaceIndicatorIcon();\n  }\n\n  componentDidUpdate() {\n    this.replaceIndicatorIcon();\n  }\n\n  replaceIndicatorIcon = () => {\n    $(this.selectRef.current)\n      .find(\".lc-select__indicator.lc-select__dropdown-indicator svg\")\n      .replaceWith('<span class=\"lc-icon lc-icon-down lc-icon-xs\" />');\n  };\n\n  onChange = (value) => {\n    // preventSelect allows the select to not actually select anything but still call\n    // the onChange prop\n    if (!this.props.preventSelect) {\n      this.setState({ value }, () => {\n        $(`[name=\"${this.props.name}\"]`).trigger(\"change\", [value]);\n      });\n    }\n\n    if (this.props.onChange && help.isFunction(this.props.onChange)) {\n      this.props.onChange(value);\n    }\n  };\n\n  onMenuOpen = () => {\n    this.setState({ menuOpen: true });\n\n    // Little hack to quickly move the scrollbar and make sure its displayed for a moment\n    const menu = $(this.selectRef.current).find(\".lc-select__menu-list\");\n    menu.scrollTop(1);\n    menu.scrollTop(0);\n  };\n\n  onMenuClose = () => {\n    this.setState({ menuOpen: false });\n    const innerInput = this.selectRef.current.querySelector(\n      \".lc-select__input input\"\n    );\n    if (innerInput) {\n      innerInput.blur();\n    }\n  };\n\n  onFilter = (option, rawInput) => {\n    const label = option.label.toLowerCase();\n    const input = rawInput.toLowerCase();\n    return label.includes(input);\n  };\n\n  onBlur = () => {\n    // Hack for iOS, clicking the \"Done\" button on virtual keyboard doesn't submit the\n    // highlighted value as expected, it just triggers a blur event and clears the dropdown.\n    // This helper will grab the highlighted value if the user has typed something in the search\n    // and trigger onChange to simulate the user selecting it before closing the menu.\n    if (!this.props.isSearchable) {\n      return;\n    }\n    const input = this.selectRef.current.querySelector(\"input[type=text]\");\n    const inputValue = input ? input.value : \"\";\n\n    const selectedLabel = this.selectRef.current.querySelector(\n      \".lc-select__option--is-focused .lc-select__option--inner\"\n    );\n\n    if (selectedLabel) {\n      const selectedValue = this.props.options.find(\n        (option) => option.label === selectedLabel.innerText\n      );\n\n      if (inputValue.length > 0 && selectedValue) {\n        this.onChange(selectedValue);\n      }\n    }\n  };\n\n  render() {\n    const {\n      id,\n      baseClassName,\n      errorMessage,\n      isControlled,\n      isDisabled,\n      isLoading,\n      isMulti,\n      isSearchable,\n      maxMenuHeight,\n      menuPlacement,\n      name,\n      value,\n      options,\n      placeholder,\n      ...labelProps\n    } = this.props;\n\n    const hasError = errorMessage !== null;\n    const className = hasError\n      ? `${baseClassName} lc-select-container--error`\n      : baseClassName;\n\n    const finalOptions = ensureOptionsHaveValues(options);\n\n    // If value of select is controlled externally via the value prop, set\n    // isControlled to true and the value will be that of the value prop\n    // else it will be that of the internally managed state value\n    let finalVal;\n    if (isControlled) {\n      if (isMulti) {\n        finalVal = finalOptions.filter(\n          (o) => this.props.value.indexOf(o.value) > -1\n        );\n      } else {\n        finalVal = finalOptions.filter((o) => this.props.value === o.value);\n      }\n    } else {\n      finalVal = this.state.value;\n    }\n\n    return (\n      <div className={this.props.containerClassName} ref={this.selectRef}>\n        <LabelContainer {...labelProps} name={name} isDisabled={false} />\n        <ReactSelect\n          className={classnames(className, {\n            \"is-searchable\": isSearchable,\n            \"lc-menu--open\": this.state.menuOpen,\n          })}\n          classNamePrefix=\"lc-select\"\n          components={{\n            ClearIndicator,\n            MultiValueContainer,\n            MultiValueRemove,\n            // When isLoading is false, we use the default DropdownIndicator,\n            // but when isLoading is true, we remove the DropdownIndicator and replace\n            // it with a LoadingSpinner\n            ...(isLoading ? { DropdownIndicator: LoadingSpinner } : {}),\n            MultiValue,\n            Option: ReactSelectOption,\n            ...this.props.components,\n          }}\n          inputId={id}\n          isOptionDisabled={isOptionDisabled}\n          isDisabled={isDisabled}\n          isMulti={isMulti}\n          isSearchable={isSearchable}\n          noOptionsMessage={() => \"No matches found.\"}\n          styles={{\n            control: (baseStyles, state) => {\n              return {\n                ...baseStyles,\n                borderColor:\n                  state.isDisabled && isLoading && hasError\n                    ? \"#BB5050 !important\"\n                    : baseStyles.borderColor,\n              };\n            },\n            noOptionsMessage: (baseStyles, _state) => ({\n              ...baseStyles,\n              color: \"#181919\", //gray\n              textAlign: \"left\",\n            }),\n          }}\n          filterOption={this.onFilter}\n          maxMenuHeight={maxMenuHeight}\n          menuIsOpen={this.state.menuOpen}\n          menuPlacement={menuPlacement}\n          name={name}\n          onChange={this.onChange}\n          onMenuOpen={this.onMenuOpen}\n          onMenuClose={this.onMenuClose}\n          onBlur={this.onBlur}\n          options={finalOptions}\n          placeholder={placeholder}\n          value={finalVal}\n        />\n        {errorMessage && <InputErrorMessage message={errorMessage} />}\n        {/* // ReactSelect does not render an input if the isDisabled property is set\n        // we still want to render the hidden input to send the param to rails even if it's disabled */}\n        {isDisabled && <input name={name} type=\"hidden\" value={value} />}\n      </div>\n    );\n  }\n}\n\nexport default Select;\n","import React from \"react\";\n\nimport { ToastContainer, cssTransition } from \"react-toastify\";\nimport { injectStyle } from \"react-toastify/dist/inject-style\";\n\ninjectStyle();\n\nconst animations = cssTransition({\n  enter: \"slide-in-bottom\",\n  exit: \"slide-out-bottom\",\n});\n\nfunction CloseButton({ closeToast }) {\n  return (\n    <span className=\"Toastify__close-button\">\n      <i\n        className=\"lc-icon lc-icon-xs lc-icon-close\"\n        data-amplitude=\"toasterCloseIcon\"\n        onClick={closeToast}\n        onKeyDown={closeToast}\n        role=\"presentation\"\n      />\n    </span>\n  );\n}\n\nexport default function Toaster() {\n  return (\n    <ToastContainer\n      className=\"lc-toaster\"\n      closeButton={CloseButton}\n      pauseOnFocusLoss={false}\n      transition={animations}\n    />\n  );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst hiddenClass = \"cookie-opt-in--hidden\";\n\nclass CookieOptIn extends React.Component {\n  static propTypes = {\n    optInUrl: PropTypes.string,\n    cookiePolicyUrl: PropTypes.string,\n    privacyPolicyUrl: PropTypes.string,\n    termsOfServiceUrl: PropTypes.string,\n  };\n\n  constructor(props) {\n    super(props);\n    this._main = React.createRef();\n    this.accept = this.accept.bind(this);\n  }\n\n  componentDidMount() {\n    // SHOW_COOKIE_OPT_IN will be true/false if using quantcast\n    if (window.SHOW_COOKIE_OPT_IN === undefined) {\n      this.show();\n      return true;\n    }\n\n    this.showInterval = setInterval(() => {\n      if (window.SHOW_COOKIE_OPT_IN) {\n        this.show();\n      } else {\n        this.hide();\n      }\n    }, 1000);\n  }\n\n  componentWillUnmount() {\n    clearInterval(this.showInterval);\n  }\n\n  show() {\n    const $main = $(this._main.current);\n    if ($main.hasClass(hiddenClass)) {\n      $main.removeClass(hiddenClass);\n    }\n  }\n\n  hide() {\n    const $main = $(this._main.current);\n    if (!$main.hasClass(hiddenClass)) {\n      $main.addClass(hiddenClass);\n    }\n  }\n\n  accept() {\n    const $main = $(this._main.current);\n    clearInterval(this.showInterval);\n    $.ajax({\n      url: this.props.optInUrl,\n      method: \"post\",\n      success(_data, _textStatus, _jqXHR) {\n        $(\".hod-promo\").trigger(\"hod:reposition\");\n        $main.addClass(hiddenClass);\n        LitCharts.revealUserIamaDialogAfter(120000);\n      },\n    });\n  }\n\n  render() {\n    const { cookiePolicyUrl, privacyPolicyUrl, termsOfServiceUrl } = this.props;\n\n    return (\n      <div\n        className={`cookie-opt-in ${hiddenClass}`}\n        tabIndex=\"-1\"\n        role=\"dialog\"\n        ref={this._main}\n      >\n        <div className=\"cookie-opt-in__content\">\n          <div\n            className=\"cookie-opt-in__header body-2\"\n            style={{ \"font-weight\": \"bold\" }}\n          >\n            Cookies\n          </div>\n          <div className=\"cookie-opt-in__body subtitle-1\">\n            <span>\n              LitCharts uses cookies to personalize our services. By using our\n              site, you acknowledge that you have read and understand our{\" \"}\n            </span>\n            <a href={cookiePolicyUrl}>Cookie Policy</a>\n            <span>, </span>\n            <a href={privacyPolicyUrl}>Privacy Policy</a>\n            <span>, and </span>\n            <a href={termsOfServiceUrl}>Terms of Service</a>.\n          </div>\n          <div className=\"cookie-opt-in__footer\">\n            <button\n              className=\"btn btn-md btn-block btn-default cookie-opt-in__accept\"\n              onClick={this.accept}\n              type=\"button\"\n            >\n              Accept Cookies\n            </button>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default CookieOptIn;\n","// Large: 1200px+\n// Medium: 992-1199px\n// Small: 768-991px\n// XS: 576-767px\n// XXS: <576px\n\nexport const XXS_PIXEL_MAX = 576;\nexport const XS_PIXEL_MAX = 767;\nexport const SM_PIXEL_MIN = 768;\nexport const SM_PIXEL_MAX = 991;\nexport const MD_PIXEL_MAX = 1199;\n","const selectors = {\n  CONTAINER: \"#poems-show__container\",\n  MAIN: \"#poems-show\",\n  HIDE_UNTIL_LOADED: \"#poems-show__hide-until-loaded\",\n  HEADER: \"#poems-show__header\",\n  MOBILE_HEADER: \"#poems-show__mobile-header\",\n  MOBILE_HEADER_MAIN: \"#poems-show__mobile-header--main\",\n  FOOTER: \"section.footer\",\n  DRAWER: \"#poems-show__drawer\",\n  DRAWER_TITLE: \"#poems-show__drawer--title\",\n  DRAWER_CONTENT: \"#poems-show__drawer--content\",\n  PDF_HEADER: \"#poems-show__pdf-header\",\n  TEXT_SCROLLABLE: \"#poems-show__poem-text--scrollable\",\n  TEXT_FIXED: \"#poems-show__poem-text--fixed\",\n  TEXT_MODAL: \"#poems-show__poem-text--modal\",\n  TEXT_MODAL_CATEGORY: \".poem-text-modal__category\",\n  TEXT_MODAL_TOGGLE: \".poem-text-modal__toggle\",\n  TEXT_COLUMN: \"#poems-show__poem-text--column\",\n  TEXT_LINK: \".poems-show__poem-text--link\",\n  TEXT_TITLE: \".poems-show__poem-text--title\",\n  GUIDE_COLUMN: \"#poems-show__guide--column\",\n  POEM_CONTENT: \".poems-show__poem-content\",\n  COMPONENTS: \".poems-show__poem-components\",\n  COMPONENT: \".poems-show__poem-component\",\n  COMPONENT_VALUE: \".poems-show__poem-component--value\",\n  COMPONENT_VALUE_REPLACE: \".poems-show__poem-component--value-replace\",\n  COMPONENT_TITLE: \".poems-show__poem-component--title\",\n  HOD_PROMO: \".hod-promo\",\n  HOD_PROMO_CTA: \".hod-promo__cta\",\n  BANNER_PROMO: \".banner-promo\",\n  NAV: \"#poems__nav\",\n  NAV_LINK: \".poems__nav--link\",\n  MOBILE_NAV: \"#poems__mobile-nav\",\n  MOBILE_NAV_LINK: \".poems__mobile-nav--link\",\n  MOBILE_NAV_TOGGLE: \"#poems__mobile-nav--toggle\",\n  SECTION: \".poems-show__poem-component-section\",\n  SECTION_TITLE: \".poems-show__poem-component-section--title\",\n  SECTION_INSTRUCTIONS: \".poems-show__poem-component--instructions\",\n  COMPONENT_ITEMS: \".poems-show__poem-component-items\",\n  COMPONENT_ITEM: \".poems-show__poem-component-item\",\n  COMPONENT_ITEMS_SELECT: \".poem-component-items__select\",\n  COMPONENT_ITEMS_SELECT_OPTION: \".poem-component-items__select--option\",\n  ACTIVE_CONTEXT: \".poems-show__poem-component--active-context\",\n  ACTIVE_CONTEXT_NOTE: \".poem-component__active-context--note\",\n  ACTIVE_CONTEXT_BLURRED: \".poem-component__active-context--blurred\",\n  LINE_MAPS:\n    \".poem-inline__lm--content-highlight, .poem-inline__lm--content-one-to-one, .poem-inline__lm--value-one-to-one, .poem-inline__lm--value-structure, .poem-inline__lm--content-rhyme-scheme, .poem-inline__lm--value-rhyme-scheme, .poem-inline__lm--structure-line\", // eslint-disable-line max-len\n  LINE_MAP_CONTENT_STRUCTURE: \".poem-inline__lm--content-structure\",\n  LINE_MAP_CONTENT_ONE_TO_ONE: \".poem-inline__lm--content-one-to-one\",\n  LINE_MAP_VALUE_ONE_TO_ONE: \".poem-inline__lm--value-one-to-one\",\n  LINE_MAP_VALUE_STRUCTURE: \".poem-inline__lm--value-structure\",\n  LINE_MAP_VALUE_RHYME_SCHEME: \".poem-inline__lm--value-rhyme-scheme\",\n  INLINE_LINK: \".poem-inline__link\",\n  MODAL_LIT_TERM: \"#poems-show__lit-term-modal\",\n  MODAL_LIT_TERM_TITLE: \"#poems-show__lit-term-modal--title\",\n  MODAL_LIT_TERM_DEFINITION: \"#poems-show__lit-term-modal--definition\",\n  MODAL_LIT_TERM_LINK: \"#poems-show__lit-term-modal--link\",\n  PROMO: \".poems-show__promo\",\n  PROMO_MAIN: \".poems-show__promo--main\",\n  PROMO_ALT: \".poems-show__promo--alt\",\n  IS_FOCUSED: \".is-focused\",\n  CONTEXT_SWITCHER: \".poem-context-switcher\",\n  AI_TEXT_TOGGLE: \".ai-text-toggle\",\n  LC_TEXT_TOGGLE: \".lc-text-toggle\",\n  POEM_GUIDE_CONTENT: \".poem-guide-content\",\n  POEM_AI_TOOL: \".poem-ai-tool\",\n  MOBILE_HEADER_POEM_TITLE: \".mobile-header__title--poem-title\",\n};\n\nexport default selectors;\n","export default {\n  commaSeparateNumber(number) {\n    return Number(number).toLocaleString(\"en\");\n  },\n\n  // https://stackoverflow.com/a/31615643\n  ordinalize(n) {\n    const s = [\"th\", \"st\", \"nd\", \"rd\"];\n    const v = n % 100;\n    return n + (s[(v - 20) % 10] || s[v] || s[0]);\n  },\n};\n","export function subscribe(eventName, listener) {\n  document.addEventListener(eventName, listener);\n}\n\nexport function unsubscribe(eventName, listener) {\n  document.removeEventListener(eventName, listener);\n}\n\nexport function publish(eventName, data) {\n  const event = new CustomEvent(eventName, { detail: data });\n  document.dispatchEvent(event);\n}\n","export default {\n  // Convert num to 0th, 1st, 2nd 3rd etc, add more edge cases as needed\n  cardinalize(num) {\n    if (num === null || num === undefined) return null;\n    if (Number.isNaN(num)) return null;\n    const lastChar = num.toString().split(\"\").pop();\n    const lastDigit = parseInt(lastChar);\n    let suffix = \"th\";\n\n    switch (lastDigit) {\n      case 1:\n        suffix = \"st\";\n        break;\n      case 2:\n        suffix = \"nd\";\n        break;\n      case 3:\n        suffix = \"rd\";\n        break;\n      default:\n        suffix = \"th\";\n        break;\n    }\n\n    return `${num}${suffix}`;\n  },\n\n  isNumber(str) {\n    return str.match(/^\\d+$/);\n  },\n\n  // capitalize each word of a string\n  capitalize(str) {\n    return str\n      .toLowerCase()\n      .replace(/\\b[a-z]/g, (letter) => letter.toUpperCase());\n  },\n\n  capitalizeFirstLetter(str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n  },\n\n  // Decodes an encoded html string\n  htmlDecode(text) {\n    const doc = new window.DOMParser().parseFromString(text, \"text/html\");\n    return doc.documentElement.textContent;\n  },\n\n  // parameterize a string\n  parameterize(str) {\n    return str\n      .toLowerCase()\n      .replace(/[^a-z0-9]+/g, \"-\")\n      .replace(/(^-|-$)/g, \"\");\n  },\n\n  // allows for multiline regexes by taking in an array of regexes and joining them\n  multilineRegex(regs, options = { join: \"|\" }) {\n    return new RegExp(regs.map((reg) => reg.source).join(options.join));\n  },\n\n  // truncates a string to include at most n characters including an ellipses if needed\n  truncate(str, n) {\n    if (str.length <= n) {\n      return str;\n    }\n\n    return `${str.slice(0, n - 3)}...`;\n  },\n};\n","export default {\n  // require the current view file based on the controller-action path\n  initialize: () => {\n    const path = $(\"html\").data(\"controller-path\");\n    if (!path) {\n      return;\n    }\n    try {\n      // eslint-disable-next-line global-require, import/no-dynamic-require\n      const view = require(`views/${path}`);\n      $().ready(view.default.ready.call(view.default));\n    } catch (error) {\n      if (error.message.match(/^Cannot find module/)) {\n        console.warn(error.message);\n        console.warn(`----> Unable to require 'views/${path}', skipping...`);\n      } else {\n        throw error;\n      }\n    }\n  },\n};\n","import amplitude from \"amplitude-js\";\nimport helpers from \"helpers/base\";\nimport amplitudeJSON from \"../../constants/amplitude/index.json\";\nimport {\n  MD_PIXEL_MAX,\n  SM_PIXEL_MAX,\n  XS_PIXEL_MAX,\n  XXS_PIXEL_MAX,\n} from \"../../constants/breakpoints\";\n\nexport async function initialize() {\n  initAmplitude();\n  setUser();\n  setLastTouchProperties({\n    ...window.amplitudeLastTouchProperties,\n    ...lastContentPageType(),\n  });\n  document.addEventListener(\"DOMContentLoaded\", observeDOMChanges);\n  document.addEventListener(\"DOMContentLoaded\", setCtaHandlers);\n  document.addEventListener(\"DOMContentLoaded\", setupExposureLogging);\n\n  if (!window.location.pathname.match(/^\\/admin/)) {\n    logPageViewed();\n  }\n  if (window.location.pathname.match(/^\\/sign-up/)) {\n    logSignUpPageViewed();\n  }\n  if (window.amplitudeAccountCreated) {\n    logAccountCreated();\n  }\n  if (window.amplitudeSubscriptionStarted) {\n    logSubscriptionStarted(window.amplitudeSubscriptionStartedText);\n  }\n}\n\nfunction observeDOMChanges() {\n  const observer = new MutationObserver(setCtaHandlers);\n  observer.observe(document, { childList: true, subtree: true });\n}\n\n// This function is used to log an Amplitude Link/CTA event. It is\n// meant to be similar to amplitudeEventClickHandler, but can be used\n// at will (e.g. onKeyDown handlers) instead of using the data-amplitude property.\n//\n// NOTE: It currently does not support data-amplitude-text or data-amplitude-funnel.\n// If needed, someone can update this function to accomodate.\nexport const logAmplitudeCtaEvent = (amplitudeKey) => {\n  if (amplitudeKey && !amplitudeJSON[amplitudeKey]) return;\n\n  const dataAttributes = amplitudeJSON[amplitudeKey];\n\n  setLastTouchProperties({\n    lastLinkOrCTACategory: dataAttributes.linkOrCTACategory,\n    lastLinkOrCTASubcategory: dataAttributes.linkOrCTASubcategory,\n  });\n  logEvent(\"Link or CTA Clicked\", dataAttributes);\n};\n\nconst amplitudeEventClickHandler = (event) => {\n  const element = event.currentTarget;\n  const dataAttribute = element.getAttribute(\"data-amplitude\");\n  const dataTextAttribute = element.getAttribute(\"data-amplitude-text\");\n  const dataFunnelAttribute = element.getAttribute(\"data-amplitude-funnel\");\n\n  if (dataAttribute && !amplitudeJSON[dataAttribute]) return;\n\n  const dataAttributes = amplitudeJSON[dataAttribute];\n\n  if (dataTextAttribute) {\n    dataAttributes.textInCTAorLink = dataTextAttribute;\n  }\n  if (dataFunnelAttribute) {\n    dataAttributes.stepIntoSubscriptionFunnel = dataFunnelAttribute;\n  }\n  setLastTouchProperties({\n    lastLinkOrCTACategory: dataAttributes.linkOrCTACategory,\n    lastLinkOrCTASubcategory: dataAttributes.linkOrCTASubcategory,\n  });\n  logEvent(\"Link or CTA Clicked\", dataAttributes);\n};\n\nfunction setCtaHandlers() {\n  // Get all elements with data-amplitude=KEY\n  const elements = document.querySelectorAll(\"[data-amplitude]\");\n\n  // Iterate over each element and add a click event listener\n  elements.forEach((element) => {\n    // Remove existing click event listeners\n    element.removeEventListener(\"click\", amplitudeEventClickHandler);\n\n    // Add click event listener\n    element.addEventListener(\"click\", amplitudeEventClickHandler);\n  });\n}\n\n// Observes [data-amplitude-log-exposure-on=viewport] elements, and when they enter the viewport, it logs an Amplitude\n// exposure event for the given data-amplitude-experiment and data-amplitude-variant attributes. Supports AB testing.\nfunction setupExposureLogging() {\n  const elements = document.querySelectorAll(\n    \"[data-amplitude-log-exposure-on=viewport]\"\n  );\n  if (elements.length === 0) {\n    return;\n  }\n\n  const exposureObserver = new IntersectionObserver((entries, observer) => {\n    entries.forEach((entry) => {\n      const isInViewport = entry.intersectionRatio > 0;\n      if (isInViewport) {\n        // Stop observing the element as the exposure event only needs to be logged once.\n        observer.unobserve(entry.target);\n        const request = {\n          method: \"POST\",\n          headers: {\n            \"X-CSRF-Token\": document.querySelector(\"meta[name='csrf-token']\")\n              .content,\n            \"Content-Type\": \"application/json\",\n          },\n          body: JSON.stringify({\n            experiment: entry.target.dataset.amplitudeExperiment,\n            variant: entry.target.dataset.amplitudeVariant,\n          }),\n        };\n        fetch(\"/exposure_events.json\", request).then((response) => {\n          entry.target.dataset.amplitudeLoggedExposure = response.ok; // eslint-disable-line no-param-reassign\n        });\n      }\n    });\n  });\n\n  elements.forEach((element) => {\n    exposureObserver.observe(element);\n  });\n}\n\nfunction initAmplitude() {\n  a().init(window.amplitudeApiKey);\n}\n\nexport function setUser() {\n  if (window.amplitudeUser) {\n    a().setUserId(window.amplitudeUser.id);\n    a().setUserProperties(window.amplitudeUser.properties);\n  }\n}\n\nfunction setLastTouchProperties(properties) {\n  if (pageType() !== \"sign-up\") {\n    a().setUserProperties(properties);\n  }\n}\n\nfunction lastContentPageType() {\n  const contentPageTypes = [\n    \"ai\",\n    \"lit\",\n    \"poetry\",\n    \"literary-devices-and-terms\",\n    \"shakescleare\",\n  ];\n  const page = pageType();\n  if (contentPageTypes.includes(page)) {\n    return { lastContentPageType: page };\n  }\n  return {};\n}\n\n// Amplitude JS docs: https://www.docs.developers.amplitude.com/data/sdks/javascript/\n// convenience method for amplitude.getInstance()\n// and allows us to mock amplitude for testing\nfunction a() {\n  if (window.amplitudeApiKey) {\n    // Amplitude API key is set implying this is not a test environment, so return the real deal:\n    return amplitude.getInstance();\n  }\n\n  // Amplitude API key is NOT set, so this must be a test environment, so return a stub:\n  window.amplitude = window.amplitude || {\n    calls: JSON.parse(sessionStorage.getItem(\"amplitudeStub.calls\") || \"[]\"),\n    userId: null,\n    _reset_stub() {\n      this.userId = null;\n      this.calls = [];\n      sessionStorage.setItem(\"amplitudeStub.calls\", JSON.stringify(this.calls));\n    },\n    addCall(call) {\n      this.calls.push(call);\n      sessionStorage.setItem(\"amplitudeStub.calls\", JSON.stringify(this.calls));\n    },\n    getUserId() {\n      this.addCall([\"getUserId\"]);\n      return this.userId;\n    },\n    init(_apiKey) {\n      this.addCall([\"init\"]);\n    },\n    logEvent(e, properties) {\n      this.addCall([\"logEvent\", e, properties]);\n    },\n    regenerateDeviceId() {\n      this.addCall([\"regenerateDeviceId\"]);\n    },\n    setUserId(id) {\n      this.addCall([\"setUserId\", id]);\n      this.userId = id;\n    },\n    setUserProperties(properties) {\n      this.addCall([\"setUserProperties\", properties]);\n    },\n  };\n\n  return window.amplitude;\n}\n\nexport function logoutUser() {\n  a().setUserId(null); // not string 'null'\n  a().regenerateDeviceId();\n}\n\nfunction defaultProperties() {\n  const pageProperties = window.amplitudePageProperties || {};\n\n  return {\n    ...pageProperties,\n    // gradeLevel = grade levels assigned to the guide. Every text has multiple grade levels associated with it; should capture all such grade levels individuall if possible, or in terms of a range if not.\n    // gradeLevel: pageProperties.gradeLevel,\n\n    // guideSlug = slug of guide after last \"\"/\"\" in URL (only fires on guide pages: lit guides; poetry guides; literary terms guides; shakescleare guides)\n    // guideSlug: pageProperties.guideSlug,\n\n    // guideTitle = title of guide (only fires on guide pages: lit guides; poetry guides; literary terms guides; shakescleare guides)\n    // guideTitle: pageProperties.guideTitle,\n\n    // isPD = yes or no; yes if marked as public domain, no if otherwise (only fires for poetry guides)\n    // isPD: pageProperties.isPD,\n\n    // litGuideBlurredAnalysis = yes or no; yes if a page is part of a lit guide that has the \"blurred analysis\" radio button checked in the admin; no if not\n    // litGuideBlurredAnalysis: pageProperties.litGuideBlurredAnalysis,\n\n    // litGuidePageSubtype = type of lit guide page (column B here) (only fires for lit guide pages)\n    // litGuidePageSubtype: pageProperties.litGuidePageSubtype,\n\n    // litGuideShortStory = yes or no; yes if marked as having just one summary section, no if otherwise (only fires for lit guide pages)\n    // litGuideShortStory: pageProperties.litGuideShortStory,\n\n    // pageType = the portion of the URL that appears immediately after the \"\"www.litcharts.com/\"\" and before either empty space, a \"\"/\"\", or the \"\"?\"\" in \"\"search?query\"\"\n    pageType: pageType(),\n\n    // path = path portion of the URL of the page (equivalent to canonical path which defaults to location.pathname from the DOM API)\n    path: window.location.pathname,\n\n    // poemLineLength = number of lines in a poem (only fires for poetry guides)\n    // TODO\n\n    // pubCohort = mm/yyyy in which guide was published (only fires for lit and poetry guide pages)\n    // pubCohort: pageProperties.pubCohort,\n\n    // referrer = full URL of the previous page (equivalent to document.referrer from the DOM API)\n    referrer: document.referrer,\n\n    // title = title of the page (equivalent to document.title from the DOM API)\n    title: document.title,\n\n    // url = full URL of the page\n    url: window.location.href,\n\n    // breakpoint = viewport breakpoint based on page width\n    breakpoint: getBreakpoint(),\n  };\n}\n\nexport function logAccountCreated() {\n  logEvent(\"Account Created\");\n}\n\nexport function logAiEvent(eventCategory, toolName) {\n  logEvent(\"AI Tool Event or Action\", {\n    aiToolEventCategory: eventCategory,\n    aiToolEventSubcategory: `${eventCategory} - ${toolName}`,\n  });\n}\n\nfunction logSubscriptionStarted(upgradeText = \"No\") {\n  logEvent(\"Subscription Started\", { upgrade: upgradeText });\n}\n\nfunction logPageViewed() {\n  logEvent(\"Page Viewed\");\n}\n\nfunction logEvent(e, properties) {\n  a().logEvent(e, Object.assign(defaultProperties(), properties));\n}\n\nfunction logSignUpPageViewed() {\n  const focus = helpers.getQueryParam(\"focus\");\n  const signUpPageType = helpers.getQueryParam(\"subscription\")\n    ? \"Payment page\"\n    : \"Plan page\";\n\n  let planPageFocusType = \"Default\";\n  if (focus?.toLowerCase() === \"teacher\") {\n    planPageFocusType = \"APlusTeacher\";\n  }\n\n  logEvent(\"Sign Up Page Viewed\", {\n    // signUpPageGeneralOrFocus = either \"General\" or \"Focus\"\n    signUpPageGeneralOrFocus: focus ? \"Focus\" : \"General\",\n    // signUpPageFocusSpecific = if a focused sign up page, what the focus is (use the focus categories we use for the sell page)\n    signUpPageFocusSpecific: focus,\n    signUpPageType,\n    planPageFocusType,\n  });\n}\n\nfunction getBreakpoint() {\n  const width = window.innerWidth;\n\n  if (width < XXS_PIXEL_MAX) {\n    return \"XXS\";\n  }\n  if (width <= XS_PIXEL_MAX) {\n    return \"XS\";\n  }\n  if (width <= SM_PIXEL_MAX) {\n    return \"Small\";\n  }\n  if (width <= MD_PIXEL_MAX) {\n    return \"Medium\";\n  }\n  return \"Large\";\n}\n\nfunction pageType() {\n  return window.location.pathname.split(/\\/|\\?/)[1];\n}\n","class LcOAuth2 {\n  static initGooglePromise;\n\n  static googleAuthButtonLastClicked;\n\n  // Loads and initializes the Google Identity Services Library. This function can be called multiple times, although\n  // the actual load and initialization will only happen once, as recommended by Google.\n  //\n  // Usage:\n  // LcOAuth2.initGoogle().then(() => { console.log('Google lib is initialized'}; )\n  static initGoogle() {\n    if (LcOAuth2.initGooglePromise) {\n      // Initialization has already begun, return the promise.\n      return LcOAuth2.initGooglePromise;\n    }\n\n    // Loads the Google Library by appending a <script> tag to <body>.\n    const loadScript = () =>\n      new Promise((resolve, reject) => {\n        const script = document.createElement(\"script\");\n        script.id = \"google-id-lib\";\n        script.src = window.LitCharts.googleIdLibSrc;\n        script.async = true;\n        script.defer = true;\n        script.onload = () => {\n          resolve();\n        };\n        script.onerror = () => {\n          reject();\n        };\n        document.body.appendChild(script);\n      });\n\n    // Google advises waiting for document to be loaded before calling google.accounts.id.initialize\n    const onDocumentLoaded = () =>\n      new Promise((resolve, _reject) => {\n        if (document.readyState === \"complete\") {\n          // Load event already fired, so resolve immediately.\n          resolve();\n        } else {\n          // Load event not yet fired, add event listener.\n          window.addEventListener(\"load\", resolve);\n        }\n      });\n\n    LcOAuth2.initGooglePromise = loadScript()\n      .then(onDocumentLoaded)\n      .then(() => {\n        const dispatchCredentialResponseEvent = (response) => {\n          // select_by describes how the credential was selected.\n          // If select_by starts with \"user\" \"itp\", or \"fedcm\" then the user clicked from the One Tap prompt.\n          // If select_by starts with \"btn\", then the user clicked a GoogleAuthButton.\n          // https://developers.google.com/identity/gsi/web/reference/js-reference#select_by\n          //\n          // Jan 22, 2024 Note: Google is switching over to FedCM (details below)\n          // and consequently we will need to check for it.\n          // https://developers.google.com/identity/gsi/web/guides/fedcm-migration\n          console.log(\n            `Google Auth: Attempting login via '${response.select_by}'`\n          );\n          const originatedFromOneTap =\n            response.select_by.startsWith(\"user\") ||\n            response.select_by.startsWith(\"fedcm\") ||\n            response.select_by.startsWith(\"itp\");\n          const originatedFromButton = response.select_by.startsWith(\"btn\");\n          if (originatedFromOneTap) {\n            $(document).trigger({\n              type: \"googleIdOneTap:credentialResponse\",\n              response,\n            });\n          } else if (originatedFromButton) {\n            $(LcOAuth2.googleAuthButtonLastClicked).trigger({\n              type: \"googleIdButton:credentialResponse\",\n              response,\n            });\n          } else {\n            console.error(\n              `Google Auth: Unable to respond to ${response.select_by}`\n            );\n          }\n        };\n\n        google.accounts.id.initialize({\n          client_id: window.LitCharts.googleClientId,\n          callback: dispatchCredentialResponseEvent,\n          // Do not close the One Tap widget if a user clicks outside the widget (cancel_on_tap_outside == false). They\n          // must click the close (X) icon.\n          // https://developers.google.com/identity/gsi/web/reference/js-reference#cancel_on_tap_outside\n          cancel_on_tap_outside: false,\n        });\n      });\n    return LcOAuth2.initGooglePromise;\n  }\n}\n\nexport default LcOAuth2;\n","import \"core-js/stable\";\nimport \"regenerator-runtime/runtime\";\nimport \"jquery\";\nimport \"lib/shared/rails_ujs_extensions\";\nimport \"jquery-ujs\";\nimport \"bootstrap-sass\";\nimport \"intersection-observer\"; // Polyfill for IntersectionObserver\n\nimport ReactRailsUJS from \"react_ujs\";\n\n// Expose for use in the Sprockets asset pipeline.\nimport \"helpers/base\";\n\nexport const initializePack = ({ initializers, components }) => {\n  initializers.forEach((initializer) => initializer.initialize());\n\n  ReactRailsUJS.useContext(components);\n};\n","// rails:attachBindings event is fired by rails-ujs just before it attaches its own handlers, so the custom handlers\n// below are attached *before* the rails-ujs handlers.\n$(document).on(\"rails:attachBindings\", () => {\n  function handlePrompt(event) {\n    const message = $(event.currentTarget).data(\"prompt\");\n    const result = window.prompt(message); // eslint-disable-line no-alert\n\n    if (result === \"litcharts\") {\n      // User entered correct text\n      return true;\n    }\n\n    if (result == null) {\n      // User clicked cancel\n    } else {\n      // User did not enter the correct text.\n      window.alert(\"Sorry, please enter the correct text.\"); // eslint-disable-line no-alert\n    }\n\n    event.stopImmediatePropagation();\n    event.stopPropagation();\n    event.preventDefault();\n    return false;\n  }\n\n  // Attach listeners to document so they're ready ASAP without having to wait for DOM ready,\n  // improves reliability during testing.\n  $(document).on(\"submit\", \"form[data-prompt]\", handlePrompt);\n\n  // It is essential that this a[data-prompt] handler is attached on the rails:attachBindings event, so\n  // this custom handler will run *before* the Rails UJS a[data-method] handler, allowing a cancelled\n  // or failed prompt to stop click event propagating to the a[data-method] handler.\n  $(document).on(\"click\", \"a[data-prompt]\", handlePrompt);\n});\n","export default class LcView {\n  constructor(definition) {\n    Object.assign(this, definition);\n  }\n\n  initialize() {}\n\n  ready() {}\n\n  static create(definition) {\n    const obj = new LcView(definition);\n    obj.initialize();\n    return obj;\n  }\n}\n","import LcView from \"lib/shared/view\";\n\nexport default LcView.create({\n  ready: () => {\n    //\n    // Bind element num toggle\n    //\n    $(\"#has-num-elements_yes\").on(\"click\", () => {\n      $(\".edit-backend-collection__num-ele-label\").removeClass(\"disabled\");\n      $(\"#collection_num_elements\").attr(\"disabled\", false);\n    });\n\n    $(\"#has-num-elements_no\").on(\"click\", () => {\n      $(\".edit-backend-collection__num-ele-label\").addClass(\"disabled\");\n      $(\"#collection_num_elements\").attr(\"disabled\", true);\n      $(\"#collection_num_elements\").val(\"\");\n    });\n\n    //\n    // Bind create new description (collection/element) modals\n    //\n    $(\".edit-backend-collection__submit-create-description\").on(\n      \"click\",\n      function (e) {\n        e.preventDefault();\n\n        const $form = $(this)\n          .parent(\".modal-footer\")\n          .siblings(\".modal-body\")\n          .find(\"form\");\n        const path = `/admin/${$form.attr(\"action\")}`;\n\n        $.post(path, $form.serialize())\n          .done(() => {\n            const selector = `#${$form.data(\"selector\")}`;\n            const $select = $(selector);\n            $(`${selector} option:selected`).removeAttr(\"selected\");\n            const val = $form.find(\"input[type='text']\").val();\n\n            $select.append(\n              `<option value='${val}' selected='selected'>${val} - NEW</option>`\n            );\n            $select.trigger(\"chosen:updated\");\n\n            $(\".modal\").modal(\"hide\");\n            $form.find(\"input[type='text']\").val(\"\");\n          })\n          .fail((data) => {\n            $(\".edit-backend-collections__form-errors\").html(data.errors);\n          });\n      }\n    );\n\n    //\n    // Populate element data\n    //\n\n    const elementData = [];\n\n    $(\".edit-backend-collection__collections-list li\").each(function () {\n      const $li = $(this);\n\n      const $input = $li.find(\"input[type='hidden']\");\n\n      this.addEventListener(\"drag\", setDragging);\n      this.addEventListener(\"dragover\", setDraggedOver);\n      this.addEventListener(\"drop\", onDrop);\n\n      elementData.push({\n        id: $input.data(\"id\"),\n        title: $input.data(\"title\"),\n        author: $input.data(\"author\"),\n        type: $input.data(\"type\"),\n      });\n    });\n\n    //\n    // Add to element data when selecting a new element\n    //\n\n    $(\".edit-backend-collection__add-to-collection\").on(\"click\", (e) => {\n      e.preventDefault();\n\n      const $opt = $(\"#collection_elements option:selected\");\n      elementData.push({\n        id: $opt.data(\"id\"),\n        title: $opt.data(\"title\"),\n        author: $opt.data(\"author\"),\n        type: $opt.data(\"type\"),\n      });\n\n      renderElementList(elementData);\n    });\n\n    //\n    // Renders list of elements from elementData\n    //\n\n    const renderElementList = (data) => {\n      const list = document.querySelector(\n        \".edit-backend-collection__collections-list\"\n      );\n      list.innerText = \"\";\n\n      let i = 0;\n\n      data.forEach((item) => {\n        const node = document.createElement(\"li\");\n        node.setAttribute(\"draggable\", true);\n        node.addEventListener(\"drag\", setDragging);\n        node.addEventListener(\"dragover\", setDraggedOver);\n        node.addEventListener(\"drop\", onDrop);\n\n        if (item.author) {\n          node.innerText = `${item.title} (${item.author})`;\n        } else {\n          node.innerText = item.title;\n        }\n\n        const span = document.createElement(\"span\");\n        const deleteLink = document.createElement(\"a\");\n        deleteLink.setAttribute(\"href\", \"#\");\n        deleteLink.dataset.index = i;\n        deleteLink.className = \"edit-backend-collection__delete-link\";\n        deleteLink.innerText = \" Delete from collection\";\n\n        span.appendChild(deleteLink);\n        node.appendChild(span);\n\n        node.dataset.index = i;\n        list.appendChild(node);\n\n        const input = document.createElement(\"input\");\n        input.setAttribute(\"type\", \"text\");\n        input.setAttribute(\"hidden\", true);\n        input.setAttribute(\"value\", `${item.type}-${item.id}`);\n        input.setAttribute(\"name\", \"collection[elements][]\");\n\n        node.appendChild(input);\n\n        $(deleteLink).on(\"click\", bindDeleteElementLink);\n\n        i += 1;\n      });\n    };\n\n    //\n    // Set up drag and drop functionality\n    //\n\n    let dragging;\n    let draggedOver;\n\n    const setDragging = (e) => {\n      dragging = parseInt(e.target.dataset.index);\n    };\n\n    function setDraggedOver(e) {\n      e.preventDefault();\n      draggedOver = parseInt(e.target.dataset.index);\n    }\n\n    function onDrop() {\n      const [ele] = elementData.splice(dragging, 1);\n      elementData.splice(draggedOver, 0, ele);\n\n      renderElementList(elementData);\n    }\n\n    //\n    // Delete element from collection functionality\n    //\n\n    function bindDeleteElementLink(e) {\n      e.preventDefault();\n\n      const index = $(this).data(\"index\");\n\n      const ele = elementData[index];\n\n      $(\n        \".edit-backend-collection__delete-element-from-collection-modal .modal-body\"\n      ).html(\n        `Title: ${ele.title}, Type: ${ele.type}, Author (if applicable): ${ele.author}`\n      );\n\n      $(\".edit-backend-collection__delete-element-from-collection-modal\").modal(\n        \"show\"\n      );\n\n      $(\".edit-backend-collection__delete-element-from-collection-modal\").data(\n        \"index\",\n        index\n      );\n    }\n\n    $(\".edit-backend-collection__delete-link\").on(\n      \"click\",\n      bindDeleteElementLink\n    );\n\n    $(\".edit-backend-collection__submit-delete-element\").on(\"click\", (e) => {\n      e.preventDefault();\n\n      elementData.splice(\n        $(\n          \".edit-backend-collection__delete-element-from-collection-modal\"\n        ).data(\"index\"),\n        1\n      );\n\n      $(\".edit-backend-collection__delete-element-from-collection-modal\").data(\n        \"index\",\n        null\n      );\n      $(\n        \".edit-backend-collection__delete-element-from-collection-modal .modal-body\"\n      ).html(\"\");\n      $(\".edit-backend-collection__delete-element-from-collection-modal\").modal(\n        \"hide\"\n      );\n\n      renderElementList(elementData);\n    });\n  },\n});\n","import LcView from \"lib/shared/view\";\n\nexport default LcView.create({\n  ready: () => {\n    const $newCollectionModal = $(\".backend-collections__new-collection-modal\");\n\n    $newCollectionModal.on(\"hidden.bs.modal\", () => {\n      $(\".backend-requests__new-collection-form\").trigger(\"reset\");\n\n      $(\".backend-collections__error-field\").removeClass(\n        \"backend-collections__error-field\"\n      );\n      $(\".backend-collections__new-collection-form-errors\").html(\"\");\n    });\n\n    // Attach errors if any on create new request from modal or just submit if no errors\n    $(\".backend-collections__submit-create-form\").click(async (e) => {\n      e.preventDefault();\n\n      const errors = await getFormErrors();\n\n      $(\".backend-collections__error-field\").removeClass(\n        \"backend-collections__error-field\"\n      );\n      $(\".backend-collections__new-collection-form-errors\").html(\"\");\n\n      if (!errors) {\n        $(\".backend-collections__new-collection-form\").submit();\n      } else {\n        Object.keys(errors).forEach((err) => {\n          const $field = $(\n            `.backend-collections__new-collection-form [name=\"collection[${err}]\"]`\n          );\n          $field.addClass(\"backend-collections__error-field\");\n\n          if (err === \"base\") {\n            $(\".backend-collections__new-collection-form-errors\").append(\n              `<li>${errors[err]}</li>`\n            );\n          } else {\n            $(\".backend-collections__new-collection-form-errors\").append(\n              `<li>${err}: ${errors[err]}</li>`\n            );\n          }\n        });\n      }\n    });\n\n    // Validate create form via backend\n    async function getFormErrors() {\n      const data = $(\".backend-collections__new-collection-form\").serialize();\n\n      try {\n        await $.ajax({\n          data,\n          url: \"collections/validate\",\n          type: \"GET\",\n        });\n\n        return false;\n      } catch (e) {\n        return e.responseJSON || {};\n      }\n    }\n  },\n});\n","import consumer from \"./consumer\";\n\nconst discussionQuestionsChannel = function () {\n  consumer.subscriptions.create(\"DiscussionQuestionsChannel\", {\n    connected() {\n      // console.log('connected');\n    },\n\n    disconnected() {\n      // console.log('disconnected')\n      // Called when the subscription has been terminated by the server\n    },\n\n    received(data) {\n      $(\"#response-area\").html(data.body);\n    },\n  });\n};\n\nexport default discussionQuestionsChannel;\n","import LcView from \"lib/shared/view\";\nimport discussionQuestionsChannel from \"channels/discussion_questions_channel\";\n\nexport default LcView.create({\n  ready() {\n    $(\"body\").on(\"submit\", \"form#prototype-form\", function () {\n      $.ajax({\n        type: \"POST\",\n        url: $(this).attr(\"action\"),\n        data: $(this).serialize(),\n        dataType: \"json\",\n        beforeSend() {\n          $(\"#result-indicator\").html(\"Submitted. Please wait.\");\n          $(\"#response-area\").html(\"\");\n          $(\"#prompt-area\").html(\"\");\n        },\n        success(data, _status, _settings) {\n          const finalPrompt = data.final_prompt;\n          $(\"#prompt-area\").text(finalPrompt);\n        },\n        error(data, status, _settings) {\n          if (status === \"timeout\") {\n            $(\"#result-indicator\").html(\"Timed out.\");\n          } else {\n            $(\"#result-indicator\").html(data.responseText);\n          }\n        },\n      });\n      return false;\n    });\n\n    $(\"#resource\").change(function () {\n      const url = new URL(window.location.href);\n      url.searchParams.set(\"resource\", $(this).val());\n      window.location.assign(url.search);\n    });\n\n    $(\"#focus\").change(function () {\n      $.ajax({\n        type: \"GET\",\n        url: $(this).data(\"subfocusUrl\"),\n        data: {\n          focus: $(this).val(),\n          resource: $(\"#resource\").val(),\n        },\n        dataType: \"json\",\n        success(data) {\n          const { subfocuses } = data;\n          const subfocusOptions = $(\"#subfocus\");\n\n          subfocusOptions.empty();\n          subfocuses.forEach((subfocus) => {\n            const option = document.createElement(\"option\");\n            option.innerText = subfocus;\n            subfocusOptions.append(option);\n          });\n        },\n        error(data) {\n          $(\"#result-indicator\").html(data.responseText);\n        },\n      });\n    });\n\n    discussionQuestionsChannel();\n  },\n});\n","import consumer from \"./consumer\";\n\nconst EssayPromptsChannel = function () {\n  consumer.subscriptions.create(\"EssayPromptsChannel\", {\n    connected() {\n      // console.log('connected');\n    },\n\n    disconnected() {\n      // console.log('disconnected')\n      // Called when the subscription has been terminated by the server\n    },\n\n    received(data) {\n      $(\"#response-area\").html(data.body);\n    },\n  });\n};\n\nexport default EssayPromptsChannel;\n","import LcView from \"lib/shared/view\";\nimport EssayPromptsChannel from \"channels/essay_prompts_channel\";\n\nexport default LcView.create({\n  ready() {\n    $(\"body\").on(\"submit\", \"form#prototype-form\", function () {\n      $.ajax({\n        type: \"POST\",\n        url: $(this).attr(\"action\"),\n        data: $(this).serialize(),\n        dataType: \"json\",\n        beforeSend() {\n          $(\"#result-indicator\").html(\"Submitted. Please wait.\");\n          $(\"#guide-portion-area\").html(\"\");\n          $(\"#response-area\").html(\"\");\n          $(\"#prompt-area\").html(\"\");\n        },\n        success(data, _status, _settings) {\n          const finalPrompt = data.final_prompt;\n          const chunks = data.resource_materials;\n\n          $(\"#prompt-area\").text(finalPrompt);\n          $(\"#guide-portion-area\").text(chunks);\n        },\n        error(data, status, _settings) {\n          if (status === \"timeout\") {\n            $(\"#result-indicator\").html(\"Timed out.\");\n          } else {\n            $(\"#result-indicator\").html(data.responseText);\n          }\n        },\n      });\n      return false;\n    });\n    EssayPromptsChannel();\n  },\n});\n","import consumer from \"./consumer\";\n\nconst qAndAiChannel = function () {\n  consumer.subscriptions.create(\"QAndAiChannel\", {\n    connected() {\n      // console.log('connected');\n    },\n\n    disconnected() {\n      // console.log('disconnected')\n      // Called when the subscription has been terminated by the server\n    },\n\n    received(data) {\n      if (data.body) {\n        $(\"#response-area\").html(data.body);\n      } else if (data.stop) {\n        console.log(\"End of transmission!\");\n      }\n    },\n  });\n};\n\nexport default qAndAiChannel;\n","import LcView from \"lib/shared/view\";\nimport qAndAiChannel from \"channels/q_and_ai_channel\";\n\nexport default LcView.create({\n  ready() {\n    $(\"body\").on(\"submit\", \"form#prototype-form\", function () {\n      $.ajax({\n        type: \"POST\",\n        url: $(this).attr(\"action\"),\n        data: $(this).serialize(),\n        dataType: \"json\",\n        beforeSend() {\n          $(\"#result-indicator\").html(\"Submitted. Please wait.\");\n          $(\"#chunk-area\").html(\"\");\n          $(\"#response-area\").html(\"\");\n          $(\"#prompt-area\").html(\"\");\n        },\n        success(data, _status, _settings) {\n          const finalPrompt = data.final_prompt;\n          const chunks = data.included_chunks;\n\n          $(\"#prompt-area\").text(finalPrompt);\n\n          $.each(chunks, function (i, chunk) {\n            $(\"#chunk-area\").append(\n              `<tr style='border-bottom: 1px solid black;'><td>${chunk.body}</td><td>${chunk.similarity}</td></tr>`\n            );\n          });\n        },\n        error(data, status, _settings) {\n          if (status === \"timeout\") {\n            $(\"#result-indicator\").html(\"Timed out.\");\n          } else {\n            $(\"#result-indicator\").html(data.responseText);\n          }\n        },\n      });\n      return false;\n    });\n    qAndAiChannel();\n  },\n});\n","import consumer from \"./consumer\";\n\nconst quizQuestionsChannel = function () {\n  consumer.subscriptions.create(\"QuizQuestionsChannel\", {\n    connected() {\n      // console.log('connected');\n    },\n\n    disconnected() {\n      // console.log('disconnected')\n      // Called when the subscription has been terminated by the server\n    },\n\n    received(data) {\n      $(\"#response-area\").html(data.body);\n    },\n  });\n};\n\nexport default quizQuestionsChannel;\n","import LcView from \"lib/shared/view\";\nimport quizQuestionsChannel from \"../../../../channels/quiz_questions_channel\";\n\nexport default LcView.create({\n  ready() {\n    $(\"body\").on(\"submit\", \"form#prototype-form\", function () {\n      $.ajax({\n        type: \"POST\",\n        url: $(this).attr(\"action\"),\n        data: $(this).serialize(),\n        dataType: \"json\",\n        beforeSend() {\n          $(\"#result-indicator\").html(\"Submitted. Please wait.\");\n          $(\"#response-area\").html(\"\");\n          $(\"#prompt-area\").html(\"\");\n          $(\"#guide-portion-sent\").html(\"\");\n        },\n        success(data, _status, _settings) {\n          const finalPrompt = data.final_prompt;\n          const guidePortionSent = data.guide_portion_sent;\n\n          $(\"#prompt-area\").text(finalPrompt);\n          $(\"#guide-portion-sent\").text(guidePortionSent);\n        },\n        error(data, status, _settings) {\n          if (status === \"timeout\") {\n            $(\"#result-indicator\").html(\"Timed out.\");\n          } else {\n            $(\"#result-indicator\").html(data.responseText);\n          }\n        },\n      });\n      return false;\n    });\n\n    $(\"#quiz_focus\").change(function () {\n      const summarySectionOptions = $(\"#summary_section\");\n      summarySectionOptions.empty();\n\n      if ($(this).val() === \"Summary & Analysis\") {\n        $.ajax({\n          type: \"GET\",\n          url: $(this).data(\"summarySectionsPath\"),\n          data: { focus: $(this).val(), resource_id: $(\"#resource\").val() },\n          dataType: \"json\",\n          success(data) {\n            data.summary_sections.forEach((summarySection) => {\n              const option = document.createElement(\"option\");\n              [option.innerText, option.value] = summarySection;\n              summarySectionOptions.append(option);\n            });\n          },\n          error(data) {\n            $(\"#result-indicator\").html(data.responseText);\n          },\n        });\n      }\n    });\n    quizQuestionsChannel();\n  },\n});\n","import LcView from \"lib/shared/view\";\nimport PoetryPoemsShow from \"views/poetry/poems/show\";\n\nexport default LcView.create(\n  Object.assign(PoetryPoemsShow, {\n    ajaxPoemLoad() {\n      const id = $(this.selectors.MAIN).data(\"id\");\n      return $.ajax({\n        url: `/admin/poems/${id}/load`,\n        type: \"GET\",\n        dataType: \"json\",\n      });\n    },\n  })\n);\n","// Perform a series of async functions in the order they are pushed to the queue\n// like a series of ajax requests\n//\n// Usage:\n//   const myFunc = async function(params) { await $.ajax(...) }\n//   const queue = new AsyncQueue();\n//   queue.push(myFunc, { data: 1 });\n//   queue.push(myFunc, { data: 2 });\n//\n\nclass AsyncQueue {\n  constructor() {\n    this.queue = [];\n    this.working = false;\n    this.currentFunc = null;\n  }\n\n  // Push an async func with its params to be called by the queue. Can be called\n  // while the queue is already working\n  push(asyncFunc, params) {\n    this.queue.push({ asyncFunc, params });\n\n    this.work();\n  }\n\n  // Use when you want at most one element in the queue, like for a search filter\n  // as the user is typing\n  forcePush(asyncFunc, params) {\n    this.queue[0] = { asyncFunc, params };\n\n    this.work();\n  }\n\n  // Call to start processing the queue. Can be called multiple times without\n  // adverse effects while the queue is working\n  async work() {\n    if (this.working || this.queue.length === 0) return;\n\n    this.working = true;\n\n    while (this.working) {\n      if (this.queue.length === 0) {\n        this.working = false;\n      } else {\n        const { asyncFunc, params } = this.queue.shift();\n\n        this.currentFunc = asyncFunc;\n\n        // eslint-disable-next-line no-await-in-loop\n        await asyncFunc(params);\n\n        this.currentFunc = null;\n      }\n    }\n  }\n}\n\nexport default AsyncQueue;\n","import AsyncQueue from \"helpers/AsyncQueue\";\nimport LcView from \"lib/shared/view\";\n\n// Updates a backend request object via API\nasync function updateRequest(requestData) {\n  const { id, attribute, value } = requestData;\n\n  await $.ajax({\n    data: {\n      request: { [attribute]: value },\n    },\n    method: \"PATCH\",\n    url: `requests/${id}`,\n  });\n}\n\n// Fetches a list of request objects, builds the appropriate html structure\n// based off .backend-requests__request-template, and appends to the page\nasync function getFilteredRequests(filter) {\n  await $.get(\"requests.json\", filter, (data) => {\n    const $list = $(\".backend-requests__request-list\");\n    $list.html(\"\");\n\n    data.forEach((request) => {\n      const clone = $(\n        \".backend-requests__request-template .backend-requests__request\"\n      ).clone(true);\n\n      clone.attr(\"data-request-id\", request.id);\n      clone.attr(\"data-requesters\", request.requesterData);\n      clone\n        .find(\".backend-requests__editors-note-modal-link\")\n        .attr(\"data-content\", request.editorNote);\n\n      clone.find(\".backend-requests__request-type\").val(request.requestType);\n      clone.find(\".backend-requests__request-title\").val(request.title);\n      clone.find(\".backend-requests__request-author\").val(request.author);\n      clone\n        .find(\".backend-requests__request-created-at\")\n        .html(request.formattedCreatedAt);\n\n      clone\n        .find(\".backend-requests__request-search-volume-title\")\n        .val(request.searchVolumeTitle);\n      clone.find(\".backend-requests__request-source\").val(request.source);\n      clone.find(\".backend-requests__request-length\").val(request.length);\n      clone\n        .find(\".backend-requests__request-vote-count\")\n        .html(request.voteCount);\n\n      clone\n        .find(\".backend-requests__editors-note-modal-link\")\n        .html(`Editor's Note (${request.editorNoteCount})`);\n      clone\n        .find(\".backend-requests__requester-comments-modal-link\")\n        .html(`Requester Comments (${request.commentCount})`);\n      clone\n        .find(\".backend-requests__requesters-modal-link\")\n        .html(request.requesterCount);\n\n      showCorrectSubtypes(clone, request.requestType);\n\n      if (request.approved) {\n        clone.find(\".backend-requests__request-approved\").prop(\"checked\", true);\n        clone.addClass(\"backend-requests__request--approved\");\n      }\n\n      if (request.published) {\n        clone\n          .find(\".backend-requests__request-published\")\n          .prop(\"checked\", true);\n        clone.find(\"input, select\").prop(\"disabled\", true);\n        clone\n          .find(\".backend-requests__merge-request-link\")\n          .parent()\n          .html(\"Merge\");\n        clone\n          .find(\".backend-requests__delete-request-link\")\n          .parent()\n          .html(\"Delete\");\n      }\n\n      if (request.requestType === \"literature_guide\") {\n        clone\n          .find(\n            \".backend-requests__lit-guide-sub-types .backend-requests__request-sub-type\"\n          )\n          .val(request.subType);\n      } else {\n        clone\n          .find(\n            \".backend-requests__poetry-guide-sub-types .backend-requests__request-sub-type\"\n          )\n          .val(request.subType);\n      }\n\n      $list.append(clone);\n    });\n\n    // Apply chosen all at once after filtering is done\n    $(\n      \".backend-requests__request-list .backend-requests__lit-guide-sub-types .backend-requests__request-sub-type\"\n    )\n      .not(\":disabled\")\n      .chosen();\n  });\n}\n\n// Shows correct subtype dropdowns based on the request type\nfunction showCorrectSubtypes($request, value) {\n  if (value === \"literature_guide\") {\n    $request\n      .find(\".backend-requests__lit-guide-sub-types\")\n      .removeClass(\"hidden\");\n    $request\n      .find(\".backend-requests__poetry-guide-sub-types\")\n      .addClass(\"hidden\");\n  } else {\n    $request.find(\".backend-requests__lit-guide-sub-types\").addClass(\"hidden\");\n    $request\n      .find(\".backend-requests__poetry-guide-sub-types\")\n      .removeClass(\"hidden\");\n  }\n}\n\nexport default LcView.create({\n  ready: () => {\n    const updateQueue = new AsyncQueue();\n\n    const $deleteModal = $(\".backend-requests__delete-request-modal\");\n    const $newRequestModal = $(\".backend-requests__new-request-modal\");\n    const $editorsNoteModal = $(\".backend-requests__editor-note-modal\");\n    const $editorsNoteEdit = $editorsNoteModal.find(\n      \".backend-requests__editor-note-edit\"\n    );\n    const $mergeModal = $(\".backend-requests__merge-request-modal\");\n    const $requestersModal = $(\".backend-requests__requesters-modal\");\n    const $requesterCommentsModal = $(\n      \".backend-requests__requester-comments-modal\"\n    );\n\n    let filter = {\n      textSearch: \"\",\n      filterApproved: false,\n      approved: null,\n      filterPublished: false,\n      published: null,\n      sortBy: \"created_at\",\n    };\n\n    function updateFilter(updatedParams, opts = {}) {\n      filter = {\n        ...filter,\n        ...updatedParams,\n      };\n\n      const { forcePush = false } = opts;\n\n      if (forcePush) {\n        updateQueue.forcePush(getFilteredRequests, filter);\n      } else {\n        updateQueue.push(getFilteredRequests, filter);\n      }\n    }\n\n    // Bind filter text search. Uses forcePush option of asyncQueue\n    // in order to prevent multiple searches queueing up\n    $(\".backend-requests__filter\").on(\"input\", function () {\n      const $this = $(this);\n      const val = $this.val();\n\n      updateFilter({ textSearch: val }, { forcePush: true });\n    });\n\n    // Binds filter of selected request types by approved/publish from the\n    // select dropdown\n    $(\".backend-requests__select-filter\").change(function () {\n      const selectedValues = $(this).val();\n      let filterApproved = false;\n      let approved = null;\n\n      let filterPublished = false;\n      let published = null;\n\n      if (selectedValues.indexOf(\"unapproved\") < 0) {\n        filterApproved = true;\n        approved = true;\n      }\n\n      if (selectedValues.indexOf(\"approved\") < 0) {\n        filterApproved = true;\n        approved = approved ? null : false;\n      }\n\n      if (selectedValues.indexOf(\"unpublished\") < 0) {\n        filterPublished = true;\n        published = true;\n      }\n\n      if (selectedValues.indexOf(\"published\") < 0) {\n        filterPublished = true;\n        published = published ? null : false;\n      }\n\n      updateFilter({\n        approved,\n        published,\n        filterApproved,\n        filterPublished,\n      });\n    });\n\n    // Binds correct url to each respective lit/poetry csv downloads, applying\n    // the current filter options\n    $(\".backend-requests__download\").click(function (e) {\n      let filterStr = \"\";\n      Object.keys(filter).forEach((key) => {\n        filterStr += `&${key}=${filter[key]}`;\n      });\n\n      const requestType = $(this).data(\"requestType\");\n\n      e.originalEvent.currentTarget.href = `requests.csv?requestType=${requestType}_guide${filterStr}`;\n    });\n\n    // Bind type select in create new request modal\n    $(\".backend-requests__type-select\").change(function () {\n      if (this.value === \"literature_guide\") {\n        $(\".backend-requests__dynamic-field\").html(\n          $(\".backend-requests__lit-guide-fields\").html()\n        );\n        $(\"#request_sub_type\").chosen();\n      } else if (this.value === \"poetry_guide\") {\n        $(\".backend-requests__dynamic-field\").html(\n          $(\".backend-requests__poetry-guide-fields\").html()\n        );\n      }\n    });\n\n    // Attach errors if any on create new request from modal or just submit if no errors\n    $(\".backend-requests__submit-create-form\").click(async (e) => {\n      e.preventDefault();\n\n      const errors = await getFormErrors();\n\n      $(\".backend-requests__error-field\").removeClass(\n        \"backend-requests__error-field\"\n      );\n      $(\".backend-requests__new-request-form-errors\").html(\"\");\n\n      if (!errors) {\n        $(\".backend-requests__new-request-form\").submit();\n      } else {\n        Object.keys(errors).forEach((err) => {\n          const $field = $(\n            `.backend-requests__new-request-form [name=\"request[${err}]\"]`\n          );\n          $field.addClass(\"backend-requests__error-field\");\n\n          if (err === \"base\") {\n            $(\".backend-requests__new-request-form-errors\").append(\n              `<li>${errors[err]}</li>`\n            );\n          } else {\n            $(\".backend-requests__new-request-form-errors\").append(\n              `<li>${err}: ${errors[err]}</li>`\n            );\n          }\n        });\n      }\n    });\n\n    $(\".backend-requests__select-sort\").on(\"change\", function () {\n      const val = $(this).val();\n\n      updateFilter({ sortBy: val });\n    });\n\n    // Validate create form via backend\n    async function getFormErrors() {\n      const data = $(\".backend-requests__new-request-form\").serialize();\n\n      try {\n        await $.ajax({\n          data,\n          url: \"requests/validate\",\n          type: \"GET\",\n        });\n\n        return false;\n      } catch (e) {\n        return e.responseJSON;\n      }\n    }\n\n    // Queues up an update action whenever an input is typed in to immediately\n    // update a request object's data as the admin is typing\n    $(\".backend-requests__request input\").on(\"input\", function () {\n      const $this = $(this);\n      const attribute = $this.attr(\"name\");\n      const id = $this.closest(\".backend-requests__request\").data(\"request-id\");\n      const value = $this.val();\n\n      updateQueue.push(updateRequest, {\n        attribute,\n        id,\n        value,\n      });\n    });\n\n    // Queues up an update action for a checkbox\n    $(\".backend-requests__request input:checkbox\").on(\"change\", function () {\n      const $this = $(this);\n      const attribute = $this.attr(\"name\");\n      const $request = $this.closest(\".backend-requests__request\");\n      const id = $request.data(\"request-id\");\n      const $unapprovedCount = $(\".backend-requests__unapproved-count\");\n      const value = $this.prop(\"checked\");\n\n      updateQueue.push(updateRequest, {\n        attribute,\n        id,\n        value,\n      });\n\n      // Approved requests have a different background color\n      if (attribute === \"approved\") {\n        value\n          ? $request.addClass(\"backend-requests__request--approved\")\n          : $request.removeClass(\"backend-requests__request--approved\");\n        $unapprovedCount.text(\n          parseInt($unapprovedCount.text()) + (value ? -1 : 1)\n        );\n      }\n    });\n\n    // Queues up an update action for a select dropdown\n    $(\".backend-requests__request select\").on(\"change\", function () {\n      const $this = $(this);\n      const attribute = $this.attr(\"name\");\n      const $request = $this.closest(\".backend-requests__request\");\n      const id = $request.data(\"request-id\");\n      const value = $this.val();\n\n      updateQueue.push(updateRequest, {\n        attribute,\n        id,\n        value,\n      });\n\n      // on request type change, sub_type and length are cleared and the sub_type\n      // dropdowns need to be updated to match the new request type\n      if (attribute === \"request_type\") {\n        $request.find(\".backend-requests__request-length\").val(\"\");\n        showCorrectSubtypes($request, value);\n      }\n    });\n\n    // Queues up an update when the editor's note textfield is updated\n    $editorsNoteEdit.on(\"input\", function () {\n      const $this = $(this);\n      const attribute = \"editor_note\";\n      const id = $this.data(\"request-id\");\n      const value = $this.val();\n\n      const $editorNoteText = $(\n        `.backend-requests__request[data-request-id=${id}] .backend-requests__editors-note-modal-link`\n      );\n      if (value === \"\") {\n        $editorNoteText.html(\"Editor's Note (0)\");\n      } else {\n        $editorNoteText.html(\"Editor's Note (1)\");\n      }\n\n      $editorNoteText.data(\"content\", value);\n\n      updateQueue.push(updateRequest, {\n        attribute,\n        id,\n        value,\n      });\n    });\n\n    // Allow submitting and sets clarification text on merge modal\n    $mergeModal.on(\"change\", \".backend-requests__merge-select\", function () {\n      $mergeModal\n        .find(\".backend-requests__merge-modal-confirm\")\n        .attr(\"disabled\", false);\n      $mergeModal\n        .find(\".backend-requests__merge-request-target\")\n        .html($(this).find(\"option:selected\").text());\n    });\n\n    // Show confirmation for merge modal\n    $mergeModal.find(\".backend-requests__merge-modal-confirm\").click((e) => {\n      // jquery-ujs tries to submit the form when this button is pressed so we\n      // prevent it\n      e.preventDefault();\n      $mergeModal.find(\".step-1\").hide();\n      $mergeModal.find(\".step-2\").show();\n    });\n\n    //\n    // Modal binding\n    //\n    // All of the modals on this page are shared between all the rendered requests\n    // so each modal dynamically loads its HTML on open based on the request that\n    // opened it, and clears it's dynamic HTML on close as cleanup\n\n    $(\".backend-requests__delete-request-link\").click(function (e) {\n      e.preventDefault();\n\n      const $this = $(this);\n      const $request = $this.closest(\".backend-requests__request\");\n\n      const title =\n        $request.find(\".backend-requests__request-title\").val() || \"(BLANK)\";\n      const author =\n        $request.find(\".backend-requests__request-author\").val() || \"(BLANK)\";\n\n      $deleteModal\n        .find(\"form\")\n        .attr(\"action\", `/admin/requests/${$request.data(\"request-id\")}`);\n      $deleteModal\n        .find(\".backend-requests__delete-request-info\")\n        .html(`${title} by ${author}`);\n\n      $deleteModal.modal(\"show\");\n    });\n\n    $(\".backend-requests__editors-note-modal-link\").click(function (e) {\n      e.preventDefault();\n\n      const $this = $(this);\n      const $request = $this.closest(\".backend-requests__request\");\n      const id = $request.data(\"request-id\");\n      const $editorNoteText = $(\n        `.backend-requests__request[data-request-id=${id}] .backend-requests__editors-note-modal-link`\n      );\n\n      $editorsNoteEdit.data(\"request-id\", id);\n      $editorsNoteEdit.val($editorNoteText.data(\"content\"));\n      $editorsNoteModal.modal(\"show\");\n    });\n\n    $(\".backend-requests__merge-request-link\").click(function (e) {\n      e.preventDefault();\n\n      const $this = $(this);\n      const $request = $this.closest(\".backend-requests__request\");\n      const id = $request.data(\"request-id\");\n\n      $mergeModal.data(\"request-id\", id);\n\n      const title =\n        $request.find(\".backend-requests__request-title\").val() || \"(BLANK)\";\n      const author =\n        $request.find(\".backend-requests__request-author\").val() || \"(BLANK)\";\n\n      let action = $mergeModal.find(\"form\").attr(\"action\");\n      action = action.replace(\"ID\", id);\n      $mergeModal.find(\"form\").attr(\"action\", action);\n\n      $mergeModal.find(\".backend-requests__merge-request-title\").html(title);\n      $mergeModal.find(\".backend-requests__merge-request-author\").html(author);\n\n      // Prevent merging a request into itself\n      $(`#merge_target option[value=\"${id}\"]`).attr(\"disabled\", \"disabled\");\n      $(\"#merge_target\").trigger(\"chosen:updated\");\n\n      $mergeModal.modal(\"show\");\n    });\n\n    $(\".backend-requests__requesters-modal-link\").click(function (e) {\n      e.preventDefault();\n\n      let requesterData = $(this)\n        .closest(\".backend-requests__request\")\n        .data(\"requesters\");\n\n      if (requesterData.constructor === String) {\n        requesterData = JSON.parse(requesterData);\n      }\n\n      const $tbody = $(\".backend-requests__requesters-table tbody\");\n\n      requesterData.forEach((requester) => {\n        $tbody.append(`\n          <tr>\n            <td>${requester.username}</td>\n            <td>${requester.email}</td>\n            <td>${requester.iama}</td>\n            <td>${requester.subscription}</td>\n          </tr>\n        `);\n      });\n\n      $requestersModal.modal(\"show\");\n    });\n\n    $(\".backend-requests__requester-comments-modal-link\").click(function (e) {\n      e.preventDefault();\n\n      let requesterData = $(this)\n        .closest(\".backend-requests__request\")\n        .data(\"requesters\");\n\n      if (requesterData.constructor === String) {\n        requesterData = JSON.parse(requesterData);\n      }\n\n      const $tbody = $(\".backend-requests__requester-comments\");\n\n      requesterData\n        .filter((requester) => requester.comment)\n        .forEach((requester) => {\n          $tbody.append(`\n          <div class=\"backend-requests__requester-comment\">\n            <div>\n              ${requester.username} / ${requester.email}\n            </div>\n            <div class=\"backend-requests__requester-comment-text\">\n              ${requester.comment}\n            </div>\n          </tr>\n        `);\n        });\n\n      $requesterCommentsModal.modal(\"show\");\n    });\n\n    //\n    // Reset shared modals on hide\n    //\n    $newRequestModal.on(\"hidden.bs.modal\", () => {\n      $(\".backend-requests__new-request-form\").trigger(\"reset\");\n      $(\".backend-requests__dynamic-field\").html(\"\");\n\n      $(\".backend-requests__error-field\").removeClass(\n        \"backend-requests__error-field\"\n      );\n      $(\".backend-requests__new-request-form-errors\").html(\"\");\n    });\n\n    $deleteModal.on(\"hidden.bs.modal\", () => {\n      $deleteModal.find(\"form\").attr(\"action\", \"/admin/requests/\");\n      $deleteModal.find(\".backend-requests__delete-request-info\").html(\"\");\n    });\n\n    $editorsNoteModal.on(\"hidden.bs.modal\", () => {\n      $editorsNoteEdit.data(\"request-id\", null);\n      $editorsNoteEdit.val(\"\");\n    });\n\n    $mergeModal.on(\"hidden.bs.modal\", () => {\n      let action = $mergeModal.find(\"form\").attr(\"action\");\n      action = action.replace($mergeModal.data(\"request-id\"), \"ID\");\n      $mergeModal.find(\"form\").attr(\"action\", action);\n\n      $mergeModal.data(\"request-id\", null);\n\n      $(\"#merge_target option\").removeAttr(\"disabled\");\n      $(\"#merge_target\").val(null).trigger(\"chosen:updated\");\n\n      $mergeModal.find(\".step-1\").show();\n      $mergeModal.find(\".step-2\").hide();\n\n      $mergeModal\n        .find(\".backend-requests__merge-modal-confirm\")\n        .attr(\"disabled\", true);\n\n      $mergeModal.find(\".backend-requests__merge-request-title\").html(\"\");\n      $mergeModal.find(\".backend-requests__merge-request-author\").html(\"\");\n    });\n\n    $requestersModal.on(\"hidden.bs.modal\", () => {\n      $(\".backend-requests__requesters-table tbody\").html(\"\");\n    });\n\n    $requesterCommentsModal.on(\"hidden.bs.modal\", () => {\n      $(\".backend-requests__requester-comments\").html(\"\");\n    });\n\n    const $header = $(\".backend-requests__header\");\n    const $list = $(\".backend-requests__request-list\");\n    const headerOriginalOffsetTop = $header.offset().top;\n    const listOriginalMarginTop = parseInt($list.css(\"marginTop\"));\n\n    window.onscroll = function () {\n      if ($(document).scrollTop() > headerOriginalOffsetTop) {\n        $header.addClass(\"backend-requests__header--fixed\");\n        $list.css(\"marginTop\", `${$header.height() + listOriginalMarginTop}px`);\n      } else {\n        $header.removeClass(\"backend-requests__header--fixed\");\n        $list.css(\"marginTop\", listOriginalMarginTop);\n      }\n    };\n  },\n});\n","import LcView from \"lib/shared/view\";\nimport helpers from \"helpers/base\";\n\nexport default LcView.create({\n  ready() {\n    this.searchQueryKey = \"query\";\n    this.setListeners();\n  },\n\n  setListeners() {\n    /* eslint-disable no-param-reassign */\n\n    // homepage has multiple search inputs with different placeholder values per viewport size\n    // ensure only current visible input contains the query parameter key for the search form\n    const setInputQueryKeys = () => {\n      const inputs = document.querySelectorAll(this.selectors.SEARCH_INPUT);\n      inputs.forEach((input) => {\n        const searchContainer = input.closest(\n          this.selectors.SEARCH_INPUT_CONTAINER\n        );\n        if (helpers.dom.isElementVisible(searchContainer)) {\n          input.setAttribute(\"name\", this.searchQueryKey);\n        } else {\n          input.removeAttribute(\"name\");\n        }\n      });\n    };\n\n    // rate-limit the calling of setInputQueryKeys to once every 500 ms\n    const limitedSetInputQueryKeys = () => {\n      if (this.willCallSetInputQueryKeys) {\n        return;\n      }\n      this.willCallSetInputQueryKeys = setTimeout(() => {\n        setInputQueryKeys();\n        this.willCallSetInputQueryKeys = null;\n      }, 500);\n    };\n\n    window.onresize = limitedSetInputQueryKeys;\n  },\n\n  selectors: {\n    BROWSE_LINK: \".home__browse a\",\n    A_PLUS_PROMO_LINK: \".home__a-plus-promo a\",\n    SEARCH_INPUT_CONTAINER: \".home__search .search__input-container\",\n    SEARCH_INPUT: \".home__search input[type='text']\",\n    SEARCH_FORM: \".home__search form\",\n  },\n});\n","import LcView from \"lib/shared/view\";\nimport helpers from \"helpers/base\";\n\nexport default LcView.create({\n  ready() {\n    this.setDuplicateLiteraryDevices();\n    this.setListeners();\n    this.insertPaywallBlockerLinks();\n    this.scrollToLiteraryDevice();\n  },\n\n  setListeners() {\n    this.setToggleListeners();\n    this.setModalListeners();\n  },\n\n  // add modal listeners for each cite button after each quote\n  setModalListeners() {\n    const buttons = document.querySelectorAll(this.selectors.CITE_BUTTON);\n    buttons.forEach((button) => {\n      button.addEventListener(\"click\", (_) => {\n        if (helpers.isSubscribed()) {\n          // modals won't exist for unsubscribed users\n          const literaryDevice = button.closest(this.selectors.LITERARY_DEVICE);\n          const modalSelector = `#${literaryDevice.id}-modal`;\n          $(modalSelector).modal(\"show\");\n        } else {\n          window.location.href = button.getAttribute(\"href\");\n        }\n      });\n    });\n  },\n\n  // add listeners to toggle expandable/collapsible list groups\n  setToggleListeners() {\n    const toggles = document.querySelectorAll(this.selectors.TOGGLE_GROUP);\n    toggles.forEach((toggle) => {\n      toggle.addEventListener(\"click\", () => {\n        const content = toggle.parentElement.querySelector(\n          this.selectors.TOGGLE_CONTENT\n        );\n        $(content).slideToggle(() => {\n          content.classList.toggle(\"hidden\");\n        });\n        if (toggle.getAttribute(\"aria-expanded\") === null) {\n          toggle.setAttribute(\"aria-expanded\", \"\");\n          toggle.classList.remove(\"rounded-corners\");\n          toggle.setAttribute(\n            \"aria-label\",\n            toggle.getAttribute(\"aria-label-expanded\")\n          );\n        } else {\n          toggle.classList.add(\"rounded-corners\");\n          toggle.removeAttribute(\"aria-expanded\");\n          toggle.setAttribute(\n            \"aria-label\",\n            toggle.getAttribute(\"aria-label-collapsed\")\n          );\n        }\n      });\n    });\n  },\n\n  setDuplicateLiteraryDevices() {\n    // Lit devices that span multiple summary sections display in a different way\n    const elements = Array.from(\n      document.getElementsByClassName(\"literary-device\")\n    );\n    const seen = {};\n    elements.forEach((element) => {\n      const id = element.getAttribute(\"data-lit-device-id\");\n      const instanceName = element.getAttribute(\"data-instance-name\");\n      if (Object.keys(seen).includes(id)) {\n        // already seen this lit device before\n        element.setAttribute(\"data-is-duplicate\", \"\");\n        const title = element.querySelector(\n          \".literary-device__title--duplicate\"\n        );\n        title.innerHTML = `Covered in \"${seen[id].firstInstance}\"`;\n        title.setAttribute(\"href\", `#${seen[id].elementId}`);\n      } else {\n        seen[id] = { firstInstance: instanceName, elementId: element.id };\n      }\n    });\n  },\n\n  scrollToLiteraryDevice() {\n    const sectionId = helpers.getQueryParam(\"chapter\");\n    const summaryId = helpers.getQueryParam(\"summary\");\n    if (sectionId) {\n      let element = null;\n      if (summaryId) {\n        // if summary id is present, find first lit device within the section associated with that summary\n        const section = document.querySelector(`#${sectionId}`);\n        const litDevices = section.querySelectorAll(\n          this.selectors.LITERARY_DEVICE\n        );\n        element = Array.from(litDevices).find((litDevice) => {\n          const summaryIds = JSON.parse(\n            litDevice.getAttribute(\"data-summaries\")\n          );\n          return summaryIds.includes(parseInt(summaryId));\n        });\n        // otherwise, just scroll to the section\n      } else {\n        element = document.querySelector(`[aria-controls=${sectionId}]`);\n      }\n\n      if (element) {\n        window.history.scrollRestoration = \"manual\"; // disable default scroll restoration on page load\n        const subnav = document.querySelector(this.selectors.BOOK_NAV);\n        const mobileHeaderPromo = document.querySelector(\n          this.selectors.MOBILE_HEADER_PROMO\n        );\n\n        // scroll to the element's page offset minus sticky banners\n        // subnav's height is doubled since it contributes to the element's page offset while it's still on the page,\n        // but once scrolled past it becomes sticky\n        const offset =\n          $(element.parentElement.parentElement).offset().top -\n          2 *\n            (helpers.dom.isElementVisible(subnav)\n              ? subnav.offsetHeight + 6\n              : -4) - // sticky subnav height\n          (helpers.dom.isElementVisible(mobileHeaderPromo)\n            ? mobileHeaderPromo.offsetHeight\n            : 0); // sticky mobile promo height\n        $(\"html, body\").animate({ scrollTop: offset }, 200);\n      }\n    }\n  },\n\n  // the paywall blocker is rendered in the body of the lit device, but a plus links are added in the template\n  // move a plus links for each lit device into it's corresponding container node\n  insertPaywallBlockerLinks() {\n    document\n      .querySelectorAll(this.selectors.LITERARY_DEVICE)\n      .forEach((litDevice) => {\n        const link = litDevice.querySelector(this.selectors.A_PLUS_BUTTON);\n        const container = litDevice.querySelector(\n          this.selectors.A_PLUS_DIALOG_CONTAINER\n        );\n        if (link && container) {\n          link.remove();\n          container.appendChild(link);\n        }\n      });\n  },\n\n  selectors: {\n    TOGGLE_GROUP: \".toggle-group:not(:disabled)\",\n    TOGGLE_CONTENT: \".summary-section-literary-devices\",\n    CITE_BUTTON: \".literary-device__cite\",\n    CITE_MODAL: \".modal\",\n    LITERARY_DEVICE: \".literary-device\",\n    BOOK_NAV: \".book-nav\",\n    MOBILE_HEADER_PROMO: \"#sticky-mobile-header-promo\",\n    A_PLUS_BUTTON: \".btn-a-plus\",\n    A_PLUS_DIALOG_CONTAINER: \".a-plus-dialog__container\",\n  },\n});\n","import LcView from \"lib/shared/view\";\n\nexport default LcView.create({\n  ready: () => {},\n});\n","import LcView from \"lib/shared/view\";\nimport help from \"helpers/base\";\nimport LineMapper from \"lib/poetry/line_mapper\";\nimport { disableBodyScroll, enableBodyScroll } from \"body-scroll-lock\";\nimport selectors from \"constants/poetry/poems/show/selectors\";\nimport helpOnDemandPromo from \"views/shared/help_on_demand/promo\";\n\nexport default LcView.create({\n  initialize() {\n    this.setSelectors();\n    this.LM_HOVER_CLASS = \"poem-inline__lm--hover\";\n    this.LM_CLICKED_CLASS = \"poem-inline__lm--clicked\";\n    this.scrollOffsetThreshold = 115;\n    this.mouseX = 0;\n    this.mouseY = 0;\n    this.hasLoaded = false;\n    this.isPublicDomain = $(this.selectors.MAIN).data(\"public-domain\") === true;\n    this.hodPromoIsRevealed = false;\n    window.history.scrollRestoration = \"manual\"; // prevent default scroll restoration behavior\n  },\n  ready() {\n    const $hideUntilLoaded = $(this.selectors.HIDE_UNTIL_LOADED);\n    const $poemTextScrollable = $(this.selectors.TEXT_SCROLLABLE);\n    const $poemTextFixed = $(this.selectors.TEXT_FIXED);\n    const $poemTextModal = $(this.selectors.TEXT_MODAL);\n    const $nav = $(this.selectors.NAV);\n    const $mobileNav = $(this.selectors.MOBILE_NAV);\n    const $mobileHeader = $(this.selectors.MOBILE_HEADER);\n    const $pdfHeader = $(this.selectors.PDF_HEADER);\n    const $litTermModal = $(this.selectors.MODAL_LIT_TERM);\n    const $drawer = $(this.selectors.DRAWER);\n\n    this.poemTextOffsetTop = $poemTextScrollable.offset().top;\n    this.poemNavOffsetTop = $nav.offset().top;\n    this.mobileHeaderOffsetTop = $mobileHeader.offset().top;\n    this.pdfHeaderOffsetTop = $pdfHeader.offset().top;\n    this.$currentPoemText = $poemTextScrollable;\n\n    this.initializeListeners();\n    this.setFixedPoemTextWidth();\n    this.setDrawerWidth();\n    this.collapseExpandMobileTitle();\n    this.setContextSwitcherTop();\n\n    setTimeout(() => {\n      this.applyiOSModalScrollFix();\n    }, 500); // wrapped in timeout works, suspect due to bootstrap loading 2x\n\n    // slide in HOD promo\n    setTimeout(() => {\n      helpOnDemandPromo.setOffset();\n      this.hodPromoIsRevealed = true;\n    }, 3000);\n\n    helpOnDemandPromo.ready();\n\n    $litTermModal.modal(\"hide\");\n    $poemTextModal.modal(\"hide\");\n    $drawer.modal(\"hide\");\n\n    $poemTextFixed.hide();\n    $mobileNav.hide();\n\n    if (help.isMobile()) {\n      $poemTextScrollable.hide();\n    }\n\n    this.positionPromo();\n\n    this.loadPoem().then(() => {\n      $hideUntilLoaded.css(\"visibility\", \"visible\");\n      this.scrollToStoredLocation();\n      this.hasLoaded = true;\n    });\n  },\n\n  initializeListeners() {\n    window.onscroll = () => {\n      this.handleScroll();\n    };\n    window.onresize = () => {\n      this.handleResize();\n    };\n\n    $(this.selectors.CONTEXT_SWITCHER).click(() => {\n      $(this.selectors.LC_TEXT_TOGGLE).trigger(\"click\"); // switch to the tool\n      $(this.selectors.AI_TEXT_TOGGLE).trigger(\"click\"); // scroll\n    });\n\n    $(this.selectors.AI_TEXT_TOGGLE).click(() => {\n      if (this.isAiSelected()) {\n        this.scrollToAiTool();\n      } else {\n        const { scrollY } = this.getStoredScrollLocation();\n        window.scrollTo(0, scrollY);\n      }\n    });\n\n    $(this.selectors.MOBILE_NAV_TOGGLE).click((event) => {\n      this.handleMobileNavToggle(event);\n    });\n    $(this.selectors.TEXT_MODAL_TOGGLE).click((event) => {\n      this.handlePoemTextModalToggle(event);\n    });\n    $(this.selectors.NAV_LINK).click((event) => {\n      this.handleNavLinkClick(event);\n    });\n    $(this.selectors.MOBILE_NAV_LINK).click((event) => {\n      this.handleNavLinkClick(event);\n    });\n    $(this.selectors.HOD_PROMO_CTA).click(() => {\n      this.handleHelpOnDemandPromoClick();\n    });\n\n    $(document).mousemove((event) => {\n      this.handleMouseMove(event);\n    });\n\n    $(document).on(\n      \"touchstart click\",\n      this.selectors.COMPONENT_ITEM,\n      (event) => {\n        this.handleComponentItemClick(event);\n      }\n    );\n    $(document).on(\"change\", this.selectors.COMPONENT_ITEMS_SELECT, (event) => {\n      this.handleComponentItemSelect(event);\n    });\n    $(document).on(\"touchstart click\", this.selectors.INLINE_LINK, (event) => {\n      this.handleInlineLinkClick(event);\n    });\n    $(document).on(\n      \"mouseenter\",\n      `${this.selectors.IS_FOCUSED} ${this.selectors.LINE_MAPS}`,\n      (event) => {\n        this.handleLineMapMouseEnter(event);\n      }\n    );\n    $(document).on(\n      \"mouseleave\",\n      `${this.selectors.IS_FOCUSED} ${this.selectors.LINE_MAPS}`,\n      (event) => {\n        this.handleLineMapMouseLeave(event);\n      }\n    );\n    $(document).on(\n      \"touchstart\",\n      `${this.selectors.IS_FOCUSED} ${this.selectors.LINE_MAPS}`,\n      (event) => {\n        this.handleLineMapTouchstart(event);\n      }\n    );\n    $(document).on(\n      \"touchstart\",\n      `${this.selectors.IS_FOCUSED} ${this.selectors.LINE_MAP_VALUE_ONE_TO_ONE}`,\n      (event) => {\n        this.handleLineMapTouchstart(event);\n      }\n    );\n    $(document).on(\n      \"touchend click\",\n      `${this.selectors.IS_FOCUSED} ${this.selectors.LINE_MAP_VALUE_ONE_TO_ONE}`,\n      (event) => {\n        this.handleLineMapClick(event);\n      }\n    );\n    $(document).on(\n      \"touchstart click\",\n      `${this.selectors.IS_FOCUSED} ${this.selectors.LINE_MAP_VALUE_STRUCTURE}`,\n      (event) => {\n        this.handleLineMapStructureClick(event);\n      }\n    );\n    $(document).on(\n      \"touchstart click\",\n      `${this.selectors.IS_FOCUSED} ${this.selectors.LINE_MAP_VALUE_RHYME_SCHEME}`,\n      (event) => {\n        this.handleLineMapRhymeSchemeClick(event);\n      }\n    );\n  },\n\n  getFixedHeaderHeight() {\n    const $nav = $(this.selectors.NAV);\n    const $mobileHeader = $(this.selectors.MOBILE_HEADER);\n    const $pdfHeader = $(this.selectors.PDF_HEADER);\n\n    let height = 0;\n    height += $nav.is(\":visible\") ? $nav.height() : 0;\n    height +=\n      $mobileHeader.is(\":visible\") && $mobileHeader.css(\"position\") === \"fixed\"\n        ? $mobileHeader.height()\n        : 0;\n    height += $pdfHeader.height();\n    return height;\n  },\n\n  // some browsers (such as firefox) need a set height for children of fixed elements instead of a percentage\n  // so we figure out the height it should be based on the remaining viewing space once other elements are removed\n  //\n  //            #poems-show__poem-text--fixed\n  //\n  //   |-----------------margin-top-----------------|   <---|           <---|\n  //   |-----------------padding-top----------------|       |               |\n  //   |--------.poems-show__poem-text--title-------|       |               |\n  //   |--------------------------------------------|       |           <---|\n  //   |                                            |       |                            <---|\n  //   |                                            |       |                                |\n  //   |                                            |       |    minus           equals      |\n  //   |         .poems-show__poem-content          |       |                                |\n  //   |                                            |       |                                |\n  //   |                                            |       |                                |\n  //   |                                            |       |                            <---|\n  //   |--------------------------------------------|       |           <---|\n  //   |-----------------padding-bottom-------------|   <---|           <---|\n  //\n  setFixedPoemTextHeight() {\n    if (help.isMobile()) {\n      return;\n    }\n    const $poemTextFixed = $(this.selectors.TEXT_FIXED);\n    const $poemContent = $poemTextFixed.find(this.selectors.POEM_CONTENT);\n    const $poemTitle = $poemTextFixed.find(this.selectors.TEXT_TITLE);\n    const vHeight = help.getViewportHeight();\n    const height =\n      vHeight -\n      this.getFixedHeaderHeight() -\n      (parseInt($poemTextFixed.css(\"paddingTop\")) || 0) -\n      (parseInt($poemTextFixed.css(\"marginTop\")) || 0) -\n      $poemTitle.outerHeight() -\n      (parseInt($poemTextFixed.css(\"paddingBottom\")) || 0);\n\n    $poemContent.height(height);\n  },\n\n  setFixedPoemTextWidth() {\n    const $poemTextColumn = $(this.selectors.TEXT_COLUMN);\n    const $poemTextFixed = $(this.selectors.TEXT_FIXED);\n    $poemTextFixed.width($poemTextColumn.width());\n  },\n\n  setFixedPoemTextTop() {\n    if (help.isMobile()) {\n      return;\n    }\n    const $document = $(document);\n    const $poemTextFixed = $(this.selectors.TEXT_FIXED);\n    const $poemContent = $poemTextFixed.find(this.selectors.POEM_CONTENT);\n    const $poemTextTitle = $poemTextFixed.find(this.selectors.TEXT_TITLE);\n    const headerHeight = this.getFixedHeaderHeight();\n    const maxTop =\n      $(this.selectors.FOOTER).offset().top -\n      parseInt($(this.selectors.MAIN).css(\"paddingBottom\"));\n\n    const bottom =\n      $document.scrollTop() +\n      headerHeight +\n      parseInt($poemTextFixed.css(\"marginTop\")) +\n      parseInt($poemTextFixed.css(\"paddingTop\")) +\n      $poemTextTitle.height() +\n      $poemContent.height();\n    const top = headerHeight + (bottom > maxTop ? maxTop - bottom : 0);\n    $poemTextFixed.css(\"top\", `${top}px`);\n  },\n\n  setGuideColumnTop() {\n    const $guideColumn = $(this.selectors.GUIDE_COLUMN);\n    const $nav = help.isMobile()\n      ? $(this.selectors.MOBILE_HEADER)\n      : $(this.selectors.NAV);\n    const $pdfHeader = $(this.selectors.PDF_HEADER);\n\n    const top =\n      $nav.css(\"position\") === \"fixed\" && $pdfHeader.css(\"position\") === \"fixed\"\n        ? $nav.height() + $pdfHeader.height()\n        : 0;\n\n    $guideColumn.css({ top: `${top}px`, \"margin-bottom\": `${top}px` });\n  },\n\n  setContextSwitcherTop() {\n    const $contextSwitcher = $(this.selectors.CONTEXT_SWITCHER);\n    const $mobileHeader = $(this.selectors.MOBILE_HEADER);\n    $contextSwitcher.css(\"top\", `${$mobileHeader.height()}px`);\n  },\n\n  setDrawerWidth() {\n    const $drawer = $(this.selectors.DRAWER);\n    const $dialog = $drawer.find(\".modal-dialog\");\n    const width = $drawer.width();\n    $dialog.width(width);\n  },\n\n  setMobileHeaderHeight() {\n    const $mobileHeader = $(this.selectors.MOBILE_HEADER);\n    const $mobileNav = $(this.selectors.MOBILE_NAV);\n\n    if ($mobileNav.is(\":visible\")) {\n      const vHeight = help.getViewportHeight();\n      let height = vHeight;\n      if (!$mobileHeader.hasClass(\"stick\")) {\n        height = vHeight - $mobileHeader.offset().top;\n      }\n      $mobileHeader.height(height);\n    } else {\n      $mobileHeader[0].style.height = null;\n    }\n  },\n\n  setHelpOnDemandPromoRight() {\n    const $container = $(this.selectors.CONTAINER);\n    const $hodPromo = $(this.selectors.HOD_PROMO);\n    const viewportWidth = help.getViewportWidth();\n    const containerWidth = $container.outerWidth();\n\n    if (viewportWidth > containerWidth) {\n      $hodPromo.css(\"right\", (viewportWidth - containerWidth) / 2);\n    } else {\n      $hodPromo.css(\"right\", 0);\n    }\n  },\n\n  positionPromo() {\n    const $promo = $(this.selectors.BANNER_PROMO);\n\n    if (!$promo.length) {\n      return false;\n    }\n\n    const $main = $(this.selectors.MAIN);\n    $main.prepend($promo);\n  },\n\n  applyiOSModalScrollFix() {\n    if (!$(\"html\").hasClass(\"ios-device\")) {\n      return false;\n    }\n\n    $(\".modal\").on(\"show.bs.modal\", () =>\n      disableBodyScroll($(this).find(\".modal-dialog\")[0])\n    );\n    $(\".modal\").on(\"hide.bs.modal\", () =>\n      enableBodyScroll($(this).find(\".modal-dialog\")[0])\n    );\n  },\n\n  loadPoem() {\n    return new Promise((resolve, reject) => {\n      this.ajaxPoemLoad().then(\n        (data) => {\n          help.object.each(data, (category, components) => {\n            help.array.each(components, (component) => {\n              this.loadComponentData(component);\n            });\n          });\n          resolve();\n        },\n        (error) => {\n          reject(error);\n        }\n      );\n    });\n  },\n\n  ajaxPoemLoad() {\n    const slug = $(this.selectors.MAIN).data(\"slug\");\n    return $.ajax({\n      url: `/poems/${slug}/load`,\n      type: \"GET\",\n      dataType: \"json\",\n      data: { cached: help.getQueryParam(\"cached\") },\n    });\n  },\n\n  loadComponentData(data) {\n    const { category, position } = data;\n    const positionAttr =\n      position === undefined || position === null\n        ? \"\"\n        : `[data-position='${position}']`;\n    const attrSelector = `[data-category='${category}']${positionAttr}`;\n    const $component = $(this.selectors.COMPONENT + attrSelector);\n    const $valueReplace = $(\n      $component.find(this.selectors.COMPONENT_VALUE_REPLACE)\n    );\n    const $promo = $($component.find(this.selectors.PROMO));\n    const $promoMain = $($component.find(this.selectors.PROMO_MAIN));\n    const $promoAlt = $($component.find(this.selectors.PROMO_ALT));\n    const $textLink = $($component.find(this.selectors.TEXT_LINK));\n    const $activeContext = $($component.find(this.selectors.ACTIVE_CONTEXT));\n    const $componentItem = $(this.selectors.COMPONENT_ITEM + attrSelector);\n    const $componentOption = $(\n      this.selectors.COMPONENT_ITEMS_SELECT_OPTION + attrSelector\n    );\n\n    if (data.show_promo) {\n      $component.attr(\"data-show-promo\", true);\n      $textLink.hide();\n      $promo.show();\n      $activeContext.addClass(\n        this.getClassForSelector(\"ACTIVE_CONTEXT_BLURRED\")\n      );\n      switch (data.promo_type) {\n        case \"main\":\n          $promoAlt.hide();\n          break;\n        case \"alt\":\n          $promoMain.hide();\n          break;\n        // no default\n      }\n    } else {\n      $valueReplace.html(data.value);\n    }\n\n    $componentItem.data(\"value\", data.value);\n    $componentOption.data(\"value\", data.value);\n    this.afterLoadComponentData(category, $component, data);\n  },\n\n  afterLoadComponentData(category, $component, data) {\n    switch (category) {\n      case \"context\":\n        this.afterLoadComponentContext($component, data);\n        break;\n      // no default\n    }\n  },\n\n  afterLoadComponentContext($component, data) {\n    const $section = $(`${this.selectors.SECTION}[data-section='context']`);\n    const $components = $($section.find(this.selectors.COMPONENTS));\n\n    $components.html(\"\");\n    $components.append(data.value);\n    $components\n      .children(\".poem-inline__component--context\")\n      .each((i, element) => {\n        const $element = $(element);\n        const originalValue = $element\n          .children()\n          .filter(\":not(h3)\")\n          .map((j, n) => n.outerHTML)\n          .toArray()\n          .join(\"\");\n\n        $element.addClass(this.getClassForSelector(\"COMPONENT\"));\n        $element.attr(\n          \"data-highlight-when-focused\",\n          this.isPublicDomain.toString()\n        );\n        $element.attr(\"data-category\", \"context\");\n        $element.attr(\"data-position\", i + 1);\n        $element.attr(\"data-content\", data.content);\n        $element.append(\n          `<h3 class='${this.getClassForSelector(\"COMPONENT_TITLE\")}'></h3>`\n        );\n        $element.append(\n          `<div class='${this.getClassForSelector(\"COMPONENT_VALUE\")}'>` +\n            `<div class='${this.getClassForSelector(\n              \"COMPONENT_VALUE_REPLACE\"\n            )}'></div>` +\n            \"</div>\"\n        );\n\n        const $title = $element.find(this.selectors.COMPONENT_TITLE);\n        const $valueReplace = $element.find(\n          this.selectors.COMPONENT_VALUE_REPLACE\n        );\n        const $value = $element.find(this.selectors.COMPONENT_VALUE);\n\n        $title.html($element.find(\"h3\").html());\n        $valueReplace.html(originalValue);\n        $element.html($title[0].outerHTML + $value[0].outerHTML);\n      });\n  },\n\n  getComponents() {\n    return $(this.selectors.COMPONENT).sort((a, b) => {\n      const aOffset = $(a).offset().top;\n      const bOffset = $(b).offset().top;\n      if (aOffset > bOffset) {\n        return -1;\n      }\n      if (aOffset < bOffset) {\n        return 1;\n      }\n      return 0;\n    });\n  },\n\n  getSelectorForLineMapId(id) {\n    return `[data-lm-id='${id}']`;\n  },\n\n  getFocusedComponent() {\n    const scrollTop = $(document).scrollTop();\n    const $components = this.getComponents();\n    const navHeight = this.getFixedHeaderHeight();\n    let focusedComponent = null;\n\n    $components.each((i, component) => {\n      const $section = $(component).closest(this.selectors.SECTION);\n      const $childComponents = $($section.find(this.selectors.COMPONENT));\n      let offset = parseInt($section.css(\"marginTop\")) || 0;\n\n      if ($childComponents[0] === component) {\n        offset += $(component).offset().top - $section.offset().top;\n      }\n      if (\n        scrollTop >\n        $(component).offset().top -\n          navHeight -\n          offset -\n          this.scrollOffsetThreshold\n      ) {\n        focusedComponent = component;\n      }\n      if (focusedComponent) {\n        return false;\n      }\n    });\n\n    // Default to the first component if we're at the top of the page\n    if (!focusedComponent) {\n      focusedComponent = $components[$components.length - 1];\n    }\n\n    return $(focusedComponent);\n  },\n\n  isAiSelected() {\n    const aiTool = document.querySelector(this.selectors.POEM_AI_TOOL);\n    const guideContent = document.querySelector(\n      this.selectors.POEM_GUIDE_CONTENT\n    );\n    return (\n      !aiTool.classList.contains(\"hidden-sm\") &&\n      guideContent.classList.contains(\"hidden-sm\")\n    );\n  },\n\n  toggleFocusedComponent() {\n    if (this.isAiSelected()) {\n      return;\n    }\n    const $component = this.getFocusedComponent();\n    this.storeScrollLocation($component);\n    $component.length\n      ? this.focusComponent($component)\n      : this.unfocusComponent();\n  },\n\n  focusComponent($component) {\n    const title = $component.data(\"title\") || \"\";\n    const modalTitle = $component.data(\"modal-title\") || \"\";\n    const category = $component.data(\"category\");\n    const content = $component.data(\"content\");\n    const section = $component.closest(this.selectors.SECTION).data(\"section\");\n    const modalCategory = modalTitle + (title ? \": \" : \"\") + title;\n    $component.addClass(\"is-focused\");\n    $(this.selectors.POEM_CONTENT).html(content);\n    $(this.selectors.TEXT_MODAL_CATEGORY).text(modalCategory);\n    $(this.selectors.NAV_LINK)\n      .removeClass(\"is-active\")\n      .addClass(\"another-link-is-active\");\n    $(`${this.selectors.NAV_LINK}[data-target='${section}']`)\n      .removeClass(\"another-link-is-active\")\n      .addClass(\"is-active\");\n\n    $(this.selectors.SECTION).removeClass(\"is-focused\");\n    $(`${this.selectors.SECTION}[data-section='${section}']`).addClass(\n      \"is-focused\"\n    );\n\n    $(this.selectors.POEM_CONTENT).each((i, element) => {\n      $(element).attr(\"data-focused-section\", section);\n      $(element).attr(\"data-focused-category\", category);\n    });\n\n    this.afterFocusComponent(category, $component);\n  },\n\n  unfocusComponent() {\n    const $content = $(this.selectors.POEM_CONTENT);\n    $(this.selectors.COMPONENT).removeClass(\"is-focused\");\n    $(this.selectors.SECTION).removeClass(\"is-focused\");\n    $content.html($content.data(\"original-content\"));\n    $(this.selectors.NAV_LINK).removeClass(\"is-active\");\n    $(this.selectors.TEXT_MODAL_CATEGORY).text(\"Full Text\");\n  },\n\n  unfocusAll() {\n    if (this.isAiSelected()) {\n      return;\n    }\n    $(this.selectors.COMPONENT).removeClass(\"is-focused\");\n  },\n\n  afterFocusComponent(category, $component) {\n    switch (category) {\n      case \"form\":\n        this.afterFocusComponentForm($component);\n        break;\n      case \"context\":\n        this.afterFocusComponentContext($component);\n        break;\n      // no default\n    }\n  },\n\n  afterFocusComponentForm() {\n    const $lineMaps = $(\n      this.$currentPoemText.find(this.selectors.LINE_MAP_CONTENT_STRUCTURE)\n    );\n    const ids = help.array.unique(\n      $lineMaps.toArray().map((lineMap) => $(lineMap).data(\"lm-id\"))\n    );\n    const $content = $(this.$currentPoemText.find(this.selectors.POEM_CONTENT));\n    const lineMapper = new LineMapper(\"structure\", 1, $content);\n\n    help.array.each(ids, (id) => {\n      lineMapper.createStructureMappingLine(id);\n    });\n  },\n\n  afterFocusComponentContext($component) {\n    const $lineMaps = $(\n      this.$currentPoemText.find(this.selectors.LINE_MAP_CONTENT_ONE_TO_ONE)\n    );\n    $lineMaps.each((i, lineMap) => {\n      const $lineMap = $(lineMap);\n      const matches =\n        $lineMap.attr(\"data-description\") ===\n        $component.attr(\"data-description\");\n      $(lineMap).attr(\"data-matches-description\", matches);\n    });\n  },\n\n  togglePoemText() {\n    const $document = $(document);\n    const $poemTextScrollable = $(this.selectors.TEXT_SCROLLABLE);\n    const $poemTextFixed = $(this.selectors.TEXT_FIXED);\n\n    if (help.isMobile() || !this.isPublicDomain) {\n      $poemTextScrollable.hide();\n      $poemTextFixed.hide();\n      return;\n    }\n\n    const navHeight = this.getFixedHeaderHeight();\n    this.poemTextOffsetTop = $poemTextScrollable.is(\":visible\")\n      ? $poemTextScrollable.offset().top\n      : this.poemTextOffsetTop;\n\n    if ($document.scrollTop() > this.poemTextOffsetTop - navHeight) {\n      this.fixPoemText();\n    } else {\n      this.unfixPoemText();\n    }\n  },\n\n  fixPoemText() {\n    const $poemTextScrollable = $(this.selectors.TEXT_SCROLLABLE);\n    const $poemTextFixed = $(this.selectors.TEXT_FIXED);\n    $poemTextScrollable.hide();\n    $poemTextFixed.show();\n    this.$currentPoemText = $poemTextFixed;\n  },\n\n  unfixPoemText() {\n    const $poemTextScrollable = $(this.selectors.TEXT_SCROLLABLE);\n    const $poemTextFixed = $(this.selectors.TEXT_FIXED);\n    $poemTextScrollable.show();\n    $poemTextFixed.hide();\n    this.$currentPoemText = $poemTextScrollable;\n  },\n\n  handlePoemTextModalToggle() {\n    const $poemTextModal = $(this.selectors.TEXT_MODAL);\n    $poemTextModal.modal(\"show\");\n  },\n\n  toggleNavStick() {\n    const $document = $(document);\n    const $nav = help.isMobile()\n      ? $(this.selectors.MOBILE_HEADER)\n      : $(this.selectors.NAV);\n    const navOffsetTop = help.isMobile()\n      ? this.mobileHeaderOffsetTop\n      : this.poemNavOffsetTop;\n\n    if ($document.scrollTop() >= navOffsetTop) {\n      $nav.addClass(\"stick\");\n    } else {\n      $nav.removeClass(\"stick\");\n    }\n  },\n\n  getPdfHeaderBoundary() {\n    const $nav = help.isMobile()\n      ? $(this.selectors.MOBILE_HEADER)\n      : $(this.selectors.NAV);\n\n    return help.isMobile() ? this.mobileHeaderOffsetTop : $nav.offset().top;\n  },\n\n  togglePdfHeaderStick() {\n    const $document = $(document);\n    const $pdfHeader = $(this.selectors.PDF_HEADER);\n    const $nav = help.isMobile()\n      ? $(this.selectors.MOBILE_HEADER)\n      : $(this.selectors.NAV);\n    const top = $nav.is(\":visible\") ? $nav.height() : 0;\n    const pdfHeaderBoundary = this.getPdfHeaderBoundary();\n\n    if ($document.scrollTop() >= pdfHeaderBoundary) {\n      $pdfHeader.addClass(\"stick\");\n      $pdfHeader.css({ top });\n    } else {\n      $pdfHeader.removeClass(\"stick\");\n    }\n  },\n\n  triggerLineMapMouseToggle() {\n    this.unhoverAll();\n    const target = document.elementFromPoint(this.mouseX, this.mouseY);\n    this.handleLineMapMouseEnter({ target });\n    $(target)\n      .children()\n      .each((i, child) => {\n        this.handleLineMapMouseEnter({ target: child });\n      });\n  },\n\n  collapseExpandMobileTitle() {\n    const title = document.querySelector(\n      this.selectors.MOBILE_HEADER_POEM_TITLE\n    );\n    const mobileHeader = document.querySelector(this.selectors.MOBILE_HEADER);\n\n    if (mobileHeader.classList.contains(\"stick\")) {\n      title.classList.add(\"hidden\");\n    } else {\n      title.classList.remove(\"hidden\");\n    }\n  },\n\n  storeScrollLocation($focusedComponent) {\n    if (!this.hasLoaded) {\n      return;\n    }\n    // \"\"\"\n    // setItem() may throw an exception if the storage is full. Particularly, in Mobile Safari (since iOS 5) it\n    // always throws when the user enters private mode. (Safari sets the quota to 0 bytes in private mode, unlike\n    // other browsers, which allow storage in private mode using separate data containers.) Hence developers\n    // should make sure to always catch possible exceptions from setItem().\n    // \"\"\"\n    // https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem\n    try {\n      const navHeight = this.getFixedHeaderHeight();\n      const scrollY = $(document).scrollTop();\n      const id = this.getPoemId();\n      window.localStorage.setItem(\n        `litcharts-poetry-poems-show-${id}-scrollY`,\n        scrollY\n      );\n      if ($focusedComponent.length) {\n        window.localStorage.setItem(\n          `litcharts-poetry-poems-show-${id}-focusedComponentCategory`,\n          $focusedComponent.data(\"category\")\n        );\n        window.localStorage.setItem(\n          `litcharts-poetry-poems-show-${id}-focusedComponentPosition`,\n          $focusedComponent.data(\"position\")\n        );\n        const deltaScrollY =\n          scrollY - navHeight - $focusedComponent.offset().top;\n        window.localStorage.setItem(\n          `litcharts-poetry-poems-show-${id}-deltaScrollY`,\n          deltaScrollY\n        );\n      } else {\n        window.localStorage.setItem(\n          `litcharts-poetry-poems-show-${id}-focusedComponentCategory`,\n          \"\"\n        );\n        window.localStorage.setItem(\n          `litcharts-poetry-poems-show-${id}-focusedComponentPosition`,\n          \"\"\n        );\n        window.localStorage.setItem(\n          `litcharts-poetry-poems-show-${id}-deltaScrollY`,\n          \"\"\n        );\n      }\n    } catch (e) {\n      console.error(\"Error in storeScrollLocation\", e);\n    }\n  },\n\n  getStoredScrollLocation() {\n    const id = this.getPoemId();\n    return {\n      scrollY: window.localStorage.getItem(\n        `litcharts-poetry-poems-show-${id}-scrollY`\n      ),\n      category: window.localStorage.getItem(\n        `litcharts-poetry-poems-show-${id}-focusedComponentCategory`\n      ),\n      position: window.localStorage.getItem(\n        `litcharts-poetry-poems-show-${id}-focusedComponentPosition`\n      ),\n      deltaScrollY: window.localStorage.getItem(\n        `litcharts-poetry-poems-show-${id}-deltaScrollY`\n      ),\n    };\n  },\n\n  scrollToAiTool() {\n    const $guideControls = $(this.selectors.AI_TEXT_TOGGLE);\n    const scrollTo = help.isMobile()\n      ? this.mobileHeaderOffsetTop\n      : this.poemNavOffsetTop + $guideControls.height();\n\n    window.scrollTo(0, scrollTo);\n  },\n\n  scrollToStoredLocation() {\n    // test env may use this query param to prevent scroll restoration\n    if (help.getQueryParam(\"scroll\") === \"false\") {\n      return;\n    }\n    const { scrollY, category, position, deltaScrollY } =\n      this.getStoredScrollLocation();\n    let scrollTo = 0;\n    if (category) {\n      const dataPosition =\n        position !== \"undefined\" ? `[data-position='${position}']` : \"\";\n      const selector = `${this.selectors.COMPONENT}[data-category='${category}']${dataPosition}`;\n      const $component = $(selector);\n      if ($component.length) {\n        scrollTo = $component.offset().top + parseInt(deltaScrollY);\n      } else {\n        scrollTo = scrollY;\n      }\n    } else {\n      scrollTo = scrollY;\n    }\n    this.scrollTo(scrollTo);\n  },\n\n  scrollTo(y) {\n    $(\"html, body\").animate({ scrollTop: y }, 200, \"swing\", () => {\n      this.handleScroll();\n    });\n  },\n\n  handleResize() {\n    const $mobileHeader = $(this.selectors.MOBILE_HEADER);\n    const $pdfHeader = $(this.selectors.PDF_HEADER);\n\n    // unsticking headers to get offset, then resticking if necessary\n    const mobileHeaderHasStick = $mobileHeader.hasClass(\"stick\");\n    const pdfHeaderHasStick = $pdfHeader.hasClass(\"stick\");\n\n    this.mobileHeaderOffsetTop = $mobileHeader\n      .removeClass(\"stick\")\n      .offset().top;\n    this.pdfHeaderOffsetTop = $pdfHeader.removeClass(\"stick\").offset().top;\n\n    $mobileHeader.toggleClass(\"stick\", mobileHeaderHasStick);\n    $pdfHeader.toggleClass(\"stick\", pdfHeaderHasStick);\n\n    this.togglePoemText();\n    this.setFixedPoemTextHeight();\n    this.setFixedPoemTextWidth();\n    this.setDrawerWidth();\n    this.setMobileHeaderHeight();\n    this.setContextSwitcherTop();\n    this.setHelpOnDemandPromoRight();\n    if (this.hodPromoIsRevealed) {\n      helpOnDemandPromo.setOffset();\n    }\n  },\n\n  handleScroll() {\n    this.togglePoemText();\n    this.unfocusAll();\n    this.toggleFocusedComponent();\n    this.toggleNavStick();\n    this.togglePdfHeaderStick();\n    this.setFixedPoemTextTop();\n    this.setFixedPoemTextHeight();\n    this.collapseExpandMobileTitle();\n    this.setGuideColumnTop();\n    this.setContextSwitcherTop();\n    this.triggerLineMapMouseToggle();\n  },\n\n  handleMobileNavToggle() {\n    const $mobileHeader = $(this.selectors.MOBILE_HEADER);\n    const $mobileNav = $(this.selectors.MOBILE_NAV);\n    // save the mobile header's height before it's expanded\n    if (!$mobileHeader.hasClass(\"is-active\")) {\n      $mobileHeader.attr(\"data-static-height\", $mobileHeader.height());\n    }\n    $mobileNav.toggle();\n    $mobileHeader.toggleClass(\"is-active\");\n    if ($mobileNav.is(\":visible\")) {\n      disableBodyScroll($mobileHeader[0]);\n      $(this.selectors.HOD_PROMO).addClass(\"hidden\");\n    } else {\n      enableBodyScroll($mobileHeader[0]);\n      $(this.selectors.HOD_PROMO).removeClass(\"hidden\");\n    }\n    this.setMobileHeaderHeight();\n  },\n\n  handleNavLinkClick(event) {\n    const $target = $(event.target);\n    const $mobileNav = $(this.selectors.MOBILE_NAV);\n    const $link = $target.closest(\n      $mobileNav.is(\":visible\")\n        ? this.selectors.MOBILE_NAV_LINK\n        : this.selectors.NAV_LINK\n    );\n    const section = $link.data(\"target\");\n\n    // Short circuit if we hit the PDF link, otherwise prevent default and scroll\n    if (section === \"pdf\") {\n      return;\n    }\n    event.preventDefault();\n\n    const selector = `${this.selectors.SECTION}[data-section='${section}']`;\n    const $section = $(selector);\n    const $firstSection = $($(this.selectors.SECTION)[0]);\n    const $nav = $(this.selectors.NAV);\n    const $mobileHeader = $(this.selectors.MOBILE_HEADER);\n    const $contextSwitchBanner = $(this.selectors.CONTEXT_SWITCHER);\n    const $guideControls = $(this.selectors.AI_TEXT_TOGGLE);\n\n    let fixedHeaderHeight = 0;\n    let fixedHeaderOffset = 0;\n    let poemTextMargin = 0;\n\n    if (help.isMobile()) {\n      if (!$mobileHeader.hasClass(\"stick\")) {\n        fixedHeaderHeight += $mobileHeader.height();\n      } else {\n        fixedHeaderHeight = parseInt($mobileHeader.attr(\"data-static-height\"));\n      }\n      fixedHeaderOffset += $contextSwitchBanner.height();\n    } else {\n      fixedHeaderHeight = $nav.height();\n      poemTextMargin = parseInt(this.$currentPoemText.css(\"marginTop\"));\n      fixedHeaderOffset += $guideControls.height();\n    }\n\n    if (this.isAiSelected()) {\n      $(this.selectors.LC_TEXT_TOGGLE).trigger(\"click\");\n      $(this.selectors.AI_TEXT_TOGGLE).trigger(\"click\");\n    }\n\n    const scrollTo =\n      $section.offset().top -\n      fixedHeaderHeight -\n      fixedHeaderOffset -\n      poemTextMargin -\n      2 * parseInt($firstSection.css(\"borderBottomWidth\"));\n\n    if ($mobileNav.is(\":visible\")) {\n      this.handleMobileNavToggle(event);\n    }\n\n    this.scrollTo(scrollTo);\n  },\n\n  handleInlineLinkClick(event) {\n    event.stopPropagation();\n    const $target = $(event.target);\n    const $link = $($target.closest(\".poem-inline__link\"));\n    const linkType = $link.data(\"link-type\");\n\n    if (linkType === \"lit-term\") {\n      event.preventDefault();\n      if ($link.data(\"published\")) {\n        $(this.selectors.MODAL_LIT_TERM).modal(\"show\");\n        $(this.selectors.MODAL_LIT_TERM_TITLE).text(\n          `Definition of ${$link.attr(\"data-name\")}`\n        );\n        $(this.selectors.MODAL_LIT_TERM_DEFINITION).html(\n          $link.attr(\"data-definition\")\n        );\n        $(this.selectors.MODAL_LIT_TERM_LINK).attr(\"href\", $link.attr(\"href\"));\n      }\n    } else if (linkType === \"poem\") {\n      if (!$link.data(\"published\")) {\n        event.preventDefault();\n      }\n    }\n  },\n\n  handleHelpOnDemandPromoClick() {},\n\n  handleComponentItemClick(event) {\n    event.preventDefault();\n    const $target = $(event.target);\n    const category = $target.data(\"category\");\n    $(\n      `${this.selectors.COMPONENT_ITEM}[data-category='${category}']`\n    ).removeClass(\"is-active\");\n    $target.addClass(\"is-active\");\n    this.selectComponentItem($target);\n  },\n\n  handleComponentItemSelect(event) {\n    const $target = $(event.target);\n    const value = $target.val();\n    const $option = $target.find(`[data-title='${value}']`);\n    $target\n      .children(this.selectors.COMPONENT_ITEMS_SELECT_OPTION)\n      .removeClass(\"selected\");\n    $option.addClass(\"selected\");\n    this.selectComponentItem($option);\n  },\n\n  selectComponentItem($item) {\n    const id = $item.data(\"id\");\n    const title = $item.data(\"title\");\n    const modalTitle = $item.data(\"modal-title\");\n    const modalCategory = modalTitle + (title ? \": \" : \"\") + title;\n    const category = $item.data(\"category\");\n    const position = $item.data(\"position\");\n    const value = $item.data(\"value\");\n    const activeContext = $item.data(\"active-context\");\n    const selector = `${this.selectors.COMPONENT}[data-category='${category}']`;\n    const $component = $(selector);\n    const $section = $component.closest(this.selectors.SECTION);\n    if (\n      help.isMobile() ||\n      $section.hasClass(\"is-focused\") ||\n      !this.isPublicDomain\n    ) {\n      const $title = $($component.find(this.selectors.COMPONENT_TITLE));\n      const $valueReplace = $(\n        $component.find(this.selectors.COMPONENT_VALUE_REPLACE)\n      );\n      const $activeContext = $(\n        $component.find(this.selectors.ACTIVE_CONTEXT_NOTE)\n      );\n      const $content = $(this.selectors.POEM_CONTENT);\n      const $modalCategory = $(this.selectors.TEXT_MODAL_CATEGORY);\n\n      $component.data(\"title\", title);\n      $component.data(\"modal-title\", modalTitle);\n      $component.data(\"category\", category);\n      $component.data(\"position\", position);\n      $component.data(\"active-context\", activeContext);\n      $title.text(title);\n      this.setComponentContentViaAjax(id, $content, $component);\n      $modalCategory.text(modalCategory);\n      $activeContext.html(activeContext);\n      $valueReplace.html(value);\n    }\n  },\n\n  setComponentContentViaAjax(componentId, el, component) {\n    $.ajax({\n      url: `/poetry/poem_components/${componentId}`,\n      type: \"GET\",\n      dataType: \"json\",\n      success(data) {\n        el.html(data.content);\n        component.data(\"content\", data.content);\n      },\n    });\n  },\n\n  hoverAll() {\n    const $highlights = $(\":hover\");\n    $highlights.addClass(this.LM_HOVER_CLASS);\n  },\n\n  unhoverAll() {\n    const selector = $(`.${this.LM_HOVER_CLASS}`);\n    const $highlights = $(selector);\n    $highlights.removeClass(this.LM_HOVER_CLASS);\n  },\n\n  handleMouseMove(event) {\n    this.mouseX = event.clientX;\n    this.mouseY = event.clientY;\n  },\n\n  handleLineMapMouseEnter(event) {\n    this.handleLineMapMouseToggle(event, true);\n  },\n\n  handleLineMapMouseLeave(event) {\n    this.handleLineMapMouseToggle(event, false);\n  },\n\n  handleLineMapMouseToggle(event, add = true) {\n    if (help.isMobile()) {\n      return;\n    }\n    const $target = $(event.currentTarget);\n    if ($target.is(this.selectors.LINE_MAP_CONTENT_STRUCTURE)) {\n      return;\n    }\n    if ($target.data(\"description\") && !$target.data(\"matches-description\")) {\n      return;\n    }\n    const id = $target.data(\"lm-id\");\n    const selector = this.getSelectorForLineMapId(id);\n    const className = this.LM_HOVER_CLASS;\n    const $lineMaps = $(selector);\n\n    add ? $lineMaps.addClass(className) : $lineMaps.removeClass(className);\n  },\n\n  handleLineMapTouchstart(event) {\n    this.lineMapTouchstart = event.target;\n    this.lineMapTouchstartTimeout = setTimeout(() => {\n      this.lineMapTouchstart = null;\n    }, 50);\n\n    // this is primarily for tablets, otherwise the linemapping is handled by mouseenter/mouseleave\n    if (this.prevLineMapTouchStartEvent) {\n      this.handleLineMapMouseLeave(this.prevLineMapTouchStartEvent);\n    }\n    this.prevLineMapTouchStartEvent = event;\n    this.handleLineMapMouseEnter(event);\n  },\n\n  handleLineMapClick(event) {\n    if (!this.isPublicDomain) {\n      return;\n    } // ignore line mapping if not public domain poem\n    const $target = $(event.target);\n\n    if (event.type === \"touchend\") {\n      if (!this.lineMapTouchstart || this.lineMapTouchstart !== event.target) {\n        return null;\n      }\n\n      clearTimeout(this.lineMapTouchstartTimeout);\n    }\n\n    if ($target.closest(\".poem-inline__link\").length) {\n      return;\n    } // if a line mapping is inside a link, ignore line mapping click\n    const $component = $target.closest(this.selectors.COMPONENT);\n    if (help.isMobile() && $component[0].hasAttribute(\"data-toggle-drawer\")) {\n      const title =\n        `Original text: ${$target.data(\"lm-lines\").toLowerCase()}` ||\n        $component.data(\"category\");\n      const text = $target.data(\"lm-text\");\n      $(this.selectors.DRAWER_TITLE).text(title);\n      $(this.selectors.DRAWER_CONTENT).html(text);\n      $(this.selectors.DRAWER).attr(\"data-color\", $target.data(\"color\"));\n      $(this.selectors.DRAWER).modal(\"show\");\n\n      const lmId = $target.data(\"lm-id\");\n      const selector = this.getSelectorForLineMapId(lmId);\n      $(selector).addClass(this.LM_CLICKED_CLASS);\n\n      $(this.selectors.DRAWER).one(\"hide.bs.modal\", (e) => {\n        this.handleDrawerDismiss(e);\n      });\n    }\n  },\n\n  handleDrawerDismiss() {\n    $(`.${this.LM_CLICKED_CLASS}`).removeClass(this.LM_CLICKED_CLASS);\n  },\n\n  handleLineMapStructureClick() {\n    if (!help.isMobile()) {\n      return;\n    }\n    const $poemTextModal = $(this.selectors.TEXT_MODAL);\n    $poemTextModal.modal(\"show\");\n    $poemTextModal.one(\"shown.bs.modal\", () => {\n      // TODO: DRY\n      const $currentPoemText = $(this.selectors.TEXT_MODAL);\n      const $lineMaps = $(\n        $currentPoemText.find(this.selectors.LINE_MAP_CONTENT_STRUCTURE)\n      );\n      const ids = help.array.unique(\n        $lineMaps.toArray().map((lineMap) => $(lineMap).data(\"lm-id\"))\n      );\n      const $content = $($currentPoemText.find(this.selectors.POEM_CONTENT));\n      const lineMapper = new LineMapper(\"structure\", 1, $content);\n\n      help.array.each(ids, (id) => {\n        lineMapper.createStructureMappingLine(id);\n      });\n    });\n  },\n\n  handleLineMapRhymeSchemeClick() {\n    if (!help.isMobile()) {\n      return;\n    }\n    const $poemTextModal = $(this.selectors.TEXT_MODAL);\n    $poemTextModal.modal(\"show\");\n  },\n\n  getClassForSelector(selectorName) {\n    return this.selectors[selectorName].substring(1);\n  },\n\n  getPoemId() {\n    const $main = $(this.selectors.MAIN);\n    return $main.data(\"id\");\n  },\n\n  setSelectors() {\n    this.selectors = selectors;\n  },\n});\n","import LcView from \"lib/shared/view\";\nimport helpOnDemandPromo from \"views/shared/help_on_demand/promo\";\n\nexport default LcView.create({\n  ready() {\n    this.hodPromoIsRevealed = false;\n    setTimeout(() => {\n      helpOnDemandPromo.setOffset();\n      this.hodPromoIsRevealed = true;\n    }, 3000);\n    helpOnDemandPromo.ready();\n    this.setListeners();\n  },\n\n  setListeners() {\n    $(window).on(\"resize\", () => {\n      if (this.hodPromoIsRevealed) {\n        helpOnDemandPromo.setOffset();\n      }\n    });\n    $(this.selectors.HOD_PROMO_CTA).click(() => {\n      this.handleHelpOnDemandPromoClick();\n    });\n  },\n\n  handleHelpOnDemandPromoClick() {},\n\n  selectors: {\n    BOOK_COMPONENT: \".book-component\",\n    HOD_PROMO_CTA: \".hod-promo__cta\",\n  },\n});\n","import LcView from \"lib/shared/view\";\nimport help from \"helpers/base\";\nimport { SM_PIXEL_MAX, XS_PIXEL_MAX } from \"../../constants/breakpoints\";\n\nexport default LcView.create({\n  ready() {\n    this.initializeListeners();\n    this.removeInlineLinks();\n    this.showHideBenefits();\n  },\n\n  initializeListeners() {\n    $(this.selectors.MOCK_BROWSER_GRIPPER).on(\"mousedown touchstart\", (e) => {\n      this.handleMockBrowserGripStart(e);\n    });\n    $(\"body\").on(\"mouseup touchend\", (e) => {\n      this.handleMockBrowserGripEnd(e);\n    });\n    $(this.selectors.MOCK_BROWSER).on(\"mousemove touchmove\", (e) => {\n      this.handleMockBrowserGripMove(e);\n    });\n    $(window).on(\"resize\", () => {\n      this.handleMockBrowserResize();\n      this.showHideBenefits();\n    });\n\n    if (help.isMobile()) {\n      $(this.selectors.BENEFITS_MORE).on(\"click\", (e) => {\n        e.stopPropagation();\n        this.updateTooltipContent();\n        const popover = document.querySelector(this.selectors.POPOVER);\n        popover.classList.toggle(\"show\");\n      });\n\n      $(\"body\").on(\"click\", () => {\n        const popover = document.querySelector(this.selectors.POPOVER);\n        popover?.classList.remove(\"show\");\n      });\n    } else {\n      $(this.selectors.BENEFITS_MORE).hover(\n        () => {\n          this.updateTooltipContent();\n          const popover = document.querySelector(this.selectors.POPOVER);\n          popover.classList.add(\"show\");\n        },\n        () => {\n          const popover = document.querySelector(this.selectors.POPOVER);\n          popover.classList.remove(\"show\");\n        }\n      );\n    }\n  },\n\n  updateTooltipContent() {\n    const popoverContent = document.querySelector(\n      this.selectors.POPOVER_CONTENT\n    );\n    const hiddenBenefits = document.querySelectorAll(\n      this.selectors.HIDDEN_BENEFIT_TEXT\n    );\n    const hiddenBenefitText = Array.from(hiddenBenefits)\n      .map((benefit) => benefit.innerText)\n      .join(\", \");\n    popoverContent.innerText = hiddenBenefitText;\n  },\n\n  removeInlineLinks() {\n    const $mockBrowser = $(this.selectors.MOCK_BROWSER);\n    const $links = $mockBrowser.find(this.selectors.INLINE_LINK);\n    $links.each((i, link) => {\n      $(link).removeAttr(\"href\");\n    });\n  },\n\n  showHideBenefits() {\n    const benefits = document.querySelectorAll(this.selectors.BENEFIT);\n\n    benefits.forEach((benefit) => {\n      switch (benefit.dataset.breakpoint) {\n        case \"lg\":\n          benefit.classList.add(\"hidden\");\n          break;\n        case \"sm\":\n          if (window.innerWidth <= SM_PIXEL_MAX) {\n            benefit.classList.add(\"hidden\");\n          } else {\n            benefit.classList.remove(\"hidden\");\n          }\n          break;\n        case \"xs\":\n          if (window.innerWidth <= XS_PIXEL_MAX) {\n            benefit.classList.add(\"hidden\");\n          } else {\n            benefit.classList.remove(\"hidden\");\n          }\n          break;\n        default:\n          break;\n      }\n    });\n  },\n\n  selectors: {\n    MAIN: \".sign-up-wrap\",\n    MOCK_BROWSER: \".sign-up__mock-browser\",\n    MOCK_BROWSER_CONTENT: \".sign-up__mock-browser--content\",\n    MOCK_BROWSER_EXPANDABLE_COL: \".sign-up__mock-browser--expandable-col\",\n    MOCK_BROWSER_EXPANDABLE_CONTENT:\n      \".sign-up__mock-browser--expandable-content\",\n    MOCK_BROWSER_STATIC_CONTENT: \".sign-up__mock-browser--static-content\",\n    MOCK_BROWSER_GRIPPER: \".sign-up__mock-browser--gripper\",\n    INLINE_LINK: \"a.poem-inline__link\",\n    GROUPS_PROMO_LINK: \".groups-promo__link\",\n    PLAN_SWITCH_TO_MONTHLY_LINK: \".selected-subscription-plan__switch--monthly\",\n    PLAN_SWITCH_TO_ANNUAL_LINK: \".selected-subscription-plan__switch--annual\",\n    BENEFIT: \".benefit\",\n    BENEFITS_MORE: \".more\",\n    HIDDEN_BENEFIT_TEXT: \".benefit.hidden .text\",\n    POPOVER: \".popover\",\n    POPOVER_CONTENT: \".popover-content\",\n  },\n\n  handleMockBrowserGripStart(e) {\n    const $mockBrowser = $(e.target).closest(this.selectors.MOCK_BROWSER);\n    $mockBrowser.attr(\"data-gripped\", \"true\");\n  },\n\n  handleMockBrowserGripEnd() {\n    const $mockBrowser = $(this.selectors.MOCK_BROWSER);\n    $mockBrowser.removeAttr(\"data-gripped\");\n  },\n\n  handleMockBrowserGripMove(e) {\n    const $mockBrowser = $(e.target).closest(this.selectors.MOCK_BROWSER);\n    if (!$mockBrowser.attr(\"data-gripped\")) {\n      return;\n    }\n    const $expandableCol = $mockBrowser.find(\n      this.selectors.MOCK_BROWSER_EXPANDABLE_COL\n    );\n    const $expandableContent = $mockBrowser.find(\n      this.selectors.MOCK_BROWSER_EXPANDABLE_CONTENT\n    );\n    const $staticContent = $mockBrowser.find(\n      this.selectors.MOCK_BROWSER_STATIC_CONTENT\n    );\n    const $gripper = $mockBrowser.find(this.selectors.MOCK_BROWSER_GRIPPER);\n\n    const pageX =\n      e.pageX ||\n      (e.originalEvent &&\n        e.originalEvent.touches &&\n        e.originalEvent.touches[0] &&\n        e.originalEvent.touches[0].pageX);\n    const offset = $staticContent.offset().left;\n    let x = pageX - offset;\n    const width = $staticContent.width();\n    const isLtr = $expandableCol.data(\"ltr\");\n    const borderWidth = isLtr\n      ? parseInt($expandableCol.css(\"border-right-width\")) || 0\n      : parseInt($expandableCol.css(\"border-left-width\")) || 0;\n    const padding = parseInt($staticContent.css(\"padding-left\")) || 0;\n\n    if (x < padding + borderWidth) {\n      x = padding + borderWidth;\n    }\n    if (x > width + padding) {\n      x = width + padding;\n    }\n\n    // account for $expandableCol's border, staticContent's padding, and half the gripper width\n    let gripperX = Math.min(x, width + padding) - borderWidth / 2;\n    if (isLtr) {\n      gripperX -= $gripper.width() / 2;\n    }\n\n    // the default expansion direction would be right-to-left, but if inverted, use data-ltr\n    if (isLtr) {\n      $expandableCol.css({ width: x });\n      $expandableCol.attr(\"data-expanded-scale\", x / width); // use scale for responsiveness if resized\n    } else {\n      $expandableCol.css({ width: width - x });\n      $expandableContent.css({ width });\n      $expandableCol.attr(\"data-expanded-scale\", (width - x) / width); // use scale for responsiveness if resized\n    }\n    $gripper.css({ left: gripperX });\n  },\n\n  // size of the mock browser is scaled down on resize, so also need to scale down width of expandableCol and gripper offset\n  handleMockBrowserResize() {\n    const $mockBrowser = $(this.selectors.MOCK_BROWSER);\n    const $expandableCol = $mockBrowser.find(\n      this.selectors.MOCK_BROWSER_EXPANDABLE_COL\n    );\n    const $staticContent = $mockBrowser.find(\n      this.selectors.MOCK_BROWSER_STATIC_CONTENT\n    );\n    const $gripper = $mockBrowser.find(this.selectors.MOCK_BROWSER_GRIPPER);\n\n    const width = $staticContent.width();\n    const borderWidth = parseInt($expandableCol.css(\"border-right-width\")) || 0;\n    const scale = $expandableCol.attr(\"data-expanded-scale\");\n    const gripperX = width * scale - $gripper.width() / 2 - borderWidth / 2;\n\n    $expandableCol.css({ width: width * scale });\n\n    $gripper.css({ left: gripperX });\n  },\n});\n","import LcView from \"lib/shared/view\";\n\nexport default LcView.create({\n  ready: () => {},\n});\n","export default {\n  ready() {\n    this.setNavMenuListeners();\n    this.setSideNavToggles();\n  },\n\n  setSideNavToggles() {\n    const sideNavToggles = document.querySelectorAll(\n      this.selectors.sideNavToggles\n    );\n    const sideNavContainer = document.querySelector(\n      this.selectors.sideNavContainer\n    );\n\n    sideNavToggles.forEach(function (toggle) {\n      $(toggle).on(\"click\", function () {\n        $(sideNavContainer).toggleClass(\"visible\");\n        $(\"body\").toggleClass(\"!tw-overflow-hidden\");\n      });\n    });\n  },\n\n  setNavMenuListeners() {\n    const navMenuItems = document.querySelectorAll(this.selectors.navMenuItems);\n\n    navMenuItems.forEach(function (item) {\n      $(item)\n        .on(\"mouseenter\", function () {\n          item.classList.add(\"open\");\n        })\n        .on(\"mouseleave\", function () {\n          item.classList.remove(\"open\");\n        });\n    });\n  },\n\n  selectors: {\n    navMenuItems: \".header-controls .dropdown\",\n    searchForm: \".header-controls form\",\n    sideNavContainer: \".side-nav--container\",\n    sideNavToggles: \".side-nav--toggle\",\n    signUpLink: \".header-controls .sign-up\",\n  },\n};\n","export default {\n  ready() {\n    $(\".hod-promo\").on(\"hod:reposition\", () => {\n      this.setOffset();\n    });\n  },\n\n  setOffset() {\n    const $hodPromo = $(\".hod-promo\");\n    const $cookieFooter = $(\".cookie-notification\");\n    const bottom = $cookieFooter.is(\":visible\")\n      ? $cookieFooter.outerHeight()\n      : 0;\n    $hodPromo.css(\"bottom\", bottom);\n  },\n};\n","import helpers from \"helpers/base\";\n\nexport default {\n  randomizeBackgrounds(selector, keepCurrent = false) {\n    const currentSelector = keepCurrent\n      ? `${selector}:not([data-indentation-bg-style])`\n      : selector;\n    const cards = Array.from(document.querySelectorAll(currentSelector));\n    const indices = cards.map((element) =>\n      parseInt(element.getAttribute(\"data-index\"))\n    );\n    const uniqueIndices = helpers.array.unique(indices).sort();\n    let lastStyle = null;\n\n    const getSelectorForLitCardWithIndex = (index) =>\n      `${currentSelector}[data-index='${index.toString()}']`;\n\n    // randomize every 12 litcards to a different style and offset\n    // ensure the same style doesn't repeat twice by keeping track of the last style\n    helpers.array.eachByN(uniqueIndices, 12, (array) => {\n      let styles = helpers.array.shuffle([\n        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,\n      ]);\n      while (styles[0] === lastStyle) {\n        styles = helpers.array.shuffle(styles);\n      }\n      helpers.array.each(array, (index) => {\n        const cardSelector = getSelectorForLitCardWithIndex(index);\n        const elements = Array.from(document.querySelectorAll(cardSelector));\n        const style = styles.shift();\n        const offset = Math.floor(Math.random() * 8);\n        elements.forEach((element) => {\n          element.setAttribute(\"data-indentation-bg-style\", style);\n          element.setAttribute(\"data-indentation-bg-offset\", offset);\n        });\n        if (styles.length === 0) {\n          lastStyle = style;\n        }\n      });\n    });\n  },\n};\n"],"names":["remove","array","element","i","length","splice","without","elements","arrayElements","this","wrap","newArray","includes","push","elementOrArray","Array","isArray","compact","filter","undefined","each","callback","eachByN","n","Math","ceil","slice","shuffle","a","shuffledArray","_toConsumableArray","j","floor","random","_ref","last","arguments","max","flatten","arrays","_ref2","concat","apply","unique","isEmpty","findBy","property","value","sortBy","properties","asc","sortProperties","sort","b","reverse","isSubset","subset","superset","every","difference","array1","array2","sample","l","m","min","results","taken","group","reduce","acc","key","groupBy","populate","isElementVisible","offsetWidth","offsetHeight","getClientRects","scrollTo","offset","window","top","offsetTop","y","left","x","behavior","getScrollPosition","document","documentElement","pageYOffset","scrollTop","clientTop","pageXOffset","scrollLeft","clientLeft","obj","fn","keys","Object","map","dig","props","split","join","obj1","obj2","delta","dom","object","string","number","isMobile","getViewportWidth","isMobileAgent","test","navigator","userAgent","getViewportHeight","getViewportDimensions","height","width","clientHeight","innerHeight","clientWidth","innerWidth","getCssTransformValue","$element","index","str","css","replace","parseInt","isLocalhost","location","hostname","isSignedIn","$","isSubscribed","userIAmA","attr","userType","showDebug","hasFunction","isFunction","getCurrentTimeInMs","Date","getTime","toString","generateRandomUuid","substring","generateComponentUuid","componentType","id","$others","cookie","parts","pop","shift","getQueryParams","search","params","qp","param","paramName","paramValue","getQueryParam","hasQueryParam","updateQueryParams","keyValuePairs","newParams","paramString","url","origin","pathname","history","pushState","chosenAddOptions","$select","options","wrappedOptions","option","html","text","append","trigger","chosenSelectOptions","children","prop","removeAttr","$option","requireAll","context","views","forEach","doNTimesWithTimeout","func","timeout","setTimeout","setWaitForAjax","waitForAjax","resetWaitForAjax","getContextTypeAndTitle","type","title","data","titleIndex","PoetryLineMapper","constructor","$originalContent","$targetContent","contentApplierClass","getContentApplierClass","contentApplierSelector","valueApplierClass","getValueApplierClass","valueApplierSelector","mapClass","getMapClass","mapSelector","assign","getDefaultOptions","isExpanded","toggle","colors","helper","Lithelp","$content","find","$toggle","baseText","highlightSelection","getSelection","getNewLmId","selectionId","colorId","selectedColorId","getNextColorId","attributes","rangy","createClassApplier","elementAttributes","useExistingElements","toggleSelection","deselect","getAllLineMapIds","getOldestLineMapId","afterHighlight","mapSelection","getTextEditorSelection","textEditor","getNativeWindow","didChange","$lineMaps","addClass","removeClass","afterMap","ids","that","replaceWith","removeLineMapping","selectColor","newestId","getNewestLineMapId","newestColor","getSelectorForLineMapId","nextColorIndex","indexOf","highlight","structure","selection","w","empty","removeAllRanges","applyLineMapping","Error","style","class","createAndApplyStyle","selector","name","createStructureMappingLine","color","lineMaps","parent","hasClass","toArray","uniqueSort","selectionIds","lineMap","lineMapGroups","lineMapGroup","attrs","position","hasStructureMappingParent","$structureLine","val","lmId","correctedSelectionId","getAllSelectionIds","$lineMapsById","$selectionsById","getSelectorForSelectionId","paragraphsById","closest","$selections","paragraphs","hasLmParent","some","hasSelectionParent","selectLineMapper","$lineMapper","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","code","resolve","module","exports","createConsumer","React","Select","_extends","onChange","toggleClass","conforms_to_gdpr","AppBanner","_useState2","_slicedToArray","useState","content","_setContent","_useState4","htmlContent","setHtmlContent","clear","setContent","event","useEffect","bannerToReplace","querySelector","display","innerHTML","on","off","classes","classnames","className","dangerouslySetInnerHTML","__html","confirmedBannerUrl","bannerKey","showBanner","setShowBanner","privacy_policy_banner","maintenance_sep2024_banner","onClick","preventDefault","requestUrl","fetch","headers","method","then","propTypes","errorMessage","PropTypes","handleChange","inputClass","inputId","isDisabled","isRequired","placeholder","showErrorMessage","tokenize","BirthdayInput","infoMessage","_props$inputId","labelProps","_objectWithoutProperties","_excluded","hasError","LabelContainer","MaskInput","disabled","inputMode","mask","maskString","valueToTokenize","input","$infoMessage","target","siblings","hide","show","pattern","showMask","size","InputInfoMessage","message","InputErrorMessage","defaultProps","Checkbox","_React$Component","_this","_classCallCheck","_callSuper","helpers","_inherits","_this$props","label","noLabel","htmlFor","containerClass","defaultChecked","checked","renderLabel","setErrorMessage","clearErrorMessage","FacebookLoginButton","authType","setAuthType","buttonRef","useRef","response","error","successHandler","errorHandler","flow","openRequestLitGuideModal","open_request_lit_guide_modal","jQuery","ajax","success","authCallback","_data","_textStatus","jqXHR","getResponseHeader","href","current","_errorThrown","emailRequired","console","errorObj","errorStr","JSON","stringify","FacebookLogin","appId","fields","scope","disableMobileRedirect","render","renderProps","ref","iconSrc","src","alt","minWidthInPixels","maxWidthInPixels","onSkipFormAndCreateAccount","onRegistrationInProgress","registrationInProgressEvent","subscription","GoogleAuthButton","buttonContainer","widthInPixels","_setWidthInPixels","googleInitialized","setGoogleInitialized","callbackUrlRef","callbackUrl","buildCallbackUrl","setWidthInPixels","newWidth","handleCredentialResponse","state","signup_origin","user","simplified_signup","email_marketing_optin","dataType","log","responseJSON","resizeObserver","ResizeObserver","entries","resizedWidth","contentRect","observe","LcOAuth2","initGoogle","calcWidthInvisibly","$modal","originalVisibility","readyState","addEventListener","removeEventListener","disconnect","google","accounts","renderButton","theme","shape","logo_alignment","click_listener","googleAuthButtonLastClicked","btnClass","iconClass","IconButton","rest","btnIconClass","autocomplete","autocorrect","autocapitalize","InputComponent","step","Input","isControlled","hasIcon","isString","valueProps","defaultValue","autoCapitalize","autoComplete","autoCorrect","buttonVariant","hideSubtext","onSubmit","amplitudeKey","InputTextCounter","locked","errorFromProps","internalErrorMessage","setInternalErrorMessage","currentValue","setCurrentValue","_useState6","leftSubcopyText","setLeftSubcopyText","_useState8","rightSubcopyText","setRightSubcopyText","TextareaAutosize","minRows","onBlur","textLength","newValue","onKeyDown","logAmplitudeCtaEvent","classModifier","labelClass","labelText","Label","RequiredText","requiredText","requiredTextClass","Modal","_len","args","_key","handleModalShown","showAtParam","currentUrl","URL","searchParams","set","newUrl","handleModalHidden","_this$props$onHidden","onHidden","call","handleUrlChanges","showModal","get","modal","_this2","_this$props2","showOnMount","showAfterDelay","_this3","_this$props3","backdropStatic","closeIcon","footer","extraClassName","fullClassName","ReactDOM","tabIndex","role","el","cx","getValue","isFocused","isSelected","innerRef","innerProps","selectHasValue","isMulti","numResults","commaSeparateNumber","isOptionDisabled","ensureOptionsHaveValues","newOption","MultiValueRemove","MultiValueContainer","clearValue","stopPropagation","onTouchEnd","onMouseDown","LoadingSpinner","Loader","MultiValue","components","removeProps","selectProps","Container","Remove","_objectSpread","ClearIndicator","onClear","replaceIndicatorIcon","selectRef","preventSelect","setState","help","onMenuOpen","menuOpen","menu","onMenuClose","innerInput","blur","onFilter","rawInput","toLowerCase","isSearchable","inputValue","selectedLabel","selectedValue","innerText","finalVal","baseClassName","isLoading","maxMenuHeight","menuPlacement","finalOptions","containerClassName","ReactSelect","classNamePrefix","DropdownIndicator","Option","ReactSelectOption","noOptionsMessage","styles","control","baseStyles","borderColor","_state","textAlign","filterOption","menuIsOpen","injectStyle","animations","cssTransition","enter","exit","CloseButton","closeToast","Toaster","ToastContainer","closeButton","pauseOnFocusLoss","transition","hiddenClass","CookieOptIn","_main","accept","bind","SHOW_COOKIE_OPT_IN","showInterval","setInterval","clearInterval","$main","optInUrl","_jqXHR","LitCharts","revealUserIamaDialogAfter","cookiePolicyUrl","privacyPolicyUrl","termsOfServiceUrl","XXS_PIXEL_MAX","XS_PIXEL_MAX","SM_PIXEL_MIN","SM_PIXEL_MAX","MD_PIXEL_MAX","CONTAINER","MAIN","HIDE_UNTIL_LOADED","HEADER","MOBILE_HEADER","MOBILE_HEADER_MAIN","FOOTER","DRAWER","DRAWER_TITLE","DRAWER_CONTENT","PDF_HEADER","TEXT_SCROLLABLE","TEXT_FIXED","TEXT_MODAL","TEXT_MODAL_CATEGORY","TEXT_MODAL_TOGGLE","TEXT_COLUMN","TEXT_LINK","TEXT_TITLE","GUIDE_COLUMN","POEM_CONTENT","COMPONENTS","COMPONENT","COMPONENT_VALUE","COMPONENT_VALUE_REPLACE","COMPONENT_TITLE","HOD_PROMO","HOD_PROMO_CTA","BANNER_PROMO","NAV","NAV_LINK","MOBILE_NAV","MOBILE_NAV_LINK","MOBILE_NAV_TOGGLE","SECTION","SECTION_TITLE","SECTION_INSTRUCTIONS","COMPONENT_ITEMS","COMPONENT_ITEM","COMPONENT_ITEMS_SELECT","COMPONENT_ITEMS_SELECT_OPTION","ACTIVE_CONTEXT","ACTIVE_CONTEXT_NOTE","ACTIVE_CONTEXT_BLURRED","LINE_MAPS","LINE_MAP_CONTENT_STRUCTURE","LINE_MAP_CONTENT_ONE_TO_ONE","LINE_MAP_VALUE_ONE_TO_ONE","LINE_MAP_VALUE_STRUCTURE","LINE_MAP_VALUE_RHYME_SCHEME","INLINE_LINK","MODAL_LIT_TERM","MODAL_LIT_TERM_TITLE","MODAL_LIT_TERM_DEFINITION","MODAL_LIT_TERM_LINK","PROMO","PROMO_MAIN","PROMO_ALT","IS_FOCUSED","CONTEXT_SWITCHER","AI_TEXT_TOGGLE","LC_TEXT_TOGGLE","POEM_GUIDE_CONTENT","POEM_AI_TOOL","MOBILE_HEADER_POEM_TITLE","Number","toLocaleString","ordinalize","s","v","subscribe","eventName","listener","unsubscribe","publish","CustomEvent","detail","dispatchEvent","cardinalize","num","isNaN","lastChar","suffix","isNumber","match","capitalize","letter","toUpperCase","capitalizeFirstLetter","charAt","htmlDecode","DOMParser","parseFromString","textContent","parameterize","multilineRegex","regs","RegExp","reg","source","truncate","initialize","path","view","require","ready","warn","_regeneratorRuntime","t","r","prototype","hasOwnProperty","defineProperty","Symbol","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","f","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","Promise","prev","stop","rval","handle","complete","finish","delegateYield","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","_defineProperty","getOwnPropertyDescriptors","defineProperties","toPrimitive","String","_toPrimitive","_toPropertyKey","asyncGeneratorStep","_initialize","_callee","_context","init","amplitudeApiKey","setUser","setLastTouchProperties","amplitudeLastTouchProperties","lastContentPageType","observeDOMChanges","setCtaHandlers","setupExposureLogging","logEvent","logSignUpPageViewed","amplitudeAccountCreated","logAccountCreated","amplitudeSubscriptionStarted","logSubscriptionStarted","amplitudeSubscriptionStartedText","_next","_throw","MutationObserver","childList","subtree","amplitudeJSON","dataAttributes","lastLinkOrCTACategory","linkOrCTACategory","lastLinkOrCTASubcategory","linkOrCTASubcategory","amplitudeEventClickHandler","currentTarget","dataAttribute","getAttribute","dataTextAttribute","dataFunnelAttribute","textInCTAorLink","stepIntoSubscriptionFunnel","querySelectorAll","exposureObserver","IntersectionObserver","observer","entry","intersectionRatio","unobserve","request","body","experiment","dataset","amplitudeExperiment","variant","amplitudeVariant","amplitudeLoggedExposure","ok","amplitudeUser","setUserId","setUserProperties","pageType","page","amplitude","getInstance","calls","parse","sessionStorage","getItem","userId","_reset_stub","setItem","addCall","getUserId","_apiKey","regenerateDeviceId","logAiEvent","eventCategory","toolName","aiToolEventCategory","aiToolEventSubcategory","upgrade","amplitudePageProperties","referrer","breakpoint","getBreakpoint","focus","signUpPageType","planPageFocusType","signUpPageGeneralOrFocus","signUpPageFocusSpecific","initGooglePromise","reject","script","createElement","googleIdLibSrc","defer","onload","onerror","appendChild","_reject","client_id","googleClientId","select_by","originatedFromOneTap","startsWith","originatedFromButton","cancel_on_tap_outside","initializePack","initializers","initializer","ReactRailsUJS","handlePrompt","result","prompt","alert","stopImmediatePropagation","LcView","definition","$form","post","serialize","fail","errors","elementData","$input","setDragging","setDraggedOver","onDrop","author","$opt","renderElementList","dragging","draggedOver","list","item","node","setAttribute","span","deleteLink","bindDeleteElementLink","ele","_asyncToGenerator","getFormErrors","_getFormErrors","_callee2","_context2","t0","click","err","submit","_x","consumer","subscriptions","connected","disconnected","received","beforeSend","_status","_settings","finalPrompt","final_prompt","status","responseText","change","resource","subfocuses","subfocusOptions","subfocus","discussionQuestionsChannel","chunks","resource_materials","EssayPromptsChannel","included_chunks","chunk","similarity","qAndAiChannel","guidePortionSent","guide_portion_sent","summarySectionOptions","resource_id","summary_sections","summarySection","_summarySection","quizQuestionsChannel","PoetryPoemsShow","ajaxPoemLoad","selectors","_defineProperties","AsyncQueue","queue","working","currentFunc","asyncFunc","work","_this$queue$shift","_work","updateRequest","_updateRequest","_callee3","requestData","attribute","_context3","getFilteredRequests","_x2","_getFilteredRequests","_callee4","_context4","$list","clone","requesterData","editorNote","requestType","formattedCreatedAt","searchVolumeTitle","voteCount","editorNoteCount","commentCount","requesterCount","showCorrectSubtypes","approved","published","subType","not","chosen","$request","updateQueue","$deleteModal","$newRequestModal","$editorsNoteModal","$editorsNoteEdit","$mergeModal","$requestersModal","$requesterCommentsModal","textSearch","filterApproved","filterPublished","updateFilter","updatedParams","opts","_opts$forcePush","forcePush","selectedValues","filterStr","originalEvent","_x3","$this","$unapprovedCount","$editorNoteText","action","$tbody","requester","username","email","iama","comment","$header","headerOriginalOffsetTop","listOriginalMarginTop","onscroll","searchQueryKey","setListeners","onresize","willCallSetInputQueryKeys","SEARCH_INPUT","searchContainer","SEARCH_INPUT_CONTAINER","removeAttribute","BROWSE_LINK","A_PLUS_PROMO_LINK","SEARCH_FORM","setDuplicateLiteraryDevices","insertPaywallBlockerLinks","scrollToLiteraryDevice","setToggleListeners","setModalListeners","CITE_BUTTON","button","_","literaryDevice","LITERARY_DEVICE","modalSelector","TOGGLE_GROUP","parentElement","TOGGLE_CONTENT","slideToggle","classList","add","from","getElementsByClassName","seen","instanceName","firstInstance","elementId","sectionId","summaryId","litDevices","litDevice","scrollRestoration","subnav","BOOK_NAV","mobileHeaderPromo","MOBILE_HEADER_PROMO","animate","link","A_PLUS_BUTTON","container","A_PLUS_DIALOG_CONTAINER","CITE_MODAL","setSelectors","LM_HOVER_CLASS","LM_CLICKED_CLASS","scrollOffsetThreshold","mouseX","mouseY","hasLoaded","isPublicDomain","hodPromoIsRevealed","$hideUntilLoaded","$poemTextScrollable","$poemTextFixed","$poemTextModal","$nav","$mobileNav","$mobileHeader","$pdfHeader","$litTermModal","$drawer","poemTextOffsetTop","poemNavOffsetTop","mobileHeaderOffsetTop","pdfHeaderOffsetTop","$currentPoemText","initializeListeners","setFixedPoemTextWidth","setDrawerWidth","collapseExpandMobileTitle","setContextSwitcherTop","applyiOSModalScrollFix","helpOnDemandPromo","setOffset","positionPromo","loadPoem","scrollToStoredLocation","handleScroll","handleResize","isAiSelected","scrollToAiTool","scrollY","getStoredScrollLocation","handleMobileNavToggle","handlePoemTextModalToggle","handleNavLinkClick","handleHelpOnDemandPromoClick","mousemove","handleMouseMove","handleComponentItemClick","handleComponentItemSelect","handleInlineLinkClick","handleLineMapMouseEnter","handleLineMapMouseLeave","handleLineMapTouchstart","handleLineMapClick","handleLineMapStructureClick","handleLineMapRhymeSchemeClick","getFixedHeaderHeight","is","setFixedPoemTextHeight","$poemContent","$poemTitle","outerHeight","$poemTextColumn","setFixedPoemTextTop","$document","$poemTextTitle","headerHeight","maxTop","bottom","setGuideColumnTop","$guideColumn","$contextSwitcher","$dialog","setMobileHeaderHeight","vHeight","setHelpOnDemandPromoRight","$container","$hodPromo","viewportWidth","containerWidth","outerWidth","$promo","prepend","disableBodyScroll","enableBodyScroll","_this4","category","component","loadComponentData","slug","cached","positionAttr","attrSelector","$component","$valueReplace","$promoMain","$promoAlt","$textLink","$activeContext","$componentItem","$componentOption","show_promo","getClassForSelector","promo_type","afterLoadComponentData","afterLoadComponentContext","_this5","$section","$components","originalValue","outerHTML","$title","$value","getComponents","aOffset","bOffset","getFocusedComponent","_this6","navHeight","focusedComponent","$childComponents","aiTool","guideContent","contains","toggleFocusedComponent","storeScrollLocation","focusComponent","unfocusComponent","modalTitle","section","modalCategory","afterFocusComponent","unfocusAll","afterFocusComponentForm","afterFocusComponentContext","lineMapper","LineMapper","matches","togglePoemText","fixPoemText","unfixPoemText","toggleNavStick","navOffsetTop","getPdfHeaderBoundary","togglePdfHeaderStick","pdfHeaderBoundary","triggerLineMapMouseToggle","_this7","unhoverAll","elementFromPoint","child","$focusedComponent","getPoemId","localStorage","deltaScrollY","$guideControls","_this$getStoredScroll","dataPosition","_this8","mobileHeaderHasStick","pdfHeaderHasStick","$target","$firstSection","$contextSwitchBanner","fixedHeaderHeight","fixedHeaderOffset","poemTextMargin","$link","linkType","selectComponentItem","$item","activeContext","$modalCategory","setComponentContentViaAjax","componentId","hoverAll","clientX","clientY","handleLineMapMouseToggle","_this9","lineMapTouchstart","lineMapTouchstartTimeout","prevLineMapTouchStartEvent","_this10","clearTimeout","hasAttribute","one","handleDrawerDismiss","_this11","selectorName","BOOK_COMPONENT","removeInlineLinks","showHideBenefits","MOCK_BROWSER_GRIPPER","handleMockBrowserGripStart","handleMockBrowserGripEnd","MOCK_BROWSER","handleMockBrowserGripMove","handleMockBrowserResize","BENEFITS_MORE","updateTooltipContent","POPOVER","popover","hover","popoverContent","POPOVER_CONTENT","hiddenBenefits","HIDDEN_BENEFIT_TEXT","hiddenBenefitText","benefit","BENEFIT","MOCK_BROWSER_CONTENT","MOCK_BROWSER_EXPANDABLE_COL","MOCK_BROWSER_EXPANDABLE_CONTENT","MOCK_BROWSER_STATIC_CONTENT","GROUPS_PROMO_LINK","PLAN_SWITCH_TO_MONTHLY_LINK","PLAN_SWITCH_TO_ANNUAL_LINK","$mockBrowser","$expandableCol","$expandableContent","$staticContent","$gripper","pageX","touches","isLtr","borderWidth","padding","gripperX","scale","setNavMenuListeners","setSideNavToggles","sideNavToggles","sideNavContainer","navMenuItems","searchForm","signUpLink","$cookieFooter","randomizeBackgrounds","currentSelector","indices","uniqueIndices","lastStyle","cardSelector","getSelectorForLitCardWithIndex","___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GLOBAL_THIS___","___EXPOSE_LOADER_IMPORT_MODULE_LOCAL_NAME___"],"sourceRoot":""}