{"version":3,"file":"js/218-253a27156d5ee75fcfcd.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 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 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 components: PropTypes.object,\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 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 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 menuIsOpen={this.state.menuOpen}\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","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":""}