@khanacademy/perseus 49.0.3 → 49.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -217,6 +217,23 @@ const strings = {
217
217
  srLinearGraphOriginIntercept: {
218
218
  context: "Screenreader-only description of the line's intercept when the intercept is the graph's origin.",
219
219
  message: "The line crosses the x and y axes at the graph's origin."
220
+ },
221
+ srLinearGrabHandle: {
222
+ context: "Screenreader-only label on the grab handle for the line on a linear graph.",
223
+ message: "Line from %(point1X)s comma %(point1Y)s to %(point2X)s comma %(point2Y)s."
224
+ },
225
+ srAngleSideAtCoordinates: {
226
+ context: "Screenreader-accessible description of the side / vertex of an angle graph",
227
+ message: "Point %(point)s, %(side)s at %(x)s comma %(y)s"
228
+ },
229
+ srAngleVertexAtCoordinatesWithAngleMeasure: {
230
+ context: "Screenreader-accessible description of a vertex on an angle graph with an angle measure",
231
+ message: "Point 2, vertex at %(x)s comma %(y)s. Angle %(angleMeasure)s degrees"
232
+ },
233
+ srAngleGraphAriaLabel: "An angle on a coordinate plane.",
234
+ srAngleGraphAriaDescription: {
235
+ context: "Screenreader-only description of an angle on a coordinate plane.",
236
+ message: "The angle measure is %(angleMeasure)s degrees with a vertex at %(vertexX)s comma %(vertexY)s, a point on the initial side at %(isX)s comma %(isY)s and a point on the terminal side at %(tsX)s comma %(tsY)s"
220
237
  }
221
238
  // The above strings are used for interactive graph SR descriptions.
222
239
  };
@@ -459,7 +476,34 @@ const mockStrings = {
459
476
  xIntercept,
460
477
  yIntercept
461
478
  }) => `The line crosses the X-axis at ${xIntercept} comma 0 and the Y-axis at 0 comma ${yIntercept}.`,
462
- srLinearGraphOriginIntercept: "The line crosses the x and y axes at the graph's origin."
479
+ srLinearGraphOriginIntercept: "The line crosses the x and y axes at the graph's origin.",
480
+ srLinearGrabHandle: ({
481
+ point1X,
482
+ point1Y,
483
+ point2X,
484
+ point2Y
485
+ }) => `Line from ${point1X} comma ${point1Y} to ${point2X} comma ${point2Y}.`,
486
+ srAngleSideAtCoordinates: ({
487
+ point,
488
+ side,
489
+ x,
490
+ y
491
+ }) => `Point ${point}, ${side} at ${x} comma ${y}`,
492
+ srAngleVertexAtCoordinatesWithAngleMeasure: ({
493
+ x,
494
+ y,
495
+ angleMeasure
496
+ }) => `Point 2, vertex at ${x} comma ${y}. Angle ${angleMeasure} degrees`,
497
+ srAngleGraphAriaLabel: "An angle on a coordinate plane.",
498
+ srAngleGraphAriaDescription: ({
499
+ angleMeasure,
500
+ vertexX,
501
+ vertexY,
502
+ isX,
503
+ isY,
504
+ tsX,
505
+ tsY
506
+ }) => `The angle measure is ${angleMeasure} degrees with a vertex at ${vertexX} comma ${vertexY}, a point on the initial side at ${isX} comma ${isY} and a point on the terminal side at ${tsX} comma ${tsY}.`
463
507
  // The above strings are used for interactive graph SR descriptions.
464
508
  };
465
509
 
