{"version":3,"file":"js/219-57931230af4f6e3771fa.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/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 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","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":""}