Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(LEMS-1733): adds aria labels to line segment #2032

Merged
merged 25 commits into from
Jan 22, 2025

Conversation

anakaren-rojas
Copy link
Contributor

@anakaren-rojas anakaren-rojas commented Dec 18, 2024

Summary:

  • Adds aria label and description to whole line segment graph
  • Adds copy that distinguishes between single line segment on a coordinate plane and multiple line segments on a coordinate plane
  • Adds aria label for individual end points of line segment

Issue: LEMS-1733

Test plan:

  1. Navigate to Chromatic
  2. Select Line Segment Interactive Graph from drop down
  3. Validate screen reader can read line segment

Expected behavior

Single Segment

  1. Screen reader reads aria label for whole graph: A line segment on a coordinate plane.
  2. Screen reader reads aria description for whole graph: A line segment on a coordinate plane. Endpoint 1 at ${point1X} comma ${point1Y}. Endpoint 2 ${point2X} comma ${point2Y}. Segment length %(length)s units.

Multiple Segments

  1. Screen reader reads aria label for whole graph: {Number of segments} segment on a coordinate plane.
  2. Screen reader reads aria description for whole graph: {Number of segments} segment on a coordinate plane. Segment {N}: Endpoint 1 at ${point1X} comma ${point1Y}. Endpoint 2 ${point2X} comma ${point2Y}. Segment length %(length)s units.

Individual Points

  1. When selected, screen reader reads aria label for end points: Endpoint ${endpointNumber} at ${x} comma ${y}
  2. When moving a point, aria labels and descriptions adjust to include new end points and length, as appropriate

Screenshots:

Single Segment on a Coordinate Plane - Aria Label and Description

image

Multiple segments on a coordinate plane - Aria Label and Description

image

Individual Segment Aria Label - Description

image

@anakaren-rojas anakaren-rojas self-assigned this Dec 18, 2024
Copy link
Contributor

github-actions bot commented Dec 18, 2024

npm Snapshot: Published

Good news!! We've packaged up the latest commit from this PR (30061d3) and published it to npm. You
can install it using the tag PR2032.

Example:

yarn add @khanacademy/perseus@PR2032

If you are working in Khan Academy's webapp, you can run:

./dev/tools/bump_perseus_version.sh -t PR2032

Copy link
Contributor

github-actions bot commented Dec 18, 2024

Size Change: +1.02 kB (+0.07%)

Total Size: 1.47 MB

Filename Size Change
packages/perseus/dist/es/index.js 396 kB +755 B (+0.19%)
packages/perseus/dist/es/strings.js 5.37 kB +270 B (+5.3%) 🔍
ℹ️ View Unchanged
Filename Size
packages/kas/dist/es/index.js 39 kB
packages/keypad-context/dist/es/index.js 760 B
packages/kmath/dist/es/index.js 86.8 kB
packages/math-input/dist/es/index.js 77.6 kB
packages/math-input/dist/es/strings.js 1.79 kB
packages/perseus-core/dist/es/index.js 27.1 kB
packages/perseus-editor/dist/es/index.js 689 kB
packages/perseus-linter/dist/es/index.js 22.2 kB
packages/perseus-score/dist/es/index.js 113 kB
packages/pure-markdown/dist/es/index.js 3.66 kB
packages/simple-markdown/dist/es/index.js 12.5 kB

compressed-size-action

@anakaren-rojas anakaren-rojas changed the title docs(changeset): adds aria labels to line segment feat(LEMS01733): adds aria labels to line segment Dec 18, 2024
@anakaren-rojas anakaren-rojas changed the title feat(LEMS01733): adds aria labels to line segment feat(LEMS-1733): adds aria labels to line segment Dec 18, 2024
@anakaren-rojas anakaren-rojas marked this pull request as ready for review December 18, 2024 23:34
Copy link
Contributor

@nishasy nishasy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple of small requests.