@@ -1 +1 @@
1
- {"version":3,"file":"strings.js","sources":["../../src/strings.ts"],"sourcesContent":["/**\n * The translated strings that are used to render Perseus.\n */\nexport type PerseusStrings = {\n closeKeypad: string;\n openKeypad: string;\n mathInputBox: string;\n removeHighlight: string;\n addHighlight: string;\n hintPos: ({pos}: {pos: number}) => string;\n errorRendering: ({error}: {error: string}) => string;\n APPROXIMATED_PI_ERROR: string;\n EXTRA_SYMBOLS_ERROR: string;\n NEEDS_TO_BE_SIMPLFIED_ERROR: string;\n MISSING_PERCENT_ERROR: string;\n MULTIPLICATION_SIGN_ERROR: string;\n WRONG_CASE_ERROR: string;\n WRONG_LETTER_ERROR: string;\n invalidSelection: string;\n ERROR_TITLE: string;\n ERROR_MESSAGE: string;\n hints: string;\n getAnotherHint: string;\n deprecatedStandin: string;\n keepTrying: string;\n tryAgain: string;\n check: string;\n correctExcited: string;\n nextQuestion: string;\n skipToTitle: ({title}: {title: string}) => string;\n current: string;\n correct: string;\n correctSelected: string;\n correctCrossedOut: string;\n incorrect: string;\n incorrectSelected: string;\n hideExplanation: string;\n explain: string;\n INVALID_MESSAGE_PREFIX: string;\n DEFAULT_INVALID_MESSAGE_1: string;\n DEFAULT_INVALID_MESSAGE_2: string;\n integerExample: string;\n properExample: string;\n simplifiedProperExample: string;\n improperExample: string;\n simplifiedImproperExample: string;\n mixedExample: string;\n decimalExample: string;\n percentExample: string;\n piExample: string;\n yourAnswer: string;\n yourAnswerLabel: string;\n addPoints: string;\n addVertices: string;\n tapMultiple: string;\n tapSingle: string;\n clickMultiple: string;\n clickSingle: string;\n choices: string;\n answers: ({num}: {num: number}) => string;\n hideAnswersToggleLabel: string;\n moves: ({num}: {num: number}) => string;\n clickTiles: string;\n turnOffLights: string;\n fillAllCells: string;\n molecularDrawing: ({content}: {content: string}) => string;\n switchDirection: string;\n circleOpen: string;\n circleFilled: string;\n numDivisions: string;\n divisions: ({divRangeString}: {divRangeString: string}) => string;\n lineRange: ({lineRange}: {lineRange: string}) => string;\n lineNumber: ({lineNumber}: {lineNumber: string}) => string;\n symbolPassage: ({\n questionSymbol,\n questionNumber,\n }: {\n questionSymbol: string;\n questionNumber: string;\n }) => string;\n symbolQuestion: ({sentenceSymbol}: {sentenceSymbol: string}) => string;\n lineLabel: string;\n beginningPassage: string;\n beginningFootnotes: string;\n endPassage: string;\n questionMarker: ({number}: {number: string}) => string;\n circleMarker: ({number}: {number: string}) => string;\n sentenceMarker: ({number}: {number: string}) => string;\n dragHandles: string;\n tapAddPoints: string;\n false: string;\n true: string;\n no: string;\n yes: string;\n chooseCorrectNum: string;\n notNoneOfTheAbove: string;\n noneOfTheAbove: string;\n chooseNumAnswers: ({numCorrect}: {numCorrect: string}) => string;\n chooseAllAnswers: string;\n chooseOneAnswer: string;\n choiceCheckedCorrect: ({letter}: {letter: string}) => string;\n choiceCrossedOutCorrect: ({letter}: {letter: string}) => string;\n choiceCorrect: ({letter}: {letter: string}) => string;\n choiceCheckedIncorrect: ({letter}: {letter: string}) => string;\n choiceCrossedOutIncorrect: ({letter}: {letter: string}) => string;\n choiceIncorrect: ({letter}: {letter: string}) => string;\n choiceChecked: ({letter}: {letter: string}) => string;\n choiceCrossedOut: ({letter}: {letter: string}) => string;\n choice: ({letter}: {letter: string}) => string;\n crossOut: string;\n crossOutOption: string;\n crossOutChoice: ({letter}: {letter: string}) => string;\n bringBack: string;\n openMenuForChoice: ({letter}: {letter: string}) => string;\n letters: string;\n rightArrow: string;\n dontUnderstandUnits: string;\n checkSigFigs: string;\n answerNumericallyIncorrect: string;\n checkUnits: string;\n dontUnderstand: string;\n loading: string;\n videoTranscript: string;\n somethingWrong: string;\n videoWrapper: string;\n mathInputTitle: string;\n mathInputDescription: string;\n sin: string;\n cos: string;\n tan: string;\n simulationLoadFail: string;\n simulationLocaleWarning: string;\n selectAnAnswer: string;\n // The following strings are used for interactive graph SR descriptions.\n addPoint: string;\n removePoint: string;\n graphKeyboardPrompt: string;\n closePolygon: string;\n openPolygon: string;\n srPointAtCoordinates: ({\n num,\n x,\n y,\n }: {\n num: number;\n x: string;\n y: string;\n }) => string;\n srInteractiveElements: ({elements}: {elements: string}) => string;\n srNoInteractiveElements: string;\n srCircleGraph: string;\n srCircleShape: ({\n centerX,\n centerY,\n }: {\n centerX: string;\n centerY: string;\n }) => string;\n srCircleRadiusPoint: ({\n radiusPointX,\n radiusPointY,\n }: {\n radiusPointX: string;\n radiusPointY: string;\n }) => string;\n srCircleRadius: ({radius}: {radius: number}) => string;\n srCircleOuterPoints: ({\n point1X,\n point1Y,\n point2X,\n point2Y,\n point3X,\n point3Y,\n point4X,\n point4Y,\n }: {\n point1X: string;\n point1Y: string;\n point2X: string;\n point2Y: string;\n point3X: string;\n point3Y: string;\n point4X: string;\n point4Y: string;\n }) => string;\n srLinearGraph: string;\n srLinearGraphPoints: ({\n point1X,\n point1Y,\n point2X,\n point2Y,\n }: {\n point1X: string;\n point1Y: string;\n point2X: string;\n point2Y: string;\n }) => string;\n srLinearGraphSlopeIncreasing: string;\n srLinearGraphSlopeDecreasing: string;\n srLinearGraphSlopeHorizontal: string;\n srLinearGraphSlopeVertical: string;\n srLinearGraphXOnlyIntercept: ({xIntercept}: {xIntercept: string}) => string;\n srLinearGraphYOnlyIntercept: ({yIntercept}: {yIntercept: string}) => string;\n srLinearGraphBothIntercepts: ({\n xIntercept,\n yIntercept,\n }: {\n xIntercept: string;\n yIntercept: string;\n }) => string;\n srLinearGraphOriginIntercept: string;\n\n // The above strings are used for interactive graph SR descriptions.\n};\n\n/**\n * Untranslated strings used in Perseus. To be used by an external\n * translator to produce translated strings, passed in as `PerseusStrings`.\n */\nexport const strings: {\n [key in keyof PerseusStrings]:\n | string\n | {context?: string; message: string}\n | {context?: string; one: string; other: string};\n} = {\n closeKeypad: \"close math keypad\",\n openKeypad: \"open math keypad\",\n mathInputBox: \"Math input box\",\n removeHighlight: \"Remove highlight\",\n addHighlight: \"Add highlight\",\n hintPos: \"Hint #%(pos)s\",\n errorRendering: \"Error rendering: %(error)s\",\n APPROXIMATED_PI_ERROR:\n \"Your answer is close, but you may \" +\n \"have approximated pi. Enter your \" +\n \"answer as a multiple of pi, like \" +\n \"<code>12\\\\ \\\\text{pi}</code> or \" +\n \"<code>2/3\\\\ \\\\text{pi}</code>\",\n EXTRA_SYMBOLS_ERROR:\n \"We could not understand your \" +\n \"answer. Please check your answer for extra \" +\n \"text or symbols.\",\n NEEDS_TO_BE_SIMPLFIED_ERROR:\n \"Your answer is almost correct, \" + \"but it needs to be simplified.\",\n MISSING_PERCENT_ERROR:\n \"Your answer is almost correct, \" +\n \"but it is missing a \" +\n \"<code>\\\\%</code> at the end.\",\n MULTIPLICATION_SIGN_ERROR:\n \"I'm a computer. I only understand \" +\n \"multiplication if you use an asterisk \" +\n \"(*) as the multiplication sign.\",\n WRONG_CASE_ERROR:\n \"Your answer includes use of a variable with the wrong case.\",\n WRONG_LETTER_ERROR: \"Your answer includes a wrong variable letter.\",\n invalidSelection: \"Make sure you select something for every row.\",\n ERROR_TITLE: \"Oops!\",\n ERROR_MESSAGE: \"Sorry, I don't understand that!\",\n hints: \"Hints\",\n getAnotherHint: \"Get another hint\",\n deprecatedStandin:\n \"Sorry, this part of the question is no longer available. 😅 Don't worry, you won't be graded on this part. Keep going!\",\n keepTrying: \"Keep trying\",\n tryAgain: \"Try again\",\n check: \"Check\",\n correctExcited: \"Correct!\",\n nextQuestion: \"Next question\",\n skipToTitle: \"Skip to %(title)s\",\n current: \"Current\",\n correct: \"Correct\",\n correctSelected: \"Correct (selected)\",\n correctCrossedOut: \"Correct (but you crossed it out)\",\n incorrect: \"Incorrect\",\n incorrectSelected: \"Incorrect (selected)\",\n hideExplanation: \"Hide explanation\",\n explain: \"Explain\",\n INVALID_MESSAGE_PREFIX: \"We couldn't grade your answer.\",\n DEFAULT_INVALID_MESSAGE_1: \"It looks like you left something blank or \",\n DEFAULT_INVALID_MESSAGE_2: \"entered in an invalid answer.\",\n integerExample: \"an integer, like $6$\",\n properExample: \"a *proper* fraction, like $1/2$ or $6/10$\",\n simplifiedProperExample: \"a *simplified proper* fraction, like $3/5$\",\n improperExample: \"an *improper* fraction, like $10/7$ or $14/8$\",\n simplifiedImproperExample: \"a *simplified improper* fraction, like $7/4$\",\n mixedExample: \"a mixed number, like $1\\\\ 3/4$\",\n decimalExample: \"an *exact* decimal, like $0.75$\",\n percentExample: \"a percent, like $12.34\\\\%$\",\n piExample: \"a multiple of pi, like $12\\\\ \\\\text{pi}$ or $2/3\\\\ \\\\text{pi}$\",\n yourAnswer: \"**Your answer should be** \",\n yourAnswerLabel: \"Your answer:\",\n addPoints: \"Click to add points\",\n addVertices: \"Click to add vertices\",\n tapMultiple: \"Tap each dot on the image to select all answers that apply.\",\n tapSingle: \"Tap each dot on the image to select an answer.\",\n clickMultiple:\n \"Click each dot on the image to select all answers that apply.\",\n clickSingle: \"Click each dot on the image to select an answer.\",\n choices: \"Choices:\",\n answers: {\n one: \"%(num)s answer\",\n other: \"%(num)s answers\",\n },\n hideAnswersToggleLabel: \"Hide answer choices\",\n moves: {\n one: \"Moves: %(num)s\",\n other: \"Moves: %(num)s\",\n },\n clickTiles: \"Click on the tiles to change the lights.\",\n turnOffLights: \"You must turn on all of the lights to continue.\",\n fillAllCells: \"Make sure you fill in all cells in the matrix.\",\n molecularDrawing:\n \"A molecular structure drawing. SMILES notation: %(content)s\",\n switchDirection: \"Switch direction\",\n circleOpen: \"Make circle open\",\n circleFilled: \"Make circle filled\",\n numDivisions: \"Number of divisions:\",\n divisions:\n \"Please make sure the number of divisions is in the range %(divRangeString)s.\",\n lineRange: \"lines %(lineRange)s\",\n lineNumber: \"line %(lineNumber)s\",\n symbolPassage:\n \"The symbol %(questionSymbol)s indicates that question %(questionNumber)s references this portion of the passage.\",\n symbolQuestion:\n \" The symbol %(sentenceSymbol)s indicates that the following sentence is referenced in a question.\",\n lineLabel: {\n context: \"a label next to a reading passage to denote the line number\",\n message: \"Line\",\n },\n beginningPassage: \"Beginning of reading passage.\",\n beginningFootnotes: \"Beginning of reading passage footnotes.\",\n endPassage: \"End of reading passage.\",\n questionMarker: \"[Marker for question %(number)s]\",\n circleMarker: \"[Circle marker %(number)s]\",\n sentenceMarker: \"[Sentence %(number)s]\",\n dragHandles: \"Drag handles to make graph\",\n tapAddPoints: \"Tap to add points\",\n false: \"False\",\n true: \"True\",\n no: \"No\",\n yes: \"Yes\",\n chooseCorrectNum: \"Please choose the correct number of answers.\",\n notNoneOfTheAbove:\n \"'None of the above' may not be selected when other answers are selected.\",\n noneOfTheAbove: \"None of the above\",\n chooseNumAnswers: \"Choose %(numCorrect)s answers:\",\n chooseAllAnswers: \"Choose all answers that apply:\",\n chooseOneAnswer: \"Choose 1 answer:\",\n choiceCheckedCorrect: \"(Choice %(letter)s, Checked, Correct)\",\n choiceCrossedOutCorrect: \"(Choice %(letter)s, Crossed out, Correct)\",\n choiceCorrect: \"(Choice %(letter)s, Correct)\",\n choiceCheckedIncorrect: \"(Choice %(letter)s, Checked, Incorrect)\",\n choiceCrossedOutIncorrect: \"(Choice %(letter)s, Crossed out, Incorrect)\",\n choiceIncorrect: \"(Choice %(letter)s, Incorrect)\",\n choiceChecked: \"(Choice %(letter)s, Checked)\",\n choiceCrossedOut: \"(Choice %(letter)s, Crossed out)\",\n choice: \"(Choice %(letter)s)\",\n crossOut: \"Cross out\",\n crossOutOption: \"Cross out option\",\n crossOutChoice: \"Cross out Choice %(letter)s\",\n bringBack: \"Bring back\",\n openMenuForChoice: \"Open menu for Choice %(letter)s\",\n letters: {\n context:\n \"This is a list of single-character labels that will appear in front of multiple-choice options. For instance, a multiple-choice question with three options would display (A) first option (B) second option (C) third option. There must be spaces between each of the different characters. The characters will show up next to options in the order that they are listed here. Most multiple choice questions have 5 or fewer options.\",\n message: \"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\",\n },\n rightArrow: \"Reaction arrow pointing to the right.\",\n dontUnderstandUnits: \"I couldn't understand those units.\",\n checkSigFigs: \"Check your significant figures.\",\n answerNumericallyIncorrect: \"That answer is numerically incorrect.\",\n checkUnits: \"Check your units.\",\n dontUnderstand: \"I don't understand that\",\n loading: \"Loading...\",\n videoTranscript: \"See video transcript\",\n somethingWrong: \"Something went wrong.\",\n videoWrapper: \"Khan Academy video wrapper\",\n mathInputTitle: \"mathematics keyboard\",\n mathInputDescription:\n \"Use keyboard/mouse to interact with math-based input fields\",\n sin: \"sin\",\n cos: \"cos\",\n tan: \"tan\",\n simulationLoadFail: \"Sorry, this simulation cannot load.\",\n simulationLocaleWarning:\n \"Sorry, this simulation isn't available in your language.\",\n selectAnAnswer: \"Select an answer\",\n\n // The following strings are used for interactive graph SR descriptions.\n addPoint: \"Add Point\",\n removePoint: \"Remove Point\",\n graphKeyboardPrompt: \"Press Shift + Enter to interact with the graph\",\n closePolygon: \"Close shape\",\n openPolygon: \"Re-open shape\",\n srInteractiveElements: \"Interactive elements: %(elements)s\",\n srNoInteractiveElements: \"No interactive elements\",\n // TODO(LEMS-2660): The following strings are ones that will need\n // translation tickets after all interactive graph SR strings have\n // been finalized. Remove this comment after the tickets have been\n // created.\n srPointAtCoordinates: {\n context: \"Screenreader-accessible description of a point on a graph\",\n message: \"Point %(num)s at %(x)s comma %(y)s\",\n },\n srCircleGraph: {\n context: \"Aria label for the circle graph as a whole.\",\n message: \"A circle on a coordinate plane.\",\n },\n srCircleShape: {\n context:\n \"Aria label for the interactive circle shape in a circle graph.\",\n message:\n \"Circle. The center point is at %(centerX)s comma %(centerY)s.\",\n },\n srCircleRadiusPoint: {\n context:\n \"Aria label for the interactive point that sits on the edge of the circle in a circle graph. Moving this point updates the radius of the circle\",\n message: \"Radius point at %(radiusPointX)s comma %(radiusPointY)s.\",\n },\n srCircleRadius: {\n context:\n \"Screenreader-only description of the radius of a circle in a circle graph.\",\n message: \"Circle radius is %(radius)s.\",\n },\n srCircleOuterPoints: {\n context:\n \"Screenreader-only description of key points on a circle in a circle graph.\",\n message:\n \"Points on the circle at %(point1X)s comma %(point1Y)s, %(point2X)s comma %(point2Y)s, %(point3X)s comma %(point3Y)s, %(point4X)s comma %(point4Y)s.\",\n },\n srLinearGraph: {\n context: \"Aria label for the linear graph as a whole.\",\n message: \"A line on a coordinate plane.\",\n },\n srLinearGraphPoints: {\n context:\n \"Additional information about the points for the linear graph as a whole.\",\n message:\n \"The line has two points, point 1 at %(point1X)s comma %(point1Y)s and point 2 at %(point2X)s comma %(point2Y)s.\",\n },\n srLinearGraphSlopeIncreasing: {\n context:\n \"Screenreader-only description of a line's decreasing slope on a linear graph.\",\n message: \"Its slope increases from left to right.\",\n },\n srLinearGraphSlopeDecreasing: {\n context:\n \"Screenreader-only description of a line's increasing slope on a linear graph.\",\n message: \"Its slope decreases from left to right.\",\n },\n srLinearGraphSlopeHorizontal: {\n context:\n \"Screenreader-only description of a line's horizontal slope on a linear graph.\",\n message: \"Its slope is zero.\",\n },\n srLinearGraphSlopeVertical: {\n context:\n \"Screenreader-only description of a line's vertical slope on a linear graph.\",\n message: \"Its slope is undefined.\",\n },\n srLinearGraphXOnlyIntercept: {\n context:\n \"Screenreader-only description of a line's x-intercept on a linear graph when it only has an x intercept.\",\n message: \"The line crosses the X-axis at %(xIntercept)s comma 0.\",\n },\n srLinearGraphYOnlyIntercept: {\n context:\n \"Screenreader-only description of a line's y-intercept on a linear graph when it only has a y intercept.\",\n message: \"The line crosses the Y-axis at 0 comma %(yIntercept)s.\",\n },\n srLinearGraphBothIntercepts: {\n context:\n \"Screenreader-only description of a line's x and y intercepts on a linear graph when both intercepts are present.\",\n message:\n \"The line crosses the X-axis at %(xIntercept)s comma 0 and the Y-axis at 0 comma %(yIntercept)s.\",\n },\n srLinearGraphOriginIntercept: {\n context:\n \"Screenreader-only description of the line's intercept when the intercept is the graph's origin.\",\n message: \"The line crosses the x and y axes at the graph's origin.\",\n },\n // The above strings are used for interactive graph SR descriptions.\n};\n\n/**\n * Mock strings for the Perseus package, to be used for tests and Storybook.\n */\nexport const mockStrings: PerseusStrings = {\n closeKeypad: \"close math keypad\",\n openKeypad: \"open math keypad\",\n mathInputBox: \"Math input box\",\n removeHighlight: \"Remove highlight\",\n addHighlight: \"Add highlight\",\n hintPos: ({pos}) => `Hint #${pos}`,\n errorRendering: ({error}) => `Error rendering: ${error}`,\n APPROXIMATED_PI_ERROR:\n \"Your answer is close, but you may \" +\n \"have approximated pi. Enter your \" +\n \"answer as a multiple of pi, like \" +\n \"<code>12\\\\ \\\\text{pi}</code> or \" +\n \"<code>2/3\\\\ \\\\text{pi}</code>\",\n EXTRA_SYMBOLS_ERROR:\n \"We could not understand your \" +\n \"answer. Please check your answer for extra \" +\n \"text or symbols.\",\n NEEDS_TO_BE_SIMPLFIED_ERROR:\n \"Your answer is almost correct, \" + \"but it needs to be simplified.\",\n MISSING_PERCENT_ERROR:\n \"Your answer is almost correct, \" +\n \"but it is missing a \" +\n \"<code>\\\\%</code> at the end.\",\n MULTIPLICATION_SIGN_ERROR:\n \"I'm a computer. I only understand \" +\n \"multiplication if you use an asterisk \" +\n \"(*) as the multiplication sign.\",\n WRONG_CASE_ERROR:\n \"Your answer includes use of a variable with the wrong case.\",\n WRONG_LETTER_ERROR: \"Your answer includes a wrong variable letter.\",\n invalidSelection: \"Make sure you select something for every row.\",\n ERROR_TITLE: \"Oops!\",\n ERROR_MESSAGE: \"Sorry, I don't understand that!\",\n hints: \"Hints\",\n getAnotherHint: \"Get another hint\",\n deprecatedStandin:\n \"Sorry, this part of the question is no longer available. 😅 Don't worry, you won't be graded on this part. Keep going!\",\n keepTrying: \"Keep trying\",\n tryAgain: \"Try again\",\n check: \"Check\",\n correctExcited: \"Correct!\",\n nextQuestion: \"Next question\",\n skipToTitle: ({title}) => `Skip to ${title}`,\n current: \"Current\",\n correct: \"Correct\",\n correctSelected: \"Correct (selected)\",\n correctCrossedOut: \"Correct (but you crossed it out)\",\n incorrect: \"Incorrect\",\n incorrectSelected: \"Incorrect (selected)\",\n hideExplanation: \"Hide explanation\",\n explain: \"Explain\",\n INVALID_MESSAGE_PREFIX: \"We couldn't grade your answer.\",\n DEFAULT_INVALID_MESSAGE_1: \"It looks like you left something blank or \",\n DEFAULT_INVALID_MESSAGE_2: \"entered in an invalid answer.\",\n integerExample: \"an integer, like $6$\",\n properExample: \"a *proper* fraction, like $1/2$ or $6/10$\",\n simplifiedProperExample: \"a *simplified proper* fraction, like $3/5$\",\n improperExample: \"an *improper* fraction, like $10/7$ or $14/8$\",\n simplifiedImproperExample: \"a *simplified improper* fraction, like $7/4$\",\n mixedExample: \"a mixed number, like $1\\\\ 3/4$\",\n decimalExample: \"an *exact* decimal, like $0.75$\",\n percentExample: \"a percent, like $12.34\\\\%$\",\n piExample: \"a multiple of pi, like $12\\\\ \\\\text{pi}$ or $2/3\\\\ \\\\text{pi}$\",\n yourAnswer: \"**Your answer should be** \",\n yourAnswerLabel: \"Your answer:\",\n addPoints: \"Click to add points\",\n addVertices: \"Click to add vertices\",\n tapMultiple: \"Tap each dot on the image to select all answers that apply.\",\n tapSingle: \"Tap each dot on the image to select an answer.\",\n clickMultiple:\n \"Click each dot on the image to select all answers that apply.\",\n clickSingle: \"Click each dot on the image to select an answer.\",\n choices: \"Choices:\",\n answers: ({num}) => (num === 1 ? `${num} answer` : `${num} answers`),\n hideAnswersToggleLabel: \"Hide answer choices\",\n moves: ({num}) => (num === 1 ? `Moves: ${num}` : `Moves: ${num}`),\n clickTiles: \"Click on the tiles to change the lights.\",\n turnOffLights: \"You must turn on all of the lights to continue.\",\n fillAllCells: \"Make sure you fill in all cells in the matrix.\",\n molecularDrawing: ({content}) =>\n `A molecular structure drawing. SMILES notation: ${content}`,\n switchDirection: \"Switch direction\",\n circleOpen: \"Make circle open\",\n circleFilled: \"Make circle filled\",\n numDivisions: \"Number of divisions:\",\n divisions: ({divRangeString}) =>\n `Please make sure the number of divisions is in the range ${divRangeString}.`,\n lineRange: ({lineRange}: {lineRange: string}) => `lines ${lineRange}`,\n lineNumber: ({lineNumber}: {lineNumber: string}) => `line ${lineNumber}`,\n symbolPassage: ({questionSymbol, questionNumber}) =>\n `The symbol ${questionSymbol} indicates that question ${questionNumber} references this portion of the passage.`,\n symbolQuestion: ({sentenceSymbol}) =>\n ` The symbol ${sentenceSymbol} indicates that the following sentence is referenced in a question.`,\n lineLabel: \"Line\",\n beginningPassage: \"Beginning of reading passage.\",\n beginningFootnotes: \"Beginning of reading passage footnotes.\",\n endPassage: \"End of reading passage.\",\n questionMarker: ({number}) => `[Marker for question ${number}]`,\n circleMarker: ({number}) => `[Circle marker ${number}]`,\n sentenceMarker: ({number}) => `[Sentence ${number}]`,\n dragHandles: \"Drag handles to make graph\",\n tapAddPoints: \"Tap to add points\",\n false: \"False\",\n true: \"True\",\n no: \"No\",\n yes: \"Yes\",\n chooseCorrectNum: \"Please choose the correct number of answers.\",\n notNoneOfTheAbove:\n \"'None of the above' may not be selected when other answers are selected.\",\n noneOfTheAbove: \"None of the above\",\n chooseNumAnswers: ({numCorrect}) => `Choose ${numCorrect} answers:`,\n chooseAllAnswers: \"Choose all answers that apply:\",\n chooseOneAnswer: \"Choose 1 answer:\",\n choiceCheckedCorrect: ({letter}) => `(Choice ${letter}, Checked, Correct)`,\n choiceCrossedOutCorrect: ({letter}) =>\n `(Choice ${letter}, Crossed out, Correct)`,\n choiceCorrect: ({letter}) => `(Choice ${letter}, Correct)`,\n choiceCheckedIncorrect: ({letter}) =>\n `(Choice ${letter}, Checked, Incorrect)`,\n choiceCrossedOutIncorrect: ({letter}) =>\n `(Choice ${letter}, Crossed out, Incorrect)`,\n choiceIncorrect: ({letter}) => `(Choice ${letter}, Incorrect)`,\n choiceChecked: ({letter}) => `(Choice ${letter}, Checked)`,\n choiceCrossedOut: ({letter}) => `(Choice ${letter}, Crossed out)`,\n choice: ({letter}) => `(Choice ${letter})`,\n crossOut: \"Cross out\",\n crossOutOption: \"Cross out option\",\n crossOutChoice: ({letter}) => `Cross out Choice ${letter}`,\n bringBack: \"Bring back\",\n openMenuForChoice: ({letter}) => `Open menu for Choice ${letter}`,\n letters: \"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\",\n rightArrow: \"Reaction arrow pointing to the right.\",\n dontUnderstandUnits: \"I couldn't understand those units.\",\n checkSigFigs: \"Check your significant figures.\",\n answerNumericallyIncorrect: \"That answer is numerically incorrect.\",\n checkUnits: \"Check your units.\",\n dontUnderstand: \"I don't understand that\",\n loading: \"Loading...\",\n videoTranscript: \"See video transcript\",\n somethingWrong: \"Something went wrong.\",\n videoWrapper: \"Khan Academy video wrapper\",\n mathInputTitle: \"mathematics keyboard\",\n mathInputDescription:\n \"Use keyboard/mouse to interact with math-based input fields\",\n sin: \"sin\",\n cos: \"cos\",\n tan: \"tan\",\n simulationLoadFail: \"Sorry, this simulation cannot load.\",\n simulationLocaleWarning:\n \"Sorry, this simulation isn't available in your language.\",\n selectAnAnswer: \"Select an answer\",\n\n // The following strings are used for interactive graph SR descriptions.\n graphKeyboardPrompt: \"Press Shift + Enter to interact with the graph\",\n addPoint: \"Add Point\",\n removePoint: \"Remove Point\",\n closePolygon: \"Close shape\",\n openPolygon: \"Re-open shape\",\n srPointAtCoordinates: ({num, x, y}) => `Point ${num} at ${x} comma ${y}`,\n srInteractiveElements: ({elements}) => `Interactive elements: ${elements}`,\n srNoInteractiveElements: \"No interactive elements\",\n srCircleGraph: \"A circle on a coordinate plane.\",\n srCircleShape: ({centerX, centerY}) =>\n `Circle. The center point is at ${centerX} comma ${centerY}.`,\n srCircleRadiusPoint: ({radiusPointX, radiusPointY}) =>\n `Radius point at ${radiusPointX} comma ${radiusPointY}.`,\n srCircleRadius: ({radius}) => `Circle radius is ${radius}.`,\n srCircleOuterPoints: ({\n point1X,\n point1Y,\n point2X,\n point2Y,\n point3X,\n point3Y,\n point4X,\n point4Y,\n }) =>\n `Points on the circle at ${point1X} comma ${point1Y}, ${point2X} comma ${point2Y}, ${point3X} comma ${point3Y}, ${point4X} comma ${point4Y}.`,\n srLinearGraph: \"A line on a coordinate plane.\",\n srLinearGraphPoints: ({point1X, point1Y, point2X, point2Y}) =>\n `The line has two points, point 1 at ${point1X} comma ${point1Y} and point 2 at ${point2X} comma ${point2Y}.`,\n srLinearGraphSlopeIncreasing: \"Its slope increases from left to right.\",\n srLinearGraphSlopeDecreasing: \"Its slope decreases from left to right.\",\n srLinearGraphSlopeHorizontal: \"Its slope is zero.\",\n srLinearGraphSlopeVertical: \"Its slope is undefined.\",\n srLinearGraphXOnlyIntercept: ({xIntercept}) =>\n `The line crosses the X-axis at ${xIntercept} comma 0.`,\n srLinearGraphYOnlyIntercept: ({yIntercept}) =>\n `The line crosses the Y-axis at 0 comma ${yIntercept}.`,\n srLinearGraphBothIntercepts: ({xIntercept, yIntercept}) =>\n `The line crosses the X-axis at ${xIntercept} comma 0 and the Y-axis at 0 comma ${yIntercept}.`,\n srLinearGraphOriginIntercept:\n \"The line crosses the x and y axes at the graph's origin.\",\n // The above strings are used for interactive graph SR descriptions.\n};\n"],"names":["strings","closeKeypad","openKeypad","mathInputBox","removeHighlight","addHighlight","hintPos","errorRendering","APPROXIMATED_PI_ERROR","EXTRA_SYMBOLS_ERROR","NEEDS_TO_BE_SIMPLFIED_ERROR","MISSING_PERCENT_ERROR","MULTIPLICATION_SIGN_ERROR","WRONG_CASE_ERROR","WRONG_LETTER_ERROR","invalidSelection","ERROR_TITLE","ERROR_MESSAGE","hints","getAnotherHint","deprecatedStandin","keepTrying","tryAgain","check","correctExcited","nextQuestion","skipToTitle","current","correct","correctSelected","correctCrossedOut","incorrect","incorrectSelected","hideExplanation","explain","INVALID_MESSAGE_PREFIX","DEFAULT_INVALID_MESSAGE_1","DEFAULT_INVALID_MESSAGE_2","integerExample","properExample","simplifiedProperExample","improperExample","simplifiedImproperExample","mixedExample","decimalExample","percentExample","piExample","yourAnswer","yourAnswerLabel","addPoints","addVertices","tapMultiple","tapSingle","clickMultiple","clickSingle","choices","answers","one","other","hideAnswersToggleLabel","moves","clickTiles","turnOffLights","fillAllCells","molecularDrawing","switchDirection","circleOpen","circleFilled","numDivisions","divisions","lineRange","lineNumber","symbolPassage","symbolQuestion","lineLabel","context","message","beginningPassage","beginningFootnotes","endPassage","questionMarker","circleMarker","sentenceMarker","dragHandles","tapAddPoints","false","true","no","yes","chooseCorrectNum","notNoneOfTheAbove","noneOfTheAbove","chooseNumAnswers","chooseAllAnswers","chooseOneAnswer","choiceCheckedCorrect","choiceCrossedOutCorrect","choiceCorrect","choiceCheckedIncorrect","choiceCrossedOutIncorrect","choiceIncorrect","choiceChecked","choiceCrossedOut","choice","crossOut","crossOutOption","crossOutChoice","bringBack","openMenuForChoice","letters","rightArrow","dontUnderstandUnits","checkSigFigs","answerNumericallyIncorrect","checkUnits","dontUnderstand","loading","videoTranscript","somethingWrong","videoWrapper","mathInputTitle","mathInputDescription","sin","cos","tan","simulationLoadFail","simulationLocaleWarning","selectAnAnswer","addPoint","removePoint","graphKeyboardPrompt","closePolygon","openPolygon","srInteractiveElements","srNoInteractiveElements","srPointAtCoordinates","srCircleGraph","srCircleShape","srCircleRadiusPoint","srCircleRadius","srCircleOuterPoints","srLinearGraph","srLinearGraphPoints","srLinearGraphSlopeIncreasing","srLinearGraphSlopeDecreasing","srLinearGraphSlopeHorizontal","srLinearGraphSlopeVertical","srLinearGraphXOnlyIntercept","srLinearGraphYOnlyIntercept","srLinearGraphBothIntercepts","srLinearGraphOriginIntercept","mockStrings","pos","error","title","num","content","divRangeString","questionSymbol","questionNumber","sentenceSymbol","number","numCorrect","letter","x","y","elements","centerX","centerY","radiusPointX","radiusPointY","radius","point1X","point1Y","point2X","point2Y","point3X","point3Y","point4X","point4Y","xIntercept","yIntercept"],"mappings":"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"}
1
+ {"version":3,"file":"strings.js","sources":["../../src/strings.ts"],"sourcesContent":["/**\n * The translated strings that are used to render Perseus.\n */\nexport type PerseusStrings = {\n closeKeypad: string;\n openKeypad: string;\n mathInputBox: string;\n removeHighlight: string;\n addHighlight: string;\n hintPos: ({pos}: {pos: number}) => string;\n errorRendering: ({error}: {error: string}) => string;\n APPROXIMATED_PI_ERROR: string;\n EXTRA_SYMBOLS_ERROR: string;\n NEEDS_TO_BE_SIMPLFIED_ERROR: string;\n MISSING_PERCENT_ERROR: string;\n MULTIPLICATION_SIGN_ERROR: string;\n WRONG_CASE_ERROR: string;\n WRONG_LETTER_ERROR: string;\n invalidSelection: string;\n ERROR_TITLE: string;\n ERROR_MESSAGE: string;\n hints: string;\n getAnotherHint: string;\n deprecatedStandin: string;\n keepTrying: string;\n tryAgain: string;\n check: string;\n correctExcited: string;\n nextQuestion: string;\n skipToTitle: ({title}: {title: string}) => string;\n current: string;\n correct: string;\n correctSelected: string;\n correctCrossedOut: string;\n incorrect: string;\n incorrectSelected: string;\n hideExplanation: string;\n explain: string;\n INVALID_MESSAGE_PREFIX: string;\n DEFAULT_INVALID_MESSAGE_1: string;\n DEFAULT_INVALID_MESSAGE_2: string;\n integerExample: string;\n properExample: string;\n simplifiedProperExample: string;\n improperExample: string;\n simplifiedImproperExample: string;\n mixedExample: string;\n decimalExample: string;\n percentExample: string;\n piExample: string;\n yourAnswer: string;\n yourAnswerLabel: string;\n addPoints: string;\n addVertices: string;\n tapMultiple: string;\n tapSingle: string;\n clickMultiple: string;\n clickSingle: string;\n choices: string;\n answers: ({num}: {num: number}) => string;\n hideAnswersToggleLabel: string;\n moves: ({num}: {num: number}) => string;\n clickTiles: string;\n turnOffLights: string;\n fillAllCells: string;\n molecularDrawing: ({content}: {content: string}) => string;\n switchDirection: string;\n circleOpen: string;\n circleFilled: string;\n numDivisions: string;\n divisions: ({divRangeString}: {divRangeString: string}) => string;\n lineRange: ({lineRange}: {lineRange: string}) => string;\n lineNumber: ({lineNumber}: {lineNumber: string}) => string;\n symbolPassage: ({\n questionSymbol,\n questionNumber,\n }: {\n questionSymbol: string;\n questionNumber: string;\n }) => string;\n symbolQuestion: ({sentenceSymbol}: {sentenceSymbol: string}) => string;\n lineLabel: string;\n beginningPassage: string;\n beginningFootnotes: string;\n endPassage: string;\n questionMarker: ({number}: {number: string}) => string;\n circleMarker: ({number}: {number: string}) => string;\n sentenceMarker: ({number}: {number: string}) => string;\n dragHandles: string;\n tapAddPoints: string;\n false: string;\n true: string;\n no: string;\n yes: string;\n chooseCorrectNum: string;\n notNoneOfTheAbove: string;\n noneOfTheAbove: string;\n chooseNumAnswers: ({numCorrect}: {numCorrect: string}) => string;\n chooseAllAnswers: string;\n chooseOneAnswer: string;\n choiceCheckedCorrect: ({letter}: {letter: string}) => string;\n choiceCrossedOutCorrect: ({letter}: {letter: string}) => string;\n choiceCorrect: ({letter}: {letter: string}) => string;\n choiceCheckedIncorrect: ({letter}: {letter: string}) => string;\n choiceCrossedOutIncorrect: ({letter}: {letter: string}) => string;\n choiceIncorrect: ({letter}: {letter: string}) => string;\n choiceChecked: ({letter}: {letter: string}) => string;\n choiceCrossedOut: ({letter}: {letter: string}) => string;\n choice: ({letter}: {letter: string}) => string;\n crossOut: string;\n crossOutOption: string;\n crossOutChoice: ({letter}: {letter: string}) => string;\n bringBack: string;\n openMenuForChoice: ({letter}: {letter: string}) => string;\n letters: string;\n rightArrow: string;\n dontUnderstandUnits: string;\n checkSigFigs: string;\n answerNumericallyIncorrect: string;\n checkUnits: string;\n dontUnderstand: string;\n loading: string;\n videoTranscript: string;\n somethingWrong: string;\n videoWrapper: string;\n mathInputTitle: string;\n mathInputDescription: string;\n sin: string;\n cos: string;\n tan: string;\n simulationLoadFail: string;\n simulationLocaleWarning: string;\n selectAnAnswer: string;\n // The following strings are used for interactive graph SR descriptions.\n addPoint: string;\n removePoint: string;\n graphKeyboardPrompt: string;\n closePolygon: string;\n openPolygon: string;\n srPointAtCoordinates: ({\n num,\n x,\n y,\n }: {\n num: number;\n x: string;\n y: string;\n }) => string;\n srInteractiveElements: ({elements}: {elements: string}) => string;\n srNoInteractiveElements: string;\n srCircleGraph: string;\n srCircleShape: ({\n centerX,\n centerY,\n }: {\n centerX: string;\n centerY: string;\n }) => string;\n srCircleRadiusPoint: ({\n radiusPointX,\n radiusPointY,\n }: {\n radiusPointX: string;\n radiusPointY: string;\n }) => string;\n srCircleRadius: ({radius}: {radius: number}) => string;\n srCircleOuterPoints: ({\n point1X,\n point1Y,\n point2X,\n point2Y,\n point3X,\n point3Y,\n point4X,\n point4Y,\n }: {\n point1X: string;\n point1Y: string;\n point2X: string;\n point2Y: string;\n point3X: string;\n point3Y: string;\n point4X: string;\n point4Y: string;\n }) => string;\n srLinearGraph: string;\n srLinearGraphPoints: ({\n point1X,\n point1Y,\n point2X,\n point2Y,\n }: {\n point1X: string;\n point1Y: string;\n point2X: string;\n point2Y: string;\n }) => string;\n srLinearGraphSlopeIncreasing: string;\n srLinearGraphSlopeDecreasing: string;\n srLinearGraphSlopeHorizontal: string;\n srLinearGraphSlopeVertical: string;\n srLinearGraphXOnlyIntercept: ({xIntercept}: {xIntercept: string}) => string;\n srLinearGraphYOnlyIntercept: ({yIntercept}: {yIntercept: string}) => string;\n srLinearGraphBothIntercepts: ({\n xIntercept,\n yIntercept,\n }: {\n xIntercept: string;\n yIntercept: string;\n }) => string;\n srLinearGraphOriginIntercept: string;\n srLinearGrabHandle: ({\n point1X,\n point1Y,\n point2X,\n point2Y,\n }: {\n point1X: string;\n point1Y: string;\n point2X: string;\n point2Y: string;\n }) => string;\n srAngleSideAtCoordinates: ({\n point,\n side,\n x,\n y,\n }: {\n point: number;\n side: string;\n x: string;\n y: string;\n }) => string;\n srAngleVertexAtCoordinatesWithAngleMeasure: ({\n x,\n y,\n angleMeasure,\n }: {\n x: string;\n y: string;\n angleMeasure: string;\n }) => string;\n srAngleGraphAriaLabel: string;\n srAngleGraphAriaDescription: ({\n angleMeasure,\n vertexX,\n vertexY,\n isX,\n isY,\n tsX,\n tsY,\n }: {\n angleMeasure: string;\n vertexX: string;\n vertexY: string;\n isX: string;\n isY: string;\n tsX: string;\n tsY: string;\n }) => string;\n // The above strings are used for interactive graph SR descriptions.\n};\n\n/**\n * Untranslated strings used in Perseus. To be used by an external\n * translator to produce translated strings, passed in as `PerseusStrings`.\n */\nexport const strings: {\n [key in keyof PerseusStrings]:\n | string\n | {context?: string; message: string}\n | {context?: string; one: string; other: string};\n} = {\n closeKeypad: \"close math keypad\",\n openKeypad: \"open math keypad\",\n mathInputBox: \"Math input box\",\n removeHighlight: \"Remove highlight\",\n addHighlight: \"Add highlight\",\n hintPos: \"Hint #%(pos)s\",\n errorRendering: \"Error rendering: %(error)s\",\n APPROXIMATED_PI_ERROR:\n \"Your answer is close, but you may \" +\n \"have approximated pi. Enter your \" +\n \"answer as a multiple of pi, like \" +\n \"<code>12\\\\ \\\\text{pi}</code> or \" +\n \"<code>2/3\\\\ \\\\text{pi}</code>\",\n EXTRA_SYMBOLS_ERROR:\n \"We could not understand your \" +\n \"answer. Please check your answer for extra \" +\n \"text or symbols.\",\n NEEDS_TO_BE_SIMPLFIED_ERROR:\n \"Your answer is almost correct, \" + \"but it needs to be simplified.\",\n MISSING_PERCENT_ERROR:\n \"Your answer is almost correct, \" +\n \"but it is missing a \" +\n \"<code>\\\\%</code> at the end.\",\n MULTIPLICATION_SIGN_ERROR:\n \"I'm a computer. I only understand \" +\n \"multiplication if you use an asterisk \" +\n \"(*) as the multiplication sign.\",\n WRONG_CASE_ERROR:\n \"Your answer includes use of a variable with the wrong case.\",\n WRONG_LETTER_ERROR: \"Your answer includes a wrong variable letter.\",\n invalidSelection: \"Make sure you select something for every row.\",\n ERROR_TITLE: \"Oops!\",\n ERROR_MESSAGE: \"Sorry, I don't understand that!\",\n hints: \"Hints\",\n getAnotherHint: \"Get another hint\",\n deprecatedStandin:\n \"Sorry, this part of the question is no longer available. 😅 Don't worry, you won't be graded on this part. Keep going!\",\n keepTrying: \"Keep trying\",\n tryAgain: \"Try again\",\n check: \"Check\",\n correctExcited: \"Correct!\",\n nextQuestion: \"Next question\",\n skipToTitle: \"Skip to %(title)s\",\n current: \"Current\",\n correct: \"Correct\",\n correctSelected: \"Correct (selected)\",\n correctCrossedOut: \"Correct (but you crossed it out)\",\n incorrect: \"Incorrect\",\n incorrectSelected: \"Incorrect (selected)\",\n hideExplanation: \"Hide explanation\",\n explain: \"Explain\",\n INVALID_MESSAGE_PREFIX: \"We couldn't grade your answer.\",\n DEFAULT_INVALID_MESSAGE_1: \"It looks like you left something blank or \",\n DEFAULT_INVALID_MESSAGE_2: \"entered in an invalid answer.\",\n integerExample: \"an integer, like $6$\",\n properExample: \"a *proper* fraction, like $1/2$ or $6/10$\",\n simplifiedProperExample: \"a *simplified proper* fraction, like $3/5$\",\n improperExample: \"an *improper* fraction, like $10/7$ or $14/8$\",\n simplifiedImproperExample: \"a *simplified improper* fraction, like $7/4$\",\n mixedExample: \"a mixed number, like $1\\\\ 3/4$\",\n decimalExample: \"an *exact* decimal, like $0.75$\",\n percentExample: \"a percent, like $12.34\\\\%$\",\n piExample: \"a multiple of pi, like $12\\\\ \\\\text{pi}$ or $2/3\\\\ \\\\text{pi}$\",\n yourAnswer: \"**Your answer should be** \",\n yourAnswerLabel: \"Your answer:\",\n addPoints: \"Click to add points\",\n addVertices: \"Click to add vertices\",\n tapMultiple: \"Tap each dot on the image to select all answers that apply.\",\n tapSingle: \"Tap each dot on the image to select an answer.\",\n clickMultiple:\n \"Click each dot on the image to select all answers that apply.\",\n clickSingle: \"Click each dot on the image to select an answer.\",\n choices: \"Choices:\",\n answers: {\n one: \"%(num)s answer\",\n other: \"%(num)s answers\",\n },\n hideAnswersToggleLabel: \"Hide answer choices\",\n moves: {\n one: \"Moves: %(num)s\",\n other: \"Moves: %(num)s\",\n },\n clickTiles: \"Click on the tiles to change the lights.\",\n turnOffLights: \"You must turn on all of the lights to continue.\",\n fillAllCells: \"Make sure you fill in all cells in the matrix.\",\n molecularDrawing:\n \"A molecular structure drawing. SMILES notation: %(content)s\",\n switchDirection: \"Switch direction\",\n circleOpen: \"Make circle open\",\n circleFilled: \"Make circle filled\",\n numDivisions: \"Number of divisions:\",\n divisions:\n \"Please make sure the number of divisions is in the range %(divRangeString)s.\",\n lineRange: \"lines %(lineRange)s\",\n lineNumber: \"line %(lineNumber)s\",\n symbolPassage:\n \"The symbol %(questionSymbol)s indicates that question %(questionNumber)s references this portion of the passage.\",\n symbolQuestion:\n \" The symbol %(sentenceSymbol)s indicates that the following sentence is referenced in a question.\",\n lineLabel: {\n context: \"a label next to a reading passage to denote the line number\",\n message: \"Line\",\n },\n beginningPassage: \"Beginning of reading passage.\",\n beginningFootnotes: \"Beginning of reading passage footnotes.\",\n endPassage: \"End of reading passage.\",\n questionMarker: \"[Marker for question %(number)s]\",\n circleMarker: \"[Circle marker %(number)s]\",\n sentenceMarker: \"[Sentence %(number)s]\",\n dragHandles: \"Drag handles to make graph\",\n tapAddPoints: \"Tap to add points\",\n false: \"False\",\n true: \"True\",\n no: \"No\",\n yes: \"Yes\",\n chooseCorrectNum: \"Please choose the correct number of answers.\",\n notNoneOfTheAbove:\n \"'None of the above' may not be selected when other answers are selected.\",\n noneOfTheAbove: \"None of the above\",\n chooseNumAnswers: \"Choose %(numCorrect)s answers:\",\n chooseAllAnswers: \"Choose all answers that apply:\",\n chooseOneAnswer: \"Choose 1 answer:\",\n choiceCheckedCorrect: \"(Choice %(letter)s, Checked, Correct)\",\n choiceCrossedOutCorrect: \"(Choice %(letter)s, Crossed out, Correct)\",\n choiceCorrect: \"(Choice %(letter)s, Correct)\",\n choiceCheckedIncorrect: \"(Choice %(letter)s, Checked, Incorrect)\",\n choiceCrossedOutIncorrect: \"(Choice %(letter)s, Crossed out, Incorrect)\",\n choiceIncorrect: \"(Choice %(letter)s, Incorrect)\",\n choiceChecked: \"(Choice %(letter)s, Checked)\",\n choiceCrossedOut: \"(Choice %(letter)s, Crossed out)\",\n choice: \"(Choice %(letter)s)\",\n crossOut: \"Cross out\",\n crossOutOption: \"Cross out option\",\n crossOutChoice: \"Cross out Choice %(letter)s\",\n bringBack: \"Bring back\",\n openMenuForChoice: \"Open menu for Choice %(letter)s\",\n letters: {\n context:\n \"This is a list of single-character labels that will appear in front of multiple-choice options. For instance, a multiple-choice question with three options would display (A) first option (B) second option (C) third option. There must be spaces between each of the different characters. The characters will show up next to options in the order that they are listed here. Most multiple choice questions have 5 or fewer options.\",\n message: \"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\",\n },\n rightArrow: \"Reaction arrow pointing to the right.\",\n dontUnderstandUnits: \"I couldn't understand those units.\",\n checkSigFigs: \"Check your significant figures.\",\n answerNumericallyIncorrect: \"That answer is numerically incorrect.\",\n checkUnits: \"Check your units.\",\n dontUnderstand: \"I don't understand that\",\n loading: \"Loading...\",\n videoTranscript: \"See video transcript\",\n somethingWrong: \"Something went wrong.\",\n videoWrapper: \"Khan Academy video wrapper\",\n mathInputTitle: \"mathematics keyboard\",\n mathInputDescription:\n \"Use keyboard/mouse to interact with math-based input fields\",\n sin: \"sin\",\n cos: \"cos\",\n tan: \"tan\",\n simulationLoadFail: \"Sorry, this simulation cannot load.\",\n simulationLocaleWarning:\n \"Sorry, this simulation isn't available in your language.\",\n selectAnAnswer: \"Select an answer\",\n\n // The following strings are used for interactive graph SR descriptions.\n addPoint: \"Add Point\",\n removePoint: \"Remove Point\",\n graphKeyboardPrompt: \"Press Shift + Enter to interact with the graph\",\n closePolygon: \"Close shape\",\n openPolygon: \"Re-open shape\",\n srInteractiveElements: \"Interactive elements: %(elements)s\",\n srNoInteractiveElements: \"No interactive elements\",\n // TODO(LEMS-2660): The following strings are ones that will need\n // translation tickets after all interactive graph SR strings have\n // been finalized. Remove this comment after the tickets have been\n // created.\n srPointAtCoordinates: {\n context: \"Screenreader-accessible description of a point on a graph\",\n message: \"Point %(num)s at %(x)s comma %(y)s\",\n },\n srCircleGraph: {\n context: \"Aria label for the circle graph as a whole.\",\n message: \"A circle on a coordinate plane.\",\n },\n srCircleShape: {\n context:\n \"Aria label for the interactive circle shape in a circle graph.\",\n message:\n \"Circle. The center point is at %(centerX)s comma %(centerY)s.\",\n },\n srCircleRadiusPoint: {\n context:\n \"Aria label for the interactive point that sits on the edge of the circle in a circle graph. Moving this point updates the radius of the circle\",\n message: \"Radius point at %(radiusPointX)s comma %(radiusPointY)s.\",\n },\n srCircleRadius: {\n context:\n \"Screenreader-only description of the radius of a circle in a circle graph.\",\n message: \"Circle radius is %(radius)s.\",\n },\n srCircleOuterPoints: {\n context:\n \"Screenreader-only description of key points on a circle in a circle graph.\",\n message:\n \"Points on the circle at %(point1X)s comma %(point1Y)s, %(point2X)s comma %(point2Y)s, %(point3X)s comma %(point3Y)s, %(point4X)s comma %(point4Y)s.\",\n },\n srLinearGraph: {\n context: \"Aria label for the linear graph as a whole.\",\n message: \"A line on a coordinate plane.\",\n },\n srLinearGraphPoints: {\n context:\n \"Additional information about the points for the linear graph as a whole.\",\n message:\n \"The line has two points, point 1 at %(point1X)s comma %(point1Y)s and point 2 at %(point2X)s comma %(point2Y)s.\",\n },\n srLinearGraphSlopeIncreasing: {\n context:\n \"Screenreader-only description of a line's decreasing slope on a linear graph.\",\n message: \"Its slope increases from left to right.\",\n },\n srLinearGraphSlopeDecreasing: {\n context:\n \"Screenreader-only description of a line's increasing slope on a linear graph.\",\n message: \"Its slope decreases from left to right.\",\n },\n srLinearGraphSlopeHorizontal: {\n context:\n \"Screenreader-only description of a line's horizontal slope on a linear graph.\",\n message: \"Its slope is zero.\",\n },\n srLinearGraphSlopeVertical: {\n context:\n \"Screenreader-only description of a line's vertical slope on a linear graph.\",\n message: \"Its slope is undefined.\",\n },\n srLinearGraphXOnlyIntercept: {\n context:\n \"Screenreader-only description of a line's x-intercept on a linear graph when it only has an x intercept.\",\n message: \"The line crosses the X-axis at %(xIntercept)s comma 0.\",\n },\n srLinearGraphYOnlyIntercept: {\n context:\n \"Screenreader-only description of a line's y-intercept on a linear graph when it only has a y intercept.\",\n message: \"The line crosses the Y-axis at 0 comma %(yIntercept)s.\",\n },\n srLinearGraphBothIntercepts: {\n context:\n \"Screenreader-only description of a line's x and y intercepts on a linear graph when both intercepts are present.\",\n message:\n \"The line crosses the X-axis at %(xIntercept)s comma 0 and the Y-axis at 0 comma %(yIntercept)s.\",\n },\n srLinearGraphOriginIntercept: {\n context:\n \"Screenreader-only description of the line's intercept when the intercept is the graph's origin.\",\n message: \"The line crosses the x and y axes at the graph's origin.\",\n },\n srLinearGrabHandle: {\n context:\n \"Screenreader-only label on the grab handle for the line on a linear graph.\",\n message:\n \"Line from %(point1X)s comma %(point1Y)s to %(point2X)s comma %(point2Y)s.\",\n },\n srAngleSideAtCoordinates: {\n context:\n \"Screenreader-accessible description of the side / vertex of an angle graph\",\n message: \"Point %(point)s, %(side)s at %(x)s comma %(y)s\",\n },\n srAngleVertexAtCoordinatesWithAngleMeasure: {\n context:\n \"Screenreader-accessible description of a vertex on an angle graph with an angle measure\",\n message:\n \"Point 2, vertex at %(x)s comma %(y)s. Angle %(angleMeasure)s degrees\",\n },\n srAngleGraphAriaLabel: \"An angle on a coordinate plane.\",\n srAngleGraphAriaDescription: {\n context:\n \"Screenreader-only description of an angle on a coordinate plane.\",\n message:\n \"The angle measure is %(angleMeasure)s degrees with a vertex at %(vertexX)s comma %(vertexY)s, a point on the initial side at %(isX)s comma %(isY)s and a point on the terminal side at %(tsX)s comma %(tsY)s\",\n },\n // The above strings are used for interactive graph SR descriptions.\n};\n\n/**\n * Mock strings for the Perseus package, to be used for tests and Storybook.\n */\nexport const mockStrings: PerseusStrings = {\n closeKeypad: \"close math keypad\",\n openKeypad: \"open math keypad\",\n mathInputBox: \"Math input box\",\n removeHighlight: \"Remove highlight\",\n addHighlight: \"Add highlight\",\n hintPos: ({pos}) => `Hint #${pos}`,\n errorRendering: ({error}) => `Error rendering: ${error}`,\n APPROXIMATED_PI_ERROR:\n \"Your answer is close, but you may \" +\n \"have approximated pi. Enter your \" +\n \"answer as a multiple of pi, like \" +\n \"<code>12\\\\ \\\\text{pi}</code> or \" +\n \"<code>2/3\\\\ \\\\text{pi}</code>\",\n EXTRA_SYMBOLS_ERROR:\n \"We could not understand your \" +\n \"answer. Please check your answer for extra \" +\n \"text or symbols.\",\n NEEDS_TO_BE_SIMPLFIED_ERROR:\n \"Your answer is almost correct, \" + \"but it needs to be simplified.\",\n MISSING_PERCENT_ERROR:\n \"Your answer is almost correct, \" +\n \"but it is missing a \" +\n \"<code>\\\\%</code> at the end.\",\n MULTIPLICATION_SIGN_ERROR:\n \"I'm a computer. I only understand \" +\n \"multiplication if you use an asterisk \" +\n \"(*) as the multiplication sign.\",\n WRONG_CASE_ERROR:\n \"Your answer includes use of a variable with the wrong case.\",\n WRONG_LETTER_ERROR: \"Your answer includes a wrong variable letter.\",\n invalidSelection: \"Make sure you select something for every row.\",\n ERROR_TITLE: \"Oops!\",\n ERROR_MESSAGE: \"Sorry, I don't understand that!\",\n hints: \"Hints\",\n getAnotherHint: \"Get another hint\",\n deprecatedStandin:\n \"Sorry, this part of the question is no longer available. 😅 Don't worry, you won't be graded on this part. Keep going!\",\n keepTrying: \"Keep trying\",\n tryAgain: \"Try again\",\n check: \"Check\",\n correctExcited: \"Correct!\",\n nextQuestion: \"Next question\",\n skipToTitle: ({title}) => `Skip to ${title}`,\n current: \"Current\",\n correct: \"Correct\",\n correctSelected: \"Correct (selected)\",\n correctCrossedOut: \"Correct (but you crossed it out)\",\n incorrect: \"Incorrect\",\n incorrectSelected: \"Incorrect (selected)\",\n hideExplanation: \"Hide explanation\",\n explain: \"Explain\",\n INVALID_MESSAGE_PREFIX: \"We couldn't grade your answer.\",\n DEFAULT_INVALID_MESSAGE_1: \"It looks like you left something blank or \",\n DEFAULT_INVALID_MESSAGE_2: \"entered in an invalid answer.\",\n integerExample: \"an integer, like $6$\",\n properExample: \"a *proper* fraction, like $1/2$ or $6/10$\",\n simplifiedProperExample: \"a *simplified proper* fraction, like $3/5$\",\n improperExample: \"an *improper* fraction, like $10/7$ or $14/8$\",\n simplifiedImproperExample: \"a *simplified improper* fraction, like $7/4$\",\n mixedExample: \"a mixed number, like $1\\\\ 3/4$\",\n decimalExample: \"an *exact* decimal, like $0.75$\",\n percentExample: \"a percent, like $12.34\\\\%$\",\n piExample: \"a multiple of pi, like $12\\\\ \\\\text{pi}$ or $2/3\\\\ \\\\text{pi}$\",\n yourAnswer: \"**Your answer should be** \",\n yourAnswerLabel: \"Your answer:\",\n addPoints: \"Click to add points\",\n addVertices: \"Click to add vertices\",\n tapMultiple: \"Tap each dot on the image to select all answers that apply.\",\n tapSingle: \"Tap each dot on the image to select an answer.\",\n clickMultiple:\n \"Click each dot on the image to select all answers that apply.\",\n clickSingle: \"Click each dot on the image to select an answer.\",\n choices: \"Choices:\",\n answers: ({num}) => (num === 1 ? `${num} answer` : `${num} answers`),\n hideAnswersToggleLabel: \"Hide answer choices\",\n moves: ({num}) => (num === 1 ? `Moves: ${num}` : `Moves: ${num}`),\n clickTiles: \"Click on the tiles to change the lights.\",\n turnOffLights: \"You must turn on all of the lights to continue.\",\n fillAllCells: \"Make sure you fill in all cells in the matrix.\",\n molecularDrawing: ({content}) =>\n `A molecular structure drawing. SMILES notation: ${content}`,\n switchDirection: \"Switch direction\",\n circleOpen: \"Make circle open\",\n circleFilled: \"Make circle filled\",\n numDivisions: \"Number of divisions:\",\n divisions: ({divRangeString}) =>\n `Please make sure the number of divisions is in the range ${divRangeString}.`,\n lineRange: ({lineRange}: {lineRange: string}) => `lines ${lineRange}`,\n lineNumber: ({lineNumber}: {lineNumber: string}) => `line ${lineNumber}`,\n symbolPassage: ({questionSymbol, questionNumber}) =>\n `The symbol ${questionSymbol} indicates that question ${questionNumber} references this portion of the passage.`,\n symbolQuestion: ({sentenceSymbol}) =>\n ` The symbol ${sentenceSymbol} indicates that the following sentence is referenced in a question.`,\n lineLabel: \"Line\",\n beginningPassage: \"Beginning of reading passage.\",\n beginningFootnotes: \"Beginning of reading passage footnotes.\",\n endPassage: \"End of reading passage.\",\n questionMarker: ({number}) => `[Marker for question ${number}]`,\n circleMarker: ({number}) => `[Circle marker ${number}]`,\n sentenceMarker: ({number}) => `[Sentence ${number}]`,\n dragHandles: \"Drag handles to make graph\",\n tapAddPoints: \"Tap to add points\",\n false: \"False\",\n true: \"True\",\n no: \"No\",\n yes: \"Yes\",\n chooseCorrectNum: \"Please choose the correct number of answers.\",\n notNoneOfTheAbove:\n \"'None of the above' may not be selected when other answers are selected.\",\n noneOfTheAbove: \"None of the above\",\n chooseNumAnswers: ({numCorrect}) => `Choose ${numCorrect} answers:`,\n chooseAllAnswers: \"Choose all answers that apply:\",\n chooseOneAnswer: \"Choose 1 answer:\",\n choiceCheckedCorrect: ({letter}) => `(Choice ${letter}, Checked, Correct)`,\n choiceCrossedOutCorrect: ({letter}) =>\n `(Choice ${letter}, Crossed out, Correct)`,\n choiceCorrect: ({letter}) => `(Choice ${letter}, Correct)`,\n choiceCheckedIncorrect: ({letter}) =>\n `(Choice ${letter}, Checked, Incorrect)`,\n choiceCrossedOutIncorrect: ({letter}) =>\n `(Choice ${letter}, Crossed out, Incorrect)`,\n choiceIncorrect: ({letter}) => `(Choice ${letter}, Incorrect)`,\n choiceChecked: ({letter}) => `(Choice ${letter}, Checked)`,\n choiceCrossedOut: ({letter}) => `(Choice ${letter}, Crossed out)`,\n choice: ({letter}) => `(Choice ${letter})`,\n crossOut: \"Cross out\",\n crossOutOption: \"Cross out option\",\n crossOutChoice: ({letter}) => `Cross out Choice ${letter}`,\n bringBack: \"Bring back\",\n openMenuForChoice: ({letter}) => `Open menu for Choice ${letter}`,\n letters: \"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\",\n rightArrow: \"Reaction arrow pointing to the right.\",\n dontUnderstandUnits: \"I couldn't understand those units.\",\n checkSigFigs: \"Check your significant figures.\",\n answerNumericallyIncorrect: \"That answer is numerically incorrect.\",\n checkUnits: \"Check your units.\",\n dontUnderstand: \"I don't understand that\",\n loading: \"Loading...\",\n videoTranscript: \"See video transcript\",\n somethingWrong: \"Something went wrong.\",\n videoWrapper: \"Khan Academy video wrapper\",\n mathInputTitle: \"mathematics keyboard\",\n mathInputDescription:\n \"Use keyboard/mouse to interact with math-based input fields\",\n sin: \"sin\",\n cos: \"cos\",\n tan: \"tan\",\n simulationLoadFail: \"Sorry, this simulation cannot load.\",\n simulationLocaleWarning:\n \"Sorry, this simulation isn't available in your language.\",\n selectAnAnswer: \"Select an answer\",\n\n // The following strings are used for interactive graph SR descriptions.\n graphKeyboardPrompt: \"Press Shift + Enter to interact with the graph\",\n addPoint: \"Add Point\",\n removePoint: \"Remove Point\",\n closePolygon: \"Close shape\",\n openPolygon: \"Re-open shape\",\n srPointAtCoordinates: ({num, x, y}) => `Point ${num} at ${x} comma ${y}`,\n srInteractiveElements: ({elements}) => `Interactive elements: ${elements}`,\n srNoInteractiveElements: \"No interactive elements\",\n srCircleGraph: \"A circle on a coordinate plane.\",\n srCircleShape: ({centerX, centerY}) =>\n `Circle. The center point is at ${centerX} comma ${centerY}.`,\n srCircleRadiusPoint: ({radiusPointX, radiusPointY}) =>\n `Radius point at ${radiusPointX} comma ${radiusPointY}.`,\n srCircleRadius: ({radius}) => `Circle radius is ${radius}.`,\n srCircleOuterPoints: ({\n point1X,\n point1Y,\n point2X,\n point2Y,\n point3X,\n point3Y,\n point4X,\n point4Y,\n }) =>\n `Points on the circle at ${point1X} comma ${point1Y}, ${point2X} comma ${point2Y}, ${point3X} comma ${point3Y}, ${point4X} comma ${point4Y}.`,\n srLinearGraph: \"A line on a coordinate plane.\",\n srLinearGraphPoints: ({point1X, point1Y, point2X, point2Y}) =>\n `The line has two points, point 1 at ${point1X} comma ${point1Y} and point 2 at ${point2X} comma ${point2Y}.`,\n srLinearGraphSlopeIncreasing: \"Its slope increases from left to right.\",\n srLinearGraphSlopeDecreasing: \"Its slope decreases from left to right.\",\n srLinearGraphSlopeHorizontal: \"Its slope is zero.\",\n srLinearGraphSlopeVertical: \"Its slope is undefined.\",\n srLinearGraphXOnlyIntercept: ({xIntercept}) =>\n `The line crosses the X-axis at ${xIntercept} comma 0.`,\n srLinearGraphYOnlyIntercept: ({yIntercept}) =>\n `The line crosses the Y-axis at 0 comma ${yIntercept}.`,\n srLinearGraphBothIntercepts: ({xIntercept, yIntercept}) =>\n `The line crosses the X-axis at ${xIntercept} comma 0 and the Y-axis at 0 comma ${yIntercept}.`,\n srLinearGraphOriginIntercept:\n \"The line crosses the x and y axes at the graph's origin.\",\n srLinearGrabHandle: ({point1X, point1Y, point2X, point2Y}) =>\n `Line from ${point1X} comma ${point1Y} to ${point2X} comma ${point2Y}.`,\n srAngleSideAtCoordinates: ({point, side, x, y}) =>\n `Point ${point}, ${side} at ${x} comma ${y}`,\n srAngleVertexAtCoordinatesWithAngleMeasure: ({x, y, angleMeasure}) =>\n `Point 2, vertex at ${x} comma ${y}. Angle ${angleMeasure} degrees`,\n srAngleGraphAriaLabel: \"An angle on a coordinate plane.\",\n srAngleGraphAriaDescription: ({\n angleMeasure,\n vertexX,\n vertexY,\n isX,\n isY,\n tsX,\n tsY,\n }) =>\n `The angle measure is ${angleMeasure} degrees with a vertex at ${vertexX} comma ${vertexY}, a point on the initial side at ${isX} comma ${isY} and a point on the terminal side at ${tsX} comma ${tsY}.`,\n // The above strings are used for interactive graph SR descriptions.\n};\n"],"names":["strings","closeKeypad","openKeypad","mathInputBox","removeHighlight","addHighlight","hintPos","errorRendering","APPROXIMATED_PI_ERROR","EXTRA_SYMBOLS_ERROR","NEEDS_TO_BE_SIMPLFIED_ERROR","MISSING_PERCENT_ERROR","MULTIPLICATION_SIGN_ERROR","WRONG_CASE_ERROR","WRONG_LETTER_ERROR","invalidSelection","ERROR_TITLE","ERROR_MESSAGE","hints","getAnotherHint","deprecatedStandin","keepTrying","tryAgain","check","correctExcited","nextQuestion","skipToTitle","current","correct","correctSelected","correctCrossedOut","incorrect","incorrectSelected","hideExplanation","explain","INVALID_MESSAGE_PREFIX","DEFAULT_INVALID_MESSAGE_1","DEFAULT_INVALID_MESSAGE_2","integerExample","properExample","simplifiedProperExample","improperExample","simplifiedImproperExample","mixedExample","decimalExample","percentExample","piExample","yourAnswer","yourAnswerLabel","addPoints","addVertices","tapMultiple","tapSingle","clickMultiple","clickSingle","choices","answers","one","other","hideAnswersToggleLabel","moves","clickTiles","turnOffLights","fillAllCells","molecularDrawing","switchDirection","circleOpen","circleFilled","numDivisions","divisions","lineRange","lineNumber","symbolPassage","symbolQuestion","lineLabel","context","message","beginningPassage","beginningFootnotes","endPassage","questionMarker","circleMarker","sentenceMarker","dragHandles","tapAddPoints","false","true","no","yes","chooseCorrectNum","notNoneOfTheAbove","noneOfTheAbove","chooseNumAnswers","chooseAllAnswers","chooseOneAnswer","choiceCheckedCorrect","choiceCrossedOutCorrect","choiceCorrect","choiceCheckedIncorrect","choiceCrossedOutIncorrect","choiceIncorrect","choiceChecked","choiceCrossedOut","choice","crossOut","crossOutOption","crossOutChoice","bringBack","openMenuForChoice","letters","rightArrow","dontUnderstandUnits","checkSigFigs","answerNumericallyIncorrect","checkUnits","dontUnderstand","loading","videoTranscript","somethingWrong","videoWrapper","mathInputTitle","mathInputDescription","sin","cos","tan","simulationLoadFail","simulationLocaleWarning","selectAnAnswer","addPoint","removePoint","graphKeyboardPrompt","closePolygon","openPolygon","srInteractiveElements","srNoInteractiveElements","srPointAtCoordinates","srCircleGraph","srCircleShape","srCircleRadiusPoint","srCircleRadius","srCircleOuterPoints","srLinearGraph","srLinearGraphPoints","srLinearGraphSlopeIncreasing","srLinearGraphSlopeDecreasing","srLinearGraphSlopeHorizontal","srLinearGraphSlopeVertical","srLinearGraphXOnlyIntercept","srLinearGraphYOnlyIntercept","srLinearGraphBothIntercepts","srLinearGraphOriginIntercept","srLinearGrabHandle","srAngleSideAtCoordinates","srAngleVertexAtCoordinatesWithAngleMeasure","srAngleGraphAriaLabel","srAngleGraphAriaDescription","mockStrings","pos","error","title","num","content","divRangeString","questionSymbol","questionNumber","sentenceSymbol","number","numCorrect","letter","x","y","elements","centerX","centerY","radiusPointX","radiusPointY","radius","point1X","point1Y","point2X","point2Y","point3X","point3Y","point4X","point4Y","xIntercept","yIntercept","point","side","angleMeasure","vertexX","vertexY","isX","isY","tsX","tsY"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -100,5 +100,6 @@ export type { Hint, LegacyButtonSets, LockedFigure, LockedFigureColor, LockedFig
100
100
  PerseusArticle, PerseusImageBackground, PerseusInputNumberWidgetOptions, PerseusInteractiveGraphWidgetOptions, PerseusItem, PerseusPhetSimulationWidgetOptions, PerseusPlotterWidgetOptions, PerseusPythonProgramWidgetOptions, PerseusRadioWidgetOptions, PerseusRenderer, PerseusWidget, PerseusWidgetsMap, PerseusWidgetTypes, WidgetOptions, } from "./perseus-types";
101
101
  export type { UserInputMap } from "./validation.types";
102
102
  export type { Coord } from "./interactive2/types";
103
+ export type { Coords } from "./widgets/grapher/grapher-types";
103
104
  export type { MarkerType } from "./widgets/label-image/types";
104
105
  export type { RendererPromptJSON, WidgetPromptJSON, } from "./widget-ai-utils/prompt-types";
package/dist/index.js CHANGED
@@ -454,7 +454,46 @@ const mockStrings = {
454
454
  } = _ref36;
455
455
  return `The line crosses the X-axis at ${xIntercept} comma 0 and the Y-axis at 0 comma ${yIntercept}.`;
456
456
  },
457
- srLinearGraphOriginIntercept: "The line crosses the x and y axes at the graph's origin."
457
+ srLinearGraphOriginIntercept: "The line crosses the x and y axes at the graph's origin.",
458
+ srLinearGrabHandle: _ref37 => {
459
+ let {
460
+ point1X,
461
+ point1Y,
462
+ point2X,
463
+ point2Y
464
+ } = _ref37;
465
+ return `Line from ${point1X} comma ${point1Y} to ${point2X} comma ${point2Y}.`;
466
+ },
467
+ srAngleSideAtCoordinates: _ref38 => {
468
+ let {
469
+ point,
470
+ side,
471
+ x,
472
+ y
473
+ } = _ref38;
474
+ return `Point ${point}, ${side} at ${x} comma ${y}`;
475
+ },
476
+ srAngleVertexAtCoordinatesWithAngleMeasure: _ref39 => {
477
+ let {
478
+ x,
479
+ y,
480
+ angleMeasure
481
+ } = _ref39;
482
+ return `Point 2, vertex at ${x} comma ${y}. Angle ${angleMeasure} degrees`;
483
+ },
484
+ srAngleGraphAriaLabel: "An angle on a coordinate plane.",
485
+ srAngleGraphAriaDescription: _ref40 => {
486
+ let {
487
+ angleMeasure,
488
+ vertexX,
489
+ vertexY,
490
+ isX,
491
+ isY,
492
+ tsX,
493
+ tsY
494
+ } = _ref40;
495
+ return `The angle measure is ${angleMeasure} degrees with a vertex at ${vertexX} comma ${vertexY}, a point on the initial side at ${isX} comma ${isY} and a point on the terminal side at ${tsX} comma ${tsY}.`;
496
+ }
458
497
  // The above strings are used for interactive graph SR descriptions.
459
498
  };
