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