packages/perseus/src/strings.ts Outdated Show resolved Hide resolved
packages/perseus/src/strings.ts Outdated Show resolved Hide resolved
srAngleGraphAriaLabel: {
context:
"Screenreader-accessible label for an angle on a coordinate plane.",
message: "An angle on a coordinate plane",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a period to the end of this?


function getLengthOfSegment(segment: PairOfPoints) {
return kpoint.distanceToPoint(...segment);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit (Optional): Since this component is not using stuff inside the component (everything it needs is passed into the parameters), you can move it outside the component, maybe at the top of this file. That way it won't re-initialize on every render.

This won't really make a difference in performance in this particular case, so it's really up to you, but I believe that's considered good practice.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, I meant to write "Since this function is not using stuff inside the component"

aria-label={wholeSegmentAriaLabel}
aria-describedby="segment-description"
>
<>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we might still want a label on the overall segments graph saying something like "[Num] segments" so the user knows what to expect before going through each segment individually.

}}
/>
<g
id={`segment-description-${i}`}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You still need to use React.useId() to make sure that it's referring to the correct description if there are multiple interactive graphs on the page.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh I see, you're talking about having multiple instances of the line segment graph on a single page, right?
I wonder if the ID creation should be bubbled up to the Mafs graph to ensure that we're not getting the same ID in multiple instances for all the graphs, then the individual graphs can consume the IDs.
It looks like we already have a unique ID being generated there, we would just need to consume it

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can bubble it down, but I think just adding another React.useId() at the top of the current file is much less work. Then you don't have to bubble it down into everything and keep passing it around everywhere even when not strictly necessary.

I'm not aware of performance issues with React.useId() so I'd personally go with that approach myself, but it's up to you.

Copy link
Contributor

@nishasy nishasy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! This is really coming together.

Note: We'll still have to figure out the aria label/description for the middle section (missing from the SRUX doc I think) after the holidays.

srSingleSegmentGraphAriaLabel: "A line segment on a coordinate plane.",
srMultipleSegmentGraphAriaLabel:
"%(countOfSegments)s segments on a coordinate plane.",
srIndividualSegmentAriaLabel: "PLACEHOLDER: PLEASE UPDATE ME",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nishasy FYI - I added a placeholder for inner aria label, which should be updated when the design copy is finalized

@nishasy nishasy self-assigned this Jan 21, 2025
Copy link
Member