460
499
 
@@ -34164,15 +34203,21 @@ const noop$1 = () => {};
34164
34203
 
34165
34204
  const MovableLine = props => {
34166
34205
  const {
34206
+ points: [start, end],
34167
34207
  ariaLabels,
34168
34208
  ariaDescribedBy,
34169
- onMoveLine = () => {},
34170
- onMovePoint = () => {},
34171
34209
  color,
34172
- points: [start, end],
34173
- extend
34210
+ extend,
34211
+ onMoveLine = () => {},
34212
+ onMovePoint = () => {}
34174
34213
  } = props;
34175
34214
 
34215
+ // Aria live states for (0) point 1, (1) point 2, and (2) grab handle.
34216
+ // When moving an element, set its aria live to "polite" and the others
34217
+ // to "off". Otherwise, other connected elements that move at the same
34218
+ // time might override the currently focused element's aria live.
34219
+ const [ariaLives, setAriaLives] = React__namespace.useState(["off", "off", "off"]);
34220
+
34176
34221
  // We use separate focusableHandle elements, instead of letting the movable
34177
34222
  // points themselves be focusable, to allow the tab order of the points to
34178
34223
  // be different from the rendering order. We had to solve for the following
@@ -34190,10 +34235,14 @@ const MovableLine = props => {
34190
34235
  } = useControlPoint({
34191
34236
  ariaLabel: ariaLabels?.point1AriaLabel,
34192
34237
  ariaDescribedBy: ariaDescribedBy,
34238
+ ariaLive: ariaLives[0],
34193
34239
  point: start,
34194
34240
  sequenceNumber: 1,
34195
34241
  color,
34196
- onMove: p => onMovePoint(0, p)
34242
+ onMove: p => {
34243
+ setAriaLives(["polite", "off", "off"]);
34244
+ onMovePoint(0, p);
34245
+ }
34197
34246
  });
34198
34247
  const {
34199
34248
  visiblePoint: visiblePoint2,
@@ -34201,17 +34250,27 @@ const MovableLine = props => {
34201
34250
  } = useControlPoint({
34202
34251
  ariaLabel: ariaLabels?.point2AriaLabel,
34203
34252
  ariaDescribedBy: ariaDescribedBy,
34253
+ ariaLive: ariaLives[1],
34204
34254
  point: end,
34205
34255
  sequenceNumber: 2,
34206
34256
  color,
34207
- onMove: p => onMovePoint(1, p)
34257
+ onMove: p => {
34258
+ setAriaLives(["off", "polite", "off"]);
34259
+ onMovePoint(1, p);
34260
+ }
34208
34261
  });
34209
34262
  const line = /*#__PURE__*/React__namespace.createElement(Line$1, {
34263
+ ariaLabel: ariaLabels?.grabHandleAriaLabel,
34264
+ ariaDescribedBy: ariaDescribedBy,
34265
+ ariaLive: ariaLives[2],
34210
34266
  start: start,
34211
34267
  end: end,
34212
34268
  stroke: color,
34213
34269
  extend: extend,
34214
- onMove: onMoveLine
34270
+ onMove: delta => {
34271
+ setAriaLives(["off", "off", "polite"]);
34272
+ onMoveLine(delta);
34273
+ }
34215
34274
  });
34216
34275
  return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, focusableHandle1, line, focusableHandle2, visiblePoint1, visiblePoint2);
34217
34276
  };
@@ -34220,9 +34279,12 @@ const Line$1 = props => {
34220
34279
  const {
34221
34280
  start,
34222
34281
  end,
34223
- onMove,
34282
+ ariaLabel,
34283
+ ariaDescribedBy,
34284
+ ariaLive,
34224
34285
  extend,
34225
- stroke = defaultStroke
34286
+ stroke = defaultStroke,
34287
+ onMove
34226
34288
  } = props;
34227
34289
  const [startPtPx, endPtPx] = useTransformVectorsToPixels(start, end);
34228
34290
  const {
@@ -34252,11 +34314,19 @@ const Line$1 = props => {
34252
34314
  return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("g", {
34253
34315
  ref: line,
34254
34316
  tabIndex: disableKeyboardInteraction ? -1 : 0,
34317
+ "aria-label": ariaLabel,
34318
+ "aria-describedby": ariaDescribedBy,
34319
+ "aria-live": ariaLive,
34255
34320
  className: "movable-line",
34256
34321
  "data-testid": "movable-line",
34257
34322
  style: {
34258
34323
  cursor: dragging ? "grabbing" : "grab"
34259
34324
  }
34325
+ // Indicate that this element is interactive.
34326
+ // As a bonus, giving this group a non-group role makes
34327
+ // the screen reader skip over its empty children.
34328
+ ,
34329
+ role: "button"
34260
34330
  }, /*#__PURE__*/React__namespace.createElement(SVGLine, {
34261
34331
  start: startPtPx,
34262
34332
  end: endPtPx,
@@ -34381,23 +34451,82 @@ function AngleGraph(props) {
34381
34451
  showAngles: showAngles || false // Whether to show the angle or not
34382
34452
  };
34383
34453
 
34454
+ const {
34455
+ strings,
34456
+ locale
34457
+ } = usePerseusI18n();
34458
+ const angleMeasure = srFormatNumber(getClockwiseAngle([endPoints[0], centerPoint, endPoints[1]], allowReflexAngles), locale);
34459
+ const wholeAngleAriaLabel = strings.srAngleGraphAriaLabel;
34460
+ const wholeAngleDescription = strings.srAngleGraphAriaDescription({
34461
+ angleMeasure,
34462
+ vertexX: srFormatNumber(coords[1][X], locale),
34463
+ vertexY: srFormatNumber(coords[1][Y], locale),
34464
+ isX: srFormatNumber(coords[2][X], locale),
34465
+ isY: srFormatNumber(coords[2][Y], locale),
34466
+ tsX: srFormatNumber(coords[0][X], locale),
34467
+ tsY: srFormatNumber(coords[0][Y], locale)
34468
+ });
34469
+ const formatCoordinates = (x, y) => ({
34470
+ x: srFormatNumber(x, locale),
34471
+ y: srFormatNumber(y, locale)
34472
+ });
34473
+ const formatSideAriaLabel = (side, newPoint) => {
34474
+ const formattedCoordinates = formatCoordinates(newPoint[X], newPoint[Y]);
34475
+ const label = side === "terminal" ? strings.srAngleSideAtCoordinates({
34476
+ point: 1,
34477
+ side: "terminal side",
34478
+ ...formattedCoordinates
34479
+ }) : strings.srAngleSideAtCoordinates({
34480
+ point: 3,
34481
+ side: "initial side",
34482
+ ...formattedCoordinates
34483
+ });
34484
+ return label;
34485
+ };
34486
+ const formatVertexAriaLabel = newPoint => {
34487
+ const formattedVertexCoordinates = formatCoordinates(newPoint[X], newPoint[Y]);
34488
+ const label = showAngles ? strings.srAngleVertexAtCoordinatesWithAngleMeasure({
34489
+ ...formattedVertexCoordinates,
34490
+ angleMeasure: angleMeasure
34491
+ }) : strings.srAngleSideAtCoordinates({
34492
+ point: 2,
34493
+ side: "vertex",
34494
+ ...formattedVertexCoordinates
34495
+ });
34496
+ return label;
34497
+ };
34498
+ const initialSideAriaLabel = formatSideAriaLabel("initial", coords[2]);
34499
+ const terminalSideAriaLabel = formatSideAriaLabel("terminal", coords[0]);
34500
+ const vertexAriaLabel = formatVertexAriaLabel(coords[1]);
34501
+
34384
34502
  // Render the lines, angle, and then movable points
34385
- return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, svgLines, /*#__PURE__*/React__namespace.createElement(Angle, angleParams), /*#__PURE__*/React__namespace.createElement(MovablePoint$1, {
34503
+ return /*#__PURE__*/React__namespace.createElement("g", {
34504
+ "aria-label": wholeAngleAriaLabel,
34505
+ "aria-describedby": "angle-description"
34506
+ }, svgLines, /*#__PURE__*/React__namespace.createElement(Angle, angleParams), /*#__PURE__*/React__namespace.createElement(MovablePoint$1, {
34386
34507
  point: coords[1],
34387
34508
  sequenceNumber: 1,
34388
34509
  constrain: p => p,
34389
- onMove: destination => dispatch(actions.angle.movePoint(1, destination))
34510
+ onMove: destination => dispatch(actions.angle.movePoint(1, destination)),
34511
+ ariaLabel: vertexAriaLabel
34390
34512
  }), /*#__PURE__*/React__namespace.createElement(MovablePoint$1, {
34391
34513
  point: coords[0],
34392
34514
  sequenceNumber: 2,
34393
34515
  constrain: getAngleSideConstraint(coords[0], coords[1], snapDegrees || 1),
34394
- onMove: destination => dispatch(actions.angle.movePoint(0, destination))
34516
+ onMove: destination => dispatch(actions.angle.movePoint(0, destination)),
34517
+ ariaLabel: terminalSideAriaLabel
34395
34518
  }), /*#__PURE__*/React__namespace.createElement(MovablePoint$1, {
34396
34519
  point: coords[2],
34397
34520
  sequenceNumber: 3,
34398
34521
  constrain: getAngleSideConstraint(coords[2], coords[1], snapDegrees || 1),
34399
- onMove: destination => dispatch(actions.angle.movePoint(2, destination))
34400
- }));
34522
+ onMove: destination => dispatch(actions.angle.movePoint(2, destination)),
34523
+ ariaLabel: initialSideAriaLabel
34524
+ }), /*#__PURE__*/React__namespace.createElement("g", {
34525
+ id: "angle-description",
34526
+ style: {
34527
+ display: "hidden"
34528
+ }
34529
+ }, wholeAngleDescription));
34401
34530
  }
34402
34531
  const positiveX = [1, 0];
34403
34532
  const negativeX = [-1, 0];
@@ -34771,6 +34900,12 @@ const LinearGraph = (props, key) => {
34771
34900
  point2X: srFormatNumber(line[1][0], locale),
34772
34901
  point2Y: srFormatNumber(line[1][1], locale)
34773
34902
  });
34903
+ const grabHandleAriaLabel = strings.srLinearGrabHandle({
34904
+ point1X: srFormatNumber(line[0][0], locale),
34905
+ point1Y: srFormatNumber(line[0][1], locale),
34906
+ point2X: srFormatNumber(line[1][0], locale),
34907
+ point2Y: srFormatNumber(line[1][1], locale)
34908
+ });
34774
34909
 
34775
34910
  // Slope description
34776
34911
  const slope = (line[1][1] - line[0][1]) / (line[1][0] - line[0][0]);
@@ -34812,9 +34947,13 @@ const LinearGraph = (props, key) => {
34812
34947
  // Outer line minimal description
34813
34948
  ,
34814
34949
  "aria-label": strings.srLinearGraph,
34815
- "aria-describedby": `${pointsDescriptionId} ${interceptDescriptionId} ${slopeDescriptionId}`
34950
+ "aria-describedby": `${pointsDescriptionId} ${interceptDescriptionId} ${slopeDescriptionId}`,
34951
+ role: "figure"
34816
34952
  }, /*#__PURE__*/React__namespace.createElement(MovableLine, {
34817
34953
  key: 0,
34954
+ ariaLabels: {
34955
+ grabHandleAriaLabel: grabHandleAriaLabel
34956
+ },
34818
34957
  ariaDescribedBy: `${interceptDescriptionId} ${slopeDescriptionId}`,
34819
34958
  points: line,
34820
34959
  onMoveLine: delta => {
@@ -45799,7 +45938,7 @@ const init = function () {
45799
45938
 
45800
45939
  // This file is processed by a Rollup plugin (replace) to inject the production
45801
45940
  const libName = "@khanacademy/perseus";
45802
- const libVersion = "49.0.3";
45941
+ const libVersion = "49.1.2";
45803
45942
  perseusCore.addLibraryVersionToPerseusDebug(libName, libVersion);
45804
45943
 
45805
45944
  const apiVersion = {