From 2ab42df0c8e347b47824f1ffc8b3d454f55e5c3c Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Wed, 29 Oct 2025 17:05:04 +0100 Subject: [PATCH 01/28] Fix audio player seek bar position (#31127) * fix(audio): stop clock when the source audio reaches the end * test(audio): add test for playback when audio source ended --- src/audio/Playback.ts | 6 +++--- test/unit-tests/audio/Playback-test.ts | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/audio/Playback.ts b/src/audio/Playback.ts index 356e41ca84..7cb5943129 100644 --- a/src/audio/Playback.ts +++ b/src/audio/Playback.ts @@ -202,6 +202,7 @@ export class Playback extends EventEmitter implements IDestroyable, PlaybackInte private onPlaybackEnd = async (): Promise => { await this.context.suspend(); this.emit(PlaybackState.Stopped); + this.clock.flagStop(); }; public async play(): Promise { @@ -248,9 +249,8 @@ export class Playback extends EventEmitter implements IDestroyable, PlaybackInte this.emit(PlaybackState.Paused); } - public async stop(): Promise { - await this.onPlaybackEnd(); - this.clock.flagStop(); + public stop(): Promise { + return this.onPlaybackEnd(); } public async toggle(): Promise { diff --git a/test/unit-tests/audio/Playback-test.ts b/test/unit-tests/audio/Playback-test.ts index 7f14685f45..9732132d6d 100644 --- a/test/unit-tests/audio/Playback-test.ts +++ b/test/unit-tests/audio/Playback-test.ts @@ -46,6 +46,7 @@ describe("Playback", () => { beforeEach(() => { jest.spyOn(logger, "error").mockRestore(); + mockAudioBufferSourceNode.addEventListener.mockClear(); mockAudioBuffer.getChannelData.mockClear().mockReturnValue(mockChannelData); mockAudioContext.decodeAudioData.mockReset().mockResolvedValue(mockAudioBuffer); mockAudioContext.resume.mockClear().mockResolvedValue(undefined); @@ -105,6 +106,26 @@ describe("Playback", () => { expect(playback.currentState).toEqual(PlaybackState.Stopped); }); + it("stop when audio source ended", async () => { + const buffer = new ArrayBuffer(8); + const playback = new Playback(buffer); + await playback.prepare(); + await playback.play(); + + // Simulate the audio source ending by calling the 'ended' event listener + const endedListener = mockAudioBufferSourceNode.addEventListener.mock.calls.find( + (call) => call[0] === "ended", + )[1]; + await endedListener(); + + // AudioContext should be suspended + expect(mockAudioContext.suspend).toHaveBeenCalled(); + // Playback state should be Stopped + expect(playback.currentState).toEqual(PlaybackState.Stopped); + // Clock should be reset to 0 + expect(playback.timeSeconds).toEqual(0); + }); + describe("prepare()", () => { it("decodes audio data when not greater than 5mb", async () => { const buffer = new ArrayBuffer(8); From d558fa79e0073d1f68f1e3ce5ed4921367cb6f0e Mon Sep 17 00:00:00 2001 From: David Langley Date: Wed, 29 Oct 2025 16:16:03 +0000 Subject: [PATCH 02/28] Emoji Picker: Focused emoji does not move with the arrow keys (#30893) * We should focus the node in the DOM so that the browser focus(with outline) matches the our internal RovingIndex state * Don't move focus from the input if we are in "virtual" focus(via active descendant) --- .../views/emojipicker/EmojiPicker.tsx | 5 ++ .../views/emojipicker/EmojiPicker-test.tsx | 73 +++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/src/components/views/emojipicker/EmojiPicker.tsx b/src/components/views/emojipicker/EmojiPicker.tsx index c225bfcfae..f8ab405f5d 100644 --- a/src/components/views/emojipicker/EmojiPicker.tsx +++ b/src/components/views/emojipicker/EmojiPicker.tsx @@ -187,6 +187,11 @@ class EmojiPicker extends React.Component { } if (focusNode) { + // Only move actual DOM focus if an emoji already has focus + // If the input has focus, keep using aria-activedescendant for virtual focus + if (document.activeElement !== document.querySelector(".mx_EmojiPicker_search input")) { + focusNode?.focus(); + } dispatch({ type: Type.SetFocus, payload: { node: focusNode }, diff --git a/test/unit-tests/components/views/emojipicker/EmojiPicker-test.tsx b/test/unit-tests/components/views/emojipicker/EmojiPicker-test.tsx index a7dcadc9f7..ad56b76adc 100644 --- a/test/unit-tests/components/views/emojipicker/EmojiPicker-test.tsx +++ b/test/unit-tests/components/views/emojipicker/EmojiPicker-test.tsx @@ -12,10 +12,23 @@ import userEvent from "@testing-library/user-event"; import EmojiPicker from "../../../../../src/components/views/emojipicker/EmojiPicker"; import { stubClient } from "../../../../test-utils"; +import SettingsStore from "../../../../../src/settings/SettingsStore"; describe("EmojiPicker", function () { stubClient(); + beforeEach(() => { + // Clear recent emojis to prevent test pollution + jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName) => { + if (settingName === "recent_emoji") return [] as any; + return jest.requireActual("../../../../../src/settings/SettingsStore").default.getValue(settingName); + }); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + it("should not mangle default order after filtering", async () => { const ref = createRef(); const { container } = render( @@ -90,4 +103,64 @@ describe("EmojiPicker", function () { expect(onChoose).toHaveBeenCalledWith("📫️"); expect(onFinished).toHaveBeenCalled(); }); + + it("should move actual focus when navigating between emojis after Tab", async () => { + // mock offsetParent + Object.defineProperty(HTMLElement.prototype, "offsetParent", { + get() { + return this.parentNode; + }, + }); + + const onChoose = jest.fn(); + const onFinished = jest.fn(); + const { container } = render(); + + const input = container.querySelector("input")!; + expect(input).toHaveFocus(); + + // Wait for emojis to render + await waitFor(() => { + expect(container.querySelector('[role="gridcell"]')).toBeInTheDocument(); + }); + + function getEmoji(): string { + return document.activeElement?.textContent || ""; + } + + function getVirtuallyFocusedEmoji(): string { + const activeDescendant = input.getAttribute("aria-activedescendant"); + if (!activeDescendant) return ""; + return container.querySelector("#" + activeDescendant)?.textContent || ""; + } + + // Initially, arrow keys use virtual focus (aria-activedescendant) + // The first emoji is virtually focused by default + expect(input).toHaveFocus(); + expect(getVirtuallyFocusedEmoji()).toEqual("😀"); + expect(getEmoji()).toEqual(""); // No actual emoji has focus + + await userEvent.keyboard("[ArrowDown]"); + expect(input).toHaveFocus(); // Input still has focus + expect(getVirtuallyFocusedEmoji()).toEqual("🙂"); // Virtual focus moved + expect(getEmoji()).toEqual(""); // No actual emoji has focus + + // Tab to move actual focus to the emoji + await userEvent.keyboard("[Tab]"); + expect(input).not.toHaveFocus(); + expect(getEmoji()).toEqual("🙂"); // Now emoji has actual focus + + // Arrow keys now move actual DOM focus between emojis + await userEvent.keyboard("[ArrowDown]"); + expect(getEmoji()).toEqual("🤩"); // Actual focus moved down one row + expect(input).not.toHaveFocus(); + + await userEvent.keyboard("[ArrowUp]"); + expect(getEmoji()).toEqual("🙂"); // Actual focus moved back up + expect(input).not.toHaveFocus(); + + await userEvent.keyboard("[ArrowRight]"); + expect(getEmoji()).toEqual("🙃"); // Actual focus moved right + expect(input).not.toHaveFocus(); + }); }); From 1ec692c1e9f83ab6343c55cf06ea6b2a1d5cef71 Mon Sep 17 00:00:00 2001 From: ElementRobot Date: Thu, 30 Oct 2025 06:19:19 +0000 Subject: [PATCH 03/28] [create-pull-request] automated change (#31134) Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com> --- playwright/testcontainers/synapse.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playwright/testcontainers/synapse.ts b/playwright/testcontainers/synapse.ts index f8dfa821ed..57370757dd 100644 --- a/playwright/testcontainers/synapse.ts +++ b/playwright/testcontainers/synapse.ts @@ -7,7 +7,7 @@ Please see LICENSE files in the repository root for full details. import { SynapseContainer as BaseSynapseContainer } from "@element-hq/element-web-playwright-common/lib/testcontainers"; -const TAG = "develop@sha256:5a505af08294414dd832517ee0eafadc1faa33a675e577ca073c6fa731c7e5a8"; +const TAG = "develop@sha256:197c4676d36acf32ff5960c7758ff9f792331285096762307aed60130d570f44"; /** * SynapseContainer which freezes the docker digest to stabilise tests, From 3ae91d69da64c2dca6abcae0d74d08822b7311ba Mon Sep 17 00:00:00 2001 From: David Langley Date: Thu, 30 Oct 2025 09:31:02 +0000 Subject: [PATCH 04/28] Make emoji picker height responsive. (#31130) * Make the height of the emoji picker responsive. * Add screenshots for the emoji picker and a one with reduced height. * prettier --- playwright/e2e/composer/CIDER.spec.ts | 16 ++++++++++++++++ .../CIDER.spec.ts/emoji-picker-linux.png | Bin 0 -> 42235 bytes .../CIDER.spec.ts/emoji-picker-small-linux.png | Bin 0 -> 26102 bytes res/css/views/emojipicker/_EmojiPicker.pcss | 3 ++- 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 playwright/snapshots/composer/CIDER.spec.ts/emoji-picker-linux.png create mode 100644 playwright/snapshots/composer/CIDER.spec.ts/emoji-picker-small-linux.png diff --git a/playwright/e2e/composer/CIDER.spec.ts b/playwright/e2e/composer/CIDER.spec.ts index fcfbd1aad3..af512b9c09 100644 --- a/playwright/e2e/composer/CIDER.spec.ts +++ b/playwright/e2e/composer/CIDER.spec.ts @@ -76,6 +76,22 @@ test.describe("Composer", () => { await expect(page.locator(".mx_EventTile_body", { hasText: "😇" })).toBeVisible(); }); + test.describe("render emoji picker with larger viewport height", async () => { + test.use({ viewport: { width: 1280, height: 720 } }); + test("render emoji picker", { tag: "@screenshot" }, async ({ page, app }) => { + await app.getComposer(false).getByRole("button", { name: "Emoji" }).click(); + await expect(page.getByTestId("mx_EmojiPicker")).toMatchScreenshot("emoji-picker.png"); + }); + }); + + test.describe("render emoji picker with small viewport height", async () => { + test.use({ viewport: { width: 1280, height: 360 } }); + test("render emoji picker", { tag: "@screenshot" }, async ({ page, app }) => { + await app.getComposer(false).getByRole("button", { name: "Emoji" }).click(); + await expect(page.getByTestId("mx_EmojiPicker")).toMatchScreenshot("emoji-picker-small.png"); + }); + }); + test.describe("when Control+Enter is required to send", () => { test.beforeEach(async ({ app }) => { await app.settings.setValue("MessageComposerInput.ctrlEnterToSend", null, SettingLevel.ACCOUNT, true); diff --git a/playwright/snapshots/composer/CIDER.spec.ts/emoji-picker-linux.png b/playwright/snapshots/composer/CIDER.spec.ts/emoji-picker-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f62b471c5b9e1262f1c5e29ad8a94b92f476a822 GIT binary patch literal 42235 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 z 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
  • N5_);y(+{nH%-$by(0iA)!Hyb&TBynu4GwbH4JYeZ1 z9AzflivQTIy%q_c8r4lxp546&lR=jm$2}f%=ogFbaW=+a>SDBF{EMG$&o+N-|73|) z0B4vjKvo`y1Hs)kmQt?HV!vVLoi8GE`a)Q_4wwN%hH?}?Ef6(96R1XP@aR3o=Y&c0BziW%NdQ1T1 zv5PcuvbsFj@!9;@XJbC@8YxQS-=tpOIeAJ?J^MR|ne>6%#?C&H5C(I-EjX8I*c;R6 zLzY0v({D?oQABmLU=nm(ikA;!K-DRVGny#ecGL{$xo5{gy|K0!aTX1y1i9h6k4sZi zNk`u3OM}4_0kP7=$-pcGWFNO0Te_f$b`cv34`75V)goMj;YzFH$r|LI=M}GZ8wd1_a;U{-P44`8{wKi3Un0U-+&?7g$;B0n?3Z4i7Gi2@Vc%<0eD|RVmQhJ)_U3HqKR$uPS(#f<&uvn3VxYY-Q zltg~qPAuFt=^&47&9K;Annm?#uCSvDrT%Y*aVa<^&zQ9@1aokc*7338DFYV_at|+10o>{_&Sp z%6Y6xEOz5#nb+&@3kmKkS`(zC^Zi$Qn33c?9IO&u$~cloh`5Tr#;b5UuDo-?7m@cN z`t6dmAxsUDv_fu2Ue=)5$rwmP!F1zRRQF{_9%UE~v>}M?JLR0{`i=n(w^#irS0)I= z8q`PMU^wf53wv>pCA!)eYIYRFt3yvxN?ntzxKP&sl4ZaIpIi-keE`77E!||qYcv~O z3CV^1M!&Y7`2K;E3xE5U)y2TLmGnpv>wq^;PEsrKE41B1NmD4x9P7zt#m?{5v3Y!o z10P^(6E&C*=BYSaYp#g6HCfrpg(uy+MZE-cZOi#%pk>W_`ip(Izcje9P%PYk;(#J! zz9bchUPNiyNyIyXAKU;zFz3lPY4L+U;XbccSXAdcCYh;478w?YQ)D!+nt-2OOtA4Adttlb0vR zWb)TYYOD?lkq}BhR9W_aHQfuhF4ubWoBzSQw()lwDIf4q!|Smm%`xJJDepL0#i00G ze4X*RJL3IX*|zLW{rV7*9;=ZGY*>cuy1YJ@sheE(N?9eAt6pKWL=P$Pne2eHbeW@L zJ^=?!W3mKo7IM@?zwPj*{37?^tI**zmQq&sPDm)QP+W06GBP#B$6HUw@D0K(qs_7H zV^b(QdY>XkJ0&Z1cPYCUMOPp@2WLu_evI| zK;>8*dK!ZA)~qfNmur}1hk1X^{mDg1~fb#9)=v!k1dDy zOdp|+J|=hv_zyGA)-C(uxr%{TDv;y4L2Sul5KCs|SN z4Px*$+PghoG>6jUNpe{do>uRX?Fe4Wr0|&n7B0d;;QdPn81d0sbv9G&tCkB+Sn)+^ z70Cyy4vEp`Du;m2M@Bv*UDu6(`8~64LtgVu&kSjV=ibWpy0Wr7mT6X|Y;zJ%YII(F z0R$QGSJpFqTV=H3@!~sT&#qcbrX?TUF+KxyK!R8!du942_w^$-?waJ%$_R@XO@iB4 zdHx{{qq{|R;~E78#6EOC6eU2N5v4%2!EC@AKI3Ss$MqlBb?m2Zq5K#IbrGV8Lw|V< zi>&0&ZUB&=L#bP&)IKb1++h2$6^kiZVR|}=CN)XHWzsozh^^{G-C{w&M9{Z{9w+j= zO*AKwD!?!ayR(dwOc*z}dggF`3a{Vg^M- z`bWBva=FNCJv6<6=E!-Irv98h!A?hGCJTpJMxX@i@oNDY=Qu7t>cNkX{Y>hU{E>zg zqOm&NNHM1Wu=^-nATLGZBiJaG7uob4Exn!$YG@fA)jOaV8B0J8cM7p?##8bZGB7pS z59_ncS00aC%c^bg(;J-p%^7D1f~eyn&80^ z)hAY^X<}F0k8Q%i+l}CNJ@XqTs-~$fMUzD;qs>7rJ7@UlQ77qH*X_*j(_3$mo(0!1PcHV zpIA+|o6Lhx2B;E@=kN+nrR6Cyl;6<3-gNRtrZid1rr+Qit^KO@o*1^k@RJ{%?Ai5i zz(k(H9o{xRh|OxClqtjs&)3EcnMWbwo?KHuI~zV+=pPnfmz;XEo&NQP0{ajrV83AF zhl+?IbDTlT&Cy{5Gcq2j+5NpPyc>UN$RW!Hdu`;TlaqNr8K+kD)$>RK^8mVWlbv5A z^$u1nMWRS6ikpltX%VAzP!D=VnQ-$+toav?}MGU{oA z8t%I3i*$myH44dsAeO6=Le zFA6X)aK?Y1Bk;Q(GqXjusTyc9V_G7co~m`ho-%qkKkje>lm<#H3Ot@v;cLf9^q3J8 zdx0t=-ysD77+G6oJU3p}p2`$WbqNuz_mwno5rYOMG_gZ?>$7gs5eMC{ZhKex6&vKF zkb-g5&yJW$1Z!2Y6U=AKjv<=&VH|x@ayx{d>0xOzG`>@RK|HFuiW|nYCb+d+c&bT8 zS)4N%t%9Ak#OuAjV|#hKjc}KiD_hw~&`B*dY96axCqWx<_^k1CSR7q_=#O+p-W@H=L`KQbA$v#pIywly?)qFJD{TP>Aq-gyCU(z^`2{(QhC*PHd=YGg7z~giD zOY$~QBfugkjD-K(XLxUQJJQxiBF?alg{lVOR^e*WQWKR>@3*Qfb?Z4kbbeoH+LT;3 z-<%-+z(&!_D2b_kwRbxs$~<{TMy*M%ie+g?3hCQ_d6{Mq?PSOkLbwy7?TMZk zVqo5PNDf?vCS}4v`{sJfbDy=VIg!J&Eyy+Qd%8-CwT$dcCj+k`#c2)C`A5q*g$SRY zRH@}KC2MuV-^eZ$)tW`{sidL% zhM+h72bF3iPT-%i@oMUq)8Z-_q}F(fH*NJBW-mCvm$_o>fpa@Lv?!~Z;*!q@tN~;x z9;Af5D}WBNyb-N8u}#lx5x|F}YIbv%`;CP{6=C3g?zPWVq%Jk{ycfVR?x$IecJEML zG07O<^MZcH=kiC)6g0*lqcLOrus+Hf5dDu(8dYcsc6h4ld%v+BkL<_Jk0B?IBxOY0 z5oBA^X;G4vnYE=dCMK1WPTFPK{Db9-#t10Xnldd*w5c$|A~E1pXwn+EXbTn7eJpzR zvi5z*Rfq%X(9cE^v;0#0@Kfb6V)sD%N?{fdB-kmcuQhl$pDFTaY^FtnE_poHtm~W1 z>UP@YtWMm?Cs`FK`$O-d_;6T@fy>TyKwadAq%fTdedMI5iH?bmEA0aEg?F4f#^s+V z0@INRU5JbG>0H>K*JJ;qAk-*W!nvGFl?;*J3fh6;l}SQF2Q1Tp1nP2!c{+n!@Ip=` zVW)nIp*n@``S@cU!kI)`;Yf0Iaa^cL=ItnoU&nB$de@<%6DgzcKbJ}o!g}4aRfbpu zrvnFq$j-K7g=xRF)fY_rW;t&zQAD7!t@F1cEyU1er$JS1y~kb-sCxl6wvu2GJTd zdW_`!a?q9gzp#_xJp}!Io&-jR8B|OC>ENJ-*5?2b>I-qbeCjWQ*H3NblryT)s?Zq0 z38$N?5{LCFXF1;87lV!~=B>9deW!gkTarA*8*-ogb{hf`m?~Ak5_4fzOju@dK=+py z?l!L^<{z@&g6YLLNcNo!a+GlxBanu3Wc7nxR)))$Y^OQ234X1U)X6S z851JH``NSDnDNRI8HHnvzmCyah%J9rd?AB@d3_Z>@`S#_!2iA6zJ Date: Thu, 30 Oct 2025 10:59:27 +0100 Subject: [PATCH 05/28] fix: force counterpart resolve in jest config (#31136) --- jest.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/jest.config.ts b/jest.config.ts index e6c29b792d..677b96e469 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -40,6 +40,7 @@ const config: Config = { "^!!raw-loader!.*": "jest-raw-loader", "recorderWorkletFactory": "/__mocks__/empty.js", "^fetch-mock$": "/node_modules/fetch-mock", + "counterpart": "/node_modules/counterpart", }, transformIgnorePatterns: [ "/node_modules/(?!(mime|matrix-js-sdk|uuid|p-retry|is-network-error|react-merge-refs)).+$", From 299d7baf8b40acace482932db2a176620d6d4824 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Thu, 30 Oct 2025 15:55:15 +0100 Subject: [PATCH 06/28] Avoid excessive re-render of room list and member list (#31131) * fix(list view): avoid re-create `onFocus` function at each render of the child items * fix(room list): update `onFocus` signature * fix(member list): update `onFocus` signature * fix(room list): avoid re-render at the beginning and end of the scroll * test(room list): remove scrolling test and props * test(member list): update member tile view tests * test(room list): update `ListView` focus test * test(member list): add `onFocus` test for member list tile --- src/components/utils/ListView.tsx | 33 ++++++----- .../views/rooms/MemberList/MemberListView.tsx | 4 +- .../MemberList/tiles/RoomMemberTileView.tsx | 9 ++- .../tiles/ThreePidInviteTileView.tsx | 9 ++- .../views/rooms/RoomListPanel/RoomList.tsx | 9 +-- .../rooms/RoomListPanel/RoomListItemView.tsx | 15 ++--- .../RoomListPanel/RoomListItemView-test.tsx | 23 -------- .../rooms/memberlist/MemberTileView-test.tsx | 55 ++++++++++++++++--- .../components/views/utils/ListView-test.tsx | 9 ++- 9 files changed, 97 insertions(+), 69 deletions(-) diff --git a/src/components/utils/ListView.tsx b/src/components/utils/ListView.tsx index f99b7ab944..ca45b703a3 100644 --- a/src/components/utils/ListView.tsx +++ b/src/components/utils/ListView.tsx @@ -42,7 +42,7 @@ export interface IListViewProps index: number, item: Item, context: ListContext, - onFocus: (e: React.FocusEvent) => void, + onFocus: (item: Item, e: React.FocusEvent) => void, ) => JSX.Element; /** @@ -230,19 +230,26 @@ export function ListView(props: IListViewProps): JSX.Element => { - const onFocus = (e: React.FocusEvent): void => { - // If one of the item components has been focused directly, set the focused and tabIndex state - // and stop propagation so the ListViews onFocus doesn't also handle it. - const key = getItemKey(item); - setIsFocused(true); - setTabIndexKey(key); - e.stopPropagation(); - }; - return getItemComponent(index, item, context, onFocus); + /** + * Focus handler passed to each item component. + * Don't declare inside getItemComponent to avoid re-creating on each render. + */ + const onFocusForGetItemComponent = useCallback( + (item: Item, e: React.FocusEvent) => { + // If one of the item components has been focused directly, set the focused and tabIndex state + // and stop propagation so the ListViews onFocus doesn't also handle it. + const key = getItemKey(item); + setIsFocused(true); + setTabIndexKey(key); + e.stopPropagation(); }, - [getItemComponent, getItemKey], + [getItemKey], + ); + + const getItemComponentInternal = useCallback( + (index: number, item: Item, context: ListContext): JSX.Element => + getItemComponent(index, item, context, onFocusForGetItemComponent), + [getItemComponent, onFocusForGetItemComponent], ); /** * Handles focus events on the list. diff --git a/src/components/views/rooms/MemberList/MemberListView.tsx b/src/components/views/rooms/MemberList/MemberListView.tsx index 1193e245c5..90c77fd70c 100644 --- a/src/components/views/rooms/MemberList/MemberListView.tsx +++ b/src/components/views/rooms/MemberList/MemberListView.tsx @@ -45,7 +45,7 @@ const MemberListView: React.FC = (props: IProps) => { index: number, item: MemberWithSeparator, context: ListContext, - onFocus: (e: React.FocusEvent) => void, + onFocus: (item: MemberWithSeparator, e: React.FocusEvent) => void, ): JSX.Element => { const itemKey = getItemKey(item); const isRovingItem = itemKey === context.tabIndexKey; @@ -55,6 +55,7 @@ const MemberListView: React.FC = (props: IProps) => { } else if (item.member) { return ( = (props: IProps) => { } else { return ( void; + onFocus: (item: MemberWithSeparator, e: React.FocusEvent) => void; } export function RoomMemberTileView(props: IProps): JSX.Element { @@ -60,7 +65,7 @@ export function RoomMemberTileView(props: IProps): JSX.Element { return ( props.onFocus(props.item, e)} avatarJsx={av} presenceJsx={presenceJSX} nameJsx={nameJSX} diff --git a/src/components/views/rooms/MemberList/tiles/ThreePidInviteTileView.tsx b/src/components/views/rooms/MemberList/tiles/ThreePidInviteTileView.tsx index e4f5d1dbaf..22be2fd4af 100644 --- a/src/components/views/rooms/MemberList/tiles/ThreePidInviteTileView.tsx +++ b/src/components/views/rooms/MemberList/tiles/ThreePidInviteTileView.tsx @@ -12,14 +12,19 @@ import { type ThreePIDInvite } from "../../../../../models/rooms/ThreePIDInvite" import BaseAvatar from "../../../avatars/BaseAvatar"; import { MemberTileView } from "./common/MemberTileView"; import { InvitedIconView } from "./common/InvitedIconView"; +import { type MemberWithSeparator } from "../../../../viewmodels/memberlist/MemberListViewModel"; interface Props { + /** + * Needed for `onFocus` + */ + item: MemberWithSeparator; threePidInvite: ThreePIDInvite; memberIndex: number; memberCount: number; focused?: boolean; tabIndex?: number; - onFocus: (e: React.FocusEvent) => void; + onFocus: (item: MemberWithSeparator, e: React.FocusEvent) => void; } export function ThreePidInviteTileView(props: Props): JSX.Element { @@ -40,7 +45,7 @@ export function ThreePidInviteTileView(props: Props): JSX.Element { iconJsx={iconJsx} focused={props.focused} tabIndex={props.tabIndex} - onFocus={props.onFocus} + onFocus={(e) => props.onFocus(props.item, e)} /> ); } diff --git a/src/components/views/rooms/RoomListPanel/RoomList.tsx b/src/components/views/rooms/RoomListPanel/RoomList.tsx index 4aae621d96..c1c081ca9c 100644 --- a/src/components/views/rooms/RoomListPanel/RoomList.tsx +++ b/src/components/views/rooms/RoomListPanel/RoomList.tsx @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -import React, { useCallback, useRef, useState, type JSX } from "react"; +import React, { useCallback, useRef, type JSX } from "react"; import { type Room } from "matrix-js-sdk/src/matrix"; import { type ScrollIntoViewLocation } from "react-virtuoso"; import { isEqual } from "lodash"; @@ -44,7 +44,6 @@ export function RoomList({ vm: { roomsResult, activeIndex } }: RoomListProps): J const lastSpaceId = useRef(undefined); const lastFilterKeys = useRef(undefined); const roomCount = roomsResult.rooms.length; - const [isScrolling, setIsScrolling] = useState(false); const getItemComponent = useCallback( ( index: number, @@ -53,7 +52,7 @@ export function RoomList({ vm: { roomsResult, activeIndex } }: RoomListProps): J spaceId: string; filterKeys: FilterKey[] | undefined; }>, - onFocus: (e: React.FocusEvent) => void, + onFocus: (item: Room, e: React.FocusEvent) => void, ): JSX.Element => { const itemKey = item.roomId; const isRovingItem = itemKey === context.tabIndexKey; @@ -69,11 +68,10 @@ export function RoomList({ vm: { roomsResult, activeIndex } }: RoomListProps): J roomIndex={index} roomCount={roomCount} onFocus={onFocus} - listIsScrolling={isScrolling} /> ); }, - [activeIndex, roomCount, isScrolling], + [activeIndex, roomCount], ); const getItemKey = useCallback((item: Room): string => { @@ -129,7 +127,6 @@ export function RoomList({ vm: { roomsResult, activeIndex } }: RoomListProps): J getItemKey={getItemKey} isItemFocusable={() => true} onKeyDown={keyDownCallback} - isScrolling={setIsScrolling} increaseViewportBy={{ bottom: EXTENDED_VIEWPORT_HEIGHT, top: EXTENDED_VIEWPORT_HEIGHT, diff --git a/src/components/views/rooms/RoomListPanel/RoomListItemView.tsx b/src/components/views/rooms/RoomListPanel/RoomListItemView.tsx index a18cd337be..53c138eae4 100644 --- a/src/components/views/rooms/RoomListPanel/RoomListItemView.tsx +++ b/src/components/views/rooms/RoomListPanel/RoomListItemView.tsx @@ -16,7 +16,7 @@ import { NotificationDecoration } from "../NotificationDecoration"; import { RoomAvatarView } from "../../avatars/RoomAvatarView"; import { RoomListItemContextMenuView } from "./RoomListItemContextMenuView"; -interface RoomListItemViewProps extends React.HTMLAttributes { +interface RoomListItemViewProps extends Omit, "onFocus"> { /** * The room to display */ @@ -32,7 +32,7 @@ interface RoomListItemViewProps extends React.HTMLAttributes /** * A callback that indicates the item has received focus */ - onFocus: (e: React.FocusEvent) => void; + onFocus: (room: Room, e: React.FocusEvent) => void; /** * The index of the room in the list */ @@ -41,10 +41,6 @@ interface RoomListItemViewProps extends React.HTMLAttributes * The total number of rooms in the list */ roomCount: number; - /** - * Whether the list is currently scrolling - */ - listIsScrolling: boolean; } /** @@ -57,7 +53,6 @@ export const RoomListItemView = memo(function RoomListItemView({ onFocus, roomIndex: index, roomCount: count, - listIsScrolling, ...props }: RoomListItemViewProps): JSX.Element { const ref = useRef(null); @@ -100,7 +95,7 @@ export const RoomListItemView = memo(function RoomListItemView({ aria-selected={isSelected} aria-label={vm.a11yLabel} onClick={() => vm.openRoom()} - onFocus={onFocus} + onFocus={(e: React.FocusEvent) => onFocus(room, e)} onMouseOver={() => setHover(true)} onMouseOut={() => setHover(false)} onBlur={() => setHover(false)} @@ -148,9 +143,7 @@ export const RoomListItemView = memo(function RoomListItemView({ // Rendering multiple context menus can causes crashes in radix upstream, // See https://github.com/radix-ui/primitives/issues/2717. - // We also don't need the context menu while scrolling so can improve scroll performance - // by not rendering it. - if (!vm.showContextMenu || listIsScrolling) return content; + if (!vm.showContextMenu) return content; return ( ", () => { onFocus={jest.fn()} roomIndex={0} roomCount={1} - listIsScrolling={false} />, ); @@ -193,26 +192,4 @@ describe("", () => { await user.keyboard("{Escape}"); expect(screen.queryByRole("menu")).toBeNull(); }); - - test("should not render context menu when list is scrolling", async () => { - const user = userEvent.setup(); - - mocked(useRoomListItemViewModel).mockReturnValue({ - ...defaultValue, - showContextMenu: true, - }); - - renderRoomListItem({ - listIsScrolling: true, - }); - - const button = screen.getByRole("option", { name: `Open room ${room.name}` }); - await user.pointer([{ target: button }, { keys: "[MouseRight]", target: button }]); - - // Context menu should not appear when scrolling - expect(screen.queryByRole("menu")).toBeNull(); - - // But the room item itself should still be rendered - expect(button).toBeInTheDocument(); - }); }); diff --git a/test/unit-tests/components/views/rooms/memberlist/MemberTileView-test.tsx b/test/unit-tests/components/views/rooms/memberlist/MemberTileView-test.tsx index e501f24efe..b82caced89 100644 --- a/test/unit-tests/components/views/rooms/memberlist/MemberTileView-test.tsx +++ b/test/unit-tests/components/views/rooms/memberlist/MemberTileView-test.tsx @@ -17,13 +17,16 @@ import * as TestUtils from "../../../../../test-utils"; import { type RoomMember } from "../../../../../../src/models/rooms/RoomMember"; import { getPending3PidInvites, + type MemberWithSeparator, sdkRoomMemberToRoomMember, } from "../../../../../../src/components/viewmodels/memberlist/MemberListViewModel"; import { RoomMemberTileView } from "../../../../../../src/components/views/rooms/MemberList/tiles/RoomMemberTileView"; import { ThreePidInviteTileView } from "../../../../../../src/components/views/rooms/MemberList/tiles/ThreePidInviteTileView"; +import { type ThreePIDInvite } from "../../../../../../src/models/rooms/ThreePIDInvite"; describe("MemberTileView", () => { describe("RoomMemberTileView", () => { + const item = {} as { member: RoomMember }; let matrixClient: MatrixClient; let member: RoomMember; @@ -32,11 +35,12 @@ describe("MemberTileView", () => { mocked(matrixClient.isRoomEncrypted).mockReturnValue(true); const sdkMember = new SdkRoomMember("roomId", matrixClient.getUserId()!); member = sdkRoomMemberToRoomMember(sdkMember)!.member!; + item.member = member; }); it("should not display an E2EIcon when the e2E status = normal", () => { const { container } = render( - , + , ); const e2eIcon = container.querySelector(".mx_E2EIconView"); expect(e2eIcon).toBeNull(); @@ -50,7 +54,7 @@ describe("MemberTileView", () => { } as unknown as UserVerificationStatus); const { container } = render( - , + , ); await waitFor(async () => { await userEvent.hover(container.querySelector(".mx_E2EIcon")!); @@ -73,7 +77,7 @@ describe("MemberTileView", () => { } as DeviceVerificationStatus); const { container } = render( - , + , ); await waitFor(async () => { @@ -88,33 +92,46 @@ describe("MemberTileView", () => { it("renders user labels correctly", async () => { member.powerLevel = 50; const { container: container1 } = render( - , + , ); expect(container1).toHaveTextContent("Moderator"); member.powerLevel = 100; const { container: container2 } = render( - , + , ); expect(container2).toHaveTextContent("Admin"); member.powerLevel = Infinity; const { container: container3 } = render( - , + , ); expect(container3).toHaveTextContent("Owner"); member.isInvite = true; const { container: container4 } = render( - , + , ); expect(container4).toHaveTextContent("Invited"); }); + + it("should call onFocus handler when focused", async () => { + const user = userEvent.setup(); + const onFocus = jest.fn(); + render(); + + const button = screen.getByRole("option", { name: member.userId }); + await user.click(button); + + expect(onFocus).toHaveBeenCalledWith(item, expect.anything()); + }); }); describe("ThreePidInviteTileView", () => { + const member = {} as MemberWithSeparator; let cli: MatrixClient; let room: Room; + let threePidInvite: ThreePIDInvite; beforeEach(() => { cli = TestUtils.stubClient(); @@ -123,13 +140,14 @@ describe("MemberTileView", () => { TestUtils.mkThirdPartyInviteEvent(cli.getSafeUserId(), "Foobar", room.roomId), { toStartOfTimeline: false, addToState: true }, ); + threePidInvite = getPending3PidInvites(room)[0].threePidInvite!; }); it("renders ThreePidInvite correctly", async () => { - const [{ threePidInvite }] = getPending3PidInvites(room); const { container } = render( { ); expect(container).toMatchSnapshot(); }); + + it("should call onFocus handler when focused", async () => { + const user = userEvent.setup(); + const onFocus = jest.fn(); + render( + , + ); + + const button = screen.getByRole("option", { name: threePidInvite.event.getContent().display_name }); + await user.click(button); + + expect(onFocus).toHaveBeenCalledWith(member, expect.anything()); + }); }); }); diff --git a/test/unit-tests/components/views/utils/ListView-test.tsx b/test/unit-tests/components/views/utils/ListView-test.tsx index acf4fa7788..0cae681f73 100644 --- a/test/unit-tests/components/views/utils/ListView-test.tsx +++ b/test/unit-tests/components/views/utils/ListView-test.tsx @@ -363,7 +363,12 @@ describe("ListView", () => { const mockOnClick = jest.fn(); mockGetItemComponent.mockImplementation( - (index: number, item: TestItemWithSeparator, context: any, onFocus: (e: React.FocusEvent) => void) => { + ( + index: number, + item: TestItemWithSeparator, + context: any, + onFocus: (item: TestItemWithSeparator, e: React.FocusEvent) => void, + ) => { const itemKey = typeof item === "string" ? item : item.id; const isFocused = context.tabIndexKey === itemKey; return ( @@ -372,7 +377,7 @@ describe("ListView", () => { data-testid={`row-${index}`} tabIndex={isFocused ? 0 : -1} onClick={() => mockOnClick(item)} - onFocus={onFocus} + onFocus={(e) => onFocus(item, e)} > {item === SEPARATOR_ITEM ? "---" : (item as TestItem).name} From af150b94ce3b9ceb647fbaf42986626eb7455f76 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 30 Oct 2025 17:17:49 +0000 Subject: [PATCH 07/28] Switch to NPM Trusted Publishing for shared-components (#31139) Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .github/workflows/shared-component-publish.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/shared-component-publish.yaml b/.github/workflows/shared-component-publish.yaml index be8abe3760..d226d2e999 100644 --- a/.github/workflows/shared-component-publish.yaml +++ b/.github/workflows/shared-component-publish.yaml @@ -21,8 +21,10 @@ jobs: cache: "yarn" node-version-file: ".node-version" registry-url: "https://registry.npmjs.org" - env: - NODE_AUTH_TOKEN: ${{ secrets.ELEMENT_NPM_TOKEN }} + + # Ensure npm 11.5.1 or later is installed + - name: Update npm + run: npm install -g npm@latest - name: 🛠️ Setup # When running `install` it also calls the `prepare` step which generates From 3fd102602e9a2a01470069947aa9012f80600b6e Mon Sep 17 00:00:00 2001 From: ElementRobot Date: Fri, 31 Oct 2025 06:19:34 +0000 Subject: [PATCH 08/28] [create-pull-request] automated change (#31144) Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com> --- playwright/testcontainers/mas.ts | 2 +- playwright/testcontainers/synapse.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/playwright/testcontainers/mas.ts b/playwright/testcontainers/mas.ts index 472c3f7763..2716abf580 100644 --- a/playwright/testcontainers/mas.ts +++ b/playwright/testcontainers/mas.ts @@ -10,7 +10,7 @@ import { type StartedPostgreSqlContainer, } from "@element-hq/element-web-playwright-common/lib/testcontainers"; -const TAG = "main@sha256:3d139198268dd06c42fe0fc7ffea5df0f2924704867f68e0a8eb3e542f91b9e8"; +const TAG = "main@sha256:0809c1870789e6c24f1344006b60d8bc9f8ca26f4ae4ba0d7957a1caf77e2be3"; /** * MatrixAuthenticationServiceContainer which freezes the docker digest to diff --git a/playwright/testcontainers/synapse.ts b/playwright/testcontainers/synapse.ts index 57370757dd..89ef887d4c 100644 --- a/playwright/testcontainers/synapse.ts +++ b/playwright/testcontainers/synapse.ts @@ -7,7 +7,7 @@ Please see LICENSE files in the repository root for full details. import { SynapseContainer as BaseSynapseContainer } from "@element-hq/element-web-playwright-common/lib/testcontainers"; -const TAG = "develop@sha256:197c4676d36acf32ff5960c7758ff9f792331285096762307aed60130d570f44"; +const TAG = "develop@sha256:8bae6225b998cbf0c09260b8dd66f320109a3d6d156ad289d2c3dbcb03f5fce9"; /** * SynapseContainer which freezes the docker digest to stabilise tests, From bbb16f7ea97205d8ee3e7361c34c264b3659477c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 08:34:26 +0000 Subject: [PATCH 09/28] Update definitelyTyped (#31099) * Update definitelyTyped * Make typescript happy Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> --- package.json | 1 + yarn.lock | 67 ++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 98a72d7649..ffa6f2b473 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,7 @@ "@playwright/test": "1.56.1", "@types/react": "19.2.2", "@types/react-dom": "19.2.2", + "@types/serve-static": "1.15.10", "oidc-client-ts": "3.3.0", "jwt-decode": "4.0.0", "caniuse-lite": "1.0.30001751", diff --git a/yarn.lock b/yarn.lock index 022f9baa33..5f7a2d8b86 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3499,7 +3499,7 @@ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.3.tgz#a8ef894305af28d1fc6d2dfdfc98e899591ea529" integrity sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": +"@types/express-serve-static-core@*": version "5.0.6" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz#41fec4ea20e9c7b22f024ab88a95c6bb288f51b8" integrity sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA== @@ -3519,14 +3519,24 @@ "@types/range-parser" "*" "@types/send" "*" +"@types/express-serve-static-core@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz#74f47555b3d804b54cb7030e6f9aa0c7485cfc5b" + integrity sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + "@types/express@*", "@types/express@^5.0.0": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.3.tgz#6c4bc6acddc2e2a587142e1d8be0bce20757e956" - integrity sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw== + version "5.0.5" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.5.tgz#3ba069177caa34ab96585ca23b3984d752300cdc" + integrity sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^5.0.0" - "@types/serve-static" "*" + "@types/serve-static" "^1" "@types/express@^4.17.21": version "4.17.23" @@ -3688,10 +3698,10 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@>=13.7.0": - version "24.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.9.1.tgz#b7360b3c789089e57e192695a855aa4f6981a53c" - integrity sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg== +"@types/node@*": + version "24.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.9.2.tgz#90ded2422dbfcafcf72080f28975adc21366148d" + integrity sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA== dependencies: undici-types "~7.16.0" @@ -3702,6 +3712,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@>=13.7.0": + version "24.9.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.9.1.tgz#b7360b3c789089e57e192695a855aa4f6981a53c" + integrity sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg== + dependencies: + undici-types "~7.16.0" + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" @@ -3718,9 +3735,9 @@ integrity sha512-z6djfFIbrrddtunoMJBOPlyZrnmeuG1kkvHUNi2QfpOb+JMMLuLliHHTmMyRi7k7LiTAut0HbdGCF6ibDtQAHQ== "@types/qrcode@^1.3.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.5.5.tgz#993ff7c6b584277eee7aac0a20861eab682f9dac" - integrity sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg== + version "1.5.6" + resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.5.6.tgz#07c33cb9ec0ad88be4636e636e28e54d99b65f42" + integrity sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw== dependencies: "@types/node" "*" @@ -3801,9 +3818,16 @@ integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== "@types/send@*": - version "0.17.5" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.5.tgz#d991d4f2b16f2b1ef497131f00a9114290791e74" - integrity sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w== + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74" + integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== + dependencies: + "@types/node" "*" + +"@types/send@<1": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== dependencies: "@types/mime" "^1" "@types/node" "*" @@ -3815,14 +3839,14 @@ dependencies: "@types/express" "*" -"@types/serve-static@*", "@types/serve-static@^1.15.5": - version "1.15.8" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.8.tgz#8180c3fbe4a70e8f00b9f70b9ba7f08f35987877" - integrity sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg== +"@types/serve-static@*", "@types/serve-static@1.15.10", "@types/serve-static@^1", "@types/serve-static@^1.15.5": + version "1.15.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== dependencies: "@types/http-errors" "*" "@types/node" "*" - "@types/send" "*" + "@types/send" "<1" "@types/sockjs@^0.3.36": version "0.3.36" @@ -4085,13 +4109,14 @@ "@vector-im/matrix-wysiwyg-wasm@link:../../../.cache/yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm": version "0.0.0" + uid "" "@vector-im/matrix-wysiwyg@2.40.0": version "2.40.0" resolved "https://registry.yarnpkg.com/@vector-im/matrix-wysiwyg/-/matrix-wysiwyg-2.40.0.tgz#53c9ca5ea907d91e4515da64f20a82e5586b882c" integrity sha512-8LRFLs5PEKYs4lOL7aJ4lL/hGCrvEvOYkCR3JggXYXDVMtX4LmfdlKYucSAe98pCmqAAbLRvlRcR1bTOYvM8ug== dependencies: - "@vector-im/matrix-wysiwyg-wasm" "link:../../../.cache/yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm" + "@vector-im/matrix-wysiwyg-wasm" "link:../../Library/Caches/Yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm" "@vitest/expect@3.2.4": version "3.2.4" From c7f07f4c290ba4ca1488398bd0c7e3434ceea3fc Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 31 Oct 2025 09:00:01 +0000 Subject: [PATCH 10/28] Fix tooltips within context menu portals being unreliable (#31129) * Fix tooltips within context menu portals being unreliable Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Update snapshots Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Add test Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/ContextMenu.tsx | 21 +++--- .../views/rooms/ReadReceiptGroup.tsx | 67 ++++++++++--------- .../views/rooms/ReadReceiptGroup-test.tsx | 5 ++ .../ReadReceiptGroup-test.tsx.snap | 49 ++++++++++++-- 4 files changed, 97 insertions(+), 45 deletions(-) diff --git a/src/components/structures/ContextMenu.tsx b/src/components/structures/ContextMenu.tsx index bdbd8b4a08..eebd432e10 100644 --- a/src/components/structures/ContextMenu.tsx +++ b/src/components/structures/ContextMenu.tsx @@ -12,6 +12,7 @@ import React, { type JSX, type CSSProperties, type RefObject, type SyntheticEven import ReactDOM from "react-dom"; import classNames from "classnames"; import FocusLock from "react-focus-lock"; +import { TooltipProvider } from "@vector-im/compound-web"; import { type Writeable } from "../../@types/common"; import UIStore from "../../stores/UIStore"; @@ -425,15 +426,17 @@ export default class ContextMenu extends React.PureComponent {background} -
    - {body} -
    + +
    + {body} +
    +
    )} diff --git a/src/components/views/rooms/ReadReceiptGroup.tsx b/src/components/views/rooms/ReadReceiptGroup.tsx index 22d2f03697..910e0cfb52 100644 --- a/src/components/views/rooms/ReadReceiptGroup.tsx +++ b/src/components/views/rooms/ReadReceiptGroup.tsx @@ -212,38 +212,41 @@ export function ReadReceiptPerson({ onAfterClick, }: ReadReceiptPersonProps): JSX.Element { return ( - -
    - { - dis.dispatch({ - action: Action.ViewUser, - // XXX: We should be using a real member object and not assuming what the receiver wants. - // The ViewUser action leads to the RightPanelStore, and RightPanelStoreIPanelState defines the - // member property of IRightPanelCardState as `RoomMember | User`, so we’re fine for now, but we - // should definitely clean this up later - member: roomMember ?? ({ userId } as User), - push: false, - }); - onAfterClick?.(); - }} - > - -
    + + { + dis.dispatch({ + action: Action.ViewUser, + // XXX: We should be using a real member object and not assuming what the receiver wants. + // The ViewUser action leads to the RightPanelStore, and RightPanelStoreIPanelState defines the + // member property of IRightPanelCardState as `RoomMember | User`, so we’re fine for now, but we + // should definitely clean this up later + member: roomMember ?? ({ userId } as User), + push: false, + }); + onAfterClick?.(); + }} + > + ); } diff --git a/test/unit-tests/components/views/rooms/ReadReceiptGroup-test.tsx b/test/unit-tests/components/views/rooms/ReadReceiptGroup-test.tsx index 0a3cfafb85..0af49f767d 100644 --- a/test/unit-tests/components/views/rooms/ReadReceiptGroup-test.tsx +++ b/test/unit-tests/components/views/rooms/ReadReceiptGroup-test.tsx @@ -142,5 +142,10 @@ describe("ReadReceiptGroup", () => { }), ); }); + + it("should fall back to userId if roomMember unspecified", async () => { + const { container } = renderReadReceipt({ roomMember: null }); + expect(container).toMatchSnapshot(); + }); }); }); diff --git a/test/unit-tests/components/views/rooms/__snapshots__/ReadReceiptGroup-test.tsx.snap b/test/unit-tests/components/views/rooms/__snapshots__/ReadReceiptGroup-test.tsx.snap index 6540cb658c..34802ccce9 100644 --- a/test/unit-tests/components/views/rooms/__snapshots__/ReadReceiptGroup-test.tsx.snap +++ b/test/unit-tests/components/views/rooms/__snapshots__/ReadReceiptGroup-test.tsx.snap @@ -6,14 +6,14 @@ exports[`ReadReceiptGroup should display a tooltip 1`] = ` data-floating-ui-focusable="" id="_r_6_" role="tooltip" - style="position: absolute; left: 0px; top: 0px; transform: translate(0px, 0px);" + style="position: absolute; left: 0px; top: 0px; transform: translate(5px, -6px);" tabindex="-1" >
    + + + +
    +`; + exports[`ReadReceiptGroup should render 1`] = `
    -
    +
    -
    + `; From fdf54dd9c2dc2bc01c5b3bda692c8248109db77f Mon Sep 17 00:00:00 2001 From: ElementRobot Date: Fri, 31 Oct 2025 11:22:39 +0000 Subject: [PATCH 11/28] Localazy Download (#31145) * [create-pull-request] automated change * Update snapshot Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com> Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> --- src/i18n/strings/cs.json | 44 +++++++++++++++---- src/i18n/strings/de_DE.json | 25 +++++++++++ src/i18n/strings/en_EN.json | 2 +- src/i18n/strings/et.json | 26 ++++++++++- src/i18n/strings/fr.json | 11 +++++ src/i18n/strings/sk.json | 28 +++++++++++- .../__snapshots__/AdvancedPanel-test.tsx.snap | 2 +- 7 files changed, 125 insertions(+), 13 deletions(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 92efe0a476..6bc5b18061 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -807,6 +807,17 @@ }, "developer_mode": "Vývojářský režim", "developer_tools": "Nástroje pro vývojáře", + "device_dehydrated_no": "Dehydratované: Ne", + "device_dehydrated_yes": "Dehydratované: Ano", + "device_id": "ID zařízení: %(deviceId)s", + "device_keys": "Klíče zařízení", + "device_verification_status": { + "signed_by_owner": "Stav ověření: Podepsáno vlastníkem", + "unknown": "Stav ověření: Neznámý", + "unverified": "Stav ověření: Není podepsáno vlastníkem", + "verified": "Stav ověření: Ověřeno křížovým podpisem" + }, + "devices": "Kryptografická zařízení (%(count)s)", "edit_setting": "Upravit nastavení", "edit_values": "Upravit hodnoty", "empty_string": "", @@ -822,6 +833,7 @@ "failed_to_save": "Nepodařilo se uložit nastavení.", "failed_to_send": "Nepodařilo se odeslat událost!", "id": "ID: ", + "invalid_device_key_id": "Neplatné ID klíče zařízení", "invalid_json": "Nevypadá to jako platný JSON.", "level": "Úroveň", "low_bandwidth_mode": "Režim malé šířky pásma", @@ -832,6 +844,7 @@ "notification_state": "Stav oznámení je %(notificationState)s", "notifications_debug": "Ladění oznámení", "number_of_users": "Počet uživatelů", + "only_joined_members": "Pouze připojení uživatelé", "original_event_source": "Původní zdroj události", "room_encrypted": "Místnost je šifrovaná ✅", "room_id": "ID místnosti: %(roomId)s", @@ -878,10 +891,23 @@ "toggle_event": "přepnout událost", "toolbox": "Sada nástrojů", "use_at_own_risk": "Toto uživatelské rozhraní NEKONTROLUJE typy hodnot. Použití na vlastní nebezpečí.", + "user_avatar": "Avatar: %(avatar)s", + "user_displayname": "Zobrazované jméno: %(displayname)s", + "user_id": "ID uživatele: %(userId)s", + "user_no_avatar": "Avatar: Žádný", + "user_no_displayname": "Zobrazované jméno: Žádné", "user_read_up_to": "Uživatel přečetl až: ", "user_read_up_to_ignore_synthetic": "Uživatel čte až do (ignoreSynthetic): ", "user_read_up_to_private": "Uživatel čte až do (m.read.private): ", "user_read_up_to_private_ignore_synthetic": "Uživatel čte až do (m.read.private;ignoreSynthetic): ", + "user_room_membership": "Členství: %(membership)s", + "user_verification_status": { + "identity_changed": "Stav ověření: Neověřeno a identita změněna", + "unverified": "Stav ověření: Neověřeno", + "verified": "Stav ověření: Ověřeno", + "was_verified": "Stav ověření: Bylo ověřeno, ale identita se změnila." + }, + "users": "Uživatelé", "value": "Hodnota", "value_colon": "Hodnota:", "value_in_this_room": "Hodnota v této místnosti", @@ -1572,22 +1598,22 @@ "explainer_1": "Sem přídejte servery a uživatele, které chcete ignorovat. Hvězdička pro %(brand)s zastupuje libovolný počet kterýchkoliv znaků. Např. @bot:* bude ignorovat všechny uživatele se jménem „bot“ na kterémkoliv serveru.", "explainer_2": "Lidé a servery jsou blokováni pomocí seznamů obsahující pravidla koho blokovat. Odebírání blokovacího seznamu znamená, že neuvidíte uživatele a servery na něm uvedené.", "lists": "Odebíráte:", - "lists_description_1": "Odebíráním seznamu zablokovaných uživatelů se přidáte do jeho místnosti!", + "lists_description_1": "Odebíráním seznamu vykázaných uživatelů se přidáte do jeho místnosti!", "lists_description_2": "Pokud to nechcete, tak prosím použijte jiný nástroj na blokování uživatelů.", "lists_heading": "Odebírané seznamy", - "lists_new_label": "ID nebo adresa seznamu zablokovaných", + "lists_new_label": "ID nebo adresa seznamu vykázaných", "no_lists": "Neodebíráte žádné seznamy", "personal_description": "Váš osobní seznam vykázaných obsahuje všechny uživatele/servery, od kterých osobně nechcete vidět zprávy. Po ignorování prvního uživatele/serveru se ve vašem seznamu místností objeví nová místnost s názvem \"%(myBanList)s\" - v této místnosti zůstaňte, aby seznam zákazů zůstal v platnosti.", "personal_empty": "Nikoho neignorujete.", - "personal_heading": "Osobní seznam blokací", + "personal_heading": "Osobní seznam vykázání", "personal_new_label": "Server nebo ID uživatele", "personal_new_placeholder": "např.: @bot:* nebo example.org", "personal_section": "Ignorujete:", - "room_name": "Můj seznam zablokovaných", + "room_name": "Můj seznam vykázaných", "room_topic": "Toto je váš seznam blokovaných uživatelů/serverů - neopouštějte tuto místnost!", "rules_empty": "Žádné", "rules_server": "Pravidla serveru", - "rules_title": "Pravidla blokování - %(roomName)s", + "rules_title": "Pravidla vykázání - %(roomName)s", "rules_user": "Pravidla uživatele", "something_went_wrong": "Něco se nepovedlo. Zkuste pro prosím znovu nebo se podívejte na detaily do konzole.", "title": "Ignorovaní uživatelé", @@ -2599,7 +2625,7 @@ "do_not_close_warning": "Nezavírejte toto okno, dokud není resetování dokončeno", "export_keys": "Exportovat klíče", "import_keys": "Importovat klíče", - "other_people_device_description": "Upozornění: Uživatelé, kteří s vámi výslovně neověřili (např. pomocí emotikonů), nedostanou vaše šifrované zprávy. Také neověřená zařízení ověřených uživatelů nebudou přijímat vaše šifrované zprávy.", + "other_people_device_description": "Upozornění: Uživatelé, kteří s vámi výslovně neověřili (např. pomocí emotikonů), nedostanou vaše šifrované zprávy. Také neověřená zařízení ověřených uživatelů nebudou přijímat vaše šifrované zprávy. Aby se změny projevily, je nutné restartovat aplikaci.", "other_people_device_label": "V šifrovaných místnostech posílat zprávy pouze ověřeným uživatelům", "other_people_device_title": "Zařízení ostatních uživatelů", "reset_identity": "Obnovit kryptografickou identitu", @@ -3650,7 +3676,7 @@ "changed_rule_rooms": "%(senderName)s změnil(a) pravidlo blokující místnosti odpovídající %(oldGlob)s na místnosti odpovídající %(newGlob)s z důvodu %(reason)s", "changed_rule_servers": "%(senderName)s změnil(a) pravidlo blokující servery odpovídající %(oldGlob)s na servery odpovídající %(newGlob)s z důvodu %(reason)s", "changed_rule_users": "%(senderName)s změnil(a) pravidlo blokující uživatele odpovídající %(oldGlob)s na uživatele odpovídající %(newGlob)s z důvodu %(reason)s", - "created_rule": "%(senderName)s vytvořil blokovací pravidlo odpovídající %(glob)s z důvodu %(reason)s", + "created_rule": "%(senderName)s vytvořil pravidlo vykázání odpovídající %(glob)s z důvodu %(reason)s", "created_rule_rooms": "%(senderName)s vytvořil pravidlo blokující místnosti odpovídající %(glob)s z důvodu %(reason)s", "created_rule_servers": "%(senderName)s vytvořil pravidlo blokující servery odpovídající %(glob)s z důvodu %(reason)s", "created_rule_users": "%(senderName)s vytvořil(a) pravidlo blokující uživatele odpovídající %(glob)s z důvodu %(reason)s", @@ -3659,8 +3685,8 @@ "removed_rule_rooms": "%(senderName)s odstranil pravidlo blokující místnosti odpovídající %(glob)s", "removed_rule_servers": "%(senderName)s odstranil pravidlo blokující servery odpovídající %(glob)s", "removed_rule_users": "%(senderName)s odstranil(a) pravidlo blokující uživatele odpovídající %(glob)s", - "updated_invalid_rule": "%(senderName)s aktualizoval neplatné pravidlo blokování", - "updated_rule": "%(senderName)s aktualizoval blokovací pravidlo odpovídající %(glob)s z důvodu %(reason)s", + "updated_invalid_rule": "%(senderName)s aktualizoval neplatné pravidlo vykázání", + "updated_rule": "%(senderName)s aktualizoval pravidlo vykázání odpovídající %(glob)s z důvodu %(reason)s", "updated_rule_rooms": "%(senderName)s aktualizoval pravidlo blokující místnosti odpovídající %(glob)s z důvodu %(reason)s", "updated_rule_servers": "%(senderName)s aktualizoval pravidlo blokující servery odpovídající %(glob)s z důvodu %(reason)s", "updated_rule_users": "%(senderName)s aktualizoval(a) pravidlo blokující uživatele odpovídající %(glob)s z důvodu %(reason)s" diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 9d1c7408b2..a368ab5a71 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -805,6 +805,17 @@ }, "developer_mode": "Entwicklungsmodus", "developer_tools": "Entwicklungswerkzeuge", + "device_dehydrated_no": "Dehydriert: Nein", + "device_dehydrated_yes": "Dehydriert: Ja", + "device_id": "Geräte-ID:%(deviceId)s", + "device_keys": "Geräteschlüssel", + "device_verification_status": { + "signed_by_owner": "Verifizierungsstatus: Vom Eigentümer signiert", + "unknown": "Verifizierungsstatus: Unbekannt", + "unverified": "Verifizierungsstatus: Nicht vom Eigentümer signiert", + "verified": "Verifizierungsstatus: Durch Cross-Signing bestätigt" + }, + "devices": "Kryptografische Geräte (%(count)s )", "edit_setting": "Einstellung bearbeiten", "edit_values": "Werte bearbeiten", "empty_string": "", @@ -820,6 +831,7 @@ "failed_to_save": "Speichern der Einstellungen fehlgeschlagen.", "failed_to_send": "Übertragung des Ereignisses fehlgeschlagen!", "id": "ID: ", + "invalid_device_key_id": "Ungültige Geräteschlüssel-ID", "invalid_json": "Scheint kein gültiges JSON zu sein.", "level": "Level", "low_bandwidth_mode": "Modus für geringe Bandbreite", @@ -876,10 +888,23 @@ "toggle_event": "Event umschalten", "toolbox": "Werkzeugkasten", "use_at_own_risk": "Diese Benutzeroberfläche prüft nicht auf richtige Datentypen. Benutzung auf eigene Gefahr.", + "user_avatar": "Avatar: %(avatar)s", + "user_displayname": "Anzeigename: %(displayname)s", + "user_id": "Nutzer-ID: %(userId)s", + "user_no_avatar": "Avatar: Keiner", + "user_no_displayname": "Anzeigename: Keiner", "user_read_up_to": "Der Benutzer hat gelesen bis: ", "user_read_up_to_ignore_synthetic": "Der Nutzer hat bis (ignoreSynthetic) gelesen: ", "user_read_up_to_private": "Benutzer las bis (m.read.private): ", "user_read_up_to_private_ignore_synthetic": "Der Nutzer hat bis (m.read.private;ignoreSynthetic) gelesen: ", + "user_room_membership": "Mitgliedschaft: %(membership)s", + "user_verification_status": { + "identity_changed": "Verifizierungsstatus: Nicht verifiziert und Identität geändert", + "unverified": "Verifizierungsstatus: Nicht verifiziert", + "verified": "Verifizierungsstatus: Verifiziert", + "was_verified": "Verifizierungsstatus: Wurde verifiziert, aber die Identität hat sich geändert." + }, + "users": "Nutzer", "value": "Wert", "value_colon": "Wert:", "value_in_this_room": "Wert in diesem Chat", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index b762dccbde..86f9197e92 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2619,7 +2619,7 @@ "do_not_close_warning": "Do not close this window until the reset is finished", "export_keys": "Export keys", "import_keys": "Import keys", - "other_people_device_description": "Warning: users who have not explicitly verified with you (e.g. using emoji) will not receive your encrypted messages. Also, unverified devices of verified users will not receive your encrypted messages.", + "other_people_device_description": "Warning: users who have not explicitly verified with you (e.g. using emoji) will not receive your encrypted messages. Also, unverified devices of verified users will not receive your encrypted messages. Changes require an application restart to take effect.", "other_people_device_label": "In encrypted rooms, only send messages to verified users", "other_people_device_title": "Other people’s devices", "reset_identity": "Reset cryptographic identity", diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 1be7222bfe..950e883940 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -805,6 +805,15 @@ }, "developer_mode": "Arendusrežiim", "developer_tools": "Arendusvahendid", + "device_id": "Seadme tunnus: %(deviceId)s", + "device_keys": "Seadme võtmed", + "device_verification_status": { + "signed_by_owner": "Verifitseerimise olek: omanik on allkirjastanud", + "unknown": "Verifitseerimise olek: teadmata", + "unverified": "Verifitseerimise olek: pole omaniku poolt allkirjastatud", + "verified": "Verifitseerimise olek: verifitseeritud risttunnustamisega" + }, + "devices": "Krüptoseadmed (%(count)s)", "edit_setting": "Muuda seadistust", "edit_values": "Muuda väärtusi", "empty_string": "", @@ -820,6 +829,7 @@ "failed_to_save": "Seadistuste salvestamine ei õnnestunud.", "failed_to_send": "Päringu või sündmuse saatmine ei õnnestunud!", "id": "ID: ", + "invalid_device_key_id": "Vigane seadme võtme tunnus", "invalid_json": "See ei tundu olema korrektse json-andmestikuna.", "level": "Tase", "low_bandwidth_mode": "Vähese ribalaiusega režiim", @@ -830,6 +840,7 @@ "notification_state": "Teavituste olek: %(notificationState)s", "notifications_debug": "Teavituste silumine", "number_of_users": "Kasutajate arv", + "only_joined_members": "Vaid liitunud kasutajad", "original_event_source": "Sündmuse töötlemata lähtekood", "room_encrypted": "Jututuba on krüptitud ✅", "room_id": "Jututoa tunnus: %(roomId)s", @@ -876,10 +887,23 @@ "toggle_event": "lülita sündmus sisse/välja", "toolbox": "Töövahendid", "use_at_own_risk": "See kasutajaliides ei oska kontrollida väärtuste tüüpi ja vormingut. Muudatusi teed omal vastutusel.", + "user_avatar": "Tunnuspilt: %(avatar)s", + "user_displayname": "Kuvatav nimi: %(displayname)s", + "user_id": "Kasutaja tunnus: %(userId)s", + "user_no_avatar": "Tunnuspilt: puudub", + "user_no_displayname": "Kuvatav nimi: puudub", "user_read_up_to": "Kasutaja on lugenud kuni: ", "user_read_up_to_ignore_synthetic": "Kasutaja luges kuni sõnumini (ignoreSynthetic): ", "user_read_up_to_private": "Kasutaja luges kuni sõnumini (m.read.private): ", "user_read_up_to_private_ignore_synthetic": "Kasutaja luges kuni sõnumini (m.read.private;ignoreSynthetic): ", + "user_room_membership": "Liikmelisus: %(membership)s", + "user_verification_status": { + "identity_changed": "Verifitseerimise olek: verifitseerimata ja võrguidentiteet on muutunud", + "unverified": "Verifitseerimise olek: verifitseerimata", + "verified": "Verifitseerimise olek: verifitseeritud", + "was_verified": "Verifitseerimise olek: oli verifitseeritud, aga võrguidentiteet muutus" + }, + "users": "Kasutajad", "value": "Väärtus", "value_colon": "Väärtus:", "value_in_this_room": "Väärtus selles jututoas", @@ -2593,7 +2617,7 @@ "do_not_close_warning": "Ära sulge seda akent enne, kui lähtestamine on lõppenud", "export_keys": "Ekspordi võtmed", "import_keys": "Impordi võtmed", - "other_people_device_description": "Hoiatus: kui kasutaja pole sinuga verifitseerimist läbi teinud (näiteks emojide võrdlemise abil), siis ta ei saa sinu krüptitud sõnumeid. Lisaks ei saadeta krüptitud sõnumeid verifitseeritud kasutajate verifitseerimata seadmetesse.", + "other_people_device_description": "Hoiatus: kui kasutaja pole sinuga verifitseerimist läbi teinud (näiteks emojide võrdlemise abil), siis ta ei saa sinu krüptitud sõnumeid. Lisaks ei saadeta krüptitud sõnumeid verifitseeritud kasutajate verifitseerimata seadmetesse. Muudatused vajavad jõustamiseks rakenduse uuesti käivitamist.", "other_people_device_label": "Krüptitud jututubades saada sõnumeid vaid verifitseeritud kasutajatele", "other_people_device_title": "Teiste kasutajate seadmed", "reset_identity": "Lähtesta krüptoidentiteet", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 740ac2065e..5d4ebe201d 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -805,6 +805,17 @@ }, "developer_mode": "Mode développeur", "developer_tools": "Outils de développement", + "device_dehydrated_no": "Déshydraté : Non", + "device_dehydrated_yes": "Déshydraté : Oui", + "device_id": "Identifiant de l'appareil : %(deviceId)s", + "device_keys": "Clés d'appareil", + "device_verification_status": { + "signed_by_owner": "Statut de vérification : Signé par le propriétaire", + "unknown": "Statut de vérification : Inconnu", + "unverified": "Statut de vérification : Non signé par le propriétaire", + "verified": "Statut de vérification : Vérifié par signature croisée" + }, + "devices": "Appareils cryptographiques (%(count)s )", "edit_setting": "Modifier le paramètre", "edit_values": "Modifier les valeurs", "empty_string": "", diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 2da5542044..87d337e584 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -812,6 +812,17 @@ }, "developer_mode": "Režim pre vývojárov", "developer_tools": "Vývojárske nástroje", + "device_dehydrated_no": "Dehydratované: Nie", + "device_dehydrated_yes": "Dehydratované: Áno", + "device_id": "ID zariadenia: %(deviceId)s", + "device_keys": "Kľúče zariadenia", + "device_verification_status": { + "signed_by_owner": "Stav overenia: Podpísané majiteľom", + "unknown": "Stav overenia: Neznámy", + "unverified": "Stav overenia: Nepodpísané vlastníkom", + "verified": "Stav overenia: Overené krížovým podpisom" + }, + "devices": "Kryptografické zariadenia (%(count)s )", "edit_setting": "Upraviť nastavenie", "edit_values": "Upraviť hodnoty", "empty_string": "", @@ -827,6 +838,7 @@ "failed_to_save": "Nepodarilo sa uložiť nastavenia.", "failed_to_send": "Nepodarilo sa odoslať udalosť!", "id": "ID: ", + "invalid_device_key_id": "Neplatný ID kľúč zariadenia", "invalid_json": "Nevyzerá to ako platný JSON.", "level": "Úroveň", "low_bandwidth_mode": "Režim nízkej šírky pásma", @@ -837,6 +849,7 @@ "notification_state": "Stav oznámenia je %(notificationState)s", "notifications_debug": "Ladenie oznámení", "number_of_users": "Počet používateľov", + "only_joined_members": "Iba pripojení používatelia", "original_event_source": "Pôvodný zdroj udalosti", "room_encrypted": "Miestnosť je šifrovaná ✅", "room_id": "ID miestnosti: %(roomId)s", @@ -885,10 +898,23 @@ "toggle_event": "prepnúť udalosť", "toolbox": "Nástroje", "use_at_own_risk": "Toto používateľské rozhranie nekontroluje typy hodnôt. Používajte ho na vlastné riziko.", + "user_avatar": "Profilový obrázok: %(avatar)s", + "user_displayname": "Zobrazované meno: %(displayname)s", + "user_id": "ID používateľa: %(userId)s", + "user_no_avatar": "Obrázok: Žiadny", + "user_no_displayname": "Zobrazované meno: Žiadne", "user_read_up_to": "Používateľ sa dočítal až do: ", "user_read_up_to_ignore_synthetic": "Používateľ prečíta až do (ignoreSynthetic): ", "user_read_up_to_private": "Používateľ prečíta až do (m.read.private): ", "user_read_up_to_private_ignore_synthetic": "Používateľ prečíta až do (m.read.private;ignoreSynthetic): ", + "user_room_membership": "Členstvo: %(membership)s", + "user_verification_status": { + "identity_changed": "Stav overenia: Neoverené a identita zmenená", + "unverified": "Stav overenia: Neoverené", + "verified": "Stav overenia: Overené", + "was_verified": "Stav overenia: Bolo overené, ale totožnosť sa zmenila" + }, + "users": "Používatelia", "value": "Hodnota", "value_colon": "Hodnota:", "value_in_this_room": "Hodnota v tejto miestnosti", @@ -2629,7 +2655,7 @@ "do_not_close_warning": "Nezatvárajte toto okno, kým sa obnovenie nedokončí", "export_keys": "Exportovať kľúče", "import_keys": "Importovať kľúče", - "other_people_device_description": "Upozornenie: používatelia, ktorí sa s vami výslovne neoverili (napr. pomocou emotikonov), nedostanú vaše šifrované správy. Neoverené zariadenia overených používateľov tiež nedostanú vaše šifrované správy.", + "other_people_device_description": "Upozornenie: používatelia, ktorí sa s vami výslovne neoverili (napr. pomocou emotikonov), nedostanú vaše šifrované správy. Neoverené zariadenia overených používateľov tiež nedostanú vaše šifrované správy. Zmeny nadobudnú platnosť po reštartovaní aplikácie.", "other_people_device_label": "V šifrovaných miestnostiach odosielajte správy iba overeným používateľom", "other_people_device_title": "Zariadenia iných ľudí", "reset_identity": "Obnoviť kryptografickú identitu", diff --git a/test/unit-tests/components/views/settings/encryption/__snapshots__/AdvancedPanel-test.tsx.snap b/test/unit-tests/components/views/settings/encryption/__snapshots__/AdvancedPanel-test.tsx.snap index 60bb86e19f..ce10c63f98 100644 --- a/test/unit-tests/components/views/settings/encryption/__snapshots__/AdvancedPanel-test.tsx.snap +++ b/test/unit-tests/components/views/settings/encryption/__snapshots__/AdvancedPanel-test.tsx.snap @@ -246,7 +246,7 @@ exports[` should display the blacklist of unv class="_message_19upo_85 _help-message_19upo_91" id="radix-_r_7_" > - Warning: users who have not explicitly verified with you (e.g. using emoji) will not receive your encrypted messages. Also, unverified devices of verified users will not receive your encrypted messages. + Warning: users who have not explicitly verified with you (e.g. using emoji) will not receive your encrypted messages. Also, unverified devices of verified users will not receive your encrypted messages. Changes require an application restart to take effect. From 43485594b514ef41c91a78e1167ac5afb254383a Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 31 Oct 2025 11:49:59 +0000 Subject: [PATCH 12/28] Add relevant aria attribute for selected emoji in the emoji picker (#31125) * Add relevant aria attribute for selected emoji in the emoji picker Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Add aria-multiselectable Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Do not specify aria-selected/pressed when element is disabled Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Use checkbox role for reaction picker as gridcell + aria-selected has very inconsistent screenreader support Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Fix keyboard handling for modified DOM structure Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Fix enter behaviour Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/emojipicker/Category.tsx | 23 ++++----- src/components/views/emojipicker/Emoji.tsx | 13 +++-- .../views/emojipicker/EmojiPicker.tsx | 49 +++++++++++++------ .../views/emojipicker/QuickReactions.tsx | 1 + 4 files changed, 57 insertions(+), 29 deletions(-) diff --git a/src/components/views/emojipicker/Category.tsx b/src/components/views/emojipicker/Category.tsx index 9ffe1dce14..75734a5d16 100644 --- a/src/components/views/emojipicker/Category.tsx +++ b/src/components/views/emojipicker/Category.tsx @@ -61,17 +61,17 @@ class Category extends React.PureComponent { return (
    {emojisForRow.map((emoji) => ( - +
    + +
    ))}
    ); @@ -118,6 +118,7 @@ class Category extends React.PureComponent { overflowMargin={0} renderItem={this.renderEmojiRow} role="grid" + aria-multiselectable /> ); diff --git a/src/components/views/emojipicker/Emoji.tsx b/src/components/views/emojipicker/Emoji.tsx index 26d15d4dc6..8cc104f9a5 100644 --- a/src/components/views/emojipicker/Emoji.tsx +++ b/src/components/views/emojipicker/Emoji.tsx @@ -15,13 +15,17 @@ import { RovingAccessibleButton } from "../../../accessibility/RovingTabIndex"; interface IProps { emoji: IEmoji; + /** + * Set of which emojis are already selected and should be decorated as such. + * If specified, emoji will use a checkbox role with aria-checked set appropriately. + */ selectedEmojis?: Set; onClick(ev: ButtonEvent, emoji: IEmoji): void; onMouseEnter(emoji: IEmoji): void; onMouseLeave(emoji: IEmoji): void; disabled?: boolean; id?: string; - role?: string; + className?: string; } class Emoji extends React.PureComponent { @@ -34,9 +38,10 @@ class Emoji extends React.PureComponent { onClick={(ev: ButtonEvent) => onClick(ev, emoji)} onMouseEnter={() => onMouseEnter(emoji)} onMouseLeave={() => onMouseLeave(emoji)} - className="mx_EmojiPicker_item_wrapper" - disabled={this.props.disabled} - role={this.props.role} + className={this.props.className} + disabled={this.props.disabled || undefined} + role={selectedEmojis ? "checkbox" : undefined} + aria-checked={this.props.disabled ? undefined : isSelected} focusOnMouseOver >
    diff --git a/src/components/views/emojipicker/EmojiPicker.tsx b/src/components/views/emojipicker/EmojiPicker.tsx index f8ab405f5d..5311e84c91 100644 --- a/src/components/views/emojipicker/EmojiPicker.tsx +++ b/src/components/views/emojipicker/EmojiPicker.tsx @@ -152,24 +152,42 @@ class EmojiPicker extends React.Component { this.updateVisibility(); }; + // Given a roving emoji button returns the role=row element containing it + private getRow(rovingNode?: Element): Element | undefined { + return this.getGridcell(rovingNode)?.parentElement ?? undefined; + } + + // Given a roving emoji button returns the role=gridcell element containing it + private getGridcell(rovingNode?: Element): Element | undefined { + return rovingNode?.parentElement ?? undefined; + } + + // Given a role=gridcell node returns the roving emoji button contained within + private getRovingNode(gridcellNode?: Element): Element | undefined { + return gridcellNode?.children[0]; + } + private keyboardNavigation(ev: React.KeyboardEvent, state: RovingState, dispatch: Dispatch): void { - const node = state.activeNode; - const parent = node?.parentElement; - if (!parent || !state.activeNode) return; - const rowIndex = Array.from(parent.children).indexOf(node); + const rowElement = this.getRow(state.activeNode); + const gridcellNode = this.getGridcell(state.activeNode); + if (!rowElement || !gridcellNode || !state.activeNode) return; + + // Index of element within row container + const columnIndex = Array.from(rowElement.children).indexOf(gridcellNode); + // Index of element within the list of roving nodes const refIndex = state.nodes.indexOf(state.activeNode); let focusNode: HTMLElement | undefined; - let newParent: HTMLElement | undefined; + let newRowElement: Element | undefined; switch (ev.key) { case Key.ARROW_LEFT: focusNode = state.nodes[refIndex - 1]; - newParent = focusNode?.parentElement ?? undefined; + newRowElement = this.getRow(focusNode); break; case Key.ARROW_RIGHT: focusNode = state.nodes[refIndex + 1]; - newParent = focusNode?.parentElement ?? undefined; + newRowElement = this.getRow(focusNode); break; case Key.ARROW_UP: @@ -177,11 +195,14 @@ class EmojiPicker extends React.Component { // For up/down we find the prev/next parent by inspecting the refs either side of our row const node = ev.key === Key.ARROW_UP - ? state.nodes[refIndex - rowIndex - 1] - : state.nodes[refIndex - rowIndex + EMOJIS_PER_ROW]; - newParent = node?.parentElement ?? undefined; - const newTarget = newParent?.children[clamp(rowIndex, 0, newParent.children.length - 1)]; - focusNode = state.nodes.find((r) => r === newTarget); + ? state.nodes[refIndex - columnIndex - 1] + : state.nodes[refIndex - columnIndex + EMOJIS_PER_ROW]; + newRowElement = this.getRow(node); + if (newRowElement) { + const newColumnIndex = clamp(columnIndex, 0, newRowElement.children.length - 1); + const newTarget = this.getRovingNode(newRowElement?.children[newColumnIndex]); + focusNode = state.nodes.find((r) => r === newTarget); + } break; } } @@ -197,7 +218,7 @@ class EmojiPicker extends React.Component { payload: { node: focusNode }, }); - if (parent !== newParent) { + if (rowElement !== newRowElement) { focusNode?.scrollIntoView({ behavior: "auto", block: "center", @@ -315,7 +336,7 @@ class EmojiPicker extends React.Component { private onEnterFilter = (): void => { const btn = this.scrollRef.current?.containerRef.current?.querySelector( - '.mx_EmojiPicker_item_wrapper[tabindex="0"]', + '.mx_EmojiPicker_item_wrapper [tabindex="0"]', ); btn?.click(); this.props.onFinished(); diff --git a/src/components/views/emojipicker/QuickReactions.tsx b/src/components/views/emojipicker/QuickReactions.tsx index a814a6b206..4b337cd5f5 100644 --- a/src/components/views/emojipicker/QuickReactions.tsx +++ b/src/components/views/emojipicker/QuickReactions.tsx @@ -73,6 +73,7 @@ class QuickReactions extends React.Component { onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave} selectedEmojis={this.props.selectedEmojis} + className="mx_EmojiPicker_item_wrapper" /> ))} From a9bb046e52e4e926c38d1017a3d62a9faf423f25 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 11:59:07 +0000 Subject: [PATCH 13/28] Update storybook to v9.1.16 (#31105) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/shared-components/yarn.lock | 419 +++++++++++++++++++++------ yarn.lock | 166 +++++------ 2 files changed, 397 insertions(+), 188 deletions(-) diff --git a/packages/shared-components/yarn.lock b/packages/shared-components/yarn.lock index 2beefab6d2..35e7f0d15c 100644 --- a/packages/shared-components/yarn.lock +++ b/packages/shared-components/yarn.lock @@ -17,11 +17,11 @@ picocolors "^1.1.1" "@babel/compat-data@^7.27.2": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.4.tgz#96fdf1af1b8859c8474ab39c295312bfb7c24b04" - integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f" + integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.5", "@babel/core@^7.23.9", "@babel/core@^7.28.0", "@babel/core@^7.7.5": +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.5", "@babel/core@^7.23.9", "@babel/core@^7.7.5": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.4.tgz#12a550b8794452df4c8b084f95003bce1742d496" integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== @@ -42,7 +42,28 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.22.5", "@babel/generator@^7.28.3", "@babel/generator@^7.7.2": +"@babel/core@^7.28.0": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e" + integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.5" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.28.3" + "@babel/helpers" "^7.28.4" + "@babel/parser" "^7.28.5" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.22.5", "@babel/generator@^7.7.2": version "7.28.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== @@ -53,6 +74,17 @@ "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" +"@babel/generator@^7.28.3", "@babel/generator@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298" + integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== + dependencies: + "@babel/parser" "^7.28.5" + "@babel/types" "^7.28.5" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + "@babel/helper-compilation-targets@^7.27.2": version "7.27.2" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" @@ -96,10 +128,10 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== +"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== "@babel/helper-validator-option@^7.27.1": version "7.27.1" @@ -114,7 +146,14 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.28.4" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.5", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4", "@babel/parser@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" + integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== + dependencies: + "@babel/types" "^7.28.5" + +"@babel/parser@^7.14.7", "@babel/parser@^7.18.5", "@babel/parser@^7.23.9": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== @@ -249,7 +288,7 @@ "@babel/parser" "^7.27.2" "@babel/types" "^7.27.1" -"@babel/traverse@^7.18.5", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4": +"@babel/traverse@^7.18.5": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== @@ -262,7 +301,28 @@ "@babel/types" "^7.28.4" debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.27.1", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.3.3": +"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b" + integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.5" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.5" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.5" + debug "^4.3.1" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" + integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + +"@babel/types@^7.22.5", "@babel/types@^7.3.3": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== @@ -280,131 +340,261 @@ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz#ee6b7163a13528e099ecf562b972f2bcebe0aa97" integrity sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw== +"@esbuild/aix-ppc64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz#2ae33300598132cc4cf580dbbb28d30fed3c5c49" + integrity sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg== + "@esbuild/android-arm64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz#115fc76631e82dd06811bfaf2db0d4979c16e2cb" integrity sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg== +"@esbuild/android-arm64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz#927708b3db5d739d6cb7709136924cc81bec9b03" + integrity sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ== + "@esbuild/android-arm@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.10.tgz#8d5811912da77f615398611e5bbc1333fe321aa9" integrity sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w== +"@esbuild/android-arm@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.11.tgz#571f94e7f4068957ec4c2cfb907deae3d01b55ae" + integrity sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg== + "@esbuild/android-x64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.10.tgz#e3e96516b2d50d74105bb92594c473e30ddc16b1" integrity sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg== +"@esbuild/android-x64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.11.tgz#8a3bf5cae6c560c7ececa3150b2bde76e0fb81e6" + integrity sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g== + "@esbuild/darwin-arm64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz#6af6bb1d05887dac515de1b162b59dc71212ed76" integrity sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA== +"@esbuild/darwin-arm64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz#0a678c4ac4bf8717e67481e1a797e6c152f93c84" + integrity sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w== + "@esbuild/darwin-x64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz#99ae82347fbd336fc2d28ffd4f05694e6e5b723d" integrity sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg== +"@esbuild/darwin-x64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz#70f5e925a30c8309f1294d407a5e5e002e0315fe" + integrity sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ== + "@esbuild/freebsd-arm64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz#0c6d5558a6322b0bdb17f7025c19bd7d2359437d" integrity sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg== +"@esbuild/freebsd-arm64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz#4ec1db687c5b2b78b44148025da9632397553e8a" + integrity sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA== + "@esbuild/freebsd-x64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz#8c35873fab8c0857a75300a3dcce4324ca0b9844" integrity sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA== +"@esbuild/freebsd-x64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz#4c81abd1b142f1e9acfef8c5153d438ca53f44bb" + integrity sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw== + "@esbuild/linux-arm64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz#3edc2f87b889a15b4cedaf65f498c2bed7b16b90" integrity sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ== +"@esbuild/linux-arm64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz#69517a111acfc2b93aa0fb5eaeb834c0202ccda5" + integrity sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA== + "@esbuild/linux-arm@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz#86501cfdfb3d110176d80c41b27ed4611471cde7" integrity sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg== +"@esbuild/linux-arm@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz#58dac26eae2dba0fac5405052b9002dac088d38f" + integrity sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw== + "@esbuild/linux-ia32@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz#e6589877876142537c6864680cd5d26a622b9d97" integrity sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ== +"@esbuild/linux-ia32@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz#b89d4efe9bdad46ba944f0f3b8ddd40834268c2b" + integrity sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw== + "@esbuild/linux-loong64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz#11119e18781f136d8083ea10eb6be73db7532de8" integrity sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg== +"@esbuild/linux-loong64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz#11f603cb60ad14392c3f5c94d64b3cc8b630fbeb" + integrity sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw== + "@esbuild/linux-mips64el@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz#3052f5436b0c0c67a25658d5fc87f045e7def9e6" integrity sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA== +"@esbuild/linux-mips64el@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz#b7d447ff0676b8ab247d69dac40a5cf08e5eeaf5" + integrity sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ== + "@esbuild/linux-ppc64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz#2f098920ee5be2ce799f35e367b28709925a8744" integrity sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA== +"@esbuild/linux-ppc64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz#b3a28ed7cc252a61b07ff7c8fd8a984ffd3a2f74" + integrity sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw== + "@esbuild/linux-riscv64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz#fa51d7fd0a22a62b51b4b94b405a3198cf7405dd" integrity sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA== +"@esbuild/linux-riscv64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz#ce75b08f7d871a75edcf4d2125f50b21dc9dc273" + integrity sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww== + "@esbuild/linux-s390x@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz#a27642e36fc282748fdb38954bd3ef4f85791e8a" integrity sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew== +"@esbuild/linux-s390x@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz#cd08f6c73b6b6ff9ccdaabbd3ff6ad3dca99c263" + integrity sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw== + "@esbuild/linux-x64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz#9d9b09c0033d17529570ced6d813f98315dfe4e9" integrity sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA== +"@esbuild/linux-x64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz#3c3718af31a95d8946ebd3c32bb1e699bdf74910" + integrity sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ== + "@esbuild/netbsd-arm64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz#25c09a659c97e8af19e3f2afd1c9190435802151" integrity sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A== +"@esbuild/netbsd-arm64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz#b4c767082401e3a4e8595fe53c47cd7f097c8077" + integrity sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg== + "@esbuild/netbsd-x64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz#7fa5f6ffc19be3a0f6f5fd32c90df3dc2506937a" integrity sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig== +"@esbuild/netbsd-x64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz#f2a930458ed2941d1f11ebc34b9c7d61f7a4d034" + integrity sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A== + "@esbuild/openbsd-arm64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz#8faa6aa1afca0c6d024398321d6cb1c18e72a1c3" integrity sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw== +"@esbuild/openbsd-arm64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz#b4ae93c75aec48bc1e8a0154957a05f0641f2dad" + integrity sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg== + "@esbuild/openbsd-x64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz#a42979b016f29559a8453d32440d3c8cd420af5e" integrity sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw== +"@esbuild/openbsd-x64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz#b42863959c8dcf9b01581522e40012d2c70045e2" + integrity sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw== + "@esbuild/openharmony-arm64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz#fd87bfeadd7eeb3aa384bbba907459ffa3197cb1" integrity sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag== +"@esbuild/openharmony-arm64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz#b2e717141c8fdf6bddd4010f0912e6b39e1640f1" + integrity sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ== + "@esbuild/sunos-x64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz#3a18f590e36cb78ae7397976b760b2b8c74407f4" integrity sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ== +"@esbuild/sunos-x64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz#9fbea1febe8778927804828883ec0f6dd80eb244" + integrity sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA== + "@esbuild/win32-arm64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz#e71741a251e3fd971408827a529d2325551f530c" integrity sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw== +"@esbuild/win32-arm64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz#501539cedb24468336073383989a7323005a8935" + integrity sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q== + "@esbuild/win32-ia32@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz#c6f010b5d3b943d8901a0c87ea55f93b8b54bf94" integrity sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw== +"@esbuild/win32-ia32@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz#8ac7229aa82cef8f16ffb58f1176a973a7a15343" + integrity sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA== + "@esbuild/win32-x64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz#e4b3e255a1b4aea84f6e1d2ae0b73f826c3785bd" integrity sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw== +"@esbuild/win32-x64@0.25.11": + version "0.25.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz#5ecda6f3fe138b7e456f4e429edde33c823f392f" + integrity sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0": version "4.9.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3" @@ -1102,9 +1292,9 @@ "@sinonjs/commons" "^3.0.0" "@storybook/addon-a11y@^9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-9.1.10.tgz#d0ad3acc2dfddede56efcc16f0a44c0377bf880d" - integrity sha512-RhYYtk8nePxVNfP/voW8vS7AiQxWWBgOLNMTeDr9Anjh06mpSWZ/U/zEUNC9TrId5BxnyZJW5Lkg0JUMwvyfjw== + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-9.1.16.tgz#d7abc9339bd04ce4c5e4b10875e5ee41352c9432" + integrity sha512-DpUqAMOgkC/K/DgB9osqbBYmiWWj7V444HeYLHcx7GdPtg2guq1jAcalsOnQeU3wXgUE+wNuyMm6qZKm7of11g== dependencies: "@storybook/global" "^5.0.0" axe-core "^4.2.0" @@ -1117,30 +1307,30 @@ "@figspec/react" "^1.0.0" "@storybook/addon-docs@^9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-9.1.10.tgz#9dcfaa05aa6c8a092798da515bb912b3237f17a6" - integrity sha512-LYK3oXy/0PgY39FhkYVd9D0bzatLGTsMhaPPwSjBOmZgK0f0yBLqaePy7urUFeHYm/rjwAaRmDJNBqUnGTVoig== + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-9.1.16.tgz#0127eff2ff1b223f46a00f70fd259975fec7028d" + integrity sha512-JfaUD6fC7ySLg5duRdaWZ0FUUXrgUvqbZe/agCbSyOaIHOtJdhGaPjOC3vuXTAcV8/8/wWmbu0iXFMD08iKvdw== dependencies: "@mdx-js/react" "^3.0.0" - "@storybook/csf-plugin" "9.1.10" + "@storybook/csf-plugin" "9.1.16" "@storybook/icons" "^1.4.0" - "@storybook/react-dom-shim" "9.1.10" + "@storybook/react-dom-shim" "9.1.16" react "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" react-dom "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" ts-dedent "^2.0.0" -"@storybook/builder-vite@9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-9.1.10.tgz#bf6c24c64f6912a94d0bc289ad69a06af118010c" - integrity sha512-0ogI+toZJYaFptcFpRcRPOZ9/NrFUYhiaI09ggeEB1FF9ygHMVsobp4eaj4HjZI6V3x7cQwkd2ZmxAMQDBQuMA== +"@storybook/builder-vite@9.1.16": + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-9.1.16.tgz#58e00c16c8ba7d4c94f828753386bba1932c95b4" + integrity sha512-CyvYA5w1BKeSVaRavKi+euWxLffshq0v9Rz/5E9MKCitbYtjwkDH6UMIYmcbTs906mEBuYqrbz3nygDP0ppodw== dependencies: - "@storybook/csf-plugin" "9.1.10" + "@storybook/csf-plugin" "9.1.16" ts-dedent "^2.0.0" -"@storybook/csf-plugin@9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-9.1.10.tgz#9eaed7b8e0df62bd9d091501d79d262b5c1c4250" - integrity sha512-247F/JU0Naxm/RIUnQYpqXeCL0wG8UNJkZe+/GkLjdqzsyML0lb+8OwBsWFfG8zfj6fkjmRU2mF44TnNkzoQcg== +"@storybook/csf-plugin@9.1.16": + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-9.1.16.tgz#beeaae4b6e2597e4f43407a7b9c6870e8d6ff79d" + integrity sha512-GKlNNlmWeFBQxhQY5hZOSnFGbeKq69jal0dYNWoSImTjor28eYRHb9iQkDzRpijLPizBaB9MlxLsLrgFDp7adA== dependencies: unplugin "^1.3.1" @@ -1154,33 +1344,33 @@ resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.6.0.tgz#9fa6eb9c82922b79f75a2cf83c38af30ba7fd696" integrity sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw== -"@storybook/react-dom-shim@9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-9.1.10.tgz#60e7898a8a7a03152b24a20c50af4cb35b0b98b6" - integrity sha512-cxy8GTj73RMJIFPrgqdnMXePGX5iFohM5pDCZ63Te5m5GtzKqsILRXtBBLO6Ouexm/ZYRVznkKiwNKX/Fu24fQ== +"@storybook/react-dom-shim@9.1.16": + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-9.1.16.tgz#c98298b1f08e699f1a06483c42fdfc4864cf4493" + integrity sha512-MsI4qTxdT6lMXQmo3IXhw3EaCC+vsZboyEZBx4pOJ+K/5cDJ6ZoQ3f0d4yGpVhumDxaxlnNAg954+f8WWXE1rQ== "@storybook/react-vite@^9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-9.1.10.tgz#a1702ef103e811bcb864669c9526e1a3deea86e4" - integrity sha512-k0wWlfoWakoHL3NZ1+38oxRH3WYyprFFX+WUb/4W8axrvpKogvdnxKCul/YB1HH5FcTagIfguamsPjKwB1ZkJg== + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-9.1.16.tgz#8672b6da54accdfd3dc329bd82ec2bcf1cfdf9e8" + integrity sha512-WRKSq0XfQ/Qx66aKisQCfa/1UKwN9HjVbY6xrmsX7kI5zBdITxIcKInq6PWoPv91SJD7+Et956yX+F86R1aEXw== dependencies: "@joshwooding/vite-plugin-react-docgen-typescript" "0.6.1" "@rollup/pluginutils" "^5.0.2" - "@storybook/builder-vite" "9.1.10" - "@storybook/react" "9.1.10" + "@storybook/builder-vite" "9.1.16" + "@storybook/react" "9.1.16" find-up "^7.0.0" magic-string "^0.30.0" react-docgen "^8.0.0" resolve "^1.22.8" tsconfig-paths "^4.2.0" -"@storybook/react@9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-9.1.10.tgz#39ffc1a0c6f91f6510550365409ee2178fc0cd65" - integrity sha512-flG3Gn3EHZnxn92C7vrA2U4aGqpOKdf85fL43+J/2k9HF5AIyOFGlcv4LGVyKZ3LOAow/nGBVSXL9961h+ICRA== +"@storybook/react@9.1.16": + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-9.1.16.tgz#38f8b4bdb7060575171183af2737198fe03aa2b6" + integrity sha512-M/SkHJJdtiGpodBJq9+DYmSkEOD+VqlPxKI+FvbHESTNs//1IgqFIjEWetd8quhd9oj/gvo4ICBAPu+UmD6M9w== dependencies: "@storybook/global" "^5.0.0" - "@storybook/react-dom-shim" "9.1.10" + "@storybook/react-dom-shim" "9.1.16" "@storybook/test-runner@^0.23.0": version "0.23.0" @@ -1352,11 +1542,12 @@ "@babel/types" "^7.28.2" "@types/chai@^5.2.2": - version "5.2.2" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.2.2.tgz#6f14cea18180ffc4416bc0fd12be05fdd73bdd6b" - integrity sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg== + version "5.2.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.2.3.tgz#8e9cd9e1c3581fa6b341a5aed5588eb285be0b4a" + integrity sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== dependencies: "@types/deep-eql" "*" + assertion-error "^2.0.1" "@types/deep-eql@*": version "4.0.2" @@ -1829,9 +2020,9 @@ available-typed-arrays@^1.0.7: possible-typed-array-names "^1.0.0" axe-core@^4.2.0: - version "4.10.3" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.3.tgz#04145965ac7894faddbac30861e5d8f11bfd14fc" - integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg== + version "4.11.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.11.0.tgz#16f74d6482e343ff263d4f4503829e9ee91a86b6" + integrity sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ== axios@^1.6.1: version "1.12.2" @@ -1915,10 +2106,10 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -baseline-browser-mapping@^2.8.9: - version "2.8.14" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.14.tgz#b73b0ae23efcb967e30b381c09a1a001777ec927" - integrity sha512-GM9c0cWWR8Ga7//Ves/9KRgTS8nLausCkP3CGiFLrnwA2CDUluXgaQqvrULoR2Ujrd/mz/lkX87F5BHFsNr5sQ== +baseline-browser-mapping@^2.8.19: + version "2.8.21" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.21.tgz#2f9cccde871bfa4aec9dbf92d0ee746e4f1892e4" + integrity sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q== better-opn@^3.0.2: version "3.0.2" @@ -2034,15 +2225,15 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@^4.24.0: - version "4.26.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.26.3.tgz#40fbfe2d1cd420281ce5b1caa8840049c79afb56" - integrity sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w== + version "4.27.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.27.0.tgz#755654744feae978fbb123718b2f139bc0fa6697" + integrity sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw== dependencies: - baseline-browser-mapping "^2.8.9" - caniuse-lite "^1.0.30001746" - electron-to-chromium "^1.5.227" - node-releases "^2.0.21" - update-browserslist-db "^1.1.3" + baseline-browser-mapping "^2.8.19" + caniuse-lite "^1.0.30001751" + electron-to-chromium "^1.5.238" + node-releases "^2.0.26" + update-browserslist-db "^1.1.4" bser@2.1.1: version "2.1.1" @@ -2125,10 +2316,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001746: - version "1.0.30001749" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001749.tgz#21a43b923577932097fe32bcaabb6da7f4677632" - integrity sha512-0rw2fJOmLfnzCRbkm8EyHL8SvI2Apu5UbnQuTsJ0ClgrH8hcwFooJ1s5R0EP8o8aVrFu8++ae29Kt9/gZAZp/Q== +caniuse-lite@^1.0.30001751: + version "1.0.30001752" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001752.tgz#afa28d0830709507162bc6ed3f7cb23b00926a99" + integrity sha512-vKUk7beoukxE47P5gcVNKkDRzXdVofotshHwfR9vmpeFKxmI5PBpgOMC18LUJUA/DvJ70Y7RveasIBraqsyO/g== chai@^5.2.0: version "5.3.3" @@ -2608,10 +2799,10 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -electron-to-chromium@^1.5.227: - version "1.5.233" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.233.tgz#05db98476cee317527d6c48934571e13ad6b6f58" - integrity sha512-iUdTQSf7EFXsDdQsp8MwJz5SVk4APEFqXU/S47OtQ0YLqacSwPXdZ5vRlMX3neb07Cy2vgioNuRnWUXFwuslkg== +electron-to-chromium@^1.5.238: + version "1.5.244" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.244.tgz#b9b61e3d24ef4203489951468614f2a360763820" + integrity sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw== elliptic@^6.5.3, elliptic@^6.6.1: version "6.6.1" @@ -2702,7 +2893,39 @@ esbuild-register@^3.5.0: dependencies: debug "^4.3.4" -"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", esbuild@^0.25.0: +"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0": + version "0.25.11" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.11.tgz#0f31b82f335652580f75ef6897bba81962d9ae3d" + integrity sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.11" + "@esbuild/android-arm" "0.25.11" + "@esbuild/android-arm64" "0.25.11" + "@esbuild/android-x64" "0.25.11" + "@esbuild/darwin-arm64" "0.25.11" + "@esbuild/darwin-x64" "0.25.11" + "@esbuild/freebsd-arm64" "0.25.11" + "@esbuild/freebsd-x64" "0.25.11" + "@esbuild/linux-arm" "0.25.11" + "@esbuild/linux-arm64" "0.25.11" + "@esbuild/linux-ia32" "0.25.11" + "@esbuild/linux-loong64" "0.25.11" + "@esbuild/linux-mips64el" "0.25.11" + "@esbuild/linux-ppc64" "0.25.11" + "@esbuild/linux-riscv64" "0.25.11" + "@esbuild/linux-s390x" "0.25.11" + "@esbuild/linux-x64" "0.25.11" + "@esbuild/netbsd-arm64" "0.25.11" + "@esbuild/netbsd-x64" "0.25.11" + "@esbuild/openbsd-arm64" "0.25.11" + "@esbuild/openbsd-x64" "0.25.11" + "@esbuild/openharmony-arm64" "0.25.11" + "@esbuild/sunos-x64" "0.25.11" + "@esbuild/win32-arm64" "0.25.11" + "@esbuild/win32-ia32" "0.25.11" + "@esbuild/win32-x64" "0.25.11" + +esbuild@^0.25.0: version "0.25.10" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.10.tgz#37f5aa5cd14500f141be121c01b096ca83ac34a9" integrity sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ== @@ -3518,7 +3741,7 @@ is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.16.0: +is-core-module@^2.16.0, is-core-module@^2.16.1: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -4412,7 +4635,14 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@^0.30.0, magic-string@^0.30.17, magic-string@^0.30.3: +magic-string@^0.30.0, magic-string@^0.30.17: + version "0.30.21" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.5" + +magic-string@^0.30.3: version "0.30.19" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.19.tgz#cebe9f104e565602e5d2098c5f2e79a77cc86da9" integrity sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw== @@ -4601,10 +4831,10 @@ node-preload@^0.2.1: dependencies: process-on-spawn "^1.0.0" -node-releases@^2.0.21: - version "2.0.23" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.23.tgz#2ecf3d7ba571ece05c67c77e5b7b1b6fb9e18cea" - integrity sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg== +node-releases@^2.0.26: + version "2.0.27" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" + integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== node-stdlib-browser@^1.2.0: version "1.3.1" @@ -5175,9 +5405,9 @@ react-docgen-typescript@^2.2.2: integrity sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg== react-docgen@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-8.0.1.tgz#45fb50048d49d63c9ae73b3286b88e9aa64e6cf9" - integrity sha512-kQKsqPLplY3Hx4jGnM3jpQcG3FQDt7ySz32uTHt3C9HAe45kNXG+3o16Eqn3Fw1GtMfHoN3b4J/z2e6cZJCmqQ== + version "8.0.2" + resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-8.0.2.tgz#450efcac75813e3d614d7bd15eb4066e2e7bcbf5" + integrity sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA== dependencies: "@babel/core" "^7.28.0" "@babel/traverse" "^7.28.0" @@ -5300,7 +5530,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== -resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.8, resolve@~1.22.1, resolve@~1.22.2: +resolve@^1.17.0, resolve@^1.20.0, resolve@~1.22.1, resolve@~1.22.2: version "1.22.10" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -5309,6 +5539,15 @@ resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.8, resolve@~1.2 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.1, resolve@^1.22.8: + version "1.22.11" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== + dependencies: + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + reusify@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" @@ -5596,9 +5835,9 @@ stack-utils@^2.0.3: escape-string-regexp "^2.0.0" storybook@^9.1.10: - version "9.1.10" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-9.1.10.tgz#c06cfd8b77522cf17bd22d82d1e83af96362a78e" - integrity sha512-4+U7gF9hMpGilQmdVJwQaVZZEkD7XwC4ZDmBa51mobaPYelELEMoMfNM2hLyvB2x12gk1IJui1DnwOE4t+MXhw== + version "9.1.16" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-9.1.16.tgz#fe92ac733781aa919104ecf090fd6615deaa6c69" + integrity sha512-339U14K6l46EFyRvaPS2ZlL7v7Pb+LlcXT8KAETrGPxq8v1sAjj2HAOB6zrlAK3M+0+ricssfAwsLCwt7Eg8TQ== dependencies: "@storybook/global" "^5.0.0" "@testing-library/jest-dom" "^6.6.3" @@ -5737,9 +5976,9 @@ strip-indent@^3.0.0: min-indent "^1.0.0" strip-indent@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.1.0.tgz#8658a77cece02a4f27064bdb0a459257edb565f6" - integrity sha512-OA95x+JPmL7kc7zCu+e+TeYxEiaIyndRx0OrBcK2QPPH09oAndr2ALvymxWA+Lx1PYYvFUm4O63pRkdJAaW96w== + version "4.1.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.1.1.tgz#aba13de189d4ad9a17f6050e76554ac27585c7af" + integrity sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA== strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: version "3.1.1" @@ -5957,10 +6196,10 @@ unplugin@^1.3.1: acorn "^8.14.0" webpack-virtual-modules "^0.6.2" -update-browserslist-db@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" - integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== +update-browserslist-db@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz#7802aa2ae91477f255b86e0e46dbc787a206ad4a" + integrity sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A== dependencies: escalade "^3.2.0" picocolors "^1.1.1" diff --git a/yarn.lock b/yarn.lock index 5f7a2d8b86..2529ec4d2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -295,12 +295,12 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" - integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.4", "@babel/parser@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" + integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== dependencies: - "@babel/types" "^7.28.0" + "@babel/types" "^7.28.5" "@babel/parser@^7.14.7", "@babel/parser@^7.23.9": version "7.25.8" @@ -316,13 +316,6 @@ dependencies: "@babel/types" "^7.28.4" -"@babel/parser@^7.27.2", "@babel/parser@^7.28.4", "@babel/parser@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" - integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== - dependencies: - "@babel/types" "^7.28.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz#fbde57974707bbfa0376d34d425ff4fa6c732421" @@ -1168,13 +1161,13 @@ "@babel/types" "^7.28.5" debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.20.7": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.1.tgz#2aaf3c10b31ba03a77ac84f52b3912a0edef4cf9" - integrity sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.4.4": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" + integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== dependencies: "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@babel/types@^7.21.3", "@babel/types@^7.3.3": version "7.25.8" @@ -1193,22 +1186,6 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" -"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.4.4": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" - integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" - -"@babel/types@^7.28.0": - version "7.28.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.2.tgz#da9db0856a9a88e0a13b019881d7513588cf712b" - integrity sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@balena/dockerignore@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@balena/dockerignore/-/dockerignore-1.0.2.tgz#9ffe4726915251e8eb69f44ef3547e0da2c03e0d" @@ -3079,18 +3056,18 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@storybook/builder-vite@9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-9.1.10.tgz#bf6c24c64f6912a94d0bc289ad69a06af118010c" - integrity sha512-0ogI+toZJYaFptcFpRcRPOZ9/NrFUYhiaI09ggeEB1FF9ygHMVsobp4eaj4HjZI6V3x7cQwkd2ZmxAMQDBQuMA== +"@storybook/builder-vite@9.1.16": + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-9.1.16.tgz#58e00c16c8ba7d4c94f828753386bba1932c95b4" + integrity sha512-CyvYA5w1BKeSVaRavKi+euWxLffshq0v9Rz/5E9MKCitbYtjwkDH6UMIYmcbTs906mEBuYqrbz3nygDP0ppodw== dependencies: - "@storybook/csf-plugin" "9.1.10" + "@storybook/csf-plugin" "9.1.16" ts-dedent "^2.0.0" -"@storybook/csf-plugin@9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-9.1.10.tgz#9eaed7b8e0df62bd9d091501d79d262b5c1c4250" - integrity sha512-247F/JU0Naxm/RIUnQYpqXeCL0wG8UNJkZe+/GkLjdqzsyML0lb+8OwBsWFfG8zfj6fkjmRU2mF44TnNkzoQcg== +"@storybook/csf-plugin@9.1.16": + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-9.1.16.tgz#beeaae4b6e2597e4f43407a7b9c6870e8d6ff79d" + integrity sha512-GKlNNlmWeFBQxhQY5hZOSnFGbeKq69jal0dYNWoSImTjor28eYRHb9iQkDzRpijLPizBaB9MlxLsLrgFDp7adA== dependencies: unplugin "^1.3.1" @@ -3099,33 +3076,33 @@ resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== -"@storybook/react-dom-shim@9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-9.1.10.tgz#60e7898a8a7a03152b24a20c50af4cb35b0b98b6" - integrity sha512-cxy8GTj73RMJIFPrgqdnMXePGX5iFohM5pDCZ63Te5m5GtzKqsILRXtBBLO6Ouexm/ZYRVznkKiwNKX/Fu24fQ== +"@storybook/react-dom-shim@9.1.16": + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-9.1.16.tgz#c98298b1f08e699f1a06483c42fdfc4864cf4493" + integrity sha512-MsI4qTxdT6lMXQmo3IXhw3EaCC+vsZboyEZBx4pOJ+K/5cDJ6ZoQ3f0d4yGpVhumDxaxlnNAg954+f8WWXE1rQ== "@storybook/react-vite@^9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-9.1.10.tgz#a1702ef103e811bcb864669c9526e1a3deea86e4" - integrity sha512-k0wWlfoWakoHL3NZ1+38oxRH3WYyprFFX+WUb/4W8axrvpKogvdnxKCul/YB1HH5FcTagIfguamsPjKwB1ZkJg== + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-9.1.16.tgz#8672b6da54accdfd3dc329bd82ec2bcf1cfdf9e8" + integrity sha512-WRKSq0XfQ/Qx66aKisQCfa/1UKwN9HjVbY6xrmsX7kI5zBdITxIcKInq6PWoPv91SJD7+Et956yX+F86R1aEXw== dependencies: "@joshwooding/vite-plugin-react-docgen-typescript" "0.6.1" "@rollup/pluginutils" "^5.0.2" - "@storybook/builder-vite" "9.1.10" - "@storybook/react" "9.1.10" + "@storybook/builder-vite" "9.1.16" + "@storybook/react" "9.1.16" find-up "^7.0.0" magic-string "^0.30.0" react-docgen "^8.0.0" resolve "^1.22.8" tsconfig-paths "^4.2.0" -"@storybook/react@9.1.10": - version "9.1.10" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-9.1.10.tgz#39ffc1a0c6f91f6510550365409ee2178fc0cd65" - integrity sha512-flG3Gn3EHZnxn92C7vrA2U4aGqpOKdf85fL43+J/2k9HF5AIyOFGlcv4LGVyKZ3LOAow/nGBVSXL9961h+ICRA== +"@storybook/react@9.1.16": + version "9.1.16" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-9.1.16.tgz#38f8b4bdb7060575171183af2737198fe03aa2b6" + integrity sha512-M/SkHJJdtiGpodBJq9+DYmSkEOD+VqlPxKI+FvbHESTNs//1IgqFIjEWetd8quhd9oj/gvo4ICBAPu+UmD6M9w== dependencies: "@storybook/global" "^5.0.0" - "@storybook/react-dom-shim" "9.1.10" + "@storybook/react-dom-shim" "9.1.16" "@stylistic/eslint-plugin@^5.0.0": version "5.5.0" @@ -3358,12 +3335,12 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.7.tgz#968cdc2366ec3da159f61166428ee40f370e56c2" - integrity sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng== +"@types/babel__traverse@*", "@types/babel__traverse@^7.20.7": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.28.0.tgz#07d713d6cce0d265c9849db0cbe62d3f61f36f74" + integrity sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== dependencies: - "@babel/types" "^7.20.7" + "@babel/types" "^7.28.2" "@types/babel__traverse@^7.0.6": version "7.20.6" @@ -3372,13 +3349,6 @@ dependencies: "@babel/types" "^7.20.7" -"@types/babel__traverse@^7.20.7": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.28.0.tgz#07d713d6cce0d265c9849db0cbe62d3f61f36f74" - integrity sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== - dependencies: - "@babel/types" "^7.28.2" - "@types/body-parser@*": version "1.19.6" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" @@ -3395,11 +3365,12 @@ "@types/node" "*" "@types/chai@^5.2.2": - version "5.2.2" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.2.2.tgz#6f14cea18180ffc4416bc0fd12be05fdd73bdd6b" - integrity sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg== + version "5.2.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.2.3.tgz#8e9cd9e1c3581fa6b341a5aed5588eb285be0b4a" + integrity sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== dependencies: "@types/deep-eql" "*" + assertion-error "^2.0.1" "@types/commonmark@^0.27.4": version "0.27.10" @@ -4107,9 +4078,8 @@ classnames "^2.5.1" vaul "^1.0.0" -"@vector-im/matrix-wysiwyg-wasm@link:../../../.cache/yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm": +"@vector-im/matrix-wysiwyg-wasm@link:../../Library/Caches/Yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm": version "0.0.0" - uid "" "@vector-im/matrix-wysiwyg@2.40.0": version "2.40.0" @@ -4960,9 +4930,9 @@ base64-js@^1.3.1: integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== baseline-browser-mapping@^2.8.19: - version "2.8.20" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz#6766cf270f3668d20b6712b9c54cc911b87da714" - integrity sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ== + version "2.8.21" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.21.tgz#2f9cccde871bfa4aec9dbf92d0ee746e4f1892e4" + integrity sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q== batch@0.6.1: version "0.6.1" @@ -6376,9 +6346,9 @@ ejs@^3.1.8: jake "^10.8.5" electron-to-chromium@^1.5.238: - version "1.5.243" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.243.tgz#b13b4a046f49f46574d643d4e2ec2ea33ce8cfe7" - integrity sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g== + version "1.5.244" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.244.tgz#b9b61e3d24ef4203489951468614f2a360763820" + integrity sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw== emittery@^0.13.1: version "0.13.1" @@ -9605,9 +9575,9 @@ magic-string@0.30.8: "@jridgewell/sourcemap-codec" "^1.4.15" magic-string@^0.30.0, magic-string@^0.30.17: - version "0.30.19" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.19.tgz#cebe9f104e565602e5d2098c5f2e79a77cc86da9" - integrity sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw== + version "0.30.21" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== dependencies: "@jridgewell/sourcemap-codec" "^1.5.5" @@ -10082,9 +10052,9 @@ node-int64@^0.4.0: integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-releases@^2.0.26: - version "2.0.26" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.26.tgz#fdfa272f2718a1309489d18aef4ef5ba7f5dfb52" - integrity sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA== + version "2.0.27" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" + integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== normalize-package-data@^2.5.0: version "2.5.0" @@ -11954,16 +11924,7 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.20.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.22.1, resolve@^1.22.4, resolve@^1.22.8: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== - dependencies: - is-core-module "^2.16.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.22.10: +resolve@^1.22.1, resolve@^1.22.10, resolve@^1.22.8: version "1.22.11" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== @@ -11972,6 +11933,15 @@ resolve@^1.22.10: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.4: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.5: version "2.0.0-next.5" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" @@ -12612,9 +12582,9 @@ stop-iteration-iterator@^1.1.0: internal-slot "^1.1.0" storybook@^9.1.10: - version "9.1.10" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-9.1.10.tgz#c06cfd8b77522cf17bd22d82d1e83af96362a78e" - integrity sha512-4+U7gF9hMpGilQmdVJwQaVZZEkD7XwC4ZDmBa51mobaPYelELEMoMfNM2hLyvB2x12gk1IJui1DnwOE4t+MXhw== + version "9.1.16" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-9.1.16.tgz#fe92ac733781aa919104ecf090fd6615deaa6c69" + integrity sha512-339U14K6l46EFyRvaPS2ZlL7v7Pb+LlcXT8KAETrGPxq8v1sAjj2HAOB6zrlAK3M+0+ricssfAwsLCwt7Eg8TQ== dependencies: "@storybook/global" "^5.0.0" "@testing-library/jest-dom" "^6.6.3" From 73fa27887d3073e0f5d01ab646397bd09f5d5cdd Mon Sep 17 00:00:00 2001 From: Skye Elliot Date: Fri, 31 Oct 2025 12:20:02 +0000 Subject: [PATCH 14/28] Move room name, avatar, and topic to IOpts. (#30981) --- src/components/structures/SpaceRoomView.tsx | 8 +- .../views/dialogs/CreateRoomDialog.tsx | 4 +- src/createRoom.ts | 22 ++- .../structures/SpaceRoomView-test.tsx | 179 +++++++++++++++++- .../views/dialogs/CreateRoomDialog-test.tsx | 160 +++++++++++++++- .../CreateRoomDialog-test.tsx.snap | 28 +-- test/unit-tests/createRoom-test.ts | 11 ++ 7 files changed, 380 insertions(+), 32 deletions(-) diff --git a/src/components/structures/SpaceRoomView.tsx b/src/components/structures/SpaceRoomView.tsx index c2aa7f2f10..f9210ec96b 100644 --- a/src/components/structures/SpaceRoomView.tsx +++ b/src/components/structures/SpaceRoomView.tsx @@ -329,8 +329,8 @@ const SpaceSetupFirstRooms: React.FC<{ return createRoom(space.client, { createOpts: { preset: isPublic ? Preset.PublicChat : Preset.PrivateChat, - name, }, + name, spinner: false, encryption: false, andView: false, @@ -423,7 +423,7 @@ const SpaceSetupPublicShare: React.FC = ({

    {_t("create_space|share_heading", { - name: justCreatedOpts?.createOpts?.name || space.name, + name: justCreatedOpts?.name || space.name, })}

    {_t("create_space|share_description")}
    @@ -449,7 +449,7 @@ const SpaceSetupPrivateScope: React.FC<{

    {_t("create_space|private_personal_heading")}

    {_t("create_space|private_personal_description", { - name: justCreatedOpts?.createOpts?.name || space.name, + name: justCreatedOpts?.name || space.name, })}
    @@ -686,7 +686,7 @@ export default class SpaceRoomView extends React.PureComponent { diff --git a/src/components/views/dialogs/CreateRoomDialog.tsx b/src/components/views/dialogs/CreateRoomDialog.tsx index d3771d102d..821182aff0 100644 --- a/src/components/views/dialogs/CreateRoomDialog.tsx +++ b/src/components/views/dialogs/CreateRoomDialog.tsx @@ -126,7 +126,7 @@ export default class CreateRoomDialog extends React.Component { const opts: IOpts = {}; const createOpts: IOpts["createOpts"] = (opts.createOpts = {}); opts.roomType = this.props.type; - createOpts.name = this.state.name; + opts.name = this.state.name; if (this.state.joinRule === JoinRule.Public) { createOpts.visibility = Visibility.Public; @@ -139,7 +139,7 @@ export default class CreateRoomDialog extends React.Component { } if (this.state.topic) { - createOpts.topic = this.state.topic; + opts.topic = this.state.topic; } if (this.state.noFederate) { createOpts.creation_content = { "m.federate": false }; diff --git a/src/createRoom.ts b/src/createRoom.ts index c3bc1e6b1a..8e39260921 100644 --- a/src/createRoom.ts +++ b/src/createRoom.ts @@ -49,7 +49,19 @@ import { ElementCallEventType, ElementCallMemberEventType } from "./call-types"; export interface IOpts { dmUserId?: string; - createOpts?: ICreateRoomOpts; + /** + * The name of the room to be created. + */ + name?: string; + /** + * The topic for the room. + */ + topic?: string; + /** + * Additional options to pass to the room creation API. + * Note: "name", "topic", and "avatar" should be set via their respective properties in IOpts. + */ + createOpts?: Omit; spinner?: boolean; guestAccess?: boolean; encryption?: boolean; @@ -251,6 +263,14 @@ export default async function createRoom(client: MatrixClient, opts: IOpts): Pro }); } + if (opts.name) { + createOpts.name = opts.name; + } + + if (opts.topic) { + createOpts.topic = opts.topic; + } + if (opts.avatar) { let url = opts.avatar; if (opts.avatar instanceof File) { diff --git a/test/unit-tests/components/structures/SpaceRoomView-test.tsx b/test/unit-tests/components/structures/SpaceRoomView-test.tsx index f181b90576..6610587a50 100644 --- a/test/unit-tests/components/structures/SpaceRoomView-test.tsx +++ b/test/unit-tests/components/structures/SpaceRoomView-test.tsx @@ -7,8 +7,8 @@ Please see LICENSE files in the repository root for full details. import React from "react"; import { mocked, type MockedObject } from "jest-mock"; -import { type MatrixClient, MatrixEvent, Room } from "matrix-js-sdk/src/matrix"; -import { render, cleanup, screen, fireEvent } from "jest-matrix-react"; +import { type MatrixClient, MatrixEvent, Preset, Room } from "matrix-js-sdk/src/matrix"; +import { render, cleanup, screen, fireEvent, waitFor, act } from "jest-matrix-react"; import { stubClient, mockPlatformPeg, unmockPlatformPeg, withClientContextRenderOptions } from "../../../test-utils"; import { RightPanelPhases } from "../../../../src/stores/right-panel/RightPanelStorePhases"; @@ -17,6 +17,8 @@ import ResizeNotifier from "../../../../src/utils/ResizeNotifier.ts"; import { RoomPermalinkCreator } from "../../../../src/utils/permalinks/Permalinks.ts"; import RightPanelStore from "../../../../src/stores/right-panel/RightPanelStore.ts"; import DMRoomMap from "../../../../src/utils/DMRoomMap.ts"; +import { type IOpts } from "../../../../src/createRoom.ts"; +import SpaceStore from "../../../../src/stores/spaces/SpaceStore.ts"; describe("SpaceRoomView", () => { let cli: MockedObject; @@ -86,7 +88,7 @@ describe("SpaceRoomView", () => { cleanup(); }); - const renderSpaceRoomView = async (): Promise> => { + const renderSpaceRoomView = async (justCreatedOpts?: IOpts): Promise> => { const resizeNotifier = new ResizeNotifier(); const permalinkCreator = new RoomPermalinkCreator(space); @@ -97,6 +99,7 @@ describe("SpaceRoomView", () => { permalinkCreator={permalinkCreator} onJoinButtonClicked={jest.fn()} onRejectButtonClicked={jest.fn()} + justCreatedOpts={justCreatedOpts} />, withClientContextRenderOptions(cli), ); @@ -113,5 +116,175 @@ describe("SpaceRoomView", () => { expect(spy).toHaveBeenCalledWith({ phase: RightPanelPhases.MemberList }); }); + + it("shows SpaceLandingAddButton context menu when Add button is clicked", async () => { + await renderSpaceRoomView(); + await expect(screen.findByText("Welcome to")).resolves.toBeVisible(); + + const addButton = screen.getByRole("button", { name: /add/i }); + fireEvent.click(addButton); + + expect(await screen.findByText(/new room/i)).toBeInTheDocument(); + expect(screen.getByText(/add existing room/i)).toBeInTheDocument(); + }); + }); + + describe("Spaces: creating a new community space", () => { + it("asks what topics you want to discuss, creates rooms for them and offers to share", async () => { + cli.createRoom.mockResolvedValueOnce({ room_id: "room1" }).mockResolvedValueOnce({ room_id: "room2" }); + SpaceStore.instance.addRoomToSpace = jest.fn(); + + // Given we are creating a space + const view = await renderSpaceRoomView({ + createOpts: { preset: Preset.PublicChat }, + name: "My MySpace Space", + }); + + // Then we are asked what topics we want + expect( + view.getByRole("heading", { name: "What are some things you want to discuss in My MySpace Space?" }), + ).toBeInTheDocument(); + + // And some defaults are suggested + expect(view.getByPlaceholderText(/general/i)).toBeInTheDocument(); + expect(view.getByPlaceholderText(/random/i)).toBeInTheDocument(); + expect(view.getByPlaceholderText(/support/i)).toBeInTheDocument(); + + // When we enter some room names + const input1 = view.getAllByRole("textbox")[0]; + const input2 = view.getAllByRole("textbox")[1]; + fireEvent.change(input1, { target: { value: "Room 1" } }); + fireEvent.change(input2, { target: { value: "Room 2" } }); + + // And click "Continue" + const button = view.getByRole("button", { name: "Continue" }); + fireEvent.click(button); + + // Then we create 2 rooms + await waitFor(() => { + expect(cli.createRoom).toHaveBeenCalledTimes(2); + }); + + // And offer the user to share this space + await waitFor(() => + expect(view.getByRole("heading", { name: "Share My MySpace Space" })).toBeInTheDocument(), + ); + expect(view.getByRole("button", { name: /Share invite link/ })).toBeInTheDocument(); + + // And allow them to continue to the first room + expect(view.getByRole("button", { name: "Go to my first room" })).toBeInTheDocument(); + }); + + it("shows 'Skip for now' when all fields are empty, 'Continue' when any field is filled", async () => { + // Given we are creating a space + const view = await renderSpaceRoomView({ + createOpts: { preset: Preset.PublicChat }, + }); + + // When we clear all the topics + view.getAllByRole("textbox").forEach((input) => fireEvent.change(input, { target: { value: "" } })); + + // Then the button reads "Skip for now" + expect(view.getByRole("button", { name: "Skip for now" })).toBeVisible(); + + // But when we enter a topic + fireEvent.change(view.getAllByRole("textbox")[0], { target: { value: "Room" } }); + + // Then the button says "Continue" + expect(view.getByRole("button", { name: "Continue" })).toBeVisible(); + }); + + it("shows error message if room creation fails", async () => { + // Given we are creating a space + const view = await renderSpaceRoomView({ + createOpts: { preset: Preset.PublicChat }, + }); + + // And when we create a room it will fail + cli.createRoom.mockRejectedValue(new Error("fail")); + + // When we create the space + fireEvent.change(view.getAllByRole("textbox")[0], { target: { value: "Room A" } }); + fireEvent.click(view.getByRole("button", { name: "Continue" })); + + // Then we display an error message because it failed + await waitFor(() => { + expect( + view.getByText((content) => content.toLowerCase().includes("failed to create initial space rooms")), + ).toBeInTheDocument(); + }); + }); + + it("disables button and shows 'Creating rooms' while busy", async () => { + // Given we are creating a space + const view = await renderSpaceRoomView({ + createOpts: { preset: Preset.PublicChat }, + }); + + // And creating a room will be slow + cli.createRoom.mockImplementation( + () => + new Promise(() => { + // This promise never resolves + }), + ); + + // When we create the space + fireEvent.change(view.getAllByRole("textbox")[0], { target: { value: "Room A" } }); + fireEvent.click(view.getByRole("button", { name: "Continue" })); + + // Then the "Creating rooms..." message is displayed + const button = view.getByRole("button"); + expect(button).toBeDisabled(); + expect(button).toHaveValue("Creating rooms…"); // Note the ellipsis + }); + }); + + describe("Spaces: creating a new private space", () => { + it("creates rooms inside a private space for a team", async () => { + cli.createRoom.mockResolvedValueOnce({ room_id: "room1" }).mockResolvedValueOnce({ room_id: "room2" }); + SpaceStore.instance.addRoomToSpace = jest.fn(); + + // When I create a private space + const view = await renderSpaceRoomView({ + createOpts: { preset: Preset.PrivateChat }, + name: "Private space", + topic: "a private space for team A", + }); + + // Then I am asked whether it's individual or team + expect(view.getByRole("heading", { name: "Who are you working with?" })).toBeInTheDocument(); + + // And when I say team + act(() => + view + .getByRole("button", { + name: "Me and my teammates A private space for you and your teammates", + }) + .click(), + ); + + // Then I am asked what rooms to create + expect(view.getByRole("heading", { name: "What projects are your team working on?" })).toBeInTheDocument(); + + expect(view.getByPlaceholderText(/general/i)).toBeInTheDocument(); + expect(view.getByPlaceholderText(/random/i)).toBeInTheDocument(); + expect(view.getByPlaceholderText(/support/i)).toBeInTheDocument(); + + // And when I enter some room names + const input1 = view.getAllByRole("textbox")[0]; + const input2 = view.getAllByRole("textbox")[1]; + fireEvent.change(input1, { target: { value: "Room 1" } }); + fireEvent.change(input2, { target: { value: "Room 2" } }); + + // And click "Continue" + const button = view.getByRole("button", { name: "Continue" }); + fireEvent.click(button); + + // Then the rooms are created + await waitFor(() => { + expect(cli.createRoom).toHaveBeenCalledTimes(2); + }); + }); }); }); diff --git a/test/unit-tests/components/views/dialogs/CreateRoomDialog-test.tsx b/test/unit-tests/components/views/dialogs/CreateRoomDialog-test.tsx index 5fa0251129..6ac423570f 100644 --- a/test/unit-tests/components/views/dialogs/CreateRoomDialog-test.tsx +++ b/test/unit-tests/components/views/dialogs/CreateRoomDialog-test.tsx @@ -8,10 +8,10 @@ Please see LICENSE files in the repository root for full details. import React from "react"; import { fireEvent, render, screen, within } from "jest-matrix-react"; -import { JoinRule, MatrixError, Preset, Visibility } from "matrix-js-sdk/src/matrix"; +import { type Room, JoinRule, MatrixError, Preset, Visibility } from "matrix-js-sdk/src/matrix"; import CreateRoomDialog from "../../../../../src/components/views/dialogs/CreateRoomDialog"; -import { flushPromises, getMockClientWithEventEmitter, mockClientMethodsUser } from "../../../../test-utils"; +import { flushPromises, getMockClientWithEventEmitter, mkSpace, mockClientMethodsUser } from "../../../../test-utils"; import SettingsStore from "../../../../../src/settings/SettingsStore"; import { UIFeature } from "../../../../../src/settings/UIFeature"; @@ -58,6 +58,55 @@ describe("", () => { expect(screen.getByLabelText("Name")).toHaveDisplayValue(defaultName); }); + it("should include topic in room creation options", async () => { + const onFinished = jest.fn(); + render(); + await flushPromises(); + + const topic = "This is a test topic"; + + // Set room name and topic. + fireEvent.change(screen.getByLabelText("Name"), { target: { value: "Room with topic" } }); + fireEvent.change(screen.getByLabelText("Topic (optional)"), { target: { value: topic } }); + + // Create the room. + fireEvent.click(screen.getByText("Create room")); + await flushPromises(); + + expect(onFinished).toHaveBeenCalledWith( + true, + expect.objectContaining({ + name: "Room with topic", + topic, + }), + ); + }); + + it("should include no federate option in room creation options when enabled", async () => { + const onFinished = jest.fn(); + render(); + await flushPromises(); + + // Set room name, and disable federation. + fireEvent.change(screen.getByLabelText("Name"), { target: { value: "NoFederate Room" } }); + fireEvent.click(screen.getByLabelText("Block anyone not part of server.org from ever joining this room.")); + + fireEvent.click(screen.getByText("Create room")); + await flushPromises(); + + expect(onFinished).toHaveBeenCalledWith( + true, + expect.objectContaining({ + name: "NoFederate Room", + createOpts: expect.objectContaining({ + creation_content: expect.objectContaining({ + "m.federate": false, + }), + }), + }), + ); + }); + describe("for a private room", () => { // default behaviour is a private room @@ -198,9 +247,8 @@ describe("", () => { await flushPromises(); expect(onFinished).toHaveBeenCalledWith(true, { - createOpts: { - name: roomName, - }, + createOpts: {}, + name: roomName, encryption: true, parentSpace: undefined, roomType: undefined, @@ -259,9 +307,9 @@ describe("", () => { await flushPromises(); expect(onFinished).toHaveBeenCalledWith(true, { createOpts: { - name: roomName, visibility: Visibility.Private, }, + name: roomName, encryption: true, joinRule: JoinRule.Knock, parentSpace: undefined, @@ -277,9 +325,9 @@ describe("", () => { await flushPromises(); expect(onFinished).toHaveBeenCalledWith(true, { createOpts: { - name: roomName, visibility: Visibility.Public, }, + name: roomName, encryption: true, joinRule: JoinRule.Knock, parentSpace: undefined, @@ -349,15 +397,111 @@ describe("", () => { expect(onFinished).toHaveBeenCalledWith(true, { createOpts: { - name: roomName, preset: Preset.PublicChat, room_alias_name: roomAlias, visibility: Visibility.Public, }, + name: roomName, guestAccess: false, parentSpace: undefined, roomType: undefined, }); }); }); + + describe("for a room in a space", () => { + let parentSpace: Room; + beforeEach(() => { + parentSpace = mkSpace(mockClient, "!space:server") as unknown as Room; + }); + + it("should create a room with restricted join rule when selected", async () => { + const onFinished = jest.fn(); + render(); + await flushPromises(); + + // Set room name and visibility. + fireEvent.change(screen.getByLabelText("Name"), { target: { value: "Restricted Room" } }); + fireEvent.click(screen.getByLabelText("Room visibility")); + fireEvent.click(screen.getByRole("option", { name: "Visible to space members" })); + + fireEvent.click(screen.getByText("Create room")); + await flushPromises(); + + expect(onFinished).toHaveBeenCalledWith( + true, + expect.objectContaining({ + name: "Restricted Room", + joinRule: JoinRule.Restricted, + }), + ); + }); + + it("should create a room with public join rule when selected", async () => { + const onFinished = jest.fn(); + render(); + await flushPromises(); + + // Set room name and visibility. Rooms in spaces also need an address. + fireEvent.change(screen.getByLabelText("Name"), { target: { value: "Public Room" } }); + fireEvent.click(screen.getByLabelText("Room visibility")); + fireEvent.click(screen.getByRole("option", { name: "Public room" })); + fireEvent.change(screen.getByLabelText("Room address"), { target: { value: "testroom" } }); + + // Create the room. + fireEvent.click(screen.getByText("Create room")); + await flushPromises(); + + expect(onFinished).toHaveBeenCalledWith( + true, + expect.objectContaining({ + name: "Public Room", + createOpts: expect.objectContaining({ + room_alias_name: "testroom", + visibility: Visibility.Public, + preset: Preset.PublicChat, + }), + guestAccess: false, + roomType: undefined, + }), + ); + }); + }); + + describe("keyboard shortcuts", () => { + it("should submit the form when Enter is pressed", async () => { + const onFinished = jest.fn(); + render(); + await flushPromises(); + + // Simulate pressing the Enter key. + fireEvent.change(screen.getByLabelText("Name"), { target: { value: "Keyboard Room" } }); + fireEvent.keyDown(screen.getByLabelText("Name"), { key: "Enter", code: "Enter", charCode: 13 }); + + await flushPromises(); + + expect(onFinished).toHaveBeenCalledWith( + true, + expect.objectContaining({ + name: "Keyboard Room", + }), + ); + }); + + it("should cancel the dialog when Escape is pressed", async () => { + const onFinished = jest.fn(); + render(); + await flushPromises(); + + // Simulate pressing the Escape key. + fireEvent.keyDown(screen.getByLabelText("Name"), { key: "Escape", code: "Escape", charCode: 27 }); + + await flushPromises(); + + // BaseDialog passes no arguments, but DialogButtons pass false - might not be desirable? + expect(onFinished).toHaveBeenCalled(); + const callArgs = onFinished.mock.calls[0]; + expect(callArgs.length === 0 || callArgs[0] === false).toBe(true); + }); + }); }); diff --git a/test/unit-tests/components/views/dialogs/__snapshots__/CreateRoomDialog-test.tsx.snap b/test/unit-tests/components/views/dialogs/__snapshots__/CreateRoomDialog-test.tsx.snap index 1873ac6e8f..486ecce500 100644 --- a/test/unit-tests/components/views/dialogs/__snapshots__/CreateRoomDialog-test.tsx.snap +++ b/test/unit-tests/components/views/dialogs/__snapshots__/CreateRoomDialog-test.tsx.snap @@ -32,14 +32,14 @@ exports[` for a private room should create a private room 1` class="mx_Field mx_Field_input mx_CreateRoomDialog_name" > @@ -48,14 +48,14 @@ exports[` for a private room should create a private room 1` class="mx_Field mx_Field_input mx_CreateRoomDialog_topic" > @@ -98,7 +98,7 @@ exports[` for a private room should create a private room 1` class="mx_SettingsFlag_label" >
    Enable end-to-end encryption
    @@ -106,7 +106,7 @@ exports[` for a private room should create a private room 1`
    for a private room should create a private room 1` class="mx_SettingsFlag_label" >
    Block anyone not part of server.org from ever joining this room.
    @@ -142,7 +142,7 @@ exports[` for a private room should create a private room 1`
    for a private room should render not the advanced class="mx_Field mx_Field_input mx_CreateRoomDialog_name" > @@ -242,14 +242,14 @@ exports[` for a private room should render not the advanced class="mx_Field mx_Field_input mx_CreateRoomDialog_topic" > @@ -292,7 +292,7 @@ exports[` for a private room should render not the advanced class="mx_SettingsFlag_label" >
    Enable end-to-end encryption
    @@ -300,7 +300,7 @@ exports[` for a private room should render not the advanced
    { }); }); + it("creates a public room with a topic", async () => { + await createRoom(client, { createOpts: { preset: Preset.PublicChat }, topic: "My topic" }); + + expect(client.createRoom).toHaveBeenCalledWith({ + preset: "public_chat", + visibility: "private", + topic: "My topic", + initial_state: [{ state_key: "", type: "m.room.guest_access", content: { guest_access: "can_join" } }], + }); + }); + it("creates a public room in a space", async () => { const roomId = await createRoom(client, { roomType: RoomType.Space }); const parentSpace = client.getRoom(roomId!)!; From 23f372ca08e93d90662df1851265aa3ec6cf23ef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 12:52:40 +0000 Subject: [PATCH 15/28] Update dependency eslint-plugin-react-hooks to v7.0.1 (#31103) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2529ec4d2b..9c5cab1c20 100644 --- a/yarn.lock +++ b/yarn.lock @@ -295,7 +295,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.4", "@babel/parser@^7.28.5": +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.4", "@babel/parser@^7.27.2", "@babel/parser@^7.28.4", "@babel/parser@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== @@ -309,7 +309,7 @@ dependencies: "@babel/types" "^7.25.8" -"@babel/parser@^7.18.5", "@babel/parser@^7.24.4": +"@babel/parser@^7.18.5": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== @@ -6823,15 +6823,15 @@ eslint-plugin-react-compiler@^19.0.0-beta-df7b47d-20241124: zod-validation-error "^3.0.3" eslint-plugin-react-hooks@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.0.tgz#a255a1db826ea42b0e37f160430e4bd0b4b659f9" - integrity sha512-fNXaOwvKwq2+pXiRpXc825Vd63+KM4DLL40Rtlycb8m7fYpp6efrTp1sa6ZbP/Ap58K2bEKFXRmhURE+CJAQWw== + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz#66e258db58ece50723ef20cc159f8aa908219169" + integrity sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA== dependencies: "@babel/core" "^7.24.4" "@babel/parser" "^7.24.4" hermes-parser "^0.25.1" - zod "^3.22.4 || ^4.0.0" - zod-validation-error "^3.0.3 || ^4.0.0" + zod "^3.25.0 || ^4.0.0" + zod-validation-error "^3.5.0 || ^4.0.0" eslint-plugin-react@^7.28.0: version "7.37.5" @@ -14204,7 +14204,7 @@ zod-validation-error@^3.0.3: resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-3.5.3.tgz#85ba33290200d8db9f043621e284f40dddefb7e5" integrity sha512-OT5Y8lbUadqVZCsnyFaTQ4/O2mys4tj7PqhdbBCp7McPwvIEKfPtdA6QfPeFQK2/Rz5LgwmAXRJTugBNBi0btw== -"zod-validation-error@^3.0.3 || ^4.0.0": +"zod-validation-error@^3.5.0 || ^4.0.0": version "4.0.2" resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz#bc605eba49ce0fcd598c127fee1c236be3f22918" integrity sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ== @@ -14214,7 +14214,7 @@ zod@^3.22.4: resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== -"zod@^3.22.4 || ^4.0.0", zod@^4.1.11: +"zod@^3.25.0 || ^4.0.0", zod@^4.1.11: version "4.1.12" resolved "https://registry.yarnpkg.com/zod/-/zod-4.1.12.tgz#64f1ea53d00eab91853195653b5af9eee68970f0" integrity sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ== From e0a94a05ead26e61c48911adf4122bb628d9cdc3 Mon Sep 17 00:00:00 2001 From: David Langley Date: Fri, 31 Oct 2025 13:54:26 +0000 Subject: [PATCH 16/28] Add FocusLock to emoji picker (#31146) * Add focus lock to emoji picker and e2e test. * Remove direct use of FocusLock in favour of the ContextMenu prop. * Apply returnFocus for ContextMenu focusLocks * Remove import --- playwright/e2e/composer/CIDER.spec.ts | 35 +++++++++++++++++++ src/components/structures/ContextMenu.tsx | 2 +- .../context_menus/MessageContextMenu.tsx | 2 +- .../views/messages/MessageActionBar.tsx | 2 +- .../views/messages/ReactionsRow.tsx | 2 +- src/components/views/rooms/EmojiButton.tsx | 2 +- 6 files changed, 40 insertions(+), 5 deletions(-) diff --git a/playwright/e2e/composer/CIDER.spec.ts b/playwright/e2e/composer/CIDER.spec.ts index af512b9c09..af6843f89a 100644 --- a/playwright/e2e/composer/CIDER.spec.ts +++ b/playwright/e2e/composer/CIDER.spec.ts @@ -92,6 +92,41 @@ test.describe("Composer", () => { }); }); + test("should have focus lock in emoji picker", async ({ page, app }) => { + const emojiButton = app.getComposer(false).getByRole("button", { name: "Emoji" }); + + // Open emoji picker by clicking the button + await emojiButton.click(); + + // Wait for emoji picker to be visible + const emojiPicker = page.getByTestId("mx_EmojiPicker"); + await expect(emojiPicker).toBeVisible(); + + // Get initial focused element (should be search input) + const searchInput = emojiPicker.getByRole("textbox", { name: "Search" }); + await expect(searchInput).toBeFocused(); + + // Try to tab multiple times - focus should stay within emoji picker + await page.keyboard.press("Tab"); + await page.keyboard.press("Tab"); + await page.keyboard.press("Tab"); + await page.keyboard.press("Tab"); + await page.keyboard.press("Tab"); + + // Verify we're still within the emoji picker (not back to composer) + const focusedElement = await page.evaluate(() => document.activeElement?.closest(".mx_EmojiPicker")); + expect(focusedElement).not.toBeNull(); + + // Close with Escape key + await page.keyboard.press("Escape"); + + // Verify emoji picker is closed + await expect(emojiPicker).not.toBeVisible(); + + // Verify focus returns to emoji button + await expect(emojiButton).toBeFocused(); + }); + test.describe("when Control+Enter is required to send", () => { test.beforeEach(async ({ app }) => { await app.settings.setValue("MessageComposerInput.ctrlEnterToSend", null, SettingLevel.ACCOUNT, true); diff --git a/src/components/structures/ContextMenu.tsx b/src/components/structures/ContextMenu.tsx index eebd432e10..03538a21bf 100644 --- a/src/components/structures/ContextMenu.tsx +++ b/src/components/structures/ContextMenu.tsx @@ -405,7 +405,7 @@ export default class ContextMenu extends React.PureComponent{body}; + body = {body}; } // filter props that are invalid for DOM elements diff --git a/src/components/views/context_menus/MessageContextMenu.tsx b/src/components/views/context_menus/MessageContextMenu.tsx index 8d6f6cc6eb..39139be0db 100644 --- a/src/components/views/context_menus/MessageContextMenu.tsx +++ b/src/components/views/context_menus/MessageContextMenu.tsx @@ -735,7 +735,7 @@ export default class MessageContextMenu extends React.Component if (this.state.reactionPickerDisplayed) { const buttonRect = (this.reactButtonRef.current as HTMLElement)?.getBoundingClientRect(); reactionPicker = ( - + ); diff --git a/src/components/views/messages/MessageActionBar.tsx b/src/components/views/messages/MessageActionBar.tsx index aa3a5efe56..528e7f1abf 100644 --- a/src/components/views/messages/MessageActionBar.tsx +++ b/src/components/views/messages/MessageActionBar.tsx @@ -156,7 +156,7 @@ const ReactButton: React.FC = ({ mxEvent, reactions, onFocusC if (menuDisplayed && buttonRef.current) { const buttonRect = buttonRef.current.getBoundingClientRect(); contextMenu = ( - + ); diff --git a/src/components/views/messages/ReactionsRow.tsx b/src/components/views/messages/ReactionsRow.tsx index 0c5dbdd1e2..32f37f4c24 100644 --- a/src/components/views/messages/ReactionsRow.tsx +++ b/src/components/views/messages/ReactionsRow.tsx @@ -34,7 +34,7 @@ const ReactButton: React.FC = ({ mxEvent, reactions }) => { if (menuDisplayed && button.current) { const buttonRect = button.current.getBoundingClientRect(); contextMenu = ( - + ); diff --git a/src/components/views/rooms/EmojiButton.tsx b/src/components/views/rooms/EmojiButton.tsx index 9da01ae92f..7eff845a9c 100644 --- a/src/components/views/rooms/EmojiButton.tsx +++ b/src/components/views/rooms/EmojiButton.tsx @@ -34,7 +34,7 @@ export function EmojiButton({ addEmoji, menuPosition, className }: IEmojiButtonP }; contextMenu = ( - + ); From 017aee9a8f853aab34d4bb0983c4da093bba63be Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 31 Oct 2025 15:20:57 +0000 Subject: [PATCH 17/28] Fix emoji picker highlight missing when not active element (#31148) Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- res/css/views/emojipicker/_EmojiPicker.pcss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/emojipicker/_EmojiPicker.pcss b/res/css/views/emojipicker/_EmojiPicker.pcss index c04c9d9bfa..f6bca61ff5 100644 --- a/res/css/views/emojipicker/_EmojiPicker.pcss +++ b/res/css/views/emojipicker/_EmojiPicker.pcss @@ -182,7 +182,7 @@ Please see LICENSE files in the repository root for full details. } } -.mx_EmojiPicker_body .mx_EmojiPicker_item_wrapper[tabindex="0"] .mx_EmojiPicker_item { +.mx_EmojiPicker_body .mx_EmojiPicker_item_wrapper [tabindex="0"] .mx_EmojiPicker_item { background-color: $focus-bg-color; } From 36ccc1ae9a2ecfe2dd5a23c0560907a38e77c533 Mon Sep 17 00:00:00 2001 From: David Langley Date: Fri, 31 Oct 2025 17:10:02 +0000 Subject: [PATCH 18/28] Fix screen readers not indicating the emoji picker search field is focused. (#31128) * Only set active descendant when the user starts typing. * Fix jest tests. * Remove aria-hidden It was failing code quality checks and it actually wasn't addressing the issue. * Only show highlight on arrow key navigation or updating the search query. * Update screenshots * Enter should not select an emoji if it is not highlighted. * On clearing a query and using arrow kets again the highlighted emoji should be reset to the first. * Update selector in picker tests --- .../CIDER.spec.ts/emoji-picker-linux.png | Bin 42235 -> 41790 bytes .../emoji-picker-small-linux.png | Bin 26102 -> 25656 bytes res/css/views/emojipicker/_EmojiPicker.pcss | 2 +- .../views/emojipicker/EmojiPicker.tsx | 34 ++++- src/components/views/emojipicker/Search.tsx | 4 +- .../views/emojipicker/EmojiPicker-test.tsx | 116 +++++++++++++++++- 6 files changed, 148 insertions(+), 8 deletions(-) diff --git a/playwright/snapshots/composer/CIDER.spec.ts/emoji-picker-linux.png b/playwright/snapshots/composer/CIDER.spec.ts/emoji-picker-linux.png index f62b471c5b9e1262f1c5e29ad8a94b92f476a822..8c0daa555c1230e94e77bffa30940755d752e228 100644 GIT binary patch literal 41790 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 literal 42235 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 z zP++)UB==}CPN6QTSjpTm@?_j9$g|~^IzX>kw@~ks_@G)8O2@IvSWi+IVRS0R5MBC> zmNHAbef^oErH72)Xx{Bh17Pt>!3r^t+#ljzJrA)GUKL?hy|ZuG_(Kd1d6CatKQhcY zgbd1@m=+KgPJllNnS)!cEguBOX@W=2`khG2u>e-uERl=ZqZxcS@n1bEjGaPa7|404 zM^G96BAQaQ?hx%)uKDlrwqgTHHqw2DoH(eXlO&IZz|Hi#N6j#KxdqY^xhew~$eBW) z8jkZs8|2__IwfC{@ii+==R)CcBm*Ag4XQrhif}T9pnw0YN>OR1R2Mw>4FA8_5>mUTSca8czPr{UY#;h-)>^K&+E;#cn$Nv3A>w?@Hka&>g}tn{5E zwwwCgm{uE#ufUXWZ4v|h+LTicg64Irs!y?ZP@6Fr4%GjoBtnsip?!xo_(Y%Q|6lRl zs01E8NQ@5*ppTBIgS!w+cDfPAuG8M8vQ-c(u!?8LuJ*=8)|Ojqp?^Eu|NSLUBCl5{ z;O#4xiq?ufXXV3OKlPON6i848POV=i*>stSHKp<;kCHm|@n(m?NoKW0H0vwa-Gqf# zmEu!$$$W+i!MK9#$@)VLXw!o{f`kXgJ6Kgp`XQ26i0Oez-63#C$`t<(5V%xs5v(5g zrBOy#V>uOT_xxa{Eh^sz=W99*=2J0+l64$IQ(8+Cj!(`SgA!%dA8|ef4=F~%VGkLS zFcf133+foOYrZggYSwuQ4{HDlzDF}M9fL>Sk(y?L*>ni7g(a(uuSHICePMba=I_i} zScw069=wx_`$Wc6- z6BwAU*dF`5`|+bc$2yB*f83t-p|~|BC+Qe?dNY9MPthTGrhGXO#&+!;+1Hg(-5A#H z{$iFftpHm1uVwY0Nn=($t|db*-}Zw);{V`vjBhXMe5;{j6#y}k9D*|Wv+;3kIDf?$ zaDDrTO1{V5A(&VY{Ns|$qb8XvDGWsv7Rg zCC^B>c9#kvS0s~I{ujN^fnsvs??R*RS1U4GRU9wtnyMvwnU!xMPf_JgULPLrulFqK z5l(|>KYd<0QZulDl~7H7xn4@M&5LwFcxz}UPO9fS(A|R%{2sYB4W%bR;(C&Y+ zI7$l}R2CA4NAPqXZX<3VA2g)5HldnGhGC7zJL1^-R zpH0I|iT00U^A*UzJ9Ijb{U(uTIWgB116iJy*1{FIN6b)het`)^mLw-$_F|XU!e@p*I3&T+h{C$G`vZ2>JzbeH{F58eRVk zNP52C4d3x7Uu0loc23|zHqW45v{6P9cZ7*zfjnn%P6T3my>Q{3I%ogk&f-5rV-D+ITo z#XY#YJCx$?RKX5Zb}cUETq&t&*!!kz1!>vPV1p5N%@dzrhNR39-FEIHmr z%(F8BpE$mv*3+OYrEVwqrx?$zwEZk)k=VfZ7@$UKN z4%7d3`MweHFGYtf_=cnPa+1ORCpKG-_7NO=*gv zPt&vA7T?kDS{^VrUb6NN2P0wuaE~rF1L?<~6I#7*sOluslgOApcA}1M2*l>RJ3qF8 z{;%xB=EK40zM3@XGL6O}*js(l)3sJ9n$;)V8g!GEAUMhlh!W=F(dA)k$C5JdiSzyD3 z+s=e!E4b^Wf@d+gcV~&_&YxK34aSnp_QqDfroMQ$p~$-wPo?Yk%T!pGRHax4>D^hM zY0T7>nNkXE9R}J5_oSw2V&U!0fkX7c!)vj$S<(QJi4xtW8!o-zK@=J|wVp|_qE0w$ z`ukm@r$c@tRc8c8(b@^W@{$CJ>@F;=c2B+X*y7FkkOG=stG%4gK*I_V0AiiADebW82azLf z#f+sYp!gi`Njr?cltIieOE(N(JjFwqofaPwRz{ygyzNkd~OU7j^l^Xl~bCs_PQN0B-DTCbT*k8W@&!E_-z~pgGEh#u zt_Q)$!CMK`!P`}+k*6aaY0Lt6o)qsh2%w{=Xvo9Zc?9okR3;;tX@@# zSalWvbtt(Ge$Rpa_D}C`S?1CO9s(1+*k<8ZI!S%;;p(z%p@uxp+%)Vbmlbts)j)k} z?T-7bXN0J1Dux9kH4L6~w$FRcWcm{3saFR(J$Q)9SWh$@7aq!eheh+L1ek#8%%sbF zZLis5)Xlu0q8jC-b#(((;iOd)o@HGK$!2xaql>6mf}(yj(@`wtx(v^BBA`k%$_;f* zahnIJ#y75nY>SC}oZ0I`B;1cXV=AWMx#ek!<{gCwSkR=aU0H-jf-Z+?U}MQIfekxcW+_}IMbq@RCsFXJRn%txFI|t45!UacK{>1eZbG7eXc@21Mw4`Z!f?-uBHPnve;f&XE%0;eXBTo~NE>r5p^D3dT3g_n(U#Kcam;E2A-0Z`}@ac7dRC6eO z-3nqD?z$@g(2rTial^2kNNOiaEhmO8h+6gBq}TvYW8?4#EZT~4oqc+?b9ZYba28?y zVMrYCW$LQXMtXv2)>`byrhvtk11yfJ`x?HtH>|pPlOvUnRyr0B3HmlMA+(PNTr*|L zeT&%>)rSbvsY5xWq2HIqQMpcwztthin_Axg!0dolA}D75f2)!IXD0ps{fi^0z#BOW z3rUmhlHvCMk=o@E|0T60$}jS&81lS6HonyWi4Mi`VE^rC1*P*4;TgIvhiMPV$XdEC z2$VgE=`TU(IE`Y`t8Bu4z%|(_1XAxr&RZBWS!z7>hd&-PlwDqOT^EC$?I$;^~Ame(;t-Pkr2+M)f5YYzV};Y|7~@E<(J08 zy4HoF`F6gc@`vvnT6q;}>Q+FDchEp+F0)P=H`!#eoK03XjJ#QfsO&C#PJ%l(&I4IF z-@{cABNyS^LfOs@n^s}T{U7GdhCNJdO+22ZP_nN9;g7M|&=$c3Se03Bb6sHVNm(6YidbjwUt zdhqD1vbfsK{E1|vS_|xmqX(5payZTF7l7dR+tao)%C=sWgTC$TNnV?4fPExBX=cjF z52dkTjU}L#cfR`C_LdQxvveYCi)Vn0%Y%*k$I&;XT%e})Y}=r81C!mVl8ShyUcTZ) z=~6pmgL-95hapJMjP*Ic-{x(CKE5{t zfP<*)P2!74UC>u@f6tx}_&AIF%Lpy6HeC8dUS6u!4L6Y#a~n=CGtm(KZ+muA+>rfc zQV3kDOsEfv64C+IaoxUdj9$et&YzelZz3AKTQ`9|=+0ES5H&uR8GU>`pP$!3TROBw zlbO+SMRL2c?{k>S-oKw4FW~N4qUpAemn(k=&!E(|b#4&>_TL!;IcGvnnk);~NLSVR zc^ZZKHLtzV8FPs0>xr_maQ8?R`C`%-m?uSZN3ofV?eSW3yuVXaIG4+SZ4oc0J25Y5 zYVLnhW>pDDtP#I<-UfXwogzSycka9eBQ)5!XDY4c1PNNLnTUHOYbk(jm{a=f^h#E6 zq2t&0T#o!XPDDJ!d&g_HbchQ!U2Cf%D%73MkN>Aq~Xl?QP| z{=-v{Ord|Z8&|NnEiW!G|2%_>!({If87c{c*cf{Z3X!yqpes^yaP)txz-UrCNq)(X zTo!Uxj8DH+02x0wWK8q3(T&1YAJsr>d?p@u}U9PMLpX z_onFVB)Ft799ct$lcAH8UL1Y+=?{g%x{wpmEZArYyAzRwmtIObW%V}bLKetto34;= zi)KAq4rw^+^8oph8vi!iTL?1gzM|M=&xNw^t_xck(JrX5efYf8OdP*5RV^FkRv}rBl!gXJ9D0>aYCP---ULg{5fo5_X|VNc-u62o$_c^J5|!g?%*!ElWZ^@&|v04 ze9ro$$Ua?g41foLYx04O@3E4H3W88f*dX+uzev(o-I}_cnCa|O1(|>MMeFF!I~~e= zj=WrvH<5^n{hp1e_3c|+20yjXA`XLNs740H-#Pi-Q~6oVsT+fmSt9m^jch+3HN&oW zSV;y*LD3JSz=yv(G|lPS7cY-v8)#nW*7$VQ0Gi!J>Y8~P0b3>xHP7U~f7mJiOq`d- z^N$D-(s3$uasvOP-ZuO=kLA&J$`t-7iy$G}B| zstJx-=0n@>>`a8eZxQZzdh}hHr>05;`>NSWj#%cuuc=4R(c44dF>Ma$C=fxLiH#ws zr+5gWSGQj#V(LRCGNzv9Lp=IncAj}tD7+fIt}bslO21;Aup(V!eO`$sjP5M>s_~Tt z6G``F`z2k%t3&NNCH#Xnplv9V=As?bJhVOpr6a=Ec14EqN@~B{`-l2RD-3XZf5&^^ z&O88+7`uJBETf1l%UdCn+i^5$wiIwEa+<94P-pyGY(2DC*#Cq8^jA{PWQZ?kZ$Bih z4qo~6Xq?``plADt%dA#s{8hsVGsAoBe_ykXn@y(!mT51vD+_hPX(0W&WD@l%pO(rX zPZ^`2d@s?S0vGz2xNlF;uX!?eBNF|co$Ldn(8{TcRCv9VmMsX9TxwxtGRrH`B?6(Dn1qKGIhy;%^*+ zAY|1lDF`V)T>*V=2ULr@N{+t;5&YU=>)ZL!em^kvm<~9m!KLU+!ggpVm6^?}<}g6FHbQAU&JT#O!JoR2LO(CE2ebLDDNjcOX` znuKE;xg%pqO~sy}%_VW}hGy#eFeE)f@^AH&8pHK=UA;4+O>JxTe1@!G{Y+&J}@v|8>nx^>&swM|lZ6h2!W z@-suy73<#$|FRQZ;TwWV#&`Pc8rbXaGr0GSevb;aW5p)Yn+PIrzg7Z-Wri?J{d*9OuhsUW|ip6LllZb4k}(Gb!0$ zVFz7&NU5ne{;WCk4ar&`Y<#{ch;8&8>;Szr4%UybCSeOx(nJfY+gPcptkO`KR0&?F zIPZMB$x~7NW}oVIwD}r{-AJk|pnQ$cy|r%`Y?4(iZ!+wQzc1srk{073Qg{tzgMOf+ z(4y$rAVydPFp2r%kvlyXxe3DT#o zO}+kfdiJ&yTg**Jl1jv!D6X{g78bMLMuK|na>FrQ;=b~{YKT8b&Rkf$Bkq6MV+OM^Yl?j%3xgcb%%y0Dg%Tr!&&{8rf%K8^=o1%@ zRnmhp*6hLS`nqAeysNA9?tvKP>KLOnPFhO?8`s*H&F@&h%aRd^_6#{{S)jz$Q~x6! za9OYB=XhQ$DPVc`U6>?BPX(qIHGc^Z2H!4QNZ@jEM5tpOpLlZ``>6WqU{RwXfo`(~ zu;XjoO(!zg7T{QgJo|Z4xV}G=oNsrF)P@zb`SFJof zr>*Q!9?pl*uO4TQEAYESE+vFlkRR$ehjq*qS4di`Qo>Gs{D^7En$rD^=z2A7BqX?J zg=(ck$R$cjKL2R(AxN(VU^h%_SQ&h^h!&HA zu>Lwqxb$5r;Oduztl~4CVuKvX&)gU^qof-&q`d1{za&GC_$-@J6Cn|=G}42}lW3?^ zisAwvXj(&7esFe#zvhyY{!eGf208Wb*k1h_`u|v4 zacnpjI_Tc=OYAOhd=VT0YB*8MH_Y%+akK#f1ssC-TKti^aAgDR?GKoFB#dgYNz!u0 zdVR4Ak;D1*TTcA$GrRA;Qg02mwdM(yp( z9FegJFVlj3Emt^Wg_$n25o0v`p&QCKLTiWvSt7}Ii4;uKVUkanC(q>zD>fpbrAWTw ztadhtrK4X}w!*>(Wu~&1#osb>fq~Bx>Mw^YvaV#o5?Qj1`NQH5hLr9De@$zj)eo+u z&URuF7fI2M^zg&y%!uqETU3k;#6rlb~Gq8W!jilH3AF%!J8Y%2)+-ipHg zQ?_yD3b4}0j_j`OAnPvMifQ;I5}zd;4C$Qw**48$%Hu%dsyI`tv5dvMKwLg5N0re@7kh4k3&^jotR_+e0TCfUY3`uc`7 zrWIi+u#?giVKE9SO6@mNrWj{4Crp=R^R%N}HmH zlT)W@cF8>!e+D{qz zTqGa6$QO}!54d7UOu95)P8SsYc6@&qCLOsc`_0Z~%vrLe+&>^_PBWZPVOlkRzjnF$ zb2P4#ilPThefrZi1F;2lLp{`z*~feQGkthR14Ul>z)^`+Zq8gPhzAxdlEoHaFMj6X zLE7Ya=V9PRc4C*eo{7_5YOXDwSy#S2p62s~?fOtzEyN~08Iie4!~ane_k%>C5if{j z^PMAf8ECt(S0xxxX)c$<@Uob@p4{DMS=RKIQE|fhtFNIe-c$}P;Bi8hx;g=2eCj3x zkoHxOyeD&n`daN1AyRv{Dga|RD#b4QdLUPNUN97q;~3}+=I-LE49r_NZX zkTOH0q5=L0r*d#@t+};;y;PD94c0aGgk1fMlAHWF^zw;e+NEGiyuE}?Tq*UtNkgR| zu#})B`tw8Wvxe81L9aZO?}-*f%&l2gM&%}GN#4zSCSk7Az_&qfe}9Bbgsqtd%nX2$ z4m7`-EB?{Me?OYoC!i_;cSTMqF<_2rSjArj#FQCYOEjU4iTWP>GUVz(+Kfol2E|va zt)R+oSO63afN}Oql&w?AySSxJfAp5u3~v^naRB^Ne2!~%%3}^(Zw=c1t`!zqO$~|A z3aD?78-{704U~a-0jJDQ=L38&U9gU9(P3f_@(NsfUpMqpFx@ql@eDioO&{xX5wXM` z(!j@Bxo3K@(wt>Y8ceAEebNb|8@{D|k3OvtsnX^VH!DboZbv(Jp>R)EF8I3n7DP{sPR}j1n;1aClFGl1M>rM;a?mcdi-QhrYX0VB8Cz$4^bA_}Pt_H$ zFYWxiS7uHni6PX~xJjeIu+2MRUNxWVe@YOfzJos2V4~@Ew3Z7hzpQK2PLwNOv37tOMAqn;fyMrrNC<77Xwl7#hA>rtmqYV{tk?8BM({b{+R3q56F4qC5+0v8MbbniGH+C$|of)!V* zsz2Yre$4?Fr0vU$zT!k>Ae!jcL26B^C5K)I)54KS?8pyx@o{Uk3X=Iqt1wV1po#X7 zr#2ba{WeK=>~=9%8SZeW&Lpl!3My)bsx5bQwDpECCZV7hcX z3RM4iM8PI?HMrhyrHSis5)PtSbB}WS)uYdP$UC!SQd3i~GlipzUU_V+E6-7vnKVRf z{ocB5wS9D3EVQ!Gr7`4kZylBoan`BZdIw?Q7j0C%B&zBV;OmLjTHie`QdH?dPkSUc z3fadV8AQ9>bW!FB7mpk^ZUvSqwRwComWkmK_$g{%t{N^nvC$@vll=vQ0(?kVkY3Mp zxG!oMcJGR}iuG%s-Hui3`$$2+^JTLZ5lct26*ztJmJ94!L}cU5)K}w$Fme{;xdT9Cy8v}nFQx+h9L!rn< z<0d5Lz>nHoEP-eR2HVVk2yi8jpHv4#Ck--2)9jzn#?Nao22Y;6_fl_ZFOc|5H9yN; zQs~l4MoI|ga=ke2>3H;gUIj)Bz;+{w?XvA*x^P)k?{}#|Rw{#i&}A0BhA_dzex$Nz z1`s7_xz|ShO#h5!YL{dM1O~siLcS`wG11m7s4Pm*QolWQ?YqlnYEFZ9Cx`%@|Kt;r zO7vGQMlSI2F1>O^iAF_>Y4pp>ykFye+%Cxvzax~E31e4?6`Y7P84adp%t7OWG zkx{pYVi}_Fqbfj?f$ar4XA%puLiNkkC2yMXIUR5T!txahergr)xu?OqREnyQJR)x7 zE)P+27H7cQSr?<}5G2mC=qSuO^~93&7V71?F#_qsOM0P%b2%{NYU2Hm7ce`Fv0hU0 zVPjZ#V|d-JlU$T@FS5|H47=9o%_7s22r5j^l5H|idK)x4%H;5N6}3v3)T6ivDRHU9{%HYmBpMhDAzkgQqwZ^uu#FyGkTPg6?*#uEg#hKh!IVTEdeK7jhK} zy<}}FUkB0Br8ORmzb0c%n{8Tg8~J0U7_*hsairy9!nFWd!R)ZXImv-*$x^ErM1#XV z1}0%pC`3Ojw-&Wuj_>;K&|~F2cZ#a{oh4R9po(g9+ksGTT6{%?l=sdr#PJ(~=-AaC z6fV!mfH2DCSPM{x#C=-~Q01@anESLYQue{-!B`nLo~CP+!RzI)4qR|&fMbf7q2>g! z%#-vBCjaZ6Mzmhd>w6Op6c`b>kiq^5ryU;$(WZHXBSTe`rC&cW?AxTqA7b%As>iiW zYH3PH91NOO)&%cO-EqbTz^8kPyY)p1I{JnCErD7}Sb!MMj`!k#@qvj&O@GPV^G>3@ z0HilaBvQ^CO#u+F{#98X6FhG52w&n_m)4W(B+o4Gdn(>I$)v9Nbx{%^*bT$^T*73M zuG9B%@!G{wvlQDIvyeCPAeCU&X2#h>L_596?LfCDr{GVP(|ID4TN|Fb0?-2`7|qhE z4^KxSoQ_Q4d0-Aur z-^ed4z#3=!IAlM4&n5@p^0VYEaTa!`N6XGgp*^pTIe!7xA|vUXj#EK{jDQ1GL9ADO% z7E`|A%8pORlw1i3BEZcptC;7V<@8nllQBfS>&jajY5{_rpu|mMK|cca8J`~h++pdW zt$Ksp_pF53pJndXE68Rhw_0JSG6s1-w`@ifwV_!l!?6+xw*4ra_@Bd_;|+1AqC*G@ zQxpy*BqI7tuxUm}GqF~8NiE@Xs`2d7!yj2wAZ_sz(!kJzeO!H|q zEHiL$i_&>VXZ*lyv;6jHx++eEv7-TRUS2|=K)(@@p_N+cHFrPX`zUjTLK&8oa9yJ# zqEd&c$Df(ksZW^JAr~d5^^Kb{8Aevg1pcp&t$O$kTh}UilUCs*A-#su*cpG#CAJCd zUvIMh>4zr^v2)FSMlRa-@0XfL9T7vUdQ|fTRVcy1-W`$6{X!m2b1sYaYiGHyt4~EA zd0O_wukuACxL|7I0~&x-N}69s2c!*OZxkfXzqi2&Ss~U(O8qX+92}%HnM(BArT3>ET1-&1DT8q5XBU zSoQbH8ct#x3F*tED`2GqX_p-Tl+GFUlDepwqn#^UWtE>WMV2$xU>X&LZ01^bf?kR% z-1n10h=|aE=K)l_Y&+aTXC>n4wfRksi$hp0oOj24{+>Zx9B2h)-r-e^40{F zx;f+v#45rN#VAN)=UbUDQ!RcB?TTqHNQp^aQ5_cLq%&w20v&%5l`wo%7fDszg2eTI(olV@iK6ByVizla{=zF4`Ibd;LmwKld%sGF>JT#>@JN zzAtgXasSPQZ(RSiLk5}{qyJ~yJ%tIVa5{$3O1vOi>p#XEO*GgCIz$E$N5I9iW8S%Dd)kH3@B5+ts%iV@dl_zYiRitq8gsFzW z?^Se}$o5M0bl)XTCh~bZ@!L#5VY3u@o9X|F{T?$N0u*vI0E;fJFt1blaZlYqO`CFi zVNu{$iSoilL^lc~Z{ij-*+$r8>Gc%r(zKP^loXw^pl3c-<_NQz@YoSXt=6jfKe#E3 zFYSwWDi^VTNrEK|#oFo2sAxd~UWdh^mSbQ6UJA{!Pc}c75*)}yg8}bCl=GSht>C**mbyNUOK9fy5GBL2IIC3` zWkn?G`QJ9+kwy?`BFM)Vid&J3=t7{c3H%+Q}l~!t3P2o##bqFPz#*44J;p-u)uw4dV zAST9uX;5HM~KClW}>D6ijO+0JD!{K!*C~GJhwT?r@k8@3Of^zfX*Jq*dvhG&!CHV!0e4@E3ORR>0X3 zk8vJgVX9|jq}wYDS5Yy%VB?OKd3P$3A0oRj1~lrAxH5IUa-MeazH3@Oe3%N^3S+lyv;R{=?Wl|^c8P<{ zQTiiapg$#UqyruZm+8|P(_|%}Erj`>l#=vICoIr}M3#LH%nFy${F7{}wVYlyK)No} z8eVlrY_lm-_4d~@VCey~ml&jQg!{|n(F^0Zs@(9k4E4Jq!~%O6I-_$wpkbA^pZ_A5 z-pv=SW6s^?7_$#2KBqxybBdqhPHDCkq(@w*Df4)6GbrEJ@t1N+ZHmhzZ-(GA6GNDy z`TYY~Yp(p*?;m1u(}D^gV!(!txJTDAq+yNU4Cta|r2i!a;>{v+85-6VCulD-lC^}r z+#+8P+s=8Zii`d^AFVA;;tJ3m$kxn*y7B2oJNF1+FAO!s!AzU^XCic7?f#d&=Bl%B z9W6XIzuUkObx{kaIlpfSQf`}uqlFXV;4RIEdI+~ty)n@JW|@NfjfT55YTt@9YvR!n zp)CYk#J~Lq9QU4#$egr}i{#}CdYFlDy=jp`e-3Lj((Xc1T*2j7ZTVd)%F&aeNy|^| z$U&AYqCB<3v|sbdF+#{KC=xu1QvFA@*tX-c{aC+#26#ICGc9V@;;pxA1Twd`RV;_D zi&~n!82Xn!a)`vz0sw3NJc$rqas-0OA@HQ{?5auJu`2x+Vf)VYpuB0gfNbqC)V{ct z@pe5?NAZ8Ldm$IvH*br*=yC?9%QVTHCDji3Z^KpQz(x&!LHYJ9b!(B9hD$@`Pw%%B z1mxu;C{YZcJcQ|?3-Y&e^VAmt_v>wrDa?@Lv5lfXGDLh$=> ze}k5Kbt(+@Jr`!2Up`cMPHz4*88RVLV_NU4kxSrO3{=WZ9f7uPUhr|580Q3kC^b`n zyjiLXihI?Jn`<1lqdDTYVhiMRAfh&GaJkg{uqx)b+1TXL&*pEFzKhpR<~@esWsHNd zP*k{JS^!2vOL3VNw^ZwZl`zK5`I=u*^j~gM-!g)bnIReR%@H}=%Oo8RQ4+9V zp=`_+^#G8$dJi1R&k+C-A4bD9B-0)k^g77T@-pNk=gNjX-+R*Bs|G*wf!OngF?#H= zJV^A;`PR3EB>h;l5`!R~X|NrupM6=zH^OW|xP;vu-#SG4y9Q?DI|sfi{WF zOBG>({PS!0px}%|y(f{D?@{jVZ26J1WZyDveONyf1@1^!=Wo0j*;fL699NCFvd@_0 z0ZkG%V47KonTUl!DQGB}rkR8kaHEkY>}WUJ?Bil%n`E%Q8sWkpwP$@JLpx5MGWJ2X zv~wu+KVHB_9)~d&Ffq?IDR@7Y5F>K9=ayWA z=%SSs26K9Zdv@{R;bE51;2h!x&nU3Brc9~;gjbvG^FF{gcmJ1Dg%9PE3^VAyveacF z{r2}dk&*C$mQgJHX=r{7rNq6SF>*p!mL$yFCfV*qyVJ42)ta?g#D)bIxpBH{8#8t1 z%+_L!Fo?Pt@b%b_)_Y~$1j8R&ao3E7qcAK3wVmaD-UqCB3dU8sG0#T$a+4I6# zYNp6_q>-c^Wm+I52_z?`pFraX+v+=W$sJ!FIVzxM^t4QaH_etyT0rLLKw^S=xXfU# z{lb)F&A|la4xOh>PdA2h$NYHo=LH9-S)8l$Q-{fc*F>uNi>7LGM~JQo9u#*YI=ZUx z%R2D|HvMdiPfN^gfyf zti{FygW_PXtiF_V2KMw>LcjqraGK?=cj9`6hQ1&9>p+Bj^~?67ms`Gru;{nn5^4 zSu?~bGU$E|Ca;G&8!`{joE{BWa%or#k6l}+3XrHnmENIhGDc855xLFYrP}b%?!11k z*eZ@d39vjcrs~eTeg5u2D0UiUc#vy~VI9#a%l%XV3;ej3?&91rJ#0aq6>c9_wq)F? zWS9s$;tD|WCtQ-7x=TMM0)7PB2OYBbdW7?W$7Ha}Vt(jT1Mt=UXv`dE%jHgJ^1H#3EC8OP7UQBqfQw4VZyu^Gl^8V_FrBg0c{z|5{b*DiUgmD2>QN%(m}Nx2R{ z!iilrOZePw+4#R7Sf;a|@-v+n3c(;_Sx`|O7Fg~N$D|t@a_*^!M=l)P8*^CC92v>{ ziS2coePTWWY4c;g;_S z7b`(64%_*T*Z@5!w} z1!8{v*T-Y40!MD|3DC9Wx3r=Q_71iCv0LyWlWrK~RbnqA9381Xa!hRd3u3<@cH>wO zgF6XiX+}Ot;kLZvvp+Ucp{JCSOZ)i4-yo@7{*NC;OuEiE_yVCI^7)X^uaYqk>x0}( zc+=fGe@E(YDu1ScT{@K3lgtReF$ZAKqo&R7AblO4lT7DvxV-Z6$=ayj#OJW{L19^B zeDU_aiA$H0l=d8>$N-7yS?!sD+{mpr@)56)%y$|&#gI}5A~YQ0Yq^gXbK5_n+PAk} zyk|;0Mlb(TQ?~7(04ku$^-X7TcvfejxA}|zXRznBTvId1<8?F?=W*25=&&1ZoHLn} z3!D90$tQ}=cPX+;#1`IIS~gEtX(vH2rDgH0D5awy;YKobKf%VJJ^;yZfDTl%D;57Q zTD<-jJ?Q`Mne+eAcTT_esgqO3NY5rH=-XB}RuHrjjPKfox+Q24M%l0ekL**YDdWN4 z@UuLEC>fipZDJV{itS|mj-C=;d@CSB^ik>r{H;?d6x}8O(L!;Hgvb(KPK{kGG6uUq zg_6PzA!@?!Co!$>*L-oDVL^pxzr5)t#A}tL_Vb3(<6kBTPy~c8g6(mGi>8h;M8m8K zD4D^dKM;!ag@aX0r=ge0snK~rK6-ZoYx>`QNHG#Wz^DcTz~$l%VFHmm>@Xjh8~0O2 zq6MHCf+Ibt{U+C>K^l<=6ddNcA6hg@bhCPrcabsB3JI&m&t%XZF5T?_$!%snrH6ks z`Y}rdI_jX;0f!)yC`(7+(FDd`sK9vq)b~qK*{v#a2WrYlZAUd*km_Ea;iRSQ*v9)0 z5^>ta(0eQO{9VbdL?VrY8|JPGBWPZEsT;$BJ5e3TwW$ubN6#S|CVPlPQ?q%`tQexV zJn6CF(lDSomn#vf=l5ncv#BVA73!4$MVzMjT$jQk14xKb-JfGr?*%-@`DXqlYCNdDcpS5phEn(^jY& zp)xD=b}`yjj&bx_gv{A}M(iLD0}cPqoO>))9(|CM`CHCKRWZVdE zRXo(AR-&FyriNdO*8Nz1T>Tv13RmNcL0=NG^Vd?qn0iNuGPxo!QB$;Ka)0F=cE4HvemE$+LtKP8NxYR7Ijx#A0arwSxW8*s7 zM!jtBg{^XEl5ZH}u8meI6s~odp~lqetn-PbmQ_nIj%iKcoec+RQ^ic4eU5r;2@_=) zH5&x6ZsTzmY%bJUUD3}ID1f*{NL}`Z@__oeCwbJ{J-;BLsuP#akSc-9!b$-@-8cR@ zT(+<3t9@g}E2Q`o<$3jH0l(EIoej6<8G~P`5CXK;DerRHv2d42y4#(Khv}@i95&{p z3|gz#d#P~^<*kK04n9m<%Ul*N`;wt&4R<7IzjjC6AMWHe6I(dMH>;wkTS2LMn!!gQ z7e|0lkx%TOVVvc2Bi@Wt(>ke&A(XQcdWKN9^Zuv2N0eY^RtThf_!3LzSMJnd;MPT7 zv4~RPRJ^!!N+HyLPa}Eayo%_5pt;eMX`*|(Y{1Kbhlk~rcOGxGtm}8xQJA-H<6&dp zjBk+#)!1vbIyxHiQ76;!oT(t+;(4`P+5I=`n44lUkUmbIQkk+Apz}N|PLbRV1zdUl zDsWnM=7+3p{;{PqqR8WJ2rTRJdYdlIzhm_`o-Jr&Qjht&)?z(=DNglCsCM_Ji2VE+ z>?kqihe1y_>g)MpexK$EP1gr$|N2Q@#C?aLz(^STb0nLeLXX<+)UaE(vYL!CtkkLT z?|6=SDH#(9v|s;B@BrrzT9-T(m3C!UwV&Z2Y#m@Y#m2R_pO4HcV3&dU*|+1NBftIE zRt|*;sJ2`IX~k1H+@r>92FiSDZk>nJW#4xn;eSkPXV|e6UHc53GBf(qiFu(+y%3!( zS89<1`Rsh5X|NREJ~a2h%1lbQ%X&nY97g1Mo7B80S5@&=FmQ8OD-Xqx#U8*Fm4N#9 zuLff!_1dpxhfhrOE0QI`ZFB6d0!4KVYkIW^!_q6H2LtW`c*u|F$rA}tyXC$ zM~%MP=lLrI@ewsNb=}J^8sI0Pv)x;FeTtlK5B|qdyv{o)>0lN^wEvtg+k9PH)oeJe zT2HSga+3HWe|-*NV06B-GoNT{#S%FDv$e)x-2GmP@N*<>U!92qevXDC)>w|CsC*MU zj*44Iv0nbuN!X0hxnz$7SdUdb=+aQWVzHT#dsr2y&*+#`x<$t|Knb$~Rjg9)e3KbB zvQ5@iIzAUV{@x*)h+%U~f;KH74NM+dB|=}I=5Dbk5Iy1BOHq+hr`Q>EDjZU$D5CR` ziH6pe99Al4WM<{x(<=Rkdf)3LxHvx+g5vH2=70n95O^&8N5UE*hFMc97mVwy?o7&S`v$-3^Qj|KQ)v(X*n;2*9RcKb-lQIdO52#^dWgPJ(RaZ1-*?rVJ?o z7#(+nV+QiZr*l`ugUT7>dreH*6>&VI>vbJxIa@Fkn9PW2S>Y@ayTe}a+y)INg$3HX zIFV;r*rx1Hk)wn;XTr87b%6K1)YuQCl(NSfA9Ebh*CLDpQc^9xz?PK98+00o*oirf zNlLZ?9pe|ZPL)6cnG`e??U2S77$Y)tk!JowHwXz$&iK4nF&W|RvYSv9?kp+8 zY9Q#9nM4NKllTw(IDiMXk;QkLLZt*!e0L7z5|s(OUPk;{{)rB-rQ-{I+=TFOfC#1R zL<)pc{=@j&Q3|6wDj`zz)*%*MY1NifI6R0XT* zgg?l%s*G%F*9rs=ThW-f(3Vj0Sa4J_bzx*o%}RVcu{`wiWb!BI%geaDuzcI^H}@?$ zto8qeGty3ctvzzfbAYFZgGU=HG?Y@410niJ-!3I6#<-8JvSS^eyp~P|472X{ht3x% zFtSpdJ$CCq{R-UZ8yL zS}MVpE0QM8q2;yp7h~r6HltTab*zdq~DiPt$@j$sW!9jM{r{kEM-n})2K#61w)~)!WZ#Wl& z4hxpzVwE^c!>$aJiuU|0|RGL*&>Wq3OaN#@4Bmd`(l zt5%WYmq->^>q9obu6hdTII>wa{0K_$ruvAgg7U6dy^NYC83LAaVsC#w%oUkh-_*W# z+7Xwl&@}+k%1@NOp3Gg~s)mu!yw_;CU2$)bd}{ghsTt`TN&B7+I;fZho1}#)!1`gp zFGGZ<=^3*F(R@r<(B9$U)5hK7{=`i-o0?owwLL(q0gs5F<|{5%=_o%~)KJ*dYQfq| zsSBi6@%SrC3uCKrC`?9|78~keL&L;)KL5us@q1YRqliiw3wUydhrrjJS0cMSbbP|lWt!a~_|y&>5gLq#MO zGz>SZm#OV|p!VL`)16Xef8HYt7QL34?DpV6!<`ny7Nw`VJn4`$`A#PJhw-8M@1bje!7EEDC{Y- zheqAdZ~fM74Qqe&)R;d+~E&b}|rKuT2xBlaXxJq+SW1w|{c$lY<+u~l~{e;@;>G3wsY z=pZhSA<64LkY(qyiS6=OQSQwMo|kFtXcR%lr8^!+!#OF_qH zV2L{%>^J-Fdz~`#%8wJ8H>hafMV1&H|M#%})fM)QFB~fRE;LBS#*7WItYkEi-5F|n zBApKK;x}b_D?ZE>rP+CJcM`@|7@o8U{}V5H!c#}rMxsc~N{~MrlQGazF6bRp0r0PG zy#H4hWBq>>g#S}v^#3F^lirdp7s{e!k+@AIQXTBt{OGUVFhHZa6f?3u&qQ~>OQa*- z7YtK%O8-KZ{fQxEOdb|QBM_D4^&LenUbS3Bb&t{?+vI`5Cx1S_t8VTKhZY6p^0^ot zpF-j4=0Kswn=AM`W-b_yujk^z1RqEWB12w>|4y7g^L8q6ptTifwRYNC;+@a!l*NQoBjYRzK z`dS)&F$A0&nt7L^$+(U<%e?2R_@bj*XiS>UjbO^m7_=5&GId~%6rF)QRP&E9AFZ+# z``=o-tEjfRHx1xOkzzrMySqzqx8e@Pn-(WH#S)}gfda)Hio3M96)5fwMS??dEe>Nu4>7Vbnc z_SP8|W64bbL;FlYjHNaDSM7P&o2&_@|*Cy3Q+FB;kzs(Lo7s8#=@5{nje^q42C#ZLtPGzE)6J7@&UMY*O9BGK;O z;-na=60teO<&@Z=$crgEQuiD6T1I%;NvI%~Ek?B!;i?y6N9czkLZhXo^p7d_9ppZa zv{aUC5rDOf2DRx1RT3qUQQCvVKhU@4mNF)z9*bw3Di=zHx7pBj-bbJyITb0go!QK% zEHD2ox#Y=4zub++k1{ z)gdtx(kV*E>gVTc1lT5{l3TAyHrRCe4Uwl5GZmrH?+yeHobaKmzAUpFfldJfU z*enJr$)rvoIsIvU{i3KJ6Qwdc#w;8%H_JZEMt*;N2Gl(DVJ~vjA_LkSKA?|fg4(P> zz`eMpBKf}$Ti|3|dx@2mJIqzx3yO)Mt=xjatESHfC!U_3=m3IKqklV|DRF(tKMtZ2 z<>QjHTYUsMt)3Ta6d$N|*B{JvK91c33W&~5x%{}k{bp0+kYamXaX(4ovh)=rn%&&P*S`TgFerqumq{#XKt zWCAu#-AUV8x8CUKAsU}wK3_GSDQGjjQ~Acif3>HF@^xxBwJ!n`xEA>|kiT-=#7|sr z@46kTI|!-a04IS-XnDjfCAT&w)hMhSVcetgh#E|3uB~mQfmDxtIA(Ff;`n^Ggt`E| zsuvy&pPJ^+_W2vSPT&7mW3SO=a^w5%7@SSJdLI6~=C6G9fH^GM*--FHGT@Fu8f{Be z72}W$D=Z0KneKk_I9VIe_a*0Htd)9T+s$1qO%3(c{mn~VUxohhrUR;yG3n2@xCJIx zo8#`g66mE&n(YVwXd7%U`ae;mzk~3YG_ocAe;IkafrC#vkmEunRgh`K#yNd>>FK8_ zoX5_E;Z;VBPmKVd@K=)x>06;r>8-7^^J>opF(Zh?zT<0-;d3w#iIS|&tv(x((M^pj zyv?t&hv1&!QeAb%zTRdmQ_ifYqQZY{`5sV?h*``}R%-#Aqvbj1Hdof^TTof1xDT1* zJ-6iZR>Q8|06?k+9S_>%z+Uc1R}Y|Qp?}^~r-L|s4^>Kf1x${RK_j{>iMZ~6 z>I_H1C2vkQVCt5&Bq6&A=;zbRe6-Z$E(h0CTeqJa3yOqLTj_~de-y5CaFUxRB*BI8C zMSLCx0GbAedO0I=S&CC4zp3d(6%P*$!i#|O$$J2QaN;D>yX%RS42`iccy5A>!{f60 zsmuU$2zqg(`i8gYk~R_9pOdS}mXCc2>0W6-`@Qe$S`e2*kwS1fqxnwDee~myeInQ;Tzq^h6#z zF9XMrFL4WlmT($-{9pp}`K|v#;1>T$dad>Lb*|@H)!U{uE1r|@b?&)b2xzo=6u8A5 z9Z!3coAPBU1dorAv0s85Hp5R+T3efW)3O2#P&oWWRFqv#KfT->p}p9ZdXY4c*Q3PY zii)G`<;`rbRuT&kiL@$CW@cJixDieMj3|yV(8sTev1C_cOAtD&zW6vjC^ZCfvt)_% z8+ITU8me$g9KFhwjo|@G#1?8(-<4-l=XdBparZVUo}T`b6_DR|c%-R0uE$1L-T5>` zkGV_#t&mXzN5bpISV<@xvit*uEqH2*Zvh7zJLn?g{^9BhyXeh%-LLDbGnvNCIX%fD zJwd_xIQ2Kj97?22*9;_BK|zS{%9{_jpHI4m5fCi{0paU%69jkA#UY8Nq_z9oGi^8b z11{_s+_|{;8n1l=2=|&ko`&rD?M-wIfUD@cWpagzgEc(G45bTOT3YC2e9+&pTGW+jL@C%<%i9xMTC*s$58s!nZf9~eM@Nw5bIGs6A zpmQK}1@_zqsDQ!2vZr`Ij|0IQ$ST6l1%2{L*rej}DGrq$*|(nXO@H{f!Hf4oQeSK9Ya^a*1$CXT~RfuRcvscUOAxB;hY zR_+7UMZEDZH~T%IqrjRK@YI_Ey?+GR?&m=FBV(m}sgW)&FmX{gd4O&qX7x-2FF{)l zkw(s-wR%*@a|T4D@yQ~0{dpZRV6+(5?Cy?qkXwJD;H9AW zBNrCa;m{}GqE7`lT;e|AIEN}~hsYXTX06vOi9@+R5lVWOS5_=}KpOaD_()vBdsRKD zrfO=0H}rXTB!X_An%NMa|DoP=HM##R2~YmsMN7undaUi$lz7_WM@D6kJ3&6AiC1pg zYA)6;mOfdV$m>~ZI6}~5@IZWe@)Ld$TpI%1{8rPKtJiQpzu_Hh@9`GQY{QSgx{^>R zH@|J*pF%R|#UE!jhm$2iP(dDyTtU>3hLww(+uO(H_w>=3L1oe-k}t`ViC_NbEZ_|G z&_N~I?(_|tOk{14`BexnXmj6k!Q0Jhx=1}T_QdS%+v`V=RQK_I4(#L3ALgHJ@YDVx z0%naEQhs~j(Hx{jB6f4zf1)6}US;+i7=H3yQ|kQk@<--YrLYAII{00+5TC2GtZcv8 zCdcHe2jfDzhhI|yG1QGd^>r(;MhK<2 z?b@RIZlmK06X8n>*wHrQxWvC#V0Zju(24JznYWUH!ejfz_!!#OKaL>gQyBF>8>;L7 zLjeANc+n|T0%RPyx{HY8&myh^lO(gs@nJKJ==FE9@l`Dp&>cqU5=X-i-ToL$n2W^! zsb{i@__v;EN{*UOSJ~5%D@HY+M(N^Y`|KGpiHb;gZ>S(lw9v{6i+pAMa=@l-|5?Tp zhEEP1#ucV|jsB6V&_?U%6u+4i<*JElkOsRW?t&Ei7?bq1jw2yx=MR)Y1-%YZ z)^j{QqfnjyF?OiH`W7o6x0jU1C9kjiz9`!1J5aA`mCTd(OW?}p>qa=>=E!r&;U+~M zD#vb3Mr&7Un~iJPfccRgo8<0vML6w0=#>%La5=mgUUb#2kgO&A0MeI;A=|VN*1vbt z_f2R)PfHY>Hk+W-82|Aw3U4GnaZ5Ze2WFC&C@E)#uMVZT*drWX@=8-WYtgb1FGk2j zs?O#9mOG-7`)rzcPkWvk82pOUQ{ceDi>9_FMOlrb=|Rf3k~85iJwblvN3RV76Z;CqVmk;&r8JskESG3~HhlP2 zO+a4X(pTA92_h}1D=R!{<_<8uJaq&^uoM$@N+nW@I}8f-1@&wm+jYtl`^KP=2kRiE z`@7#@*OK}c(MT-9B};}=H=>D(R~|_9)m16Mp)&b8KYZK6BgU;o?Y?73Mq*MM zpMp0~Qt`g=+D{FaVrDKhXR7rzCj2PBfwIcUb%Bx}0 zAJY?FH3#0NZAIGltI&E}QFv`Dd1zoJ#Z=D0B3iqBBQ}jKO2@Dm+ZK~QP5ui%EpB|< zeNmPwyx)qTY<2lQ3|9UNpDUbk!<{A=Gl$(dQ4W6#!B_rPfAl(xG~x+6T9m#gRL1+A z(BrakFtlm}0S3mjG#mb>OiLh7@IG!-Ssxpz0aILN5dzcp;@V#5-aUYt9j(g@c5sB{ z!^}*d`}$DSwac%83GRVc|NJAJPI3&{ZtXI4w-B(D2kPY#cCRKYMrf4^ZHUqs<=s#i z9>h7pkVtjdjc(bt%JIBI-}d5G94BeY164F;$cmpFtUhccG?e5hgo!lTN{FHG^Zh@+ znF8|Hq1?pL%>dy}*wVL_jC-yT;~Sm90O@goPXxt2hF%ArXUbGP5S}&?;so-KoGO>p zOe=oBLN&r^vHSM!iD(}Q?_+xzKj*UlW(LQF|0MrIrrqQ1iV&~DG3ppg<7D<}Oi zcgr68$KN@nm(>U;cAmbdD`Stae)i5Sm*Iv>{Ha6&S<>TQ1Jok$Qi@*~@|i}TD1_AB z3zQ8feX}~&bAIz7hOND&EwhQFh?)-3!`14cu9aj)UKSV(<{)dwNQ7$=(%l}}7)p+t zF*ug6T1BVlH#bRbU$3OI+uS`hh|jQ-%~DA#zzMQo$=Gv1$zerlf?vzU?_c)hwsKV1 z_^foHt3UWe?XXOa2E&sHo#4nzcDk?XC;gL~OpX+zF~~1ltg4-GPH}NCXdoAFh}eXp z5EY@7Ms$RyMx*&eSg3MUQ(9_7h=+560&b~lT#cp4R=jC(6Y2wUUcGrk)k-loS|Lg2 zhUi*jnsIr5gI#yFN;;ztr}He$_JgJ;ikDJ}o^;Hp_T5oMl80G=ncf!+(cD2+UE z@c`)TAZAVF=_Nba{Dv5KcAlZi-;5$F(Vd&uS+;OeA!yRO-^DRaBTvsENp(BtnZmK6 zJe}9`vj*gloEl|)qO4rNvesC5!6yaF^3lJ)h{>)yxKtL>rvnzT0A{Gz6QW7>S4Cb`$UxanNlC zK>|wW`Pm{bZ1hanpJzSjPJKVT2S6bl*c6M~5a=ZytDc}|IFl4hN4C}KXxihapg}%} zpSi@!ZohZDjQ4FJgyXEo)RsQjk$kKmS3*g{+4TOMzo{B{fq>fo%FH&dx?CBZ3`YZs z!Dre5bss))NOD^gtL8ASwU5atcQ6IBxJ6qXl5B@-U+>o+QSp{w=N>H^H8!lPN)SaO zO%1_ouW;n4x1|6)0iRtgRv4dvT@JsCFlKbov>|BS=Gw;TJZ$^ zw7Q;^2zW}wMK=^_-G16Ov<(h=jBgpeIRz5qPKOB~p;A-XXm4P?I`ve!M5pWmeQhS7 zDP(;|bu;x6d*p5dACeci4;f*rEVxrD6NZ9W)W(}TocxD^JX>MqDf4lL&~kC4sFMRf z!ThPOGW_mEzk+v|dv6=ml`$}4hbeiLp?ly)owGii5H{p^1wu;1&L(22H}~(Z&A%|K zv%WDoYq{3nAme-0W=<|OfPZmJ;+0xn$t5fqOHNAa8r=2bG2D#1GZ29q1Wq@Qrl;^r zT$6@rLa4t#-J^w~-ucppPi}Jm4Sb(J;hz6OUJ8!EmZ7k{l&pD576y$X)6Cnysw~RY zVeNjZ+ILHmSt7J8^JW=vK(xN0adSy0l&co@zdld^N)mxuvvYz;QqI{FgLf>YafC@K z0wycpFVJ*G)KS9=tmQ9}pIO%N6DUPEB5-)dEe(=@ZiHVWjGDHhB{LQITm7V`9*0zmUZUlsy*TT{WGPN8E~Fc^4IqYa-y>^1Xh; ztO(>EU$WtUVL1E}hCGVspU|H%w!b3Y5vUgM!b{|vAI+3YhA5_QJ1>3lhr^29UNU_} z)pA>?*-@=>xK_xxQe~sAA!2ke~VTYOu7x2{X8MY z`)a6d%&bciUt7ZG?tb=LdHj=KLblA--ldMGsGOYw{l`k=yrF#E*6bR05}BvfoObiu zdG4*oOdEA7jgpn}Z&90`N^-}KIcIE-hR<`zQ^o{gRuJ!+n4Vz#ey7Se@ zN?rf#h?|77CjRazzNms%Y`CZLbTi}E{G8^cnY6zPi}CqX_HN5^vgbQv=L*#K>u`7T zG9Ge#j9#WJD>W^w`fCW;_nmT-D%NqBvn8(COBq+^5r~CvQPw>64b~zuR}^bJtIV#% z%G-A00t1H?b$XvGo!7CWZr*m=;RbddvQ>{3bPvR(4)*XTRs z6?qvwlnBFzsbkm1-B-;VbYf!Dz@~22lxbCT_RrT>_uU{n&j_6e)Ry<=?ww7|cIZ6& zXJ~RCG!?wMb$^xH#bJJQ{N8YIiJD}xxj8p8(|X>VbQPl|m}+w)+h3+#b?L?^NE0AN z!QYrOWt`QGv%^*g9x_eitNx?3Sxe%oNiQbr4f)OUd+n@+vr985AO9&!v}ism7RQ-? z1Em#L1keR)ktc(lhH|Z+Uy5eEe8PXP9VxSv$l8+AcwfgXiv#hpxD&B`s{PUV+|sn_ zZ`<|L5SS?-tdVDBWRBw$*ggBZkl8O3=<65oz-BK&@Je(PsCu)b9z`Q_7HWr>YeyBh zZ5SFy$wm%-Xn!Roy^A;Ph|CmA+O&ZTmf90Y&xl)M(H$VPFO@CTDr+}IN!%%YI;~EL zLO{y%rqL}U17mpO!TDz49U?{BHYnb1TJyQvedtDroCK*cWXRus5AF!ROPd~R80_*Q z|2J!Ww)%E7yTm0n)`Dt@MPFDs5}F?s$Vpg}eq6Fk*bQwsGV@;S>$Gf>);GvA#D@gd zY`in2>IfHhZmM@K`Joz9Wk;17xcybz$G9kY1PDnl2J2IaMSX}BU&Vm!8yTp9R~pNS zn8$j!yk~H)iK*YcSUSPRGgg@nTMgW2kk6kz;oMTV!LxNthA&vvZPdkQbQEhHRrp!X z-upCpTuMrbJO(U>dLIG^^8t=Ob?Jrn(cIh4a=FdP8AjERmcirsVGl)0eO!kNZ^4S% zRH`ceIJuyHi9OdX(HD1pgzELm17Q}!+C{_|#=$SVZlICc`O}{d>anqbEr>j5byUM~ zH^ep}!K6NX`zsPeCUElaAgzIqeENQa(osskm(?ef+lm|Mq_3)ZlSTp7@d1;m%W1({ z44&SyHc<2a8aS^r>{m^(;1F~BEagd& zdS|AF)c%;6P9E?O=92c;)!?;gY${ceQpb9Dm*vy*&z$2v%S^&DlTBrq2x`b}=L^Cd zwgh%u)DTxb=`)$zB=nFj5mKGB;4gsKmc@;aj&UoJVD;Gz z3~_tmotLgsap^SIWgmv?0{QE#(55_XE<@kuR$TY*baD?m{6}p&FM%(4X1Mxb4rV#? zVp7P{B8gF~G=~Xt3ez$zkM`1XgRFT{VU)HPG8gxK3h5mrinNK;Y3AgpXwv4cj43@| zFdC0U-fNiU_KBWL;*1 z`=FlSjP7_OvdC`fmcb?&4R1jX;)QnFF&G%*Y^-7#4;r?0BD$AK#A7!VtCV>slE?hy z9!h1Tv=mCN|7dK}za@3PY)^XM9QoaR@XUT}3?GwMQ^+Y>$8}NRpz&2Y~HUn9wJWAD}49L~H8V$pJ3@ zYz>!}I!K23?9!n$VNzlRCXJT}R*4yUNE;F$a95^-G-OEoAr2YtDr;kp0p{e_x_lZc_KA-zy3G=q8Q@Hv$Cpco#131vx-revFpp z5MAFK*N+8tTtaSxff_7Nw+Gv`iHi&o#E6C6&YgTKU2ehzZODKH3L5yOf;Il1ALs+x zQ;u1a3GO$5gNtQ^4SgT-Kp=oHw&;W6k4W1N1005@T7b9U1~c7fiWi|to+xrUVpsaj zLKQNe$DHo+HG(p1bocgvX}{TphlBY-cZC;Bla+=0_2t9uVzJXG&Q7Je(g8HjSf5BP zFD)yJ!*2JOrODi`lW0DxFF~fXDpIV769$Hfj#;bO>31^2TT?@)-D>mr^d!iotfA4g zzp^uv-8om_xf=Rp9UUDV?h+w_LXc}8!MQY6f*m)T*J|D6;GK+KUVb_$cxVU#ud`oBV{z^#g%%zGLC7^<_2Svi z&hF#oTE^#roSmY!#3n}%Uo9m?g5Bl(EreLokWrsX*(ygwh~-}~NxVdaeXv^JX0Ywh zT%5e)!ASM6bdRj}3qpz|i&mkSp2J}te7Q=w%-?-_YCjviZJ4vZa%J=5DQzIt`lhC_ ziHXp}NqSnqb9D|UL%x_cJu^Mo*xWomIT_}0RswI`>3$RG0<`q1*&CoZ&luCibAXCc zDxZ1(R6tKclKa){Iyx+!nkQG#pm}_@{Gjv?{-*Ul9ZqpSg77`F{ob^N4R0$b69u3967iP z1OZ)dwTG<6Qew4gwcGOhg>GwP;SUIGLVme!)3Dj=lga#o69|n z?PEO|w!YpmEDo33=g`8k++ciPRJl|}gsX9PQuH>PRaf^`Irhhh#wA+9{Ltww$&$H0 z%hAb2=k?zwpRZSWExf|~#E#$W*x2P_=gJ7Y^^$wzKkB(a_sb>Q?M=-XVWC}j84o<& z(yh2$4o>fxz(tC<-+v4Ae*_)io9uL(Ik&q^wIw9x;)Orr?JO*hktZM@wilv>l`TQX z==TTpVU>+ful5EFagH$VBRxPk&g!C@LKJ$!!aiE6Gb_?GZkdHgp>iWod$9No?`Ns~ zSecA`813LHxV2ksf~0>+3H<*Mi$!BYPULbLW9!Idcp5yt{PX|5JL#y!^l!AiIQDcl z_kXy0@qWI}WOHR&z@Vp>x6s)=fwNsOxy=KP>d}Kyhl?8Ka@~hIMLmPwuTvfNr2TM% zj)xi`B?ABC`u_Ig_xZV695bia>-s!9(I*6gn-Jl;eQAFPLm&uA@w&|m_-FQ~dZXpW zX01WAwI(~>?oT(w1mwkgUyrU1oq9IH3Ph75-g;{g+xz9tNuR(+mA!oty6gGdKU$fM zmg=od9Ys9LjS|++?w{TMrQeDDT821{drXxHCufW1h$Q#{suI5RyjOE2CzvS_g8%Y7 zair-q3t6Y9RJG#V)X)(sbZW*Xs6l%BMgk}EtQY5W+P!QyF%x}!y5w^>1{m3D$jk)= z4R83qc8W_0xV@0prB%eWnryTO4n%u>-ap@9PXjt#uA7`k_5U5?@)=ECal6;*cSE@~ z#Oc?$lhneV%o0`uaqr(BQGX!f&P=Ozlp9bBv4g`VlE;SafcpSzw6rvQem?khaMT1l zB4e*(t+Og@)ssMKHCZ5>8DuAnk(NQx>~#2=4~^9ih9Sm8d4tRLMI3}>hO!B+gHYTa zO_rt35(Fiy*oGz~B;@_A`@5T`Oc6(n_oor;8CJvA-Clo1rH6cNZH;ztqqDP9x7!Eb zG6aK<|M8P>-S-1A7MBt3U;Hf_o{p~0^UVf$@7Utl*y`zt$v@dPt7ZGu$I04CY<2|T zRCu*c_X{S&PYxCLG1sYDo-Od<;yGQ7^vu6Ma1*2i2u@y*E5*7GvSC+3J5%7sq?6-Qj z-8P5P8&6crU&TRAZYx8iS8bL@o~$WkGk|^@#Q3LO?e>#QRLEv`SsrMSFIw~mifUyE z8?3oc^5VP+Pk{`CvHm9bBg@<2?tRaK!W7gU+610~#n31ohYbwRerp)Izi$+w!evso zkQ-QnVL9Bn#6ASM38@j{k;oOI@ZD%WOCgs7@dc@3exLN~9Ish{56CbT5|L#0v(;uT zYnDEQ&?Om8WaH~vm+LboB9_zdlXM}HD~f=}GhGKEhbQ@7@gpz*h_6?Kikcd=kPGBn zUQP}HtPg6^>OFcbyWwoA8j|*g> zfk8bqFYh9Vylf9f>EEaenbY*h+XrFta z4x`sDk7tY3xqcCdHVZu-ZYAFrXb^q%Q!{`FAisrQ{w94s->Oxu#E|&soaZG# zi1dfiV{d@0jw_!FDOjvyzCqL(3N#3FxyzGT!}oUAFd2@hzklwevx8&sXui?h-2yK! zLfo}$hRifx8C{)*%ZR&!ZtdrXJ8<#pn21EMXMl5g}1Qe7b>wY7~ z`{f#X9uMlgg2d1PW;YDdzE`~#Uj(MjO-)UWUcXDkb!dK`k(|x#J2lP_&gQAYpFu>u z`W<{97PeOpL{>hLoTw}om&*lAY^hYfl3WJrK_2z(HJyl>Dk``IjN(RL>-=WZS=W2lV$nxHa~EQKo@pu1Gt<+m z+3?ZY#42hO?=Kgyf@nq9g5VdJ82J1h>Pk8VDZ#b1vsanwvTfwI#@=2Y0+lj{H*4M8 z6(sUGe6|Z5MRMezSXaAx%iF1Hu+e)#R}2kk#GP;e6ygHUR* z@bAkD@)~`7gi{e`v;UqP7%)1j<*!d8@NP{LpwzfMTFGRy|0nke3=DkxGPC7vuqvO! zg8ymzs#~S{_)&$(B339y1^Q%A*uNv7YNngUZvUJ%Ptq?@m4Ls@f>s01z$GQ+!MDB5 z1+f>PMyrj>?T51eW&kd5^^S-oQ>faI0ek-tKf(1UpN^Y*BRpKZ?AqcVh81!riDe@u z7To^JH7^ira0vxJ{m)<)5;h?&=^wGu@gvvR7{L{o-pvtNZPFWBG-=o(CDJgOLoi8%Fk2F3XaB(usCTKOC< z`27Bk8TRrA&#)O>5IeT5>2ShJq5P$G8gA`QoqsB_f$a~y*eoU< z&AFbi7!{4C<|nHgYk+=8CH!=nt2{YTXQA5_^ZI}okU;b?*gHX|{+F589?*+Q;gdhS zgiN;rCX`$jd+X`LRyp&cFH9g&Iv>7DjAaP;c1HIC_@Z`^XR575uAaD6arCW$w@wS{!%lH+nZ zMXVUTk5VTXgQ#P}T}&iY+zXLxaOhNUkDEDA|F-coTa_yle1#p{Wa0l}0X-rG(P(*G z`!_c@I4>1-b>SNDFe(s=26Ni1;acC&_Qlb$W!<2!^@a)*3<{GDQH_nLNfI=J4(vlU zOO7fUK%IogUv02(O#Q>vqD_dm4^J_%k?|H-tUpjXwn$4)4==*5V8rqc)kEF2Dk@0} zMEAEU2s+f-w5pRwdo@0RB*8r4JPJrdOo2fcJ_xopRf1D*;NT+Wc6Mf=DnS_;o?}$0 z@WiYVtel7)rmLb+p<>f>L_vfmQ2c7MdS8SC^!_`{g6)7(`D(k6UWC2BN;xd18K^4x z@zDhfIyBEI>Udi4$|1eH6(u>OU;6YRVnaaSEh^Qgaxz$`ttO8Mv{Wy9p)1|#d}1Z4 zH=y4?+_9~_eSqO%Mz@p5=R*cPdw$@)w(&K+qWyhnX^YB1Lu{nVYDk|-!K}u*jG#Q4 z>mTX#{o4E-^Pqu;i;GMuUG~XzHn00k)$VRy+A2q#8wTxr!kDuNYjKnHikt+sK@zx% zY+I+nVP{8&g&nwhZW?<|R@VLLU1CO{^AD5=ou|)t`-HC1RThUMOlVSHoTzJ&@rRql z5jtumLke({||y4}w2S?7fOlu|O7uL8}8q_p)T!Xh4cpfOQLPz3tVX8fB1% zN{2J8h)(;5&?xSDE0@>1em`|*M!yZJpJ!Urm++&uCkyfbVRxEVyCq41kAp-!4mbD~ zbpfLdEtk)?!mm{BV1#I{tt?2>euupB*qWLj5`nTb*kb-+#WR%PaCVF~FdMf@mcPUn z6o-hU6-i5+TiQ-{LkP<|h|%Zt5r4CDSV^;Mu4_7{5r|mT;p|U6q!{ogob~c2f}mni z2K#b>Dz~&WELQH~wHSheA7GB@%UA`dpGUd55kxGOXe{}A^dC5h*v|0`BFR=)C>w=@Ox^yCv{Gapr z&JY(>iiKhd?nV$496!Pkh$379QPQl6k!{z zx4N%{ZL_lQlH<+*%JatppCa7V9-zBPlCWpgM6|zFREnCKF^N)RXiWKmae&f|<1+TtrAKtj#KZ~Debqq*_;cjMGFaA?BTW^e{8CT`}0)hBxxJkjm!O7+D z#IC7;zgV#-1%%oW)?;zqMZZ#|%kICOwPLIR&CZ*-}#etj-5HtmmH)%C)&6IrAC- z>C^h1e#Yy~-`DgQ_0*+N82p+yZ|d3>sJ=W*(8c~fBn4}v^^5vo;NaMBUdOYu~ z{YI@x28TTspw3$Z`*S&)_4e`d&pMAc)Fb+OLcAg!WQXPpJ45eu=>75RXm=Ng-vppa zk$wWcIwL-6T+9#Nn}Z+_Ga0R~A28{OoS>hn+CaJ8t^-ithT9nD?gIURLGJ-1$a<~e zjemx_0*@nXZeozr2m2Q^s4>HPbq;kvQa$6^w(p1GCKO8Vms$Pt2~tI!??#I21^a+u zSXb&xII^($Oj^l|@`qY=05IBX%XR~uDIRKi2Yu-Uaq$gRp*Wj!J6|9 z26=`6(wr$Bccxj4L7xbv65m(2Si@lrj+d7ZiC7gDlNPuT4X$E0PauJ6h$>kkr`H2` zg-+yHty)KL^EQvZFZ6P*oElCus2$u=*Rtb4@J`%D*5GG#n!%{@-t%*Y5Cx90XZh9Q+Ja$f$UrU+_v# zNTu?4L0Cx9>n<1bkYeG``~*|EfASP8{(ylHv4FkYY>BKp-R&PiCzf3Aw8HWzs34xc z!}UgvdPo*AX}%eEg2J-VME`8hbc!N4F`t+cqd*66zC zsyz`IJlASHjV4#F5cSM;Yp-xNnp^S0c9ZXd;qyDfWL>?!dSJ)!c`ZR9efE4o5*a{D z1HWQ+=yztYOmPMWL}1bv^aTSyd=IuXJXd!B1!ZKieSs4ZQN^qmdasl#lV2P`Tg=7M z{M?;Ps@K$OOqm(VQpml6_%Si$_2KZ>*|UQg5rT&6^G^P0JHo(zoX%XnxPK7T=;yD4 zzH^{ZLEMG(Fk*n1p!n<)gM%o9)%e7U4hS3u0Dj8}v1)-lgKXqx6sZlNvfa~90oPNFs!;q1WkB?_& zW^C9hi;768sNUxbDW)@60UQG53<7Yg5A;U>^%F9uKG%bnuER$rPKlPo=}kwx zj~vu*fxQlP2J{PH$M_T6EG!DXZEweLxnAa}@%5Q7K_Z+Yw)A~{Am$MXaQy*{!zYd> z+FhDlsr%XH*`O>MOtJO~ol-dq6&J)A(0~5So|J@nabW@FQU6L!TN?)^BqKg2z(oKv zS3e>3_Hlo@lrh5cZER|~QL&OPTf5!KqHG&^2>;9NL0NLQj({BEg6K4&|MNp(`>(pQ zM6L*NdYVHp>+Hr4R@3zxnI*eBoxc0I8}7~!GvyF=v8d>!ez%#mNGup&;B^_<*yt!J z%PcF;V?T`8GGkl>HgbAN&(5bwi5f2Wt(6efkEZ>H>Epf|uFf8)y z5nsy6(gp^InVA<6Tgl0L6e$k@o{R)!6Wd2IiYjJpESpmhM70LDM7L(b&-;0Zcich3 z_TArzW^awS?c6Y}N*)kNN1>rT<`*L+m=G0a_8l>z=|OJDesal$yXM|aDi>J$8Ckz~ zp3FtdUD*4xqlD*?FY4NlEP$*8}0PE;!1<);oFvgq}=g+(QU?g_2KjJj`@hU zynkFBo7xS%?IB9e6m(bl<1q;)WJw!h#g`C0B9t9vVY~x*>K1#HI55r~t z5zyC`JWmvl!#CGrg>EQDAKLav(A4^iqAud@wkrVxbN{e_5>itgNK^mL_yey&lOjST zDIpOZ5afBHa;EE(Y2g{KvlX^=bW zWPdpkKz^C-GF>tjoo3=^o_T*@{Qj)Xk`ErPk?`d(Jt;JFhr{lyf#q@*c)U$fGcp%U zhN5z<>JUgigR{K~2Aweb-SDobW@MAmw}Io0oAv`^yU|plRE8XfpUe5cKJ+|2J?-TD zfTZ-N(%#xSGa=#qr5zRk#pbfW6)0T7pBJaPv=QGsT=@n4jxWYK&1-w2d)-}B15DV+-BNK+lB2S(6CuzL%^S&rV}e;F;i|~8es@^B*77d@W`8PU5+a{>;>I? zGSC=xgK&^XcqV(c#^$e7Ji&(YH`=(%@mYuVIkXvWOeKRseh(OYOE+2l8@0PAUs3xE%qnu>W2$#**sG(-!g2qF zk962$_Ei2FoO(y*hf!hgX0!6+yaVGMG{V$qD#dhz|M?|h1I=W;R21Kn+D~`7(b|gfzOrC|bSQGE^|C^rN!LU7 zTRvW5B8f;KBOW@&($H8;R4IRMY}D0tc*CmC$Qp4)jju>LFT@wTyA zvzI1QOiqPV#t%8SmI;>hSL^fDn#ZeQ0ubQ!zkSZ1eR;M^dVIb*ppaMGnr}EU=VZA# z{BZH#Tx{ky4F==NlyElIBR`Ukw|zL?CTGzy@EDseqKJF`Rzf-QZXS>BA?YPYm+O8rF@?vJEC2KPu1{oxHK z27XHL?hotyFh{<=xmW1gH`}olPEQJ;<}p(~-;}6~)41J%T;QQ@RyC1rny+!0oa0~T z(;trYt^F0H8LU<-z9NX`tA|^K`Y(aX>Ic_X^3i|p+TCP}FiBvoDTB_oUZO0U3Oj2? z_{RcRJ4<}Uo}gdCGzhOh7_mUSK6)+wiv`U2M`29It1Z25epgk|gi{j3K|K6cj{1A| z^?%Ex|NH#<-;T0w&&ua36e)e0;KCiFLXg4<)c~^DzByAmR}VBC!14G0O-;?r#8hEv zZM%;dHSEJj@bZH-MFBa6F+`0Lp;3jMYpH$k^(pbBh7=$G6az^^2ng;BXqoTvE$>rn z>U(`CuHWE$aM$AhoS*-P1Rj}Ed%8?g?^p|I&*>QPyK*59We;i#do6#~hKJNQ@nxo6xOMmO;jy!+aH|f5KAZi-@&ABKR`&-Eld)c2-s( z)o{Yt++Ci-eV%<@#~8l@V)EUmCuTzJ9v%XOyL^MZ9^WswyFZ3rWHK3XoN_okJ0@Nx zkM04Q03MrXbCkYKITe4hM;pNwz6cSA5&NEi!$Twcp|*O1$aG|?y)G;5)$B3t&Tx7F z=MC)n%Ld5i{dO#36cy=(X{YxG>03)%Gd~VUCv$g~uw3Pxg{dKhgp|#8{d47SK8f#_ zu-D7k&le&;24H{VX7)h`3$u&RCPrD51dtIAW4?)m8-qrN?NR04yx3qq{ z)sua1jf0a@FdDnM`m4pUW}8EONHKVbP`ArlqzqkDM8w0b11JeU6_wX^UsgqyxqQQ#jRgoXKJWMcy36j@{=r^{>qmm#T3jZNJOvF1yx&-5 zBx14X5ku!Zvckf9^e%sDsGTS68vhiLbu+E?{Bj zdiq+Q&bCl(ZhB{R|0F3>iNa%Z0Cgdno133%<;%VSOnst+o9pA2%Z*~fE-L+RhW+_{ zvK^F3&vws|5gUfOe%?2~H~D|~Q)BZ7p$G)v%^y`e0uC6*GwINbGg`5??@yU^0JWv= z?d`3Rw|EvD4+4z*R7;@R@{$MkRwZV>!6G8eWN&RZQ-CfYYFsS|UM00~vU@i?=cP=U_ z7>GB(6nj8H<(3x0WGlz?am+ki-2_*_$S?RG_qq$({_ zy`Gg@yZzt5z$ZyBfg!`Yz+_JDu!-&F;|lwZAL0a&5@1TF({G1?#lOCmFwY2K4e6!V z7khj6Xti1c;q$@g|I+1J43{(^IFjX(-nLugiEOcB_mB-(*DiM#e^!72-r%Y_luoKL3Q<2 zGPSxP8a#;cE=U%iF9r&rHY<6X-pvdSWed2~9-ZM85(-?{F%__YU)Uif>yC~L4FGy{ zTyhF#I0Oz53x9jM+?pL7#fgTs03eC6l5Jg@c$e#i#rbg}x@*>~))HA^L)>~fbD*Gk zE!KP2xUgbK%lUBL31Ts}`YI)x&{mhWcAk;mUi1{kaZ{v;0brOg5{YBeOGij}QUbd)HUn#j#<)qV2D} z7%+fC`y?g!4|Uid1+;1W{{J*BDetIBC2ldGw<&Y?2cHFG)I|#Ny}(n$rI(sTf;Do& zpY*E=Bi}Lo??{pyp`a6x60D07kSFoh5Jfl5ByM(5;PXU?xNVNM5(K|#_^H3nilC%; zG=w7t|5`Tc^dwQFw5Ksrk`@tQe^*&4D5U5rFO%YwnVqOKA7<(g7X-%N1?bskxrJ6tz#>p zwXnAzDI(Ohcx`+Kej@)~;7Dr1j%fVhER82|($2FvcZg^kilb(fx4KgufhiYSJBfog zba!DF>gbCTw)Yn=kRscT9_x1FHy=1ezUNOgzqz_dK5`mQI|6FktDLSN?l-A1uq!P#3d9tp)z*)P9h zYyPWhS%5cOKPiF<0T6T|Y|r=6`EVw5h9=#n#GfJdad33WiDhtz#+bZo}VvugvnDv@FH9f#;=L_k!vhB$^V>WgZI!uM|y()0O3iQh1 zz;tJi+kc3WM1C8q8hp*r!qlo;(h%jtv%!C~5y zomUR617EEvHL@sU$6u3NjdiQoMttj$Cx*3!hH0VLXGg@+`?(!yNh~W)a!1X*tsTs< zPZ4LIr=<^WxN$hGkJU*IW^%1L^G_XJ8gQAKtOgUwwp{wdq`PuevMM9)L(+=|-Tx^7 zDJO|?81BokQnux`(k)<=K7+?@q#l-7lj*QR?M}gKrbC`;v35^PP@;O`mn;uixgk@n zKYdg+@=^L$=hxS*znjT9pieqcu37cH)9-3$00WxZ>fbY{s6N`%eIyt%Yr zZ%%@qND)OTI<2NF{6zA^q3vMSMlh%Pn&Jftv=wJ1DAopt$&q%Pq{KJpOA-z%#D4}i zKX%P?f{u4}1&vR{$T7m>W8S2u{RvaQCLg9jB7Js$|G~BDpm@W+qv;Onw!Y?T!V=eD zr9EcjU#H|b-jg(M^aCt4p6Nx&jJ%#%6M}P%hdO3DSS33F>0pVL+fv6+9bwqT%MKfS zLv5DD4-Z?Ve_qQ5HlU}7%?|j7UN2s<#+zdD(kz45%JPY*E{CO#-d}Ae9(p1 zm&l0;>P`>tkNHUR-!MR9gx?D_R(2UepwtF`(XvinzJ3)#Nim%F;lt#R0jGXrZOn_Si! z&NzBHDrB+V8Qu0He4S}yNC=$9U+~UqxxGHzd81p1?o~JiHV#SOTv?y{s)~yO%of67 z&rT}T1gm~DtYo?zhI?K+Bh@$hoK(q_+2YWzYJi9S^vW=u*iCO3XT4^+O3bav>f)6O zwfgYqzWK?{-o4_Z8MN`gSb&%KmlEQB7~}ZD{mK)sXZ#E`dMAfNe|`Qu)l9htjr1g? z+%zTI9s`w1#gjpaSOky-AGaZN5Hv!@nh##+|+NRZ^MzW(-g7-sHQ8uSJAO<6|SXNMr=# z1)Hz);?MYBr@OJxr6CKW%0ymi@83*Y(o#(Rv)Rfe3RZg_(YlV7Ld~vSMm$KGg-Y#r z6OCW|TB($Y zzxxEPmi*-c+GyAs7ItY}luJ@#ES4KiS`j7=ov6|a+7Bqy_vg+om=cUDXy?~=zVGXk ze*(DJBqF3lb!qK#$=!%sHIDaSd^>4+6`BlxHXbh<7@gHa+;L!jZ4dGCHd~X`LuQLv zU7A-2&)&5Brq2^myM{>7Y@$SJt!;@d-gH9E6EN%Hwcn&s=UiY1bb8}5r7uCk?;SP* zYzy~~5y3VYZXY(1I!$?HX;Xs|N_t+Z{mp=RKE zCOa!ZcBc7`ArDax8O>o2XXv#7+PtSQ*Dhbr8~B{$_mmKdfs)^79k2_`Pt2|SKiE=w zK}kK`k73QN&JWU+)262V-)?H!T)O{&+GoTtvi~l3(K8;q&aCSq*BMytAT&JG11GKuP;=_J_;_94IAl4!=?msd4Y$_^oF!@@ z?KcVg_#-^+SdO;(Hwbn=>0E3A5gQ~<_$BxMDmR-ZQMn-{hxaMmzkA%z{+h{2Grw=v zQbRt9Q1|;jNC&3wIqcEFgkg=+p)r>1+FQ}!#?_^yo1-rB0rQ-$!dVt@9uDA~~rTB`7aBm4E%_VUOC zl;+EVIv(>|198Autou^aDMv+nY{(|CCV9}*ni$)qS37X+xBk+2l#-X@epbbqi*<49 zNO>5h%>jyI1VM~O$?Ms9CtUJ69>;yHjas9LrBMVAue5=woyk;5O6n=w3BQvXt3_Jt z<3v0qWW<7EI+IFJ^d<5jFk{ull_f}j87-wAa4dr>&5@wFsD@^UE}X>|-30Y|Z) z?nW&HKT&po{kbdd{(td5{|CPMKiQ`L?Q1MaujnYG9#LTSNww!j-h?I8#PbT>3v*;t ze>vpej?IoHGmpkr5$k!*zZh+Pwi>D83x)D|=)_gj5)4G83L+N)8_E#Z%qDrKXmQ@O zn5WWAw0N_(5YH(iy{TiRS+2L*AK!H&p~KcHeiO(4<@@^}^>$LDB*R&C+(K#@d0+3P zVlF6>QWXw493Qh*##jDh{))~o^egNyq2%ufn6Zi0?EfX0SbQS(Z63|YP)JpzNSXg? zayVhfQQ{W4e;1mwQfWI;6w~AjP$9#1)XlaS?l704tB)sAHS}sM&?=$L7|roam)q(@ zgV;VU0jVmBhwQpZF4G+ybd2l7c4@q!a6M=q$c`e4a*@c+PGE5hXB1WuZUr2^W+N+6 zF7!|*mf;^tHnTSGwC7ma2c5^fqxI^9FSO)$Q8ypeUq)t8oLvE?DScuE4@|OJGCd|m zcooz`Ce(B`@%Q~+Z?(8#sF^MdB?${1V=tVuo1*>FW|I`>OkUIJolglUHX(m~HGh5b zg^-MM$`mxbJ#?Mg$DsvZD~k~rhn`=OLbMbG{; zOwr%vG(kF{5O<_SXvXaL>(A2J^Zv30qxe7>C6_{*78HIptu0o6iGt|;ge>o2A{Y@A zNp!r;=)cQLO5#irG*rJmmCh!o$>B=9JBX_(xBVLorrku-B~r5KsgW%0jNTHDj7UAy z3^fEHG~Mt`F!;RW*!Hl%--x@FKNHErGp0M#Yb0^ukv8!tEkl3c6y`IlIEm&*Tf3bns*;;B1wAx8FG{ zoAaF`zI-$gY2BtgYa%{$kx5Ok@IQS)G?!IX-FH$z~sV6hIKq-}m7zGb+G4XLyY-*t#gMOmr1r$cR@w^hT5pEd*6roz8ahfXPX>ptL@_v!D!iB7 z6#9MTq2S`&i8**(LZGTEk>4{`g7LeiI&41eVNsm(e}pzN(v<$@sG=NN8{55qvnF&T zkD=@17;3W#)zxbBMJB$Nj%P`s;{qF{CL{?ew*-y~726Cs3yt>_S3|$rW zxiLh(w}wyshFlQh7Q}@X8L7mgCiylQGS9Ey*s3E>N;^;FZ$bB~s;dd3r7;8;DqzP6 zl17?(SNqfC_};BLdE!o_#F`re%0QcJ(B+ep8oKCZwfT+MNVjv-(J@*QcH`N@XloKR zT4gIQ5)_$%H7*wp-uVefy*$p)(M7%p6?!_Bv#bIv8YICHR)tEaiBr)v#yFY?5eZCF zMMV@OuBopM=N}cSUcVn&7W1ujuk{V8OdO3KpAUEzPdx2*#U=a6rTo~#hR)}QUz*mU z`;SsE>_1gLeFI$tw8q66&Zux;t1|_Iu~43b-2hdhj^LuMz?YGyKv(7s7jhnQs5<(K z>ZVLLg79)X8(TFqsz2|!qCxTkMN#$6yYrX3g(3Q-u~1b?5|uWvtM+YA8%q&ug>dma zr6CbQUERg%1El;S#LM#y+I7uLLXuWmmf9+5-^_9(ZTuLk`%;5Q0CLBoh>{3usrc7s zd9G)eO1X~PrH_poK7rpjlK(~k?9yo}c(*oKlr1KtFE! zUV7RITKmy40%({t8FH=H;P5?K}0bP?r@P>6OQF1R|F0qrOrr(#;>Tie?O_5gXR9&UFRhsT z`D_UmYo^688Kb`}?o0Gfgx?bZ%KG$`wAAk^<4jfdgg#a~07fG1QBbD7HZ6oJ@b_FK zLge|>lgpzN*H}!Jdl^2X-K)M#BT1L=-i=wYv@UJQwDGgzT4*Jow#=uDd?b1k1UOY$ z57RLH@T#+bsQZg{dd&fx-!EN{$PYlX@~w-Lgc7Y9(9=|=Nou5{>!c#EdHm8D{e`5t zapVl|23Lo47_bb-%%=K~PJdReqsvJBcy&1^Puxi{#1Ns#F|^ne*-j1Q{McKC|3goR zp)%3oQYnkA@L?i0LewT>-wW`EW}U=~?<8O~t|hpsQlVm4L|&PkJwd(IbOQ}%vxt!Zn7sy@I%J5rA0X;-VN)!PN zxG~<4etRq-(5ufSK)YgjprSkW-P0qXqd6q1MDb# zalib!I*o7@S)XFOCt2UePrD3j1}^kFo^I<6sQ@XcZ{7B<64NqeGLo))Kp>|VhQBiZ zUR>!}ipi3&N3BS{srsu|OOpceRt_PyaW$yZ-1a_E-gxTVU6A&)|K?@sYf?3ag*oyK z*C0}ae_~aVRjB0thi4_@6I)w~uESeLlS;jh;`G&B&2KguM;q^o?AjR@8M6k{KSSa^ z&$h$}m?mLDA(Y;*9i)iJAtx6h19*p3#6IHv{6?p2@LxZhB^({>`L(HM!T=PKI9jd6 zV*l}D`D3o4;=C*=v`*&z-B!=bY`n-&c3M-#F(cZJI`xpKqPZ|d*_N7s>QNG$D%)Q| zR9JZ{)+-qoo`u)cYO1?JuNtZQYTI$t)H^F$%OHF7APEDS!8MFy?d( zA3#2exPHNqiSm$&`FW!TBac8Uw4OS2RSOdRoJH+5iJ^GH`w@aLG(^s(;s${yX2x~4 zRDn{c+C~#zBDKs1nfd-K;jc~y&f^87RP1lN28vxRd8ooxMrTiVKm1#O*B0FNM6POb zp(NHfY_)Q;#SrE4i-r0le{z>xHxq%f%iq8k4}o&6jZ?S++19a?BCYO4P<|=O+NK2A zH^uxZ$_Qq67VbxiL0`=>v1F*!g81kUyh8hX!T=3MDDf!9zU6cyk)8phsKgE zlbKcOK>3j6D^2;2$`-Ye_U3`yy=(35yUyM&D%b8FqO~bEnkB+uOE*l-_w)LU%HP^9 zn>Eddt&2c5E$I74wLOEd@|)8U>umwq+*LYCyHNs@7&%Dck0bLHDsIP@f;!~vzcTUm zF-dT+;RC^)O&O&nMO#TCRs6}AxfZ%C`xS%DJr;~CdzmaMf|1KaY7^G;FVXk5?(o$M7(Jg(L(cmNG7msP)?)Cpb(KYzjs>-X3!>%;F zg)|e#vR}iAzhhh`ah}njYSOjUwh3lY@E_82BNj;qK`-PfxDyD?l)=zs# zK}6d==-ngOAfu57MlS}On%`h1T<~?Bt%_IS=ojA1X2m>zA^D_(@$uf}qt>GOEd9Gn z9dpM2YLh)}=+Vg+zGhJ36ij)Kj*T%`Upp=Tm)|rJi-o`{zflF|A2670692>MP08ay z+S7%B(@z2`uED^~p3l=DhSCJH>{+*0atHtjHo*vR|91rcpH9mE{~s#(N11RW!Adn9 zjZ((3o)dJ*1`C4IbQ{F*p~MNvaIXZbGL7n-%0T@}(2Rz;Sg`USV*o2-Wx4$6i#p1! zqo*|4S3r#Yf8LN8zjprm$DWtSWP*tCB;yF(b@<`?MezT6xHZ`Q&r>)4RfCi_ zu>z^+74>?uCc5JdwAdai**4EbXLWhXB_%r{z!Qt+u7GIZu0P%iPaY}dMr|x^a(&=<4PghQ$ z>1M%zJf*Oo4r@xl1PF*v+<7kIjRzWO`nKBfT8jw#W&;FNswf&7TD<(j=_MYyfceGt z+mEtz-1hiDBB>RK1meCH4dzN$$H2{5O;za_%50&hhEXli|HYmfUaIL~2DR^0ayI^B!78&_|EuT&dAL+-C> zx*J`l)mU{6iU3c|#eu{wU>P~znFJIrl9v;^n)GWSzgL@xL&^(%Z4V;nGPC^<$&M&@vT zaRxH+$iY%0v3c%KeFJ#P$zzrS@}QvZ?TJqs_YM5G0IQCRjIm{B$xsdc-!U>{Lqnyl zt@B&chOc`|O$q9ztJCO`U(ieNvrOw$vz}h@xHBBi7R}rA))}MtzAs0{Mf%}C`m07h zPryl}0M9Q8pfKJO2U7@!>`!EhaS8~46y8)KM)DlK9xp+gzV?=y)#Te!#mPIWs`&Bx zOx)C4uMZ|5T0BJhP4@}k4w-!TfKDRLj!hw~&nw38u3T{wKT^gGzJhY`ySU5-`xOsj zW{;Pq>l;!pK+#}RbE7lpFj6SMu8ulQ|2(z24M_x)j~7r*tS~w@5sIisbA%=A zHx{aNcx;!)y_zkQ$(7-k`(r&~hh82;i(R_%OAFz;-fyC<4aJMK*V7}t$x2ALJzc%J zr*;71(16gRH}HBJ;0K?Ux?Tz&@!CAefg>p5lLHkQ$X+dU!X*J65a2Q@{%!9&^NdgI zW7|>a6uHs2Ureei08`cz&?7!gPd}9{PIbBlYHEV62IgUWlx8RS3ZJt&Sqs{k$~6M` zF~Si%3UYEvAaGrb>)V$mxwUaM>F_3wy2t0%PhTIpo4znJ!}m_=jl4Xw?U1@e^`|Do zCfoQ605L*-@u$tX$Mu*`$7Un+^Ux4uAfiJp2ctjfB_90e+<4j)H`&EMYlR39i^MI6 zsxK|b608lOUu^V7Io#db3*t)m*)-vv3WS0AZ$vyNn9W=K?_1;OkCzq~`x=p1;37Xh zZ*Buppz4|$Px#;A^%*iHcaQ5iBeXQsC8olcd%uga8XCCSe;xx=S*PbRx&~$F!Eh`k z&i2E>4XW)68c9qXj4c*+_O5`3Qn$L}Wk5S&_DqU`La@4lORx;;(An{d-S37#k2J0J zlL#S;#c)ip+!lD&VPAAIE6hNj`J;+$oT#X%X<8S;4`9=nH^!g}_54!O6klyu0~Xtq zU!rU0*|G$Dq@cL@Sd4rZIH@`|#&SX$vl543{YCX1hs055HBv{3KDjR3wX8&oJVmJj zR`uOBP(>wMgGRs0Yn^m+n8r%I3gLFLuwImrp&;RU!o`OQUnv=A%*tZ(lUP3|B_XN6 z9W%^Xoth(gAf!IFs#;NNvPVxc~ zJz(#jrWfB+ttE_dLLorR3o~$YlTei6cHo^v=-oQX{8uk8|w8+OxEX8hl?^ zR~=@2N(x$FpLLM^To32#^;x!^zO5i6)&*QsoQIQ5i3kBMvYOxGOX~W2RZsdT2|_1o zeb2)2*M6CS2MeUpGu%4rkvw^{&~6hNS5tF^JxZ7A_93$5ycpBj`rV(;Ka8Jv;&bWQ zd~^K?PGNgZNlCNT2CH*wpE3j8`1o3L<8-Zs{rC0-evC}zmF-fD5EsE`cn?p!VhM|{ z<7NA|R}vB?fW3tI?hIBX19qNGSD5F>agf*sv=-C<;nxbP^2D9M(-IFzk&22gz*on` z7Jd%giNuHY8tkZTvyu2M;kHi@Mp(l|?WfMcZXcY0!^w|rO^uCJ?=bC2CbIlbHyFwO z`kZaCL{CP6Kxlu~qZ=${$cuT%o0$S18?eF;0zTdP9-Mr5_Uw_LlI-w)HrQLcbQ0A! z0B~Z_+H|%$(ZsJ*dPGd$U4?7FS{wvv62HPA9r5v|m{>qONsWd`SVTyQ&DzWiH^lpd z(Ydx3-wov}W}F^GSIC1dJ?2-FN~-9MIBfX9$A~?>0s%?u`FNv0YNxlsQlIo}i*+K~VWPnZmsCqD4Lclo-nBjCMaezvPS4-z2< z#2lY7t%5AF6Eo3Io#+NG?26z-yZK>qXxTUKUYDo7k8Q{9 zhYOEuk763kF_efFZ{h_; zW1ep|+{|K{@usZUsM|Bgm19OS#uXaglA4Zj4#g%!|GlpSC;v}hiT_u~1gdDo%V??6cn$yar>f1~ARcn1w~3|aTeniTk|y*Q zkx-hrQ&t28j9Qmtfm5~?87_TCKA1$)-p(L1-r1tq=bAL}lmY8`81G>_ zXqvMo|K=t5T_~y|<`}=$*moG{FoMpRw;0cOM^xnGLY=c}&8(n_xmc;@YSw>@C!_Ej zQx7YpSTsEN&uB9-9W;T;E?$^`S!Sb=w4rdpD>F%~N>`hpNy-|_EMskjaI6!XKF~$3 zo;q?xQdK=t|MR}?V%Q*0h7t#pJET>-beFKq%;)iXx{dRlw#f!*Nq)17!xA%F3b{}N z*%Z4+)axZzZ*sb(c+hAVvl9ilQ|m~8K|v-`f^NKa)SG~Ak98<3vg~8Kd*ql8g6AQ? zVx)EdVy2w{Bt(Cyt7sQFIG7D;RLj2*8)YRCQkV8Acy@r9Y}}D^|6ngvhu{Y@kU$;# zU7?)eG+~9dBkTQ67?MweOgtkC`<=IkQ#G3YiJw?8CQba=2pqaf`k+R5{Rv=8OM(oQ z+7;uZapIFWrGk8)A~V0o>oV2knEmI9PH?o6ObBY7*T!LE6cI0BY2K6vXRNehRl>V_ z>PFZnIfVXJtK_2M{x=m4r)`KqX?zI@Q~8idyulU18YKVSu1XwN35Jr5Wcm6V(8@Np zT@WTYdZ$xg3h5jpMmFnPI%-59hshYaZB=hG3B~1!J^4o8CUq2H(D~Er<&UzD!2}C; z784r_v**j^6+=aPgG?IPDNP*+MRM426J#ul zRIwi8xBj&+TjtZ~>mZ+K(j!^fwn21eD3Dr$8S{5R1#j~#PUNHE1YxgHgu4{LCO$T? zg5%aGm6n6uEesE+-!8Ob!K%Kcl`WmJ6QS6p!_~ow zS_^2iC^&SFjn}<6%g-MqG!%#d>_LT4d8`}n1 zMn5sp(~-*_9-T`}R#LBTRS6@@qvA71u}jAgKhx3sPv5Bk8vV7&+m05u#(SqOL#u+T`27Kw(b_B4cCP`6&=<9~^$stT zK{$!2`Gpvx9wc;oYuo}}l(hX3%~C`~Fi@tb@yS3{tS__CR8a*R4vrZFMx! z>Uj*S@XyZM9bidWT~aF3il!az)0E3sk~QBw;%{RuLS|q{0Nd(_-9KG&K5kSIk9UnI zWEZd}TNk{(4OtV(h$K_{z89g?TCot8|2)fUw5dllG&5G_05V}|H(k18Gmatiuj^K zE!m_f1u=i#p)yd+Kua&kE5j|fr1@bFXG3hV7MvF5+IkCo1me_#>R*e6@BXaS`jAEbaH0vy|a& zZy+QUl3p#->4$$_*0a|)s_z-S6tN`Q4zK=bv<7`=R`2#VRHeWz$4~s)YM&=Zia8N8 ztiLGGgkx;__)k@tPN^-yF3#Sssg_DTZ zU)yDavm@**j^5z&tb0e{mfgz~XaL;!m77HtjRfUxi%J2AA zDDio;YW4Y;5n(Y}f7F2pf4A*rYeYYf)$85!YnEOK0cCB(w0UwQ=SHLb;^`*$@rtp?=>SN94eWMacR^-wLYJzq zO7>1x%?5w`!}Kw_%OmbsiFyx0I%jn`88TzEC2MEvZ8$7^e}t=+`gEY&cM4?RHY)3;Au>MQ zW&cA%4!uay;dI`ydmz5Yh-S03r83i)m9a=C^lvCIFDdF}lwnXq?$+IalppQdcNuHLGGt$OoVb7GA#WNe|uynd< z_7(dL_bygKyP9vpE}v&ws{&h0HT%->$LnLnrQkh?RHhq@V_%`7%lvox@Jy&#O^r#y zpxJnsT@bI}AbloObxt*`q$D^rRHi}(ad;aoa3p+#E)bBGg0T@%r^_r~J<4JScWX+C zwflpcGr?Xh)t~utqmIWymvbiWW@wM!iIyTkkxy%Ez)#C+Q*k&g;H`1fz!d+y$Lc-2c&C)?`y~B&l+WhOo6AG?R8}JJ|BX zx4Qa^u5U_wHNSXl+R6ApMB971G$b&cJc2Lc`Pta?g~!yif9&5$cbpFLCIe&R+%{YH zUlP@Ze?)|r4C!W@k)wF(<=sBJ)i*XUUclE5w=Hb|h6cU20fU_)C#dX-Cl-(MWVcJ?a&R%&RB-sSDj zuWh8U?QH&H-?h&(d5*dTRVIfZ%dFGn(9kD&Ds>j^Lhey5bO*D*m|hY+-*m)-6EF%5 z>1xbUL|*V@&7DoJnripnw+C^Q()T@_|d8m}0P8-akwz0^WeMeEhmmi;&CrOO;6qV%=bliLLy4p zl#Bkt86Ed%iXX)kdKNfsk#h=X+b`~g?Mt7BCRTl2?ea=-nkXK?q)r?7rXb&hAG=2( zJohpa4g%G~X= zNzuKKwres;5I5!C9rB~KT>%$D{NK|h3`+4Q>W#8lQE;=XuniTA4{8ynKDy8$B>qlw zz9q`y<1I@6a0QiYxQnudIO0#%`dMpE{>I43cZ-LTGJE5&U+rymd+H5>OyqMGTAA|= z@OYI=2(ZpqWM#8CIYz(10zR$cg$TvY4>hmnbV~^eq;CHjvQvmp)$!oXm^g+EyHA(` z*#Lc!)3Z9g#e@*4QilpZoeB^T|6msuFZ=j$y62Oh{a@uaVFLY$EC$Z?Q?*Z(jB#UY z;@eFl^vjB(s1^rYGfW%G%CrA<^k8@7jakXEP%p;={tqUE1efMs&6a%WV z#+TeU1v;ysKUJCMBYfsRE4M8Jgz`1G$nSasPoHQ4Fnbl188VYj$F##G4Arx}Q z@S(h*{pZnY<+kYS47R%HGbr46;RB-{z~8JKvpxm?(dmfBJ-N;+gpgxp z=%gn`@i`BMzsnf=mRm|MQMRCy-FH#QAh5ipx!=+Snc!FnN$~8dqi;aJQf^u^w87ak z8gWx#sDhLJ%BFlV=UnI6d0Ty2y4jMGQxRE>4HMT~@nB66$hE|vW=NpZ;<0z8y8gTI zyWosg5Mbj*J{Ge@+3JiZVPUSTt4fg9+KM<;5-K@yf;LiFtYhm` zI{WQHLQ~?)y<$rXiyQ}gpF5c2LBE^KgSoCPJqSc6rjJjk?AhgDGDvC+UU^dy7wg!E! zq04<*;6(NQR-ib%P@TJ9XR=?mW79sNOZVflH5_lsR)R2=5-(y`Me#vb@ssr_7CXHfetw)8bUA#M?Zv}M1d zInSeWJ|}RED26n-#0DG+7LgM1S4s26GbJtLPP!GI#A77ski3#H8*C$FvvxPV8>N8W=*>x#W~i%!n42SV#x#LjES?QH1H7OEy!*vRy`y54kwK17R({i2$0vkzXpEXH6)p!nThc zJ3YM(EQune%uw%XALu@W@d`PAKZu+_Bq*y7mZt}7FLX9p#No<3nNZJgINB18mQ$s~ z0nDy(BY}=v(}tor{3YWscpOYUD^<$9+h?K3PFgHaWDcY6ww=Q{o%!jurH~vVvsbP{ zY{k{6hs(`VeF@W7OwziYKPJ20$1Z)8KSo{&kUAbWz5l@e1CTvmev(%~fznK$3;@<9 z@spxXpzIXJPB3pH`WkRcusvH(x-CKeubB<_;@?faa{*$gzRefq{{$7!`bjY>v@)>& zjd_q}O-WRZ$v9Q40ESSIVb>*Tb-Wf>9EQZ`v9ixx^;H0+EofnWd2zE2X20Il(A7(VJAR=hF2z`KwJLDsqri0lsp{w8aYQtxtN^-1ub3zoHoKKUKwWKrUc@ zLj87=u-|HiiPWVyX%37n5WBdLp#+2$b?cW|L_r!`>*n$$8sG0#6{QN|(^u+zOv>rn z^4rt(l$er)97#sfttPCwU+oj`l3~lm0dqA1Dv*ZHy-ScgRHpdNK4yGTWR2e^PkKT@ oLV9|FNLZQz^FPr4-LNP~Z?)(?3E9UA16Pm~Wz}SArA&kW8#(bvH2?qr literal 26102 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
  • N5_);y(+{nH%-$by(0iA)!Hyb&TBynu4GwbH4JYeZ1 z9AzflivQTIy%q_c8r4lxp546&lR=jm$2}f%=ogFbaW=+a>SDBF{EMG$&o+N-|73|) z0B4vjKvo`y1Hs)kmQt?HV!vVLoi8GE`a)Q_4wwN%hH?}?Ef6(96R1XP@aR3o=Y&c0BziW%NdQ1T1 zv5PcuvbsFj@!9;@XJbC@8YxQS-=tpOIeAJ?J^MR|ne>6%#?C&H5C(I-EjX8I*c;R6 zLzY0v({D?oQABmLU=nm(ikA;!K-DRVGny#ecGL{$xo5{gy|K0!aTX1y1i9h6k4sZi zNk`u3OM}4_0kP7=$-pcGWFNO0Te_f$b`cv34`75V)goMj;YzFH$r|LI=M}GZ8wd1_a;U{-P44`8{wKi3Un0U-+&?7g$;B0n?3Z4i7Gi2@Vc%<0eD|RVmQhJ)_U3HqKR$uPS(#f<&uvn3VxYY-Q zltg~qPAuFt=^&47&9K;Annm?#uCSvDrT%Y*aVa<^&zQ9@1aokc*7338DFYV_at|+10o>{_&Sp z%6Y6xEOz5#nb+&@3kmKkS`(zC^Zi$Qn33c?9IO&u$~cloh`5Tr#;b5UuDo-?7m@cN z`t6dmAxsUDv_fu2Ue=)5$rwmP!F1zRRQF{_9%UE~v>}M?JLR0{`i=n(w^#irS0)I= z8q`PMU^wf53wv>pCA!)eYIYRFt3yvxN?ntzxKP&sl4ZaIpIi-keE`77E!||qYcv~O z3CV^1M!&Y7`2K;E3xE5U)y2TLmGnpv>wq^;PEsrKE41B1NmD4x9P7zt#m?{5v3Y!o z10P^(6E&C*=BYSaYp#g6HCfrpg(uy+MZE-cZOi#%pk>W_`ip(Izcje9P%PYk;(#J! zz9bchUPNiyNyIyXAKU;zFz3lPY4L+U;XbccSXAdcCYh;478w?YQ)D!+nt-2OOtA4Adttlb0vR zWb)TYYOD?lkq}BhR9W_aHQfuhF4ubWoBzSQw()lwDIf4q!|Smm%`xJJDepL0#i00G ze4X*RJL3IX*|zLW{rV7*9;=ZGY*>cuy1YJ@sheE(N?9eAt6pKWL=P$Pne2eHbeW@L zJ^=?!W3mKo7IM@?zwPj*{37?^tI**zmQq&sPDm)QP+W06GBP#B$6HUw@D0K(qs_7H zV^b(QdY>XkJ0&Z1cPYCUMOPp@2WLu_evI| zK;>8*dK!ZA)~qfNmur}1hk1X^{mDg1~fb#9)=v!k1dDy zOdp|+J|=hv_zyGA)-C(uxr%{TDv;y4L2Sul5KCs|SN z4Px*$+PghoG>6jUNpe{do>uRX?Fe4Wr0|&n7B0d;;QdPn81d0sbv9G&tCkB+Sn)+^ z70Cyy4vEp`Du;m2M@Bv*UDu6(`8~64LtgVu&kSjV=ibWpy0Wr7mT6X|Y;zJ%YII(F z0R$QGSJpFqTV=H3@!~sT&#qcbrX?TUF+KxyK!R8!du942_w^$-?waJ%$_R@XO@iB4 zdHx{{qq{|R;~E78#6EOC6eU2N5v4%2!EC@AKI3Ss$MqlBb?m2Zq5K#IbrGV8Lw|V< zi>&0&ZUB&=L#bP&)IKb1++h2$6^kiZVR|}=CN)XHWzsozh^^{G-C{w&M9{Z{9w+j= zO*AKwD!?!ayR(dwOc*z}dggF`3a{Vg^M- z`bWBva=FNCJv6<6=E!-Irv98h!A?hGCJTpJMxX@i@oNDY=Qu7t>cNkX{Y>hU{E>zg zqOm&NNHM1Wu=^-nATLGZBiJaG7uob4Exn!$YG@fA)jOaV8B0J8cM7p?##8bZGB7pS z59_ncS00aC%c^bg(;J-p%^7D1f~eyn&80^ z)hAY^X<}F0k8Q%i+l}CNJ@XqTs-~$fMUzD;qs>7rJ7@UlQ77qH*X_*j(_3$mo(0!1PcHV zpIA+|o6Lhx2B;E@=kN+nrR6Cyl;6<3-gNRtrZid1rr+Qit^KO@o*1^k@RJ{%?Ai5i zz(k(H9o{xRh|OxClqtjs&)3EcnMWbwo?KHuI~zV+=pPnfmz;XEo&NQP0{ajrV83AF zhl+?IbDTlT&Cy{5Gcq2j+5NpPyc>UN$RW!Hdu`;TlaqNr8K+kD)$>RK^8mVWlbv5A z^$u1nMWRS6ikpltX%VAzP!D=VnQ-$+toav?}MGU{oA z8t%I3i*$myH44dsAeO6=Le zFA6X)aK?Y1Bk;Q(GqXjusTyc9V_G7co~m`ho-%qkKkje>lm<#H3Ot@v;cLf9^q3J8 zdx0t=-ysD77+G6oJU3p}p2`$WbqNuz_mwno5rYOMG_gZ?>$7gs5eMC{ZhKex6&vKF zkb-g5&yJW$1Z!2Y6U=AKjv<=&VH|x@ayx{d>0xOzG`>@RK|HFuiW|nYCb+d+c&bT8 zS)4N%t%9Ak#OuAjV|#hKjc}KiD_hw~&`B*dY96axCqWx<_^k1CSR7q_=#O+p-W@H=L`KQbA$v#pIywly?)qFJD{TP>Aq-gyCU(z^`2{(QhC*PHd=YGg7z~giD zOY$~QBfugkjD-K(XLxUQJJQxiBF?alg{lVOR^e*WQWKR>@3*Qfb?Z4kbbeoH+LT;3 z-<%-+z(&!_D2b_kwRbxs$~<{TMy*M%ie+g?3hCQ_d6{Mq?PSOkLbwy7?TMZk zVqo5PNDf?vCS}4v`{sJfbDy=VIg!J&Eyy+Qd%8-CwT$dcCj+k`#c2)C`A5q*g$SRY zRH@}KC2MuV-^eZ$)tW`{sidL% zhM+h72bF3iPT-%i@oMUq)8Z-_q}F(fH*NJBW-mCvm$_o>fpa@Lv?!~Z;*!q@tN~;x z9;Af5D}WBNyb-N8u}#lx5x|F}YIbv%`;CP{6=C3g?zPWVq%Jk{ycfVR?x$IecJEML zG07O<^MZcH=kiC)6g0*lqcLOrus+Hf5dDu(8dYcsc6h4ld%v+BkL<_Jk0B?IBxOY0 z5oBA^X;G4vnYE=dCMK1WPTFPK{Db9-#t10Xnldd*w5c$|A~E1pXwn+EXbTn7eJpzR zvi5z*Rfq%X(9cE^v;0#0@Kfb6V)sD%N?{fdB-kmcuQhl$pDFTaY^FtnE_poHtm~W1 z>UP@YtWMm?Cs`FK`$O-d_;6T@fy>TyKwadAq%fTdedMI5iH?bmEA0aEg?F4f#^s+V z0@INRU5JbG>0H>K*JJ;qAk-*W!nvGFl?;*J3fh6;l}SQF2Q1Tp1nP2!c{+n!@Ip=` zVW)nIp*n@``S@cU!kI)`;Yf0Iaa^cL=ItnoU&nB$de@<%6DgzcKbJ}o!g}4aRfbpu zrvnFq$j-K7g=xRF)fY_rW;t&zQAD7!t@F1cEyU1er$JS1y~kb-sCxl6wvu2GJTd zdW_`!a?q9gzp#_xJp}!Io&-jR8B|OC>ENJ-*5?2b>I-qbeCjWQ*H3NblryT)s?Zq0 z38$N?5{LCFXF1;87lV!~=B>9deW!gkTarA*8*-ogb{hf`m?~Ak5_4fzOju@dK=+py z?l!L^<{z@&g6YLLNcNo!a+GlxBanu3Wc7nxR)))$Y^OQ234X1U)X6S z851JH``NSDnDNRI8HHnvzmCyah%J9rd?AB@d3_Z>@`S#_!2iA6zJ { @@ -66,6 +69,7 @@ class EmojiPicker extends React.Component { filter: "", scrollTop: 0, viewportHeight: 280, + showHighlight: false, }; // Convert recent emoji characters to emoji data, removing unknowns and duplicates @@ -233,6 +237,20 @@ class EmojiPicker extends React.Component { private onKeyDown = (ev: React.KeyboardEvent, state: RovingState, dispatch: Dispatch): void => { if (state.activeNode && [Key.ARROW_DOWN, Key.ARROW_RIGHT, Key.ARROW_LEFT, Key.ARROW_UP].includes(ev.key)) { + // If highlight is not shown yet, show it and reset to first emoji + if (!this.state.showHighlight) { + this.setState({ showHighlight: true }); + // Reset to first emoji when showing highlight for the first time (or after it was hidden) + if (state.nodes.length > 0) { + dispatch({ + type: Type.SetFocus, + payload: { node: state.nodes[0] }, + }); + } + ev.preventDefault(); + ev.stopPropagation(); + return; + } this.keyboardNavigation(ev, state, dispatch); } }; @@ -274,6 +292,15 @@ class EmojiPicker extends React.Component { private onChangeFilter = (filter: string): void => { const lcFilter = filter.toLowerCase().trim(); // filter is case insensitive + + // User has typed a query, show highlight + // If filter is cleared, hide highlight again + if (lcFilter && !this.state.showHighlight) { + this.setState({ showHighlight: true }); + } else if (!lcFilter && this.state.showHighlight) { + this.setState({ showHighlight: false }); + } + for (const cat of this.categories) { let emojis: IEmoji[]; // If the new filter string includes the old filter string, we don't have to re-filter the whole dataset. @@ -335,6 +362,9 @@ class EmojiPicker extends React.Component { }; private onEnterFilter = (): void => { + // Only select emoji if highlight is shown + if (!this.state.showHighlight) return; + const btn = this.scrollRef.current?.containerRef.current?.querySelector( '.mx_EmojiPicker_item_wrapper [tabindex="0"]', ); @@ -391,7 +421,9 @@ class EmojiPicker extends React.Component { /> diff --git a/src/components/views/emojipicker/Search.tsx b/src/components/views/emojipicker/Search.tsx index db6ca813df..007fa2251d 100644 --- a/src/components/views/emojipicker/Search.tsx +++ b/src/components/views/emojipicker/Search.tsx @@ -71,7 +71,9 @@ class Search extends React.PureComponent { onChange={(ev) => this.props.onChange(ev.target.value)} onKeyDown={this.onKeyDown} ref={this.inputRef} - aria-activedescendant={this.context.state.activeNode?.id} + // Setting aria-activedescendant on the input allows screen readers to identify the active emoji. + // Setting it when there is not a query causes screen readers to read out the first emoji when focusing the input, and it continually tells you you are in the table vs the input. + aria-activedescendant={this.props.query ? this.context.state.activeNode?.id : undefined} aria-controls="mx_EmojiPicker_body" aria-haspopup="grid" aria-autocomplete="list" diff --git a/test/unit-tests/components/views/emojipicker/EmojiPicker-test.tsx b/test/unit-tests/components/views/emojipicker/EmojiPicker-test.tsx index ad56b76adc..2226a70c1c 100644 --- a/test/unit-tests/components/views/emojipicker/EmojiPicker-test.tsx +++ b/test/unit-tests/components/views/emojipicker/EmojiPicker-test.tsx @@ -17,6 +17,10 @@ import SettingsStore from "../../../../../src/settings/SettingsStore"; describe("EmojiPicker", function () { stubClient(); + // Helper to get the currently active emoji's text content from the grid + const getActiveEmojiText = (container: HTMLElement): string => + container.querySelector('.mx_EmojiPicker_body .mx_EmojiPicker_item_wrapper [tabindex="0"]')?.textContent || ""; + beforeEach(() => { // Clear recent emojis to prevent test pollution jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName) => { @@ -77,11 +81,14 @@ describe("EmojiPicker", function () { expect(input).toHaveFocus(); function getEmoji(): string { - const activeDescendant = input.getAttribute("aria-activedescendant"); - return container.querySelector("#" + activeDescendant)!.textContent!; + return getActiveEmojiText(container); } expect(getEmoji()).toEqual("😀"); + // First arrow key press shows highlight without navigating + await userEvent.keyboard("[ArrowDown]"); + expect(getEmoji()).toEqual("😀"); + // Subsequent arrow keys navigate await userEvent.keyboard("[ArrowDown]"); expect(getEmoji()).toEqual("🙂"); await userEvent.keyboard("[ArrowUp]"); @@ -129,9 +136,7 @@ describe("EmojiPicker", function () { } function getVirtuallyFocusedEmoji(): string { - const activeDescendant = input.getAttribute("aria-activedescendant"); - if (!activeDescendant) return ""; - return container.querySelector("#" + activeDescendant)?.textContent || ""; + return getActiveEmojiText(container); } // Initially, arrow keys use virtual focus (aria-activedescendant) @@ -140,6 +145,13 @@ describe("EmojiPicker", function () { expect(getVirtuallyFocusedEmoji()).toEqual("😀"); expect(getEmoji()).toEqual(""); // No actual emoji has focus + // First arrow key press shows highlight without navigating + await userEvent.keyboard("[ArrowDown]"); + expect(input).toHaveFocus(); // Input still has focus + expect(getVirtuallyFocusedEmoji()).toEqual("😀"); // Virtual focus stayed on first emoji + expect(getEmoji()).toEqual(""); // No actual emoji has focus + + // Second arrow key press navigates await userEvent.keyboard("[ArrowDown]"); expect(input).toHaveFocus(); // Input still has focus expect(getVirtuallyFocusedEmoji()).toEqual("🙂"); // Virtual focus moved @@ -163,4 +175,98 @@ describe("EmojiPicker", function () { expect(getEmoji()).toEqual("🙃"); // Actual focus moved right expect(input).not.toHaveFocus(); }); + + it("should not select emoji on Enter press before highlight is shown", async () => { + // mock offsetParent + Object.defineProperty(HTMLElement.prototype, "offsetParent", { + get() { + return this.parentNode; + }, + }); + + const onChoose = jest.fn(); + const onFinished = jest.fn(); + const { container } = render(); + + const input = container.querySelector("input")!; + expect(input).toHaveFocus(); + + // Wait for emojis to render + await waitFor(() => { + expect(container.querySelector('[role="gridcell"]')).toBeInTheDocument(); + }); + + // Press Enter immediately without interacting with arrow keys or search + await userEvent.keyboard("[Enter]"); + + // onChoose and onFinished should not be called + expect(onChoose).not.toHaveBeenCalled(); + expect(onFinished).not.toHaveBeenCalled(); + + // Now press arrow key to show highlight + await userEvent.keyboard("[ArrowDown]"); + + // Press Enter again - now it should work + await userEvent.keyboard("[Enter]"); + + // onChoose and onFinished should be called + expect(onChoose).toHaveBeenCalledWith("😀"); + expect(onFinished).toHaveBeenCalled(); + }); + + it("should reset to first emoji when filter is cleared after navigation", async () => { + // mock offsetParent + Object.defineProperty(HTMLElement.prototype, "offsetParent", { + get() { + return this.parentNode; + }, + }); + + const onChoose = jest.fn(); + const onFinished = jest.fn(); + const { container } = render(); + + const input = container.querySelector("input")!; + expect(input).toHaveFocus(); + + function getEmoji(): string { + return getActiveEmojiText(container); + } + + // Initially on first emoji + expect(getEmoji()).toEqual("😀"); + + // Show highlight with first arrow press + await userEvent.keyboard("[ArrowDown]"); + expect(getEmoji()).toEqual("😀"); + + // Navigate to a different emoji + await userEvent.keyboard("[ArrowDown]"); + expect(getEmoji()).toEqual("🙂"); + await userEvent.keyboard("[ArrowDown]"); + expect(getEmoji()).toEqual("🤩"); + + // Type a search query to filter emojis (this sets showHighlight=true) + await userEvent.type(input, "think"); + await waitFor(() => { + // After filtering, we should be on the "thinking" emoji + expect(getEmoji()).toEqual("🤔"); + }); + + // Clear the search filter + await userEvent.clear(input); + + // After clearing, showHighlight is false, so the highlight is hidden + // The activeNode might still be on 🤔, but we can't see it + + // Press arrow key - this should reset to first emoji AND show highlight + await userEvent.keyboard("[ArrowDown]"); + await waitFor(() => { + expect(getEmoji()).toEqual("😀"); // Should now be on first emoji with highlight shown + }); + + // Next arrow key should navigate from first emoji + await userEvent.keyboard("[ArrowDown]"); + expect(getEmoji()).toEqual("🙂"); + }); }); From 24fc018845977f4b402bfcd5e318c416c18acbf2 Mon Sep 17 00:00:00 2001 From: ElementRobot Date: Sat, 1 Nov 2025 06:18:47 +0000 Subject: [PATCH 19/28] [create-pull-request] automated change (#31150) Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com> --- playwright/testcontainers/synapse.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playwright/testcontainers/synapse.ts b/playwright/testcontainers/synapse.ts index 89ef887d4c..f5e96d50dc 100644 --- a/playwright/testcontainers/synapse.ts +++ b/playwright/testcontainers/synapse.ts @@ -7,7 +7,7 @@ Please see LICENSE files in the repository root for full details. import { SynapseContainer as BaseSynapseContainer } from "@element-hq/element-web-playwright-common/lib/testcontainers"; -const TAG = "develop@sha256:8bae6225b998cbf0c09260b8dd66f320109a3d6d156ad289d2c3dbcb03f5fce9"; +const TAG = "develop@sha256:4c89333b1d25401ea72e4042f4f651a34e455370541284ff3e417f84e926edd9"; /** * SynapseContainer which freezes the docker digest to stabilise tests, From 54f967efd588c0120ed470fdbcdb5db1086e3a4a Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 3 Nov 2025 13:25:08 +0000 Subject: [PATCH 20/28] Hide room header buttons if the room hasn't been created yet. (#31092) * Hide room header buttons if the room isn't ready * update test * update unit tests * Remove on-click actions --- .../send-your-first-message-view-linux.png | Bin 27946 -> 25775 bytes .../views/rooms/RoomHeader/RoomHeader.tsx | 236 ++++++----- .../__snapshots__/RoomView-test.tsx.snap | 394 +----------------- 3 files changed, 141 insertions(+), 489 deletions(-) diff --git a/playwright/snapshots/invite/invite-dialog.spec.ts/send-your-first-message-view-linux.png b/playwright/snapshots/invite/invite-dialog.spec.ts/send-your-first-message-view-linux.png index ec2d8d5443e05bcff3ea0bb3f03e625b0c751e75..36ba4b247d8765eb138abc1fae8689c0fd65e6eb 100644 GIT binary patch literal 25775 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 GZ~qPZzii_G diff --git a/src/components/views/rooms/RoomHeader/RoomHeader.tsx b/src/components/views/rooms/RoomHeader/RoomHeader.tsx index 8c162216ba..cdc0a1b8a7 100644 --- a/src/components/views/rooms/RoomHeader/RoomHeader.tsx +++ b/src/components/views/rooms/RoomHeader/RoomHeader.tsx @@ -7,7 +7,7 @@ Please see LICENSE files in the repository root for full details. */ import React, { type JSX, useCallback, useMemo, useState } from "react"; -import { Body as BodyText, Button, IconButton, Menu, MenuItem, Tooltip } from "@vector-im/compound-web"; +import { Text, Button, IconButton, Menu, MenuItem, Tooltip } from "@vector-im/compound-web"; import VideoCallIcon from "@vector-im/compound-design-tokens/assets/web/icons/video-call-solid"; import VoiceCallIcon from "@vector-im/compound-design-tokens/assets/web/icons/voice-call-solid"; import CloseCallIcon from "@vector-im/compound-design-tokens/assets/web/icons/close"; @@ -54,22 +54,15 @@ import { RoomSettingsTab } from "../../dialogs/RoomSettingsDialog.tsx"; import { useScopedRoomContext } from "../../../../contexts/ScopedRoomContext.tsx"; import { ToggleableIcon } from "./toggle/ToggleableIcon.tsx"; import { CurrentRightPanelPhaseContextProvider } from "../../../../contexts/CurrentRightPanelPhaseContext.tsx"; -import { type LocalRoom } from "../../../../models/LocalRoom.ts"; +import { LocalRoom } from "../../../../models/LocalRoom.ts"; -export default function RoomHeader({ +function RoomHeaderButtons({ room, additionalButtons, - oobData, }: { - room: Room | LocalRoom; + room: Room; additionalButtons?: ViewRoomOpts["buttons"]; - oobData?: IOOBData; }): JSX.Element { - const client = useMatrixClientContext(); - - const roomName = useRoomName(room); - const joinRule = useRoomState(room, (state) => state.getJoinRule()); - const members = useRoomMembers(room, 2500); const memberCount = useRoomMemberCount(room, { throttleWait: 2500, includeInvited: true }); @@ -101,12 +94,9 @@ export default function RoomHeader({ const dmMember = useDmMember(room); const isDirectMessage = !!dmMember; - const e2eStatus = useEncryptionStatus(client, room); const notificationsEnabled = useFeatureEnabled("feature_notifications"); - const askToJoinEnabled = useFeatureEnabled("feature_ask_to_join"); - const videoClick = useCallback( (ev: React.MouseEvent) => videoCallClick(ev, callOptions[0]), [callOptions, videoCallClick], @@ -242,7 +232,118 @@ export default function RoomHeader({ isVideoRoom || roomContext.mainSplitContentType === MainSplitContentType.MaximisedWidget || roomContext.mainSplitContentType === MainSplitContentType.Call; + return ( + <> + {additionalButtons?.map((props) => { + const label = props.label(); + return ( + + { + event.stopPropagation(); + props.onClick(); + }} + > + {typeof props.icon === "function" ? props.icon() : props.icon} + + + ); + })} + + {isViewingCall && } + + {hasActiveCallSession && !isConnectedToCall && !isViewingCall ? ( + joinCallButton + ) : ( + <> + {!isVideoRoom && videoCallButton} + {!useElementCallExclusively && !isVideoRoom && voiceCallButton} + + )} + + {showChatButton && } + + + { + evt.stopPropagation(); + RightPanelStore.instance.showOrHidePhase(RightPanelPhases.ThreadPanel); + PosthogTrackers.trackInteraction("WebRoomHeaderButtonsThreadsButton", evt); + }} + aria-label={_t("common|threads")} + > + + + + {notificationsEnabled && ( + + { + evt.stopPropagation(); + RightPanelStore.instance.showOrHidePhase(RightPanelPhases.NotificationPanel); + }} + aria-label={_t("notifications|enable_prompt_toast_title")} + > + + + + )} + + + { + evt.stopPropagation(); + RightPanelStore.instance.showOrHidePhase(RightPanelPhases.RoomSummary); + }} + aria-label={_t("right_panel|room_summary_card|title")} + > + + + + + {!isDirectMessage && ( + + { + RightPanelStore.instance.showOrHidePhase(RightPanelPhases.MemberList); + e.stopPropagation(); + }} + aria-label={_t("common|n_members", { count: memberCount })} + > + {formatCount(memberCount)} + + + )} + + ); +} + +export default function RoomHeader({ + room, + additionalButtons, + oobData, +}: { + room: Room | LocalRoom; + additionalButtons?: ViewRoomOpts["buttons"]; + oobData?: IOOBData; +}): JSX.Element { + const client = useMatrixClientContext(); + const roomName = useRoomName(room); + const joinRule = useRoomState(room, (state) => state.getJoinRule()); + const dmMember = useDmMember(room); + const isDirectMessage = !!dmMember; + const e2eStatus = useEncryptionStatus(client, room); + const askToJoinEnabled = useFeatureEnabled("feature_ask_to_join"); const onAvatarClick = (): void => { defaultDispatcher.dispatch({ action: "open_room_settings", @@ -256,23 +357,29 @@ export default function RoomHeader({ {/* We hide this from the tabIndex list as it is a pointer shortcut and superfluous for a11y */} + {/* Disable on-click actions until the room is created */} + {/* Disable on-click actions until the room is created */} - - {additionalButtons?.map((props) => { - const label = props.label(); - - return ( - - { - event.stopPropagation(); - props.onClick(); - }} - > - {typeof props.icon === "function" ? props.icon() : props.icon} - - - ); - })} - - {isViewingCall && } - - {hasActiveCallSession && !isConnectedToCall && !isViewingCall ? ( - joinCallButton - ) : ( - <> - {!isVideoRoom && videoCallButton} - {!useElementCallExclusively && !isVideoRoom && voiceCallButton} - - )} - - {showChatButton && } - - - { - evt.stopPropagation(); - RightPanelStore.instance.showOrHidePhase(RightPanelPhases.ThreadPanel); - PosthogTrackers.trackInteraction("WebRoomHeaderButtonsThreadsButton", evt); - }} - aria-label={_t("common|threads")} - > - - - - {notificationsEnabled && ( - - { - evt.stopPropagation(); - RightPanelStore.instance.showOrHidePhase(RightPanelPhases.NotificationPanel); - }} - aria-label={_t("notifications|enable_prompt_toast_title")} - > - - - - )} - - - { - evt.stopPropagation(); - RightPanelStore.instance.showOrHidePhase(RightPanelPhases.RoomSummary); - }} - aria-label={_t("right_panel|room_summary_card|title")} - > - - - - - {!isDirectMessage && ( - - { - RightPanelStore.instance.showOrHidePhase(RightPanelPhases.MemberList); - e.stopPropagation(); - }} - aria-label={_t("common|n_members", { count: memberCount })} - > - {formatCount(memberCount)} - - + {/* If the room is local-only then we don't want to show any additional buttons, as it won't work */} + {room instanceof LocalRoom === false && ( + )} {askToJoinEnabled && } diff --git a/test/unit-tests/components/structures/__snapshots__/RoomView-test.tsx.snap b/test/unit-tests/components/structures/__snapshots__/RoomView-test.tsx.snap index d8ffc52308..77a8440bb6 100644 --- a/test/unit-tests/components/structures/__snapshots__/RoomView-test.tsx.snap +++ b/test/unit-tests/components/structures/__snapshots__/RoomView-test.tsx.snap @@ -9,19 +9,18 @@ exports[`RoomView for a local room in state CREATING should match the snapshot 1 class="flex mx_RoomHeader light-panel" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: start; --mx-flex-gap: var(--cpd-space-3x); --mx-flex-wrap: nowrap;" > - + - - -
    -
    -
    - - u - - - u - -
    - 2 -
    -
    - +
    - - -
    -
    -
    - - u - - - u - -
    - 2 -
    -
    - + - - -
    -
    -
    - - u - - - u - -
    - 2 -
    -
    - + -
    - - - -
    - - -
    -
    -
    - - u - - - u - -
    - 2 -
    -
    Date: Mon, 3 Nov 2025 16:02:21 +0000 Subject: [PATCH 21/28] Use compound Button styles for Jitsi button (#31159) * Use compound styles for jitsi button * lint --- src/vector/jitsi/index.pcss | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/vector/jitsi/index.pcss b/src/vector/jitsi/index.pcss index 09299f1b7f..f51559f19a 100644 --- a/src/vector/jitsi/index.pcss +++ b/src/vector/jitsi/index.pcss @@ -7,6 +7,7 @@ Please see LICENSE files in the repository root for full details. /* TODO: Match the user's theme: https://github.com/element-hq/element-web/issues/12794 */ +@import url("@vector-im/compound-design-tokens/assets/web/css/compound-design-tokens.css"); /* Path to `res` dir in the source tree */ $res: ../../../res; @@ -70,16 +71,22 @@ html { } #joinButton { - /* A mix of AccessibleButton styles */ - cursor: pointer; - padding: 7px 18px; + /* Copy of Compound Button styles */ + border: 1px solid var(--cpd-color-bg-action-primary-rest); + color: var(--cpd-color-text-on-solid-primary); + background-color: var(--cpd-color-bg-action-primary-rest); + padding-block: var(--cpd-space-2x); + padding-inline: var(--cpd-space-8x); + min-block-size: var(--cpd-space-12x); text-align: center; - border-radius: 4px; - display: inline-block; - font-size: 14px; - color: #ffffff; - background-color: #03b381; - border: 0; + border-radius: 24px; + display: inline-flex; + align-items: center; + justify-content: center; + font: var(--cpd-font-body-lg-semibold); + border: none; + word-break: keep-all; + cursor: pointer; } .icon { From b0cdbf5eff17e78a91a1470040c990bf85183efb Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 3 Nov 2025 16:26:47 +0000 Subject: [PATCH 22/28] Make shared component build work in isolation (#31066) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Make shared component build work in isolation * Add deps that were missing because they were getting picked up from element-web main but shared-components needs itself * Exclude test files from dts generation * Bump version * Change all the shared-component import to be the built artifact * Don't randomly inhale eslint configs in parent dirs please * maybe we don't need this anymore? * maybe fix build * Maybe fix docker build * More build faff * build:res on the parent as part of shared component prepare * link shared component repo inn docker build * 💅 * 💅x2 * Try converting the translation keys to a .d.ts file manually so it gets bundled rather than left as a relative import to the json file * add the script * Add this back for 2nd time now I think * Shouldn't need this anymore * patch-package on prepare because we're patching a dev dependency so it won't be there if we're installed as a dependency * Unused import * Prettier compliance * Only use counterpart from shared components as per comment * Import shared components CSS * Prettier * Call the one from shared components rather than recurse infinitely * Hopefully make tests work * wake up, comment goes before import * Fix lint errors * Fix dupe TranslationKey export * Update compound-web to fix type error An update to @types.react adds the 'hint' value to the enum of the 'popover' attribute and this version of compound-web uses the maching verson of @types/react so they don't conflict. * Maybe, hopefully, get the types working? Please? * Add copyright header to i18nkeys as eslint complains otherwise since it's now in src * prettier * stop running shared-component tests in EW * update snapshots because flex is now from an external stylesheet I guess * More snapshots * Manual class update * Avoid bundling compound bits Because a) it's silly and b) it means we end up bundling a copy of floating-ui too which causes absolute madness with its useDelayGroup contexts. * ignore test util files for coverage * Add !important because the styles are being applied in a different order now * Another !important because css order has changed * Try adding it here to make the test files ignored * More !important * commit yarn lock change * Add shared components coverage file * Update snapshots Because the line height was being overridden to 22.5px somehow by something I can't find, and now isn't: surely the normal 1.5rem is more sensible. * Update snapshots, attempt 2 * Another !important * More snapshot updates * Add test for i18n wrappers & add test script * lint * Prettier * Hopefully run shared component tests * don't need this bit for non-matrix * install ew deps * rigfht coverage location * Rename job here too * Try different coverage filename * Fix copyrights & comment * Typo Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> --------- Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> --- .../shared-component-visual-tests.yaml | 4 - .github/workflows/static_analysis.yaml | 8 - .github/workflows/tests.yml | 61 +- .gitignore | 1 + jest.config.ts | 2 +- package.json | 2 +- packages/shared-components/.eslintrc.js | 1 + packages/shared-components/.prettierignore | 1 + packages/shared-components/babel.config.js | 21 + packages/shared-components/jest.config.ts | 58 + packages/shared-components/package.json | 28 +- .../scripts/gatherTranslationKeys.ts | 61 + .../AudioPlayerView.module.css | 2 +- .../AudioPlayerView.test.tsx.snap | 2 +- .../Clock/__snapshots__/Clock.test.tsx.snap | 2 +- .../PlayPauseButton.module.css | 4 +- .../PlayPauseButton.test.tsx.snap | 2 +- .../__snapshots__/SeekBar.test.tsx.snap | 2 +- .../AvatarWithDetails.test.tsx.snap | 2 +- .../TextualEventView.test.tsx.snap | 2 +- .../src/event-tiles/TextualEventView/index.ts | 2 +- packages/shared-components/src/index.ts | 7 +- .../MediaBody/MediaBody.module.css | 2 +- .../__snapshots__/MediaBody.test.tsx.snap | 2 +- .../Pill/__snapshots__/Pill.test.tsx.snap | 2 +- .../__snapshots__/PillInput.test.tsx.snap | 2 +- .../__snapshots__/RichItem.test.tsx.snap | 2 +- .../__snapshots__/RichList.test.tsx.snap | 2 +- .../shared-components/src/test/setupTests.ts | 22 + .../src/test/utils/jest-matrix-react.tsx | 47 + .../shared-components/src/utils/i18n.test.ts | 46 + packages/shared-components/src/utils/i18n.tsx | 31 +- packages/shared-components/tsconfig.json | 2 +- packages/shared-components/vite.config.js | 11 +- packages/shared-components/yarn.lock | 1110 ++++++++++++++++- ...layer--dark-theme--bubble-layout-linux.png | Bin 5792 -> 5762 bytes ...player--dark-theme--group-layout-linux.png | Bin 8549 -> 8556 bytes ...o-player--dark-theme--irc-layout-linux.png | Bin 7692 -> 7716 bytes ...er--high-contrast--bubble-layout-linux.png | Bin 5820 -> 5793 bytes ...yer--high-contrast--group-layout-linux.png | Bin 8428 -> 8443 bytes ...layer--high-contrast--irc-layout-linux.png | Bin 7676 -> 7692 bytes ...ayer--light-theme--bubble-layout-linux.png | Bin 5650 -> 5633 bytes ...layer--light-theme--group-layout-linux.png | Bin 8248 -> 8258 bytes ...-player--light-theme--irc-layout-linux.png | Bin 7545 -> 7560 bytes ...e--monospace-font--bubble-layout-linux.png | Bin 5041 -> 5025 bytes ...me--monospace-font--group-layout-linux.png | Bin 7491 -> 7499 bytes ...heme--monospace-font--irc-layout-linux.png | Bin 6713 -> 6728 bytes ...layer-with-a-reply-bubble-layout-linux.png | Bin 9517 -> 9520 bytes ...with-a-reply-chain-bubble-layout-linux.png | Bin 16829 -> 16867 bytes ...-with-a-reply-chain-group-layout-linux.png | Bin 17227 -> 17239 bytes ...er-with-a-reply-chain-irc-layout-linux.png | Bin 18248 -> 18261 bytes ...player-with-a-reply-group-layout-linux.png | Bin 10554 -> 10598 bytes ...o-player-with-a-reply-irc-layout-linux.png | Bin 11836 -> 11801 bytes .../file-tiles-list-linux.png | Bin 33482 -> 33482 bytes res/css/views/rooms/_EventBubbleTile.pcss | 2 +- scripts/docker-package.sh | 6 + scripts/layered.sh | 8 + sonar-project.properties | 7 +- src/DateUtils.ts | 2 +- src/accessibility/KeyboardShortcuts.ts | 3 +- src/async-components/structures/ErrorView.tsx | 2 +- src/audio/Playback.ts | 2 +- src/audio/RecorderWorklet.ts | 8 +- src/audio/VoiceRecording.ts | 2 +- .../views/audio_messages/LegacySeekBar.tsx | 2 +- .../audio_messages/LiveRecordingClock.tsx | 2 +- .../views/audio_messages/PlaybackClock.tsx | 2 +- .../views/audio_messages/PlaybackWaveform.tsx | 2 +- .../views/beacon/BeaconListItem.tsx | 2 +- src/components/views/dialogs/InviteDialog.tsx | 5 +- .../security/AccessSecretStorageDialog.tsx | 2 +- .../views/elements/SettingsDropdown.tsx | 2 +- .../views/emojipicker/EmojiPicker.tsx | 2 +- .../views/messages/LegacyCallEvent.tsx | 2 +- src/components/views/messages/MAudioBody.tsx | 2 +- .../views/right_panel/EmptyState.tsx | 3 +- .../views/right_panel/RoomSummaryCardView.tsx | 3 +- .../UserInfoHeaderVerificationView.tsx | 2 +- .../user_info/UserInfoHeaderView.tsx | 2 +- src/components/views/rooms/AppsDrawer.tsx | 2 +- .../rooms/MemberList/MemberListHeaderView.tsx | 2 +- .../views/rooms/MemberList/MemberListView.tsx | 2 +- .../tiles/common/InvitedIconView.tsx | 3 +- .../views/rooms/NotificationDecoration.tsx | 2 +- .../views/rooms/RoomHeader/RoomHeader.tsx | 3 +- .../rooms/RoomListPanel/EmptyRoomList.tsx | 2 +- .../RoomListPanel/RoomListHeaderView.tsx | 2 +- .../RoomListPanel/RoomListItemMenuView.tsx | 2 +- .../rooms/RoomListPanel/RoomListItemView.tsx | 2 +- .../rooms/RoomListPanel/RoomListPanel.tsx | 2 +- .../RoomListPanel/RoomListPrimaryFilters.tsx | 2 +- .../rooms/RoomListPanel/RoomListSearch.tsx | 2 +- .../views/rooms/ThirdPartyMemberInfo.tsx | 2 +- .../views/settings/UserProfileSettings.tsx | 2 +- .../EncryptionCardEmphasisedContent.tsx | 3 +- src/events/EventTileFactory.tsx | 2 +- src/languageHandler.tsx | 35 +- src/modules/I18nApi.ts | 4 +- src/settings/Settings.tsx | 4 +- src/stores/widgets/WidgetLayoutStore.ts | 2 +- src/toasts/IncomingCallToast.tsx | 2 +- src/utils/FormattingUtils.ts | 2 +- src/utils/arrays.ts | 2 +- src/vector/index.ts | 3 + src/viewmodels/audio/AudioPlayerViewModel.ts | 8 +- .../event-tiles/TextualEventViewModel.ts | 3 +- .../__snapshots__/ErrorView-test.tsx.snap | 6 +- .../__snapshots__/FilePanel-test.tsx.snap | 2 +- .../__snapshots__/RoomView-test.tsx.snap | 28 +- .../CompleteSecurity-test.tsx.snap | 4 +- .../ExtensionsCard-test.tsx.snap | 2 +- .../PinnedMessagesCard-test.tsx.snap | 2 +- .../RoomSummaryCardView-test.tsx.snap | 22 +- .../__snapshots__/UserInfo-test.tsx.snap | 12 +- ...erInfoHeaderVerificationView-test.tsx.snap | 6 +- .../UserInfoHeaderView-test.tsx.snap | 6 +- .../__snapshots__/RoomHeader-test.tsx.snap | 4 +- .../RoomListPanel/RoomListItemView-test.tsx | 2 +- .../__snapshots__/EmptyRoomList-test.tsx.snap | 22 +- .../__snapshots__/RoomList-test.tsx.snap | 40 +- .../RoomListHeaderView-test.tsx.snap | 30 +- .../RoomListItemMenuView-test.tsx.snap | 4 +- .../RoomListItemView-test.tsx.snap | 18 +- .../RoomListPrimaryFilters-test.tsx.snap | 4 +- .../RoomListSearch-test.tsx.snap | 16 +- .../NotificationDecoration-test.tsx.snap | 16 +- .../ThirdPartyMemberInfo-test.tsx.snap | 8 +- .../MemberTileView-test.tsx.snap | 2 +- .../DeleteKeyStoragePanel-test.tsx.snap | 2 +- .../ResetIdentityPanel-test.tsx.snap | 10 +- .../EncryptionUserSettingsTab-test.tsx.snap | 2 +- .../vector/__snapshots__/init-test.ts.snap | 6 +- yarn.lock | 16 +- 133 files changed, 1708 insertions(+), 319 deletions(-) create mode 100644 packages/shared-components/babel.config.js create mode 100644 packages/shared-components/jest.config.ts create mode 100644 packages/shared-components/scripts/gatherTranslationKeys.ts create mode 100644 packages/shared-components/src/test/setupTests.ts create mode 100644 packages/shared-components/src/test/utils/jest-matrix-react.tsx create mode 100644 packages/shared-components/src/utils/i18n.test.ts diff --git a/.github/workflows/shared-component-visual-tests.yaml b/.github/workflows/shared-component-visual-tests.yaml index 6462fb82dd..0377c96c7f 100644 --- a/.github/workflows/shared-component-visual-tests.yaml +++ b/.github/workflows/shared-component-visual-tests.yaml @@ -34,10 +34,6 @@ jobs: - name: Install element web dependencies run: yarn install --frozen-lockfile - - name: Build Element Web resources - # Needed to prepare language files - run: "yarn build:res" - - name: Install dependencies working-directory: packages/shared-components run: yarn install --frozen-lockfile diff --git a/.github/workflows/static_analysis.yaml b/.github/workflows/static_analysis.yaml index fff80c4008..60f03ead5c 100644 --- a/.github/workflows/static_analysis.yaml +++ b/.github/workflows/static_analysis.yaml @@ -35,10 +35,6 @@ jobs: - name: Typecheck run: "yarn run lint:types" - - name: Build Element Web resources - # Needed to prepare language files for shared components - run: "yarn build:res" - - name: Install Shared Component Dependencies run: "yarn --cwd packages/shared-components install" @@ -91,10 +87,6 @@ jobs: - name: Run Linter run: "yarn run lint:js" - - name: Build Element Web resources - # Needed to prepare language files for shared components - run: "yarn build:res" - - name: Install Shared Component Deps run: "yarn --cwd packages/shared-components install --frozen-lockfile" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f89db70318..4fd5f4f633 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -29,8 +29,8 @@ env: permissions: {} jobs: - jest: - name: Jest + jest_ew: + name: Jest (Element Web) runs-on: ubuntu-24.04 strategy: fail-fast: false @@ -93,13 +93,13 @@ jobs: complete: name: jest-tests - needs: jest + needs: jest_ew if: always() runs-on: ubuntu-24.04 permissions: statuses: write steps: - - if: needs.jest.result != 'skipped' && needs.jest.result != 'success' + - if: needs.jest_ew.result != 'skipped' && needs.jest_ew.result != 'success' run: exit 1 - name: Skip SonarCloud in merge queue @@ -112,3 +112,56 @@ jobs: context: SonarCloud Code Analysis sha: ${{ github.sha }} target_url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} + + jest_sc: + name: Jest (Shared Components) + runs-on: ubuntu-24.04 + steps: + - name: Checkout code + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + with: + repository: ${{ inputs.matrix-js-sdk-sha && 'element-hq/element-web' || github.repository }} + + - name: Yarn cache + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6 + with: + node-version: "lts/*" + cache: "yarn" + + - name: Install EW Deps + run: "yarn install" + + - name: Install Shared Component Deps + working-directory: "packages/shared-components" + run: "yarn install" + + - name: Jest Cache + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 + with: + path: /tmp/jest_cache + key: ${{ hashFiles('**/yarn.lock') }} + + - name: Get number of CPU cores + id: cpu-cores + uses: SimenB/github-actions-cpu-cores@97ba232459a8e02ff6121db9362b09661c875ab8 # v2 + + - name: Run tests + working-directory: "packages/shared-components" + run: | + yarn test \ + --coverage=${{ env.ENABLE_COVERAGE }} \ + --ci \ + --max-workers ${{ steps.cpu-cores.outputs.count }} \ + --cacheDirectory /tmp/jest_cache + env: + # tell jest to use coloured output + FORCE_COLOR: true + + - name: Upload Artifact + if: env.ENABLE_COVERAGE == 'true' + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 + with: + name: coverage-sharedcomponents + path: | + packages/shared-components/coverage + !packages/shared-components/coverage/lcov-report diff --git a/.gitignore b/.gitignore index 89247a57a3..3d6d723ac3 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ storybook-static /packages/shared-components/node_modules /packages/shared-components/dist +/packages/shared-components/src/i18nKeys.d.ts diff --git a/jest.config.ts b/jest.config.ts index 677b96e469..46a40d4a2e 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -17,7 +17,7 @@ const config: Config = { // This is needed to be able to load dual CJS/ESM WASM packages e.g. rust crypto & matrix-wywiwyg customExportConditions: ["browser", "node"], }, - testMatch: ["/test/**/*-test.[tj]s?(x)", "/packages/*/src/**/*.test.[t]s?(x)"], + testMatch: ["/test/**/*-test.[tj]s?(x)"], globalSetup: "/test/globalSetup.ts", setupFiles: ["jest-canvas-mock", "web-streams-polyfill/polyfill"], setupFilesAfterEnv: ["/test/setupTests.ts"], diff --git a/package.json b/package.json index ffa6f2b473..232afda118 100644 --- a/package.json +++ b/package.json @@ -83,6 +83,7 @@ "dependencies": { "@babel/runtime": "^7.12.5", "@element-hq/element-web-module-api": "1.4.1", + "@element-hq/web-shared-components": "file:packages/shared-components", "@fontsource/inconsolata": "^5", "@fontsource/inter": "^5", "@formatjs/intl-segmenter": "^11.5.7", @@ -104,7 +105,6 @@ "browserslist": "^4.23.2", "classnames": "^2.2.6", "commonmark": "^0.31.0", - "counterpart": "^0.18.6", "css-tree": "^3.0.0", "diff-dom": "^5.0.0", "diff-match-patch": "^1.0.5", diff --git a/packages/shared-components/.eslintrc.js b/packages/shared-components/.eslintrc.js index 0408f840e1..6532f7b92d 100644 --- a/packages/shared-components/.eslintrc.js +++ b/packages/shared-components/.eslintrc.js @@ -1,4 +1,5 @@ module.exports = { + root: true, plugins: ["matrix-org", "eslint-plugin-react-compiler"], extends: [ "plugin:matrix-org/babel", diff --git a/packages/shared-components/.prettierignore b/packages/shared-components/.prettierignore index 849ddff3b7..bbb6b1ef7f 100644 --- a/packages/shared-components/.prettierignore +++ b/packages/shared-components/.prettierignore @@ -1 +1,2 @@ dist/ +i18n/i18nKeys.d.ts diff --git a/packages/shared-components/babel.config.js b/packages/shared-components/babel.config.js new file mode 100644 index 0000000000..02ff2e43fe --- /dev/null +++ b/packages/shared-components/babel.config.js @@ -0,0 +1,21 @@ +module.exports = { + sourceMaps: true, + presets: [ + [ + "@babel/preset-env", + { + include: ["@babel/plugin-transform-class-properties"], + }, + ], + ["@babel/preset-typescript", { allowDeclareFields: true }], + "@babel/preset-react", + ], + plugins: [ + "@babel/plugin-proposal-export-default-from", + "@babel/plugin-transform-numeric-separator", + "@babel/plugin-transform-object-rest-spread", + "@babel/plugin-transform-optional-chaining", + "@babel/plugin-transform-nullish-coalescing-operator", + "@babel/plugin-transform-runtime", + ], +}; diff --git a/packages/shared-components/jest.config.ts b/packages/shared-components/jest.config.ts new file mode 100644 index 0000000000..2e88689024 --- /dev/null +++ b/packages/shared-components/jest.config.ts @@ -0,0 +1,58 @@ +/* +Copyright 2025 Element Creations Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import { env } from "process"; + +import type { Config } from "jest"; + +const config: Config = { + testEnvironment: "jsdom", + testEnvironmentOptions: { + url: "http://localhost/", + }, + testMatch: ["/src/**/*.test.[tj]s?(x)"], + setupFilesAfterEnv: ["/src/test/setupTests.ts"], + moduleNameMapper: { + // Support CSS module + "\\.(module.css)$": "identity-obj-proxy", + "\\.(css|scss|pcss)$": "/__mocks__/cssMock.js", + "\\.(gif|png|ttf|woff2)$": "/__mocks__/imageMock.js", + "\\.svg$": "/__mocks__/svg.js", + "\\$webapp/i18n/languages.json": "/../../__mocks__/languages.json", + "^react$": "/node_modules/react", + "^react-dom$": "/node_modules/react-dom", + "waveWorker\\.min\\.js": "/__mocks__/empty.js", + "context-filter-polyfill": "/__mocks__/empty.js", + "workers/(.+)Factory": "/__mocks__/workerFactoryMock.js", + }, + transformIgnorePatterns: [ + "/node_modules/(?!(mime|matrix-js-sdk|uuid|p-retry|is-network-error|react-merge-refs)).+$", + ], + collectCoverageFrom: [ + "/src/**/*.{js,ts,tsx}", + "/packages/**/*.{js,ts,tsx}", + // Coverage chokes on type definition files + "!/src/**/*.d.ts", + ], + coverageReporters: ["text-summary", "lcov"], + testResultsProcessor: "@casualbot/jest-sonar-reporter", + prettierPath: null, + moduleDirectories: ["node_modules", "./src/test/utils"], +}; + +// if we're running under GHA, enable the GHA reporter +if (env["GITHUB_ACTIONS"] !== undefined) { + const reporters: Config["reporters"] = [["github-actions", { silent: false }], "summary"]; + + // if we're running against the develop branch, also enable the slow test reporter + if (env["GITHUB_REF"] == "refs/heads/develop") { + reporters.push("/test/slowReporter.cjs"); + } + config.reporters = reporters; +} + +export default config; diff --git a/packages/shared-components/package.json b/packages/shared-components/package.json index 54592cdbac..a2d8ee56ab 100644 --- a/packages/shared-components/package.json +++ b/packages/shared-components/package.json @@ -19,6 +19,10 @@ "types": "./dist/element-web-shared-components.d.ts", "default": "./dist/element-web-shared-components.mjs" } + }, + "./dist/element-web-shared-components.css": { + "require": "./dist/element-web-shared-components.css", + "import": "./dist/element-web-shared-components.css" } }, "types": "dist/element-web-shared-components.d.ts", @@ -30,8 +34,8 @@ "package.json" ], "scripts": { - "postinstall": "patch-package", - "prepare": "vite build", + "test": "jest", + "prepare": "patch-package && yarn --cwd ../.. build:res && ts-node scripts/gatherTranslationKeys.ts && vite build", "storybook": "storybook dev -p 6007", "build-storybook": "storybook build", "lint": "yarn lint:types && yarn lint:js", @@ -42,9 +46,13 @@ "test:storybook:update": "playwright-screenshots --entrypoint yarn --with-node-modules && playwright-screenshots --entrypoint /work/node_modules/.bin/test-storybook --with-node-modules --url http://host.docker.internal:6007/ --updateSnapshot" }, "dependencies": { + "classnames": "^2.5.1", + "counterpart": "^0.18.6", + "lodash": "^4.17.21", "matrix-web-i18n": "^3.4.0", "patch-package": "^8.0.1", - "counterpart": "^0.18.6" + "react-merge-refs": "^3.0.2", + "temporal-polyfill": "^0.3.0" }, "devDependencies": { "@storybook/addon-a11y": "^9.1.10", @@ -53,13 +61,21 @@ "@storybook/icons": "^1.6.0", "@storybook/react-vite": "^9.1.10", "@storybook/test-runner": "^0.23.0", + "@testing-library/dom": "^10.4.1", + "@testing-library/react": "^16.3.0", + "@types/counterpart": "^0.18.4", + "@types/lodash": "^4.17.20", + "@types/react": "^19.2.2", "concurrently": "^9.2.1", "eslint": "8", + "eslint-plugin-matrix-org": "^3.0.0", "eslint-plugin-storybook": "^10.0.0", + "jest": "^30.2.0", "jest-image-snapshot": "^6.5.1", "patch-package": "^8.0.1", "prettier": "^3.6.2", "storybook": "^9.1.10", + "ts-node": "^10.9.2", "typescript": "^5.9.3", "vite": "^7.1.9", "vite-plugin-dts": "^4.5.4", @@ -68,5 +84,9 @@ "engines": { "node": ">=20.0.0" }, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e", + "peerDependencies": { + "@vector-im/compound-design-tokens": "^6.0.0", + "@vector-im/compound-web": "^8.2.5" + } } diff --git a/packages/shared-components/scripts/gatherTranslationKeys.ts b/packages/shared-components/scripts/gatherTranslationKeys.ts new file mode 100644 index 0000000000..b92d767179 --- /dev/null +++ b/packages/shared-components/scripts/gatherTranslationKeys.ts @@ -0,0 +1,61 @@ +/* +Copyright 2025 Element Creations Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +// Gathers all the translation keys from element-web's en_EN.json into a TypeScript type definition file +// that exports a type `TranslationKey` which is a union of all supported translation keys. +// This prevents having to import the json file and make typescript do the work as this results in vite-dts +// generating an import to the json file in the .d.ts which doesn't work at runtime: this way, the type +// gets put into the bundle. +// XXX: It should *not* be in the 'src' directory, being a generated file, but if it isn't then the type +// bundler won't bundle the types and will leave the file as a relative import, which will break. + +import * as fs from "fs"; +import * as path from "path"; + +const i18nStringsPath = path.resolve(__dirname, "../../../src/i18n/strings/en_EN.json"); +const outPath = path.resolve(__dirname, "../src/i18nKeys.d.ts"); + +function gatherKeys(obj: any, prefix: string[] = []): string[] { + if (typeof obj !== "object" || obj === null) return []; + let keys: string[] = []; + for (const key of Object.keys(obj)) { + const value = obj[key]; + + // add the path (for both leaves and intermediates as then we include plurals) + keys.push([...prefix, key].join("|")); + if (typeof value === "object" && value !== null) { + // If the value is an object, recurse + keys = keys.concat(gatherKeys(value, [...prefix, key])); + } + } + return keys; +} + +function main() { + const json = JSON.parse(fs.readFileSync(i18nStringsPath, "utf8")); + const keys = gatherKeys(json); + const typeDef = + "/*\n" + + " * Copyright 2025 Element Creations Ltd.\n" + + " *\n" + + " * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial\n" + + " * Please see LICENSE files in the repository root for full details.\n" + + " */\n" + + "\n" + + "// This file is auto-generated by gatherTranslationKeys.ts\n" + + "// Do not edit manually.\n\n" + + "export type TranslationKey =\n" + + keys.map((k) => ` | \"${k}\"`).join("\n") + + ";\n"; + fs.mkdirSync(path.dirname(outPath), { recursive: true }); + fs.writeFileSync(outPath, typeDef, "utf8"); + console.log(`Wrote ${keys.length} keys to ${outPath}`); +} + +if (require.main === module) { + main(); +} diff --git a/packages/shared-components/src/audio/AudioPlayerView/AudioPlayerView.module.css b/packages/shared-components/src/audio/AudioPlayerView/AudioPlayerView.module.css index 905719eedf..fc8c26aef7 100644 --- a/packages/shared-components/src/audio/AudioPlayerView/AudioPlayerView.module.css +++ b/packages/shared-components/src/audio/AudioPlayerView/AudioPlayerView.module.css @@ -6,7 +6,7 @@ */ .audioPlayer { - padding: var(--cpd-space-4x) var(--cpd-space-3x) var(--cpd-space-3x) var(--cpd-space-3x); + padding: var(--cpd-space-4x) var(--cpd-space-3x) var(--cpd-space-3x) var(--cpd-space-3x) !important; } .mediaInfo { diff --git a/packages/shared-components/src/audio/AudioPlayerView/__snapshots__/AudioPlayerView.test.tsx.snap b/packages/shared-components/src/audio/AudioPlayerView/__snapshots__/AudioPlayerView.test.tsx.snap index 0687ea44a8..89b47dfecb 100644 --- a/packages/shared-components/src/audio/AudioPlayerView/__snapshots__/AudioPlayerView.test.tsx.snap +++ b/packages/shared-components/src/audio/AudioPlayerView/__snapshots__/AudioPlayerView.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`AudioPlayerView renders the audio player in default state 1`] = `
    diff --git a/packages/shared-components/src/audio/Clock/__snapshots__/Clock.test.tsx.snap b/packages/shared-components/src/audio/Clock/__snapshots__/Clock.test.tsx.snap index 2fdcedd7c3..5ab0799d28 100644 --- a/packages/shared-components/src/audio/Clock/__snapshots__/Clock.test.tsx.snap +++ b/packages/shared-components/src/audio/Clock/__snapshots__/Clock.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`Clock renders the clock 1`] = `
    diff --git a/packages/shared-components/src/audio/PlayPauseButton/PlayPauseButton.module.css b/packages/shared-components/src/audio/PlayPauseButton/PlayPauseButton.module.css index 74315673f1..859f84bba9 100644 --- a/packages/shared-components/src/audio/PlayPauseButton/PlayPauseButton.module.css +++ b/packages/shared-components/src/audio/PlayPauseButton/PlayPauseButton.module.css @@ -6,6 +6,6 @@ */ .button { - border-radius: 32px; - background-color: var(--cpd-color-bg-subtle-primary); + border-radius: 32px !important; + background-color: var(--cpd-color-bg-subtle-primary) !important; } diff --git a/packages/shared-components/src/audio/PlayPauseButton/__snapshots__/PlayPauseButton.test.tsx.snap b/packages/shared-components/src/audio/PlayPauseButton/__snapshots__/PlayPauseButton.test.tsx.snap index 503b5ac498..872de81cb9 100644 --- a/packages/shared-components/src/audio/PlayPauseButton/__snapshots__/PlayPauseButton.test.tsx.snap +++ b/packages/shared-components/src/audio/PlayPauseButton/__snapshots__/PlayPauseButton.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`PlayPauseButton renders the button in default state 1`] = `
    diff --git a/packages/shared-components/src/audio/SeekBar/__snapshots__/SeekBar.test.tsx.snap b/packages/shared-components/src/audio/SeekBar/__snapshots__/SeekBar.test.tsx.snap index 49bfd5dbe7..e3cc92279e 100644 --- a/packages/shared-components/src/audio/SeekBar/__snapshots__/SeekBar.test.tsx.snap +++ b/packages/shared-components/src/audio/SeekBar/__snapshots__/SeekBar.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`Seekbar renders the clock 1`] = `
    diff --git a/packages/shared-components/src/avatar/AvatarWithDetails/__snapshots__/AvatarWithDetails.test.tsx.snap b/packages/shared-components/src/avatar/AvatarWithDetails/__snapshots__/AvatarWithDetails.test.tsx.snap index e8a2e4579a..7b927f2c3b 100644 --- a/packages/shared-components/src/avatar/AvatarWithDetails/__snapshots__/AvatarWithDetails.test.tsx.snap +++ b/packages/shared-components/src/avatar/AvatarWithDetails/__snapshots__/AvatarWithDetails.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`AvatarWithDetails renders a textual event 1`] = `
    diff --git a/packages/shared-components/src/event-tiles/TextualEventView/__snapshots__/TextualEventView.test.tsx.snap b/packages/shared-components/src/event-tiles/TextualEventView/__snapshots__/TextualEventView.test.tsx.snap index a0be215af7..37c53e56bd 100644 --- a/packages/shared-components/src/event-tiles/TextualEventView/__snapshots__/TextualEventView.test.tsx.snap +++ b/packages/shared-components/src/event-tiles/TextualEventView/__snapshots__/TextualEventView.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`TextualEventView renders a textual event 1`] = `
    diff --git a/packages/shared-components/src/event-tiles/TextualEventView/index.ts b/packages/shared-components/src/event-tiles/TextualEventView/index.ts index 58796a3dd7..589130bd28 100644 --- a/packages/shared-components/src/event-tiles/TextualEventView/index.ts +++ b/packages/shared-components/src/event-tiles/TextualEventView/index.ts @@ -5,4 +5,4 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -export { TextualEventView } from "./TextualEventView"; +export { TextualEventView, type TextualEventViewSnapshot } from "./TextualEventView"; diff --git a/packages/shared-components/src/index.ts b/packages/shared-components/src/index.ts index 6967c175fd..68935afd3f 100644 --- a/packages/shared-components/src/index.ts +++ b/packages/shared-components/src/index.ts @@ -21,12 +21,17 @@ export * from "./utils/Box"; export * from "./utils/Flex"; // Utils -export { setLanguage } from "./utils/i18n"; +export * from "./utils/i18n"; export * from "./utils/humanize"; export * from "./utils/DateUtils"; export * from "./utils/numbers"; +export * from "./utils/FormattingUtils"; // MVVM export * from "./viewmodel"; export * from "./useMockedViewModel"; export * from "./useViewModel"; + +// i18n (we must export this directly in order to not confuse the type bundler, it seems, +// otherwise it will leave it as a relative import rather than bundling it) +export type * from "./i18nKeys.d.ts"; diff --git a/packages/shared-components/src/message-body/MediaBody/MediaBody.module.css b/packages/shared-components/src/message-body/MediaBody/MediaBody.module.css index 7cf125f303..49d8ed8f4a 100644 --- a/packages/shared-components/src/message-body/MediaBody/MediaBody.module.css +++ b/packages/shared-components/src/message-body/MediaBody/MediaBody.module.css @@ -7,7 +7,7 @@ .mediaBody { background-color: var(--cpd-color-bg-subtle-secondary); - border-radius: var(--cpd-space-2x); + border-radius: var(--cpd-space-2x) !important; max-width: 243px; /* use max-width instead of width so it fits within right panels */ font: var(--cpd-font-body-md-regular); diff --git a/packages/shared-components/src/message-body/MediaBody/__snapshots__/MediaBody.test.tsx.snap b/packages/shared-components/src/message-body/MediaBody/__snapshots__/MediaBody.test.tsx.snap index 9d1011254b..d86c677390 100644 --- a/packages/shared-components/src/message-body/MediaBody/__snapshots__/MediaBody.test.tsx.snap +++ b/packages/shared-components/src/message-body/MediaBody/__snapshots__/MediaBody.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`MediaBody renders the media body 1`] = `
    diff --git a/packages/shared-components/src/pill-input/Pill/__snapshots__/Pill.test.tsx.snap b/packages/shared-components/src/pill-input/Pill/__snapshots__/Pill.test.tsx.snap index e467ec9ab7..348b3026c5 100644 --- a/packages/shared-components/src/pill-input/Pill/__snapshots__/Pill.test.tsx.snap +++ b/packages/shared-components/src/pill-input/Pill/__snapshots__/Pill.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`Pill renders the pill 1`] = `
    diff --git a/packages/shared-components/src/pill-input/PillInput/__snapshots__/PillInput.test.tsx.snap b/packages/shared-components/src/pill-input/PillInput/__snapshots__/PillInput.test.tsx.snap index 7675610f6c..37a1d08c8b 100644 --- a/packages/shared-components/src/pill-input/PillInput/__snapshots__/PillInput.test.tsx.snap +++ b/packages/shared-components/src/pill-input/PillInput/__snapshots__/PillInput.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`PillInput renders only the input without children 1`] = `
    diff --git a/packages/shared-components/src/rich-list/RichItem/__snapshots__/RichItem.test.tsx.snap b/packages/shared-components/src/rich-list/RichItem/__snapshots__/RichItem.test.tsx.snap index 84f6669b7a..6ccc190d8c 100644 --- a/packages/shared-components/src/rich-list/RichItem/__snapshots__/RichItem.test.tsx.snap +++ b/packages/shared-components/src/rich-list/RichItem/__snapshots__/RichItem.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`RichItem renders the item in default state 1`] = `
    diff --git a/packages/shared-components/src/rich-list/RichList/__snapshots__/RichList.test.tsx.snap b/packages/shared-components/src/rich-list/RichList/__snapshots__/RichList.test.tsx.snap index 5569c63a9c..41f5407d3c 100644 --- a/packages/shared-components/src/rich-list/RichList/__snapshots__/RichList.test.tsx.snap +++ b/packages/shared-components/src/rich-list/RichList/__snapshots__/RichList.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`RichItem renders the list 1`] = `
    diff --git a/packages/shared-components/src/test/setupTests.ts b/packages/shared-components/src/test/setupTests.ts new file mode 100644 index 0000000000..43ffc0c071 --- /dev/null +++ b/packages/shared-components/src/test/setupTests.ts @@ -0,0 +1,22 @@ +/* +Copyright 2025 Element Creations Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import fetchMock from "fetch-mock-jest"; + +import { setLanguage } from "../../src/utils/i18n"; +import en from "../../../../src/i18n/strings/en_EN.json"; + +export function setupLanguageMock(): void { + fetchMock + .get("/i18n/languages.json", { + en: "en_EN.json", + }) + .get("end:en_EN.json", en); +} +setupLanguageMock(); + +setLanguage("en"); diff --git a/packages/shared-components/src/test/utils/jest-matrix-react.tsx b/packages/shared-components/src/test/utils/jest-matrix-react.tsx new file mode 100644 index 0000000000..30d673aa22 --- /dev/null +++ b/packages/shared-components/src/test/utils/jest-matrix-react.tsx @@ -0,0 +1,47 @@ +/* +Copyright 2025 Element Creations Ltd. +Copyright 2024 New Vector Ltd. +Copyright 2022 The Matrix.org Foundation C.I.C. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +// Copied from element-web/test/test-utils because, seemingly, if we +// set that as the modules directory to use it directly, it fails to +// actually put the right thing in the context somehow. + +import React, { type ReactElement } from "react"; +// eslint-disable-next-line no-restricted-imports +import { render, type RenderOptions } from "@testing-library/react"; +import { TooltipProvider } from "@vector-im/compound-web"; + +const wrapWithTooltipProvider = (Wrapper: RenderOptions["wrapper"]) => { + return ({ children }: { children: React.ReactNode }) => { + if (Wrapper) { + return ( + + {children} + + ); + } else { + return {children}; + } + }; +}; + +const customRender = (ui: ReactElement, options: RenderOptions = {}): ReturnType => { + return render(ui, { + ...options, + wrapper: wrapWithTooltipProvider(options?.wrapper) as RenderOptions["wrapper"], + }) as ReturnType; +}; + +// eslint-disable-next-line no-restricted-imports +export * from "@testing-library/react"; + +/** + * This custom render function wraps your component with a TooltipProvider. + * See https://testing-library.com/docs/react-testing-library/setup/#custom-render + */ +export { customRender as render }; diff --git a/packages/shared-components/src/utils/i18n.test.ts b/packages/shared-components/src/utils/i18n.test.ts new file mode 100644 index 0000000000..a578f7bcfe --- /dev/null +++ b/packages/shared-components/src/utils/i18n.test.ts @@ -0,0 +1,46 @@ +/* + * Copyright 2025 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import counterpart from "counterpart"; + +import { registerTranslations, setMissingEntryGenerator, getLocale, setLocale } from "./i18n"; + +describe("i18n utils", () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it("should wrap registerTranslations", () => { + jest.spyOn(counterpart, "registerTranslations"); + + registerTranslations("en", { test: "This is a test" }); + expect(counterpart.registerTranslations).toHaveBeenCalledWith("en", { test: "This is a test" }); + }); + + it("should wrap setMissingEntryGenerator", () => { + jest.spyOn(counterpart, "setMissingEntryGenerator"); + + const dummyFn = jest.fn(); + + setMissingEntryGenerator(dummyFn); + expect(counterpart.setMissingEntryGenerator).toHaveBeenCalledWith(dummyFn); + }); + + it("should wrap getLocale", () => { + jest.spyOn(counterpart, "getLocale"); + + getLocale(); + expect(counterpart.getLocale).toHaveBeenCalled(); + }); + + it("should wrap setLocale", () => { + jest.spyOn(counterpart, "setLocale"); + + setLocale("en"); + expect(counterpart.setLocale).toHaveBeenCalledWith("en"); + }); +}); diff --git a/packages/shared-components/src/utils/i18n.tsx b/packages/shared-components/src/utils/i18n.tsx index 21c37d7121..2ce1f78005 100644 --- a/packages/shared-components/src/utils/i18n.tsx +++ b/packages/shared-components/src/utils/i18n.tsx @@ -22,10 +22,10 @@ * @return a React component if any non-strings were used in substitutions, otherwise a string */ import React from "react"; -import { type TranslationKey as _TranslationKey, KEY_SEPARATOR } from "matrix-web-i18n"; +import { KEY_SEPARATOR } from "matrix-web-i18n"; import counterpart from "counterpart"; -import type Translations from "../../../../src/i18n/strings/en_EN.json"; +import type { TranslationKey } from "../index"; // @ts-ignore - $webapp is a webpack resolve alias pointing to the output directory, see webpack config import webpackLangJsonUrl from "$webapp/i18n/languages.json"; @@ -45,16 +45,23 @@ counterpart.setSeparator(KEY_SEPARATOR); const FALLBACK_LOCALE = "en"; counterpart.setFallbackLocale(FALLBACK_LOCALE); -/** - * A type representing the union of possible keys into the translation file using `|` delimiter to access nested fields. - * @example `common|error` to access `error` within the `common` sub-object. - * { - * "common": { - * "error": "Error" - * } - * } - */ -export type TranslationKey = _TranslationKey; +// export wrappers around these functions because if we used counterpart directly from +// element-web, it operates on a different instance of counterpart +export function registerTranslations(locale: string, data: object): void { + counterpart.registerTranslations(locale, data); +} + +export function setMissingEntryGenerator(callback: (value: string) => void): void { + counterpart.setMissingEntryGenerator(callback); +} + +export function getLocale(): string { + return counterpart.getLocale(); +} + +export function setLocale(value: string): string { + return counterpart.setLocale(value); +} // Function which only purpose is to mark that a string is translatable // Does not actually do anything. It's helpful for automatic extraction of translatable strings diff --git a/packages/shared-components/tsconfig.json b/packages/shared-components/tsconfig.json index aa1237f4a1..977d20132e 100644 --- a/packages/shared-components/tsconfig.json +++ b/packages/shared-components/tsconfig.json @@ -17,7 +17,7 @@ "lib": ["es2022", "es2024.promise", "dom", "dom.iterable"], "strict": true, "paths": { - "jest-matrix-react": ["../../test/test-utils/jest-matrix-react"], + "jest-matrix-react": ["./src/test/utils/jest-matrix-react"], "rollup/parseAst": ["./node_modules/rollup/dist/parseAst"] } }, diff --git a/packages/shared-components/vite.config.js b/packages/shared-components/vite.config.js index 46322bd884..83c999d87f 100644 --- a/packages/shared-components/vite.config.js +++ b/packages/shared-components/vite.config.js @@ -26,7 +26,7 @@ export default defineConfig({ rollupOptions: { // make sure to externalize deps that shouldn't be bundled // into your library - external: ["react", "react-dom"], + external: ["react", "react-dom", "@vector-im/compound-design-tokens", "@vector-im/compound-web"], output: { // Provide global variables to use in the UMD build // for externalized deps @@ -43,5 +43,12 @@ export default defineConfig({ $webapp: resolve(__dirname, "..", "..", "webapp"), }, }, - plugins: [dts({ rollupTypes: true, include: ["src/**/*.{ts,tsx}"], copyDtsFiles: true })], + plugins: [ + dts({ + rollupTypes: true, + include: ["src/**/*.{ts,tsx}"], + exclude: ["src/**/*.test.{ts,tsx}"], + copyDtsFiles: true, + }), + ], }); diff --git a/packages/shared-components/yarn.lock b/packages/shared-components/yarn.lock index 35e7f0d15c..2f38c9a622 100644 --- a/packages/shared-components/yarn.lock +++ b/packages/shared-components/yarn.lock @@ -7,7 +7,7 @@ resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.4.tgz#2856c55443d3d461693f32d2b96fb6ea92e1ffa9" integrity sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg== -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== @@ -21,7 +21,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f" integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.5", "@babel/core@^7.23.9", "@babel/core@^7.7.5": +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.5", "@babel/core@^7.23.9", "@babel/core@^7.27.4", "@babel/core@^7.7.5": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.4.tgz#12a550b8794452df4c8b084f95003bce1742d496" integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== @@ -63,7 +63,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.22.5", "@babel/generator@^7.7.2": +"@babel/generator@^7.22.5", "@babel/generator@^7.27.5", "@babel/generator@^7.7.2": version "7.28.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== @@ -209,7 +209,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.7.2": +"@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.7.2": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== @@ -272,13 +272,18 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.7.2": +"@babel/plugin-syntax-typescript@^7.27.1", "@babel/plugin-syntax-typescript@^7.7.2": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== dependencies: "@babel/helper-plugin-utils" "^7.27.1" +"@babel/runtime@^7.12.5": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" + integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== + "@babel/template@^7.22.5", "@babel/template@^7.27.2", "@babel/template@^7.3.3": version "7.27.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" @@ -322,7 +327,7 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" -"@babel/types@^7.22.5", "@babel/types@^7.3.3": +"@babel/types@^7.22.5", "@babel/types@^7.27.3", "@babel/types@^7.3.3": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== @@ -335,6 +340,35 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@emnapi/core@^1.4.3": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.6.0.tgz#517f65d1c8270d5d5aa1aad660d5acb897430dca" + integrity sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg== + dependencies: + "@emnapi/wasi-threads" "1.1.0" + tslib "^2.4.0" + +"@emnapi/runtime@^1.4.3": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.6.0.tgz#8fe297e0090f6e89a57a1f31f1c440bdbc3c01d8" + integrity sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf" + integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== + dependencies: + tslib "^2.4.0" + "@esbuild/aix-ppc64@0.25.10": version "0.25.10" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz#ee6b7163a13528e099ecf562b972f2bcebe0aa97" @@ -713,6 +747,18 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== +"@jest/console@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-30.2.0.tgz#c52fcd5b58fdd2e8eb66b2fd8ae56f2f64d05b28" + integrity sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + jest-message-util "30.2.0" + jest-util "30.2.0" + slash "^3.0.0" + "@jest/console@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" @@ -725,6 +771,40 @@ jest-util "^29.7.0" slash "^3.0.0" +"@jest/core@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.2.0.tgz#813d59faa5abd5510964a8b3a7b17cc77b775275" + integrity sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ== + dependencies: + "@jest/console" "30.2.0" + "@jest/pattern" "30.0.1" + "@jest/reporters" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + ci-info "^4.2.0" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-changed-files "30.2.0" + jest-config "30.2.0" + jest-haste-map "30.2.0" + jest-message-util "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-resolve-dependencies "30.2.0" + jest-runner "30.2.0" + jest-runtime "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + jest-watcher "30.2.0" + micromatch "^4.0.8" + pretty-format "30.2.0" + slash "^3.0.0" + "@jest/core@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" @@ -766,6 +846,21 @@ dependencies: "@jest/types" "30.2.0" +"@jest/diff-sequences@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be" + integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== + +"@jest/environment@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-30.2.0.tgz#1e673cdb8b93ded707cf6631b8353011460831fa" + integrity sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g== + dependencies: + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + jest-mock "30.2.0" + "@jest/environment@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" @@ -776,6 +871,13 @@ "@types/node" "*" jest-mock "^29.7.0" +"@jest/expect-utils@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.2.0.tgz#4f95413d4748454fdb17404bf1141827d15e6011" + integrity sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA== + dependencies: + "@jest/get-type" "30.1.0" + "@jest/expect-utils@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" @@ -783,6 +885,14 @@ dependencies: jest-get-type "^29.6.3" +"@jest/expect@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.2.0.tgz#9a5968499bb8add2bbb09136f69f7df5ddbf3185" + integrity sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA== + dependencies: + expect "30.2.0" + jest-snapshot "30.2.0" + "@jest/expect@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" @@ -791,6 +901,18 @@ expect "^29.7.0" jest-snapshot "^29.7.0" +"@jest/fake-timers@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-30.2.0.tgz#0941ddc28a339b9819542495b5408622dc9e94ec" + integrity sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw== + dependencies: + "@jest/types" "30.2.0" + "@sinonjs/fake-timers" "^13.0.0" + "@types/node" "*" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-util "30.2.0" + "@jest/fake-timers@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" @@ -803,6 +925,21 @@ jest-mock "^29.7.0" jest-util "^29.7.0" +"@jest/get-type@30.1.0": + version "30.1.0" + resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.1.0.tgz#4fcb4dc2ebcf0811be1c04fd1cb79c2dba431cbc" + integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== + +"@jest/globals@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.2.0.tgz#2f4b696d5862664b89c4ee2e49ae24d2bb7e0988" + integrity sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw== + dependencies: + "@jest/environment" "30.2.0" + "@jest/expect" "30.2.0" + "@jest/types" "30.2.0" + jest-mock "30.2.0" + "@jest/globals@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" @@ -821,6 +958,35 @@ "@types/node" "*" jest-regex-util "30.0.1" +"@jest/reporters@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-30.2.0.tgz#a36b28fcbaf0c4595250b108e6f20e363348fd91" + integrity sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@jridgewell/trace-mapping" "^0.3.25" + "@types/node" "*" + chalk "^4.1.2" + collect-v8-coverage "^1.0.2" + exit-x "^0.2.2" + glob "^10.3.10" + graceful-fs "^4.2.11" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^5.0.0" + istanbul-reports "^3.1.3" + jest-message-util "30.2.0" + jest-util "30.2.0" + jest-worker "30.2.0" + slash "^3.0.0" + string-length "^4.0.2" + v8-to-istanbul "^9.0.1" + "@jest/reporters@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" @@ -865,6 +1031,25 @@ dependencies: "@sinclair/typebox" "^0.27.8" +"@jest/snapshot-utils@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz#387858eb90c2f98f67bff327435a532ac5309fbe" + integrity sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug== + dependencies: + "@jest/types" "30.2.0" + chalk "^4.1.2" + graceful-fs "^4.2.11" + natural-compare "^1.4.0" + +"@jest/source-map@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-30.0.1.tgz#305ebec50468f13e658b3d5c26f85107a5620aaa" + integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + callsites "^3.1.0" + graceful-fs "^4.2.11" + "@jest/source-map@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" @@ -874,6 +1059,16 @@ callsites "^3.0.0" graceful-fs "^4.2.9" +"@jest/test-result@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-30.2.0.tgz#9c0124377fb7996cdffb86eda3dbc56eacab363d" + integrity sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg== + dependencies: + "@jest/console" "30.2.0" + "@jest/types" "30.2.0" + "@types/istanbul-lib-coverage" "^2.0.6" + collect-v8-coverage "^1.0.2" + "@jest/test-result@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" @@ -884,6 +1079,16 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" +"@jest/test-sequencer@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz#bf0066bc72e176d58f5dfa7f212b6e7eee44f221" + integrity sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q== + dependencies: + "@jest/test-result" "30.2.0" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + slash "^3.0.0" + "@jest/test-sequencer@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" @@ -894,6 +1099,27 @@ jest-haste-map "^29.7.0" slash "^3.0.0" +"@jest/transform@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.2.0.tgz#54bef1a4510dcbd58d5d4de4fe2980a63077ef2a" + integrity sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA== + dependencies: + "@babel/core" "^7.27.4" + "@jest/types" "30.2.0" + "@jridgewell/trace-mapping" "^0.3.25" + babel-plugin-istanbul "^7.0.1" + chalk "^4.1.2" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-regex-util "30.0.1" + jest-util "30.2.0" + micromatch "^4.0.8" + pirates "^4.0.7" + slash "^3.0.0" + write-file-atomic "^5.0.1" + "@jest/transform@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" @@ -965,17 +1191,25 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@jridgewell/resolve-uri@^3.1.0": +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": version "1.5.5" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28": +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": version "0.3.31" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== @@ -1050,6 +1284,15 @@ resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz#d4f6937353bc4568292654efb0a0e0532adbcba2" integrity sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw== +"@napi-rs/wasm-runtime@^0.2.11": + version "0.2.12" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz#3e78a8b96e6c33a6c517e1894efbd5385a7cb6f2" + integrity sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ== + dependencies: + "@emnapi/core" "^1.4.3" + "@emnapi/runtime" "^1.4.3" + "@tybys/wasm-util" "^0.10.0" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1076,6 +1319,11 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pkgr/core@^0.2.9": + version "0.2.9" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.9.tgz#d229a7b7f9dac167a156992ef23c7f023653f53b" + integrity sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== + "@rollup/plugin-inject@^5.0.5": version "5.0.5" resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz#616f3a73fe075765f91c5bec90176608bed277a3" @@ -1277,7 +1525,7 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.41.tgz#aa51a6c1946df2c5a11494a2cdb9318e026db16c" integrity sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g== -"@sinonjs/commons@^3.0.0": +"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== @@ -1291,6 +1539,13 @@ dependencies: "@sinonjs/commons" "^3.0.0" +"@sinonjs/fake-timers@^13.0.0": + version "13.0.5" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" + integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== + dependencies: + "@sinonjs/commons" "^3.0.1" + "@storybook/addon-a11y@^9.1.10": version "9.1.16" resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-9.1.16.tgz#d7abc9339bd04ce4c5e4b10875e5ee41352c9432" @@ -1486,6 +1741,20 @@ dependencies: "@swc/counter" "^0.1.3" +"@testing-library/dom@^10.4.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.1.tgz#d444f8a889e9a46e9a3b4f3b88e0fcb3efb6cf95" + integrity sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.3.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + picocolors "1.1.1" + pretty-format "^27.0.2" + "@testing-library/jest-dom@^6.6.3": version "6.9.1" resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz#7613a04e146dd2976d24ddf019730d57a89d56c2" @@ -1498,16 +1767,55 @@ picocolors "^1.1.1" redent "^3.0.0" +"@testing-library/react@^16.3.0": + version "16.3.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.3.0.tgz#3a85bb9bdebf180cd76dba16454e242564d598a6" + integrity sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/user-event@^14.6.1": version "14.6.1" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.6.1.tgz#13e09a32d7a8b7060fe38304788ebf4197cd2149" integrity sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw== +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@tybys/wasm-util@^0.10.0": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" + integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== + dependencies: + tslib "^2.4.0" + "@types/argparse@1.0.38": version "1.0.38" resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== +"@types/aria-query@^5.0.1": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" + integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== + "@types/babel__core@^7.1.14", "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" @@ -1549,6 +1857,11 @@ "@types/deep-eql" "*" assertion-error "^2.0.1" +"@types/counterpart@^0.18.4": + version "0.18.4" + resolved "https://registry.yarnpkg.com/@types/counterpart/-/counterpart-0.18.4.tgz#e3e331b7e0d5496873d417839f3b2bbcf555bb73" + integrity sha512-aqBg5oAGo/qh/+wxUfuMadDu2WO0MEWOblyzwaM1Ske2xilUxBfgPqapAFVAfrVTDMVwa0UMarzGot8m64IAzA== + "@types/deep-eql@*": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/deep-eql/-/deep-eql-4.0.2.tgz#334311971d3a07121e7eb91b684a605e7eea9cbd" @@ -1590,6 +1903,11 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/lodash@^4.17.20": + version "4.17.20" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.20.tgz#1ca77361d7363432d29f5e55950d9ec1e1c6ea93" + integrity sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA== + "@types/mdx@^2.0.0": version "2.0.13" resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.13.tgz#68f6877043d377092890ff5b298152b0a21671bd" @@ -1602,12 +1920,19 @@ dependencies: undici-types "~7.14.0" +"@types/react@^19.2.2": + version "19.2.2" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.2.tgz#ba123a75d4c2a51158697160a4ea2ff70aa6bf36" + integrity sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA== + dependencies: + csstype "^3.0.2" + "@types/resolve@^1.20.2": version "1.20.6" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.6.tgz#e6e60dad29c2c8c206c026e6dd8d6d1bdda850b8" integrity sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ== -"@types/stack-utils@^2.0.0": +"@types/stack-utils@^2.0.0", "@types/stack-utils@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== @@ -1697,11 +2022,108 @@ "@typescript-eslint/types" "8.46.0" eslint-visitor-keys "^4.2.1" -"@ungap/structured-clone@^1.2.0": +"@ungap/structured-clone@^1.2.0", "@ungap/structured-clone@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== +"@unrs/resolver-binding-android-arm-eabi@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz#9f5b04503088e6a354295e8ea8fe3cb99e43af81" + integrity sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw== + +"@unrs/resolver-binding-android-arm64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz#7414885431bd7178b989aedc4d25cccb3865bc9f" + integrity sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g== + +"@unrs/resolver-binding-darwin-arm64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz#b4a8556f42171fb9c9f7bac8235045e82aa0cbdf" + integrity sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g== + +"@unrs/resolver-binding-darwin-x64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz#fd4d81257b13f4d1a083890a6a17c00de571f0dc" + integrity sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ== + +"@unrs/resolver-binding-freebsd-x64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz#d2513084d0f37c407757e22f32bd924a78cfd99b" + integrity sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw== + +"@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz#844d2605d057488d77fab09705f2866b86164e0a" + integrity sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw== + +"@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz#204892995cefb6bd1d017d52d097193bc61ddad3" + integrity sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw== + +"@unrs/resolver-binding-linux-arm64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz#023eb0c3aac46066a10be7a3f362e7b34f3bdf9d" + integrity sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ== + +"@unrs/resolver-binding-linux-arm64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz#9e6f9abb06424e3140a60ac996139786f5d99be0" + integrity sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w== + +"@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz#b111417f17c9d1b02efbec8e08398f0c5527bb44" + integrity sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA== + +"@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz#92ffbf02748af3e99873945c9a8a5ead01d508a9" + integrity sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ== + +"@unrs/resolver-binding-linux-riscv64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz#0bec6f1258fc390e6b305e9ff44256cb207de165" + integrity sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew== + +"@unrs/resolver-binding-linux-s390x-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz#577843a084c5952f5906770633ccfb89dac9bc94" + integrity sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg== + +"@unrs/resolver-binding-linux-x64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz#36fb318eebdd690f6da32ac5e0499a76fa881935" + integrity sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w== + +"@unrs/resolver-binding-linux-x64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz#bfb9af75f783f98f6a22c4244214efe4df1853d6" + integrity sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA== + +"@unrs/resolver-binding-wasm32-wasi@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz#752c359dd875684b27429500d88226d7cc72f71d" + integrity sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.11" + +"@unrs/resolver-binding-win32-arm64-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz#ce5735e600e4c2fbb409cd051b3b7da4a399af35" + integrity sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw== + +"@unrs/resolver-binding-win32-ia32-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz#72fc57bc7c64ec5c3de0d64ee0d1810317bc60a6" + integrity sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ== + +"@unrs/resolver-binding-win32-x64-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz#538b1e103bf8d9864e7b85cc96fa8d6fb6c40777" + integrity sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g== + "@vitest/expect@3.2.4": version "3.2.4" resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-3.2.4.tgz#8362124cd811a5ee11c5768207b9df53d34f2433" @@ -1822,7 +2244,14 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.14.0, acorn@^8.15.0, acorn@^8.9.0: +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.4.1, acorn@^8.9.0: version "8.15.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== @@ -1892,7 +2321,7 @@ alien-signals@^0.4.9: resolved "https://registry.yarnpkg.com/alien-signals/-/alien-signals-0.4.14.tgz#9ff8f72a272300a51692f54bd9bbbada78fbf539" integrity sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q== -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -1928,7 +2357,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansi-styles@^5.0.0: +ansi-styles@^5.0.0, ansi-styles@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== @@ -1938,7 +2367,7 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== -anymatch@^3.0.3: +anymatch@^3.0.3, anymatch@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -1958,6 +2387,11 @@ archy@^1.0.0: resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7, argparse@~1.0.9: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1970,6 +2404,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-query@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + aria-query@^5.0.0: version "5.3.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" @@ -2033,6 +2474,19 @@ axios@^1.6.1: form-data "^4.0.4" proxy-from-env "^1.1.0" +babel-jest@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-30.2.0.tgz#fd44a1ec9552be35ead881f7381faa7d8f3b95ac" + integrity sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw== + dependencies: + "@jest/transform" "30.2.0" + "@types/babel__core" "^7.20.5" + babel-plugin-istanbul "^7.0.1" + babel-preset-jest "30.2.0" + chalk "^4.1.2" + graceful-fs "^4.2.11" + slash "^3.0.0" + babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" @@ -2057,6 +2511,24 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" +babel-plugin-istanbul@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz#d8b518c8ea199364cf84ccc82de89740236daf92" + integrity sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-instrument "^6.0.2" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz#94c250d36b43f95900f3a219241e0f4648191ce2" + integrity sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA== + dependencies: + "@types/babel__core" "^7.20.5" + babel-plugin-jest-hoist@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" @@ -2067,7 +2539,7 @@ babel-plugin-jest-hoist@^29.6.3: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-preset-current-node-syntax@^1.0.0: +babel-preset-current-node-syntax@^1.0.0, babel-preset-current-node-syntax@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz#20730d6cdc7dda5d89401cab10ac6a32067acde6" integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg== @@ -2088,6 +2560,14 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" +babel-preset-jest@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz#04717843e561347781d6d7f69c81e6bcc3ed11ce" + integrity sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ== + dependencies: + babel-plugin-jest-hoist "30.2.0" + babel-preset-current-node-syntax "^1.2.0" + babel-preset-jest@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" @@ -2301,7 +2781,7 @@ call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: call-bind-apply-helpers "^1.0.2" get-intrinsic "^1.3.0" -callsites@^3.0.0: +callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== @@ -2311,7 +2791,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0: +camelcase@^6.2.0, camelcase@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -2374,6 +2854,11 @@ ci-info@^3.2.0, ci-info@^3.7.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== +ci-info@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.1.tgz#355ad571920810b5623e11d40232f443f16f1daa" + integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.7" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.7.tgz#bd094bfef42634ccfd9e13b9fc73274997111e39" @@ -2388,6 +2873,16 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d" integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== +cjs-module-lexer@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz#586e87d4341cb2661850ece5190232ccdebcff8b" + integrity sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA== + +classnames@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -2421,6 +2916,11 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== +collect-v8-coverage@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz#cc1f01eb8d02298cbc9a437c74c70ab4e5210b80" + integrity sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2579,7 +3079,7 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -create-require@^1.1.1: +create-require@^1.1.0, create-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== @@ -2616,6 +3116,11 @@ css.escape@^1.5.1: resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + cwd@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567" @@ -2646,7 +3151,7 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -dedent@^1.0.0: +dedent@^1.0.0, dedent@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.7.0.tgz#c1f9445335f0175a96587be245a282ff451446ca" integrity sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ== @@ -2661,7 +3166,7 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.2.2: +deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -2701,6 +3206,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + des.js@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" @@ -2709,7 +3219,7 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -detect-newline@^3.0.0: +detect-newline@^3.0.0, detect-newline@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== @@ -2719,6 +3229,11 @@ diff-sequences@^29.6.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diffable-html@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/diffable-html/-/diffable-html-4.1.0.tgz#e7a2d1de187c4e23a59751b4e4c17483a058c696" @@ -2742,6 +3257,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + dom-accessibility-api@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" @@ -2977,6 +3497,11 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +eslint-plugin-matrix-org@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-matrix-org/-/eslint-plugin-matrix-org-3.0.0.tgz#0e5eaa556b6780dcd616b1381baec252df78b56d" + integrity sha512-xOPMeyLxOgoB2SsPhJmIc+drorZmXozSBo3X9whk/62DvbVpJcnththOCGx8ljYScADLb+baNOeN+wKZqwkldw== + eslint-plugin-storybook@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-10.0.0.tgz#da3ceb6887339048cc6b772109c82146e39e4af7" @@ -3116,7 +3641,7 @@ except@^0.1.3: dependencies: indexof "0.0.1" -execa@^5.0.0: +execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -3131,6 +3656,11 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +exit-x@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/exit-x/-/exit-x-0.2.2.tgz#1f9052de3b8d99a696b10dad5bced9bdd5c3aa64" + integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -3148,6 +3678,18 @@ expect-playwright@^0.8.0: resolved "https://registry.yarnpkg.com/expect-playwright/-/expect-playwright-0.8.0.tgz#6d4ebe0bdbdd3c1693d880d97153b96a129ae4e8" integrity sha512-+kn8561vHAY+dt+0gMqqj1oY+g5xWrsuGMk4QGxotT2WS545nVqqjs37z6hrYfIuucwqthzwJfCJUEYqixyljg== +expect@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-30.2.0.tgz#d4013bed267013c14bc1199cec8aa57cee9b5869" + integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw== + dependencies: + "@jest/expect-utils" "30.2.0" + "@jest/get-type" "30.1.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-util "30.2.0" + expect@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" @@ -3207,7 +3749,7 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fb-watchman@^2.0.0: +fb-watchman@^2.0.0, fb-watchman@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== @@ -3394,7 +3936,7 @@ fsevents@2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: +fsevents@^2.3.2, fsevents@^2.3.3, fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -3472,7 +4014,7 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@^10.0.0: +glob@^10.0.0, glob@^10.3.10: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== @@ -3531,7 +4073,7 @@ gopd@^1.0.1, gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -3682,7 +4224,7 @@ import-lazy@~4.0.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== -import-local@^3.0.2: +import-local@^3.0.2, import-local@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== @@ -3763,7 +4305,7 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-generator-fn@^2.0.0: +is-generator-fn@^2.0.0, is-generator-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== @@ -3901,7 +4443,7 @@ istanbul-lib-instrument@^5.0.4: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" -istanbul-lib-instrument@^6.0.0: +istanbul-lib-instrument@^6.0.0, istanbul-lib-instrument@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== @@ -3942,6 +4484,15 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" +istanbul-lib-source-maps@^5.0.0: + version "5.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz#acaef948df7747c8eb5fbf1265cb980f6353a441" + integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== + dependencies: + "@jridgewell/trace-mapping" "^0.3.23" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + istanbul-reports@^3.0.2, istanbul-reports@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.2.0.tgz#cb4535162b5784aa623cee21a7252cf2c807ac93" @@ -3959,6 +4510,15 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +jest-changed-files@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-30.2.0.tgz#602266e478ed554e1e1469944faa7efd37cee61c" + integrity sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ== + dependencies: + execa "^5.1.1" + jest-util "30.2.0" + p-limit "^3.1.0" + jest-changed-files@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" @@ -3968,6 +4528,32 @@ jest-changed-files@^29.7.0: jest-util "^29.7.0" p-limit "^3.1.0" +jest-circus@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.2.0.tgz#98b8198b958748a2f322354311023d1d02e7603f" + integrity sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg== + dependencies: + "@jest/environment" "30.2.0" + "@jest/expect" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + co "^4.6.0" + dedent "^1.6.0" + is-generator-fn "^2.1.0" + jest-each "30.2.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-runtime "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + p-limit "^3.1.0" + pretty-format "30.2.0" + pure-rand "^7.0.0" + slash "^3.0.0" + stack-utils "^2.0.6" + jest-circus@^29.6.4, jest-circus@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" @@ -3994,6 +4580,22 @@ jest-circus@^29.6.4, jest-circus@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" +jest-cli@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.2.0.tgz#1780f8e9d66bf84a10b369aea60aeda7697dcc67" + integrity sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA== + dependencies: + "@jest/core" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + chalk "^4.1.2" + exit-x "^0.2.2" + import-local "^3.2.0" + jest-config "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + yargs "^17.7.2" + jest-cli@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" @@ -4011,6 +4613,36 @@ jest-cli@^29.7.0: jest-validate "^29.7.0" yargs "^17.3.1" +jest-config@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.2.0.tgz#29df8c50e2ad801cc59c406b50176c18c362a90b" + integrity sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA== + dependencies: + "@babel/core" "^7.27.4" + "@jest/get-type" "30.1.0" + "@jest/pattern" "30.0.1" + "@jest/test-sequencer" "30.2.0" + "@jest/types" "30.2.0" + babel-jest "30.2.0" + chalk "^4.1.2" + ci-info "^4.2.0" + deepmerge "^4.3.1" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-circus "30.2.0" + jest-docblock "30.2.0" + jest-environment-node "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-runner "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + micromatch "^4.0.8" + parse-json "^5.2.0" + pretty-format "30.2.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + jest-config@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" @@ -4039,6 +4671,16 @@ jest-config@^29.7.0: slash "^3.0.0" strip-json-comments "^3.1.1" +jest-diff@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.2.0.tgz#e3ec3a6ea5c5747f605c9e874f83d756cba36825" + integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A== + dependencies: + "@jest/diff-sequences" "30.0.1" + "@jest/get-type" "30.1.0" + chalk "^4.1.2" + pretty-format "30.2.0" + jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" @@ -4049,6 +4691,13 @@ jest-diff@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" +jest-docblock@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-30.2.0.tgz#42cd98d69f887e531c7352309542b1ce4ee10256" + integrity sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA== + dependencies: + detect-newline "^3.1.0" + jest-docblock@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" @@ -4056,6 +4705,17 @@ jest-docblock@^29.7.0: dependencies: detect-newline "^3.0.0" +jest-each@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-30.2.0.tgz#39e623ae71641c2ac3ee69b3ba3d258fce8e768d" + integrity sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ== + dependencies: + "@jest/get-type" "30.1.0" + "@jest/types" "30.2.0" + chalk "^4.1.2" + jest-util "30.2.0" + pretty-format "30.2.0" + jest-each@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" @@ -4067,6 +4727,19 @@ jest-each@^29.7.0: jest-util "^29.7.0" pretty-format "^29.7.0" +jest-environment-node@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-30.2.0.tgz#3def7980ebd2fd86e74efd4d2e681f55ab38da0f" + integrity sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA== + dependencies: + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + jest-mock "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + jest-environment-node@^29.6.4, jest-environment-node@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" @@ -4084,6 +4757,24 @@ jest-get-type@^29.6.3: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== +jest-haste-map@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-30.2.0.tgz#808e3889f288603ac70ff0ac047598345a66022e" + integrity sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + anymatch "^3.1.3" + fb-watchman "^2.0.2" + graceful-fs "^4.2.11" + jest-regex-util "30.0.1" + jest-util "30.2.0" + jest-worker "30.2.0" + micromatch "^4.0.8" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.3" + jest-haste-map@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" @@ -4126,6 +4817,14 @@ jest-junit@^16.0.0: uuid "^8.3.2" xml "^1.0.1" +jest-leak-detector@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz#292fdca7b7c9cf594e1e570ace140b01d8beb736" + integrity sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ== + dependencies: + "@jest/get-type" "30.1.0" + pretty-format "30.2.0" + jest-leak-detector@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" @@ -4134,6 +4833,16 @@ jest-leak-detector@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" +jest-matcher-utils@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz#69a0d4c271066559ec8b0d8174829adc3f23a783" + integrity sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg== + dependencies: + "@jest/get-type" "30.1.0" + chalk "^4.1.2" + jest-diff "30.2.0" + pretty-format "30.2.0" + jest-matcher-utils@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" @@ -4144,6 +4853,21 @@ jest-matcher-utils@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" +jest-message-util@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.2.0.tgz#fc97bf90d11f118b31e6131e2b67fc4f39f92152" + integrity sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@jest/types" "30.2.0" + "@types/stack-utils" "^2.0.3" + chalk "^4.1.2" + graceful-fs "^4.2.11" + micromatch "^4.0.8" + pretty-format "30.2.0" + slash "^3.0.0" + stack-utils "^2.0.6" + jest-message-util@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" @@ -4159,6 +4883,15 @@ jest-message-util@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" +jest-mock@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.2.0.tgz#69f991614eeb4060189459d3584f710845bff45e" + integrity sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + jest-util "30.2.0" + jest-mock@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" @@ -4180,7 +4913,7 @@ jest-playwright-preset@^4.0.0: rimraf "^3.0.2" uuid "^8.3.2" -jest-pnp-resolver@^1.2.2: +jest-pnp-resolver@^1.2.2, jest-pnp-resolver@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== @@ -4211,6 +4944,14 @@ jest-regex-util@^29.0.0, jest-regex-util@^29.6.3: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== +jest-resolve-dependencies@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz#3370e2c0b49cc560f6a7e8ec3a59dd99525e1a55" + integrity sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w== + dependencies: + jest-regex-util "30.0.1" + jest-snapshot "30.2.0" + jest-resolve-dependencies@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" @@ -4219,6 +4960,20 @@ jest-resolve-dependencies@^29.7.0: jest-regex-util "^29.6.3" jest-snapshot "^29.7.0" +jest-resolve@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-30.2.0.tgz#2e2009cbd61e8f1f003355d5ec87225412cebcd7" + integrity sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A== + dependencies: + chalk "^4.1.2" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-pnp-resolver "^1.2.3" + jest-util "30.2.0" + jest-validate "30.2.0" + slash "^3.0.0" + unrs-resolver "^1.7.11" + jest-resolve@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" @@ -4234,6 +4989,34 @@ jest-resolve@^29.7.0: resolve.exports "^2.0.0" slash "^3.0.0" +jest-runner@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.2.0.tgz#c62b4c3130afa661789705e13a07bdbcec26a114" + integrity sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ== + dependencies: + "@jest/console" "30.2.0" + "@jest/environment" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + emittery "^0.13.1" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-docblock "30.2.0" + jest-environment-node "30.2.0" + jest-haste-map "30.2.0" + jest-leak-detector "30.2.0" + jest-message-util "30.2.0" + jest-resolve "30.2.0" + jest-runtime "30.2.0" + jest-util "30.2.0" + jest-watcher "30.2.0" + jest-worker "30.2.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + jest-runner@^29.6.4, jest-runner@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" @@ -4261,6 +5044,34 @@ jest-runner@^29.6.4, jest-runner@^29.7.0: p-limit "^3.1.0" source-map-support "0.5.13" +jest-runtime@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.2.0.tgz#395ea792cde048db1b0cd1a92dc9cb9f1921bf8a" + integrity sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg== + dependencies: + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/globals" "30.2.0" + "@jest/source-map" "30.0.1" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + cjs-module-lexer "^2.1.0" + collect-v8-coverage "^1.0.2" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + slash "^3.0.0" + strip-bom "^4.0.0" + jest-runtime@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" @@ -4296,6 +5107,33 @@ jest-serializer-html@^7.1.0: dependencies: diffable-html "^4.1.0" +jest-snapshot@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.2.0.tgz#266fbbb4b95fc4665ce6f32f1f38eeb39f4e26d0" + integrity sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA== + dependencies: + "@babel/core" "^7.27.4" + "@babel/generator" "^7.27.5" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.27.1" + "@babel/types" "^7.27.3" + "@jest/expect-utils" "30.2.0" + "@jest/get-type" "30.1.0" + "@jest/snapshot-utils" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + babel-preset-current-node-syntax "^1.2.0" + chalk "^4.1.2" + expect "30.2.0" + graceful-fs "^4.2.11" + jest-diff "30.2.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-util "30.2.0" + pretty-format "30.2.0" + semver "^7.7.2" + synckit "^0.11.8" + jest-snapshot@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" @@ -4322,6 +5160,18 @@ jest-snapshot@^29.7.0: pretty-format "^29.7.0" semver "^7.5.3" +jest-util@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.2.0.tgz#5142adbcad6f4e53c2776c067a4db3c14f913705" + integrity sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + ci-info "^4.2.0" + graceful-fs "^4.2.11" + picomatch "^4.0.2" + jest-util@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" @@ -4334,6 +5184,18 @@ jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-validate@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-30.2.0.tgz#273eaaed4c0963b934b5b31e96289edda6e0a2ef" + integrity sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw== + dependencies: + "@jest/get-type" "30.1.0" + "@jest/types" "30.2.0" + camelcase "^6.3.0" + chalk "^4.1.2" + leven "^3.1.0" + pretty-format "30.2.0" + jest-validate@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" @@ -4359,6 +5221,20 @@ jest-watch-typeahead@^2.0.0: string-length "^5.0.1" strip-ansi "^7.0.1" +jest-watcher@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-30.2.0.tgz#f9c055de48e18c979e7756a3917e596e2d69b07b" + integrity sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg== + dependencies: + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + emittery "^0.13.1" + jest-util "30.2.0" + string-length "^4.0.2" + jest-watcher@^29.0.0, jest-watcher@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" @@ -4373,6 +5249,17 @@ jest-watcher@^29.0.0, jest-watcher@^29.7.0: jest-util "^29.7.0" string-length "^4.0.1" +jest-worker@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.2.0.tgz#fd5c2a36ff6058ec8f74366ec89538cc99539d26" + integrity sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g== + dependencies: + "@types/node" "*" + "@ungap/structured-clone" "^1.3.0" + jest-util "30.2.0" + merge-stream "^2.0.0" + supports-color "^8.1.1" + jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" @@ -4393,6 +5280,16 @@ jest@^29.6.4: import-local "^3.0.2" jest-cli "^29.7.0" +jest@^30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-30.2.0.tgz#9f0a71e734af968f26952b5ae4b724af82681630" + integrity sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A== + dependencies: + "@jest/core" "30.2.0" + "@jest/types" "30.2.0" + import-local "^3.2.0" + jest-cli "30.2.0" + jju@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" @@ -4635,6 +5532,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + magic-string@^0.30.0, magic-string@^0.30.17: version "0.30.21" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" @@ -4663,6 +5565,11 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -4814,6 +5721,11 @@ nanoid@^3.3.11: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== +napi-postinstall@^0.3.0: + version "0.3.4" + resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.4.tgz#7af256d6588b5f8e952b9190965d6b019653bbb9" + integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -5184,7 +6096,7 @@ pbkdf2@^3.1.2, pbkdf2@^3.1.5: sha.js "^2.4.12" to-buffer "^1.2.1" -picocolors@^1.1.1: +picocolors@1.1.1, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -5199,7 +6111,7 @@ picomatch@^4.0.2, picomatch@^4.0.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== -pirates@^4.0.4: +pirates@^4.0.4, pirates@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== @@ -5296,6 +6208,24 @@ prettier@^3.6.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393" integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ== +pretty-format@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.2.0.tgz#2d44fe6134529aed18506f6d11509d8a62775ebe" + integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== + dependencies: + "@jest/schemas" "30.0.5" + ansi-styles "^5.2.0" + react-is "^18.3.1" + +pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -5362,6 +6292,11 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== +pure-rand@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-7.0.1.tgz#6f53a5a9e3e4a47445822af96821ca509ed37566" + integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== + qs@^6.12.3: version "6.14.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" @@ -5427,11 +6362,21 @@ react-docgen@^8.0.0: dependencies: scheduler "^0.27.0" -react-is@^18.0.0: +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0, react-is@^18.3.1: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +react-merge-refs@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-3.0.2.tgz#483b4e8029f89d805c4e55c8d22e9b8f77e3b58e" + integrity sha512-MSZAfwFfdbEvwkKWP5EI5chuLYnNUxNS7vyS0i1Jp+wtd8J4Ga2ddzhaE68aMol2Z4vCnRM/oGOo1a3V75UPlw== + "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0": version "19.2.0" resolved "https://registry.yarnpkg.com/react/-/react-19.2.0.tgz#d33dd1721698f4376ae57a54098cb47fc75d93a5" @@ -5642,7 +6587,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2: +semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.7.2: version "7.7.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== @@ -5827,7 +6772,7 @@ ssim.js@^3.1.1: resolved "https://registry.yarnpkg.com/ssim.js/-/ssim.js-3.5.0.tgz#d7276b9ee99b57a5ff0db34035f02f35197e62df" integrity sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g== -stack-utils@^2.0.3: +stack-utils@^2.0.3, stack-utils@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== @@ -5875,7 +6820,7 @@ string-argv@~0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -string-length@^4.0.1: +string-length@^4.0.1, string-length@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== @@ -5985,7 +6930,7 @@ strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@8.1.1, supports-color@^8.0.0, supports-color@~8.1.1: +supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1, supports-color@~8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -6011,6 +6956,25 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +synckit@^0.11.8: + version "0.11.11" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.11.tgz#c0b619cf258a97faa209155d9cd1699b5c998cb0" + integrity sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw== + dependencies: + "@pkgr/core" "^0.2.9" + +temporal-polyfill@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/temporal-polyfill/-/temporal-polyfill-0.3.0.tgz#7fe90e913ac5ec8e0d508fb50d04dd7a74cec23e" + integrity sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g== + dependencies: + temporal-spec "0.3.0" + +temporal-spec@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/temporal-spec/-/temporal-spec-0.3.0.tgz#8c4210c575fb28ba0a1c2e02ad68d1be5956a11f" + integrity sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ== + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -6096,6 +7060,25 @@ ts-dedent@^2.0.0: resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tsconfig-paths@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" @@ -6105,7 +7088,7 @@ tsconfig-paths@^4.2.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^2.0.1, tslib@^2.1.0: +tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -6196,6 +7179,33 @@ unplugin@^1.3.1: acorn "^8.14.0" webpack-virtual-modules "^0.6.2" +unrs-resolver@^1.7.11: + version "1.11.1" + resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.11.1.tgz#be9cd8686c99ef53ecb96df2a473c64d304048a9" + integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg== + dependencies: + napi-postinstall "^0.3.0" + optionalDependencies: + "@unrs/resolver-binding-android-arm-eabi" "1.11.1" + "@unrs/resolver-binding-android-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-x64" "1.11.1" + "@unrs/resolver-binding-freebsd-x64" "1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-arm64-musl" "1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl" "1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-musl" "1.11.1" + "@unrs/resolver-binding-wasm32-wasi" "1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc" "1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc" "1.11.1" + "@unrs/resolver-binding-win32-x64-msvc" "1.11.1" + update-browserslist-db@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz#7802aa2ae91477f255b86e0e46dbc787a206ad4a" @@ -6240,6 +7250,11 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + v8-to-istanbul@^9.0.1: version "9.3.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" @@ -6431,6 +7446,14 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" +write-file-atomic@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + ws@^8.18.0: version "8.18.3" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" @@ -6484,7 +7507,7 @@ yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@17.7.2, yargs@^17.3.1: +yargs@17.7.2, yargs@^17.3.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -6514,6 +7537,11 @@ yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^18.1.2" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" diff --git a/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player--dark-theme--bubble-layout-linux.png b/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player--dark-theme--bubble-layout-linux.png index 03d2084fdbb0c8ebc1091ad90de94502fbe426f8..ad46ca44d5cdc1a4f2c703951fadf13957176b2d 100644 GIT binary patch literal 5762 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 diff --git a/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player--dark-theme--group-layout-linux.png b/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player--dark-theme--group-layout-linux.png index d1edd45eb8b58224d0474426530c62cd6ef032be..9a0f8b807c1c5611bba193dfe03344883376a3bb 100644 GIT binary patch literal 8556 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 a$`b%I)G>1NUD?vZ5IHGj$*K>ZzWgsozFC<7 literal 8549 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 Ag#Z8m delta 330 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 SewB|ifV?zVs$9b4^M3$oNe0CL literal 5820 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 diff --git a/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player--high-contrast--irc-layout-linux.png b/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player--high-contrast--irc-layout-linux.png index 585d8cb5ee40b542c13f189e75b607618b55fd17..b8dddbfd879e1d065af6e6b44d17b94b6c747e07 100644 GIT binary patch delta 315 zcmV-B0mT0NJB&P#7YbYm0ssI2H(zIpu^|r-0kyL+5UmUn00000Mg-x^BwT8e5dZ)H zco36u92bAg2t43^|NSZf001yzW@a=3217V|;QjX7Zv+4Uz=$y!7^xcuT&xG4va^!_ z000;StTyyaP0f2!p#|6MB zjAf6ZnmACr_Rg;EuI_HUtzcq$dWSK4Fq#Q)f0@x} z42C&XFtfI@zebR`F;h2hHU>JxK#gaYW%-{7ro)XY)>1QO&;Eb3 z`G0b#DkH-p+4D!_=Q12Skk+%*cGArc3yaKF#k>#Lwza&hw7j(ZaW1Ry<;&JRH=8f| zH2gl@|o} LS3j3^P6qu2YOIZD}C5NYUq~^`5`Y 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 O0hHv_Ws9Ya1OE$pS=uZB diff --git a/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player--light-theme--group-layout-linux.png b/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player--light-theme--group-layout-linux.png index 195c907273d36a65572697883611c3f00f90f985..7fbee727742a2404914d0f3c9afd8895a11ab4f5 100644 GIT binary patch literal 8258 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 literal 8248 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�_C@>lmacNO9+^LB0HDICKA{Dnyy3)a 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 delta 306 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 delta 335 zcmX?MveRUOI9C)069WUoL$;Rb8x{El7$0pm6qvywCMdwr@O$!H1_qmk088eE-&1FR zn3La0xYqLkl{dHxoU1v+8?4O;WdCM7BncE_=vSBn7?=N-*b1nRX>6Imp2g}Gw$yXuFh zE}G4r%Wz<>!D`L}{6dCZjvYGP(PE!^r68=OOWG3eKP-#t=k{Z zpZ49h{cz!+GC>G8N8Rg32?$G6BU! zX7?_9>l0lqJ?$0)!-4)o=leNWn6@RT33eCAIlTX44^;jCztX=i#Xts|r;DR_2s6W! X>I3?F&KFn%g%~_t{an^LB{Ts5%oTWs diff --git a/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-bubble-layout-linux.png b/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-bubble-layout-linux.png index 4e77b7d094ab72e1adbc0c372eced1dd28c07680..b837798b3d1711f44728c17f914ee22e71e286e7 100644 GIT binary patch literal 9520 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 r%CX{8uf diff --git a/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-chain-bubble-layout-linux.png b/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-chain-bubble-layout-linux.png index d5f4e7a7cacf0071c9b03c632b9722e99f2f2d24..30a8f94cbdd78d755a31697016d4a6e079b9d842 100644 GIT binary patch literal 16867 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 literal 16829 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 E3q$u`AOHXW diff --git a/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-chain-group-layout-linux.png b/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-chain-group-layout-linux.png index e9fca0d76ba81b9eee5d5b9f2bb4f278aba92627..8540165f4c0ba221618aa68e06699672b7e49851 100644 GIT binary patch literal 17239 zcmb`vWmH_vwl+%M2q6Rrf#888xVu{d!QI`Zad&7)f&?eHHZDOMf_rd>V2wL8jk`7W zE#7_hKKJZ6y2^6NsrV?!utSpH;ew_zFw@h6SUW{t>b7;V*1B|M@R)~^eTMc7F++v}n0pMe9_3WX zcRq>Hp8dQV&zT0{cfT9K>9|Ku*&Gu{U(dPYL+2>~!#`nv#A8>~8QJ3`cB44czzo-? zptF(nqX5%qKqWnE-=M{>SJ!Ko8TWBQ`JC)P3&cVaGWjju2niP1m4qPGJutd2a@i5) z#-M3opZmv;0F!blyzAn$ih)ThV+G$Ud2eKn^Ba76s9s&0%{kfXjD7j$Ps@&Hk+`oO zY+28FN-S9jg2614DN%Wl*{klX7*T20t@ydtNfzP3uzM0^7JhWD+X3Tk1hn~;*6DW+1VZb{37dN^rs)( zlz6Yt*A5zajfY6i&)V2?CFr2JWen1{zh(u0+aKX(jcmy1)TRU1W>gs!hVFeW10~r0 z^Pc%Bt2qXo9LdZ+>bMZcifP0h9Jh5E#MmVb*20Z_C;7q&?jb`8<)rFWtM< z;`m06sq1T>^7F1gErYC6_eT|QKF2TxUr*6Y`uDZyOZ-IOV`UgVcgND{-cXzDK>cZ%g+j2_oZ0RE)q#LhvR8K{)*aYokJg%-6x1`+)L#bx-?18b1jqxb;`C|T#ii^k*J}o%`q&y+{%dG?FeZ-8PuJuLapc+xsMjB&6 zINH7puy()Yr@PYF+y3}QAq?~9UG*FbFYyRDujAKHqa7_aubL?Ji^A9;9<8MVC zQaj%-2i|B?LE zcW}#zaL>{;cYUIUMnvK;<~!i&8?w*WmvyF358(XOJ%sW4Wn+)WMyzOacavZ!Q2XF_ zDARaHW|TKo9?@XzU3C>-RuPf$Ee5GFF}`#Pu+f+VF=$`qoR~sp7WN3#GALJuPg}zaiAmZ zA8o!l0O140P}D&b<%?j)4N#cs->>DKJcw6WKdcKf@`X%JP2r%f8j5LRGStN8;Dm{x zkP0XHJwq{c-la&JT)JR>PxXCNymHj03~Ik*2JT=&H_|Ts6wzU>L{h^EeHh?8Gd~*W zf-otZ%DHq@*TC-}i_AKRot1WIb1rLO95N8} zjeyrg4;`QeRANp{PA(L&PEJlmU$^J7%jn(W49iDG)-64x0$$IyvIMP%O1eFk`bv~U zo7mkz0=PhVCTBq9IZ@1v=yNq$>RRh?;7%x+)USqTGb7Ap79LLyYO_yGvc7!{6o0W3 z!U=&KsH3XPJjATda7;=r-1CMBdF56CZEdEuR$UBP&XZ<5F)k z8la)F-q0-v`M_*DT7{M)5dq<2rmR(!SON#NP?(LC89v%GBdQnEfJf9CRcpI5ygE{?$BRh+Q8 zEPDoB_V4O%*3E}gi)X427C!2ys=U;Ow6Qz5jr~R2YKbL5V<+(0;Fss!DoF$d8x?Iz z4xPY{*ToD=4Vw$^^feMQ=@-)K7*?TpdlGK1bT&CaXwydacD_1&dYBlfNm=B*mioLzQ z@N@cjU&enRxDw8Vs1i3aR8_63dhZ`VX^T!Cg$_LmeNEJDRm~VHTk2 zuiz1!#7(ZB01ZXA!6{1`DJB>2E9Cg8XJHcR(Bs}a@zoj&^!Y_8ExRmTXhwx#0SzCG z^7PizpXb!fGkQ!~M{P*SCH~R49eT8vR>4J|-e=v-ZyoiZtDg9O^N3RW;Tr;Optv@q6wUn@B_w z2zqvBR|y1`i_8?&s1?#VxZG6Sjyd29)CDZ$elAxPa?S;jWVYZQsfs?&!A!E! zSwZmpE=l#Lp4_ECaF$Od=AOJ z0AE3EA%GpD4!3=*a@>y!vxK_wZK8!si8WWnzx)b+XEMlZ7ImjUQWWiT_l3!y1kOp(U4XZ|DgVd+PeH3x#j zOPhKL+kU7zhf3BUZ6Pl7j4wU~9!4W3e|&mGE)khb(#X)*@q2z=Y3p3gGH^aAoY4^y zeM8cNZEwQ(+K6>}pd1_{zW^e?sMCBu51H(U_MCAr;3HLnVj za9U}Y6|kdmI}^(UedxZf9uc+wNGhgDVrCxwqg>WNqtF-DJ6)G=q^zPz6Z<5;V5b+n ziWFlAk3k+2F-zo-|7AHrtV{(8-ZZ^zwOKxFOpEAx$w5k!^?{2^?6dDiyuVVdR?L#@=hZ0AmbKEMTsN%)TmHP>244DgHS8(8NKIN zdEHL}NQ0`Iq4%m&Of~!Pk_8KaJq=c_>9Y}O&DMy*oHwM?trj&@Ys<5LFvZ`w1|Agr zjC)2-8(r)&=EmL|4&yU6KS=<6Z13j182l?QO zHOefyTX1#H=In=uRq^|Fv$6!bl$D%amP2x1x0Hm_{=9Tf!D9I-Ga+siE}UV-OQSf* zUt)~;;#UwGgiRRwxpchnOHjIQPD81f~nx0IMLeNoj*}E9ay$|<<(iy<>18L zn7=LcW$pZ{kHoH4o{wVh6A-EP44EFfOlBMiMP9&P;y(w;k-UA&S8QM3=$!HT#cYJl zwhK4EN38BYxqviUX*OfcyMmr43PMu*lf0g|;V$kOSYpLaIGcI20a+`LzK$ioUtz|# zkyrcCeI*AuZ^IesLvj>R;wlP!8iD7sSAf4w!~Mx$>u67OD|Hpfze zlLKf}*m;Y4wZ(2faHmARxYO0nL!xrm}fOP5~RyM5g~Ey)a`ksS|! zYeGp-P<9`~(>NX9>1`BDYq6`}W|%ovf_NKwxc85a&eQRQH&NA+i*|dKS($&JB5p84 zSCy(hjq6ev>04pA|9S!zrPSaaL7yt#kbbN2ZnYK(8G7?Hgoh}9_;W3ZYSEZ?XxCra zN_aGqh*?HLDYVg*v3F=0eKfFi+Om&`LX|hgDH4w?OO*@ld=)~OPv2Z|-9Nt)976Si zh)bZ|c7RInmn%mux&=z(-32Qkv~g%#>i8y%d4=IEUuD-T^b4}iT&<)xUuHa%P%8`~0Oj28KctgU}-&$)~$wHN^U*cvcD9QfBIl-{1&c7lbZE%8r zxXi|Ep`JCgNPF6YBLUUI79mp@U_hKkc={L!og92r;D&gKO4RuXeFw5P@W+i3w6G12 zkpe4B#F8H@e2W)Vc%6rrbKj_P28TKT^Yo}5w3*9K^~(LYE6KTaZ?(`-UYp%T*tYcM0g*_Z_N%0D7>i#U#ySMeoGS=5>1)UW%l&jU;UuJ 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

    %(f>P{9fI*@BWmYR7 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 Im|@`m19pJ?4*&oF diff --git a/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-chain-irc-layout-linux.png b/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-chain-irc-layout-linux.png index f9fe2e8c943ab69da36fbc1b760a8e967aa37133..681d54cd26f0e37e06a76ef82001ad0af3a0079e 100644 GIT binary patch literal 18261 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 SCKiMI&*16m=d#Wzp$PzSic={7 literal 18248 zcma%@bwC_Zw&n>DNU#9GEx1F1yF0<%Ay{yCOM(S=x8UyHKtphC+@*1M8n>;?n|b?o z_O1Lw(Z%gsSI<4)@0=n;QC;O#o_^^h{aE-FW%EK` zpN+LW#enMb{b2CP2`B6D!h$xuXW0Hee#VNTo^gPmW)+RPdO&?Wd)Gqh$X6EJnOATf z7fuE$4re>`8ex^obZV1f{s=tb_721s=Tc044XiCXr0JK=!A_M=mm4I^ro+_lA#iZ3 z9<`_K@iZCoo-hMW8CwNM0#5hnuHQfSJh#dh^C=sT(*<;B?6=!*Q*pw2tlKdIYKiTf zSAPu6o>;V_EXG#3OqV3Qf`j|+@o}DkAXZ!xxosu7;hDAX2Om^Wj#Sz;Y-W&de<-~* z6afwD<;Ia=u((%<5KtR@UFvw9&LrS;vE8EsTMsjS)7;dy+vfh&fR_Ls@h3ZN%F`p= z{e?k7yFSSI2Qd7f2%O(}WTUk_GE7)W)jHWoowM6X^DcTnUA|q!xr5x~n)5Cu->12p z8E6>uyAjDf9PikL)$a$x&>p|*=V?sHy<+LX@#5(yv@dNp!5Q-$59nt~uCpgk4tm>i z$^{O!S9oJhjb(lPYCDeL{W-zii?k6>akl-3*Wy48c3fWWmHQ<0HMT-t$Y$vp$Co*B6@oV*oQv*$Eo_ek#k?0lx){X6^}wZeO#`=QwfT}JRRkI0zi zWV`&6{kf{|s&y8qCrJXirKEL6UV|u|`IPX{ez&!tK2=M_`SH*>XvynL44y~Wz?7@{ zXv(eF+|r6zj!hMNDbMem^Gu3tRiBXUUPXVkv3U#V9}G3| zQ<;U0jp?VU(Te-N>@sqL3>wCkw9MNr${s8~s312A{#;W&mXVsu4T}Awt zww#-rmRK@9C@na)PK`V`1|~msn_H6%JD{%Qr+9N}Chvfn{3x?3YjP1;OmgjWd3U_n zy{i#PCFhwSnjsj|ei3#6)djhYHbAE|bg=`$>zv^fnFzNUf=P689>I0bq7u8->zj!k zBz7vBvIL?@_e)Ob2SB5R(UjmDC%!gsEM(^>c>6%>|VFm8)Y>CtSke?>s z81HfJ01Z>J8PyK7wS12catCG==+fBs71w?+9#=Xdw-fUVSm~{S=>yyc5!*f_iV_q`@F4jS<9s89ULUGT&ZYDASAj~e|R&bgk;F%3TcLV$J?r6iOuIjkQK8wNvfF>H1Oo{QuB>c`SD1nhkw1$$x|s>`6n znwkK1X4L-ZVB@T9J&S?lgFhpyE9c@$oPKo~!tUo+_XUPr^lhtJ&oPs}n}tY8M=HqJ4E7ZSyLHi{^{K1i% zFjgCmZ<^1--A7*9p|&+^_Cb!SBqw)tcMDyMrq`k2YgrSDXXCnlLgjcAn z;8HcL{W$0E#NF2fk3TKKaP%{dx!82*1q;Dgho8c4^b#JN3wu(*nXJZkkTQd&73*(J zbxmQlZG(2bJ)8MUh6>61ps(ML*Bb|kcx{)fd@fEV?~+qpxGioqf_TG;Y~2b^pNew@ zyF-X}3+N4YULQBPKpn<-Ycp(Yp*-#|k(JTzezC^tsJnb7Zy%PMIAzQJUp{_BJ7!i* zz7HmbIr|VKSN*uxu5PkU3i|!@t?hRAs!-wW`_FIS;E;r)R8et|xjokxISooHNl~1u z{Jd++(p$$n(Os9WY-=pQP)ijND(~wk)&%^L44XT9Y0ui3#kutF9|y96*;|E<>PseN znrU5@TD)DKY9{;Wao06os}$J3tS>>CSQJBG({h+-p4a{g$7~pSG5m+=oEc)eVtE$s zj5=i|rPFYtW+$s!lo#SP-2Hz+3F1uNj}-Kw-|;pw?|fJ;=$9ES z?oNil#`~;57r2W-GI^ea$rv{i87jOtZjnlRu0F=0ZL9X|A*g1KUm#2BjA@DQe1pOn(9Q9nY{@Gy4L1x4zr{lz2BfaJ=z`mj~I= zxu~K7>>{amzL-G*NhjH3Ve5bf|1qqCMrlPMMEL35v?D;}3@*1eINw$|)uAk0Z6^yx zd<2EhkAj(rb~oo=^BziqEGxV7mkW57LgY|$B_k?}T=O!^Q>C7g&$_^g`7}Wh{C++7 z15rcrzA2AK2KsCHZ2~l0s!hx?)lNsV*Uy{ZGJcpfZZ#q<$@*ukH-#jsopOtR}W6UpzKlL_od&xIs=sD1@eG4x9@U2#m z2irU6=dPgPl?ga0_o62k2mDP5oHyj?sponZsFE{~`4SN@VHc9Ihi=<9D=n36Hy2xR zP@E;OirGjN@us1m<4sjQ(vE|*!R{C8Z2_&|NP`0f#-kO2EVNWIX;kl&Ie;>Ih*xynM1z{Cx_%Z@zkzJo&%oQ7)&`goDgF)yy@?Ef-?(@Mp&VV6Zvck=s$s7l$_-2N;uH{7KU~v=GpPZk|&_; zY^{#z&`{8M7H7z{UUL8sbQxxw%!TTWb#eMAVB z^i0=!6orJ4%=|()O#ghE@f#h%xU#@nz`-xoe|dSrAF2_}R6#P_kxT{nZ*)x>QR1s_ z?-UHS=2IBW#oQ-=pL8fiz)+ANuDnX!;LGdsu|^0ggC+Cl-A#?xhH+%I z@9yF=S)0PG^lBwHeeFgRx$Ze8L4Evc4@-}4_Kl}*c^Dhdi9Z=S63e}MoPJ533Aj%~ zn$y~yYF=LKGkGR=jk$xG{VmRWB06c)sg;{8Yguh83+nSgH8{ zW!)+gm%(3KGgCICyn@kRE^SBR@vMXZRes+=SsPv-BSq#$1{`#2QeeLWbBrDU)B^{{ z`qLgbY2XYc{%SBdxM4)5{1o*!TxZ1ivU*}WF$8fKtJ-6 zvTKI~ZWzB4&>?{75axObTtAT~JH3HRM7|h>>p1-F_$DKtQ@)5wp;7-^b2vlS_YelLBTT=yUP1@sKFGl`}y5>*GS z1U5ZAt+!kn3;8z9?jwaQ^9`s$0d5UhTS-Ob;=f9rtEQnBj~XbT z=YJyqZ9tQ?bc)}BrPMgo4Fm}f1_ZZ|3ZnT~ENzO5Xi*NYhh{N3Q1&nKd|Q7dxKJWo1+A>~-o@=4WaFlkJ;v<3ffc>@DiR zFIjjQKvspr;a*zw@ zQ%Gr{;oxt7;$pi!b1Gz(VJ-m7YOk&UiZk9x zn!NihzRIX&57Eg2B8g4WU#$h74ZMK!$ z!1G`!4=%y@2E8^`#F&jw&n__>cY@1LgE!Tf<|BZ6MXSN-S}`oAN5o=P<8WiWzO?HT6?D2EeAOF8BGVO4QjhN}fs^yYw}cc~st96UYPD=7Hq??5({a|q0Bh-pOj*JEGEL9TC_2bW z%{NG0NUwQ19!7>V+MQBporele0eyX-v|T%kukBfwu(29(|gOinlg|=lt z$Y^pSe2ID)|NPrceMW&<2K~jRrI(upx!Yf-!Tro;00xqC-Pjik1n9tK1I6 z%;)23Ojvu{F+V%npni?DM(JMY|*eAwDfZKeW!^K_9zm$ERZfj zTP&vV;W{2j(}ml#b4DzTu1~D&N@TRloLA4-uGx2xn49EqE0rH5_$+qxem}Ca(&`=5 zUu7BiHFJO0NUmdH(OV%~C^B`RC!37-e!j+RtVF^$n#xt9?$dYk17 z^6FC-UaMf&K??s9K?e!fCr*+L>Exia*4{22T1nKO+TNPKdGeCax_8Xrm3&`yA1sR_ zV8_iQoq)C3ucv;*e|8dYN>;-~FCb9cO-XasUrn9{&lR|sqk=?ZwEHJ6>(yJXoL^l# zPxo43s5EMjpe>TkZ@MpMC@H}0LPd~JEil#M2azIgiJHd2OLK7}GamGjmAkZiV5m@_Ek<61RH0lo-f#sEPV*hIl}KA^ zD#wKix4QY_ ztAjCXeynLf%?X-v&VJB*D}{*b&H3<`W`lSHg_@_+0mRrL_CQin$;?`@#L65BLQ{P+ z(phGQ3!ce5DiS-Mx5KiEmU1-CG#+ymH>7D_RjSADy1y8q?pNx$#|GEu zN2BJ+3pmieSWlFcieixALu$szs`~!1zD5Wn$bJ5j%+xJevv7KU@ZEJEmB$-N>m}*g zamVWu9k618yJ4FfJ$dy0l1+7}NO@#`675thHfz6gFV9!yuGlu6?rlYfF6_LxUwsAF z*&Ev@0-|UDNEPDpkJPGHH}cWEJ>8a@ju&)aX>%Lx4YHT6d#ZuOs`U}?>@o3OrWkh* z>4hj9OYt9}ADF)J;r^s{#;I{a`mk>(KeVyg!bw;NIx4{44{57{Go5wBw;_EEP4C->w$>(0c;YPjufU?Ie z9Q!dTky%wEXY3Uv@s)DLTZK^BM8azRqh=2Yj_f(Kpk`I2{woYu9*lrq``KjioS(j{cx z@wx{!%VN9Vf)i`m<>jYF>?~{1Dn7Aom45G46mrY}aZqPO@~5@O7H!rnbxjQGecoHt z^>_6nyzDL{YT%Q%Elf=%K~M93*ox)L4i=M=^7f{9h>nK&y!K6NTNIFBG8i_O4NK6L z5kpXFi0fG1Qc85r#>`Qb-YH643$MElzoY5Yk+S5F=-;*rStgrr8Bc>QynPWM_I20~ z$tlnLC;u0vJgnN@K4_e{|1Uwjh1z z2k|6+>UJ4E@tvq>iln@{k|46Tk5yv#G_s1O?^0@v^qVAT=~bQ5U$s&}=LvrVe=pBD z_@cTY@%mjvo8qom(L1Njfa|-X5GC{JehY$2`Hn| z=Qm97NkJq6m8G{rx$4Ez;5knBjXs0t`^n!%lr>k>4U>T^0@Is@;rVQVke-Z4zTS-~ z4t{yHA7xKmix!qYx*XPa*#_^fB^eh%-VW9cC6BT35}Cx!-g2%R`Mqp(`7*NS?iA9& zJfsSxswMdP82L;EXg{gHZTaNXEr7J_b&Xa*Xl+HtXVTm@0-uw1I&%dP@JoDWS=j%q zoz1<1`)(?{ch03Yd`6L?xA##;>4%$1=r;S+r zc=M?vP;oGC;wurUwKb)TW25zI;9VG3JQ+Q0+b^7^LHFj0-X_uWw$2BZ#J(O1B_n-r z&krgftM(aV)*jkj-UCCT!-J zmw+rBi`6x>p8>7Yv6Xbfo7J*W( zOrU)=jw6HLgHMxbu+u@kuNN~gmXG1OOqJv1D}%F$gGGq=^ z@##xLab68 zkfh`sJhGVB{V%<}_R^dPDN`&bp$jU+#13FM0~#LH|9?X;?CQ{5=Fv|Q)20g_fL z9^4;=P!Nrviaq*Gz^$pI@2NzjN=IQZc|S|OvhYksM1P#vk#5=t%toFEOwWN8pFaf| zrTe|Y(njxn(u<4ljd$>(CaJ%wy|0#&a2}gFf5h?(8E9JiiQ$LyLi+rX(?^7&$7Z>T zWoT-Dv)Qt5TX6&L1%7>vrq-7fCc4gxP?->NV+@V}lH4%oV~k2U66Uk=w1i%);G>6t zT6R*G%UBAIzUgJFJqYCwBDBScuC{|5lMC`j+vw1%SNL8Nw6*Jx51Z&#i?{{Y+ga-;8)J5+v&pm^z`%`2Pvw`SxSwG666Z+QrMkh&SbvE7c>c_#(!jV zh?NTO`gz30AGAaKVZUNzh{k=rH1Hvl?KNIX4-?W)hZ8EeDvFz#07)s1(zt7Z6AS_l z0kh@r^r(6y`Lgnlh7z$3mi+uOAcoJR{i>4Ig?kQpvK{l^Xf>^9l;j@J_=QSx1ZVg$N0gh5dT%;-=7@jbkt61F3_UsS^sdAz~VXXkoVYu zeucRmN&KH|W0t%2;~kx->%+jZ9m%kuW)VZv?WsQHqp0A`+3$4yl-jKpOCLG{wyzY`cK_^659zo)O&1!8SP!*Rb>T-}71L@a-c#^@~8q$+8{IXk~oq9(T?wWfICI zGZ#`9fIuO$U!nIsxj~^4DlouseAGqhTJL~Z+AKBe#1q;CT7!&%3q=GHvyCq3;xKLf zM{i1QG-1!#|*l!)Qc665(I=h|>yP|kB1Go%nNDyS7odbmH0xK2X z_$kYv;GJE!M>^HA>k9g^*k33F`;zv4!M;H)7H~QjIknWfDnHJI0U+vB7Z`nX8DG%k zS2=^xlxj}%8D`z~`MTn|rg{&HyNNBMy&;`4lN4Vx+z-S@TUxdUd$x9xZXCLtj7lyA zzaO61e3#Wl3#4n*(OmLg&hPXU9MSSSl{{S4Ws4Tb-FZDbIyTiVexy=5BWOOKizH}- zBog#4%p9ruY%G#|y(&89;_++sjlG8ROyf21t^kS71xdCy474!|^9?`lep?MWpoOkn z`}6^94{nzcpjVw69n<__P-AMpc_mG4IixM;f$i zws$xm+j&*57WRjqAGo<_*s6X*?3CBgo31Lnu-D<8Ge>%E;J?xBF^l zr4G}9lg=6A`|ChU>`Hp*(5CBGhfHX22}Oy015h*wvO&jJa*kM#F8IJR2Isa#|W zCZ(oh`jCkEcTbIleN5MSMK$oTZe(WnWC@(E;+#fC&tHgP%rpLa$kp|CAKy+8+Ls== z{o%{7f_}H>q|WCMzO?J_pL<8zGx%NU?y%m z?K#38l_JS!;(hF-9XC-}68HebU*2p34=hxAnKj<)+Ujt=Zk)P|r%?jI{UMGy+Oo|&w^o=59~Rpdo9>UA{{Zq0=8RrJ1!8oZ+tk*#HF3Y_&x57X#O)VY%6`9I(P`}T-`Nh9XmA%OK*GBW7d<4>2EPH>| zX6b>P>JP85HZF$=B^P+ZaaTFqhR4q2|6v2|5Y4fJQH}bIfM=T_{XdQkS`@gd_f4xD za4=*<^TfAMWy2r%m21JHf^f;~$X41^x)#_BcmmIGhBN;n(f`EDf6`gus!Wpo-oTk5 zB(Ux>v}G?C7JZ&lois47udfflGBOqWREGN{kv;6sM>tR7VZoPhwf^>Iq?TDXvcDik z@sQuFxRzEru3A>wYI0-cy}x_SSfn^6lV^ceuS%1qYyF}|{=(Ci4ba^3Blq3DpX*Z1yCmQJyO+~I+vHZ(Og6(Qj+ zbpd}pWNfbtRB-j0AhDhu!UY)EU3_mh5m|QjdNjIXYI!r13}Eym-Nb>4g*1S(m$kmW z+n=sPheb`U{PU)Z8Tc>lW&=)lGnzIq!H^z%LG7!*lef$Emm~K&Pb25(j1viLA<_b8 zwYV^sza)r1h243vUPS-c;_8*&PH$cxCn*$ToGT!RTSWQ{CDG{H_@>5Ao9Yg*Lc-oJ6}>hIm|rl`mjtpxdVMNdyzEp-Sds8i#hyM zhO*1u57Epx{fwIu-ZuB!^XcFOw7wAWqeEq@eL{_bBU2hRea{MQ!Yy)&y>u!Cy=n@r zEqq*w+WoV#vLzsFoX~sj201U@|e*5%g{Gy+%_^by{g8HjEwY0 z;C3D34*RYjpgd5s8St$wS(5qNJ2Z2e^u(iOOtUYR0hIxT88}ILit8I>-|#D(E$b7H zHc8K5-%^^{UhlP-rhkubBMEJW<+O`6QBklkimqLPE%4wva)23a+jmu%SZX=xkW-VM zWS_NL;(DsIdu}z%Y&{iOX;*+`;hc8=1HGbXDX-oStbmw3L^25YIn~=>s}Q(M7JhG~ z0z<9$F>#6H%tjZ>6fd%e;3=cj)Qi@a9*gmmwfxs2hp5&2A78Q_9j$b z%P{_NxYW5@yZ>?A3Mz~-FDNkE9t@r0)5z+8W12qxg-;|q(MVyQPRlUvn667HOd|0b zNLvzCNl!~m&7_WdF4<@Xc`+j*T~vBm$}o;f%MJDO=PSm+yD=L)zkUH0vE`N2xfYNT zK%6341O_H=OgdFUhSGj|w*ZoN5l0lOps^d>a-;GPCP?-HC*YQ| zRS)*w1at=QBSZigB{%YLYqcG&5*uff0Kj%CkcASE8*B+3O|cQw@|-@FKYfv0qKKj; z$_u23qrA)T3zW8p>fxcY0VvYp)blr&fEn&!F@oStl~OJYD*zx?hk`ZrWmI8vCAWe5 zADd41gniC+Y2Fj~qskQNJ?+Z+=ZCwYkr%CcjA1(HDFvJN?O9DedeOh4 zZQe#zq)q1~QZhy^X^_2>y@5?G^CrG~=T<(i{hR6wW_C_e-HU~|5rA9 zD4(RE`*YS-nZ7Gu>m07Ssd`>hC01#LBu{J_%k#fwv#;O$H*7YfdT?ulakF@bvW^J( z%N9wdmtj>@^ooG}hJHxu>RGq~V}b)brg9EN!G2U!w>S<)2Bpf~8Cwc0+F%S4aEH$0 z7Bi+-uvNXtt4-S0kL?~DlawG9`F-JONvHbq^|!=A8xV_bhVR-e(wb6?sLG9^p$CsRtc1OyI&Mo4wCSlthAUL zi#Eg!gHSA(;}P-SfSce$eo-?j$18qy?RukaDxe2>i@_=JrlLcypTF!k=lQ1~78fIR zGq7^G`XG`#R^oej<1!WcP0PqJm3}LC4C)xE4hSp%On+nR{jsm9=(W7>BAV@$;~DB@ zg716o9h7Xvj~`?x!1^oRAOcfxP8p5eKpw0>(z;UBYN{vDvSKXvtV23;ZWekYq&K%c zj^Bkhu*TUCO%a^;5?NdcUtFnnrKtj=I!<-`ynLeQ-3NT?kTGyI0$8zoc5^@t-z}#q zIVTN&NE?=1Sn5+TQ>T$8$GE4eO|;i(#HllY$tb&YRIWUDQIofJF&&a+%>ibQkivnY zVfq~4@KFe0P}5NesHh)qiQ-C%NMGk)iZ)^}ha?jbg9URt%-aGafujKT|C{ZCMr^v zWDpYkOS162@hC-Kh+U<6x-uKGi85ti;9$@Wg@-rJ57{mSAIdQ0NrZk(&({)1w-1|Z zXyV!)`q_!(@6V-)#Bu7E_`e8##c7CK$&ft{Aj_19fx52-XlK$V(6Sv7+AKN*9FK?O z+D@c7(D~3iL7KeXNVRelCL@#0%z2e+^H~_V3W=VOydHx_tw*n)aHQg9+sYW{YQmoq0WJi0Kx*Jds$ ziFs&9N+uSYGvp10Qf!Ns?v+7Or85OPx2qO!aGlNNbqKE8WLk@wc$}U8@ziGt+ihGs1}ch89O3Mk6FRT%9{{~Y?t?cf;<%Z=c^~y zu{f6Q8GJGp{qjH?OH5vXz#>h30;fR6$;86JszDVe9ryL?RTAP$cyY!)wltVo>zKB8 z|B_Vk9^czgdEbj2aWm|ViF&xP3nNX;{|o-b6)QZY7~+s9Qm3}jN;#l7f9uVwsa#k8 z*}E#EwG&>-Lf0KbugLKtbgqqIjO!k}H~aZN>F*NPb=c8!rAY?UV{e%9zc2l*&(#)n^VI#TUqhwT@Pd;K1Bho98uBq$O}!Igs(*iW0LzLB162G`5{~xP}YwQk926pFQIPBu6hsqbJMcUy^0(AZ33j7 zYzZYJxi-{B_RHk1$F4H+L*aTk3>&}T)dM{W`({VECoQnpA{SIKKD?ni%$w=%u4E%B zj8mApa&eh_c$;~Br=YCckYB)*iJt4^Xi&xQGb3GFqt3Fhn0rE+!C`@tzhF#iceejh z^U~oRGl%c&{^?_{`W?{<%p$(>Y>?2|qg*qaC6Mbby5VHZW-j_c*d5>KWPh8e!3Q|> z(ph3pT0RFZCB)a6iWfxsMp5WnT?gGF>GVz&wBgAn_w>lPeCCHq@3>}wG>aAK4*($P z$yT~x?qNW5LsUgYIoVF6rn3i4V$%DV`QcG|jIW3+6NPuNkYDe+a$Yd=0<#of>&i8Q78-~yaZOk_Pt|0S0)SV$BPWx-L;h4zP1V-a zcuKfwc1ENPBjpc9rgIywSQd-ODbab@YClxKEALWn*Db?XZYLK^)kYh}X7W;Cw{8iS^W#kqzwpnf-zSW7t=uH0^sLG=3i=%QbHI0z zfV#2`G8!SSYzbmNP*w6Q(Ye4IFk7f{(2;|KlMOZ+fpk?-v5A_~N?hy3g&Wz()kF^i zG7SV|8KqX&)a)+?*EQ@1c}uvRi;y%-*EZiV0D{jh5J(5qBDlaKD#@f%)543xvk3eK zP_Hp@Kt#Ut+>Hl9BUCQ)!_gn9n6v|0#)0b!RM0F%Z)uAg?6Vb%YUKQkw$iT=gvO`OHZ*BtG?tv~^Ybgd?G&>nV56B}@&gEipalEeNj zRy3luA>bQfSK#$-RHU%GcD1^&eoFzlixnEOwo zWSci**h@gFnkTU;#FLLHNfb`#z#gDuyB_~W8vd2Y_J73DK&}6K!rcEH6Y_td3Cwyi z8yiL=aZNmQWcoL8rXycJ{q5k59)RQ6c!HI9{2_)#HV$69pkEU2r(Z2wB3oKh`J1pt zc%T5qGAXU#84~2}#suHoGR67-ngd`R79*f112s*8|vc3LG8l15@Qz&z~)W!2FVkc%@lZR4I z#81wvWM=c*hDq|J(l|}cyo0r(Hz=^*^@s@kog4Qc;58Qq-~}aO)qN{Vt6$VPoT?iC zOqXk@GEsQ<$a!)`{kO4X%1GE0Dyr%h3=o*P^g%anOH)6iKH3%ll%99>Y<5ST1RQa0X}&*E~0 z?Y^zWwizhrEu*RoT(KI2_2@KKB(s_x-grpE=wv7taUL@r9M*@U=NL?NOu1wd+U-Vi zxF>s~vOf8&tj~o@GSAP6mQ@FjV-^N>7swhzlP5lXT9C&CmX-j3uzKQ$K}L$P$D2m^ zk?t}J2CQ)t_4-!Nx0gw2FWm#B>B%Rz7|DXQu^Y))AasV zrcGt6u#m~84dQQgD5T^3r2supyr&%LlH%P}U+)fICcX>hYY)oUqPAy&7+i|qab}x? zc_NV}S|aNp#TZXNZ*^&_d1-P5eLS!%#)IM7n$xmFyLq$o$K{WD@9dkg8xvn zQ8jPm3*=T!r%{C$uy$hvMw*j96?sHmMpUMUQ(2~_#)x7M3-1t{|K{Nw%2Sgit=6Ya z4cc2I@(D56S{KMl;IRze`^VD&JcijzI^ghhD<#FTodzw_yLl2@@=BPO6U@vJ#A_EKgj4frTvmtLYL+_lH>b^!4K3`vpoDUTZbSlil(~wcUE}+#;Ho2ZQc~e zJ>Ra~$zeVIK3yNJ3@6}qZ2BEH%bLrZ*K#CU^XoV#mxotf=Kn2j^28l8++Do*G75>I zHkHAJCxn2_#0IuEd`8Yfv)KGdEOeh(RZY#u540Lq=~%JcB<&no@wkpB?IseU{E zXF9SmjdjxXaoXNFR=unB#Zs)o4=C)POY*7|=TFlqqE5){EpFB>K>6_EZu{Lz^yg`< z@!lT)MK$pAAP6ZHkp+GQcWvifV1@Hs&}R{!zO^CjM?m z8mvSIcw116n#Y`Fv8f$%0P~%PjK$KMKfy1U0+gu|un!Q8jOqV+{4bfO47#&FXi4vh zw|1xa8y~W#O5sntpiH?g& zES++o45;SWK4DI@4U1@qLUi3xqU7F7q1#ZYj~H3ot?L=YU^nPn!&LabL%e!a_le&O zg_%r9$`WhdqIYcqRKfONQZ4vKS3iyCY)+qbE0es?DdkH{FZ;lBuh>a0bqz;S*wafq zBkq2oTBE1K5{4+E3ibHwq>R!34W+@R^#ssX<%@X^4ve3q?$&qcS6ZsZGF=+S~wos0@q62 zu)=1JHFu2pxWDh9*uXYV4ZXt;*sigZC+Q)?EeRs(c9uMS&2dYz(qZ%zTO7PRQOsZh8X;< z{o~oGCmPcWHW|^FrCurOuuKxY8bg4@oOzG^t<@8eSKa`g2M9idDa!JByaJ*COs%jB z^u5{rnseI|!u?{?>I;1@dKUgHrs`s>8Xuj8Z415Dr3m)U|7cWaI`B=Ei@Mw5&>UYr zr{l{MKTqt8mw%iL8hq6(9kp+!UTq8@r5g#zHcGxuli*tf0O$7=#I96+ee)pp6OB4f zyRt{45s8;X?qJq79h;ikBT?Y!t@~$2LYSe=a`8c8eOC~LfeXoVI1d8gTS?%~)FG`zG=r&MCI92*@eg}5bX?>E>Xy=N`#)oEH+p>TuPoY~{-&;j-gc&l8-6Zx(QC1x z8ov!2tHDM7&->rnn@nwNmSI#cbeYUM-N(mBnK3fDOmZCmx{Wrc^_J*mWo2_^9R4@& zpH@K#6w>mZE}e&*-aJ{u3wu{UursE5N9vE>%QL>+6aA(3o&MVvz(wnr6x|wDjby;UFTBvk(yce@h*(PCy?xGs)5G$67D4-( zAG-eR$luRo-a!&QVQ+}Z1Z@nr2WIO4!$+O|Um#HH_(xJRRm;B{Y)3+ni($4RSfw zJZH5bBxXWxwr9SzkHH0p%1YLg|5kV=s!~3Yq4Wtsg3i z_ke`o_3WgUWE4&$>ILB@Ou7BM)1aQX^@SARNuN3c-lFg>L(eYQD)w_(xwJZhbY4x} zE|1kPiGha$Tp`pxs<`6LfH^@ufgXtLc*uJelQceu*{THiRNy42s?!QAf?Y@Vcs)hw z%e%u^MMQQKwi`VLza@a0I?Zn0>)esL#T$qvU)yg)Kv3Si1j6GNG{4l;zFl$|q8gjQ|MM$xm_AY6TpS5>n( z!LxR6a5>NTzvk$f#zie1n&rJ} zJ}9w@bv2mFlAMWZj@9_o_WW#Ggz_lq3BJ7(%eE08;P+qaEpDS`##TG+^=NzAF69`x zub>+o0lE9{5O7R?xY_5Sv>>KAL%$9OY#d0c58Nj%cOk8?GX z49b>JZ~yGH9kq(QeOcV(arbRzN74r8{tTAT7-k!eh;%!Y{;nsaEWAzahmi^b|DY4r zEaaKP+u84O@5GO2nd@r7S@U9de0bwgBtq`XPg8e+9YCB3o%}SC3ll|?bi9lGazOo1 zXwHHQJI-h|RUy$K$jK>t0%rz=@+N$Vj9@Gzsg==FN-~BmENXWqUKHu}SU1+Yz)s2H zii+68a|c@*RSTRr?qMX`93HPqVGFseT=%dIUbOX^WCr87Dute-mVl9tr>k7*cAoUE zO;qeBBR+-uG|--&lvYC*RQEkD?(UJ|gB(PG(Y!U~4o~92Rj!m143hC2jt^;f1){(f zKopqFc(0UsKG?*q_(mKMCtvYL4i9a82z4_qLosotJac4Rj#bgE=Ds1My@1!)-cm8I z&_MURygk86@Yl---!Z0x;6Nuaht+j>4ZECuZfJIX?{ zpjl1Vve_bP(yISsV)c`!lsvJKz4k?P|D4@XH~a73Uv~e)#J^tWVnbf`ZvJ=vPx#&T zb*oKZ&$`*}*}l^-f1ll&C$sapyrQQZTjlj)`G&2_%P&q@_3qn4>l?s@k_`Tw^)I6J z%(@T4h5_m)TrQbu!geyLtWsmL@uBiO*KZe@r8ljzXe!*7?`s-odbl#_!5Q{=xtsH1 z6CeNCl>XrLml+9H^`HBtP4_F1dt|m?>b1TN6^Gjm&d=GsveNU!_lm#$`%{X&4C+FJk2HBt!?AJ@0~vN+x5p$O%Dye zeVuT!Im-5Uz+kdr@)je53Xb_D3PWhD$|O*j9gA zbD4STf8T095_}mpZ1Lsz!5n6eoi>Pm<*p5c=%cKJ^Jg(dr|{~h?}z3x4WUr_~L zef|sY^YRuUCcoxxza#tMIv=pF|Hh)0^Mwp>q1yUrP+$FkacjY~${)`1z(B*Y$}LUs z%?^o|?Qt*mu?g!jE)aKu?rtM@PylF)fig`srwP8xmIEb$3&J?o?5*K^@$l4X;2=vz ztS%!%+JRGD4dVN(lrq#Ei z{$$>K92y=Tzhi~K4i3=RNAaNz+qTsnY-?EO@N|uNf`Nq7!w%#0b0BA@HK%NzaAqEZ zR{Gv9zw`xP+JNgQe6|8NB|krOstc%V8FyNanDBE(8%gMv#ZUi%?)(2=yJ%BAP&*r_ cVq<2wbZp%nfj|F2iz694UHx3vIVCg!08-LPumAu6 diff --git a/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-group-layout-linux.png b/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-group-layout-linux.png index 52357bc9e4d7734b7616d59fb6024485d49e5606..c34d8925d7cf8673b500fa2ad18980cba9ca1214 100644 GIT binary patch literal 10598 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 U(=h-2fJy<#NGOVziW>d+FDj-r-T(jq literal 10554 zcmb_?byQnl*Jf&zmKK*Hg+j67?$V;g-K|)H1a}LxxVKOwxD}_k7IzIaxVr>*hfMgr z>wRa<`sSONKPG=<<>u^r?mp+9v-k5n`-CbhO22+d@)7_5yq5Vap$Y&z;X?f`Lw}6= z)|_s10syc9G7_KE-BWhwG4$2V??n$mzn_N?OQ5lGe#JCQY-CG%6{p-VV)f-iu4u1D zM2x~{dJ;3CFKe~cb>0eVQIoP|=F|u`JqAODv$2yKeF7!k7?~`woj;M(UntJT;In(s z8wrWE6?5X0VZjRi6QND$lbM0xog1M|{<+*-TF2C(35yzSn@Cri1vHdTbqCr^?Z8TY zFi(2Vy8TqAMz!}QZIWT_GLmFR;oKg$BiF}d*RpYx(DDvtJ<`K|)S*IW@;EfK23yM< z3nU#y=Hn?lW`s=obe*x*a_4=!tMM>YEbJLDyFMqonn&l^RL3-thf(@i3bhYj3^4%E z`Xp2a2n>&`BR}`O&)&}F=0x4#UdDdLNyL;^E;@T+jz@@m0s#1_WesVrnAG(^_@z)5 zfRvb_GX~I{Rb)_IjGE}=PhUvR`Q3!MAZSY+j+D5p?QTjZ=V6x=F{QwZLRf{~H7VYw3N;)6fAGPT( z?5-?IUK|wgDYY(1C|U(Vn8NOwFF78ex+T*0>Z19bxsfo_!g|-BIqI-xX$8I(Y1*Ci zwY=ZFqd%fIdKmqPoWA+Zd{}98H8p4dW?v&O&!#ZX_X>&#Z_v?mQH2Dovf44SBJ&0u zl&#;wDsEh5tf=LMul7W0nmq57Q}k(-J5a!v!KWv4o**IGXcY^K1fQFq4btCn@4d4; zSPDrP#jdBPKJ7dzrhrlK{s~rmakVrK@D*{w^>MeG4kEKbK+#s_MZL4kHY!ciDWv9w z*bMFw&56-gp%)s+c+1~-vOk{Vql{d=q9V57pQ4f|hn60#pd9iyx`huB zTj$PxH3i|&pb~t6B!37yap{sQa4d)oBfZ2Crp5W?|$YMai zwiWm13NqmSBh|`D49+L36y z#oO~+1e8AVxH9fQRLJ*N#bM*X{Fhe%z~L9C(0-jER-)OaRU84A`RM}Y=Xt|5Hiaeo z76wVbTrI`U;jVVaNxplc7R!Z)BLiufFDY1oWyTwQA7&iK*Nb9lq6{Ii9miUj#Jx`| zSesKDvuhepj|2O}Z)ru3vn34xdtNAjaox{L&`@s$OSFP}F#}=49_KQsZu*g~ zn}Eaf6N>x6XOzP?v%b;t-2=Zs=)`>V+c?o14LP}>`;?YP-_cTsZ@eR~VaUdRsujfT`NjDeKF(4B!)%v($iC>T- zp=q3vn~RM3dsckn%QuU#MG*DE9Z2zK0M@Cfs{Q2v#-7NJdRZsq^JREOXy)C+CagnG z&~~CF=Ux(V0rndZF)Ah)zQ;36JKxLgBPEK!c>8&aMXABNx-Lcrc%KeVKbl;RW=>y` zgWB!4a@qI*OCrS63$E3GXV1KTmH6gUP!hq2$cyauRgCU^nAK!SNduNp5$y1zLufzr z^2ei=`yI1^M?Q$fzXx|W*KMWNHOvO1&76owQDrTHoYo#@iTn`5SG0^2Wr4ayb#9U-86Mf!COPPM+fZ_nl2O zhnshI4MIImA8(JpLm@TrZ|R29&Re~$t$`e{lBT&^^A7_-Sach#wa81vi=EaHI>$wF zg8r6U%TF5DSP4zvq-w@=fmWjW{rveSo09Q1Yydfi({ffHz04_aT&FJ0j*HVl!w5{hZFD+>skul7zlF<7+^|qyzwv!D>HbAJp=z^;z})aBj3(PQ`6OIG&xhX_x11P1uD6Dgx9)FD;-*%p&oGh3NG$-o}}Y{6%`8=cWUHx z1Bu|H{?A|zs60=Kofbyd7<_m38u(8d!9xe}W)5lUts0CE&Q$R5a6G|9nflp^^ZjXa z=%K04OMJv$|FF~MgY8|#dEJJ#aDX52!XEbehz&Z3IT7D{-*9@j&~P!EnP*U#Aq~MD zxC4x)5OzIHk>^&pX4Acsxn1K=*0_!rS8(X=zXZ`m`FdMs+-rZQ@eGQM=Nx{JExIOU+o-B!GCeISjsd}-JGqp$>eEu+IboA(#L7% zlGI;}uN13l=sgfgLgL@4zL!$@Br8^PYB5H7F@EkP+hXL1Z%WF2 z9TDmEUdlpw-JF)C*i+C)&KWR%jz5#}S8at@#!gD^S(F=nraF8s@Hb4a$=+WTo21gr z#xIkL&eX$ueWp0_FK%J1+!w`}GAfUG&jTjL+H_A;l-?yW9?&ug^t`oi=f3R9hTTzT9j6 z`s6t#Iak?9+aEmGE2}uobKu0za?nsEBX~*bij@L4kJ5} zee@D$h}(37-Lt=Xs__A#x{HJ%zmChWZ_25dsMNt}$@=+lNm&{(%K)(yy-OR(2qB5j zs1@Rg)2j-TC4$emGTDw#rxtzIGz ze3EOJn$W;ssqJ!%i}RUam`Tx-v#@@tQ~qS#+-!rOh{5HjIyp(~p)Pppj6>}R7Lg+K zYdc2=AD@u@J*}-&ZwU>pu3mhlus`A#dx%+B*_OwPzmvn03{Jc66SSZ{_&+eRWcGnB zr@=ZHyM1BM)WL=LR4v_18r-gk0CWT0B-_6Iw|jEh0xsn;g^Q?jp1;>RIuBC=F6oO?E&MV7ge zH3R;Emq~7L>~ofp(sWt{Rf=YFave)c!<`9(kL1j8;4DLcN;q$BV-R#FC+v z={S*9epGW+5bCUaacqBac;S0_yxu^0Tn-Gc&&+I_pTEOIJ9u0&NxNPPkshiY% zWwZ1ROqGqjn@Yv~kl}*XL1TVQVzXu~lWcN2UYIra8e=@D_>^zDWO^V2rof`Xo-UT4 zz6IPC&4M!x68 z=LK})JHPcEoU#REfNqj+@JWdpxz5&g0#yr`KI0IQ<7Ade^SH$2<~rUvwe8HFt}|A7 zzHN~=jqmJ}oa78;dnd$@ahLB|B3nWf+~@uKB8$4>U1)QTm>#2s7DA!|8*%2{E`QP2 zRd3a!6F1J~q-ot14#j+Z`k}dctW#c@B=Lppr$1sD^cFJx=jbK5S=6F-%lZcW(#cfR zHc173`Mhdbx|m|^R2`kp-j2U31ccxs)S39bGz##YNs#_sSEqC<^dU(2}{qEhQAOF$(d z6Jh;4gvikFabL%ZD`zqh>sUj5{jBYhh!d}~!ck=k}h@ei4&d$z$pQ)GR#J}lU+YElhZ3F4jKE_q~^XTbUWF^9eHU(Ek z^(w{OR|bYTlQaUvnT{lVyi2J>IWeq*)G4QRgq*mHoXc&VppxxJyY{3?La-)CG%R6d z=1wmir(n;? zH49J>!ZSeO$^36E06Ub5y7P#Do@%I?;VYL!KWN*eVPdbXFfOpG(3RBv1#R`YVhvA1mlW1faxa>wz)-~}2QZwZs0n*8|QoHIVk zobbK&IIeRr%vCSB8q02GWlb`axNyR-Vf*DL>~6x1EU(@Cit`bXfG}yTWkQ8qrmmXuamoD<<55`G3{v2l{stepGs_S9H#i=r~K9 zkg;%T6xS?v`aR&{rdOj$%zV4H3c{F&1T>AOS$TQEtM;e#I&QF)1qZ%Z3EE#=Iu; z_V~bPvMX0@k(#TkrocNHN-s-zv+(>hX}oX12?{4NB7;_~Gxu=#W}5T`3rbkd9^>Y< zc*$VnpKON_3##ey7~n}Z-l=%D8gXzCD(Kh{GHx*Iv?&d2EuBlrQb&J>a>_EesK{G} zp^F>duo+abc+B<(3d)?+;#3~3=Fo3gS?20%luYnUA`<0hD#jZjJ~N~koKQP@J}Tn@ zRD@6Bki|Vy6sTtAKAShM2Y%(EXY#hu6ssy8aJdolXrC?B=tk0b=xqhdoGbWSikoj& zXz9)R;Gd|f5^@cD!gbAMxC!v-@KB11pJ7+b<-9fv;>+LyE>uVCU2nM=Qhlh*j)fNZoAxOAdML9fn2kpZR0OyuiPMb_Bs zcpv|&D~{fHej2Fyv)RPywy6I*vyRNmxxyEKC2-?Y^3J#~x|Pq8hgMun@sNV8uVxcs zpo;ajFwRQc%7H}OWW|!(wfP~MAV2%SCVFXW47@x=XeEczP?aTP7-wv40liM0{zw~J zOh{MxqnXAzSz*MJs{TPL@x$A?chnDQ#3esveq?IOBERJ#x|z^j8SF~&vaRYjmFRnB z&b%rQU!As*-Yz?uAuT>x)AQixIX1&Ah0ayax*Ctp!))bQQB-2?nO0E>Wy*Y~SCVrOL z1w=J0y~2jgn3ijkpDVj)6@>BMQDTJ!T0F2b;Q;%IM?eA9rB4nA&XCxFdF2~|UK=J9ncxdRm|CNWX94C*sdSP+;iM;ZKJpx=uiBQ0TM0X|k z(OhYsX!(h50subJ=~y5c)~J?Q?}rgCas7vU<2^h9v_fxbaK z*>p}Q7dJN!q46{hW_ZVXxd$2M1CPHfwMW=@ud&U5x%EmE_QFMasA{ z^T@-=5L??Tsl@yqvg0z9^z=+7Qu1>V*nP~#(G&6O;NdTxmanLwR7{?RVy9;()%|2Q zz3Uo43dyx^7BPQx-rgBcJSHBMwGOMSHQ$WWvQgZnHOA^{x~#1v#}getMG{x6$u> z*pQmsDtyt)z*h7F71Q_5;Q?FzBCguY81F7=Qqw(2u3QDNVFPWHj0DIas+Z++nsb;o zjvWFD`bf=w;fN$-S$FivnN56jC8RifK8cOi)%}cB!N)^0Q=I`rH6T!0f`0dhg2AtX z0)3?Z;WdxX)yopY9@f!B8VAR}XCx{A515;e?q|^d#N6?h*E)mF78y$AUr{doBeDTG z^z7Uc*6)3h?$^cf9x5JdQ`xKCQEzDXfD0yQWy` z2v|Wj27{gNWyu<-EDdJ`pQCgPv4XyN1UNoszwsfgcz%^D<~LPUr_=kHTEf5SZp;CN z@MT;d?_{ZgU@`mbdc_LDdYw``)#sr@-?s>oE1DNu&WL|BsB4HzJW|E6d50_cIb@Yl zS;9h=I^!uE`$Kv`IN~=eM|Kekc{1z`S;GQw10xDmidd`9;f0LVKjm4D2xK}Rr#8rE z+gbj#{z4<`I+_QL2G=jiq3 z_%DQAX`g_wkbvyIK`Bh9iGDqUo=JXtnKE8k)HfyGXqECff3h%+!bZO6)aY~~3;T!i zS_$I?Y{&LuR zlk~V3NBXR&uuf z4!(io@ws`Wh)LAbubFZ@C6QIEX9*Hb)g37f93In+>bY%n_EK=d9$~;w@2=;`y@f8; zL_oY|_k4X3R&&XSyP8M3DA1xlDv(sONXQWGbMVA-XnSqFULFz78YMq-9B&G3Q7&KW zc$-ya;}JT#*hGyU=Hb#6ky=2~Gaf>1d0-RoAQbmU2WOz8ef4CRpepd%6nnONW0XIW8sEvO{k}n)g|NblQll)z zdaM1yBo7^gL)6~*OpPT5(U8nK-QEHT4HasEDz?j^YAd1E#r*Hxnrop$z#<_}u+jo= zgIvPF)e`cxzWMFp!zu0jW^-V<934cEV2@2`4j45h?}wEj*N`in@aobp=aPs*lgkpgd;?%;ZL)`OuRr7lJEdODO-Zp__r1K~gLb zM$6`Q6_QF(p?5Z3t}4H>ndvtoYqcZ>0#I4I)uT>#{S^u}EQ9?@>8-3Jf)!wIA0*~$ z9(ijKzp34{UA$Qw-Y`#j_Ir`nn5c%4ewzIWGj`-0qQ8vA4&8$M9{{spA8OydTz0Tq zkTgFn>rb45vINY%XTgEFlhsVavpIJe2h-e{rv9XBB?x<@*xEThz=;t8t%4L6ct5a` zbare!K&&m`=#%&@IqiJMde%P%7ZGw#F$lxEHs^VQu4T{!4VCfFI!*C_B1F@7W)pp7 zNDY_ml($~$E}C#sCKqYf{VAvXC{)L-^GQgARna=(9w0BvRr52=g z;JE5`^aRZ3mS2`}IzpWNQNXspD#W2#-gl>~f2A}mI)%;g&R;A$7X^|nW%Qnx48HRc zVa{j6jJ#T`e|exM+Ua>TnQnEh5OTVKI}rEY3*#kLT0XbR!uxOO>D)53b&$aL6Bf?hJ9_5`X39_uoK6VQ)5so%LJbPg=I5g2VK8mLGKOi?2lioIK&mLM-ztBCGa% zkKmL!oAe?H1${0P9rlffCwD>8ppuZYV!_1pN>Iy1IL;F*tTk^p$Z5ng_U7*FXIK1Q zH_S=wjV`m3L8G-*L3%CMRbv8gHA*@ zcKKU(s(PSLKAa1n z%)0;lFiy9gzzI2aoiL|^bL!QyY5dY~YPhnVOA_yfTeQfW(TJUPZ_dYozU=DUfh2~V z-Vr*fb39K`vfH17cg`9L{xWx0@zsKu`c>M37BpB&p+;v5+>WnwKWcN+CGPk2c0sjXkIUUf~AKdQ$_kK?`qA2 zk*jGbKDq4WmE?AA&xCk+bEkhCJcEcorQMUnd)S+Q))?YA;f=?G9jOhPO1wPtd!uaA zOcUb!-kMr6rEL~eX)*C0lD{_rZq|`~W_2bmcpd@^t1r-A_Nv78*_@8m%az=r9Tsov z>6N5CNeu0pE#0cnhK{WxeBQedW9`Y$xB(_d1 zqX&c{xwVQXIDhHfM5_}^uD0hX_zv!Elq+a-T}i`2vT$i%Tl*~KuB%=xE->0b5W+m$ zl0DLOXFGQMDxeD7uNZfsD3DV}p}$kAS|gl(RLY&0yib*0zS|dJQodh|KH1h-*p=2H z@x*p_r%#HImH-`7GPTG?h-q57pgx=Snyrvm#ye#A<6%io ziTEH44NwqWClcY2?P&y2jQ_x649_6-fVppv)Ej3vxjcvP@i(~aSMOB;KYiL?fMDz@ z=(ks%!|oocby$Q6vuNL-QTXo4`sZ&UtNNJ1{7uQxV8;vR_uX>L!)H|_tUUJ5Y}39$ z^kZRLz3hY?&z>CN&(Ui+2-@tu;cV)q=?>bk7*lpLob?{g{c|z06x!iYoo74OhFDNq z5&hh|dc3Q^;kFtmu)@PEDvZ~;s#MR{^4-NG{CJesjNMmmP^88o=^oq^SMnz+1nF)M#20JGTj}dkGIYUN!h6^S2Z)B2&8uUnD7#%^7J6wk@*O`93c(SPl)kau~o$8;|}eBbIx& zuMg=Kq>)#3I`IPU&#^yV{lVJIcy>l6@ctc_qdLU4KiA+qS2?#&WS*FVd0Q5;k$ypf z-s84gbs6d}(Ae{dkHe$^sHOO+p3l`{mK!wp32y^t+RaX0AT)3mi`824z^mLMX^t=~ zg!xd}+(8Car?j%H;+{s8F^!@o%&^P?BLbKdXQXgcaGUyRa97ceR^#e9x+_?CQ0bmIq(*jG9P z|39T@KS7D)A&+NBJ~gN1&?N^Y#aHB9A3Ga8?!|0|uEHrG$Ivk&jytG5c`3*t{6CZF zf$i}^7`^q$W?^$0DpUYizsBAR+m>r{x}48aM=;JvnQx@Q?FNyaVruklZyjS-B+q5oUW(eo>+nKTooG^~|NW zSL%*k`o@h6nkYAW-Is%lyy3KDVV^?x5xBKhU++$MV~?h>koPj|nzIz7 zlpa$pc#wb1yWw&f8y)?UY@!A601 ziJa>_M~VkK>P6Q6W>!OL3JZNfN7Oujmr{-naDIh!L*Xt~)D$oXYFk!v3t;v{k<`xmdPSSz5Xs*^(~wha#um>`+cxJ^vZbqo{y8d<*S^emhRYPT(sJlM7FQJXz6Uao^xtmpk^^IU zeJ>pjF%~Ck5t3fI!bb2<9IcKkDTP*PGd+!axY?fLTkza8c(S1>R2ZD-e0BWmA-1*l z)v0)E$pJeZYB%6C;p84`IH-Jw61MojJY8;G^T&J35gp6kcjIYVhF1?q9RT)^@zXc2 zzLPr06zArWy3NjlBZ1-L6Bd&J$%m-+rIwH`Dlkv-hr}ZfeYzH`rRIhY|Hy0~58C~Q tA38|sMLq`rkVr~wMs?IB+5^OS0#FTaWL)U~_|HO;kyMoUE%xQx{{VGm1ZMyM diff --git a/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-irc-layout-linux.png b/playwright/snapshots/audio-player/audio-player.spec.ts/Selected-EventTile-of-audio-player-with-a-reply-irc-layout-linux.png index 11e949929890851254d5c37e433e1d78d7bc11b0..4d452abd299b07bc4491c401807839504cea0f4c 100644 GIT binary patch literal 11801 zcmbt)WmH>1v~Jo`q!cKH;#Mf`q&ibK&N!QrKM z-TULMyPmA~@*{I(X3n13duH$N+Y_dwAc^&g<~{Qvm>8d_-R7p+86dk7nFI z0swCS(qf<0JkkzVFtk)PSA|bsXtPln$5Kf#z15S_55??!$%I{}Q}wP4ds>;ral2fj zuRO5aZ=#_B$JHZ$@pJEY?04jts?77x%Lya|=XFHTl$NrR7)Vess4$-MV%|Gy;p1vg zCsC~_dfGXUHHY~BT^~A01GBXj7l(=XAu5MUDJib^RVJx-sukvnX02Q!y{;o(0{qu9 zV{tiocr1uXUHI(?hEiU0)aj(hAyy(M&#WErek?96;;aMFhTzOHLk^ijnhf9YhkX`O zyN%t2LUFsa{djryPPgL(OH{KdkCy8#Mr@D+HX>qR>krz9dG;lDqL1>n%K?4uq?Z`K z_h?*aO@wl6prl>*O4twDzct6!w~w}7R#EWY`BV zg1#;nVf>iZ^>79~T+EjxL;8j?u?p)GN;Q4I!kgdU z5onp=aOQKv@b%#v#FETEo5IPRQM?POTyNIV+u%}}x1Mq@^aJ_O(OYFW4oywaq*uTz z+&R^F=P)m_DTT*0-86u<(Z!kR@=T}NpAto)^`9KAR|yH3D>M=fC;FvZm3h8MEXo;h zxLu2(A-g{%9mn#ALrM@85bFb*>pz0rvl>Zau!sOQTA|WCo38_1o&=!tq}k5dq<7&Z zY(Kb`;o5)sZ&VLaU&{yb2%TMY2vZF5t1t|;Yr7X_+!#^Zf6MddPx(7>B_MD4V{Xnh4%JQ@kz3B;gPyi3k5+4$}G^cyW5UPg_S!j1@i3fk8vp<{pWr)BJu zqR{QkU^x6w&(>ygp62s=gKt%o&Xt9@oHllcf1KsI%hLwW99I2Ix+ogF_ScT>@g|gJ zJsT-(o7CHOHat;QoQD8HXR@b^kBV_y7r29BjF#Z>OdFcksb^Y3qrpg44bGc>YW> z<{QLhy5Nq6L44Ypj=saqy|Ak zFN~MiY-J-z^5IFsDV}Xc$7Mk@jB+fd6kr&K>(8N3gixt%g52M-i0s#m&IQ>^iDo2H z+trSnNgs}MoiDU*$wlkZ-4C+i2c)wWV&0W?X##HgF`K6cHLzn)C&=DbgK{m|=eK|^ z2o6`#zw&_>@6eSan=vot6$y zv{YsX?2CMu8pjH9p#m-@(X%(V4Rtl+gm#TiP7X#uL|69=W5w|T7YPQ86#JmI{}>vN zUE0Ig(_{S+q@iNV!uN-sEW@@LPUO{#6#-#GeTo(ip1SVNB&>Bil+uQ4FZI7|1&cbk z&h`n5_PT?LmhapRobC3x@5M7uc=(rq-w)668&|f4eJUBigA4n;kPtLxISI_d*XDSM z%Ugb`k6!v2s>SKQZ26_#AGV5Nhir_EgcRWyQ2Xu+Mp*?WM*6ly-4|~1zQ4!F36Ulm7-PnN$T^=OzU!N1;Q7oFKQvQ zJ1}DqD*PCd=e4$dOaU{Hzs^1^S)4Xax}$d#6#VlI%8`xfmxzo<| zSdUB29P62x`TD*tAheJE#K{F%$esp|e$dIdl$DQc&JQUyl{)nh?(ZlTLoU%e-a*%4 z%gjPKSG>k$LgV|C3AYBGq@*_Nm5(IytA6Z1P@k$JvTtSi4oa42bcQW%FnU262S6QH zYJH9I+n^(}Ze~7RA~&V4<>72C6(#R`WXf%=1YNEfGSppo!SuFZ6<q?UL|v7n`$1r=swA`{jSwezH(CaKN4LI}W~{ghI$sJTCjk$nM6 zQS)7zW&&%qD>bb2-0*R^JC1AW=y3ght^p?IRqba~K#trWGCJtOXDLDj9> z`*_U~%EMa<+;FM*Sw$|~b>?O~0;!{H47Z0AFdJIFJYp=ZuJ!ZD$d&e7h^@oahQ%l= zJ8Ygr%NkzaUc@Of?-|qJ`0{m*=;=Cdd{aueM^MS0?28Wl2_K#!ta)XNeT+D(c&WTMT*wKG&-XuI@5hVBcSli}ByCP1h ziW$B?>q(kSNOXAfLv@L;sAbhjLt`9N?!J50EN*P6I9=1D8U(b^LMh(TRe?+MCKT(c z66BQ*82SEw-M{c99WyFjk?r7=7($k#5Gm~EH7UnVYN90L*Rir53h6%_;k9i1#OP_X zVj%w2@?i4gJLWHVnr?ja&Wcf;h#?*iuo?s`WtYNu5r_K+qI}l2TmppzBpGyDcokHT zI!M-OcHCR+JchRc)wh8mIH~+cC$s9)=#sp2Iy0*|8h*9A5(~{tN7u8BrN@26lr)GT z$0dG>Ya{5GQNh@esUh4E@7$c!V3m!NCXemB()u&Ktcl{xb-RPnngakp6yxnFCx@_ZTcN2l^gw2<3aieFpm_LOy@ z7521@jk8#SeY#8hit};hv3`ntNv_?{napxkBTQ}1BAuam9%=bj_P(4~yQg_2aWDK`aI z>1*E|zhzI^6+;)hVlj>M=Fg$&?Q7>2BSOQ=7K_+|+TiS}aH_Ot0RLydo%m!4M}(6Q zD{C8%{Q6wRMd{`3>E#NA%&p}N?XGwIZTHHf-7j8vYqMy~Z4zC0kN5EB2vgpuZa_D2 z);|2290gr(Hg6h`Nqa@wo16Bbv;4z{?lbDExm2n_} z#gq^#9?~mxODZqV8J@SQ=C)i9ZBGerC9PF_v>;wuTKq|}Ubit43_AZTMBFn@c);=Z zAP~r$aU3~zWa-g|GV?$yO;9aw!3+N?9doLXQA_(% zPnHKGT5h~910P2Vc7-b9jw`MCRctiRZg+CbrJ38FF29lIPuy3e?qya!Mlh3Di{6J# z4OO3t$Gxdrv$X5e-Hq-m(!%;ko*?+s?!|ko0P~ z+9gxdoh+$_qJ?Ey$Z;i_nBH%hf#QC!?0qF#G^pmr<}fOr8)(m3${cmCB+K90CWz?* zMTTi|oO`61-BZ*UWMdl_dnZtm9%F&{)vDBE3hpttfylUW<-%^oy*5J^ve_g4oiCyq ztz)DGg7I$0<>WVnM|w$N0uX=RulVBSB>Ztj(MNZG&kgI{D5m0si8edSZ$ae@h!7^( zIZia;Z~Z^%k%5!xPbg|vMf=#t(K@0XMZxBd82A0jU`f}ztB%Z$n*+ZV@}rqZpwQYk z8l<%;Cen`m6dB8M=27x!-#+GONWFn)o7xq^{-)qW^>QKezw_p#)@d%B$(Hb0i= zlfY@@LTg`*3-YNB-T#LZvQCU_FP{aOb|HKm`%<)N#(ci+BWB=d%(oB2hY}0(QDlb= zM$4yR*eJ-#w0Sb{jcS0A{#!J+uQu{ z{Ue#V{!vb53gWb&hrOzatP_nPESBveH{Y_9HL?G#U8po;(5gj3H9YVw2>|fRRD>^3 z;Uf>vYWdtp9`3mQt~{W==@b=SR5fP>-!lMUkNo~HDC&Z{*6Y%gzLsF*ufj_FjS{k3 zE1dP$0yYX3itp7p1E*(7F_6zLP`ijh{u;Kfk&0?STg9dMf!9*V$65VvMt^rCF|!S- z_P!1slt<2M#uvW8JKqSZOI?&t$XiRIF5)^96^PDCZY0nq0d8PlJ<)Bf%V@rzN+?Gr z=zG}Z!6<*rspG|Aw$r8G44*Bm8E$fYUn!T#=jtZq@y(*TCLS0b|Aj7!QV{Xj-xJfb z(ct*Jd_aD&?Y^EkzObXls=L#Ue`UW=@8e~@DmGAd&54ZtW{lPLzg8e+`}Viej`Y;x_$kDbRg$e;uQ0 zp;Ss?GP_}UX=N&v+tCKTg;u0Q|N1vSKYE=E+-7IfaJc$L*9h%HD)p68jULf`N9oIR zG3_^ve~yTnWtC1_zY~-!CtRPJi&OR-V>=ZrW{Q@Y$-q1P9>C8;4Tf;xq6}8YqJ)KF zEKAUlbM)6sTV(?A_>BU2PO4o9z_XcNStEtT7A`K$s&DRUMe_mU`NRI8xvC?_)-#5B z8M+az>uUxcc;Sz#P3kr8wFkMkskai~!=?NR7^DU@UTJ#p6w;fo!{YL= zjWO=Nh~F0aW_ZtZmG3v_cZ_x+q@~K0ikh&GGboP9fyrFFUk!QKIe6BEsy`jP^a$tq z5!6pF-M(h+yGpE+aWhdevUd91O)}W??1X%WAH6r@_;&ZLA|(#mWzN8bUT~$7(ff;7 zz7K_ds&5$F8mRz)@sKy8S?Y63mLJGK-l_(Rk5Yq?r1Twvmwg+-FM|nd9(}wfx_(ul z(hKRp`>woC{Bh!C@fVJ;nerJYS~q|$mFjOZl+Mn=FHdf`3DZ)nI})0%6NZ;XU((`( zQGQfloY^r0%_+iVWd=vv3wBz)Zm-c$?^=cROmepQrSCRU47lDIe)#)Zi;QI4tpg+| zE$nO%yC|{I`qBTxNgOJflvatN#_*xp#%fOj@TD_#%yq~ugNX^gu_VHs#h5Vdta~-0Dl({1c^Jn|b&C+)KHu zSZ+zZy=IAS4T+?zV~LC&)UjXao23}#qnC7lU11{*$Kk^^Olse(;X5yZbWxdnrfvf} zTeI(sOH?4?%)d*ysFPt_re{6L1Z6+v7?olqvm<~FV%|*2cDGv(Y&$}Uz590?H8XG5 zW~FT2$Dn)W^K-pJhJ2rb;ly=+Oggpk_CGX1pilvUPnzoLLV6&Ba^<2&SFpTBQ{jdM0?p5q!;SO zTB{Fqox=)CrBYaH_q8xpwrI^0!{;bgDW`xcdiqvLv%w3H)#%(s_;hz#WAt!UY)D$QEDn z)+A6I$C5qqBmbEk+qw2$+4Er7z(%LJeg0b6+3n7%YWCAC$67Zi?@(SHQp<>ZRk;IG<{@`c{X!3wwPuTw6Fje`KVRS6WnQhKqW()-ysI*iOBnPwz1Q2-`FjAi)6Ti4UUut2yACNZ z#{Y_)AMY6ktQ!DI7CyfA$0!u5`sBD?5>11re-+fAE9UkT0Pq=z=VKsrxX~;ac9%Xs z$hu@tAEHHWqsdh}uXTuHE6!90;>1ax)>_7SlT%Wlb!1=3c?Amo9GJmhUq)aKHDgv~PC@D?)A6LD{V_L({$ZR}E;) zqY7igM^)dGgGH!wWb!BB;P$OaQGVLDn07bM(K1A#G`342a*RW44EFmH7<$*slU;X~ zjCsxC=>$*@Y;VjKm5MxFLs583W7j68fSvs;XWJlkd-WinflbNjMwHIyuUN%s zf~c1te~OBMQrQN^bz4Yox=y|gamq=p1-R)WJ3Zdg9s|olj%(CxV&32>ix^^wVK!U%dh&y1i72@|i}AaAk+86(t=KmiHw6a; zi?bc|(#8+mj+UhfbiwTCVZ)P^dAnd14A;cIvIsdid~k47Zjpq71}~V+oDSnAPQ(yR z+oY#2ke|!*tJ`E!|2^;oi)8D_6}WyS1#? z7BSqi_;FGV-bp_mXy$;mmX-!dPfveKj{CJp4WDQWesTuxcQ>qN)nbrcZe!my0I4Rz zU)8ucU$E0y&$Xzp59a3pGI#j(EK0OWV4=^}UjwqDjdk#JzH0T^$X~7em_PgSw2S59 zQkzsb7NIAFNvpH@`f*jml-n&?|MBVl0+N15y8XeQ5!?~aw1!uTsK`y^|-fr_T-!ch^rpO{6D zsIrw)l89zHr1O1|$An3ig@#mCB~cM*Qf<6ZRpOGyT7hx3qCdlPQlo&p7Yi0$=Ga z>b+QdFtW!fAbbWu1*wgCVXv31fy38-PKelAMJ9oS@RRMkw%;Hj{QMi_%PHt7fKImh zXQobKgt?vE*O*}>67fP>CdIE|VJJkUPtlYhj@T@Qu~B%$5;@64fFR)BfL7*MlVX$1 zuvF%7k#GInT&IZt6+hsD65aA)m1+h@5juvP zm|sRlBib-a9Y4qoGOR`t1tNT42_<}97M7pLTM^+9Cj`rz=ATiwFotZU|G;#aU--ZT z*S9zCky-_SNZ%mUih)PhcC+(@Q~|()jwWkXsYDKIGpg+fDdIVWjYXb4hGhmEWMr9bZ3kU07yUC4w@xlXD5 zA1Cl$Qm8~|6i4}OR-bt-1DkH<9J1E$Ml(61EEU_j5&`HeC}Ef)XUu6N9il4b_&)$dvF`I_PA~$ishF9*T$^j;d zA5Qr^JW}M4ob^{|P4IVj9+$XVYoLs^%tgiZ@Um@U5Pd>ho5=&%cl35kg4tPhV?&k8 z1@m2k(jhKU3*CU~INAQ*#_*S~(u@nubJO0Mij+^kjQrd?zZgd+?S43lF!dT#^N#HS z8hy1AS-Lqp{O~Z~DQ-g=b}|WwYm+5$qB1THwazz(gn{u?NAU;3L^de@{V2@5Q?49OK?K(`v&AB9o9_ zF?#qz+_*isp%TL>=19L8Bp@k$G3anma_Rx0`kh|nqioy0e;D1xTS(xp*HOR{s@-nq z_&st5n~yB#(3JXz z;iLtvZ$uig$qDLA24D|xOx2CIqvq;aOwX5Q*`BzKE&O5*KDS*#lLzTf8EhZSzM33p zTgCyIdu@eRDDv2IIPIT%P1L+b8p}VxiyDrkQUvWM_rKBdZe3zw zTCN`+?Jj>+%Li$ed^^QosJqNTq1OD)RVrfeK7oMon%do1H?8)KS2%fGKC9(Bf~jF` zYBq>9uDk^fXP8Qe5cWkan1>VRKPOEnFvsS z5RLM9Mx_rjR%c{nET$|M#Ao#c8jroAqfo}Cu$^Of@Y@EMzsFZnIWud4=I6CKAUV0c z7g{bnR2+;Y5v*{Bq*WWw@$vD~?uBJjLvuaY*Z7N{I=S|LR;YP&80Qr2TF}Z?Vx9h6 zWF+5A0-N)LPFS|4n5bi#S{uEaPBG;Fdg3eYv2Ag=a*8ie16%k6g@Brmzo9_P?_y$! zGWm&DUW56;&N3ee=FeVYgMvRw7TDP!df0`DanE3!y9X$vQ3?0M!cVc@4T}>eiXHJ1k@ZXhHMB5a}} zJ92H|>THcDTrzz{o(zL6r#p5wYM4>TfIMgH@-j{lDEzU(;2#gC1>(-?V5@a%K>i@sDns0o`k{C)N4>w3{LpdOJ6 zK_w-8x@^_0c$U>;E4=WT$8NQbCDw^Nt!JZG+4jX{GS>Jj?dq}=jq$q28YSiNQN_JT z+}P51$Ry!hr~AY4m2T3Fu2dKH;cow-JVxf7GVK`m=~4Y-NRByc<&Tr|&cf_l3Kp#o=yxc0ymT5aPs89O0tPGOIPQ_jj|; zi7#E!v%ty1!D7BOU_u63V+9TiKg5dQNnle5#d26MDECPP`P_6_9pBP`@2`<8S_ZXj z2J!cdPH643>@bio%H009;ACHZ=vjSE&7WeNN3fEaqrvsr{b>(bK~F)91?9b!W)gfs zH-{ZQadvUKP)krD8_Q*X7BGB0(B7Odpga7J5BGVAbc&VqiM7zhTQ;56inJ9|TU($d zA|jnf8=CsITm1hrV)7pdK)TSWV7T_!d!$o_>GF}93|*xjO3 zado_ENw@5CvSGMb?c!JJ1D(meeHF03t4&9Vmle5yy zz=4UesaH1X&!5_)Odd|@CssSWE2eE~D!Egwj`cvXNxqMB;iz!0geBYacCoew%_7F3 zML(+CvP;P21@GL5XH;%+q6PT_*REH+TTJ)4!S_dpfCj?c;?X;nbzp>{+b!0+8(V@%j^=pq zg;O66Teqd~97$tc{Y=`r%TwE4aQ4+2LS|wAH6+n+&)d>%0Tx|AE_{N2>-4LH{f={g zPaBcIdr$w`A{jR-a*0$nP$Jc;q%vJzUQn5jXS#dUxK3StojXy`j|0h40zkxaw%Am1 zNhU(=LW5d;efWi`A5;vL)w+nULZrvAcC;g%uAC?ITGb|$XqhLY5Gg#1@UC0_Mq=uz zxSYvb)P2HM-XmeKZthWDB8ZpSY(Hl|K+=F~F^i#so0xMr&C`mr&(FSS4E^CDxlV_b zlasfZvWLV*odhpK`p!_wCSojkLE#F@F}>X7mbaFZ)oeN}=qtTgLm5q%ZbwA;(a$DC z^A{(lF;v&LdmW2()HY_#feLBqis*^8&w`4bArKY!gS|fb4%VRR*a<4t3T1cc%8rKb zDVRFD?-q8x$kpd#VU-B#;B|Noabk}}NwRT&O!=AKZk0c4gD%PJ)1+?uDF~wFeG$$U znIx^hGkc|~Y5$m=(hVD@6FnK1z8W$jp-Y=ddbk^ZqGha`%?0g@LYTNJS=)1GR{7$c zZcUU~{Q|DinpNc}$Xc@*fR`Is9fn17pfTC8_3mdB~`imEx6#_ zwQ;3aQn{U-!8Xk|$O(zqs5D}A{CC}O9 z)2qh6B?%C1KRnrOUOc#Il=xY%k@m2@I1hHIJSya#nv7G_Vx8fw#*kd%okQ+-ziMAj zL0@14$p?YC^L^1bnqwB#DN|sNAv#qTJQdvqFGEH9qa!b#v7R)`UI(S=hApDV5FB+08^lYy(jgaT(?Dtq_=a%7o z3a0k*sF?cm$zxlIAKye$KcQJaC=sGPT&7IkZwQif9oN;9(s@fxEpCLP(ow6wEAVl< zICS;tvT5?kmosIpqI36UO@JRr`}}R3n2JWE_moI%8O%QgH)FYk*N7U}GgWaT)3QkWh3(0w87^JH`D)JrT~ey}{}v1SSHKE70=bIe-{SiGp~)>R?(=)&+lZ@*}@;8VbY`dnR4 ztnAm*MU8<`MvQk*NPUI;1lmn%HaQwQ)9c(qx+yt-rn^5DIM+%2{ivv^Qh5c?n%ltTCLt?-TvCRqHJGD8VB>FApO{nU|Q zdtawX-I(6OdR`qUgsKo>J35buCuFtgD{j~Fh!>Irp(Gu&<(1ZeETm4?5q0EEgD|@1D^ja9gOsU0r@X2Zr6#`a(e<~ z0UoID|Nju`{};Ude`;(eQlvclAE*-Nf06UG(uTR0 z)};YNc28eC`$bjtQyazW^%V5Mz~_q)QVb3w7J~54?f#A$FkVqUz4F;N01qMy?q{!G zBnO%(vHv3l6cnO@316WDK(A||0MuVW8ziKghNkR9+}!J$L%xcIQ~FH|?*uTB`DFk1 z#>AwlI9%_?NsH2iFtu2cq&{-7pOF3g4iSEGpc#Tli62~0G^2xr0CqM#D#-I2dw3EO zJ@fM^j45CF?ex%2JsyRT`g?jJIl%qLWT5^-a4!HYraK>6NCC*h-vEHLxPn-Ps8PWG E062%IJ^%m! literal 11836 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 diff --git a/playwright/snapshots/right-panel/file-panel.spec.ts/file-tiles-list-linux.png b/playwright/snapshots/right-panel/file-panel.spec.ts/file-tiles-list-linux.png index 86bebf9f1cdf7b7476b36ee57fb33e3e74b43061..6c95b0d774847573f865ad54378167e685481f7a 100644 GIT binary patch delta 31322 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

    Wy{GH4^%-B;_3@nqEf@ww94ZcE*X7 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 YsP6SV$!FbM>^mTN8I^aXZ$Ab6KM+fBfB*mh diff --git a/res/css/views/rooms/_EventBubbleTile.pcss b/res/css/views/rooms/_EventBubbleTile.pcss index 1607c45924..d98babab21 100644 --- a/res/css/views/rooms/_EventBubbleTile.pcss +++ b/res/css/views/rooms/_EventBubbleTile.pcss @@ -153,7 +153,7 @@ Please see LICENSE files in the repository root for full details. .mx_MediaBody { /* leave space for the timestamp */ - padding-right: 48px; + padding-right: 48px !important; } .mx_MImageBody { diff --git a/scripts/docker-package.sh b/scripts/docker-package.sh index 14444de556..29b9c4e75e 100755 --- a/scripts/docker-package.sh +++ b/scripts/docker-package.sh @@ -17,4 +17,10 @@ else fi DIST_VERSION=$("$DIR"/normalize-version.sh "$DIST_VERSION") + +yarn --cwd packages/shared-components install +yarn --cwd packages/shared-components link + +yarn link @element-hq/web-shared-components + VERSION=$DIST_VERSION yarn build diff --git a/scripts/layered.sh b/scripts/layered.sh index 3da209812d..0efdd7d226 100755 --- a/scripts/layered.sh +++ b/scripts/layered.sh @@ -44,3 +44,11 @@ fi yarn link matrix-js-sdk [ -d matrix-analytics-events ] && yarn link @matrix-org/analytics-events yarn install --frozen-lockfile $@ + +# Link shared components +pushd packages/shared-components +yarn link +yarn install --frozen-lockfile +popd + +yarn link @element-hq/web-shared-components diff --git a/sonar-project.properties b/sonar-project.properties index 205d82fe6c..3706897f63 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -6,12 +6,12 @@ sonar.organization=element-hq sonar.sources=src,res,packages/shared-components/src sonar.tests=test,playwright,src,packages -sonar.test.inclusions=test/*,playwright/*,src/**/*.test.*,packages/*/src/**/*.test.* +sonar.test.inclusions=test/*,playwright/*,src/**/*.test.*,packages/*/src/**/*.test.*,packages/*/src/test/**/* sonar.exclusions=__mocks__,docs,element.io,nginx sonar.cpd.exclusions=src/i18n/strings/*.json sonar.typescript.tsconfigPath=./tsconfig.json -sonar.javascript.lcov.reportPaths=coverage/lcov.info +sonar.javascript.lcov.reportPaths=coverage/lcov.info,packages/shared-components/coverage/lcov.info sonar.coverage.exclusions=\ test/**/*,\ playwright/**/*,\ @@ -21,5 +21,6 @@ sonar.coverage.exclusions=\ src/components/views/dialogs/devtools/**/*,\ src/utils/SessionLock.ts,\ src/**/*.d.ts,\ - src/vector/mobile_guide/**/* + src/vector/mobile_guide/**/* \ + packages/shared-components/src/test/**/* sonar.testExecutionReportPaths=coverage/jest-sonar-report.xml diff --git a/src/DateUtils.ts b/src/DateUtils.ts index 3af7e6d864..e3c7c348fa 100644 --- a/src/DateUtils.ts +++ b/src/DateUtils.ts @@ -13,7 +13,7 @@ import { type Optional } from "matrix-events-sdk"; import { _t, getUserLanguage } from "./languageHandler"; import { getUserTimezone } from "./TimezoneHandler"; -export { formatSeconds } from "../packages/shared-components/src/utils/DateUtils"; +export { formatSeconds } from "@element-hq/web-shared-components"; export const MINUTE_MS = 60000; export const HOUR_MS = MINUTE_MS * 60; diff --git a/src/accessibility/KeyboardShortcuts.ts b/src/accessibility/KeyboardShortcuts.ts index dd85dd8341..2872e1a1a2 100644 --- a/src/accessibility/KeyboardShortcuts.ts +++ b/src/accessibility/KeyboardShortcuts.ts @@ -9,7 +9,8 @@ Please see LICENSE files in the repository root for full details. */ // Import i18n.tsx instead of languageHandler to avoid circular deps -import { _td, type TranslationKey } from "../../packages/shared-components/src/utils/i18n"; +import { _td, type TranslationKey } from "@element-hq/web-shared-components"; + import { IS_MAC, IS_ELECTRON, Key } from "../Keyboard"; import { type IBaseSetting } from "../settings/Settings"; import { type KeyCombo } from "../KeyBindingsManager"; diff --git a/src/async-components/structures/ErrorView.tsx b/src/async-components/structures/ErrorView.tsx index eadad84ec5..9c0ba96dc0 100644 --- a/src/async-components/structures/ErrorView.tsx +++ b/src/async-components/structures/ErrorView.tsx @@ -8,9 +8,9 @@ Please see LICENSE files in the repository root for full details. import React, { type JSX, type ReactNode } from "react"; import { Text, Heading, Button, Separator } from "@vector-im/compound-web"; import PopOutIcon from "@vector-im/compound-design-tokens/assets/web/icons/pop-out"; +import { Flex } from "@element-hq/web-shared-components"; import SdkConfig from "../../SdkConfig"; -import { Flex } from "../../../packages/shared-components/src/utils/Flex"; import { _t } from "../../languageHandler"; import { Icon as AppleIcon } from "../../../res/themes/element/img/compound/apple.svg"; import { Icon as MicrosoftIcon } from "../../../res/themes/element/img/compound/microsoft.svg"; diff --git a/src/audio/Playback.ts b/src/audio/Playback.ts index 7cb5943129..fa0bceffdf 100644 --- a/src/audio/Playback.ts +++ b/src/audio/Playback.ts @@ -9,13 +9,13 @@ Please see LICENSE files in the repository root for full details. import EventEmitter from "events"; import { SimpleObservable } from "matrix-widget-api"; import { logger } from "matrix-js-sdk/src/logger"; +import { clamp } from "@element-hq/web-shared-components"; import { UPDATE_EVENT } from "../stores/AsyncStore"; import { arrayFastResample } from "../utils/arrays"; import { type IDestroyable } from "../utils/IDestroyable"; import { PlaybackClock } from "./PlaybackClock"; import { createAudioContext, decodeOgg } from "./compat"; -import { clamp } from "../../packages/shared-components/src/utils/numbers"; import { DEFAULT_WAVEFORM, PLAYBACK_WAVEFORM_SAMPLES } from "./consts"; import { PlaybackEncoder } from "../PlaybackEncoder"; diff --git a/src/audio/RecorderWorklet.ts b/src/audio/RecorderWorklet.ts index 456ababe3f..5d6ce32630 100644 --- a/src/audio/RecorderWorklet.ts +++ b/src/audio/RecorderWorklet.ts @@ -1,16 +1,14 @@ /* -Copyrimport { type IAmplitudePayload, type ITimingPayload, PayloadEvent, WORKLET_NAME } from "./consts"; -import { percentageOf } from "../../packages/shared-components/src/utils/numbers"; - -// from AudioWorkletGlobalScope: https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkletGlobalScope" 2024 New Vector Ltd. +Copyright 2024 New Vector Ltd. Copyright 2021 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE files in the repository root for full details. */ +import { percentageOf } from "@element-hq/web-shared-components"; + import { type IAmplitudePayload, type ITimingPayload, PayloadEvent, WORKLET_NAME } from "./consts"; -import { percentageOf } from "../../packages/shared-components/src/utils/numbers"; // from AudioWorkletGlobalScope: https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkletGlobalScope declare const currentTime: number; diff --git a/src/audio/VoiceRecording.ts b/src/audio/VoiceRecording.ts index effb7df96b..705b96375a 100644 --- a/src/audio/VoiceRecording.ts +++ b/src/audio/VoiceRecording.ts @@ -11,6 +11,7 @@ import encoderPath from "opus-recorder/dist/encoderWorker.min.js"; import { SimpleObservable } from "matrix-widget-api"; import EventEmitter from "events"; import { logger } from "matrix-js-sdk/src/logger"; +import { clamp } from "@element-hq/web-shared-components"; import MediaDeviceHandler from "../MediaDeviceHandler"; import { type IDestroyable } from "../utils/IDestroyable"; @@ -19,7 +20,6 @@ import { PayloadEvent, WORKLET_NAME } from "./consts"; import { UPDATE_EVENT } from "../stores/AsyncStore"; import { createAudioContext } from "./compat"; import { FixedRollingArray } from "../utils/FixedRollingArray"; -import { clamp } from "../../packages/shared-components/src/utils/numbers"; import recorderWorkletFactory from "./recorderWorkletFactory"; const CHANNELS = 1; // stereo isn't important diff --git a/src/components/views/audio_messages/LegacySeekBar.tsx b/src/components/views/audio_messages/LegacySeekBar.tsx index 8177abf1be..fe9e1dacd8 100644 --- a/src/components/views/audio_messages/LegacySeekBar.tsx +++ b/src/components/views/audio_messages/LegacySeekBar.tsx @@ -7,10 +7,10 @@ Please see LICENSE files in the repository root for full details. */ import React, { type ChangeEvent, type CSSProperties, type ReactNode } from "react"; +import { percentageOf } from "@element-hq/web-shared-components"; import { type PlaybackInterface } from "../../../audio/Playback"; import { MarkedExecution } from "../../../utils/MarkedExecution"; -import { percentageOf } from "../../../../packages/shared-components/src/utils/numbers"; import { _t } from "../../../languageHandler"; interface IProps { diff --git a/src/components/views/audio_messages/LiveRecordingClock.tsx b/src/components/views/audio_messages/LiveRecordingClock.tsx index 8c3d2d2668..9ea00c2d67 100644 --- a/src/components/views/audio_messages/LiveRecordingClock.tsx +++ b/src/components/views/audio_messages/LiveRecordingClock.tsx @@ -7,9 +7,9 @@ Please see LICENSE files in the repository root for full details. */ import React from "react"; +import { Clock } from "@element-hq/web-shared-components"; import { type IRecordingUpdate } from "../../../audio/VoiceRecording"; -import { Clock } from "../../../../packages/shared-components/src/audio/Clock"; import { MarkedExecution } from "../../../utils/MarkedExecution"; import { type VoiceMessageRecording } from "../../../audio/VoiceMessageRecording"; diff --git a/src/components/views/audio_messages/PlaybackClock.tsx b/src/components/views/audio_messages/PlaybackClock.tsx index b4a51ba464..78ac81f25c 100644 --- a/src/components/views/audio_messages/PlaybackClock.tsx +++ b/src/components/views/audio_messages/PlaybackClock.tsx @@ -7,8 +7,8 @@ Please see LICENSE files in the repository root for full details. */ import React from "react"; +import { Clock } from "@element-hq/web-shared-components"; -import { Clock } from "../../../../packages/shared-components/src/audio/Clock"; import { type Playback, PlaybackState } from "../../../audio/Playback"; import { UPDATE_EVENT } from "../../../stores/AsyncStore"; diff --git a/src/components/views/audio_messages/PlaybackWaveform.tsx b/src/components/views/audio_messages/PlaybackWaveform.tsx index 4694946cc1..215011e6cb 100644 --- a/src/components/views/audio_messages/PlaybackWaveform.tsx +++ b/src/components/views/audio_messages/PlaybackWaveform.tsx @@ -7,11 +7,11 @@ Please see LICENSE files in the repository root for full details. */ import React from "react"; +import { percentageOf } from "@element-hq/web-shared-components"; import { arraySeed, arrayTrimFill } from "../../../utils/arrays"; import Waveform from "./Waveform"; import { type Playback } from "../../../audio/Playback"; -import { percentageOf } from "../../../../packages/shared-components/src/utils/numbers"; import { PLAYBACK_WAVEFORM_SAMPLES } from "../../../audio/consts"; interface IProps { diff --git a/src/components/views/beacon/BeaconListItem.tsx b/src/components/views/beacon/BeaconListItem.tsx index 4c5b777011..fb2dc2e17d 100644 --- a/src/components/views/beacon/BeaconListItem.tsx +++ b/src/components/views/beacon/BeaconListItem.tsx @@ -8,6 +8,7 @@ Please see LICENSE files in the repository root for full details. import React, { type HTMLProps, useContext } from "react"; import { type Beacon, BeaconEvent, LocationAssetType } from "matrix-js-sdk/src/matrix"; +import { humanizeTime } from "@element-hq/web-shared-components"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; import { useEventEmitterState } from "../../../hooks/useEventEmitter"; @@ -18,7 +19,6 @@ import BeaconStatus from "./BeaconStatus"; import { BeaconDisplayStatus } from "./displayStatus"; import StyledLiveBeaconIcon from "./StyledLiveBeaconIcon"; import ShareLatestLocation from "./ShareLatestLocation"; -import { humanizeTime } from "../../../../packages/shared-components/src/utils/humanize"; interface Props { beacon: Beacon; diff --git a/src/components/views/dialogs/InviteDialog.tsx b/src/components/views/dialogs/InviteDialog.tsx index b0eaf707b2..9931dd9368 100644 --- a/src/components/views/dialogs/InviteDialog.tsx +++ b/src/components/views/dialogs/InviteDialog.tsx @@ -12,6 +12,7 @@ import { KnownMembership } from "matrix-js-sdk/src/types"; import { type MatrixCall } from "matrix-js-sdk/src/webrtc/call"; import { logger } from "matrix-js-sdk/src/logger"; import { uniqBy } from "lodash"; +import { RichList, RichItem, PillInput, Pill } from "@element-hq/web-shared-components"; import { Icon as EmailPillAvatarIcon } from "../../../../res/img/icon-email-pill-avatar.svg"; import { _t, _td } from "../../../languageHandler"; @@ -63,10 +64,6 @@ import AskInviteAnywayDialog, { type UnknownProfiles } from "./AskInviteAnywayDi import { SdkContextClass } from "../../../contexts/SDKContext"; import { type UserProfilesStore } from "../../../stores/UserProfilesStore"; import InviteProgressBody from "./InviteProgressBody.tsx"; -import { RichList } from "../../../../packages/shared-components/src/rich-list/RichList"; -import { RichItem } from "../../../../packages/shared-components/src/rich-list/RichItem"; -import { PillInput } from "../../../../packages/shared-components/src/pill-input/PillInput"; -import { Pill } from "../../../../packages/shared-components/src/pill-input/Pill"; // we have a number of types defined from the Matrix spec which can't reasonably be altered here. /* eslint-disable camelcase */ diff --git a/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx b/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx index 94d9a30e54..f1f81a2bf2 100644 --- a/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx +++ b/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx @@ -12,8 +12,8 @@ import { debounce } from "lodash"; import classNames from "classnames"; import React, { type ChangeEvent, type FormEvent } from "react"; import { type SecretStorage } from "matrix-js-sdk/src/matrix"; +import { Flex } from "@element-hq/web-shared-components"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { _t } from "../../../../languageHandler"; import { EncryptionCard } from "../../settings/encryption/EncryptionCard"; import { EncryptionCardButtons } from "../../settings/encryption/EncryptionCardButtons"; diff --git a/src/components/views/elements/SettingsDropdown.tsx b/src/components/views/elements/SettingsDropdown.tsx index 4aa746ea15..db78e7cc36 100644 --- a/src/components/views/elements/SettingsDropdown.tsx +++ b/src/components/views/elements/SettingsDropdown.tsx @@ -6,13 +6,13 @@ Please see LICENSE files in the repository root for full details. */ import React, { type JSX, useCallback, useId, useState } from "react"; +import { _t } from "@element-hq/web-shared-components"; import SettingsStore from "../../../settings/SettingsStore"; import { type SettingLevel } from "../../../settings/SettingLevel"; import { SETTINGS, type StringSettingKey } from "../../../settings/Settings"; import { useSettingValueAt } from "../../../hooks/useSettings.ts"; import Dropdown, { type DropdownProps } from "./Dropdown.tsx"; -import { _t } from "../../../../packages/shared-components/src/utils/i18n.tsx"; interface Props { settingKey: StringSettingKey; diff --git a/src/components/views/emojipicker/EmojiPicker.tsx b/src/components/views/emojipicker/EmojiPicker.tsx index 561361bb4d..3760cbc4c7 100644 --- a/src/components/views/emojipicker/EmojiPicker.tsx +++ b/src/components/views/emojipicker/EmojiPicker.tsx @@ -9,6 +9,7 @@ Please see LICENSE files in the repository root for full details. import React, { type Dispatch } from "react"; import { DATA_BY_CATEGORY, getEmojiFromUnicode, type Emoji as IEmoji } from "@matrix-org/emojibase-bindings"; +import { clamp } from "@element-hq/web-shared-components"; import classNames from "classnames"; import { _t } from "../../../languageHandler"; @@ -27,7 +28,6 @@ import { Type, } from "../../../accessibility/RovingTabIndex"; import { Key } from "../../../Keyboard"; -import { clamp } from "../../../../packages/shared-components/src/utils/numbers"; import { type ButtonEvent } from "../elements/AccessibleButton"; export const CATEGORY_HEADER_HEIGHT = 20; diff --git a/src/components/views/messages/LegacyCallEvent.tsx b/src/components/views/messages/LegacyCallEvent.tsx index 97a13db7e5..f43953fb6e 100644 --- a/src/components/views/messages/LegacyCallEvent.tsx +++ b/src/components/views/messages/LegacyCallEvent.tsx @@ -10,6 +10,7 @@ import React, { type JSX, createRef } from "react"; import { type MatrixEvent } from "matrix-js-sdk/src/matrix"; import { CallErrorCode, CallState } from "matrix-js-sdk/src/webrtc/call"; import classNames from "classnames"; +import { Clock } from "@element-hq/web-shared-components"; import { _t } from "../../../languageHandler"; import MemberAvatar from "../avatars/MemberAvatar"; @@ -18,7 +19,6 @@ import { LegacyCallEventGrouperEvent } from "../../structures/LegacyCallEventGro import AccessibleButton from "../elements/AccessibleButton"; import InfoTooltip, { InfoTooltipKind } from "../elements/InfoTooltip"; import { formatPreciseDuration } from "../../../DateUtils"; -import { Clock } from "../../../../packages/shared-components/src/audio/Clock"; const MAX_NON_NARROW_WIDTH = (450 / 70) * 100; diff --git a/src/components/views/messages/MAudioBody.tsx b/src/components/views/messages/MAudioBody.tsx index d29058d081..db61672c9c 100644 --- a/src/components/views/messages/MAudioBody.tsx +++ b/src/components/views/messages/MAudioBody.tsx @@ -10,6 +10,7 @@ import React, { type JSX, useEffect, useMemo } from "react"; import { logger } from "matrix-js-sdk/src/logger"; import { type IContent } from "matrix-js-sdk/src/matrix"; import { type MediaEventContent } from "matrix-js-sdk/src/types"; +import { AudioPlayerView } from "@element-hq/web-shared-components"; import { type Playback } from "../../../audio/Playback"; import InlineSpinner from "../elements/InlineSpinner"; @@ -20,7 +21,6 @@ import { PlaybackManager } from "../../../audio/PlaybackManager"; import RoomContext, { TimelineRenderingType } from "../../../contexts/RoomContext"; import MediaProcessingError from "./shared/MediaProcessingError"; import { AudioPlayerViewModel } from "../../../viewmodels/audio/AudioPlayerViewModel"; -import { AudioPlayerView } from "../../../../packages/shared-components/src/audio/AudioPlayerView"; interface IState { error?: boolean; diff --git a/src/components/views/right_panel/EmptyState.tsx b/src/components/views/right_panel/EmptyState.tsx index 1915cac8ce..8037e3673c 100644 --- a/src/components/views/right_panel/EmptyState.tsx +++ b/src/components/views/right_panel/EmptyState.tsx @@ -8,8 +8,7 @@ Please see LICENSE files in the repository root for full details. import React, { type ComponentType } from "react"; import { Text } from "@vector-im/compound-web"; - -import { Flex } from "../../../../packages/shared-components/src/utils/Flex"; +import { Flex } from "@element-hq/web-shared-components"; interface Props { Icon: ComponentType>; diff --git a/src/components/views/right_panel/RoomSummaryCardView.tsx b/src/components/views/right_panel/RoomSummaryCardView.tsx index 6ebd219ada..67eea91478 100644 --- a/src/components/views/right_panel/RoomSummaryCardView.tsx +++ b/src/components/views/right_panel/RoomSummaryCardView.tsx @@ -39,6 +39,7 @@ import ErrorIcon from "@vector-im/compound-design-tokens/assets/web/icons/error" import ErrorSolidIcon from "@vector-im/compound-design-tokens/assets/web/icons/error-solid"; import ChevronDownIcon from "@vector-im/compound-design-tokens/assets/web/icons/chevron-down"; import { JoinRule, type Room } from "matrix-js-sdk/src/matrix"; +import { Box, Flex } from "@element-hq/web-shared-components"; import BaseCard from "./BaseCard.tsx"; import { _t } from "../../../languageHandler.tsx"; @@ -46,9 +47,7 @@ import RoomAvatar from "../avatars/RoomAvatar.tsx"; import { E2EStatus } from "../../../utils/ShieldUtils.ts"; import { type RoomPermalinkCreator } from "../../../utils/permalinks/Permalinks.ts"; import RoomName from "../elements/RoomName.tsx"; -import { Flex } from "../../../../packages/shared-components/src/utils/Flex"; import { Linkify, topicToHtml } from "../../../HtmlUtils.tsx"; -import { Box } from "../../../../packages/shared-components/src/utils/Box"; import { useRoomSummaryCardViewModel } from "../../viewmodels/right_panel/RoomSummaryCardViewModel.tsx"; import { useRoomTopicViewModel } from "../../viewmodels/right_panel/RoomSummaryCardTopicViewModel.tsx"; diff --git a/src/components/views/right_panel/user_info/UserInfoHeaderVerificationView.tsx b/src/components/views/right_panel/user_info/UserInfoHeaderVerificationView.tsx index e5ef652379..eae5101a6f 100644 --- a/src/components/views/right_panel/user_info/UserInfoHeaderVerificationView.tsx +++ b/src/components/views/right_panel/user_info/UserInfoHeaderVerificationView.tsx @@ -9,10 +9,10 @@ import React from "react"; import { type User, type RoomMember } from "matrix-js-sdk/src/matrix"; import { Text, Button, InlineSpinner, Badge } from "@vector-im/compound-web"; import { VerifiedIcon } from "@vector-im/compound-design-tokens/assets/web/icons"; +import { Flex } from "@element-hq/web-shared-components"; import { useUserInfoVerificationViewModel } from "../../../viewmodels/right_panel/user_info/UserInfoHeaderVerificationViewModel"; import { type IDevice } from "../UserInfo"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { _t } from "../../../../languageHandler"; export const UserInfoHeaderVerificationView: React.FC<{ diff --git a/src/components/views/right_panel/user_info/UserInfoHeaderView.tsx b/src/components/views/right_panel/user_info/UserInfoHeaderView.tsx index 1b88d7814e..275175198c 100644 --- a/src/components/views/right_panel/user_info/UserInfoHeaderView.tsx +++ b/src/components/views/right_panel/user_info/UserInfoHeaderView.tsx @@ -8,11 +8,11 @@ Please see LICENSE files in the repository root for full details. import React, { type JSX } from "react"; import { type User, type RoomMember } from "matrix-js-sdk/src/matrix"; import { Heading, Tooltip, Text } from "@vector-im/compound-web"; +import { Flex } from "@element-hq/web-shared-components"; import { useUserfoHeaderViewModel } from "../../../viewmodels/right_panel/user_info/UserInfoHeaderViewModel"; import MemberAvatar from "../../avatars/MemberAvatar"; import { Container, type Member, type IDevice } from "../UserInfo"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import PresenceLabel from "../../rooms/PresenceLabel"; import CopyableText from "../../elements/CopyableText"; import { UserInfoHeaderVerificationView } from "./UserInfoHeaderVerificationView"; diff --git a/src/components/views/rooms/AppsDrawer.tsx b/src/components/views/rooms/AppsDrawer.tsx index c40f756651..b4b62e9763 100644 --- a/src/components/views/rooms/AppsDrawer.tsx +++ b/src/components/views/rooms/AppsDrawer.tsx @@ -11,6 +11,7 @@ import classNames from "classnames"; import { Resizable, type Size } from "re-resizable"; import { type Room } from "matrix-js-sdk/src/matrix"; import { type IWidget } from "matrix-widget-api"; +import { clamp, percentageOf, percentageWithin } from "@element-hq/web-shared-components"; import AppTile from "../elements/AppTile"; import dis from "../../../dispatcher/dispatcher"; @@ -22,7 +23,6 @@ import ResizeHandle from "../elements/ResizeHandle"; import Resizer, { type IConfig } from "../../../resizer/resizer"; import PercentageDistributor from "../../../resizer/distributors/percentage"; import { Container, WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore"; -import { clamp, percentageOf, percentageWithin } from "../../../../packages/shared-components/src/utils/numbers"; import UIStore from "../../../stores/UIStore"; import { type ActionPayload } from "../../../dispatcher/payloads"; import Spinner from "../elements/Spinner"; diff --git a/src/components/views/rooms/MemberList/MemberListHeaderView.tsx b/src/components/views/rooms/MemberList/MemberListHeaderView.tsx index e6e612b598..af8fe831cf 100644 --- a/src/components/views/rooms/MemberList/MemberListHeaderView.tsx +++ b/src/components/views/rooms/MemberList/MemberListHeaderView.tsx @@ -9,8 +9,8 @@ import { Search, Text, Button, Tooltip, InlineSpinner } from "@vector-im/compoun import React from "react"; import InviteIcon from "@vector-im/compound-design-tokens/assets/web/icons/user-add"; import { UserAddIcon } from "@vector-im/compound-design-tokens/assets/web/icons"; +import { Flex } from "@element-hq/web-shared-components"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { type MemberListViewState } from "../../../viewmodels/memberlist/MemberListViewModel"; import { _t } from "../../../../languageHandler"; diff --git a/src/components/views/rooms/MemberList/MemberListView.tsx b/src/components/views/rooms/MemberList/MemberListView.tsx index 90c77fd70c..33ef02ea0e 100644 --- a/src/components/views/rooms/MemberList/MemberListView.tsx +++ b/src/components/views/rooms/MemberList/MemberListView.tsx @@ -7,8 +7,8 @@ Please see LICENSE files in the repository root for full details. import { Form } from "@vector-im/compound-web"; import React, { type JSX, useCallback } from "react"; +import { Flex } from "@element-hq/web-shared-components"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { type MemberWithSeparator, SEPARATOR, diff --git a/src/components/views/rooms/MemberList/tiles/common/InvitedIconView.tsx b/src/components/views/rooms/MemberList/tiles/common/InvitedIconView.tsx index a22ac031c2..35ac0ce899 100644 --- a/src/components/views/rooms/MemberList/tiles/common/InvitedIconView.tsx +++ b/src/components/views/rooms/MemberList/tiles/common/InvitedIconView.tsx @@ -8,8 +8,7 @@ Please see LICENSE files in the repository root for full details. import React, { type JSX } from "react"; import EmailIcon from "@vector-im/compound-design-tokens/assets/web/icons/email-solid"; import UserAddIcon from "@vector-im/compound-design-tokens/assets/web/icons/user-add-solid"; - -import { Flex } from "../../../../../../../packages/shared-components/src/utils/Flex"; +import { Flex } from "@element-hq/web-shared-components"; interface Props { isThreePid: boolean; diff --git a/src/components/views/rooms/NotificationDecoration.tsx b/src/components/views/rooms/NotificationDecoration.tsx index 7195966131..5dda3b0453 100644 --- a/src/components/views/rooms/NotificationDecoration.tsx +++ b/src/components/views/rooms/NotificationDecoration.tsx @@ -12,8 +12,8 @@ import NotificationOffIcon from "@vector-im/compound-design-tokens/assets/web/ic import VideoCallIcon from "@vector-im/compound-design-tokens/assets/web/icons/video-call-solid"; import EmailIcon from "@vector-im/compound-design-tokens/assets/web/icons/email-solid"; import { UnreadCounter, Unread } from "@vector-im/compound-web"; +import { Flex } from "@element-hq/web-shared-components"; -import { Flex } from "../../../../packages/shared-components/src/utils/Flex"; import { type RoomNotificationState } from "../../../stores/notifications/RoomNotificationState"; import { useTypedEventEmitterState } from "../../../hooks/useEventEmitter"; import { NotificationStateEvents } from "../../../stores/notifications/NotificationState"; diff --git a/src/components/views/rooms/RoomHeader/RoomHeader.tsx b/src/components/views/rooms/RoomHeader/RoomHeader.tsx index cdc0a1b8a7..02fbf678a3 100644 --- a/src/components/views/rooms/RoomHeader/RoomHeader.tsx +++ b/src/components/views/rooms/RoomHeader/RoomHeader.tsx @@ -19,14 +19,13 @@ import ErrorIcon from "@vector-im/compound-design-tokens/assets/web/icons/error- import PublicIcon from "@vector-im/compound-design-tokens/assets/web/icons/public"; import { JoinRule, type Room } from "matrix-js-sdk/src/matrix"; import { type ViewRoomOpts } from "@matrix-org/react-sdk-module-api/lib/lifecycles/RoomViewLifecycle"; +import { Flex, Box } from "@element-hq/web-shared-components"; import { useRoomName } from "../../../../hooks/useRoomName.ts"; import { RightPanelPhases } from "../../../../stores/right-panel/RightPanelStorePhases.ts"; import { useMatrixClientContext } from "../../../../contexts/MatrixClientContext.tsx"; import { useRoomMemberCount, useRoomMembers } from "../../../../hooks/useRoomMembers.ts"; import { _t } from "../../../../languageHandler.tsx"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; -import { Box } from "../../../../../packages/shared-components/src/utils/Box"; import { getPlatformCallTypeProps, useRoomCall } from "../../../../hooks/room/useRoomCall.tsx"; import { useRoomThreadNotifications } from "../../../../hooks/room/useRoomThreadNotifications.ts"; import { useGlobalNotificationState } from "../../../../hooks/useGlobalNotificationState.ts"; diff --git a/src/components/views/rooms/RoomListPanel/EmptyRoomList.tsx b/src/components/views/rooms/RoomListPanel/EmptyRoomList.tsx index 27fce169af..8c1d04b8c5 100644 --- a/src/components/views/rooms/RoomListPanel/EmptyRoomList.tsx +++ b/src/components/views/rooms/RoomListPanel/EmptyRoomList.tsx @@ -9,9 +9,9 @@ import React, { type JSX, type PropsWithChildren } from "react"; import { Button } from "@vector-im/compound-web"; import ChatIcon from "@vector-im/compound-design-tokens/assets/web/icons/chat"; import RoomIcon from "@vector-im/compound-design-tokens/assets/web/icons/room"; +import { Flex } from "@element-hq/web-shared-components"; import type { RoomListViewState } from "../../../viewmodels/roomlist/RoomListViewModel"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { _t } from "../../../../languageHandler"; import { FilterKey } from "../../../../stores/room-list-v3/skip-list/filters"; import { type PrimaryFilter } from "../../../viewmodels/roomlist/useFilteredRooms"; diff --git a/src/components/views/rooms/RoomListPanel/RoomListHeaderView.tsx b/src/components/views/rooms/RoomListPanel/RoomListHeaderView.tsx index 0a12c91cda..7ce6f28321 100644 --- a/src/components/views/rooms/RoomListPanel/RoomListHeaderView.tsx +++ b/src/components/views/rooms/RoomListPanel/RoomListHeaderView.tsx @@ -15,9 +15,9 @@ import PreferencesIcon from "@vector-im/compound-design-tokens/assets/web/icons/ import SettingsIcon from "@vector-im/compound-design-tokens/assets/web/icons/settings"; import VideoCallIcon from "@vector-im/compound-design-tokens/assets/web/icons/video-call"; import ChatIcon from "@vector-im/compound-design-tokens/assets/web/icons/chat"; +import { Flex } from "@element-hq/web-shared-components"; import { _t } from "../../../../languageHandler"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { type RoomListHeaderViewState, useRoomListHeaderViewModel, diff --git a/src/components/views/rooms/RoomListPanel/RoomListItemMenuView.tsx b/src/components/views/rooms/RoomListPanel/RoomListItemMenuView.tsx index 4a37d90d9a..ad92559f5c 100644 --- a/src/components/views/rooms/RoomListPanel/RoomListItemMenuView.tsx +++ b/src/components/views/rooms/RoomListPanel/RoomListItemMenuView.tsx @@ -19,9 +19,9 @@ import NotificationIcon from "@vector-im/compound-design-tokens/assets/web/icons import NotificationOffIcon from "@vector-im/compound-design-tokens/assets/web/icons/notifications-off-solid"; import CheckIcon from "@vector-im/compound-design-tokens/assets/web/icons/check"; import { type Room } from "matrix-js-sdk/src/matrix"; +import { Flex } from "@element-hq/web-shared-components"; import { _t } from "../../../../languageHandler"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { type RoomListItemMenuViewState, useRoomListItemMenuViewModel, diff --git a/src/components/views/rooms/RoomListPanel/RoomListItemView.tsx b/src/components/views/rooms/RoomListPanel/RoomListItemView.tsx index 53c138eae4..0061ac05ef 100644 --- a/src/components/views/rooms/RoomListPanel/RoomListItemView.tsx +++ b/src/components/views/rooms/RoomListPanel/RoomListItemView.tsx @@ -8,9 +8,9 @@ import React, { type JSX, memo, useCallback, useEffect, useRef, useState } from "react"; import { type Room } from "matrix-js-sdk/src/matrix"; import classNames from "classnames"; +import { Flex } from "@element-hq/web-shared-components"; import { useRoomListItemViewModel } from "../../../viewmodels/roomlist/RoomListItemViewModel"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { RoomListItemMenuView } from "./RoomListItemMenuView"; import { NotificationDecoration } from "../NotificationDecoration"; import { RoomAvatarView } from "../../avatars/RoomAvatarView"; diff --git a/src/components/views/rooms/RoomListPanel/RoomListPanel.tsx b/src/components/views/rooms/RoomListPanel/RoomListPanel.tsx index f667c5af16..5701cea905 100644 --- a/src/components/views/rooms/RoomListPanel/RoomListPanel.tsx +++ b/src/components/views/rooms/RoomListPanel/RoomListPanel.tsx @@ -6,13 +6,13 @@ Please see LICENSE files in the repository root for full details. */ import React, { useState, useCallback } from "react"; +import { Flex } from "@element-hq/web-shared-components"; import { shouldShowComponent } from "../../../../customisations/helpers/UIComponents"; import { UIComponent } from "../../../../settings/UIFeature"; import { RoomListSearch } from "./RoomListSearch"; import { RoomListHeaderView } from "./RoomListHeaderView"; import { RoomListView } from "./RoomListView"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { _t } from "../../../../languageHandler"; import { getKeyBindingsManager } from "../../../../KeyBindingsManager"; import { KeyBindingAction } from "../../../../accessibility/KeyboardShortcuts"; diff --git a/src/components/views/rooms/RoomListPanel/RoomListPrimaryFilters.tsx b/src/components/views/rooms/RoomListPanel/RoomListPrimaryFilters.tsx index c786078d01..44f19a86da 100644 --- a/src/components/views/rooms/RoomListPanel/RoomListPrimaryFilters.tsx +++ b/src/components/views/rooms/RoomListPanel/RoomListPrimaryFilters.tsx @@ -8,9 +8,9 @@ import React, { type JSX, useEffect, useId, useRef, useState, type RefObject } from "react"; import { ChatFilter, IconButton } from "@vector-im/compound-web"; import ChevronDownIcon from "@vector-im/compound-design-tokens/assets/web/icons/chevron-down"; +import { Flex } from "@element-hq/web-shared-components"; import type { RoomListViewState } from "../../../viewmodels/roomlist/RoomListViewModel"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { _t } from "../../../../languageHandler"; interface RoomListPrimaryFiltersProps { diff --git a/src/components/views/rooms/RoomListPanel/RoomListSearch.tsx b/src/components/views/rooms/RoomListPanel/RoomListSearch.tsx index fba28b6ee2..f1c3c2e66d 100644 --- a/src/components/views/rooms/RoomListPanel/RoomListSearch.tsx +++ b/src/components/views/rooms/RoomListPanel/RoomListSearch.tsx @@ -10,6 +10,7 @@ import { Button } from "@vector-im/compound-web"; import ExploreIcon from "@vector-im/compound-design-tokens/assets/web/icons/explore"; import SearchIcon from "@vector-im/compound-design-tokens/assets/web/icons/search"; import DialPadIcon from "@vector-im/compound-design-tokens/assets/web/icons/dial-pad"; +import { Flex } from "@element-hq/web-shared-components"; import { IS_MAC, Key } from "../../../../Keyboard"; import { _t } from "../../../../languageHandler"; @@ -20,7 +21,6 @@ import { MetaSpace } from "../../../../stores/spaces"; import { Action } from "../../../../dispatcher/actions"; import PosthogTrackers from "../../../../PosthogTrackers"; import defaultDispatcher from "../../../../dispatcher/dispatcher"; -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; import { useTypedEventEmitterState } from "../../../../hooks/useEventEmitter"; import LegacyCallHandler, { LegacyCallHandlerEvent } from "../../../../LegacyCallHandler"; diff --git a/src/components/views/rooms/ThirdPartyMemberInfo.tsx b/src/components/views/rooms/ThirdPartyMemberInfo.tsx index d919e0fb31..5e90152673 100644 --- a/src/components/views/rooms/ThirdPartyMemberInfo.tsx +++ b/src/components/views/rooms/ThirdPartyMemberInfo.tsx @@ -10,6 +10,7 @@ import React, { type JSX } from "react"; import { EventType, type MatrixEvent, type Room, RoomStateEvent } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; import { Button, Text } from "@vector-im/compound-web"; +import { Flex } from "@element-hq/web-shared-components"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; import { _t } from "../../../languageHandler"; @@ -19,7 +20,6 @@ import { isValid3pidInvite } from "../../../RoomInvite"; import { Action } from "../../../dispatcher/actions"; import ErrorDialog from "../dialogs/ErrorDialog"; import BaseCard from "../right_panel/BaseCard"; -import { Flex } from "../../../../packages/shared-components/src/utils/Flex"; interface IProps { event: MatrixEvent; diff --git a/src/components/views/settings/UserProfileSettings.tsx b/src/components/views/settings/UserProfileSettings.tsx index d58b050837..75e1ff0377 100644 --- a/src/components/views/settings/UserProfileSettings.tsx +++ b/src/components/views/settings/UserProfileSettings.tsx @@ -11,6 +11,7 @@ import { logger } from "matrix-js-sdk/src/logger"; import { EditInPlace, Alert, ErrorMessage } from "@vector-im/compound-web"; import PopOutIcon from "@vector-im/compound-design-tokens/assets/web/icons/pop-out"; import SignOutIcon from "@vector-im/compound-design-tokens/assets/web/icons/sign-out"; +import { Flex } from "@element-hq/web-shared-components"; import { _t } from "../../../languageHandler"; import { OwnProfileStore } from "../../../stores/OwnProfileStore"; @@ -26,7 +27,6 @@ import AccessibleButton from "../elements/AccessibleButton"; import LogoutDialog, { shouldShowLogoutDialog } from "../dialogs/LogoutDialog"; import Modal from "../../../Modal"; import defaultDispatcher from "../../../dispatcher/dispatcher"; -import { Flex } from "../../../../packages/shared-components/src/utils/Flex"; const SpinnerToast: React.FC<{ children?: ReactNode }> = ({ children }) => ( <> diff --git a/src/components/views/settings/encryption/EncryptionCardEmphasisedContent.tsx b/src/components/views/settings/encryption/EncryptionCardEmphasisedContent.tsx index 4ad472ee82..2e705021bc 100644 --- a/src/components/views/settings/encryption/EncryptionCardEmphasisedContent.tsx +++ b/src/components/views/settings/encryption/EncryptionCardEmphasisedContent.tsx @@ -6,8 +6,7 @@ */ import React, { type JSX, type PropsWithChildren } from "react"; - -import { Flex } from "../../../../../packages/shared-components/src/utils/Flex"; +import { Flex } from "@element-hq/web-shared-components"; /** * A component for emphasised text within an {@link EncryptionCard} diff --git a/src/events/EventTileFactory.tsx b/src/events/EventTileFactory.tsx index cc9f4c0a2c..316f62fa94 100644 --- a/src/events/EventTileFactory.tsx +++ b/src/events/EventTileFactory.tsx @@ -18,6 +18,7 @@ import { M_POLL_START, } from "matrix-js-sdk/src/matrix"; import { type Optional } from "matrix-events-sdk"; +import { TextualEventView } from "@element-hq/web-shared-components"; import SettingsStore from "../settings/SettingsStore"; import type LegacyCallEventGrouper from "../components/structures/LegacyCallEventGrouper"; @@ -43,7 +44,6 @@ import { shouldDisplayAsBeaconTile } from "../utils/beacon/timeline"; import { type IBodyProps } from "../components/views/messages/IBodyProps"; import { ModuleApi } from "../modules/Api"; import { TextualEventViewModel } from "../viewmodels/event-tiles/TextualEventViewModel"; -import { TextualEventView } from "../../packages/shared-components/src/event-tiles/TextualEventView"; import { ElementCallEventType } from "../call-types"; // Subset of EventTile's IProps plus some mixins diff --git a/src/languageHandler.tsx b/src/languageHandler.tsx index 569db2d360..da31ab1811 100644 --- a/src/languageHandler.tsx +++ b/src/languageHandler.tsx @@ -5,19 +5,11 @@ * Please see LICENSE files in the repository root for full details. */ -import counterpart from "counterpart"; import { logger } from "matrix-js-sdk/src/logger"; import { type Optional } from "matrix-events-sdk"; import { MapWithDefault } from "matrix-js-sdk/src/utils"; import { type TranslationStringsObject } from "@matrix-org/react-sdk-module-api"; import _ from "lodash"; - -import SettingsStore from "./settings/SettingsStore"; -import PlatformPeg from "./PlatformPeg"; -import { SettingLevel } from "./settings/SettingLevel"; -import { retry } from "./utils/promise"; -import SdkConfig from "./SdkConfig"; -import { ModuleRunner } from "./modules/ModuleRunner"; import { _t, normalizeLanguageKey, @@ -25,7 +17,18 @@ import { type IVariables, KEY_SEPARATOR, getLangsJson, -} from "../packages/shared-components/src/utils/i18n"; + registerTranslations, + setLocale, + getLocale, + setMissingEntryGenerator as setMissingEntryGeneratorSharedComponents, +} from "@element-hq/web-shared-components"; + +import SettingsStore from "./settings/SettingsStore"; +import PlatformPeg from "./PlatformPeg"; +import { SettingLevel } from "./settings/SettingLevel"; +import { retry } from "./utils/promise"; +import SdkConfig from "./SdkConfig"; +import { ModuleRunner } from "./modules/ModuleRunner"; export { _t, @@ -40,7 +43,7 @@ export { normalizeLanguageKey, getNormalizedLanguageKeys, substitute, -} from "../packages/shared-components/src/utils/i18n"; +} from "@element-hq/web-shared-components"; const i18nFolder = "i18n/"; @@ -100,7 +103,7 @@ export function getUserLanguage(): string { // Currently only used in unit tests to avoid having to load // the translations in element-web export function setMissingEntryGenerator(f: (value: string) => void): void { - counterpart.setMissingEntryGenerator(f); + setMissingEntryGeneratorSharedComponents(f); } export async function setLanguage(...preferredLangs: string[]): Promise { @@ -116,8 +119,8 @@ export async function setLanguage(...preferredLangs: string[]): Promise { const languageData = await getLanguageRetry(i18nFolder + availableLanguages[chosenLanguage]); - counterpart.registerTranslations(chosenLanguage, languageData); - counterpart.setLocale(chosenLanguage); + registerTranslations(chosenLanguage, languageData); + setLocale(chosenLanguage); await SettingsStore.setValue("language", null, SettingLevel.DEVICE, chosenLanguage); // Adds a lot of noise to test runs, so disable logging there. @@ -128,7 +131,7 @@ export async function setLanguage(...preferredLangs: string[]): Promise { // Set 'en' as fallback language: if (chosenLanguage !== "en") { const fallbackLanguageData = await getLanguageRetry(i18nFolder + availableLanguages["en"]); - counterpart.registerTranslations("en", fallbackLanguageData); + registerTranslations("en", fallbackLanguageData); } await registerCustomTranslations(); @@ -166,7 +169,7 @@ export function getLanguageFromBrowser(): string { } export function getCurrentLanguage(): string { - return counterpart.getLocale(); + return getLocale(); } /** @@ -258,7 +261,7 @@ function doRegisterTranslations(customTranslations: TranslationStringsObject): v // Finally, tell counterpart about our translations for (const [lang, translations] of langs) { - counterpart.registerTranslations(lang, translations); + registerTranslations(lang, translations); } } diff --git a/src/modules/I18nApi.ts b/src/modules/I18nApi.ts index 43c101eca6..9a195a47ec 100644 --- a/src/modules/I18nApi.ts +++ b/src/modules/I18nApi.ts @@ -6,7 +6,7 @@ Please see LICENSE files in the repository root for full details. */ import { type I18nApi as II18nApi, type Variables, type Translations } from "@element-hq/element-web-module-api"; -import counterpart from "counterpart"; +import { registerTranslations } from "@element-hq/web-shared-components"; import { _t, getCurrentLanguage, type TranslationKey } from "../languageHandler.tsx"; @@ -32,7 +32,7 @@ export class I18nApi implements II18nApi { // Finally, tell counterpart about our translations for (const lang in langs) { - counterpart.registerTranslations(lang, langs[lang]); + registerTranslations(lang, langs[lang]); } } diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx index 78758ea277..2b2a57c2c5 100644 --- a/src/settings/Settings.tsx +++ b/src/settings/Settings.tsx @@ -9,10 +9,10 @@ Please see LICENSE files in the repository root for full details. import React, { type ReactNode } from "react"; import { STABLE_MSC4133_EXTENDED_PROFILES, UNSTABLE_MSC4133_EXTENDED_PROFILES } from "matrix-js-sdk/src/matrix"; +// Import these directly from shared-components to avoid circular deps +import { _t, _td, type TranslationKey } from "@element-hq/web-shared-components"; import { type MediaPreviewConfig } from "../@types/media_preview.ts"; -// Import i18n.tsx instead of languageHandler to avoid circular deps -import { _t, _td, type TranslationKey } from "../../packages/shared-components/src/utils/i18n"; import DeviceIsolationModeController from "./controllers/DeviceIsolationModeController.ts"; import { NotificationBodyEnabledController, diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index 990de130ad..293dc06c03 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -10,11 +10,11 @@ import { type Room, RoomStateEvent, type MatrixEvent } from "matrix-js-sdk/src/m import { type Optional } from "matrix-events-sdk"; import { MapWithDefault, recursiveMapToObject } from "matrix-js-sdk/src/utils"; import { type IWidget } from "matrix-widget-api"; +import { clamp, defaultNumber, sum } from "@element-hq/web-shared-components"; import SettingsStore from "../../settings/SettingsStore"; import WidgetStore, { type IApp } from "../WidgetStore"; import { WidgetType } from "../../widgets/WidgetType"; -import { clamp, defaultNumber, sum } from "../../../packages/shared-components/src/utils/numbers"; import defaultDispatcher from "../../dispatcher/dispatcher"; import { ReadyWatchingStore } from "../ReadyWatchingStore"; import { SettingLevel } from "../../settings/SettingLevel"; diff --git a/src/toasts/IncomingCallToast.tsx b/src/toasts/IncomingCallToast.tsx index 18fd846fd2..f2de9aedc1 100644 --- a/src/toasts/IncomingCallToast.tsx +++ b/src/toasts/IncomingCallToast.tsx @@ -14,6 +14,7 @@ import CheckIcon from "@vector-im/compound-design-tokens/assets/web/icons/check" import CrossIcon from "@vector-im/compound-design-tokens/assets/web/icons/close"; import { logger } from "matrix-js-sdk/src/logger"; import { type IRTCNotificationContent } from "matrix-js-sdk/src/matrixrtc"; +import { AvatarWithDetails } from "@element-hq/web-shared-components"; import { _t } from "../languageHandler"; import RoomAvatar from "../components/views/avatars/RoomAvatar"; @@ -35,7 +36,6 @@ import { type Call, CallEvent } from "../models/Call"; import LegacyCallHandler, { AudioID } from "../LegacyCallHandler"; import { useEventEmitter } from "../hooks/useEventEmitter"; import { CallStore, CallStoreEvent } from "../stores/CallStore"; -import { AvatarWithDetails } from "../../packages/shared-components/src/avatar/AvatarWithDetails"; /** * Get the key for the incoming call toast. A combination of the event ID and room ID. diff --git a/src/utils/FormattingUtils.ts b/src/utils/FormattingUtils.ts index 0e10136438..b952c96170 100644 --- a/src/utils/FormattingUtils.ts +++ b/src/utils/FormattingUtils.ts @@ -13,7 +13,7 @@ import { useIdColorHash } from "@vector-im/compound-web"; import { _t, getCurrentLanguage, getUserLanguage } from "../languageHandler"; import { jsxJoin } from "./ReactUtils"; -export { formatBytes } from "../../packages/shared-components/src/utils/FormattingUtils"; +export { formatBytes } from "@element-hq/web-shared-components"; const locale = getCurrentLanguage(); diff --git a/src/utils/arrays.ts b/src/utils/arrays.ts index 80896db71c..392436eee8 100644 --- a/src/utils/arrays.ts +++ b/src/utils/arrays.ts @@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import { percentageOf, percentageWithin } from "../../packages/shared-components/src/utils/numbers"; +import { percentageOf, percentageWithin } from "@element-hq/web-shared-components"; /** * Quickly resample an array to have less/more data points. If an input which is larger diff --git a/src/vector/index.ts b/src/vector/index.ts index 943ed49c6a..e705014add 100644 --- a/src/vector/index.ts +++ b/src/vector/index.ts @@ -17,6 +17,9 @@ import { shouldPolyfill as shouldPolyFillIntlSegmenter } from "@formatjs/intl-se import { parseQsFromFragment } from "./url_utils"; import "./modernizr"; +// Import shared components CSS +import "@element-hq/web-shared-components/dist/element-web-shared-components.css"; + // Require common CSS here; this will make webpack process it into bundle.css. // Our own CSS (which is themed) is imported via separate webpack entry points // in webpack.config.js diff --git a/src/viewmodels/audio/AudioPlayerViewModel.ts b/src/viewmodels/audio/AudioPlayerViewModel.ts index 9c8d4c4822..f0f5f87989 100644 --- a/src/viewmodels/audio/AudioPlayerViewModel.ts +++ b/src/viewmodels/audio/AudioPlayerViewModel.ts @@ -7,17 +7,17 @@ import { type ChangeEvent, type KeyboardEvent } from "react"; import { logger } from "matrix-js-sdk/src/logger"; - import { + percentageOf, + BaseViewModel, type AudioPlayerViewSnapshot, type AudioPlayerViewModel as AudioPlayerViewModelInterface, -} from "../../../packages/shared-components/src/audio/AudioPlayerView"; +} from "@element-hq/web-shared-components"; + import { type Playback } from "../../audio/Playback"; import { UPDATE_EVENT } from "../../stores/AsyncStore"; -import { percentageOf } from "../../../packages/shared-components/src/utils/numbers"; import { getKeyBindingsManager } from "../../KeyBindingsManager"; import { KeyBindingAction } from "../../accessibility/KeyboardShortcuts"; -import { BaseViewModel } from "../../../packages/shared-components/src/viewmodel"; /** * The number of seconds to skip when the user presses the left or right arrow keys. diff --git a/src/viewmodels/event-tiles/TextualEventViewModel.ts b/src/viewmodels/event-tiles/TextualEventViewModel.ts index a561dfa90d..46322c4590 100644 --- a/src/viewmodels/event-tiles/TextualEventViewModel.ts +++ b/src/viewmodels/event-tiles/TextualEventViewModel.ts @@ -6,12 +6,11 @@ Please see LICENSE files in the repository root for full details. */ import { MatrixEventEvent } from "matrix-js-sdk/src/matrix"; +import { type TextualEventViewSnapshot, BaseViewModel } from "@element-hq/web-shared-components"; import { type EventTileTypeProps } from "../../events/EventTileFactory"; import { MatrixClientPeg } from "../../MatrixClientPeg"; import { textForEvent } from "../../TextForEvent"; -import { type TextualEventViewSnapshot } from "../../../packages/shared-components/src/event-tiles/TextualEventView/TextualEventView"; -import { BaseViewModel } from "../../../packages/shared-components/src/viewmodel"; export class TextualEventViewModel extends BaseViewModel { public constructor(props: EventTileTypeProps) { diff --git a/test/unit-tests/async-components/structures/__snapshots__/ErrorView-test.tsx.snap b/test/unit-tests/async-components/structures/__snapshots__/ErrorView-test.tsx.snap index bb75f6263d..0af351ee85 100644 --- a/test/unit-tests/async-components/structures/__snapshots__/ErrorView-test.tsx.snap +++ b/test/unit-tests/async-components/structures/__snapshots__/ErrorView-test.tsx.snap @@ -98,7 +98,7 @@ exports[` should match snapshot 1`] = `

    should show the empty state when there are no pi tabindex="-1" >
    has button to edit topic 1`] = ` title="" />
    has button to edit topic 1`] = `

    has button to edit topic 1`] = `

    renders the room summary 1`] = ` title="" />
    renders the room summary 1`] = `
    renders the room topic in the summary 1`] = ` title="" />
    renders the room topic in the summary 1`] = `

    renders the room topic in the summary 1`] = `

    with crypto enabled renders 1`] = ` class="mx_UserInfo_container mx_UserInfo_header" >

    with crypto enabled renders 1`] = ` dir="auto" >
    @user:example.com @@ -113,7 +113,7 @@ exports[` with crypto enabled renders 1`] = `

    with crypto enabled should render a deactivate button for class="mx_UserInfo_container mx_UserInfo_header" >

    with crypto enabled should render a deactivate button for dir="auto" >
    @user:example.com @@ -400,7 +400,7 @@ exports[` with crypto enabled should render a deactivate button for

    renders verification unavailable message 1`] = `

    renders verification unavailable mes exports[` renders verified badge when user is verified 1`] = `

    renders verified badge when user is exports[` renders verify button 1`] = `
    renders custom user identifiers in the header 1` class="mx_UserInfo_container mx_UserInfo_header" >

    renders custom user identifiers in the header 1` dir="auto" >
    @user:example.com @@ -62,7 +62,7 @@ exports[` renders custom user identifiers in the header 1`

    ", () => { }); const listItem = screen.getByRole("option", { name: `Open room ${room.name}` }); - expect(listItem).toHaveClass("flex mx_RoomListItemView mx_RoomListItemView_hover"); + expect(listItem).toHaveClass("_flex_4dswl_9 mx_RoomListItemView mx_RoomListItemView_hover"); rerender( should display empty state for filter favourite 1`] = `
    @@ -24,7 +24,7 @@ exports[` should display empty state for filter favourite 1`] = exports[` should display empty state for filter people 1`] = `
    @@ -45,7 +45,7 @@ exports[` should display empty state for filter people 1`] = ` exports[` should display empty state for filter rooms 1`] = `
    @@ -66,7 +66,7 @@ exports[` should display empty state for filter rooms 1`] = ` exports[` should display the empty state for the invite filter 1`] = `
    @@ -91,7 +91,7 @@ exports[` should display the empty state for the invite filter exports[` should display the empty state for the low priority filter 1`] = `
    @@ -116,7 +116,7 @@ exports[` should display the empty state for the low priority f exports[` should display the empty state for the mention filter 1`] = `
    @@ -141,7 +141,7 @@ exports[` should display the empty state for the mention filter exports[` should display the empty state for the unread filter 1`] = `
    @@ -166,7 +166,7 @@ exports[` should display the empty state for the unread filter exports[` should not render the new room button if the user doesn't have the rights to create a room 1`] = `
    @@ -181,7 +181,7 @@ exports[` should not render the new room button if the user doe Get started by messaging someone
    compose menu should not display the compose menu

    compose menu should not display the compose menu

    should render 'room options' button 1`] = `

    should render 'room options' button 1`] = `

    space menu should display the space menu 1`] = `

    space menu should display the space menu 1`] = `

    space menu should not display the space menu 1`]

    space menu should not display the space menu 1`]

    should render the more options menu 1`] = `

    Deleting key storage will remove your cryptographic identity and message keys from the server and turn off the following security features: diff --git a/test/unit-tests/components/views/settings/encryption/__snapshots__/ResetIdentityPanel-test.tsx.snap b/test/unit-tests/components/views/settings/encryption/__snapshots__/ResetIdentityPanel-test.tsx.snap index 1a00f42660..4bc5ca2598 100644 --- a/test/unit-tests/components/views/settings/encryption/__snapshots__/ResetIdentityPanel-test.tsx.snap +++ b/test/unit-tests/components/views/settings/encryption/__snapshots__/ResetIdentityPanel-test.tsx.snap @@ -84,7 +84,7 @@ exports[` should display the 'forgot recovery key' variant

      should display the 'sync failed' variant correct

      should reset the encryption when the continue bu
      should reset the encryption when the continue bu