diff --git a/package.json b/package.json index 84955f422..ca20ced8a 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "license": "Apache-2.0", "scripts": { "prepare": "npx husky install && pnpm -r run prepare", - "postinstall": "patch-package && pnpm -r run postinstall", + "postinstall": "pnpm -r run postinstall", "reinstall": "pnpm store prune && git clean -dfx && find . -type dir -name node_modules | xargs rm -rf && pnpm install && pnpm run postinstall", "prettier": "prettier --config \"./prettier.config.js\" --write \"**/*.{js,jsx,ts,tsx,scss,html,xml,yml,yaml}\"", "format": "pretty-quick --staged --config \"./prettier.config.js\" --pattern \"**/{src,script,typings,test,**}/**/*.{js,jsx,ts,tsx,scss,html,xml,md,json}\"", @@ -29,7 +29,6 @@ "version": "ts-node --project ./scripts/tsconfig.json ./scripts/release/BumpVersion.ts", "validate-staged-widget-versions": "node scripts/validation/validate-versions-staged-files.js", "setup-mobile": "pnpm setup-android && pnpm setup-ios", - "patch-package": "sh ./scripts/patch/patch-package.sh", "build:widgets": "node ./scripts/widget/buildWidgets.js", "test_widgets:maestro:ios": "bash maestro/run_maestro_widget_tests.sh ios", "test_widgets:maestro:android": "bash maestro/run_maestro_widget_tests.sh android", @@ -44,8 +43,7 @@ "@commitlint/cli": "^18.6.1", "@commitlint/config-conventional": "^18.6.3", "@react-native/babel-preset": "0.77.3", - "@testing-library/jest-native": "^5.4.3", - "@testing-library/react-native": "^12.9.0", + "@testing-library/react-native": "^13.3.3", "@types/big.js": "^6.2.2", "@types/concurrently": "^6.3.0", "@types/enzyme": "^3.10.18", @@ -65,7 +63,6 @@ "image-js": "^0.35.6", "lint-staged": "^10.5.4", "mendix-client": "^7.15.8", - "patch-package": "^8.0.0", "pixelmatch": "^5.3.0", "pngjs": "^6.0.0", "pretty-quick": "^3.3.1", @@ -94,6 +91,15 @@ "@types/react-native": "0.73.0", "cheerio": "1.0.0-rc.12", "typescript": "~5.8.0" + }, + "patchedDependencies": { + "@mendix/pluggable-widgets-tools@10.21.1": "patches/@mendix+pluggable-widgets-tools+10.21.1.patch", + "@ptomasroos/react-native-multi-slider@1.0.0": "patches/@ptomasroos+react-native-multi-slider+1.0.0.patch", + "react-native-action-button@2.8.5": "patches/react-native-action-button+2.8.5.patch", + "react-native-camera@3.40.0": "patches/react-native-camera+3.40.0.patch", + "react-native-gesture-handler@2.24.0": "patches/react-native-gesture-handler+2.24.0.patch", + "react-native-slider@0.11.0": "patches/react-native-slider+0.11.0.patch", + "react-native-snap-carousel@3.9.1": "patches/react-native-snap-carousel+3.9.1.patch" } }, "packageManager": "pnpm@10.13.1" diff --git a/packages/pluggableWidgets/app-events-native/src/__tests__/AppEvents.spec.tsx b/packages/pluggableWidgets/app-events-native/src/__tests__/AppEvents.spec.tsx index 1603e3e2f..60ce1ad79 100644 --- a/packages/pluggableWidgets/app-events-native/src/__tests__/AppEvents.spec.tsx +++ b/packages/pluggableWidgets/app-events-native/src/__tests__/AppEvents.spec.tsx @@ -1,8 +1,7 @@ import { actionValue } from "@mendix/piw-utils-internal"; import { createElement } from "react"; import { AppStateStatus } from "react-native"; - -import { mount } from "enzyme"; +import { render } from "@testing-library/react-native"; import { AppEvents, Props } from "../AppEvents"; @@ -54,14 +53,14 @@ describe("AppEvents", () => { }); it("does not render anything", () => { - const wrapper = mount(); - expect(wrapper).toMatchObject({}); + const { toJSON } = render(); + expect(toJSON()).toBeNull(); }); describe("with on load action", () => { it("executes the on load action", () => { const onLoadAction = actionValue(); - mount(); + render(); expect(onLoadAction.execute).toHaveBeenCalledTimes(1); }); }); @@ -69,16 +68,16 @@ describe("AppEvents", () => { describe("with on resume action", () => { it("registers and unregisters an event listener", () => { const onResumeAction = actionValue(); - const wrapper = mount(); + const { unmount } = render(); expect(appStateChangeHandler).toBeDefined(); - wrapper.unmount(); + unmount(); expect(appStateChangeHandler).toBeUndefined(); }); it("executes the on resume action", () => { const onResumeAction = actionValue(); - mount(); + render(); appStateChangeHandler!("background"); appStateChangeHandler!("active"); @@ -87,7 +86,7 @@ describe("AppEvents", () => { it("does not execute the on resume action when the app state hasn't changed", () => { const onResumeAction = actionValue(); - mount(); + render(); appStateChangeHandler!("active"); appStateChangeHandler!("active"); @@ -98,7 +97,7 @@ describe("AppEvents", () => { const dateNowSpy = jest.spyOn(Date, "now").mockReturnValue(0); const onResumeAction = actionValue(); - mount(); + render(); dateNowSpy.mockReturnValue(4000); appStateChangeHandler!("background"); @@ -117,17 +116,17 @@ describe("AppEvents", () => { describe("with on online action", () => { it("registers and unregisters an event listener", async () => { const onOnlineAction = actionValue(); - const wrapper = mount(); + const { unmount } = render(); await flushMicrotasksQueue(); expect(connectionChangeHandler).toBeDefined(); - wrapper.unmount(); + unmount(); expect(connectionChangeHandler).toBeUndefined(); }); it("executes the on online action", async () => { const onOnlineAction = actionValue(); - mount(); + render(); await flushMicrotasksQueue(); connectionChangeHandler!({ isConnected: false }); @@ -139,7 +138,7 @@ describe("AppEvents", () => { const dateNowSpy = jest.spyOn(Date, "now").mockReturnValue(0); const onOnlineAction = actionValue(); - mount(); + render(); await flushMicrotasksQueue(); dateNowSpy.mockReturnValue(4000); @@ -157,7 +156,7 @@ describe("AppEvents", () => { it("does not execute the on online action if the connection state didn't change", async () => { const onOnlineAction = actionValue(); - mount(); + render(); await flushMicrotasksQueue(); connectionChangeHandler!({ isConnected: true }); @@ -178,7 +177,7 @@ describe("AppEvents", () => { it("executes the on timeout action once after the timeout has passed", () => { const onTimeoutAction = actionValue(); - mount(); + render(); expect(onTimeoutAction.execute).toHaveBeenCalledTimes(0); jest.advanceTimersByTime(30000); @@ -189,16 +188,16 @@ describe("AppEvents", () => { it("does not execute the on timeout action after the component has been unmounted", () => { const onTimeoutAction = actionValue(); - const wrapper = mount(); + const { unmount } = render(); jest.advanceTimersByTime(15000); - wrapper.unmount(); + unmount(); jest.advanceTimersByTime(15000); expect(onTimeoutAction.execute).toHaveBeenCalledTimes(0); }); it("executes the interval on timeout action after every interval", () => { const onTimeoutAction = actionValue(); - mount(); + render(); expect(onTimeoutAction.execute).toHaveBeenCalledTimes(0); jest.advanceTimersByTime(30000); @@ -209,20 +208,20 @@ describe("AppEvents", () => { it("does not execute the interval on timeout action after the component has been unmounted", () => { const onTimeoutAction = actionValue(); - const wrapper = mount( + const { unmount } = render( ); jest.advanceTimersByTime(30000); expect(onTimeoutAction.execute).toHaveBeenCalledTimes(1); - wrapper.unmount(); + unmount(); jest.advanceTimersByTime(30000); expect(onTimeoutAction.execute).toHaveBeenCalledTimes(1); }); it("does not execute the interval on timeout action when it is already executing", () => { const onTimeoutAction = actionValue(true, true); - mount(); + render(); jest.advanceTimersByTime(30000); expect(onTimeoutAction.execute).not.toHaveBeenCalled(); diff --git a/packages/pluggableWidgets/feedback-native/package.json b/packages/pluggableWidgets/feedback-native/package.json index de43d2dad..160608e14 100644 --- a/packages/pluggableWidgets/feedback-native/package.json +++ b/packages/pluggableWidgets/feedback-native/package.json @@ -20,14 +20,14 @@ }, "dependencies": { "@mendix/piw-native-utils-internal": "*", - "querystringify": "^2.1.1", - "react-native-dialog": "9.2.2", + "querystringify": "^2.2.0", + "react-native-dialog": "9.3.0", "react-native-view-shot": "4.0.3" }, "devDependencies": { "@mendix/piw-utils-internal": "1.0.0", "@mendix/pluggable-widgets-tools": "*", - "@types/querystringify": "^2.0.0", - "@types/react-native-dialog": "^5.5.0" + "@types/querystringify": "^2.0.2", + "@types/react-native-dialog": "^5.6.3" } } diff --git a/packages/pluggableWidgets/feedback-native/src/Feedback.tsx b/packages/pluggableWidgets/feedback-native/src/Feedback.tsx index 61203474f..21b31cf08 100644 --- a/packages/pluggableWidgets/feedback-native/src/Feedback.tsx +++ b/packages/pluggableWidgets/feedback-native/src/Feedback.tsx @@ -66,6 +66,7 @@ export class Feedback extends Component, State> { componentDidMount() { Dimensions.addEventListener("change", this.updateDeviceHeight); } + componentDidUpdate(_: Readonly>, prevState: Readonly) { if ( ["todo", "inprogress"].includes(prevState.status) && diff --git a/packages/pluggableWidgets/feedback-native/src/__tests__/Feedback.spec.tsx b/packages/pluggableWidgets/feedback-native/src/__tests__/Feedback.spec.tsx index 737fb7cdf..22c4a3a09 100644 --- a/packages/pluggableWidgets/feedback-native/src/__tests__/Feedback.spec.tsx +++ b/packages/pluggableWidgets/feedback-native/src/__tests__/Feedback.spec.tsx @@ -1,5 +1,5 @@ import { FeedbackStyle } from "../ui/styles"; -import { fireEvent, render, waitFor, cleanup } from "@testing-library/react-native"; +import { render, cleanup, userEvent } from "@testing-library/react-native"; import { createElement } from "react"; import { FeedbackProps } from "../../typings/FeedbackProps"; import { Feedback } from "../Feedback"; @@ -52,12 +52,15 @@ describe("Feedback", () => { it("should call the api when sending", async () => { const feedbackMsg = "unittest"; + const user = userEvent.setup(); const component = render(); - fireEvent.press(component.getByTestId("feedback-test$button")); - await waitFor(() => { - fireEvent.changeText(component.getByTestId("feedback-test$input"), feedbackMsg); - }); - fireEvent.press(component.getByTestId("feedback-test$send")); + + await user.press(component.getByTestId("feedback-test$button")); + + await user.type(component.getByTestId("feedback-test$input"), feedbackMsg); + + await user.press(component.getByTestId("feedback-test$send")); + expect(fetch).toHaveBeenCalledWith( "https://feedback-api.mendix.com/rest/v3/feedbackapi/projects/sprintr-app-id/issues", { @@ -68,5 +71,5 @@ describe("Feedback", () => { referrer: "no-referrer" } ); - }); + }, 8000); // increased timeout due to slow test execution on Github }); diff --git a/packages/pluggableWidgets/image-native/src/components/__tests__/Image.spec.tsx b/packages/pluggableWidgets/image-native/src/components/__tests__/Image.spec.tsx index 6c7894a18..16d7d42b5 100644 --- a/packages/pluggableWidgets/image-native/src/components/__tests__/Image.spec.tsx +++ b/packages/pluggableWidgets/image-native/src/components/__tests__/Image.spec.tsx @@ -1,6 +1,6 @@ import { createElement } from "react"; import { Text } from "react-native"; -import { fireEvent, render, waitFor } from "@testing-library/react-native"; +import { fireEvent, render, act } from "@testing-library/react-native"; import { NativeIcon, NativeImage } from "mendix"; import { Style } from "@mendix/piw-native-utils-internal"; import { Image } from "../../Image"; @@ -10,6 +10,10 @@ import { parse, SvgAst } from "react-native-svg"; import svgXml from "./svgXml"; import { GlyphIcon } from "../fonts/font"; +function flushMicrotasksQueue(): Promise { + return act(() => new Promise(resolve => setTimeout(resolve, 0))); +} + jest.mock("react-native-svg/lib/commonjs/xml", () => { const original = jest.requireActual("react-native-svg/lib/commonjs/xml"); return { @@ -69,7 +73,9 @@ describe("Widget", () => { describe("Static Image", () => { it("renders the structure", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -77,7 +83,9 @@ describe("Widget", () => { it("renders the structure with custom height", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -85,7 +93,9 @@ describe("Widget", () => { it("renders the structure with custom width", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -93,7 +103,9 @@ describe("Widget", () => { it("renders the structure inside a modal", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent.press(image.getByTestId(`${imageProps.name}$ImageSmallPressable`)); fireEvent(image.getByTestId(`${imageProps.name}$ImageEnlargedPressable`), "layout", onLayoutEventData); @@ -102,7 +114,9 @@ describe("Widget", () => { it("triggers the onclick action", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent.press(image.getByTestId(`${imageProps.name}$ImageSmallPressable`)); expect(imageProps.onClick?.execute).toHaveBeenCalledTimes(1); @@ -114,7 +128,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -126,7 +142,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -138,7 +156,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -152,7 +172,9 @@ describe("Widget", () => { it("renders the structure", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -160,7 +182,9 @@ describe("Widget", () => { it("renders the structure with custom height", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -168,7 +192,9 @@ describe("Widget", () => { it("renders the structure with custom width", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -176,7 +202,9 @@ describe("Widget", () => { it("renders the structure inside a modal", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent.press(image.getByTestId(`${imageProps.name}$ImageSmallPressable`)); fireEvent(image.getByTestId(`${imageProps.name}$ImageEnlargedPressable`), "layout", onLayoutEventData); @@ -185,7 +213,9 @@ describe("Widget", () => { it("triggers the onclick action", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent.press(image.getByTestId(`${imageProps.name}$ImageSmallPressable`)); expect(imageProps.onClick?.execute).toHaveBeenCalledTimes(1); @@ -197,7 +227,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -209,7 +241,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -221,7 +255,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -238,7 +274,9 @@ describe("Widget", () => { it("renders the structure", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -246,7 +284,9 @@ describe("Widget", () => { it("renders the structure with custom height", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -254,7 +294,9 @@ describe("Widget", () => { it("renders the structure with custom width", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -262,7 +304,9 @@ describe("Widget", () => { it("renders the structure inside a modal", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent.press(image.getByTestId(`${imageProps.name}$ImageSmallPressable`)); fireEvent(image.getByTestId(`${imageProps.name}$ImageEnlargedPressable`), "layout", onLayoutEventData); @@ -271,7 +315,9 @@ describe("Widget", () => { it("triggers the onclick action", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent.press(image.getByTestId(`${imageProps.name}$Image`)); expect(imageProps.onClick?.execute).toHaveBeenCalledTimes(1); @@ -283,7 +329,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -295,7 +343,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -307,7 +357,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -321,7 +373,9 @@ describe("Widget", () => { it("renders the structure", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$SvgUriTemporary`), "layout", onLayoutEventData); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); @@ -330,7 +384,9 @@ describe("Widget", () => { it("renders the structure with custom height", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$SvgUriTemporary`), "layout", onLayoutEventData); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); @@ -339,7 +395,9 @@ describe("Widget", () => { it("renders the structure with custom width", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$SvgUriTemporary`), "layout", onLayoutEventData); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); @@ -348,7 +406,9 @@ describe("Widget", () => { it("renders the structure inside a modal", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$SvgUriTemporary`), "layout", onLayoutEventData); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); @@ -360,7 +420,9 @@ describe("Widget", () => { it("triggers the onclick action", async () => { const ImageComponent = ; - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$SvgUriTemporary`), "layout", onLayoutEventData); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); @@ -374,7 +436,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -386,7 +450,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -398,7 +464,9 @@ describe("Widget", () => { Background Image ); - const image = await waitFor(() => render(ImageComponent)); + const image = render(ImageComponent); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageBackgroundView`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); @@ -413,33 +481,44 @@ describe("Widget", () => { }); it("renders the structure with an icon and default color", async () => { - const image = await waitFor(() => render()); + const image = render(); + + await flushMicrotasksQueue(); + expect(image.toJSON()).toMatchSnapshot(); }); it("uses color if set", async () => { const color = "red"; - const image = await waitFor(() => render()); + const image = render(); + + await flushMicrotasksQueue(); expect(image.getByTestId(`${imageProps.name}$Icon`).findByType(GlyphIcon).props.color).toEqual(color); }); it("prefers size from styles", async () => { const size = 12; - const image = await waitFor(() => render()); + const image = render(); + + await flushMicrotasksQueue(); expect(image.getByTestId(`${imageProps.name}$Icon`).findByType(GlyphIcon).props.size).toEqual(size); }); it("prefers size from iconSize prop", async () => { const iconSize = 18; - const image = await waitFor(() => render()); + const image = render(); + + await flushMicrotasksQueue(); expect(image.getByTestId(`${imageProps.name}$Icon`).findByType(GlyphIcon).props.size).toEqual(iconSize); }); it("triggers the onclick action", async () => { - const image = await waitFor(() => render()); + const image = render(); + + await flushMicrotasksQueue(); fireEvent.press(image.getByTestId(`${imageProps.name}$ImageSmallPressable`)); expect(imageProps.onClick?.execute).toHaveBeenCalledTimes(1); @@ -456,7 +535,10 @@ describe("Widget", () => { }); it("renders the structure", async () => { - const image = await waitFor(() => render()); + const image = render(); + + await flushMicrotasksQueue(); + fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); }); @@ -485,13 +567,18 @@ describe("Widget", () => { } } ] as Style[]; - const image = await waitFor(() => render()); + const image = render(); + + await flushMicrotasksQueue(); + fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); expect(image.toJSON()).toMatchSnapshot(); }); it("renders the structure inside a modal", async () => { - const image = await waitFor(() => render()); + const image = render(); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); fireEvent.press(image.getByTestId(`${imageProps.name}$ImageSmallPressable`)); @@ -500,7 +587,9 @@ describe("Widget", () => { }); it("triggers the onclick action", async () => { - const image = await waitFor(() => render()); + const image = render(); + + await flushMicrotasksQueue(); fireEvent(image.getByTestId(`${imageProps.name}$ImageSmallPressable`), "layout", onLayoutEventData); fireEvent.press(image.getByTestId(`${imageProps.name}$ImageSmallPressable`)); diff --git a/packages/pluggableWidgets/maps-native/package.json b/packages/pluggableWidgets/maps-native/package.json index b4a776b26..20d9d1e72 100644 --- a/packages/pluggableWidgets/maps-native/package.json +++ b/packages/pluggableWidgets/maps-native/package.json @@ -21,7 +21,7 @@ "dependencies": { "@mendix/piw-native-utils-internal": "*", "@mendix/piw-utils-internal": "*", - "prop-types": "^15.7.2", + "prop-types": "^15.8.1", "react-native-geocoder": "0.5.0", "react-native-maps": "1.14.0" }, diff --git a/packages/pluggableWidgets/maps-native/src/__tests__/Maps.spec.tsx b/packages/pluggableWidgets/maps-native/src/__tests__/Maps.spec.tsx index bd30558e1..b9df54615 100644 --- a/packages/pluggableWidgets/maps-native/src/__tests__/Maps.spec.tsx +++ b/packages/pluggableWidgets/maps-native/src/__tests__/Maps.spec.tsx @@ -1,14 +1,49 @@ -/** - * @jest-environment jsdom - */ import { Maps, Props } from "../Maps"; -import { mount } from "enzyme"; +import { render, act } from "@testing-library/react-native"; import { dynamicValue } from "@mendix/piw-utils-internal"; import { Big } from "big.js"; import { createElement } from "react"; -import { waitFor } from "@testing-library/react-native"; -describe("", () => { +// Mock react-native-maps +// Without this, the Maps component renders only an empty AIRMap component without markers +jest.mock("react-native-maps", () => { + const React = require("react"); + const { View } = require("react-native"); + + const MapView = React.forwardRef((props: any, ref: any) => { + // Simulate onMapReady being called after component mounts + React.useEffect(() => { + if (props.onMapReady) { + setTimeout(() => props.onMapReady(), 0); + } + }, [props.onMapReady]); + + // Add ref methods that the Maps component expects + React.useImperativeHandle(ref, () => ({ + fitToCoordinates: jest.fn(), + animateCamera: jest.fn(), + setCamera: jest.fn(), + getCamera: jest.fn(() => + Promise.resolve({ + center: { latitude: 0, longitude: 0 }, + zoom: 10, + altitude: 1000 + }) + ) + })); + + return ; + }); + + return { + __esModule: true, + default: MapView, + Marker: (props: any) => , + Callout: (props: any) => + }; +}); + +describe("", () => { let defaultProps: Props; beforeEach(() => { @@ -46,11 +81,13 @@ describe("", () => { } ]; - const wrapper = mount(); + const component = render(); - await waitFor(() => { - wrapper.update(); - expect(wrapper).toMatchSnapshot(); + // Wait for async operations to complete within + await act(async () => { + await new Promise(resolve => setTimeout(resolve, 0)); }); + + expect(component.toJSON()).toMatchSnapshot(); }); }); diff --git a/packages/pluggableWidgets/maps-native/src/__tests__/__snapshots__/Maps.spec.tsx.snap b/packages/pluggableWidgets/maps-native/src/__tests__/__snapshots__/Maps.spec.tsx.snap index 60fac1efd..9b3dc699a 100644 --- a/packages/pluggableWidgets/maps-native/src/__tests__/__snapshots__/Maps.spec.tsx.snap +++ b/packages/pluggableWidgets/maps-native/src/__tests__/__snapshots__/Maps.spec.tsx.snap @@ -1,105 +1,94 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`renders 1`] = ` - renders 1`] = ` + + + - - - - - - + } + onPress={[Function]} + opacity={1} + pinColor="red" + > + - + + + + `; diff --git a/packages/pluggableWidgets/switch-native/src/__tests__/Switch.spec.tsx b/packages/pluggableWidgets/switch-native/src/__tests__/Switch.spec.tsx index 4c38f64ec..aa00af86c 100644 --- a/packages/pluggableWidgets/switch-native/src/__tests__/Switch.spec.tsx +++ b/packages/pluggableWidgets/switch-native/src/__tests__/Switch.spec.tsx @@ -1,15 +1,9 @@ -/** - * @jest-environment jsdom - */ import { actionValue, EditableValueBuilder, dynamicValue } from "@mendix/piw-utils-internal"; -import { mount, ReactWrapper } from "enzyme"; +import { render, fireEvent, screen } from "@testing-library/react-native"; import { createElement } from "react"; - import { Switch, Props } from "../Switch"; import { defaultSwitchStyle } from "../ui/Styles"; -declare type RWrapper = ReactWrapper, React.Component<{}, {}, any>>; - const name = "Switch1"; const createProps = (props?: Partial): Props => { const style = props?.style ?? {}; @@ -27,29 +21,20 @@ const createProps = (props?: Partial): Props => { }; describe("Switch", () => { - const switchIndex = 0; let Platform: any; - let switchWrapper: RWrapper; - - function getSwitchComponent() { - return switchWrapper.find({ testID: "Switch1" }).at(switchIndex); - } beforeEach(() => { Platform = require("react-native").Platform; }); - afterEach(() => { - switchWrapper.unmount(); - }); - it("with editable value renders enabled", () => { const props = createProps({ booleanAttribute: new EditableValueBuilder().withValue(false).build() }); - switchWrapper = mount(); - expect(getSwitchComponent().prop("disabled")).toBe(false); + render(); + const switchElement = screen.getByTestId("Switch1"); + expect(switchElement.props.enabled).toBe(true); }); it("with value in readOnly state renders disabled", () => { @@ -57,8 +42,9 @@ describe("Switch", () => { booleanAttribute: new EditableValueBuilder().withValue(false).isReadOnly().build() }); - switchWrapper = mount(); - expect(getSwitchComponent().prop("disabled")).toBe(true); + render(); + const switchElement = screen.getByTestId("Switch1"); + expect(switchElement.props.enabled).toBe(false); }); it("with showLabel true renders label", () => { @@ -66,8 +52,8 @@ describe("Switch", () => { showLabel: true }); - switchWrapper = mount(); - expect(switchWrapper.exists({ testID: `${name}$label` })).toEqual(true); + render(); + expect(screen.getByTestId(`${name}$label`)).toBeTruthy(); }); it("with showLabel true renders label horizontally", () => { @@ -75,13 +61,9 @@ describe("Switch", () => { showLabel: true }); - switchWrapper = mount(); - expect( - switchWrapper - .find({ testID: `${name}$wrapper` }) - .at(1) - .prop("style") - ).toEqual(expect.arrayContaining([{ flexDirection: "row", alignItems: "center" }])); + render(); + const wrapper = screen.getByTestId(`${name}$wrapper`); + expect(wrapper.props.style).toEqual(expect.arrayContaining([{ flexDirection: "row", alignItems: "center" }])); }); it("with showLabel true and labelOrientation vertical, renders vertical", () => { @@ -90,14 +72,11 @@ describe("Switch", () => { labelOrientation: "vertical" }); - switchWrapper = mount(); - - expect( - switchWrapper - .find({ testID: `${name}$wrapper` }) - .at(1) - .prop("style") - ).toEqual(expect.not.arrayContaining([{ flexDirection: "row", alignItems: "center" }])); + render(); + const wrapper = screen.getByTestId(`${name}$wrapper`); + expect(wrapper.props.style).toEqual( + expect.not.arrayContaining([{ flexDirection: "row", alignItems: "center" }]) + ); }); it("with error renders validation message", () => { @@ -105,32 +84,18 @@ describe("Switch", () => { booleanAttribute: new EditableValueBuilder().withValidation("error").withValue(false).build() }); - switchWrapper = mount(); - expect(switchWrapper.prop("booleanAttribute").validation).toEqual("error"); - - expect(switchWrapper.exists({ testID: `${name}$alert` })).toEqual(true); - expect( - switchWrapper - .find({ testID: `${name}$alert` }) - .at(1) - .text() - ).toEqual("error"); - }); - - it("with iOS device renders correct property", () => { - Platform.OS = "ios"; - const props = createProps(); - - switchWrapper = mount(); - expect(getSwitchComponent().props()).toEqual(expect.objectContaining({ ios_backgroundColor: undefined })); + render(); + expect(props.booleanAttribute.validation).toEqual("error"); + expect(screen.getByTestId(`${name}$alert`)).toBeTruthy(); + expect(screen.getByTestId(`${name}$alert`).props.children).toEqual("error"); }); it("with android device renders property", () => { Platform.OS = "android"; const props = createProps(); - switchWrapper = mount(); - expect(getSwitchComponent().prop("ios_backgroundColor")).toBeUndefined(); + render(); + expect(screen.getByTestId("Switch1").props.ios_backgroundColor).toBeUndefined(); }); it("renders correct thumbColor when value is true", () => { @@ -139,8 +104,8 @@ describe("Switch", () => { style: [{ ...defaultSwitchStyle, input: { thumbColorOn: "red" } }] }); - switchWrapper = mount(); - expect(getSwitchComponent().prop("thumbColor")).toEqual("red"); + render(); + expect(screen.getByTestId("Switch1").props.thumbTintColor).toEqual("red"); }); it("renders correct thumbColor when value is false", () => { @@ -149,41 +114,45 @@ describe("Switch", () => { style: [{ ...defaultSwitchStyle, input: { thumbColorOff: "blue" } }] }); - switchWrapper = mount(); - expect(getSwitchComponent().prop("thumbColor")).toEqual("blue"); + render(); + expect(screen.getByTestId("Switch1").props.thumbTintColor).toEqual("blue"); }); describe("interactions", () => { it("invokes onValueChange handler", () => { + const onChange = actionValue(); + const booleanAttribute = new EditableValueBuilder().withValue(false).build(); const props = createProps({ - booleanAttribute: new EditableValueBuilder().withValue(false).build(), - onChange: actionValue() + booleanAttribute, + onChange }); - switchWrapper = mount(); + render(); - expect(switchWrapper.prop("booleanAttribute").value).toBe(false); - expect(switchWrapper.prop("onChange").execute).not.toHaveBeenCalled(); + expect(booleanAttribute.value).toBe(false); + expect(onChange.execute).not.toHaveBeenCalled(); - getSwitchComponent().simulate("change"); + fireEvent(screen.getByTestId("Switch1"), "valueChange", true); - expect(switchWrapper.prop("booleanAttribute").value).toBe(true); - expect(switchWrapper.prop("onChange").execute).toHaveBeenCalled(); + expect(booleanAttribute.value).toBe(true); + expect(onChange.execute).toHaveBeenCalled(); }); it("when disabled, do not invoke onValueChange handler", () => { + const onChange = actionValue(); + const booleanAttribute = new EditableValueBuilder().withValue(false).isReadOnly().build(); const props = createProps({ - booleanAttribute: new EditableValueBuilder().withValue(false).isReadOnly().build(), - onChange: actionValue() + booleanAttribute, + onChange }); - switchWrapper = mount(); + render(); - expect(switchWrapper.prop("booleanAttribute").value).toBe(false); - expect(switchWrapper.prop("onChange").execute).not.toHaveBeenCalled(); + expect(booleanAttribute.value).toBe(false); + expect(onChange.execute).not.toHaveBeenCalled(); - getSwitchComponent().simulate("change"); + fireEvent(screen.getByTestId("Switch1"), "valueChange", true); - expect(switchWrapper.prop("booleanAttribute").value).toBe(false); - expect(switchWrapper.prop("onChange").execute).not.toHaveBeenCalled(); + expect(booleanAttribute.value).toBe(false); + expect(onChange.execute).not.toHaveBeenCalled(); }); }); }); diff --git a/patches/@mendix+pluggable-widgets-tools+10.21.1+001+core.patch b/patches/@mendix+pluggable-widgets-tools+10.21.1+001+core.patch deleted file mode 100644 index c1eaf0e4c..000000000 --- a/patches/@mendix+pluggable-widgets-tools+10.21.1+001+core.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/node_modules/@mendix/pluggable-widgets-tools/bin/mx-scripts.js b/node_modules/@mendix/pluggable-widgets-tools/bin/mx-scripts.js -index 673e0b2..055f87d 100755 ---- a/node_modules/@mendix/pluggable-widgets-tools/bin/mx-scripts.js -+++ b/node_modules/@mendix/pluggable-widgets-tools/bin/mx-scripts.js -@@ -107,7 +107,7 @@ function getRealCommand(cmd, toolsRoot) { - } - - function findNodeModulesBin() { -- let parentDir = join(__dirname, ".."); -+ let parentDir = join(__dirname, "../.."); - const bins = []; - while (parse(parentDir).root !== parentDir) { - const candidate = join(parentDir, "node_modules/.bin"); -diff --git a/node_modules/@mendix/pluggable-widgets-tools/test-config/transform-native.js b/node_modules/@mendix/pluggable-widgets-tools/test-config/transform-native.js -index eed8109..4b422fa 100644 ---- a/node_modules/@mendix/pluggable-widgets-tools/test-config/transform-native.js -+++ b/node_modules/@mendix/pluggable-widgets-tools/test-config/transform-native.js -@@ -1,3 +1,3 @@ - module.exports = require("babel-jest").createTransformer({ -- presets: ["module:metro-react-native-babel-preset"] -+ presets: ["module:@react-native/babel-preset"] - }); \ No newline at end of file diff --git a/patches/@mendix+pluggable-widgets-tools+10.21.1+002+rollup-file-copy.patch b/patches/@mendix+pluggable-widgets-tools+10.21.1+002+rollup-file-copy.patch deleted file mode 100644 index f97b9028c..000000000 --- a/patches/@mendix+pluggable-widgets-tools+10.21.1+002+rollup-file-copy.patch +++ /dev/null @@ -1,66 +0,0 @@ -diff --git a/node_modules/@mendix/pluggable-widgets-tools/configs/rollup-plugin-collect-dependencies.mjs b/node_modules/@mendix/pluggable-widgets-tools/configs/rollup-plugin-collect-dependencies.mjs -index 2d0b5bfac7f1a1482bc1a222cba3e52b0339cc79..a3f0e368d76d294a5f7cd85886fe5ce0e72b9619 100644 ---- a/node_modules/@mendix/pluggable-widgets-tools/configs/rollup-plugin-collect-dependencies.mjs -+++ b/node_modules/@mendix/pluggable-widgets-tools/configs/rollup-plugin-collect-dependencies.mjs -@@ -2,9 +2,8 @@ - - import fg from "fast-glob"; - import fsExtra from "fs-extra"; --import { existsSync, readFileSync, writeFileSync } from "fs"; -+import { existsSync, readFileSync, writeFileSync, cpSync, lstatSync, realpathSync } from "fs"; - import { dirname, join, parse } from "path"; --import copy from "recursive-copy"; - import { promisify } from "util"; - import resolve from "resolve"; - import _ from "lodash"; -@@ -171,15 +170,41 @@ async function copyJsModule(moduleSourcePath, to) { - if (existsSync(to)) { - return; - } -- return promisify(copy)(moduleSourcePath, to, { -- filter: [ -- "**/*.*", -- LICENSE_GLOB, -- "!**/{android,ios,windows,mac,jest,github,gradle,__*__,docs,jest,example*}/**/*", -- "!**/*.{config,setup}.*", -- "!**/*.{podspec,flow}" -- ] -- }); -+ -+ try { -+ // Check if the source is a symlink and resolve it to the actual path -+ let actualSourcePath = moduleSourcePath; -+ if (lstatSync(moduleSourcePath).isSymbolicLink()) { -+ actualSourcePath = realpathSync(moduleSourcePath); -+ } -+ -+ cpSync(actualSourcePath, to, { -+ recursive: true, -+ dereference: true, // Follow symlinks and copy the actual files -+ filter: (src, dest) => { -+ const relativePath = src.replace(actualSourcePath, '').replace(/^[\\/]/, ''); -+ -+ // Skip certain directories -+ if (relativePath.match(/[\\/](android|ios|windows|mac|jest|github|gradle|__.*__|docs|example.*)[\\/]/)) { -+ return false; -+ } -+ -+ // Skip certain file types -+ if (relativePath.match(/\.(config|setup)\.|\.podspec$|\.flow$/)) { -+ return false; -+ } -+ -+ // Include LICENSE files -+ if (relativePath.match(/license/i)) { -+ return true; -+ } -+ -+ return true; -+ } -+ }); -+ } catch (error) { -+ throw error; -+ } - } - - function getModuleName(modulePath) { \ No newline at end of file diff --git a/patches/@mendix+pluggable-widgets-tools+10.21.1.patch b/patches/@mendix+pluggable-widgets-tools+10.21.1.patch new file mode 100644 index 000000000..1dd894ae0 --- /dev/null +++ b/patches/@mendix+pluggable-widgets-tools+10.21.1.patch @@ -0,0 +1,138 @@ +diff --git a/bin/mx-scripts.js b/bin/mx-scripts.js +index 673e0b2ebc148755e575cc77c3fc493ba7b5cfde..055f87d9644b2e3d2e3bd74bf416a593234447b3 100755 +--- a/bin/mx-scripts.js ++++ b/bin/mx-scripts.js +@@ -107,7 +107,7 @@ function getRealCommand(cmd, toolsRoot) { + } + + function findNodeModulesBin() { +- let parentDir = join(__dirname, ".."); ++ let parentDir = join(__dirname, "../.."); + const bins = []; + while (parse(parentDir).root !== parentDir) { + const candidate = join(parentDir, "node_modules/.bin"); +diff --git a/configs/rollup-plugin-collect-dependencies.mjs b/configs/rollup-plugin-collect-dependencies.mjs +index 2d0b5bfac7f1a1482bc1a222cba3e52b0339cc79..a3f0e368d76d294a5f7cd85886fe5ce0e72b9619 100644 +--- a/configs/rollup-plugin-collect-dependencies.mjs ++++ b/configs/rollup-plugin-collect-dependencies.mjs +@@ -2,9 +2,8 @@ + + import fg from "fast-glob"; + import fsExtra from "fs-extra"; +-import { existsSync, readFileSync, writeFileSync } from "fs"; ++import { existsSync, readFileSync, writeFileSync, cpSync, lstatSync, realpathSync } from "fs"; + import { dirname, join, parse } from "path"; +-import copy from "recursive-copy"; + import { promisify } from "util"; + import resolve from "resolve"; + import _ from "lodash"; +@@ -171,15 +170,41 @@ async function copyJsModule(moduleSourcePath, to) { + if (existsSync(to)) { + return; + } +- return promisify(copy)(moduleSourcePath, to, { +- filter: [ +- "**/*.*", +- LICENSE_GLOB, +- "!**/{android,ios,windows,mac,jest,github,gradle,__*__,docs,jest,example*}/**/*", +- "!**/*.{config,setup}.*", +- "!**/*.{podspec,flow}" +- ] +- }); ++ ++ try { ++ // Check if the source is a symlink and resolve it to the actual path ++ let actualSourcePath = moduleSourcePath; ++ if (lstatSync(moduleSourcePath).isSymbolicLink()) { ++ actualSourcePath = realpathSync(moduleSourcePath); ++ } ++ ++ cpSync(actualSourcePath, to, { ++ recursive: true, ++ dereference: true, // Follow symlinks and copy the actual files ++ filter: (src, dest) => { ++ const relativePath = src.replace(actualSourcePath, '').replace(/^[\\/]/, ''); ++ ++ // Skip certain directories ++ if (relativePath.match(/[\\/](android|ios|windows|mac|jest|github|gradle|__.*__|docs|example.*)[\\/]/)) { ++ return false; ++ } ++ ++ // Skip certain file types ++ if (relativePath.match(/\.(config|setup)\.|\.podspec$|\.flow$/)) { ++ return false; ++ } ++ ++ // Include LICENSE files ++ if (relativePath.match(/license/i)) { ++ return true; ++ } ++ ++ return true; ++ } ++ }); ++ } catch (error) { ++ throw error; ++ } + } + + function getModuleName(modulePath) { +diff --git a/test-config/jest.native.config.js b/test-config/jest.native.config.js +index 72e3c51473b7566ca9d8b224b35334099ce615db..7e0949aa5d50d288d848117a804fd691422aefde 100644 +--- a/test-config/jest.native.config.js ++++ b/test-config/jest.native.config.js +@@ -3,7 +3,7 @@ const { join } = require("path"); + const projectDir = process.cwd(); + + module.exports = { +- preset: hasDependency("@testing-library/react-native") ? "@testing-library/react-native" : "react-native", ++ preset: "react-native", + testRunner: "jest-jasmine2", + clearMocks: true, + haste: { +@@ -14,9 +14,7 @@ module.exports = { + setupFilesAfterEnv: [ + join(__dirname, "test-index-native.js"), + ...(hasDependency("react-native-gesture-handler") ? ["react-native-gesture-handler/jestSetup.js"] : []), +- ...(hasDependency("@testing-library/jest-native") ? ["@testing-library/jest-native/extend-expect"] : []) + ], +- snapshotSerializers: ["enzyme-to-json/serializer"], + testMatch: ["/**/*.spec.{js,jsx,ts,tsx}"], + transformIgnorePatterns: ["node_modules/(?!(.*react-native.*|victory-)/)"], + transform: { +@@ -35,7 +33,6 @@ module.exports = { + "react-hot-loader/root": join(__dirname, "__mocks__/hot") + }, + moduleDirectories: ["node_modules", join(projectDir, "node_modules")], +- collectCoverage: !process.env.CI, + coverageDirectory: join(projectDir, "dist/coverage"), + testEnvironment: "jsdom" + }; +diff --git a/test-config/test-index-native.js b/test-config/test-index-native.js +index 8c4d3dd8475ec4ecceb3f36d74edbe9b7313599e..eec5172291384fc5606736b59c4aa7d4f75f9d34 100644 +--- a/test-config/test-index-native.js ++++ b/test-config/test-index-native.js +@@ -1,6 +1,4 @@ + const { TextEncoder, TextDecoder } = require("util"); +-const { configure: configureEnzyme } = require("enzyme"); +-const Adapter = require("@cfaester/enzyme-adapter-react-18").default; + const enableHooks = require("jest-react-hooks-shallow").default; + + Object.defineProperties(global, { +@@ -12,7 +10,6 @@ Object.defineProperties(global, { + } + }); + +-configureEnzyme({ adapter: new Adapter() }); + enableHooks(jest); + global.setImmediate = global.setTimeout; + +diff --git a/test-config/transform-native.js b/test-config/transform-native.js +index eed8109dada3788bb1195573b9713eb1f00dd8f9..4b422fac0e21d2b1f44a763d0b21b0280bf1cacb 100644 +--- a/test-config/transform-native.js ++++ b/test-config/transform-native.js +@@ -1,3 +1,3 @@ + module.exports = require("babel-jest").createTransformer({ +- presets: ["module:metro-react-native-babel-preset"] ++ presets: ["module:@react-native/babel-preset"] + }); diff --git a/patches/@ptomasroos+react-native-multi-slider+1.0.0.patch b/patches/@ptomasroos+react-native-multi-slider+1.0.0.patch index 5490c5c65..810938754 100644 --- a/patches/@ptomasroos+react-native-multi-slider+1.0.0.patch +++ b/patches/@ptomasroos+react-native-multi-slider+1.0.0.patch @@ -1,7 +1,7 @@ -diff --git a/node_modules/@ptomasroos/react-native-multi-slider/DefaultMarker.js b/node_modules/@ptomasroos/react-native-multi-slider/DefaultMarker.js +diff --git a/DefaultMarker.js b/DefaultMarker.js index 618d916..bb30f07 100644 ---- a/node_modules/@ptomasroos/react-native-multi-slider/DefaultMarker.js -+++ b/node_modules/@ptomasroos/react-native-multi-slider/DefaultMarker.js +--- a/DefaultMarker.js ++++ b/DefaultMarker.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { View, StyleSheet, Platform, TouchableHighlight } from 'react-native'; @@ -11,10 +11,10 @@ index 618d916..bb30f07 100644 export default class DefaultMarker extends React.Component { static propTypes = { -diff --git a/node_modules/@ptomasroos/react-native-multi-slider/MultiSlider.js b/node_modules/@ptomasroos/react-native-multi-slider/MultiSlider.js +diff --git a/MultiSlider.js b/MultiSlider.js index 3a5e417..e48b97b 100755 ---- a/node_modules/@ptomasroos/react-native-multi-slider/MultiSlider.js -+++ b/node_modules/@ptomasroos/react-native-multi-slider/MultiSlider.js +--- a/MultiSlider.js ++++ b/MultiSlider.js @@ -12,8 +12,7 @@ import { import DefaultMarker from './DefaultMarker'; diff --git a/patches/react-native-action-button+2.8.5.patch b/patches/react-native-action-button+2.8.5.patch index 5633a00ca..79247e6df 100644 --- a/patches/react-native-action-button+2.8.5.patch +++ b/patches/react-native-action-button+2.8.5.patch @@ -1,7 +1,7 @@ -diff --git a/node_modules/react-native-action-button/ActionButton.js b/node_modules/react-native-action-button/ActionButton.js +diff --git a/ActionButton.js b/ActionButton.js index b8306c2efb2460d4aa110e83d2e5410588f280de..890003d30fa5400f4778f5bb2dffa10e70fbe3ee 100644 ---- a/node_modules/react-native-action-button/ActionButton.js -+++ b/node_modules/react-native-action-button/ActionButton.js +--- a/ActionButton.js ++++ b/ActionButton.js @@ -16,6 +16,7 @@ import { touchableBackground, DEFAULT_ACTIVE_OPACITY diff --git a/patches/react-native-camera+3.40.0.patch b/patches/react-native-camera+3.40.0.patch index 02e01b3bb..10b8408c8 100644 --- a/patches/react-native-camera+3.40.0.patch +++ b/patches/react-native-camera+3.40.0.patch @@ -1,7 +1,7 @@ -diff --git a/node_modules/react-native-camera/src/RNCamera.js b/node_modules/react-native-camera/src/RNCamera.js +diff --git a/src/RNCamera.js b/src/RNCamera.js index 0d9b516..e0eeeec 100644 ---- a/node_modules/react-native-camera/src/RNCamera.js -+++ b/node_modules/react-native-camera/src/RNCamera.js +--- a/src/RNCamera.js ++++ b/src/RNCamera.js @@ -5,7 +5,6 @@ import { findNodeHandle, Platform, diff --git a/patches/react-native-gesture-handler+2.24.0.patch b/patches/react-native-gesture-handler+2.24.0.patch index f46202e16..8eb655fe1 100644 --- a/patches/react-native-gesture-handler+2.24.0.patch +++ b/patches/react-native-gesture-handler+2.24.0.patch @@ -1,7 +1,7 @@ -diff --git a/node_modules/react-native-gesture-handler/lib/typescript/components/Swipeable.d.ts b/node_modules/react-native-gesture-handler/lib/typescript/components/Swipeable.d.ts +diff --git a/lib/typescript/components/Swipeable.d.ts b/lib/typescript/components/Swipeable.d.ts index 0cbe84f..ed2a5a6 100644 ---- a/node_modules/react-native-gesture-handler/lib/typescript/components/Swipeable.d.ts -+++ b/node_modules/react-native-gesture-handler/lib/typescript/components/Swipeable.d.ts +--- a/lib/typescript/components/Swipeable.d.ts ++++ b/lib/typescript/components/Swipeable.d.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Component } from 'react'; diff --git a/patches/react-native-slider+0.11.0.patch b/patches/react-native-slider+0.11.0.patch index d62bbc373..43b7cb7b0 100644 --- a/patches/react-native-slider+0.11.0.patch +++ b/patches/react-native-slider+0.11.0.patch @@ -1,7 +1,7 @@ -diff --git a/node_modules/react-native-slider/lib/Slider.js b/node_modules/react-native-slider/lib/Slider.js +diff --git a/lib/Slider.js b/lib/Slider.js index c640410..5b56a09 100644 ---- a/node_modules/react-native-slider/lib/Slider.js -+++ b/node_modules/react-native-slider/lib/Slider.js +--- a/lib/Slider.js ++++ b/lib/Slider.js @@ -5,6 +5,7 @@ var _react=require("react");var _react2=_interopRequireDefault(_react); @@ -28,10 +28,10 @@ index c640410..5b56a09 100644 * Set this to true to visually see the thumb touch rect in green. */debugTouchArea:_propTypes2.default.bool, /** * Set to true to animate values with default 'timing' animation type -diff --git a/node_modules/react-native-slider/src/Slider.js b/node_modules/react-native-slider/src/Slider.js +diff --git a/src/Slider.js b/src/Slider.js index 37deee5..b8a21a3 100644 ---- a/node_modules/react-native-slider/src/Slider.js -+++ b/node_modules/react-native-slider/src/Slider.js +--- a/src/Slider.js ++++ b/src/Slider.js @@ -11,9 +11,10 @@ import { PanResponder, View, diff --git a/patches/react-native-snap-carousel+3.9.1.patch b/patches/react-native-snap-carousel+3.9.1.patch index 749846ceb..4e523aece 100644 --- a/patches/react-native-snap-carousel+3.9.1.patch +++ b/patches/react-native-snap-carousel+3.9.1.patch @@ -1,7 +1,7 @@ -diff --git a/node_modules/react-native-snap-carousel/src/carousel/Carousel.js b/node_modules/react-native-snap-carousel/src/carousel/Carousel.js +diff --git a/src/carousel/Carousel.js b/src/carousel/Carousel.js index dae71a3..4dd36a2 100644 ---- a/node_modules/react-native-snap-carousel/src/carousel/Carousel.js -+++ b/node_modules/react-native-snap-carousel/src/carousel/Carousel.js +--- a/src/carousel/Carousel.js ++++ b/src/carousel/Carousel.js @@ -1,5 +1,6 @@ import React, { Component } from 'react'; -import { Animated, Easing, FlatList, I18nManager, Platform, ScrollView, View, ViewPropTypes } from 'react-native'; @@ -10,10 +10,10 @@ index dae71a3..4dd36a2 100644 import PropTypes from 'prop-types'; import shallowCompare from 'react-addons-shallow-compare'; import { -diff --git a/node_modules/react-native-snap-carousel/src/pagination/Pagination.js b/node_modules/react-native-snap-carousel/src/pagination/Pagination.js +diff --git a/src/pagination/Pagination.js b/src/pagination/Pagination.js index 5c021cf..d300dce 100644 ---- a/node_modules/react-native-snap-carousel/src/pagination/Pagination.js -+++ b/node_modules/react-native-snap-carousel/src/pagination/Pagination.js +--- a/src/pagination/Pagination.js ++++ b/src/pagination/Pagination.js @@ -1,5 +1,6 @@ import React, { PureComponent } from 'react'; -import { I18nManager, Platform, View, ViewPropTypes } from 'react-native'; @@ -22,10 +22,10 @@ index 5c021cf..d300dce 100644 import PropTypes from 'prop-types'; import PaginationDot from './PaginationDot'; import styles from './Pagination.style'; -diff --git a/node_modules/react-native-snap-carousel/src/pagination/PaginationDot.js b/node_modules/react-native-snap-carousel/src/pagination/PaginationDot.js +diff --git a/src/pagination/PaginationDot.js b/src/pagination/PaginationDot.js index e59d196..d2c8dcc 100644 ---- a/node_modules/react-native-snap-carousel/src/pagination/PaginationDot.js -+++ b/node_modules/react-native-snap-carousel/src/pagination/PaginationDot.js +--- a/src/pagination/PaginationDot.js ++++ b/src/pagination/PaginationDot.js @@ -1,5 +1,6 @@ import React, { PureComponent } from 'react'; -import { View, Animated, Easing, TouchableOpacity, ViewPropTypes } from 'react-native'; @@ -34,10 +34,10 @@ index e59d196..d2c8dcc 100644 import PropTypes from 'prop-types'; import styles from './Pagination.style'; -diff --git a/node_modules/react-native-snap-carousel/src/parallaximage/ParallaxImage.js b/node_modules/react-native-snap-carousel/src/parallaximage/ParallaxImage.js +diff --git a/src/parallaximage/ParallaxImage.js b/src/parallaximage/ParallaxImage.js index 8bc774a..d6d9de3 100644 ---- a/node_modules/react-native-snap-carousel/src/parallaximage/ParallaxImage.js -+++ b/node_modules/react-native-snap-carousel/src/parallaximage/ParallaxImage.js +--- a/src/parallaximage/ParallaxImage.js ++++ b/src/parallaximage/ParallaxImage.js @@ -1,7 +1,8 @@ // Parallax effect inspired by https://github.com/oblador/react-native-parallax/ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0fe0138af..220459d2c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,29 @@ overrides: cheerio: 1.0.0-rc.12 typescript: ~5.8.0 +patchedDependencies: + '@mendix/pluggable-widgets-tools@10.21.1': + hash: 1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c + path: patches/@mendix+pluggable-widgets-tools+10.21.1.patch + '@ptomasroos/react-native-multi-slider@1.0.0': + hash: b5e11465e4305f5284e90a78fc4575401f791921f34dbbafb9831f19ecae94da + path: patches/@ptomasroos+react-native-multi-slider+1.0.0.patch + react-native-action-button@2.8.5: + hash: 593bb64b27425a7f3805ad9567928d1369fd4cf939ab5d3eb43411a759565c48 + path: patches/react-native-action-button+2.8.5.patch + react-native-camera@3.40.0: + hash: a1c648b476aee6b170796fa8d0614d3ebb16035bee5d516649c513c1fd584f59 + path: patches/react-native-camera+3.40.0.patch + react-native-gesture-handler@2.24.0: + hash: 10e538f7cf8a69122ef742c51cb8285f723512c9d8596d9bc6db6ebae0651573 + path: patches/react-native-gesture-handler+2.24.0.patch + react-native-slider@0.11.0: + hash: 899d0bc0de45e25eb7731c4e61ae23a5223c2e1654b7d020dfae1c70e61b32c6 + path: patches/react-native-slider+0.11.0.patch + react-native-snap-carousel@3.9.1: + hash: 3a4c1b0f17629becc5d99ef1958df5a2f55c46e45f45670862aaeda12ab2f4e1 + path: patches/react-native-snap-carousel+3.9.1.patch + importers: .: @@ -33,12 +56,9 @@ importers: '@react-native/babel-preset': specifier: 0.77.3 version: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0)) - '@testing-library/jest-native': - specifier: ^5.4.3 - version: 5.4.3(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0) '@testing-library/react-native': - specifier: ^12.9.0 - version: 12.9.0(jest@29.7.0(@types/node@20.19.9)(ts-node@10.9.2(@types/node@20.19.9)(typescript@5.8.3)))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^13.3.3 + version: 13.3.3(jest@29.7.0(@types/node@20.19.9)(ts-node@10.9.2(@types/node@20.19.9)(typescript@5.8.3)))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0) '@types/big.js': specifier: ^6.2.2 version: 6.2.2 @@ -96,9 +116,6 @@ importers: mendix-client: specifier: ^7.15.8 version: 7.15.8 - patch-package: - specifier: ^8.0.0 - version: 8.0.0 pixelmatch: specifier: ^5.3.0 version: 5.3.0 @@ -168,7 +185,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) '@types/querystringify': specifier: ^2.0.0 version: 2.0.2 @@ -202,7 +219,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) mendix: specifier: 10.15.46408 version: 10.15.46408(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(react@18.2.0) @@ -211,7 +228,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) concurrently: specifier: ^6.0.0 version: 6.5.1 @@ -233,7 +250,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/activity-indicator-native: dependencies: @@ -246,7 +263,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/animation-native: dependencies: @@ -262,7 +279,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/app-events-native: dependencies: @@ -278,7 +295,7 @@ importers: version: link:../../tools/piw-utils-internal '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/background-gradient-native: dependencies: @@ -291,7 +308,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/background-image-native: dependencies: @@ -304,7 +321,7 @@ importers: version: link:../../tools/piw-utils-internal '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/badge-native: dependencies: @@ -317,7 +334,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/bar-chart-native: dependencies: @@ -330,7 +347,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/barcode-scanner-native: dependencies: @@ -348,17 +365,17 @@ importers: version: 1.2.4 react-native-camera: specifier: 3.40.0 - version: 3.40.0 + version: 3.40.0(patch_hash=a1c648b476aee6b170796fa8d0614d3ebb16035bee5d516649c513c1fd584f59) devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/bottom-sheet-native: dependencies: '@gorhom/bottom-sheet': specifier: 5.1.1 - version: 5.1.1(@types/react-native@0.73.0(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(@types/react@18.3.23)(react-native-gesture-handler@2.24.0(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0))(react-native-reanimated@3.16.1(@babel/core@7.28.0)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) + version: 5.1.1(@types/react-native@0.73.0(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(@types/react@18.3.23)(react-native-gesture-handler@2.24.0(patch_hash=10e538f7cf8a69122ef742c51cb8285f723512c9d8596d9bc6db6ebae0651573)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0))(react-native-reanimated@3.16.1(@babel/core@7.28.0)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) '@mendix/piw-native-utils-internal': specifier: '*' version: link:../../tools/piw-native-utils-internal @@ -373,14 +390,14 @@ importers: version: 14.0.4(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0)) react-native-gesture-handler: specifier: 2.24.0 - version: 2.24.0(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) + version: 2.24.0(patch_hash=10e538f7cf8a69122ef742c51cb8285f723512c9d8596d9bc6db6ebae0651573)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) react-native-reanimated: specifier: 3.16.1 version: 3.16.1(@babel/core@7.28.0)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) '@types/react-native-actionsheet': specifier: ^2.4.1 version: 2.4.7 @@ -401,11 +418,11 @@ importers: version: 4.2.3 react-native-snap-carousel: specifier: ^3.9.1 - version: 3.9.1(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) + version: 3.9.1(patch_hash=3a4c1b0f17629becc5d99ef1958df5a2f55c46e45f45670862aaeda12ab2f4e1)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) '@types/react-native-snap-carousel': specifier: ^3.7.4 version: 3.8.11(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(react@18.2.0) @@ -426,14 +443,14 @@ importers: version: 0.0.10(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) react-native-slider: specifier: ^0.11.0 - version: 0.11.0 + version: 0.11.0(patch_hash=899d0bc0de45e25eb7731c4e61ae23a5223c2e1654b7d020dfae1c70e61b32c6) tinycolor2: specifier: ^1.4.1 version: 1.6.0 devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) '@types/tinycolor2': specifier: ^1.4.1 version: 1.4.6 @@ -449,7 +466,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/feedback-native: dependencies: @@ -457,11 +474,11 @@ importers: specifier: '*' version: link:../../tools/piw-native-utils-internal querystringify: - specifier: ^2.1.1 + specifier: ^2.2.0 version: 2.2.0 react-native-dialog: - specifier: 9.2.2 - version: 9.2.2(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0)) + specifier: 9.3.0 + version: 9.3.0(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0)) react-native-view-shot: specifier: 4.0.3 version: 4.0.3(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) @@ -471,12 +488,12 @@ importers: version: link:../../tools/piw-utils-internal '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) '@types/querystringify': - specifier: ^2.0.0 + specifier: ^2.0.2 version: 2.0.2 '@types/react-native-dialog': - specifier: ^5.5.0 + specifier: ^5.6.3 version: 5.6.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) packages/pluggableWidgets/floating-action-button-native: @@ -492,11 +509,11 @@ importers: version: 4.2.3 react-native-action-button: specifier: ^2.8.5 - version: 2.8.5(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0)) + version: 2.8.5(patch_hash=593bb64b27425a7f3805ad9567928d1369fd4cf939ab5d3eb43411a759565c48)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0)) devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/gallery-native: dependencies: @@ -509,7 +526,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/gallery-text-filter-native: dependencies: @@ -525,7 +542,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/image-native: dependencies: @@ -547,7 +564,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/intro-screen-native: dependencies: @@ -566,7 +583,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/line-chart-native: dependencies: @@ -579,7 +596,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/listview-swipe-native: dependencies: @@ -591,11 +608,11 @@ importers: version: link:../../tools/piw-utils-internal react-native-gesture-handler: specifier: 2.24.0 - version: 2.24.0(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) + version: 2.24.0(patch_hash=10e538f7cf8a69122ef742c51cb8285f723512c9d8596d9bc6db6ebae0651573)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/maps-native: dependencies: @@ -606,7 +623,7 @@ importers: specifier: '*' version: link:../../tools/piw-utils-internal prop-types: - specifier: ^15.7.2 + specifier: ^15.8.1 version: 15.8.1 react-native-geocoder: specifier: 0.5.0 @@ -617,7 +634,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/notifications-native: dependencies: @@ -636,7 +653,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/pie-doughnut-chart-native: dependencies: @@ -649,7 +666,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/popup-menu-native: dependencies: @@ -665,7 +682,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) '@types/react-native-material-menu': specifier: ^1.0.6 version: 1.0.10(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(react@18.2.0) @@ -684,7 +701,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/progress-circle-native: dependencies: @@ -700,7 +717,7 @@ importers: version: link:../../tools/piw-utils-internal '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/qr-code-native: dependencies: @@ -719,7 +736,7 @@ importers: version: link:../../tools/piw-utils-internal '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/radio-buttons-native: dependencies: @@ -732,7 +749,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/range-slider-native: dependencies: @@ -744,14 +761,14 @@ importers: version: link:../../tools/piw-utils-internal '@ptomasroos/react-native-multi-slider': specifier: ^1.0.0 - version: 1.0.0(prop-types@15.8.1)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) + version: 1.0.0(patch_hash=b5e11465e4305f5284e90a78fc4575401f791921f34dbbafb9831f19ecae94da)(prop-types@15.8.1)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) prop-types: specifier: ^15.7.2 version: 15.8.1 devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) '@types/ptomasroos__react-native-multi-slider': specifier: ^0.0.1 version: 0.0.1(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(react@18.2.0) @@ -773,7 +790,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) '@types/react-native-star-rating': specifier: ^1.1.6 version: 1.1.6(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(react@18.2.0) @@ -789,7 +806,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/safe-area-view-native: dependencies: @@ -808,7 +825,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/signature-native: dependencies: @@ -827,7 +844,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/slider-native: dependencies: @@ -839,14 +856,14 @@ importers: version: link:../../tools/piw-utils-internal '@ptomasroos/react-native-multi-slider': specifier: ^1.0.0 - version: 1.0.0(prop-types@15.8.1)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) + version: 1.0.0(patch_hash=b5e11465e4305f5284e90a78fc4575401f791921f34dbbafb9831f19ecae94da)(prop-types@15.8.1)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) prop-types: specifier: ^15.7.2 version: 15.8.1 devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) '@types/ptomasroos__react-native-multi-slider': specifier: ^0.0.1 version: 0.0.1(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(react@18.2.0) @@ -862,7 +879,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/toggle-buttons-native: dependencies: @@ -881,7 +898,7 @@ importers: version: 7.27.1(@babel/core@7.28.0) '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/pluggableWidgets/video-player-native: dependencies: @@ -900,7 +917,7 @@ importers: version: link:../../tools/piw-utils-internal '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) '@types/react-native-video': specifier: ^5.0.4 version: 5.0.20(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(react@18.2.0) @@ -919,13 +936,13 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) packages/tools/piw-native-utils-internal: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -934,7 +951,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.1 - version: 10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) + version: 10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -1929,6 +1946,10 @@ packages: resolution: {integrity: sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/get-type@30.1.0': + resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/globals@29.7.0': resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2443,24 +2464,14 @@ packages: resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} - '@testing-library/jest-native@5.4.3': - resolution: {integrity: sha512-/sSDGaOuE+PJ1Z9Kp4u7PQScSVVXGud59I/qsBFFJvIbcn4P6yYw6cBnBmbPF+X9aRIsTJRDl6gzw5ZkJNm66w==} - deprecated: |- - DEPRECATED: This package is no longer maintained. - Please use the built-in Jest matchers available in @testing-library/react-native v12.4+. - See migration guide: https://callstack.github.io/react-native-testing-library/docs/migration/jest-matchers - peerDependencies: - react: 18.2.0 - react-native: 0.77.3 - react-test-renderer: '>=16.0.0' - - '@testing-library/react-native@12.9.0': - resolution: {integrity: sha512-wIn/lB1FjV2N4Q7i9PWVRck3Ehwq5pkhAef5X5/bmQ78J/NoOsGbVY2/DG5Y9Lxw+RfE+GvSEh/fe5Tz6sKSvw==} + '@testing-library/react-native@13.3.3': + resolution: {integrity: sha512-k6Mjsd9dbZgvY4Bl7P1NIpePQNi+dfYtlJ5voi9KQlynxSyQkfOgJmYGCYmw/aSgH/rUcFvG8u5gd4npzgRDyg==} + engines: {node: '>=18'} peerDependencies: - jest: '>=28.0.0' + jest: '>=29.0.0' react: 18.2.0 react-native: 0.77.3 - react-test-renderer: '>=16.8.0' + react-test-renderer: '>=18.2.0' peerDependenciesMeta: jest: optional: true @@ -2797,9 +2808,6 @@ packages: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -4190,9 +4198,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-yarn-workspace-root@2.0.0: - resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} - flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -4894,6 +4899,10 @@ packages: resolution: {integrity: sha512-TSjceIf6797jyd+R64NXqicttROD+Qf98fex7CowmlSn7f8+En0da1Dglwr1AXxDtVizoxXYZBlUQwNhoOXkNw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-diff@30.1.1: + resolution: {integrity: sha512-LUU2Gx8EhYxpdzTR6BmjL1ifgOAQJQELTHOiPv9KITaKjZvJ9Jmgigx01tuZ49id37LorpGc9dPBPlXTboXScw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-docblock@29.7.0: resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4943,6 +4952,10 @@ packages: resolution: {integrity: sha512-ubCewJ54YzeAZ2JeHHGVoU+eDIpQFsfPQs0xURPWoNiO42LGJ+QGgfSf+hFIRplkZDkhH5MOvuxHKXRTUU3dUQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-matcher-utils@30.1.1: + resolution: {integrity: sha512-SuH2QVemK48BNTqReti6FtjsMPFsSOD/ZzRxU1TttR7RiRsRSe78d03bb4Cx6D4bQC/80Q8U4VnaaAH9FlbZ9w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5112,10 +5125,6 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stable-stringify@1.3.0: - resolution: {integrity: sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==} - engines: {node: '>= 0.4'} - json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -5134,9 +5143,6 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - jsonify@0.0.1: - resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} - jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} @@ -5160,9 +5166,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - klaw-sync@6.0.0: - resolution: {integrity: sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==} - kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -5832,10 +5835,6 @@ packages: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} @@ -5912,11 +5911,6 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - patch-package@8.0.0: - resolution: {integrity: sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==} - engines: {node: '>=14', npm: '>5'} - hasBin: true - path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -6424,8 +6418,8 @@ packages: peerDependencies: react-native: 0.77.3 - react-native-dialog@9.2.2: - resolution: {integrity: sha512-d2w3fyqB6G8Os0DYJKnfVl6PgqQwplW8dHSvzkQpczXzmX5V4BXOJTTXqoiKwI+nsS6QEHYb6Bk8VG7vV9WuXQ==} + react-native-dialog@9.3.0: + resolution: {integrity: sha512-JEOJY/0AzTM9grIl0BL8o/IJPIJru7k5MPj9POTE9RRezUEtgn0YSvCpTlBtG0obWgOdzg2otMz1OQvMXS0wMQ==} peerDependencies: react-native: 0.77.3 @@ -7017,10 +7011,6 @@ packages: resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} engines: {node: '>=0.10.0'} - slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -7298,10 +7288,6 @@ packages: tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - tmp@0.2.5: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} @@ -9090,13 +9076,13 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@gorhom/bottom-sheet@5.1.1(@types/react-native@0.73.0(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(@types/react@18.3.23)(react-native-gesture-handler@2.24.0(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0))(react-native-reanimated@3.16.1(@babel/core@7.28.0)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0)': + '@gorhom/bottom-sheet@5.1.1(@types/react-native@0.73.0(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(@types/react@18.3.23)(react-native-gesture-handler@2.24.0(patch_hash=10e538f7cf8a69122ef742c51cb8285f723512c9d8596d9bc6db6ebae0651573)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0))(react-native-reanimated@3.16.1(@babel/core@7.28.0)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0)': dependencies: '@gorhom/portal': 1.0.14(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) invariant: 2.2.4 react: 18.2.0 react-native: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0) - react-native-gesture-handler: 2.24.0(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) + react-native-gesture-handler: 2.24.0(patch_hash=10e538f7cf8a69122ef742c51cb8285f723512c9d8596d9bc6db6ebae0651573)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) react-native-reanimated: 3.16.1(@babel/core@7.28.0)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) optionalDependencies: '@types/react': 18.3.23 @@ -9236,6 +9222,8 @@ snapshots: '@jest/get-type@30.0.1': {} + '@jest/get-type@30.1.0': {} + '@jest/globals@29.7.0': dependencies: '@jest/environment': 29.7.0 @@ -9383,7 +9371,7 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 - '@mendix/pluggable-widgets-tools@10.21.1(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1)': + '@mendix/pluggable-widgets-tools@10.21.1(patch_hash=1e48df1c64ba081cf8f9067dd961b190124953e01649c78345c134bb31fe247c)(@jest/transform@29.7.0)(@jest/types@30.0.1)(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/babel__core@7.20.5)(@types/node@20.19.9)(encoding@0.1.13)(jest-util@30.0.2)(picomatch@4.0.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(tslib@2.8.1)': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.0) @@ -9575,7 +9563,7 @@ snapshots: '@xml-tools/parser': 1.0.11 prettier: 2.8.8 - '@ptomasroos/react-native-multi-slider@1.0.0(prop-types@15.8.1)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0)': + '@ptomasroos/react-native-multi-slider@1.0.0(patch_hash=b5e11465e4305f5284e90a78fc4575401f791921f34dbbafb9831f19ecae94da)(prop-types@15.8.1)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0)': dependencies: prop-types: 15.8.1 react: 18.2.0 @@ -10085,21 +10073,11 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/jest-native@5.4.3(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0)': + '@testing-library/react-native@13.3.3(jest@29.7.0(@types/node@20.19.9)(ts-node@10.9.2(@types/node@20.19.9)(typescript@5.8.3)))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-matcher-utils: 29.7.0 - pretty-format: 29.7.0 - react: 18.2.0 - react-native: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0) - react-test-renderer: 18.2.0(react@18.2.0) - redent: 3.0.0 - - '@testing-library/react-native@12.9.0(jest@29.7.0(@types/node@20.19.9)(ts-node@10.9.2(@types/node@20.19.9)(typescript@5.8.3)))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - jest-matcher-utils: 29.7.0 - pretty-format: 29.7.0 + jest-matcher-utils: 30.1.1 + picocolors: 1.1.1 + pretty-format: 30.0.5 react: 18.2.0 react-native: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0) react-test-renderer: 18.2.0(react@18.2.0) @@ -10556,8 +10534,6 @@ snapshots: '@xmldom/xmldom@0.8.10': {} - '@yarnpkg/lockfile@1.1.0': {} - JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -12237,10 +12213,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-yarn-workspace-root@2.0.0: - dependencies: - micromatch: 4.0.8 - flat-cache@3.2.0: dependencies: flatted: 3.3.3 @@ -13027,6 +12999,13 @@ snapshots: chalk: 4.1.2 pretty-format: 30.0.2 + jest-diff@30.1.1: + dependencies: + '@jest/diff-sequences': 30.0.1 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.0.5 + jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 @@ -13129,6 +13108,13 @@ snapshots: jest-diff: 30.0.4 pretty-format: 30.0.2 + jest-matcher-utils@30.1.1: + dependencies: + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + jest-diff: 30.1.1 + pretty-format: 30.0.5 + jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.27.1 @@ -13439,14 +13425,6 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json-stable-stringify@1.3.0: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - isarray: 2.0.5 - jsonify: 0.0.1 - object-keys: 1.1.1 - json-stringify-safe@5.0.1: {} json5@1.0.2: @@ -13466,8 +13444,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonify@0.0.1: {} - jsonparse@1.3.1: {} jsx-ast-utils@3.3.5: @@ -13487,10 +13463,6 @@ snapshots: kind-of@6.0.3: {} - klaw-sync@6.0.0: - dependencies: - graceful-fs: 4.2.11 - kleur@3.0.3: {} lazystream@1.0.1: @@ -14353,8 +14325,6 @@ snapshots: wcwidth: 1.0.1 optional: true - os-tmpdir@1.0.2: {} - own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 @@ -14431,24 +14401,6 @@ snapshots: parseurl@1.3.3: {} - patch-package@8.0.0: - dependencies: - '@yarnpkg/lockfile': 1.1.0 - chalk: 4.1.2 - ci-info: 3.9.0 - cross-spawn: 7.0.6 - find-yarn-workspace-root: 2.0.0 - fs-extra: 9.1.0 - json-stable-stringify: 1.3.0 - klaw-sync: 6.0.0 - minimist: 1.2.8 - open: 7.4.2 - rimraf: 2.7.1 - semver: 7.7.2 - slash: 2.0.0 - tmp: 0.0.33 - yaml: 2.8.0 - path-exists@3.0.0: {} path-exists@4.0.0: {} @@ -14901,7 +14853,7 @@ snapshots: react-is@18.3.1: {} - react-native-action-button@2.8.5(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0)): + react-native-action-button@2.8.5(patch_hash=593bb64b27425a7f3805ad9567928d1369fd4cf939ab5d3eb43411a759565c48)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0)): dependencies: prop-types: 15.8.1 react-native: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0) @@ -14925,7 +14877,7 @@ snapshots: react: 18.2.0 react-native: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0) - react-native-camera@3.40.0: + react-native-camera@3.40.0(patch_hash=a1c648b476aee6b170796fa8d0614d3ebb16035bee5d516649c513c1fd584f59): dependencies: prop-types: 15.8.1 @@ -14934,14 +14886,14 @@ snapshots: prop-types: 15.8.1 react: 18.2.0 react-native: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0) - react-native-slider: 0.11.0 + react-native-slider: 0.11.0(patch_hash=899d0bc0de45e25eb7731c4e61ae23a5223c2e1654b7d020dfae1c70e61b32c6) tinycolor2: 1.6.0 react-native-device-info@14.0.4(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0)): dependencies: react-native: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0) - react-native-dialog@9.2.2(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0)): + react-native-dialog@9.3.0(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0)): dependencies: react-native: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0) @@ -14957,7 +14909,7 @@ snapshots: react-native-geocoder@0.5.0: {} - react-native-gesture-handler@2.24.0(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0): + react-native-gesture-handler@2.24.0(patch_hash=10e538f7cf8a69122ef742c51cb8285f723512c9d8596d9bc6db6ebae0651573)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0): dependencies: '@egjs/hammerjs': 2.0.17 hoist-non-react-statics: 3.3.2 @@ -15059,11 +15011,11 @@ snapshots: dependencies: react-native-webview: 13.13.2(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0) - react-native-slider@0.11.0: + react-native-slider@0.11.0(patch_hash=899d0bc0de45e25eb7731c4e61ae23a5223c2e1654b7d020dfae1c70e61b32c6): dependencies: prop-types: 15.8.1 - react-native-snap-carousel@3.9.1(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0): + react-native-snap-carousel@3.9.1(patch_hash=3a4c1b0f17629becc5d99ef1958df5a2f55c46e45f45670862aaeda12ab2f4e1)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@14.1.0(typescript@5.8.3))(@types/react@18.3.23)(react@18.2.0))(react@18.2.0): dependencies: prop-types: 15.8.1 react: 18.2.0 @@ -15658,8 +15610,6 @@ snapshots: slash@1.0.0: {} - slash@2.0.0: {} - slash@3.0.0: {} slice-ansi@2.1.0: @@ -15968,10 +15918,6 @@ snapshots: tinycolor2@1.6.0: {} - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - tmp@0.2.5: {} tmpl@1.0.5: {} @@ -16644,7 +16590,8 @@ snapshots: yaml@1.10.2: {} - yaml@2.8.0: {} + yaml@2.8.0: + optional: true yargs-parser@18.1.3: dependencies: diff --git a/scripts/patch/patch-package.sh b/scripts/patch/patch-package.sh deleted file mode 100755 index 0f55330fc..000000000 --- a/scripts/patch/patch-package.sh +++ /dev/null @@ -1,10 +0,0 @@ -mkdir tmp -cd tmp -npm init -y -npm install --save "$1"@"$2" -rsync -av --exclude "node_modules" --delete "../node_modules/$1/" "./node_modules/$1/" -npx patch-package "$1" -mkdir -p ../patches -mv ./patches/* ../patches/ -cd .. -rm -rf tmp