@catandthemachines catandthemachines left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@@ -1382,7 +1383,7 @@ describe("Interactive Graph", function () {

it("should not have an aria-label or description if they are not provided", async () => {
// Arrange
const {container} = renderQuestion(segmentQuestion, apiOptions);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nishasy I'm assuming Anakaren used the "nonQuestion" testdata because segmentQuestions now have an aria-label?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I just changed that. Yes, it's because the graph container now has a description (and will for all graph types eventually), so I think only the None type graph might not have one.

@nishasy nishasy merged commit 22d108f into main Jan 22, 2025
8 checks passed
@nishasy nishasy deleted the LEMS-1733-add-aria-label-to-line-segment branch January 22, 2025 22:04
catandthemachines added a commit that referenced this pull request Jan 27, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @khanacademy/[email protected]

### Major Changes

- [#1965](#1965)
[`0f2bec314`](0f2bec3)
Thanks [@Myranae](https://github.com/Myranae)! - Refactor the LabelImage
widget to separate out answers from userInput into scoringData


- [#2134](#2134)
[`117e78d03`](117e78d)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move widget ID
utils to perseus-core


- [#2153](#2153)
[`29a1c656e`](29a1c65)
Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Rename all
instances of the term "ScoringData" back to "Rubric"


- [#2135](#2135)
[`7a984eba6`](7a984eb)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Expression
WidgetOptions logic to core

### Minor Changes

- [#2002](#2002)
[`a1e22a4e3`](a1e22a4)
Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Add and improve
types for scoring and validation


- [#2155](#2155)
[`0df0b1940`](0df0b19)
Thanks [@benchristel](https://github.com/benchristel)! - Move
`parsePerseusItem`, `parseAndMigratePerseusItem`,
    `parseAndMigratePerseusArticle`, `isSuccess`, and `isFailure` to the
`perseus-core` package, and deprecate the equivalent exports from the
`perseus`
    package.


- [#2032](#2032)
[`22d108fdc`](22d108f)
Thanks [@anakaren-rojas](https://github.com/anakaren-rojas)! - adds aria
labels to line segment


- [#2038](#2038)
[`e6f7cc91e`](e6f7cc9)
Thanks [@Myranae](https://github.com/Myranae)! - Fix some naming
discrepancies related to validation and simplify Matcher ScoringData
type


- [#2083](#2083)
[`4c10af109`](4c10af1)
Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Use empty
widgets check in scoring function


- [#2000](#2000)
[`0db68d222`](0db68d2)
Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Change empty
widgets check in Renderer to depend only on data available (and not on
scoring data)


- [#2137](#2137)
[`b4b3a3dbb`](b4b3a3d)
Thanks [@Myranae](https://github.com/Myranae)! - Implement a widget
export function to filter out rubric data from widget options for the
orderer widget


- [#2006](#2006)
[`879d2a501`](879d2a5)
Thanks [@Myranae](https://github.com/Myranae)! - Rename usages of rubric
to scoringData


- [#2139](#2139)
[`32cc4a45b`](32cc4a4)
Thanks [@Myranae](https://github.com/Myranae)! - Implement a widget
export function to filter out rubric data from widget options for the
Expression widget


- [#2016](#2016)
[`55ad836c6`](55ad836)
Thanks [@Myranae](https://github.com/Myranae)! - Introduces a validation
function for the label-image widget (extracted from label-image scoring
function).

### Patch Changes

- [#2142](#2142)
[`d7bcb14c3`](d7bcb14)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Radio upgrade
logic to Perseus Core


- [#2122](#2122)
[`1a75ca628`](1a75ca6)
Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Type and test
fixes for new MockWidget (isolating to be seen only in tests)


- [#2143](#2143)
[`459c25074`](459c250)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Passage
widgets upgrade logic to Perseus Core


- [#1997](#1997)
[`0464a760f`](0464a76)
Thanks [@Myranae](https://github.com/Myranae)! - Remove unused CS
Program rubric type


- [#2110](#2110)
[`e2f2cee9f`](e2f2cee)
Thanks [@nishasy](https://github.com/nishasy)! - [SR] Linear - Add the
interactive elements linear description to the whole graph container


- [#2136](#2136)
[`ffaa3904a`](ffaa390)
Thanks [@nishasy](https://github.com/nishasy)! - [SR] Quadratic - add
screen reader support for Quadratic interactive graph


- [#1996](#1996)
[`b6623bb56`](b6623bb)
Thanks [@Myranae](https://github.com/Myranae)! - Remove unused iframe
rubric type


- [#2124](#2124)
[`bdbdafe5d`](bdbdafe)
Thanks [@dependabot](https://github.com/apps/dependabot)! - Updating
wonder-blocks dependences.


- [#2152](#2152)
[`f8c9d3574`](f8c9d35)
Thanks [@Myranae](https://github.com/Myranae)! - Move the categorizer,
orderer, and expression public widget options functions from perseus
package to their widget folders in perseus-core


- [#1995](#1995)
[`99cd254de`](99cd254)
Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - TESTS: swap
input-number out of renderer tests as it is deprecated


- [#2141](#2141)
[`1355d6cfc`](1355d6c)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Measurer
upgrade logic to Perseus Core

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`0df0b1940`](0df0b19),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`b4b3a3dbb`](b4b3a3d),
[`117e78d03`](117e78d),
[`29a1c656e`](29a1c65),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]

## @khanacademy/[email protected]

### Major Changes

- [#2153](#2153)
[`29a1c656e`](29a1c65)
Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Rename all
instances of the term "ScoringData" back to "Rubric"

### Patch Changes

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`0df0b1940`](0df0b19),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`b4b3a3dbb`](b4b3a3d),
[`117e78d03`](117e78d),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]

## @khanacademy/[email protected]

### Minor Changes

- [#2158](#2158)
[`8f8955718`](8f89557)
Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Re-export
widget id support function: addWidget


- [#2142](#2142)
[`d7bcb14c3`](d7bcb14)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Radio upgrade
logic to Perseus Core


- [#2148](#2148)
[`685774f2e`](685774f)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Matcher
upgrade logic to Perseus Core


- [#2145](#2145)
[`8a489600e`](8a48960)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move simple widget
upgrade logic to Perseus Core (pt 2)


- [#2143](#2143)
[`459c25074`](459c250)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Passage
widgets upgrade logic to Perseus Core


- [#2155](#2155)
[`0df0b1940`](0df0b19)
Thanks [@benchristel](https://github.com/benchristel)! - Move
`parsePerseusItem`, `parseAndMigratePerseusItem`,
    `parseAndMigratePerseusArticle`, `isSuccess`, and `isFailure` to the
`perseus-core` package, and deprecate the equivalent exports from the
`perseus`
    package.


- [#2144](#2144)
[`dc8118aa1`](dc8118a)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move simple widget
upgrade logic to Perseus Core (pt 1)


- [#2150](#2150)
[`82fa90299`](82fa902)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move
InteractiveGraph widget upgrade to Perseus Core


- [#2134](#2134)
[`117e78d03`](117e78d)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move widget ID
utils to perseus-core


- [#2135](#2135)
[`7a984eba6`](7a984eb)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Expression
WidgetOptions logic to core


- [#2141](#2141)
[`1355d6cfc`](1355d6c)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Measurer
upgrade logic to Perseus Core


- [#2149](#2149)
[`75f43a8f4`](75f43a8)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Table upgrade
logic to Perseus Core


- [#2147](#2147)
[`ebf3695b6`](ebf3695)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move upgrade logic
for NumberLine to Perseus Core

### Patch Changes

- [#2122](#2122)
[`1a75ca628`](1a75ca6)
Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Type and test
fixes for new MockWidget (isolating to be seen only in tests)


- [#2137](#2137)
[`b4b3a3dbb`](b4b3a3d)
Thanks [@Myranae](https://github.com/Myranae)! - Move util files out of
widget folder in perseus package to utils folder in perseus-core


- [#2152](#2152)
[`f8c9d3574`](f8c9d35)
Thanks [@Myranae](https://github.com/Myranae)! - Move the categorizer,
orderer, and expression public widget options functions from perseus
package to their widget folders in perseus-core


- [#2139](#2139)
[`32cc4a45b`](32cc4a4)
Thanks [@Myranae](https://github.com/Myranae)! - Move util files out of
widget folder in perseus package to utils folder in perseus-core

## @khanacademy/[email protected]

### Minor Changes

- [#2015](#2015)
[`46623c8f1`](46623c8)
Thanks [@mark-fitzgerald](https://github.com/mark-fitzgerald)! -
[Numeric Input] Re-organize editor and improve its UI


- [#2015](#2015)
[`46623c8f1`](46623c8)
Thanks [@mark-fitzgerald](https://github.com/mark-fitzgerald)! -
[Numeric Input] - Adjust editor to organize settings more logically

### Patch Changes

- [#2142](#2142)
[`d7bcb14c3`](d7bcb14)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Radio upgrade
logic to Perseus Core


- [#2148](#2148)
[`685774f2e`](685774f)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Matcher
upgrade logic to Perseus Core


- [#2145](#2145)
[`8a489600e`](8a48960)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move simple widget
upgrade logic to Perseus Core (pt 2)


- [#2122](#2122)
[`1a75ca628`](1a75ca6)
Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Type and test
fixes for new MockWidget (isolating to be seen only in tests)


- [#2143](#2143)
[`459c25074`](459c250)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Passage
widgets upgrade logic to Perseus Core


- [#2144](#2144)
[`dc8118aa1`](dc8118a)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move simple widget
upgrade logic to Perseus Core (pt 1)


- [#2150](#2150)
[`82fa90299`](82fa902)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move
InteractiveGraph widget upgrade to Perseus Core


- [#1965](#1965)
[`0f2bec314`](0f2bec3)
Thanks [@Myranae](https://github.com/Myranae)! - Refactor the LabelImage
widget to separate out answers from userInput into scoringData


- [#2124](#2124)
[`bdbdafe5d`](bdbdafe)
Thanks [@dependabot](https://github.com/apps/dependabot)! - Updating
wonder-blocks dependences.


- [#2135](#2135)
[`7a984eba6`](7a984eb)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Expression
WidgetOptions logic to core


- [#2141](#2141)
[`1355d6cfc`](1355d6c)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Measurer
upgrade logic to Perseus Core


- [#2149](#2149)
[`75f43a8f4`](75f43a8)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move Table upgrade
logic to Perseus Core


- [#2147](#2147)
[`ebf3695b6`](ebf3695)
Thanks [@handeyeco](https://github.com/handeyeco)! - Move upgrade logic
for NumberLine to Perseus Core

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`a1e22a4e3`](a1e22a4),
[`0464a760f`](0464a76),
[`0df0b1940`](0df0b19),
[`22d108fdc`](22d108f),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`e2f2cee9f`](e2f2cee),
[`ffaa3904a`](ffaa390),
[`0f2bec314`](0f2bec3),
[`b4b3a3dbb`](b4b3a3d),
[`e6f7cc91e`](e6f7cc9),
[`4c10af109`](4c10af1),
[`b6623bb56`](b6623bb),
[`0db68d222`](0db68d2),
[`bdbdafe5d`](bdbdafe),
[`117e78d03`](117e78d),
[`b4b3a3dbb`](b4b3a3d),
[`29a1c656e`](29a1c65),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`879d2a501`](879d2a5),
[`32cc4a45b`](32cc4a4),
[`99cd254de`](99cd254),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`55ad836c6`](55ad836),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]

## @khanacademy/[email protected]

### Patch Changes

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`0df0b1940`](0df0b19),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`b4b3a3dbb`](b4b3a3d),
[`117e78d03`](117e78d),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]

## @khanacademy/[email protected]

### Patch Changes

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`0df0b1940`](0df0b19),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`b4b3a3dbb`](b4b3a3d),
[`117e78d03`](117e78d),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]

## @khanacademy/[email protected]

### Patch Changes

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`0df0b1940`](0df0b19),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`b4b3a3dbb`](b4b3a3d),
[`117e78d03`](117e78d),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]

## @khanacademy/[email protected]

### Patch Changes

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`0df0b1940`](0df0b19),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`b4b3a3dbb`](b4b3a3d),
[`117e78d03`](117e78d),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]

## @khanacademy/[email protected]

### Patch Changes

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`0df0b1940`](0df0b19),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`b4b3a3dbb`](b4b3a3d),
[`117e78d03`](117e78d),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]

## @khanacademy/[email protected]

### Patch Changes

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`0df0b1940`](0df0b19),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`b4b3a3dbb`](b4b3a3d),
[`117e78d03`](117e78d),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]

## @khanacademy/[email protected]

### Patch Changes

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`0df0b1940`](0df0b19),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`b4b3a3dbb`](b4b3a3d),
[`117e78d03`](117e78d),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]

## @khanacademy/[email protected]

### Patch Changes

- [#2124](#2124)
[`bdbdafe5d`](bdbdafe)
Thanks [@dependabot](https://github.com/apps/dependabot)! - Updating
wonder-blocks dependences.

- Updated dependencies
\[[`8f8955718`](8f89557),
[`d7bcb14c3`](d7bcb14),
[`685774f2e`](685774f),
[`8a489600e`](8a48960),
[`1a75ca628`](1a75ca6),
[`459c25074`](459c250),
[`0df0b1940`](0df0b19),
[`dc8118aa1`](dc8118a),
[`82fa90299`](82fa902),
[`b4b3a3dbb`](b4b3a3d),
[`117e78d03`](117e78d),
[`7a984eba6`](7a984eb),
[`f8c9d3574`](f8c9d35),
[`1355d6cfc`](1355d6c),
[`75f43a8f4`](75f43a8),
[`32cc4a45b`](32cc4a4),
[`ebf3695b6`](ebf3695)]:
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
    -   @khanacademy/[email protected]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants