diff --git a/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/DatagridDropdownFilter.editorConfig.ts b/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/DatagridDropdownFilter.editorConfig.ts index cd2dbe6373..c782efd34f 100644 --- a/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/DatagridDropdownFilter.editorConfig.ts +++ b/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/DatagridDropdownFilter.editorConfig.ts @@ -1,4 +1,4 @@ -import { hidePropertyIn, Problem, Properties } from "@mendix/pluggable-widgets-tools"; +import { hidePropertiesIn, hidePropertyIn, Problem, Properties } from "@mendix/pluggable-widgets-tools"; import { chevronDownIcon, chevronDownIconDark } from "@mendix/widget-plugin-filtering/preview/editor-preview-icons"; import { ContainerProps, @@ -13,8 +13,10 @@ export function getProperties(values: DatagridDropdownFilterPreviewProps, defaul const showSelectedItemsStyle = values.filterable && values.multiSelect; const showSelectionMethod = showSelectedItemsStyle && values.selectedItemsStyle === "boxes"; - if (values.auto) { - hidePropertyIn(defaultProperties, values, "filterOptions"); + if (values.baseType === "attr") { + defaultProperties = attrGroupProperties(values, defaultProperties); + } else { + hidePropertiesIn(defaultProperties, values, ["attr", "attrChoice", "filterOptions", "auto"]); } if (values.filterable) { @@ -33,6 +35,21 @@ export function getProperties(values: DatagridDropdownFilterPreviewProps, defaul return defaultProperties; } +function attrGroupProperties(values: DatagridDropdownFilterPreviewProps, defaultProperties: Properties): Properties { + hidePropertiesIn(defaultProperties, values, ["ref", "refOptions", "fetchOptionsLazy"]); + + if (values.attrChoice === "auto") { + hidePropertyIn(defaultProperties, {} as { linkedDs: unknown }, "linkedDs"); + hidePropertyIn(defaultProperties, values, "attr"); + } + + if (values.auto) { + hidePropertyIn(defaultProperties, values, "filterOptions"); + } + + return defaultProperties; +} + export const getPreview = (values: DatagridDropdownFilterPreviewProps, isDarkMode: boolean): StructurePreviewProps => { const palette = structurePreviewPalette[isDarkMode ? "dark" : "light"]; return { diff --git a/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/DatagridDropdownFilter.xml b/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/DatagridDropdownFilter.xml index 5e32a4a329..2f1db3abb2 100644 --- a/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/DatagridDropdownFilter.xml +++ b/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/DatagridDropdownFilter.xml @@ -7,16 +7,41 @@ https://docs.mendix.com/appstore/modules/data-grid-2#7-2-drop-down-filter - + + + Filter by + + + Attribute + Association + + + + Datasource to Filter + + + + + + Attribute config + "Auto" works only when the widget is placed in a Data grid column. + + Auto + Custom + + + + Attribute + + + + + + Automatic options Show options based on the references or the enumeration values and captions. - - Default value - Empty option caption will be shown by default or if configured default value matches none of the options - - Options @@ -34,6 +59,33 @@ + + + + + Entity + Set the entity to enable filtering over association. + + + + + + + Selectable objects + The options to show in the Drop-down filter widget. + + + Use lazy load + Lazy loading enables faster parent loading, but with personalization enabled, value restoration will be limited. + + + + + + Default value + Empty option caption will be shown by default or if configured default value matches none of the options + + Filterable diff --git a/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/hocs/withDropdownLinkedAttributes.tsx b/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/hocs/withDropdownLinkedAttributes.tsx new file mode 100644 index 0000000000..e7aeef43b2 --- /dev/null +++ b/packages/pluggableWidgets/datagrid-dropdown-filter-web/src/hocs/withDropdownLinkedAttributes.tsx @@ -0,0 +1,71 @@ +import { createElement } from "react"; +import { AttributeMetaData } from "mendix"; +import { useFilterAPI } from "@mendix/widget-plugin-filtering/context"; +import { APIError } from "@mendix/widget-plugin-filtering/errors"; +import { error, value, Result } from "@mendix/widget-plugin-filtering/result-meta"; +import { PickerFilterStore } from "@mendix/widget-plugin-filtering/typings/PickerFilterStore"; +import { Alert } from "@mendix/widget-plugin-component-kit/Alert"; +import { useConst } from "@mendix/widget-plugin-mobx-kit/react/useConst"; +import { useSetup } from "@mendix/widget-plugin-mobx-kit/react/useSetup"; +import { ISetupable } from "@mendix/widget-plugin-mobx-kit/setupable"; +import { DropdownStoreProvider } from "@mendix/widget-plugin-filtering"; + +interface RequiredProps { + attributes: Array<{ + attribute: AttributeMetaData; + }>; + name: string; +} + +interface StoreProvider extends ISetupable { + store: PickerFilterStore; +} + +type Component

= (props: P) => React.ReactElement; + +export function withDropdownLinkedAttributes

( + component: Component

+): Component

{ + const StoreInjector = withInjectedStore(component); + + return function FilterAPIProvider(props) { + const api = useStoreProvider(props); + + if (api.hasError) { + return {api.error.message}; + } + + return ; + }; +} + +function withInjectedStore

( + Component: Component

+): Component

{ + return function StoreInjector(props) { + const provider = useSetup(() => props.provider); + return ; + }; +} + +interface InjectableFilterAPI { + filterStore: PickerFilterStore; + parentChannelName?: string; +} + +function useStoreProvider(props: RequiredProps): Result<{ provider: StoreProvider; channel: string }, APIError> { + const filterAPI = useFilterAPI(); + return useConst(() => { + if (filterAPI.hasError) { + return error(filterAPI.error); + } + + return value({ + provider: new DropdownStoreProvider(filterAPI.value, { + attributes: props.attributes.map(obj => obj.attribute), + dataKey: props.name + }), + channel: filterAPI.value.parentChannelName + }); + }); +} diff --git a/packages/pluggableWidgets/datagrid-dropdown-filter-web/typings/DatagridDropdownFilterProps.d.ts b/packages/pluggableWidgets/datagrid-dropdown-filter-web/typings/DatagridDropdownFilterProps.d.ts index c1c4cd5e41..a824e69a21 100644 --- a/packages/pluggableWidgets/datagrid-dropdown-filter-web/typings/DatagridDropdownFilterProps.d.ts +++ b/packages/pluggableWidgets/datagrid-dropdown-filter-web/typings/DatagridDropdownFilterProps.d.ts @@ -4,7 +4,11 @@ * @author Mendix Widgets Framework Team */ import { CSSProperties } from "react"; -import { ActionValue, DynamicValue, EditableValue } from "mendix"; +import { ActionValue, DynamicValue, EditableValue, ListValue, ListAttributeValue, ListReferenceValue, ListReferenceSetValue } from "mendix"; + +export type BaseTypeEnum = "attr" | "ref"; + +export type AttrChoiceEnum = "auto" | "linked"; export interface FilterOptionsType { caption: DynamicValue; @@ -25,9 +29,15 @@ export interface DatagridDropdownFilterContainerProps { class: string; style?: CSSProperties; tabIndex?: number; + baseType: BaseTypeEnum; + attrChoice: AttrChoiceEnum; + attr: ListAttributeValue; auto: boolean; - defaultValue?: DynamicValue; filterOptions: FilterOptionsType[]; + ref?: ListReferenceValue | ListReferenceSetValue; + refOptions?: ListValue; + fetchOptionsLazy: boolean; + defaultValue?: DynamicValue; filterable: boolean; multiSelect: boolean; emptyOptionCaption?: DynamicValue; @@ -50,9 +60,15 @@ export interface DatagridDropdownFilterPreviewProps { readOnly: boolean; renderMode: "design" | "xray" | "structure"; translate: (text: string) => string; + baseType: BaseTypeEnum; + attrChoice: AttrChoiceEnum; + attr: string; auto: boolean; - defaultValue: string; filterOptions: FilterOptionsPreviewType[]; + ref: string; + refOptions: {} | { caption: string } | { type: string } | null; + fetchOptionsLazy: boolean; + defaultValue: string; filterable: boolean; multiSelect: boolean; emptyOptionCaption: string; diff --git a/packages/shared/filter-commons/.prettierrc.cjs b/packages/shared/filter-commons/.prettierrc.cjs new file mode 100644 index 0000000000..0892704ab0 --- /dev/null +++ b/packages/shared/filter-commons/.prettierrc.cjs @@ -0,0 +1 @@ +module.exports = require("@mendix/prettier-config-web-widgets"); diff --git a/packages/shared/filter-commons/__mocks__/mendix/filters/builders.js b/packages/shared/filter-commons/__mocks__/mendix/filters/builders.js new file mode 100644 index 0000000000..28fe810c06 --- /dev/null +++ b/packages/shared/filter-commons/__mocks__/mendix/filters/builders.js @@ -0,0 +1 @@ +module.exports = require("@mendix/widget-plugin-test-utils/__mocks__/mendix/filters/builders.js"); diff --git a/packages/shared/filter-commons/eslint.config.mjs b/packages/shared/filter-commons/eslint.config.mjs new file mode 100644 index 0000000000..ed68ae9e78 --- /dev/null +++ b/packages/shared/filter-commons/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from "@mendix/eslint-config-web-widgets/widget-ts.mjs"; + +export default config; diff --git a/packages/shared/filter-commons/jest.config.cjs b/packages/shared/filter-commons/jest.config.cjs new file mode 100644 index 0000000000..3f605bedaa --- /dev/null +++ b/packages/shared/filter-commons/jest.config.cjs @@ -0,0 +1,26 @@ +module.exports = { + modulePathIgnorePatterns: ["/dist/"], + transform: { + "^.+\\.(t|j)sx?$": [ + "@swc/jest", + { + jsc: { + transform: { + react: { + runtime: "automatic" + } + } + } + } + ] + }, + moduleDirectories: ["node_modules", "src"], + moduleNameMapper: { + "big.js": "big.js", + "(.+)\\.js": "$1" + }, + extensionsToTreatAsEsm: [".ts"], + testEnvironment: "jsdom", + collectCoverage: !process.env.CI, + coverageProvider: "v8" +}; diff --git a/packages/shared/filter-commons/package.json b/packages/shared/filter-commons/package.json new file mode 100644 index 0000000000..b12356a45b --- /dev/null +++ b/packages/shared/filter-commons/package.json @@ -0,0 +1,48 @@ +{ + "name": "@mendix/filter-commons", + "version": "0.1.0", + "description": "Common filter utilities and types for filter widgets", + "copyright": "© Mendix Technology BV 2025. All rights reserved.", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/mendix/web-widgets.git" + }, + "type": "module", + "files": [ + "dist", + "!*.map" + ], + "exports": { + "./*": "./dist/*.js" + }, + "typesVersions": { + "*": { + "*": [ + "dist/*" + ] + } + }, + "scripts": { + "build": "tsc", + "dev": "tsc --watch", + "format": "prettier --write .", + "lint": "eslint src/ package.json", + "prepare": "tsc", + "test": "jest" + }, + "dependencies": { + "mendix": "^10.16.49747" + }, + "peerDependencies": { + "mobx": "6.12.3", + "mobx-react-lite": "4.0.7" + }, + "devDependencies": { + "@mendix/eslint-config-web-widgets": "workspace:*", + "@mendix/prettier-config-web-widgets": "workspace:*", + "@mendix/tsconfig-web-widgets": "workspace:*", + "@mendix/widget-plugin-test-utils": "workspace:*", + "@swc/core": "^1.7.26" + } +} diff --git a/packages/shared/widget-plugin-filtering/src/__tests__/condition-utils.spec.ts b/packages/shared/filter-commons/src/__tests__/condition-utils.spec.ts similarity index 100% rename from packages/shared/widget-plugin-filtering/src/__tests__/condition-utils.spec.ts rename to packages/shared/filter-commons/src/__tests__/condition-utils.spec.ts diff --git a/packages/shared/widget-plugin-filtering/src/condition-utils.ts b/packages/shared/filter-commons/src/condition-utils.ts similarity index 100% rename from packages/shared/widget-plugin-filtering/src/condition-utils.ts rename to packages/shared/filter-commons/src/condition-utils.ts diff --git a/packages/shared/widget-plugin-filtering/src/typings/FilterFunctions.ts b/packages/shared/filter-commons/src/typings/FilterFunctions.ts similarity index 99% rename from packages/shared/widget-plugin-filtering/src/typings/FilterFunctions.ts rename to packages/shared/filter-commons/src/typings/FilterFunctions.ts index 7fc85213c1..13cc4f228a 100644 --- a/packages/shared/widget-plugin-filtering/src/typings/FilterFunctions.ts +++ b/packages/shared/filter-commons/src/typings/FilterFunctions.ts @@ -1,6 +1,9 @@ export type FilterFunctionNonValue = "empty" | "notEmpty"; + export type FilterFunctionGeneric = "equal" | "notEqual" | "greater" | "greaterEqual" | "smaller" | "smallerEqual"; + export type FilterFunctionBinary = "between"; // | "betweenEqRight" | "betweenEqLeft" | "betweenEqBoth"; + export type FilterFunctionString = "contains" | "startsWith" | "endsWith"; export type AllFunctions = FilterFunctionNonValue | FilterFunctionGeneric | FilterFunctionBinary | FilterFunctionString; diff --git a/packages/shared/widget-plugin-filtering/src/typings/IJSActionsControlled.ts b/packages/shared/filter-commons/src/typings/IJSActionsControlled.ts similarity index 100% rename from packages/shared/widget-plugin-filtering/src/typings/IJSActionsControlled.ts rename to packages/shared/filter-commons/src/typings/IJSActionsControlled.ts diff --git a/packages/shared/filter-commons/src/typings/mendix.ts b/packages/shared/filter-commons/src/typings/mendix.ts new file mode 100644 index 0000000000..528a614adf --- /dev/null +++ b/packages/shared/filter-commons/src/typings/mendix.ts @@ -0,0 +1,3 @@ +import { FilterCondition } from "mendix/filters"; + +export type FilterName = FilterCondition extends { name: infer Name } ? Name : never; diff --git a/packages/shared/widget-plugin-filtering/src/typings/settings.ts b/packages/shared/filter-commons/src/typings/settings.ts similarity index 100% rename from packages/shared/widget-plugin-filtering/src/typings/settings.ts rename to packages/shared/filter-commons/src/typings/settings.ts diff --git a/packages/shared/filter-commons/tsconfig.json b/packages/shared/filter-commons/tsconfig.json new file mode 100644 index 0000000000..052cc1cee7 --- /dev/null +++ b/packages/shared/filter-commons/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@mendix/tsconfig-web-widgets/esm-library-with-jsx", + "include": ["./src/**/*"], + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src", + "resolveJsonModule": true + } +} diff --git a/packages/shared/widget-plugin-dropdown-filter/.prettierrc.cjs b/packages/shared/widget-plugin-dropdown-filter/.prettierrc.cjs new file mode 100644 index 0000000000..0892704ab0 --- /dev/null +++ b/packages/shared/widget-plugin-dropdown-filter/.prettierrc.cjs @@ -0,0 +1 @@ +module.exports = require("@mendix/prettier-config-web-widgets"); diff --git a/packages/shared/widget-plugin-dropdown-filter/eslint.config.mjs b/packages/shared/widget-plugin-dropdown-filter/eslint.config.mjs new file mode 100644 index 0000000000..ed68ae9e78 --- /dev/null +++ b/packages/shared/widget-plugin-dropdown-filter/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from "@mendix/eslint-config-web-widgets/widget-ts.mjs"; + +export default config; diff --git a/packages/shared/widget-plugin-dropdown-filter/jest.config.cjs b/packages/shared/widget-plugin-dropdown-filter/jest.config.cjs new file mode 100644 index 0000000000..3f605bedaa --- /dev/null +++ b/packages/shared/widget-plugin-dropdown-filter/jest.config.cjs @@ -0,0 +1,26 @@ +module.exports = { + modulePathIgnorePatterns: ["/dist/"], + transform: { + "^.+\\.(t|j)sx?$": [ + "@swc/jest", + { + jsc: { + transform: { + react: { + runtime: "automatic" + } + } + } + } + ] + }, + moduleDirectories: ["node_modules", "src"], + moduleNameMapper: { + "big.js": "big.js", + "(.+)\\.js": "$1" + }, + extensionsToTreatAsEsm: [".ts"], + testEnvironment: "jsdom", + collectCoverage: !process.env.CI, + coverageProvider: "v8" +}; diff --git a/packages/shared/widget-plugin-dropdown-filter/package.json b/packages/shared/widget-plugin-dropdown-filter/package.json new file mode 100644 index 0000000000..41ffc4217b --- /dev/null +++ b/packages/shared/widget-plugin-dropdown-filter/package.json @@ -0,0 +1,41 @@ +{ + "name": "@mendix/widget-plugin-dropdown-filter", + "version": "1.0.0", + "description": "Drop-down filter widget plugin", + "copyright": "© Mendix Technology BV 2025. All rights reserved.", + "license": "Apache-2.0", + "type": "module", + "files": [ + "dist", + "!*.map" + ], + "exports": { + "./*": "./dist/*.js" + }, + "typesVersions": { + "*": { + "*": [ + "dist/*" + ] + } + }, + "scripts": { + "build": "tsc", + "dev": "tsc --watch", + "format": "prettier --write .", + "lint": "eslint src/ package.json", + "test": "jest" + }, + "dependencies": { + "@mendix/widget-plugin-mobx-kit": "workspace:^", + "downshift": "^9.0.9", + "mendix": "^10.21.64362", + "mobx": "6.12.3", + "mobx-react-lite": "4.0.7" + }, + "devDependencies": { + "@mendix/eslint-config-web-widgets": "workspace:*", + "@mendix/prettier-config-web-widgets": "workspace:*", + "@mendix/tsconfig-web-widgets": "workspace:*" + } +} diff --git a/packages/shared/widget-plugin-filtering/src/__tests__/RefFilterStore.spec.ts b/packages/shared/widget-plugin-dropdown-filter/src/__tests__/RefFilterStore.spec.ts similarity index 99% rename from packages/shared/widget-plugin-filtering/src/__tests__/RefFilterStore.spec.ts rename to packages/shared/widget-plugin-dropdown-filter/src/__tests__/RefFilterStore.spec.ts index de11ebf61e..8ade5c23e8 100644 --- a/packages/shared/widget-plugin-filtering/src/__tests__/RefFilterStore.spec.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/__tests__/RefFilterStore.spec.ts @@ -1,7 +1,7 @@ import { cases, list, listExpression, listReference, ListValueBuilder, obj } from "@mendix/widget-plugin-test-utils"; import { ObjectItem } from "mendix"; import { _resetGlobalState, autorun } from "mobx"; -import { RefFilterStore, RefFilterStoreProps } from "../stores/picker/RefFilterStore"; +import { RefFilterStore, RefFilterStoreProps } from "../stores/RefFilterStore"; describe("RefFilterStore", () => { afterEach(() => _resetGlobalState()); diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/PickerBaseController.ts b/packages/shared/widget-plugin-dropdown-filter/src/controllers/PickerBaseController.ts similarity index 86% rename from packages/shared/widget-plugin-filtering/src/controllers/picker/PickerBaseController.ts rename to packages/shared/widget-plugin-dropdown-filter/src/controllers/PickerBaseController.ts index a762277879..47e5cf5661 100644 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/PickerBaseController.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/controllers/PickerBaseController.ts @@ -1,9 +1,9 @@ import { ActionValue, EditableValue } from "mendix"; -import { OptionsSerializer } from "../../stores/picker/OptionsSerializer"; -import { IJSActionsControlled, ResetHandler, SetValueHandler } from "../../typings/IJSActionsControlled"; -import { OptionWithState } from "../../typings/OptionWithState"; -import { PickerChangeHelper } from "../generic/PickerChangeHelper"; -import { PickerJSActionsHelper } from "../generic/PickerJSActionsHelper"; +import { OptionsSerializer } from "../stores/OptionsSerializer"; +import { IJSActionsControlled, ResetHandler, SetValueHandler } from "../typings/IJSActionsControlled"; +import { OptionWithState } from "../typings/OptionWithState"; +import { PickerChangeHelper } from "./PickerChangeHelper"; +import { PickerJSActionsHelper } from "./PickerJSActionsHelper"; interface FilterStore { reset: () => void; diff --git a/packages/shared/widget-plugin-filtering/src/controllers/generic/PickerChangeHelper.ts b/packages/shared/widget-plugin-dropdown-filter/src/controllers/PickerChangeHelper.ts similarity index 100% rename from packages/shared/widget-plugin-filtering/src/controllers/generic/PickerChangeHelper.ts rename to packages/shared/widget-plugin-dropdown-filter/src/controllers/PickerChangeHelper.ts diff --git a/packages/shared/widget-plugin-filtering/src/controllers/generic/PickerJSActionsHelper.ts b/packages/shared/widget-plugin-dropdown-filter/src/controllers/PickerJSActionsHelper.ts similarity index 96% rename from packages/shared/widget-plugin-filtering/src/controllers/generic/PickerJSActionsHelper.ts rename to packages/shared/widget-plugin-dropdown-filter/src/controllers/PickerJSActionsHelper.ts index 3cd56a159e..c71b741cb7 100644 --- a/packages/shared/widget-plugin-filtering/src/controllers/generic/PickerJSActionsHelper.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/controllers/PickerJSActionsHelper.ts @@ -1,4 +1,4 @@ -import { IJSActionsControlled, ResetHandler, SetValueHandler } from "../../typings/IJSActionsControlled"; +import { IJSActionsControlled, ResetHandler, SetValueHandler } from "../typings/IJSActionsControlled"; interface FilterStore { reset: () => void; diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/RefBaseController.ts b/packages/shared/widget-plugin-dropdown-filter/src/controllers/RefBaseController.ts similarity index 78% rename from packages/shared/widget-plugin-filtering/src/controllers/picker/RefBaseController.ts rename to packages/shared/widget-plugin-dropdown-filter/src/controllers/RefBaseController.ts index c355a2e530..44568ca35c 100644 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/RefBaseController.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/controllers/RefBaseController.ts @@ -1,7 +1,7 @@ +import { disposeBatch } from "@mendix/widget-plugin-mobx-kit/disposeBatch"; import { ActionValue, EditableValue } from "mendix"; import { action, makeObservable } from "mobx"; -import { disposeFx } from "../../mobx-utils"; -import { RefFilterStore } from "../../stores/picker/RefFilterStore"; +import { RefFilterStore } from "../stores/RefFilterStore"; import { PickerBaseController } from "./PickerBaseController"; export class RefBaseController extends PickerBaseController { @@ -13,15 +13,15 @@ export class RefBaseController extends PickerBaseController { } setup(): () => void { - const [disposers, dispose] = disposeFx(); + const [add, disposeAll] = disposeBatch(); - disposers.push(this.changeHelper.setup()); + add(this.changeHelper.setup()); if (this.defaultValue) { this.filterStore.setDefaultSelected(this.defaultValue); } - return dispose; + return disposeAll; } updateProps(props: RefBaseControllerProps): void { diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/RefSelectController.ts b/packages/shared/widget-plugin-dropdown-filter/src/controllers/RefSelectController.ts similarity index 88% rename from packages/shared/widget-plugin-filtering/src/controllers/picker/RefSelectController.ts rename to packages/shared/widget-plugin-dropdown-filter/src/controllers/RefSelectController.ts index 6d5c46280c..8156e6aa22 100644 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/RefSelectController.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/controllers/RefSelectController.ts @@ -1,5 +1,5 @@ import { RefBaseController, RefBaseControllerProps } from "./RefBaseController"; -import { SelectControllerMixin } from "./mixins/SelectControllerMixin"; +import { SelectControllerMixin } from "./SelectControllerMixin"; export class RefSelectController extends SelectControllerMixin(RefBaseController) { constructor(props: RefBaseControllerProps) { diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/mixins/SelectControllerMixin.ts b/packages/shared/widget-plugin-dropdown-filter/src/controllers/SelectControllerMixin.ts similarity index 96% rename from packages/shared/widget-plugin-filtering/src/controllers/picker/mixins/SelectControllerMixin.ts rename to packages/shared/widget-plugin-dropdown-filter/src/controllers/SelectControllerMixin.ts index c765116ed8..cfb49bb3f8 100644 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/mixins/SelectControllerMixin.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/controllers/SelectControllerMixin.ts @@ -1,7 +1,7 @@ import { useSelect, UseSelectProps } from "downshift"; import { action, computed, makeObservable } from "mobx"; -import { OptionWithState } from "../../../typings/OptionWithState"; -import { GConstructor } from "../../../typings/type-utils"; +import { OptionWithState } from "../typings/OptionWithState"; +import { GConstructor } from "../typings/type-utils"; export interface FilterStore { toggle: (value: string) => void; diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/StaticBaseController.ts b/packages/shared/widget-plugin-dropdown-filter/src/controllers/StaticBaseController.ts similarity index 86% rename from packages/shared/widget-plugin-filtering/src/controllers/picker/StaticBaseController.ts rename to packages/shared/widget-plugin-dropdown-filter/src/controllers/StaticBaseController.ts index b9506dcd99..55ec3ab492 100644 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/StaticBaseController.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/controllers/StaticBaseController.ts @@ -1,7 +1,7 @@ +import { disposeBatch } from "@mendix/widget-plugin-mobx-kit/disposeBatch"; import { ActionValue, DynamicValue, EditableValue } from "mendix"; import { action, autorun, makeObservable, observable } from "mobx"; -import { disposeFx } from "../../mobx-utils"; -import { StaticSelectFilterStore } from "../../stores/picker/StaticSelectFilterStore"; +import { StaticSelectFilterStore } from "../stores/StaticSelectFilterStore"; import { PickerBaseController } from "./PickerBaseController"; export class StaticBaseController extends PickerBaseController { @@ -17,11 +17,11 @@ export class StaticBaseController extends PickerBaseController void { - const [disposers, dispose] = disposeFx(); + const [addDisposer, dispose] = disposeBatch(); - disposers.push(this.changeHelper.setup()); + addDisposer(this.changeHelper.setup()); - disposers.push( + addDisposer( autorun(() => { if (this.filterOptions.length > 0) { const options = this.filterOptions.map(this.toStoreOption); diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/StaticSelectController.ts b/packages/shared/widget-plugin-dropdown-filter/src/controllers/StaticSelectController.ts similarity index 84% rename from packages/shared/widget-plugin-filtering/src/controllers/picker/StaticSelectController.ts rename to packages/shared/widget-plugin-dropdown-filter/src/controllers/StaticSelectController.ts index 8174fbb975..49088d8efd 100644 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/StaticSelectController.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/controllers/StaticSelectController.ts @@ -1,5 +1,5 @@ +import { SelectControllerMixin } from "./SelectControllerMixin"; import { StaticBaseController, StaticBaseControllerProps } from "./StaticBaseController"; -import { SelectControllerMixin } from "./mixins/SelectControllerMixin"; export class StaticSelectController extends SelectControllerMixin(StaticBaseController) { constructor(props: StaticBaseControllerProps) { diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/mixins/TagPickerControllerMixin.ts b/packages/shared/widget-plugin-dropdown-filter/src/controllers/TagPickerControllerMixin.ts similarity index 84% rename from packages/shared/widget-plugin-filtering/src/controllers/picker/mixins/TagPickerControllerMixin.ts rename to packages/shared/widget-plugin-dropdown-filter/src/controllers/TagPickerControllerMixin.ts index 42ed406a37..9366807e61 100644 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/mixins/TagPickerControllerMixin.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/controllers/TagPickerControllerMixin.ts @@ -1,9 +1,9 @@ +import { disposeBatch } from "@mendix/widget-plugin-mobx-kit/disposeBatch"; import { useCombobox, UseComboboxProps, useMultipleSelection, UseMultipleSelectionProps } from "downshift"; import { action, autorun, computed, makeObservable, observable } from "mobx"; -import { disposeFx } from "../../../mobx-utils"; -import { SearchStore } from "../../../stores/picker/SearchStore"; -import { OptionWithState } from "../../../typings/OptionWithState"; -import { GConstructor } from "../../../typings/type-utils"; +import { SearchStore } from "../stores/SearchStore"; +import { OptionWithState } from "../typings/OptionWithState"; +import { GConstructor } from "../typings/type-utils"; export interface FilterStore { toggle: (value: string) => void; @@ -25,32 +25,33 @@ type BaseController = GConstructor<{ export function TagPickerControllerMixin(Base: TBase) { return class TagPickerControllerMixin extends Base { touched = false; - inputValue = ""; - inputPlaceholder = ""; + inputPlaceholder = "Search"; filterSelectedOptions = false; + inputValue = ""; constructor(...args: any[]) { super(...args); - makeObservable(this, { - inputValue: observable, - setInputValue: action, touched: observable, + inputValue: observable, setTouched: action, - selectedIndex: computed, - selectedOptions: computed, + setInputValue: action, handleBlur: action, handleClear: action, - isEmpty: computed, - options: computed + options: computed, + selectedIndex: computed, + selectedOptions: computed, + isEmpty: computed }); } setup(): () => void { - const [disposers, dispose] = disposeFx(); - disposers.push(autorun(...this.searchSyncFx())); - disposers.push(super.setup()); - return dispose; + const [add, disposeAll] = disposeBatch(); + + add(super.setup()); + add(autorun(...this.searchSyncFx())); + + return disposeAll; } searchSyncFx(): Parameters { @@ -84,8 +85,8 @@ export function TagPickerControllerMixin(Base: TBa return this.filterStore.selectedOptions; } - setTouched(value: boolean): void { - this.touched = value; + setTouched(touched: boolean): void { + this.touched = touched; } setInputValue(value: string): void { @@ -93,8 +94,8 @@ export function TagPickerControllerMixin(Base: TBa } handleBlur = (): void => { - this.setTouched(false); this.setInputValue(""); + this.setTouched(false); this.filterStore.search.clear(); }; @@ -130,23 +131,17 @@ export function TagPickerControllerMixin(Base: TBa return; } this.filterStore.toggle(selectedItem.value); - this.setInputValue(""); }, stateReducer(state, { changes, type }) { switch (type) { - case useCombobox.stateChangeTypes.InputKeyDownEnter: case useCombobox.stateChangeTypes.ItemClick: return { ...changes, isOpen: true, - highlightedIndex: state.highlightedIndex, - inputValue: state.inputValue + highlightedIndex: state.highlightedIndex }; default: - return { - ...changes, - highlightedIndex: changes.inputValue !== state.inputValue ? 0 : changes.highlightedIndex - }; + return changes; } } }; diff --git a/packages/shared/widget-plugin-filtering/src/controls/base/ClearButton.tsx b/packages/shared/widget-plugin-dropdown-filter/src/controls/base/ClearButton.tsx similarity index 100% rename from packages/shared/widget-plugin-filtering/src/controls/base/ClearButton.tsx rename to packages/shared/widget-plugin-dropdown-filter/src/controls/base/ClearButton.tsx diff --git a/packages/shared/widget-plugin-filtering/src/controls/base/OptionsWrapper.tsx b/packages/shared/widget-plugin-dropdown-filter/src/controls/base/OptionsWrapper.tsx similarity index 100% rename from packages/shared/widget-plugin-filtering/src/controls/base/OptionsWrapper.tsx rename to packages/shared/widget-plugin-dropdown-filter/src/controls/base/OptionsWrapper.tsx diff --git a/packages/shared/widget-plugin-filtering/src/controls/combobox/Combobox.tsx b/packages/shared/widget-plugin-dropdown-filter/src/controls/combobox/Combobox.tsx similarity index 100% rename from packages/shared/widget-plugin-filtering/src/controls/combobox/Combobox.tsx rename to packages/shared/widget-plugin-dropdown-filter/src/controls/combobox/Combobox.tsx diff --git a/packages/shared/widget-plugin-filtering/src/controls/hooks/useFloatingMenu.tsx b/packages/shared/widget-plugin-dropdown-filter/src/controls/hooks/useFloatingMenu.tsx similarity index 100% rename from packages/shared/widget-plugin-filtering/src/controls/hooks/useFloatingMenu.tsx rename to packages/shared/widget-plugin-dropdown-filter/src/controls/hooks/useFloatingMenu.tsx diff --git a/packages/shared/widget-plugin-filtering/src/controls/picker-primitives.tsx b/packages/shared/widget-plugin-dropdown-filter/src/controls/picker-primitives.tsx similarity index 100% rename from packages/shared/widget-plugin-filtering/src/controls/picker-primitives.tsx rename to packages/shared/widget-plugin-dropdown-filter/src/controls/picker-primitives.tsx diff --git a/packages/shared/widget-plugin-filtering/src/controls/select/Select.tsx b/packages/shared/widget-plugin-dropdown-filter/src/controls/select/Select.tsx similarity index 100% rename from packages/shared/widget-plugin-filtering/src/controls/select/Select.tsx rename to packages/shared/widget-plugin-dropdown-filter/src/controls/select/Select.tsx diff --git a/packages/shared/widget-plugin-filtering/src/controls/tag-picker/TagPicker.tsx b/packages/shared/widget-plugin-dropdown-filter/src/controls/tag-picker/TagPicker.tsx similarity index 100% rename from packages/shared/widget-plugin-filtering/src/controls/tag-picker/TagPicker.tsx rename to packages/shared/widget-plugin-dropdown-filter/src/controls/tag-picker/TagPicker.tsx diff --git a/packages/shared/widget-plugin-filtering/src/stores/picker/BaseSelectStore.ts b/packages/shared/widget-plugin-dropdown-filter/src/stores/BaseSelectStore.ts similarity index 65% rename from packages/shared/widget-plugin-filtering/src/stores/picker/BaseSelectStore.ts rename to packages/shared/widget-plugin-dropdown-filter/src/stores/BaseSelectStore.ts index ca1b324fd0..7ae086f7fc 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/picker/BaseSelectStore.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/stores/BaseSelectStore.ts @@ -1,6 +1,5 @@ +import { FilterData, InputData } from "@mendix/filter-commons/typings/settings"; import { action, makeObservable, observable } from "mobx"; -import { FilterData } from "../../typings/settings"; -import { isInputData } from "../utils/is-input-data"; export class BaseSelectStore { protected defaultSelected: Iterable = []; @@ -40,10 +39,33 @@ export class BaseSelectStore { } fromJSON(json: FilterData): void { - if (json == null || isInputData(json)) { + if (json === undefined || json === null || isInputData(json)) { return; } this.setSelected(json); this.blockSetDefaults = true; } } + +const fnNames = new Set([ + "empty", + "notEmpty", + "equal", + "notEqual", + "greater", + "greaterEqual", + "smaller", + "smallerEqual", + "between", + "contains", + "startsWith", + "endsWith" +]); + +export function isInputData(data: unknown): data is InputData { + if (Array.isArray(data)) { + const [name] = data; + return fnNames.has(name); + } + return false; +} diff --git a/packages/shared/widget-plugin-filtering/src/stores/picker/OptionsSerializer.ts b/packages/shared/widget-plugin-dropdown-filter/src/stores/OptionsSerializer.ts similarity index 100% rename from packages/shared/widget-plugin-filtering/src/stores/picker/OptionsSerializer.ts rename to packages/shared/widget-plugin-dropdown-filter/src/stores/OptionsSerializer.ts diff --git a/packages/shared/widget-plugin-filtering/src/stores/picker/RefFilterStore.ts b/packages/shared/widget-plugin-dropdown-filter/src/stores/RefFilterStore.ts similarity index 93% rename from packages/shared/widget-plugin-filtering/src/stores/picker/RefFilterStore.ts rename to packages/shared/widget-plugin-dropdown-filter/src/stores/RefFilterStore.ts index c545fbb634..ab2d08b67c 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/picker/RefFilterStore.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/stores/RefFilterStore.ts @@ -1,10 +1,10 @@ +import { flattenRefCond, selectedFromCond } from "@mendix/filter-commons/condition-utils"; +import { disposeBatch } from "@mendix/widget-plugin-mobx-kit/disposeBatch"; import { ListAttributeValue, ListReferenceSetValue, ListReferenceValue, ListValue, ObjectItem } from "mendix"; import { ContainsCondition, EqualsCondition, FilterCondition, LiteralExpression } from "mendix/filters"; import { association, attribute, contains, empty, equals, literal, or } from "mendix/filters/builders"; import { action, autorun, computed, makeObservable, observable, reaction, runInAction, when } from "mobx"; -import { flattenRefCond, selectedFromCond } from "../../condition-utils"; -import { disposeFx } from "../../mobx-utils"; -import { OptionWithState } from "../../typings/OptionWithState"; +import { OptionWithState } from "../typings/OptionWithState"; import { BaseSelectStore } from "./BaseSelectStore"; import { SearchStore } from "./SearchStore"; @@ -30,11 +30,6 @@ export class RefFilterStore extends BaseSelectStore { private listRef: ListReferenceValue | ListReferenceSetValue; private caption: CaptionAccessor; private searchAttrId?: ListAttributeId; - /** - * As Ref filter fetch options lazily, - * we just keep condition and - * return it if options not loaded yet. - */ private readonly initCondArray: Array; private readonly pageSize = 20; private readonly searchSize = 100; @@ -146,14 +141,14 @@ export class RefFilterStore extends BaseSelectStore { } setup(): () => void { - const [disposers, dispose] = disposeFx(); + const [add, dispose] = disposeBatch(); - disposers.push(this.search.setup()); - disposers.push(reaction(...this.searchChangeFx())); - disposers.push(autorun(...this.computeSelectedItemsFx())); + add(this.search.setup()); + add(reaction(...this.searchChangeFx())); + add(autorun(...this.computeSelectedItemsFx())); if (this.lazyMode) { - disposers.push( + add( when( () => this.fetchReady, () => this.loadMore() diff --git a/packages/shared/widget-plugin-filtering/src/stores/picker/SearchStore.ts b/packages/shared/widget-plugin-dropdown-filter/src/stores/SearchStore.ts similarity index 100% rename from packages/shared/widget-plugin-filtering/src/stores/picker/SearchStore.ts rename to packages/shared/widget-plugin-dropdown-filter/src/stores/SearchStore.ts diff --git a/packages/shared/widget-plugin-filtering/src/stores/picker/StaticSelectFilterStore.ts b/packages/shared/widget-plugin-dropdown-filter/src/stores/StaticSelectFilterStore.ts similarity index 83% rename from packages/shared/widget-plugin-filtering/src/stores/picker/StaticSelectFilterStore.ts rename to packages/shared/widget-plugin-dropdown-filter/src/stores/StaticSelectFilterStore.ts index 97b27353b9..2501db5882 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/picker/StaticSelectFilterStore.ts +++ b/packages/shared/widget-plugin-dropdown-filter/src/stores/StaticSelectFilterStore.ts @@ -1,10 +1,10 @@ +import { selectedFromCond } from "@mendix/filter-commons/condition-utils"; +import { disposeBatch } from "@mendix/widget-plugin-mobx-kit/disposeBatch"; import { ListAttributeValue } from "mendix"; import { FilterCondition, LiteralExpression } from "mendix/filters"; import { attribute, equals, literal, or } from "mendix/filters/builders"; import { action, computed, makeObservable, observable } from "mobx"; -import { selectedFromCond } from "../../condition-utils"; -import { disposeFx } from "../../mobx-utils"; -import { OptionWithState } from "../../typings/OptionWithState"; +import { OptionWithState } from "../typings/OptionWithState"; import { BaseSelectStore } from "./BaseSelectStore"; import { SearchStore } from "./SearchStore"; @@ -47,7 +47,10 @@ export class StaticSelectFilterStore extends BaseSelectStore { const selected = this.selected; if (this._customOptions.length > 0) { - return this._customOptions.map(opt => ({ ...opt, selected: selected.has(opt.value) })); + return this._customOptions.map(opt => ({ + ...opt, + selected: selected.has(opt.value) + })); } const options = this._attributes.flatMap(attr => @@ -93,8 +96,8 @@ export class StaticSelectFilterStore extends BaseSelectStore { } setup(): () => void { - const [disposers, dispose] = disposeFx(); - disposers.push(this.search.setup()); + const [add, dispose] = disposeBatch(); + add(this.search.setup()); return dispose; } @@ -153,30 +156,23 @@ function getFilterCondition( listAttribute: ListAttributeValue | undefined, selected: Set ): FilterCondition | undefined { - if (!listAttribute || !listAttribute.filterable || selected.size === 0) { + if (!listAttribute) { return undefined; } - - const { id, type } = listAttribute; - const filterAttribute = attribute(id); - - const filters = [...selected] - .filter(value => listAttribute.universe?.includes(universeValue(listAttribute.type, value))) - .map(value => equals(filterAttribute, literal(universeValue(type, value)))); - - if (filters.length > 1) { - return or(...filters); + if (selected.size < 1) { + return undefined; } - const [filterValue] = filters; - return filterValue; + const attrExp = attribute(listAttribute.id); + const conditions = Array.from(selected, value => + equals(attrExp, literal(universeValue(listAttribute.type, value))) + ); + + return conditions.length > 1 ? or(...conditions) : conditions[0]; } function universeValue(type: ListAttributeValue["type"], value: string): boolean | string { if (type === "Boolean") { - if (value !== "true" && value !== "false") { - return value; - } return value === "true"; } return value; diff --git a/packages/shared/widget-plugin-dropdown-filter/src/typings/IJSActionsControlled.ts b/packages/shared/widget-plugin-dropdown-filter/src/typings/IJSActionsControlled.ts new file mode 100644 index 0000000000..50117d47ba --- /dev/null +++ b/packages/shared/widget-plugin-dropdown-filter/src/typings/IJSActionsControlled.ts @@ -0,0 +1,11 @@ +export interface IJSActionsControlled { + handleResetValue: ResetHandler; + handleSetValue: SetValueHandler; +} + +export type ResetHandler = (useDefaultValue: boolean) => void; + +export type SetValueHandler = ( + useDefaultValue: boolean, + params: { operators: any; stringValue: string; numberValue: Big.Big; dateTimeValue: Date; dateTimeValue2: Date } +) => void; diff --git a/packages/shared/widget-plugin-filtering/src/typings/OptionWithState.ts b/packages/shared/widget-plugin-dropdown-filter/src/typings/OptionWithState.ts similarity index 100% rename from packages/shared/widget-plugin-filtering/src/typings/OptionWithState.ts rename to packages/shared/widget-plugin-dropdown-filter/src/typings/OptionWithState.ts diff --git a/packages/shared/widget-plugin-dropdown-filter/src/typings/PickerFilterStore.ts b/packages/shared/widget-plugin-dropdown-filter/src/typings/PickerFilterStore.ts new file mode 100644 index 0000000000..02d0cb0d86 --- /dev/null +++ b/packages/shared/widget-plugin-dropdown-filter/src/typings/PickerFilterStore.ts @@ -0,0 +1,4 @@ +import { RefFilterStore } from "../stores/RefFilterStore"; +import { StaticSelectFilterStore } from "../stores/StaticSelectFilterStore"; + +export type PickerFilterStore = RefFilterStore | StaticSelectFilterStore; diff --git a/packages/shared/widget-plugin-dropdown-filter/src/typings/type-utils.ts b/packages/shared/widget-plugin-dropdown-filter/src/typings/type-utils.ts new file mode 100644 index 0000000000..443afb18a9 --- /dev/null +++ b/packages/shared/widget-plugin-dropdown-filter/src/typings/type-utils.ts @@ -0,0 +1 @@ +export type GConstructor = new (...args: any[]) => T; diff --git a/packages/shared/widget-plugin-dropdown-filter/tsconfig.json b/packages/shared/widget-plugin-dropdown-filter/tsconfig.json new file mode 100644 index 0000000000..052cc1cee7 --- /dev/null +++ b/packages/shared/widget-plugin-dropdown-filter/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@mendix/tsconfig-web-widgets/esm-library-with-jsx", + "include": ["./src/**/*"], + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src", + "resolveJsonModule": true + } +} diff --git a/packages/shared/widget-plugin-filtering/package.json b/packages/shared/widget-plugin-filtering/package.json index e92778dc25..8f077978c2 100644 --- a/packages/shared/widget-plugin-filtering/package.json +++ b/packages/shared/widget-plugin-filtering/package.json @@ -28,18 +28,19 @@ "dev": "tsc --watch", "format": "prettier --write .", "lint": "eslint src/ package.json", - "prepare": "tsc", "test": "jest" }, "dependencies": { "@floating-ui/react": "^0.26.27", "@floating-ui/react-dom": "^2.1.2", + "@mendix/filter-commons": "workspace:*", + "@mendix/widget-plugin-dropdown-filter": "workspace:*", "@mendix/widget-plugin-external-events": "workspace:*", "@mendix/widget-plugin-hooks": "workspace:*", "@mendix/widget-plugin-mobx-kit": "workspace:^", "@mendix/widget-plugin-platform": "workspace:*", "downshift": "^9.0.8", - "mendix": "^10.16.49747", + "mendix": "^10.21.64362", "mobx": "6.12.3", "mobx-react-lite": "4.0.7" }, diff --git a/packages/shared/widget-plugin-filtering/src/__tests__/DateInputFilterStore.spec.ts b/packages/shared/widget-plugin-filtering/src/__tests__/DateInputFilterStore.spec.ts index 25ba577ab6..b54f27e74a 100644 --- a/packages/shared/widget-plugin-filtering/src/__tests__/DateInputFilterStore.spec.ts +++ b/packages/shared/widget-plugin-filtering/src/__tests__/DateInputFilterStore.spec.ts @@ -1,5 +1,5 @@ jest.mock("mendix/filters/builders"); -import { attrId, listAttr } from "@mendix/widget-plugin-test-utils"; +import { attrId, listAttribute } from "@mendix/widget-plugin-test-utils"; import { ListAttributeValue } from "mendix"; import { and, @@ -28,7 +28,7 @@ describe("DateInputFilterStore", () => { let store: DateInputFilterStore; beforeEach(() => { - attr = listAttr(() => new Date()); + attr = listAttribute(() => new Date()); attr.id = attrId("attr_unset"); store = new DateInputFilterStore([attr], null); }); @@ -125,7 +125,7 @@ describe("DateInputFilterStore", () => { }); it("uses 'or' when have multiple attributes", () => { - const [attr1, attr2] = [listAttr(() => new Date()), listAttr(() => new Date())]; + const [attr1, attr2] = [listAttribute(() => new Date()), listAttribute(() => new Date())]; store = new DateInputFilterStore([attr1, attr2], null); const date1 = new Date("2024-09-17T01:01:01.000Z"); store.filterFunction = "equal"; @@ -146,7 +146,7 @@ describe("DateInputFilterStore", () => { let store: DateInputFilterStore; beforeEach(() => { - attr = listAttr(() => new Date()); + attr = listAttribute(() => new Date()); store = new DateInputFilterStore([attr], null); expect(store.filterFunction).toBe("equal"); }); diff --git a/packages/shared/widget-plugin-filtering/src/context.ts b/packages/shared/widget-plugin-filtering/src/context.ts index e34c9f5375..981b934025 100644 --- a/packages/shared/widget-plugin-filtering/src/context.ts +++ b/packages/shared/widget-plugin-filtering/src/context.ts @@ -1,10 +1,10 @@ -import { FilterCondition } from "mendix/filters/index.js"; +import { PickerFilterStore } from "@mendix/widget-plugin-dropdown-filter/typings/PickerFilterStore"; +import { FilterCondition } from "mendix/filters"; import { Context, createContext, useContext } from "react"; -import { APIError, ENOCONTEXT } from "./errors.js"; -import { Result, error, value } from "./result-meta.js"; -import { FilterObserver } from "./typings/FilterObserver.js"; -import { InputFilterInterface } from "./typings/InputFilterInterface.js"; -import { PickerFilterStore } from "./typings/PickerFilterStore.js"; +import { APIError, ENOCONTEXT } from "./errors"; +import { Result, error, value } from "./result-meta"; +import { FilterObserver } from "./typings/FilterObserver"; +import { InputFilterInterface } from "./typings/InputFilterInterface"; export interface FilterAPI { version: 3; diff --git a/packages/shared/widget-plugin-filtering/src/controllers/input/NumberInputController.ts b/packages/shared/widget-plugin-filtering/src/controllers/input/NumberInputController.ts index 3edbd1e4f9..685846dacc 100644 --- a/packages/shared/widget-plugin-filtering/src/controllers/input/NumberInputController.ts +++ b/packages/shared/widget-plugin-filtering/src/controllers/input/NumberInputController.ts @@ -1,8 +1,12 @@ +import { + FilterFunctionBinary, + FilterFunctionGeneric, + FilterFunctionNonValue +} from "@mendix/filter-commons/typings/FilterFunctions"; import { debounce } from "@mendix/widget-plugin-platform/utils/debounce"; import { action, autorun, computed, makeObservable, reaction, runInAction } from "mobx"; import { createRef } from "react"; import { InputStore } from "../../stores/input/InputStore"; -import { FilterFunctionBinary, FilterFunctionGeneric, FilterFunctionNonValue } from "../../typings/FilterFunctions"; import { FilterV, Number_InputFilterInterface } from "../../typings/InputFilterInterface"; export type Params = { diff --git a/packages/shared/widget-plugin-filtering/src/controllers/input/StringInputController.ts b/packages/shared/widget-plugin-filtering/src/controllers/input/StringInputController.ts index 91aef3be74..6f58b6730b 100644 --- a/packages/shared/widget-plugin-filtering/src/controllers/input/StringInputController.ts +++ b/packages/shared/widget-plugin-filtering/src/controllers/input/StringInputController.ts @@ -1,13 +1,13 @@ -import { debounce } from "@mendix/widget-plugin-platform/utils/debounce"; -import { action, autorun, computed, makeObservable, reaction, runInAction } from "mobx"; -import { createRef } from "react"; -import { InputStore } from "../../stores/input/InputStore"; import { FilterFunctionBinary, FilterFunctionGeneric, FilterFunctionNonValue, FilterFunctionString -} from "../../typings/FilterFunctions"; +} from "@mendix/filter-commons/typings/FilterFunctions"; +import { debounce } from "@mendix/widget-plugin-platform/utils/debounce"; +import { action, autorun, computed, makeObservable, reaction, runInAction } from "mobx"; +import { createRef } from "react"; +import { InputStore } from "../../stores/input/InputStore"; import { FilterV, String_InputFilterInterface } from "../../typings/InputFilterInterface"; export type Params = { diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/RefComboboxController.ts b/packages/shared/widget-plugin-filtering/src/controllers/picker/RefComboboxController.ts deleted file mode 100644 index d211132988..0000000000 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/RefComboboxController.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ComboboxControllerMixin } from "./mixins/ComboboxControllerMixin"; -import { RefBaseController, RefBaseControllerProps } from "./RefBaseController"; - -export class RefComboboxController extends ComboboxControllerMixin(RefBaseController) { - constructor(props: RefBaseControllerProps) { - super({ ...props, multiselect: false }); - this.inputPlaceholder = props.placeholder ?? "Search"; - } - - handleFocus = (event: React.FocusEvent): void => { - super.handleFocus(event); - this.filterStore.setFetchReady(true); - }; - - handleMenuScrollEnd = (): void => { - this.filterStore.loadMore(); - }; -} diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/RefTagPickerController.ts b/packages/shared/widget-plugin-filtering/src/controllers/picker/RefTagPickerController.ts deleted file mode 100644 index 0595766f8d..0000000000 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/RefTagPickerController.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { RefBaseController, RefBaseControllerProps } from "./RefBaseController"; -import { TagPickerControllerMixin } from "./mixins/TagPickerControllerMixin"; - -type SelectionMethodEnum = "checkbox" | "rowClick"; -type SelectedItemsStyleEnum = "text" | "boxes"; - -interface Props extends RefBaseControllerProps { - selectionMethod: SelectionMethodEnum; - selectedItemsStyle: SelectedItemsStyleEnum; -} - -export class RefTagPickerController extends TagPickerControllerMixin(RefBaseController) { - selectionMethod: SelectionMethodEnum; - selectedStyle: SelectedItemsStyleEnum; - - constructor(props: Props) { - super(props); - this.inputPlaceholder = props.placeholder ?? "Search"; - this.filterSelectedOptions = props.selectionMethod === "rowClick"; - this.selectedStyle = props.selectedItemsStyle; - this.selectionMethod = this.selectedStyle === "boxes" ? props.selectionMethod : "checkbox"; - } - - handleFocus = (): void => { - this.filterStore.setFetchReady(true); - }; - - handleMenuScrollEnd = (): void => { - this.filterStore.loadMore(); - }; -} diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/StaticComboboxController.ts b/packages/shared/widget-plugin-filtering/src/controllers/picker/StaticComboboxController.ts deleted file mode 100644 index c6410a631c..0000000000 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/StaticComboboxController.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { StaticBaseController, StaticBaseControllerProps } from "./StaticBaseController"; -import { ComboboxControllerMixin } from "./mixins/ComboboxControllerMixin"; - -export class StaticComboboxController extends ComboboxControllerMixin(StaticBaseController) { - constructor(props: StaticBaseControllerProps) { - super({ ...props, multiselect: false }); - this.inputPlaceholder = props.placeholder ?? "Search"; - } -} diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/StaticTagPickerController.ts b/packages/shared/widget-plugin-filtering/src/controllers/picker/StaticTagPickerController.ts deleted file mode 100644 index 11bc90fd30..0000000000 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/StaticTagPickerController.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { StaticBaseController, StaticBaseControllerProps } from "./StaticBaseController"; -import { TagPickerControllerMixin } from "./mixins/TagPickerControllerMixin"; - -type SelectionMethodEnum = "checkbox" | "rowClick"; -type SelectedItemsStyleEnum = "text" | "boxes"; - -interface Props extends StaticBaseControllerProps { - selectionMethod: SelectionMethodEnum; - selectedItemsStyle: SelectedItemsStyleEnum; -} - -export class StaticTagPickerController extends TagPickerControllerMixin(StaticBaseController) { - selectionMethod: SelectionMethodEnum; - selectedStyle: SelectedItemsStyleEnum; - - constructor(props: Props) { - super(props); - this.inputPlaceholder = props.placeholder ?? "Search"; - this.filterSelectedOptions = props.selectionMethod === "rowClick"; - this.selectedStyle = props.selectedItemsStyle; - this.selectionMethod = this.selectedStyle === "boxes" ? props.selectionMethod : "checkbox"; - } -} diff --git a/packages/shared/widget-plugin-filtering/src/controllers/picker/mixins/ComboboxControllerMixin.ts b/packages/shared/widget-plugin-filtering/src/controllers/picker/mixins/ComboboxControllerMixin.ts deleted file mode 100644 index 0364d9331f..0000000000 --- a/packages/shared/widget-plugin-filtering/src/controllers/picker/mixins/ComboboxControllerMixin.ts +++ /dev/null @@ -1,176 +0,0 @@ -import { useCombobox, UseComboboxProps } from "downshift"; -import { action, autorun, computed, makeObservable, observable, reaction } from "mobx"; -import { disposeFx } from "../../../mobx-utils"; -import { SearchStore } from "../../../stores/picker/SearchStore"; -import { OptionWithState } from "../../../typings/OptionWithState"; -import { GConstructor } from "../../../typings/type-utils"; - -export interface FilterStore { - clear: () => void; - setSelected: (value: Iterable) => void; - selected: Set; - options: OptionWithState[]; - selectedOptions: OptionWithState[]; - search: SearchStore; -} - -type BaseController = GConstructor<{ - filterStore: FilterStore; - multiselect: boolean; - setup(): () => void; -}>; - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function ComboboxControllerMixin(Base: TBase) { - return class ComboboxControllerMixin extends Base { - touched = false; - inputValue = ""; - inputPlaceholder = ""; - - constructor(...args: any[]) { - super(...args); - - makeObservable(this, { - inputValue: observable, - setInputValue: action, - touched: observable, - setTouched: action, - selectedIndex: computed, - selectedOption: computed, - isEmpty: computed, - options: computed, - handleBlur: action, - handleClear: action - }); - } - - setup(): () => void { - const [disposers, dispose] = disposeFx(); - disposers.push(autorun(...this.searchSyncFx())); - - // Set input when store state changes - disposers.push(reaction(...this.storeSyncFx())); - - disposers.push(super.setup()); - this.setInputValue(this.inputInitValue); - return dispose; - } - - searchSyncFx(): Parameters { - const effect = (): void => { - const { touched, inputValue } = this; - if (touched) { - this.filterStore.search.setBuffer(inputValue); - } else { - this.filterStore.search.clear(); - } - }; - - return [effect]; - } - - storeSyncFx(): Parameters { - const data = (): string => this.selectedOption?.caption ?? ""; - const effect = (caption: string): void => { - if (!this.touched) { - this.setInputValue(caption); - } - }; - return [data, effect]; - } - - get options(): OptionWithState[] { - return this.filterStore.options; - } - - get isEmpty(): boolean { - return this.filterStore.selected.size === 0; - } - - get selectedIndex(): number { - const index = this.filterStore.options.findIndex(option => option.selected); - return Math.max(index, 0); - } - - get selectedOption(): OptionWithState | null { - return this.filterStore.selectedOptions.at(0) ?? null; - } - - get inputInitValue(): string { - if (this.selectedOption) { - return this.selectedOption.caption; - } - if (this.filterStore.selected.size === 0) { - return ""; - } else { - return "1 item selected (but not applied)"; - } - } - - setTouched(value: boolean): void { - this.touched = value; - } - - setInputValue(value: string): void { - this.inputValue = value; - } - - handleFocus(event: React.FocusEvent): void { - event.target.select(); - } - - handleBlur = (): void => { - this.setTouched(false); - this.setInputValue(this.selectedOption?.caption ?? ""); - this.filterStore.search.clear(); - }; - - handleClear = (): void => { - this.setTouched(false); - this.setInputValue(""); - this.filterStore.clear(); - }; - - useComboboxProps = (): UseComboboxProps => { - const props: UseComboboxProps = { - items: this.filterStore.options, - itemToKey: item => item?.value, - itemToString: item => item?.caption ?? "", - inputValue: this.inputValue, - defaultHighlightedIndex: this.selectedIndex, - onInputValueChange: changes => { - // Blur is handled by handleBlur; - if (changes.type === useCombobox.stateChangeTypes.InputBlur) { - return; - } - if (changes.type === useCombobox.stateChangeTypes.InputKeyDownEscape) { - this.handleClear(); - return; - } - if (changes.type === useCombobox.stateChangeTypes.InputChange) { - this.setTouched(true); - } - this.setInputValue(changes.inputValue); - }, - onSelectedItemChange: ({ selectedItem, type }) => { - if ( - type === useCombobox.stateChangeTypes.InputBlur || - type === useCombobox.stateChangeTypes.InputKeyDownEscape - ) { - return; - } - - this.setTouched(false); - this.filterStore.setSelected(selectedItem ? [selectedItem.value] : []); - }, - stateReducer(state, { changes }) { - return { - ...changes, - highlightedIndex: changes.inputValue !== state.inputValue ? 0 : changes.highlightedIndex - }; - } - }; - return props; - }; - }; -} diff --git a/packages/shared/widget-plugin-filtering/src/controls/filter-selector/useSelect.tsx b/packages/shared/widget-plugin-filtering/src/controls/filter-selector/useSelect.tsx index c589f08c33..c8e901ea87 100644 --- a/packages/shared/widget-plugin-filtering/src/controls/filter-selector/useSelect.tsx +++ b/packages/shared/widget-plugin-filtering/src/controls/filter-selector/useSelect.tsx @@ -36,7 +36,7 @@ export function useSelect(props: useSelectProps): ViewProps { items: props.options, selectedItem, itemToString, - onSelectedItemChange: ({ selectedItem }) => props.onSelect(selectedItem.value) + onSelectedItemChange: ({ selectedItem }) => props.onSelect(selectedItem?.value ?? null) }); const { refs, floatingStyles } = useFloating({ diff --git a/packages/shared/widget-plugin-filtering/src/controls/input/InputWithFilters.tsx b/packages/shared/widget-plugin-filtering/src/controls/input/InputWithFilters.tsx index dd779c096f..5c203b23bf 100644 --- a/packages/shared/widget-plugin-filtering/src/controls/input/InputWithFilters.tsx +++ b/packages/shared/widget-plugin-filtering/src/controls/input/InputWithFilters.tsx @@ -3,7 +3,7 @@ import { observer } from "mobx-react-lite"; import classNames from "classnames"; import { FilterSelector } from "../filter-selector/FilterSelector"; import { InputComponentProps } from "./typings"; -import { AllFunctions } from "../../typings/FilterFunctions"; +import { AllFunctions } from "@mendix/filter-commons/typings/FilterFunctions"; export function InputWithFiltersComponent(props: InputComponentProps): React.ReactElement { const { diff --git a/packages/shared/widget-plugin-filtering/src/controls/input/typings.ts b/packages/shared/widget-plugin-filtering/src/controls/input/typings.ts index becf0608be..be875f3474 100644 --- a/packages/shared/widget-plugin-filtering/src/controls/input/typings.ts +++ b/packages/shared/widget-plugin-filtering/src/controls/input/typings.ts @@ -1,5 +1,5 @@ +import { AllFunctions } from "@mendix/filter-commons/typings/FilterFunctions"; import { InputStore } from "../../stores/input/InputStore"; -import { AllFunctions } from "../../typings/FilterFunctions"; import { InputFilterInterface } from "../../typings/InputFilterInterface"; export interface BaseProps { diff --git a/packages/shared/widget-plugin-filtering/src/custom-filter-api/BaseStoreProvider.ts b/packages/shared/widget-plugin-filtering/src/custom-filter-api/BaseStoreProvider.ts index 883290b619..7cd0dfc276 100644 --- a/packages/shared/widget-plugin-filtering/src/custom-filter-api/BaseStoreProvider.ts +++ b/packages/shared/widget-plugin-filtering/src/custom-filter-api/BaseStoreProvider.ts @@ -1,7 +1,7 @@ +import { isAnd, isTag } from "@mendix/filter-commons/condition-utils"; import { disposeBatch } from "@mendix/widget-plugin-mobx-kit/disposeBatch"; import { ISetupable } from "@mendix/widget-plugin-mobx-kit/setupable"; import { FilterCondition } from "mendix/filters"; -import { isAnd, isTag } from "../condition-utils"; import { FilterAPI } from "../context"; import { Filter } from "../typings/FilterObserver"; diff --git a/packages/shared/widget-plugin-filtering/src/helpers/useDateSync.ts b/packages/shared/widget-plugin-filtering/src/helpers/useDateSync.ts index cc09e597a3..b1363eb67a 100644 --- a/packages/shared/widget-plugin-filtering/src/helpers/useDateSync.ts +++ b/packages/shared/widget-plugin-filtering/src/helpers/useDateSync.ts @@ -1,7 +1,11 @@ +import { + FilterFunctionBinary, + FilterFunctionGeneric, + FilterFunctionNonValue +} from "@mendix/filter-commons/typings/FilterFunctions"; import { ActionValue, EditableValue } from "mendix"; import { reaction } from "mobx"; import { useEffect, useRef } from "react"; -import { FilterFunctionBinary, FilterFunctionGeneric, FilterFunctionNonValue } from "../typings/FilterFunctions"; import { InputFilterInterface } from "../typings/InputFilterInterface"; interface Props { diff --git a/packages/shared/widget-plugin-filtering/src/helpers/useNumberFilterController.ts b/packages/shared/widget-plugin-filtering/src/helpers/useNumberFilterController.ts index 9100b1fd16..96d710c6b1 100644 --- a/packages/shared/widget-plugin-filtering/src/helpers/useNumberFilterController.ts +++ b/packages/shared/widget-plugin-filtering/src/helpers/useNumberFilterController.ts @@ -1,7 +1,7 @@ +import { AllFunctions } from "@mendix/filter-commons/typings/FilterFunctions"; import { useEffect, useState } from "react"; import { NumberFilterController, Params } from "../controllers/input/NumberInputController"; import { ArgumentInterface } from "../typings/ArgumentInterface"; -import { AllFunctions } from "../typings/FilterFunctions"; import { FilterFn, InputFilterBaseInterface } from "../typings/InputFilterInterface"; export function useNumberFilterController< diff --git a/packages/shared/widget-plugin-filtering/src/helpers/usePickerJSActions.ts b/packages/shared/widget-plugin-filtering/src/helpers/usePickerJSActions.ts index ee7a00dc1a..6c76d13a76 100644 --- a/packages/shared/widget-plugin-filtering/src/helpers/usePickerJSActions.ts +++ b/packages/shared/widget-plugin-filtering/src/helpers/usePickerJSActions.ts @@ -1,5 +1,5 @@ +import { IJSActionsControlled } from "@mendix/filter-commons/typings/IJSActionsControlled"; import { useOnResetValueEvent, useOnSetValueEvent } from "@mendix/widget-plugin-external-events/hooks"; -import { IJSActionsControlled } from "../typings/IJSActionsControlled"; export function usePickerJSActions( controller: IJSActionsControlled, diff --git a/packages/shared/widget-plugin-filtering/src/helpers/useSelectFilterAPI.ts b/packages/shared/widget-plugin-filtering/src/helpers/useSelectFilterAPI.ts index 24c7d9fa57..f27fd6d6cd 100644 --- a/packages/shared/widget-plugin-filtering/src/helpers/useSelectFilterAPI.ts +++ b/packages/shared/widget-plugin-filtering/src/helpers/useSelectFilterAPI.ts @@ -1,8 +1,8 @@ +import { PickerFilterStore } from "@mendix/widget-plugin-dropdown-filter/typings/PickerFilterStore"; import { useRef } from "react"; import { FilterType, getFilterStore, useFilterContextValue } from "../context"; import { APIError, EMISSINGSTORE, EStoreTypeMisMatch, OPTIONS_NOT_FILTERABLE } from "../errors"; import { Result, error, value } from "../result-meta"; -import { PickerFilterStore } from "../typings/PickerFilterStore"; export interface Select_FilterAPIv2 { filterStore: PickerFilterStore; diff --git a/packages/shared/widget-plugin-filtering/src/helpers/useStringFilterController.ts b/packages/shared/widget-plugin-filtering/src/helpers/useStringFilterController.ts index 35c26ad8c4..dbe9e83fb7 100644 --- a/packages/shared/widget-plugin-filtering/src/helpers/useStringFilterController.ts +++ b/packages/shared/widget-plugin-filtering/src/helpers/useStringFilterController.ts @@ -1,7 +1,7 @@ +import { AllFunctions } from "@mendix/filter-commons/typings/FilterFunctions"; import { useEffect, useState } from "react"; import { Params, StringFilterController } from "../controllers/input/StringInputController"; import { ArgumentInterface } from "../typings/ArgumentInterface"; -import { AllFunctions } from "../typings/FilterFunctions"; import { FilterFn, InputFilterBaseInterface } from "../typings/InputFilterInterface"; export function useStringFilterController< diff --git a/packages/shared/widget-plugin-filtering/src/mobx-utils.ts b/packages/shared/widget-plugin-filtering/src/mobx-utils.ts deleted file mode 100644 index 0b5ab0649a..0000000000 --- a/packages/shared/widget-plugin-filtering/src/mobx-utils.ts +++ /dev/null @@ -1,10 +0,0 @@ -export function disposeFx(): [disposers: Array<() => void>, dispose: () => void] { - const disposers: Array<() => void> = []; - return [ - disposers, - () => { - disposers.forEach(dispose => dispose()); - disposers.length = 0; - } - ]; -} diff --git a/packages/shared/widget-plugin-filtering/src/providers/LegacyPv.ts b/packages/shared/widget-plugin-filtering/src/providers/LegacyPv.ts index d9cb4f3b14..d81a80e6c0 100644 --- a/packages/shared/widget-plugin-filtering/src/providers/LegacyPv.ts +++ b/packages/shared/widget-plugin-filtering/src/providers/LegacyPv.ts @@ -1,3 +1,6 @@ +import { FiltersSettingsMap } from "@mendix/filter-commons/typings/settings"; +import { StaticSelectFilterStore } from "@mendix/widget-plugin-dropdown-filter/stores/StaticSelectFilterStore"; +import { PickerFilterStore } from "@mendix/widget-plugin-dropdown-filter/typings/PickerFilterStore"; import { ListAttributeValue } from "mendix"; import { FilterCondition } from "mendix/filters"; import { action, comparer, computed, makeObservable, observable, reaction } from "mobx"; @@ -5,10 +8,7 @@ import { FilterType as Ft, LegacyProvider } from "../context"; import { DateInputFilterStore } from "../stores/input/DateInputFilterStore"; import { NumberInputFilterStore } from "../stores/input/NumberInputFilterStore"; import { StringInputFilterStore } from "../stores/input/StringInputFilterStore"; -import { StaticSelectFilterStore } from "../stores/picker/StaticSelectFilterStore"; import { InputFilterInterface } from "../typings/InputFilterInterface"; -import { PickerFilterStore } from "../typings/PickerFilterStore"; -import { FiltersSettingsMap } from "../typings/settings"; type FilterMap = { [Ft.STRING]: StringInputFilterStore | null; diff --git a/packages/shared/widget-plugin-filtering/src/stores/generic/CustomFilterHost.ts b/packages/shared/widget-plugin-filtering/src/stores/generic/CustomFilterHost.ts index b798603b73..a999e31901 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/generic/CustomFilterHost.ts +++ b/packages/shared/widget-plugin-filtering/src/stores/generic/CustomFilterHost.ts @@ -1,9 +1,9 @@ +import { tag } from "@mendix/filter-commons/condition-utils"; +import { FiltersSettingsMap } from "@mendix/filter-commons/typings/settings"; import { FilterCondition } from "mendix/filters"; import { and } from "mendix/filters/builders"; import { autorun, makeAutoObservable } from "mobx"; -import { tag } from "../../condition-utils"; import { Filter, FilterObserver } from "../../typings/FilterObserver"; -import { FiltersSettingsMap } from "../../typings/settings"; export class CustomFilterHost implements FilterObserver { private filters: Map = new Map(); diff --git a/packages/shared/widget-plugin-filtering/src/stores/generic/HeaderFiltersStore.ts b/packages/shared/widget-plugin-filtering/src/stores/generic/HeaderFiltersStore.ts index f627172731..c09a1d540e 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/generic/HeaderFiltersStore.ts +++ b/packages/shared/widget-plugin-filtering/src/stores/generic/HeaderFiltersStore.ts @@ -1,3 +1,4 @@ +import { FiltersSettingsMap } from "@mendix/filter-commons/typings/settings"; import { ListAttributeValue } from "mendix"; import { FilterCondition } from "mendix/filters"; import { computed, makeObservable } from "mobx"; @@ -6,7 +7,6 @@ import { APIError } from "../../errors"; import { LegacyPv } from "../../providers/LegacyPv"; import { Result, value } from "../../result-meta"; import { FilterObserver } from "../../typings/FilterObserver"; -import { FiltersSettingsMap } from "../../typings/settings"; export interface FilterListType { filter: ListAttributeValue; diff --git a/packages/shared/widget-plugin-filtering/src/stores/input/BaseInputFilterStore.ts b/packages/shared/widget-plugin-filtering/src/stores/input/BaseInputFilterStore.ts index 49b3eaa5e6..426305b985 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/input/BaseInputFilterStore.ts +++ b/packages/shared/widget-plugin-filtering/src/stores/input/BaseInputFilterStore.ts @@ -1,3 +1,5 @@ +import { AllFunctions } from "@mendix/filter-commons/typings/FilterFunctions"; +import { FilterData, InputData } from "@mendix/filter-commons/typings/settings"; import { Big } from "big.js"; import { AttributeMetaData } from "mendix"; import { FilterCondition } from "mendix/filters"; @@ -17,8 +19,6 @@ import { startsWith } from "mendix/filters/builders"; import { action, computed, makeObservable, observable } from "mobx"; -import { AllFunctions } from "../../typings/FilterFunctions"; -import { FilterData, InputData } from "../../typings/settings"; import { Argument } from "./Argument"; type StateTuple = [Fn] | [Fn, V] | [Fn, V, V]; diff --git a/packages/shared/widget-plugin-filtering/src/stores/input/DateInputFilterStore.ts b/packages/shared/widget-plugin-filtering/src/stores/input/DateInputFilterStore.ts index 7a8807a803..b7fbcfcbf5 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/input/DateInputFilterStore.ts +++ b/packages/shared/widget-plugin-filtering/src/stores/input/DateInputFilterStore.ts @@ -1,3 +1,18 @@ +import { + betweenToState, + isAnd, + isEmptyExp, + isNotEmptyExp, + isOr, + singularToState +} from "@mendix/filter-commons/condition-utils"; +import { + FilterFunctionBinary, + FilterFunctionGeneric, + FilterFunctionNonValue +} from "@mendix/filter-commons/typings/FilterFunctions"; +import { FilterName } from "@mendix/filter-commons/typings/mendix"; +import { FilterData, InputData } from "@mendix/filter-commons/typings/settings"; import { AttributeMetaData, DateTimeFormatter, ListAttributeValue, SimpleFormatter } from "mendix"; import { AndCondition, FilterCondition, LiteralExpression } from "mendix/filters"; import { @@ -15,11 +30,7 @@ import { or } from "mendix/filters/builders"; import { action, comparer, IReactionDisposer, makeObservable, observable, reaction } from "mobx"; -import { betweenToState, isAnd, isEmptyExp, isNotEmptyExp, isOr, singularToState } from "../../condition-utils"; -import { FilterFunctionBinary, FilterFunctionGeneric, FilterFunctionNonValue } from "../../typings/FilterFunctions"; import { Date_InputFilterInterface } from "../../typings/InputFilterInterface"; -import { FilterFunction } from "../../typings/mendix"; -import { FilterData, InputData } from "../../typings/settings"; import { DateArgument } from "./Argument"; import { BaseInputFilterStore } from "./BaseInputFilterStore"; @@ -249,7 +260,7 @@ export class DateInputFilterStore } } - private mapFn = (name: FilterFunction | "between" | "empty" | "notEmpty"): DateFns => { + private mapFn = (name: FilterName | "between" | "empty" | "notEmpty"): DateFns => { switch (name) { case "day:=": return "equal"; diff --git a/packages/shared/widget-plugin-filtering/src/stores/input/NumberInputFilterStore.ts b/packages/shared/widget-plugin-filtering/src/stores/input/NumberInputFilterStore.ts index 18a302d02d..7985c66ba9 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/input/NumberInputFilterStore.ts +++ b/packages/shared/widget-plugin-filtering/src/stores/input/NumberInputFilterStore.ts @@ -1,11 +1,15 @@ +import { inputStateFromCond } from "@mendix/filter-commons/condition-utils"; +import { + FilterFunctionBinary, + FilterFunctionGeneric, + FilterFunctionNonValue +} from "@mendix/filter-commons/typings/FilterFunctions"; +import { FilterData, InputData } from "@mendix/filter-commons/typings/settings"; import { Big } from "big.js"; import { AttributeMetaData, ListAttributeValue, SimpleFormatter } from "mendix"; import { FilterCondition } from "mendix/filters"; import { action, comparer, makeObservable } from "mobx"; -import { inputStateFromCond } from "../../condition-utils"; -import { FilterFunctionBinary, FilterFunctionGeneric, FilterFunctionNonValue } from "../../typings/FilterFunctions"; import { Number_InputFilterInterface } from "../../typings/InputFilterInterface"; -import { FilterData, InputData } from "../../typings/settings"; import { NumberArgument } from "./Argument"; import { BaseInputFilterStore } from "./BaseInputFilterStore"; import { baseNames } from "./fn-mappers"; diff --git a/packages/shared/widget-plugin-filtering/src/stores/input/StringInputFilterStore.ts b/packages/shared/widget-plugin-filtering/src/stores/input/StringInputFilterStore.ts index 31c720798b..3bae4046c5 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/input/StringInputFilterStore.ts +++ b/packages/shared/widget-plugin-filtering/src/stores/input/StringInputFilterStore.ts @@ -1,15 +1,15 @@ -import { AttributeMetaData, ListAttributeValue, SimpleFormatter } from "mendix"; -import { FilterCondition } from "mendix/filters"; -import { action, comparer, makeObservable } from "mobx"; -import { inputStateFromCond } from "../../condition-utils"; +import { inputStateFromCond } from "@mendix/filter-commons/condition-utils"; import { FilterFunctionBinary, FilterFunctionGeneric, FilterFunctionNonValue, FilterFunctionString -} from "../../typings/FilterFunctions"; +} from "@mendix/filter-commons/typings/FilterFunctions"; +import { FilterData, InputData } from "@mendix/filter-commons/typings/settings"; +import { AttributeMetaData, ListAttributeValue, SimpleFormatter } from "mendix"; +import { FilterCondition } from "mendix/filters"; +import { action, comparer, makeObservable } from "mobx"; import { String_InputFilterInterface } from "../../typings/InputFilterInterface"; -import { FilterData, InputData } from "../../typings/settings"; import { StringArgument } from "./Argument"; import { BaseInputFilterStore } from "./BaseInputFilterStore"; import { baseNames } from "./fn-mappers"; diff --git a/packages/shared/widget-plugin-filtering/src/stores/input/fn-mappers.ts b/packages/shared/widget-plugin-filtering/src/stores/input/fn-mappers.ts index 71894c6d81..8ad3c58361 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/input/fn-mappers.ts +++ b/packages/shared/widget-plugin-filtering/src/stores/input/fn-mappers.ts @@ -1,8 +1,12 @@ -import { FilterFunctionBinary, FilterFunctionGeneric, FilterFunctionNonValue } from "../../typings/FilterFunctions"; -import { FilterFunction } from "../../typings/mendix"; +import { + FilterFunctionBinary, + FilterFunctionGeneric, + FilterFunctionNonValue +} from "@mendix/filter-commons/typings/FilterFunctions"; +import { FilterName } from "@mendix/filter-commons/typings/mendix"; export function baseNames( - fn: FilterFunction | "between" | "empty" | "notEmpty" + fn: FilterName | "between" | "empty" | "notEmpty" ): FilterFunctionGeneric | FilterFunctionNonValue | FilterFunctionBinary { switch (fn) { case "=": diff --git a/packages/shared/widget-plugin-filtering/src/stores/input/store-utils.ts b/packages/shared/widget-plugin-filtering/src/stores/input/store-utils.ts index 63f382dea3..542391c3eb 100644 --- a/packages/shared/widget-plugin-filtering/src/stores/input/store-utils.ts +++ b/packages/shared/widget-plugin-filtering/src/stores/input/store-utils.ts @@ -1,3 +1,4 @@ +import { StaticSelectFilterStore } from "@mendix/widget-plugin-dropdown-filter/stores/StaticSelectFilterStore"; import { ListAttributeValue } from "mendix"; import { FilterCondition } from "mendix/filters"; import { @@ -9,7 +10,6 @@ import { import { DateInputFilterStore } from "../input/DateInputFilterStore"; import { NumberInputFilterStore } from "../input/NumberInputFilterStore"; import { StringInputFilterStore } from "../input/StringInputFilterStore"; -import { StaticSelectFilterStore } from "../picker/StaticSelectFilterStore"; export type InputFilterStore = StringInputFilterStore | NumberInputFilterStore | DateInputFilterStore; diff --git a/packages/shared/widget-plugin-filtering/src/stores/utils/is-input-data.ts b/packages/shared/widget-plugin-filtering/src/stores/utils/is-input-data.ts deleted file mode 100644 index ce484a9507..0000000000 --- a/packages/shared/widget-plugin-filtering/src/stores/utils/is-input-data.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { InputData } from "../../typings/settings"; - -const fnNames = new Set([ - "empty", - "notEmpty", - "equal", - "notEqual", - "greater", - "greaterEqual", - "smaller", - "smallerEqual", - "between", - "contains", - "startsWith", - "endsWith" -]); - -export function isInputData(data: unknown): data is InputData { - if (Array.isArray(data)) { - const [name] = data; - return fnNames.has(name); - } - return false; -} diff --git a/packages/shared/widget-plugin-filtering/src/typings/FilterObserver.ts b/packages/shared/widget-plugin-filtering/src/typings/FilterObserver.ts index c572ed5d38..f9a9a672ff 100644 --- a/packages/shared/widget-plugin-filtering/src/typings/FilterObserver.ts +++ b/packages/shared/widget-plugin-filtering/src/typings/FilterObserver.ts @@ -1,5 +1,5 @@ +import { FilterData, FiltersSettingsMap } from "@mendix/filter-commons/typings/settings"; import { FilterCondition } from "mendix/filters"; -import { FilterData, FiltersSettingsMap } from "./settings"; export interface Filter { toJSON(): FilterData; diff --git a/packages/shared/widget-plugin-filtering/src/typings/InputFilterInterface.ts b/packages/shared/widget-plugin-filtering/src/typings/InputFilterInterface.ts index c58a879fea..8063c3ae3e 100644 --- a/packages/shared/widget-plugin-filtering/src/typings/InputFilterInterface.ts +++ b/packages/shared/widget-plugin-filtering/src/typings/InputFilterInterface.ts @@ -4,7 +4,7 @@ import { FilterFunctionGeneric, FilterFunctionNonValue, FilterFunctionString -} from "./FilterFunctions"; +} from "@mendix/filter-commons/typings/FilterFunctions"; import { ArgumentInterface, DateArgumentInterface, diff --git a/packages/shared/widget-plugin-filtering/src/typings/OptionListFilterInterface.ts b/packages/shared/widget-plugin-filtering/src/typings/OptionListFilterInterface.ts deleted file mode 100644 index 22f50c16a3..0000000000 --- a/packages/shared/widget-plugin-filtering/src/typings/OptionListFilterInterface.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { OptionWithState } from "./OptionWithState"; - -export interface CustomOption { - caption: string; - value: string; -} - -export interface OptionListFilterInterface { - type: "refselect" | "select"; - storeType: "optionlist" | "refselect" | "select"; - options: OptionWithState[]; - selected: string[]; - isLoading: boolean; - hasMore: boolean; - canSearch: boolean; - - replace(value: string[]): void; - toggle(value: string): void; - loadMore(): void; - setSearch(term: string | undefined): void; - isValidValue(value: string): boolean; - reset(): void; - clear(): void; - UNSAFE_setDefaults(value?: string[]): void; - setup?(): () => void | void; - setCustomOptions(options: CustomOption[]): void; -} diff --git a/packages/shared/widget-plugin-filtering/src/typings/PickerFilterStore.ts b/packages/shared/widget-plugin-filtering/src/typings/PickerFilterStore.ts deleted file mode 100644 index d64f165603..0000000000 --- a/packages/shared/widget-plugin-filtering/src/typings/PickerFilterStore.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { RefFilterStore } from "../stores/picker/RefFilterStore"; -import { StaticSelectFilterStore } from "../stores/picker/StaticSelectFilterStore"; - -export type PickerFilterStore = RefFilterStore | StaticSelectFilterStore; diff --git a/packages/shared/widget-plugin-filtering/src/typings/mendix.ts b/packages/shared/widget-plugin-filtering/src/typings/mendix.ts deleted file mode 100644 index 2544d74ee0..0000000000 --- a/packages/shared/widget-plugin-filtering/src/typings/mendix.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { FilterCondition } from "mendix/filters"; -import { FnName } from "./type-utils"; - -export type FilterFunction = FnName; diff --git a/packages/shared/widget-plugin-filtering/src/typings/type-utils.ts b/packages/shared/widget-plugin-filtering/src/typings/type-utils.ts deleted file mode 100644 index a61d66ebf5..0000000000 --- a/packages/shared/widget-plugin-filtering/src/typings/type-utils.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type FnName = T extends { name: infer Name } ? Name : never; - -export type Dispose = () => void; - -export type GConstructor = new (...args: any[]) => T; diff --git a/packages/shared/widget-plugin-test-utils/package.json b/packages/shared/widget-plugin-test-utils/package.json index 889942b8ce..8b2c5d0021 100644 --- a/packages/shared/widget-plugin-test-utils/package.json +++ b/packages/shared/widget-plugin-test-utils/package.json @@ -30,7 +30,7 @@ "test": "jest" }, "dependencies": { - "mendix": "^10.16.49747" + "mendix": "^10.21.64362" }, "devDependencies": { "@mendix/eslint-config-web-widgets": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 84eef2315b..d146a36cdd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -849,7 +849,7 @@ importers: version: 4.22.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2) '@uiw/react-codemirror': specifier: ^4.21.25 - version: 4.22.2(@babel/runtime@7.25.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.2))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.2)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.34.2)(codemirror@6.0.1(@lezer/common@1.2.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 4.22.2(@babel/runtime@7.27.0)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.3))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.2)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.34.2)(codemirror@6.0.1(@lezer/common@1.2.3))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) devDependencies: '@mendix/automation-utils': specifier: workspace:* @@ -2449,6 +2449,34 @@ importers: specifier: ^8.29.0 version: 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + packages/shared/filter-commons: + dependencies: + mendix: + specifier: ^10.16.49747 + version: 10.20.60519 + mobx: + specifier: 6.12.3 + version: 6.12.3(patch_hash=39c55279e8f75c9a322eba64dd22e1a398f621c64bbfc3632e55a97f46edfeb9) + mobx-react-lite: + specifier: 4.0.7 + version: 4.0.7(patch_hash=47fd2d1b5c35554ddd4fa32fcaa928a16fda9f82dca0ff68bcdc1f7c3e5f9d1a)(mobx@6.12.3(patch_hash=39c55279e8f75c9a322eba64dd22e1a398f621c64bbfc3632e55a97f46edfeb9))(react@18.2.0) + devDependencies: + '@mendix/eslint-config-web-widgets': + specifier: workspace:* + version: link:../eslint-config-web-widgets + '@mendix/prettier-config-web-widgets': + specifier: workspace:* + version: link:../prettier-config-web-widgets + '@mendix/tsconfig-web-widgets': + specifier: workspace:* + version: link:../tsconfig-web-widgets + '@mendix/widget-plugin-test-utils': + specifier: workspace:* + version: link:../widget-plugin-test-utils + '@swc/core': + specifier: ^1.7.26 + version: 1.7.26(@swc/helpers@0.5.15) + packages/shared/prettier-config-web-widgets: dependencies: '@eslint/js': @@ -2493,6 +2521,34 @@ importers: specifier: ^29.4.1 version: 29.5.0 + packages/shared/widget-plugin-dropdown-filter: + dependencies: + '@mendix/widget-plugin-mobx-kit': + specifier: workspace:^ + version: link:../widget-plugin-mobx-kit + downshift: + specifier: ^9.0.9 + version: 9.0.9(react@18.2.0) + mendix: + specifier: ^10.21.64362 + version: 10.21.64362 + mobx: + specifier: 6.12.3 + version: 6.12.3(patch_hash=39c55279e8f75c9a322eba64dd22e1a398f621c64bbfc3632e55a97f46edfeb9) + mobx-react-lite: + specifier: 4.0.7 + version: 4.0.7(patch_hash=47fd2d1b5c35554ddd4fa32fcaa928a16fda9f82dca0ff68bcdc1f7c3e5f9d1a)(mobx@6.12.3(patch_hash=39c55279e8f75c9a322eba64dd22e1a398f621c64bbfc3632e55a97f46edfeb9))(react@18.2.0) + devDependencies: + '@mendix/eslint-config-web-widgets': + specifier: workspace:* + version: link:../eslint-config-web-widgets + '@mendix/prettier-config-web-widgets': + specifier: workspace:* + version: link:../prettier-config-web-widgets + '@mendix/tsconfig-web-widgets': + specifier: workspace:* + version: link:../tsconfig-web-widgets + packages/shared/widget-plugin-external-events: dependencies: nanoevents: @@ -2526,6 +2582,12 @@ importers: '@floating-ui/react-dom': specifier: ^2.1.2 version: 2.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mendix/filter-commons': + specifier: workspace:* + version: link:../filter-commons + '@mendix/widget-plugin-dropdown-filter': + specifier: workspace:* + version: link:../widget-plugin-dropdown-filter '@mendix/widget-plugin-external-events': specifier: workspace:* version: link:../widget-plugin-external-events @@ -2542,8 +2604,8 @@ importers: specifier: ^9.0.8 version: 9.0.8(react@18.2.0) mendix: - specifier: ^10.16.49747 - version: 10.16.49747 + specifier: ^10.21.64362 + version: 10.21.64362 mobx: specifier: 6.12.3 version: 6.12.3(patch_hash=39c55279e8f75c9a322eba64dd22e1a398f621c64bbfc3632e55a97f46edfeb9) @@ -2711,8 +2773,8 @@ importers: packages/shared/widget-plugin-test-utils: dependencies: mendix: - specifier: ^10.16.49747 - version: 10.16.49747 + specifier: ^10.21.64362 + version: 10.21.64362 devDependencies: '@mendix/eslint-config-web-widgets': specifier: workspace:* @@ -2801,6 +2863,10 @@ packages: resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} engines: {node: '>=6.9.0'} + '@babel/generator@7.27.0': + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.9': resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} @@ -2815,12 +2881,22 @@ packages: resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.0': + resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.26.9': resolution: {integrity: sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.27.0': + resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.26.3': resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} engines: {node: '>=6.9.0'} @@ -2832,6 +2908,11 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-define-polyfill-provider@0.6.4': + resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-environment-visitor@7.22.20': resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} @@ -2957,6 +3038,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} engines: {node: '>=6.9.0'} @@ -3007,6 +3093,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-export-default-from@7.25.9': + resolution: {integrity: sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} @@ -3074,12 +3166,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-export-default-from@7.25.9': + resolution: {integrity: sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-flow@7.25.7': resolution: {integrity: sha512-fyoj6/YdVtlv2ROig/J0fP7hh/wNO1MJGm1NR70Pg7jbkF+jOUL9joorqaCOQh06Y+LfgTagHzC8KqZ3MF782w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-flow@7.26.0': + resolution: {integrity: sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.26.0': resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} @@ -3150,6 +3254,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} @@ -3186,6 +3296,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoping@7.27.0': + resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.25.9': resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} engines: {node: '>=6.9.0'} @@ -3258,6 +3374,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-flow-strip-types@7.26.5': + resolution: {integrity: sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.26.9': resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} engines: {node: '>=6.9.0'} @@ -3408,12 +3530,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-source@7.25.7': resolution: {integrity: sha512-S/JXG/KrbIY06iyJPKfxr0qRxnhNOdkNXYBl/rmwgDd72cQLH9tEGkDm/yJPGvcSIUoikzfjMios9i+xT/uv9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.25.9': resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} engines: {node: '>=6.9.0'} @@ -3432,6 +3566,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regenerator@7.27.0': + resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regexp-modifiers@7.26.0': resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} engines: {node: '>=6.9.0'} @@ -3450,6 +3590,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-runtime@7.26.10': + resolution: {integrity: sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-shorthand-properties@7.25.9': resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} engines: {node: '>=6.9.0'} @@ -3486,6 +3632,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.27.0': + resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.25.9': resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} engines: {node: '>=6.9.0'} @@ -3516,8 +3668,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-flow@7.25.7': - resolution: {integrity: sha512-q2x3g0YHzo/Ohsr51KOYS/BtZMsvkzVd8qEyhZAyTatYdobfgXCuyppTqTuIhdq5kR/P3nyyVvZ6H5dMc4PnCQ==} + '@babel/preset-flow@7.25.9': + resolution: {integrity: sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -3533,14 +3685,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.25.7': - resolution: {integrity: sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==} + '@babel/preset-typescript@7.27.0': + resolution: {integrity: sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/register@7.25.7': - resolution: {integrity: sha512-qHTd2Rhn/rKhSUwdY6+n98FmwXN+N+zxSVx3zWqRe9INyvTpv+aQ5gDV2+43ACd3VtMBzPPljbb0gZb8u5ma6Q==} + '@babel/register@7.25.9': + resolution: {integrity: sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -3557,6 +3709,10 @@ packages: resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.27.0': + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + engines: {node: '>=6.9.0'} + '@babel/template@7.22.15': resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} @@ -3569,6 +3725,10 @@ packages: resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} engines: {node: '>=6.9.0'} + '@babel/template@7.27.0': + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.22.5': resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} engines: {node: '>=6.9.0'} @@ -3581,6 +3741,10 @@ packages: resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.27.0': + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} + engines: {node: '>=6.9.0'} + '@babel/types@7.22.5': resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} @@ -3593,6 +3757,10 @@ packages: resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} engines: {node: '>=6.9.0'} + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -3618,8 +3786,8 @@ packages: '@codemirror/commands@6.6.0': resolution: {integrity: sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==} - '@codemirror/commands@6.7.0': - resolution: {integrity: sha512-+cduIZ2KbesDhbykV02K25A5xIVrquSPz4UxxYBemRlAT2aW8dhwUgLDwej7q/RJUHKk4nALYcR1puecDvbdqw==} + '@codemirror/commands@6.8.1': + resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==} '@codemirror/lang-json@6.0.1': resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} @@ -3630,6 +3798,9 @@ packages: '@codemirror/lint@6.8.2': resolution: {integrity: sha512-PDFG5DjHxSEjOXk9TQYYVjZDqlZTFaDBfhQixHnQOEVDDNHUbEh/hstAjcQJaA6FQdZTD1hquXTK0rVBLADR1g==} + '@codemirror/lint@6.8.5': + resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==} + '@codemirror/search@6.5.6': resolution: {integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==} @@ -3949,6 +4120,10 @@ packages: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -3963,6 +4138,9 @@ packages: '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -3972,8 +4150,8 @@ packages: '@lezer/common@1.2.1': resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} - '@lezer/common@1.2.2': - resolution: {integrity: sha512-Z+R3hN6kXbgBWAuejUNPihylAL1Z5CaFqnIe0nTX8Ej+XlIy3EGtXxn6WtLMO+os2hRkQvm2yvaGMYliUzlJaw==} + '@lezer/common@1.2.3': + resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} '@lezer/highlight@1.2.0': resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==} @@ -4779,9 +4957,6 @@ packages: '@types/react-leaflet@2.8.3': resolution: {integrity: sha512-MeBQnVQe6ikw8dkuZE4F96PvMdQeilZG6/ekk5XxhkSzU3lofedULn3UR/6G0uIHjbRazi4DA8LnLACX0bPhBg==} - '@types/react-native@0.70.16': - resolution: {integrity: sha512-zHPWfszSWTctG1O1gsAHTQzOC33GY7Iv/Mk44tSMkcHiUtqB1GjOZz1VLqSyxW3Qw77HX4GUHi8b1ksOFrq2KQ==} - '@types/react-native@0.72.8': resolution: {integrity: sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==} @@ -5203,6 +5378,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + add-dom-event-listener@1.1.0: resolution: {integrity: sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==} @@ -5495,6 +5675,11 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs2@0.4.13: + resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs3@0.10.6: resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} peerDependencies: @@ -5510,6 +5695,11 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-regenerator@0.6.4: + resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-transform-flow-enums@0.0.2: resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} @@ -5608,8 +5798,8 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} bytewise-core@1.2.3: @@ -5885,8 +6075,8 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} - compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + compression@1.8.0: + resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} engines: {node: '>= 0.8.0'} compute-scroll-into-view@2.0.4: @@ -6268,6 +6458,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -6459,6 +6658,11 @@ packages: peerDependencies: react: ^18.0.0 + downshift@9.0.9: + resolution: {integrity: sha512-ygOT8blgiz5liDuEFAIaPeU4dDEa+w9p6PHVUisPIjrkF5wfR59a52HpGWAVVMoWnoFO8po2mZSScKZueihS7g==} + peerDependencies: + react: ^18.0.0 + draw-svg-path@1.0.0: resolution: {integrity: sha512-P8j3IHxcgRMcY6sDzr0QvJDLzBnJJqpTG33UZ2Pvp8rw0apCHhJCWqYprqrXjrgHnJ6tuhP1iTJSAodPDHxwkg==} @@ -6951,8 +7155,8 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + exponential-backoff@3.1.2: + resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} @@ -6983,6 +7187,10 @@ packages: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + fast-isnumeric@1.1.4: resolution: {integrity: sha512-1mM8qOr2LYz8zGaUdmiqRDiuue00Dxjgcb1NQR7TnhLVh6sQyngP9xvLo7Sl7LZpP/sk5eb+bcyWXw530NTBZw==} @@ -7002,8 +7210,8 @@ packages: resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true - fast-xml-parser@4.5.0: - resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==} + fast-xml-parser@4.5.3: + resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} hasBin: true fastest-levenshtein@1.0.16: @@ -7108,8 +7316,8 @@ packages: flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-parser@0.248.1: - resolution: {integrity: sha512-fkCfVPelbTzSVp+jVwSvEyc+I4WG8MNhRG/EWSZZTlgHAMEdhXJaFEbfErXxMktboMhVGchvEFhWxkzNGM1m2A==} + flow-parser@0.268.0: + resolution: {integrity: sha512-URZmPy/jKDDIJUHUfC+5KNwaPcfONTL3R8xltQWVEoCKLWowVebEBg89nbAnYHNo6ev8KzKWFpOROfHZdaCoxA==} engines: {node: '>=0.4.0'} font-atlas@2.1.0: @@ -7584,8 +7792,8 @@ packages: resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} engines: {node: '>= 4'} - image-size@1.1.1: - resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + image-size@1.2.1: + resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} engines: {node: '>=16.x'} hasBin: true @@ -7722,6 +7930,10 @@ packages: is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} engines: {node: '>= 0.4'} @@ -8248,6 +8460,11 @@ packages: engines: {node: '>=6'} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -8562,8 +8779,8 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true - marky@1.2.5: - resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + marky@1.3.0: + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} match-sorter@6.3.4: resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==} @@ -8599,12 +8816,12 @@ packages: mendix-client@7.15.8: resolution: {integrity: sha512-RazCdCHoLVNKUUeKDkSkIL6Lxx6fUaa4iiy+Ltp9ra8mLQhwyNqD33TIN7YZJ3HDjHc3eWh9cjiZWwh6Jg/cQg==} - mendix@10.16.49747: - resolution: {integrity: sha512-soc4deezipGgzWVWrfsg1e73w8xXE3ydlW0PyRsV8IHq4BCliloWag1Vh5kYEpYqt+4naBKuLASMHLhSlKKQIw==} - mendix@10.20.60519: resolution: {integrity: sha512-gVOhd23gVAX7rE2wYk4MYeVDLKMPGSYk6h97eqNI41hcT1qESeJ6nyDvf9M4wWRVmWKTFpA+nWSIihVxCZsKGg==} + mendix@10.21.64362: + resolution: {integrity: sha512-ufifWxDijKsFWe7kpKOXVXWpS5HzZh+LvxUvM3EhDH8j6lIlIIqn+nSbhsMNhcQ/pr1TLCNO2mPBWUkue513UQ==} + meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} @@ -8699,8 +8916,8 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - mime-db@1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} mime-types@2.1.35: @@ -8891,6 +9108,10 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -9282,6 +9503,10 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} @@ -10056,8 +10281,8 @@ packages: regl-splom@1.0.14: resolution: {integrity: sha512-OiLqjmPRYbd7kDlHC6/zDf6L8lxgDC65BhC8JirhP4ykrK4x22ZyS+BnY8EUinXKDeMgmpRwCvUmk7BK4Nweuw==} - regl@2.1.0: - resolution: {integrity: sha512-oWUce/aVoEvW5l2V0LK7O5KJMzUSKeiOwFuJehzpSFd43dO5spP9r+sSUfhKtsky4u6MCqWJaRL+abzExynfTg==} + regl@2.1.1: + resolution: {integrity: sha512-+IOGrxl3FZ8ZM9ixCWQZzFRiRn7Rzn9bu3iFHwg/yz4tlOUQgbO4PHLgG+1ZT60zcIV8tief6Qrmyl8qcoJP0g==} remove-accents@0.5.0: resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} @@ -10102,6 +10327,11 @@ packages: resolve@0.6.3: resolution: {integrity: sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg==} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -10382,8 +10612,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} shelljs@0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} @@ -10555,8 +10786,8 @@ packages: stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + stacktrace-parser@0.1.11: + resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} engines: {node: '>=6'} static-eval@2.1.0: @@ -10663,6 +10894,9 @@ packages: strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + strnum@1.1.2: + resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + strongly-connected-components@1.0.1: resolution: {integrity: sha512-i0TFx4wPcO0FwX+4RkLJi1MxmcTv90jNZgxMu9XRnMXMeFUY1VJlIoXpZunPUvUUqbCT1pg5PEkFqqpcaElNaA==} @@ -10800,6 +11034,11 @@ packages: engines: {node: '>=10'} hasBin: true + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + engines: {node: '>=10'} + hasBin: true + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -11520,8 +11759,8 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.6.0: - resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} engines: {node: '>= 14'} hasBin: true @@ -11689,6 +11928,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 + '@babel/generator@7.27.0': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.25.9': dependencies: '@babel/types': 7.26.10 @@ -11710,6 +11957,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.27.0': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.26.9(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 @@ -11736,6 +11991,32 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.21.0)': + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.21.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.27.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.27.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 @@ -11772,6 +12053,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.21.0)': + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + debug: 4.4.0 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + debug: 4.4.0 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + '@babel/helper-environment-visitor@7.22.20': {} '@babel/helper-function-name@7.23.0': @@ -11947,6 +12250,10 @@ snapshots: dependencies: '@babel/types': 7.26.10 + '@babel/parser@7.27.0': + dependencies: + '@babel/types': 7.27.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 @@ -12035,12 +12342,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-export-default-from@7.25.8(@babel/core@7.21.0)': + '@babel/plugin-proposal-export-default-from@7.25.8(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-proposal-export-default-from@7.25.9(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-proposal-export-default-from@7.25.8(@babel/core@7.26.10)': + '@babel/plugin-proposal-export-default-from@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 @@ -12114,22 +12426,32 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-export-default-from@7.25.7(@babel/core@7.21.0)': + '@babel/plugin-syntax-export-default-from@7.25.7(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-export-default-from@7.25.9(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-export-default-from@7.25.7(@babel/core@7.26.10)': + '@babel/plugin-syntax-export-default-from@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-flow@7.25.7(@babel/core@7.21.0)': + '@babel/plugin-syntax-flow@7.25.7(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-flow@7.26.0(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-flow@7.25.7(@babel/core@7.26.10)': + '@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 @@ -12219,12 +12541,17 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.21.0)': + '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.26.10)': + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 @@ -12307,6 +12634,16 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.21.0)': + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 @@ -12449,17 +12786,23 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-flow-strip-types@7.25.7(@babel/core@7.21.0)': + '@babel/plugin-transform-flow-strip-types@7.25.7(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.26.10) + + '@babel/plugin-transform-flow-strip-types@7.26.5(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.21.0) + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.21.0) - '@babel/plugin-transform-flow-strip-types@7.25.7(@babel/core@7.26.10)': + '@babel/plugin-transform-flow-strip-types@7.26.5(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.26.10) + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.10) '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.21.0)': dependencies: @@ -12772,22 +13115,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx-self@7.25.7(@babel/core@7.21.0)': + '@babel/plugin-transform-react-jsx-self@7.25.7(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-self@7.25.7(@babel/core@7.26.10)': + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx-source@7.25.7(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-source@7.25.7(@babel/core@7.21.0)': + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-source@7.25.7(@babel/core@7.26.10)': + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 @@ -12832,6 +13185,18 @@ snapshots: '@babel/helper-plugin-utils': 7.26.5 regenerator-transform: 0.15.2 + '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.21.0)': + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.26.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + regenerator-transform: 0.15.2 + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 @@ -12854,26 +13219,38 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-runtime@7.25.7(@babel/core@7.21.0)': + '@babel/plugin-transform-runtime@7.25.7(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.10) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.10) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-runtime@7.26.10(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 '@babel/helper-module-imports': 7.25.9 '@babel/helper-plugin-utils': 7.26.5 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.21.0) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.21.0) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.21.0) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.21.0) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.21.0) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.21.0) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-runtime@7.25.7(@babel/core@7.26.10)': + '@babel/plugin-transform-runtime@7.26.10(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.25.9 '@babel/helper-plugin-utils': 7.26.5 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.10) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.10) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -12934,25 +13311,36 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-typescript@7.25.7(@babel/core@7.21.0)': + '@babel/plugin-transform-typescript@7.25.7(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.21.0)': dependencies: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.21.0) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.21.0) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.21.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.25.7(@babel/core@7.26.10)': + '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) transitivePeerDependencies: - supports-color @@ -13152,12 +13540,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.25.7(@babel/core@7.26.10)': + '@babel/preset-flow@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.26.10) + '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.10) '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.21.0)': dependencies: @@ -13185,24 +13573,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.25.7(@babel/core@7.26.10)': + '@babel/preset-typescript@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.26.10) + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) transitivePeerDependencies: - supports-color - '@babel/register@7.25.7(@babel/core@7.26.10)': + '@babel/register@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 - pirates: 4.0.6 + pirates: 4.0.7 source-map-support: 0.5.21 '@babel/runtime@7.22.5': @@ -13217,6 +13605,10 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 + '@babel/runtime@7.27.0': + dependencies: + regenerator-runtime: 0.14.1 + '@babel/template@7.22.15': dependencies: '@babel/code-frame': 7.26.2 @@ -13235,6 +13627,12 @@ snapshots: '@babel/parser': 7.26.10 '@babel/types': 7.26.10 + '@babel/template@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@babel/traverse@7.22.5': dependencies: '@babel/code-frame': 7.22.13 @@ -13277,6 +13675,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.22.5': dependencies: '@babel/helper-string-parser': 7.22.5 @@ -13294,6 +13704,11 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@bcoe/v8-coverage@0.2.3': {} '@cfaester/enzyme-adapter-react-18@0.6.0(enzyme@3.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -13309,12 +13724,12 @@ snapshots: dependencies: commander: 2.20.3 - '@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.2)': + '@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.3)': dependencies: '@codemirror/language': 6.10.2 '@codemirror/state': 6.4.1 '@codemirror/view': 6.34.2 - '@lezer/common': 1.2.2 + '@lezer/common': 1.2.3 '@codemirror/commands@6.6.0': dependencies: @@ -13323,12 +13738,12 @@ snapshots: '@codemirror/view': 6.34.2 '@lezer/common': 1.2.1 - '@codemirror/commands@6.7.0': + '@codemirror/commands@6.8.1': dependencies: '@codemirror/language': 6.10.2 '@codemirror/state': 6.4.1 '@codemirror/view': 6.34.2 - '@lezer/common': 1.2.2 + '@lezer/common': 1.2.3 '@codemirror/lang-json@6.0.1': dependencies: @@ -13350,6 +13765,12 @@ snapshots: '@codemirror/view': 6.34.2 crelt: 1.0.6 + '@codemirror/lint@6.8.5': + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.34.2 + crelt: 1.0.6 + '@codemirror/search@6.5.6': dependencies: '@codemirror/state': 6.4.1 @@ -13927,6 +14348,12 @@ snapshots: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} @@ -13938,6 +14365,8 @@ snapshots: '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 @@ -13950,7 +14379,7 @@ snapshots: '@lezer/common@1.2.1': {} - '@lezer/common@1.2.2': {} + '@lezer/common@1.2.3': {} '@lezer/highlight@1.2.0': dependencies: @@ -13958,7 +14387,7 @@ snapshots: '@lezer/highlight@1.2.1': dependencies: - '@lezer/common': 1.2.2 + '@lezer/common': 1.2.3 '@lezer/json@1.0.2': dependencies: @@ -14068,7 +14497,7 @@ snapshots: jest-junit: 13.2.0 jest-react-hooks-shallow: 1.5.1 make-dir: 3.1.0 - mendix: 10.20.60519 + mendix: 10.21.64362 metro-react-native-babel-preset: 0.74.1(@babel/core@7.26.10) mime: 3.0.0 node-fetch: 2.7.0 @@ -14174,7 +14603,7 @@ snapshots: jest-junit: 13.2.0 jest-react-hooks-shallow: 1.5.1 make-dir: 3.1.0 - mendix: 10.20.60519 + mendix: 10.21.64362 metro-react-native-babel-preset: 0.74.1(@babel/core@7.26.10) mime: 3.0.0 node-fetch: 2.7.0 @@ -14280,7 +14709,7 @@ snapshots: jest-junit: 13.2.0 jest-react-hooks-shallow: 1.5.1 make-dir: 3.1.0 - mendix: 10.20.60519 + mendix: 10.21.64362 metro-react-native-babel-preset: 0.74.1(@babel/core@7.26.10) mime: 3.0.0 node-fetch: 2.7.0 @@ -14515,7 +14944,7 @@ snapshots: '@react-native-community/cli-tools': 14.1.0 chalk: 4.1.2 execa: 5.1.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 '@react-native-community/cli-config@14.1.0(typescript@5.1.6)': dependencies: @@ -14523,7 +14952,7 @@ snapshots: chalk: 4.1.2 cosmiconfig: 9.0.0(typescript@5.1.6) deepmerge: 4.3.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 joi: 17.13.3 transitivePeerDependencies: - typescript @@ -14534,7 +14963,7 @@ snapshots: chalk: 4.1.2 cosmiconfig: 9.0.0(typescript@5.8.2) deepmerge: 4.3.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 joi: 17.13.3 transitivePeerDependencies: - typescript @@ -14562,7 +14991,7 @@ snapshots: semver: 7.7.1 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.6.0 + yaml: 2.7.1 transitivePeerDependencies: - typescript @@ -14583,7 +15012,7 @@ snapshots: semver: 7.7.1 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.6.0 + yaml: 2.7.1 transitivePeerDependencies: - typescript @@ -14592,8 +15021,8 @@ snapshots: '@react-native-community/cli-tools': 14.1.0 chalk: 4.1.2 execa: 5.1.1 - fast-glob: 3.3.2 - fast-xml-parser: 4.5.0 + fast-glob: 3.3.3 + fast-xml-parser: 4.5.3 logkitty: 0.7.1 '@react-native-community/cli-platform-apple@14.1.0': @@ -14601,8 +15030,8 @@ snapshots: '@react-native-community/cli-tools': 14.1.0 chalk: 4.1.2 execa: 5.1.1 - fast-glob: 3.3.2 - fast-xml-parser: 4.5.0 + fast-glob: 3.3.3 + fast-xml-parser: 4.5.3 ora: 5.4.1 '@react-native-community/cli-platform-ios@14.1.0': @@ -14613,7 +15042,7 @@ snapshots: dependencies: '@react-native-community/cli-debugger-ui': 14.1.0 '@react-native-community/cli-tools': 14.1.0 - compression: 1.7.4 + compression: 1.8.0 connect: 3.7.0 errorhandler: 1.5.1 nocache: 3.0.4 @@ -14635,7 +15064,7 @@ snapshots: open: 6.4.0 ora: 5.4.1 semver: 7.7.1 - shell-quote: 1.8.1 + shell-quote: 1.8.2 sudo-prompt: 9.2.1 '@react-native-community/cli-types@14.1.0': @@ -14709,21 +15138,21 @@ snapshots: '@react-native/babel-preset@0.75.3(@babel/core@7.21.0)(@babel/preset-env@7.26.9(@babel/core@7.21.0))': dependencies: '@babel/core': 7.21.0 - '@babel/plugin-proposal-export-default-from': 7.25.8(@babel/core@7.21.0) + '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.21.0) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-syntax-export-default-from': 7.25.7(@babel/core@7.21.0) - '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.21.0) + '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.21.0) + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.21.0) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.21.0) '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.21.0) '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.21.0) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.21.0) + '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.21.0) '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.21.0) '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.21.0) '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.21.0) '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.21.0) - '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.21.0) + '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.21.0) '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.21.0) '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.21.0) '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.21.0) @@ -14740,16 +15169,16 @@ snapshots: '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.21.0) '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.21.0) '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.21.0) - '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.21.0) - '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.21.0) - '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.21.0) - '@babel/plugin-transform-runtime': 7.25.7(@babel/core@7.21.0) + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.21.0) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.21.0) + '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.21.0) + '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.21.0) '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.21.0) '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.21.0) '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.21.0) - '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.21.0) + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.21.0) '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.21.0) - '@babel/template': 7.26.9 + '@babel/template': 7.27.0 '@react-native/babel-plugin-codegen': 0.75.3(@babel/preset-env@7.26.9(@babel/core@7.21.0)) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.21.0) react-refresh: 0.14.2 @@ -14760,21 +15189,21 @@ snapshots: '@react-native/babel-preset@0.75.3(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))': dependencies: '@babel/core': 7.26.10 - '@babel/plugin-proposal-export-default-from': 7.25.8(@babel/core@7.26.10) + '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.10) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-export-default-from': 7.25.7(@babel/core@7.26.10) - '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.26.10) + '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.10) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.26.10) '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.26.10) + '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.10) '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.10) '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) @@ -14791,16 +15220,16 @@ snapshots: '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.26.10) - '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.26.10) - '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-runtime': 7.25.7(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.26.10) + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) - '@babel/template': 7.26.9 + '@babel/template': 7.27.0 '@react-native/babel-plugin-codegen': 0.75.3(@babel/preset-env@7.26.9(@babel/core@7.26.10)) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.10) react-refresh: 0.14.2 @@ -14810,7 +15239,7 @@ snapshots: '@react-native/codegen@0.75.3(@babel/preset-env@7.26.9(@babel/core@7.21.0))': dependencies: - '@babel/parser': 7.26.10 + '@babel/parser': 7.27.0 '@babel/preset-env': 7.26.9(@babel/core@7.21.0) glob: 7.2.3 hermes-parser: 0.22.0 @@ -14824,7 +15253,7 @@ snapshots: '@react-native/codegen@0.75.3(@babel/preset-env@7.26.9(@babel/core@7.26.10))': dependencies: - '@babel/parser': 7.26.10 + '@babel/parser': 7.27.0 '@babel/preset-env': 7.26.9(@babel/core@7.26.10) glob: 7.2.3 hermes-parser: 0.22.0 @@ -15454,10 +15883,6 @@ snapshots: '@types/leaflet': 1.9.3 '@types/react': 18.2.36 - '@types/react-native@0.70.16': - dependencies: - '@types/react': 18.2.36 - '@types/react-native@0.72.8(react-native@0.75.3(@babel/core@7.21.0)(@babel/preset-env@7.26.9(@babel/core@7.21.0))(@types/react@18.2.36)(react@18.2.0)(typescript@5.1.6))': dependencies: '@react-native/virtualized-lists': 0.72.8(react-native@0.75.3(@babel/core@7.21.0)(@babel/preset-env@7.26.9(@babel/core@7.21.0))(@types/react@18.2.36)(react@18.2.0)(typescript@5.1.6)) @@ -15780,9 +16205,9 @@ snapshots: '@typescript-eslint/types': 8.29.0 eslint-visitor-keys: 4.2.0 - '@uiw/codemirror-extensions-basic-setup@4.22.2(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.2))(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/lint@6.8.2)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)': + '@uiw/codemirror-extensions-basic-setup@4.22.2(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.3))(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/lint@6.8.2)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)': dependencies: - '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.2) + '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.3) '@codemirror/commands': 6.6.0 '@codemirror/language': 6.10.2 '@codemirror/lint': 6.8.2 @@ -15804,15 +16229,15 @@ snapshots: '@codemirror/state': 6.4.1 '@codemirror/view': 6.34.2 - '@uiw/react-codemirror@4.22.2(@babel/runtime@7.25.7)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.2))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.2)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.34.2)(codemirror@6.0.1(@lezer/common@1.2.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@uiw/react-codemirror@4.22.2(@babel/runtime@7.27.0)(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.3))(@codemirror/language@6.10.2)(@codemirror/lint@6.8.2)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.34.2)(codemirror@6.0.1(@lezer/common@1.2.3))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.27.0 '@codemirror/commands': 6.6.0 '@codemirror/state': 6.4.1 '@codemirror/theme-one-dark': 6.1.2 '@codemirror/view': 6.34.2 - '@uiw/codemirror-extensions-basic-setup': 4.22.2(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.2))(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/lint@6.8.2)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2) - codemirror: 6.0.1(@lezer/common@1.2.2) + '@uiw/codemirror-extensions-basic-setup': 4.22.2(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.3))(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/lint@6.8.2)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2) + codemirror: 6.0.1(@lezer/common@1.2.3) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -16004,6 +16429,10 @@ snapshots: dependencies: acorn: 8.14.0 + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + acorn-walk@8.2.0: {} acorn@7.4.1: {} @@ -16012,6 +16441,8 @@ snapshots: acorn@8.14.0: {} + acorn@8.14.1: {} + add-dom-event-listener@1.1.0: dependencies: object-assign: 4.1.1 @@ -16370,11 +16801,21 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.21.0): + babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.21.0): dependencies: + '@babel/compat-data': 7.26.8 '@babel/core': 7.21.0 - '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.21.0) - core-js-compat: 3.41.0 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.21.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -16416,15 +16857,29 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.21.0): + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.21.0): dependencies: - '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.21.0) + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.21.0) transitivePeerDependencies: - '@babel/core' babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.26.10): dependencies: - '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.26.10) + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.10) transitivePeerDependencies: - '@babel/core' @@ -16536,7 +16991,7 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bytes@3.0.0: {} + bytes@3.1.2: {} bytewise-core@1.2.3: dependencies: @@ -16754,12 +17209,12 @@ snapshots: co@4.6.0: {} - codemirror@6.0.1(@lezer/common@1.2.2): + codemirror@6.0.1(@lezer/common@1.2.3): dependencies: - '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.2) - '@codemirror/commands': 6.7.0 + '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.34.2)(@lezer/common@1.2.3) + '@codemirror/commands': 6.8.1 '@codemirror/language': 6.10.2 - '@codemirror/lint': 6.8.2 + '@codemirror/lint': 6.8.5 '@codemirror/search': 6.5.6 '@codemirror/state': 6.4.1 '@codemirror/view': 6.34.2 @@ -16863,16 +17318,16 @@ snapshots: compressible@2.0.18: dependencies: - mime-db: 1.53.0 + mime-db: 1.54.0 - compression@1.7.4: + compression@1.8.0: dependencies: - accepts: 1.3.8 - bytes: 3.0.0 + bytes: 3.1.2 compressible: 2.0.18 debug: 2.6.9 + negotiator: 0.6.4 on-headers: 1.0.2 - safe-buffer: 5.1.2 + safe-buffer: 5.2.1 vary: 1.1.2 transitivePeerDependencies: - supports-color @@ -17423,6 +17878,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.0: + dependencies: + ms: 2.1.3 + decamelize@1.2.0: {} decamelize@4.0.0: {} @@ -17612,6 +18071,15 @@ snapshots: react-is: 18.2.0 tslib: 2.7.0 + downshift@9.0.9(react@18.2.0): + dependencies: + '@babel/runtime': 7.25.7 + compute-scroll-into-view: 3.1.0 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 18.2.0 + tslib: 2.8.1 + draw-svg-path@1.0.0: dependencies: abs-svg-path: 0.1.1 @@ -18295,8 +18763,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -18354,7 +18822,7 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - exponential-backoff@3.1.1: {} + exponential-backoff@3.1.2: {} ext@1.7.0: dependencies: @@ -18394,6 +18862,14 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-isnumeric@1.1.4: dependencies: is-string-blank: 1.0.1 @@ -18410,9 +18886,9 @@ snapshots: dependencies: strnum: 1.0.5 - fast-xml-parser@4.5.0: + fast-xml-parser@4.5.3: dependencies: - strnum: 1.0.5 + strnum: 1.1.2 fastest-levenshtein@1.0.16: {} @@ -18527,7 +19003,7 @@ snapshots: flow-enums-runtime@0.0.6: {} - flow-parser@0.248.1: {} + flow-parser@0.268.0: {} font-atlas@2.1.0: dependencies: @@ -18732,7 +19208,7 @@ snapshots: parse-rect: 1.2.0 parse-unit: 1.0.1 pick-by-alias: 1.2.0 - regl: 2.1.0 + regl: 2.1.1 to-px: 1.0.1 typedarray-pool: 1.2.0 @@ -19102,7 +19578,7 @@ snapshots: ignore@7.0.3: {} - image-size@1.1.1: + image-size@1.2.1: dependencies: queue: 6.0.2 @@ -19235,6 +19711,10 @@ snapshots: dependencies: hasown: 2.0.2 + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 @@ -20064,18 +20544,18 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.26.9(@babel/core@7.21.0)): dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.26.10 + '@babel/parser': 7.27.0 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.10) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.10) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.10) '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) '@babel/preset-env': 7.26.9(@babel/core@7.21.0) - '@babel/preset-flow': 7.25.7(@babel/core@7.26.10) - '@babel/preset-typescript': 7.25.7(@babel/core@7.26.10) - '@babel/register': 7.25.7(@babel/core@7.26.10) + '@babel/preset-flow': 7.25.9(@babel/core@7.26.10) + '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) + '@babel/register': 7.25.9(@babel/core@7.26.10) babel-core: 7.0.0-bridge.0(@babel/core@7.26.10) chalk: 4.1.2 - flow-parser: 0.248.1 + flow-parser: 0.268.0 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -20089,18 +20569,18 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.26.9(@babel/core@7.26.10)): dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.26.10 + '@babel/parser': 7.27.0 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.10) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.10) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.10) '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) '@babel/preset-env': 7.26.9(@babel/core@7.26.10) - '@babel/preset-flow': 7.25.7(@babel/core@7.26.10) - '@babel/preset-typescript': 7.25.7(@babel/core@7.26.10) - '@babel/register': 7.25.7(@babel/core@7.26.10) + '@babel/preset-flow': 7.25.9(@babel/core@7.26.10) + '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) + '@babel/register': 7.25.9(@babel/core@7.26.10) babel-core: 7.0.0-bridge.0(@babel/core@7.26.10) chalk: 4.1.2 - flow-parser: 0.248.1 + flow-parser: 0.268.0 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -20148,6 +20628,8 @@ snapshots: jsesc@3.0.2: {} + jsesc@3.1.0: {} + json-buffer@3.0.1: {} json-parse-better-errors@1.0.2: {} @@ -20168,7 +20650,7 @@ snapshots: jsonc-eslint-parser@2.4.0: dependencies: - acorn: 8.14.0 + acorn: 8.14.1 eslint-visitor-keys: 3.4.3 espree: 9.6.1 semver: 7.7.1 @@ -20246,7 +20728,7 @@ snapshots: lighthouse-logger@1.4.2: dependencies: debug: 2.6.9 - marky: 1.2.5 + marky: 1.3.0 transitivePeerDependencies: - supports-color @@ -20497,7 +20979,7 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 - marky@1.2.5: {} + marky@1.3.0: {} match-sorter@6.3.4: dependencies: @@ -20532,13 +21014,12 @@ snapshots: '@types/big.js': 6.2.2 '@types/dojo': 1.9.44 - mendix@10.16.49747: + mendix@10.20.60519: dependencies: '@types/big.js': 6.2.2 '@types/react': 18.2.36 - '@types/react-native': 0.70.16 - mendix@10.20.60519: + mendix@10.21.64362: dependencies: '@types/big.js': 6.2.2 '@types/react': 18.2.36 @@ -20568,7 +21049,7 @@ snapshots: metro-cache@0.80.12: dependencies: - exponential-backoff: 3.1.1 + exponential-backoff: 3.1.2 flow-enums-runtime: 0.0.6 metro-core: 0.80.12 @@ -20614,7 +21095,7 @@ snapshots: metro-minify-terser@0.80.12: dependencies: flow-enums-runtime: 0.0.6 - terser: 5.34.1 + terser: 5.39.0 metro-react-native-babel-preset@0.74.1(@babel/core@7.26.10): dependencies: @@ -20665,13 +21146,13 @@ snapshots: metro-runtime@0.80.12: dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.27.0 flow-enums-runtime: 0.0.6 metro-source-map@0.80.12: dependencies: - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.80.12 @@ -20697,9 +21178,9 @@ snapshots: metro-transform-plugins@0.80.12: dependencies: '@babel/core': 7.26.10 - '@babel/generator': 7.26.10 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -20708,9 +21189,9 @@ snapshots: metro-transform-worker@0.80.12: dependencies: '@babel/core': 7.26.10 - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 flow-enums-runtime: 0.0.6 metro: 0.80.12 metro-babel-transformer: 0.80.12 @@ -20729,11 +21210,11 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.10 - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -20744,7 +21225,7 @@ snapshots: flow-enums-runtime: 0.0.6 graceful-fs: 4.2.11 hermes-parser: 0.23.1 - image-size: 1.1.1 + image-size: 1.2.1 invariant: 2.2.4 jest-worker: 29.7.0 jsc-safe-url: 0.2.4 @@ -20786,7 +21267,7 @@ snapshots: mime-db@1.52.0: {} - mime-db@1.53.0: {} + mime-db@1.54.0: {} mime-types@2.1.35(patch_hash=f54449b9273bc9e74fb67a14fcd001639d788d038b7eb0b5f43c10dff2b1adfb): dependencies: @@ -20970,6 +21451,8 @@ snapshots: negotiator@0.6.3: {} + negotiator@0.6.4: {} + neo-async@2.6.2: {} next-tick@1.1.0: {} @@ -21338,6 +21821,8 @@ snapshots: pirates@4.0.6: {} + pirates@4.0.7: {} + pkg-dir@3.0.0: dependencies: find-up: 3.0.0 @@ -22181,7 +22666,7 @@ snapshots: react-devtools-core@5.3.2: dependencies: - shell-quote: 1.8.1 + shell-quote: 1.8.2 ws: 7.5.10 transitivePeerDependencies: - bufferutil @@ -22275,7 +22760,7 @@ snapshots: regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 semver: 7.7.1 - stacktrace-parser: 0.1.10 + stacktrace-parser: 0.1.11 whatwg-fetch: 3.6.20 ws: 6.2.3 yargs: 17.7.2 @@ -22328,7 +22813,7 @@ snapshots: regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 semver: 7.7.1 - stacktrace-parser: 0.1.10 + stacktrace-parser: 0.1.11 whatwg-fetch: 3.6.20 ws: 6.2.3 yargs: 17.7.2 @@ -22381,7 +22866,7 @@ snapshots: regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 semver: 7.7.1 - stacktrace-parser: 0.1.10 + stacktrace-parser: 0.1.11 whatwg-fetch: 3.6.20 ws: 6.2.3 yargs: 17.7.2 @@ -22703,7 +23188,7 @@ snapshots: raf: 3.4.1 regl-scatter2d: 3.3.1 - regl@2.1.0: {} + regl@2.1.1: {} remove-accents@0.5.0: {} @@ -22733,6 +23218,12 @@ snapshots: resolve@0.6.3: {} + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + resolve@1.22.8: dependencies: is-core-module: 2.13.1 @@ -23116,7 +23607,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.1: {} + shell-quote@1.8.2: {} shelljs@0.8.5: dependencies: @@ -23309,7 +23800,7 @@ snapshots: stackframe@1.3.4: {} - stacktrace-parser@0.1.10: + stacktrace-parser@0.1.11: dependencies: type-fest: 0.7.1 @@ -23452,6 +23943,8 @@ snapshots: strnum@1.0.5: {} + strnum@1.1.2: {} + strongly-connected-components@1.0.1: {} style-inject@0.3.0: {} @@ -23615,6 +24108,13 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + terser@5.39.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -24446,7 +24946,7 @@ snapshots: yaml@1.10.2: {} - yaml@2.6.0: {} + yaml@2.7.1: {} yargs-parser@18.1.3: dependencies: