@react-querybuilder/material
Version:
Custom MUI (Material Design) components for react-querybuilder
1 lines • 36.6 kB
Source Map (JSON)
{"version":3,"file":"react-querybuilder_material.production.mjs","names":["RQBMaterialContext: Context<RQBMaterialContextValue | null>","Button","MaterialDragHandle: React.ForwardRefExoticComponent<\n Omit<MaterialDragHandleProps, 'ref'> & React.RefAttributes<HTMLSpanElement>\n>","DragIndicator","Switch","FormControlLabel","Button","TextField","FormControl","TextareaAutosize","Switch","Checkbox","RadioGroup","FormControlLabel","Radio","defaultToOptionsOptions: ToOptionsOptions","optArray: JSX.Element[]","ListSubheader","MenuItem","value","FormControl","InputLabel","Select","materialTranslations: Pick<\n Translations,\n | 'removeGroup'\n | 'removeRule'\n | 'cloneRule'\n | 'cloneRuleGroup'\n | 'lockGroup'\n | 'lockRule'\n | 'lockGroupDisabled'\n | 'lockRuleDisabled'\n | 'shiftActionDown'\n | 'shiftActionUp'\n>","defaultMuiComponents: RQBMaterialComponents","materialControlElements: ControlElementsProp<FullField, string>","QueryBuilderMaterial: QueryBuilderContextProvider<MuiAugmentation>"],"sources":["../src/RQBMaterialContext.ts","../src/MaterialActionElement.tsx","../src/MaterialDragHandle.tsx","../src/MaterialNotToggle.tsx","../src/MaterialShiftActions.tsx","../src/MaterialValueEditor.tsx","../src/utils.tsx","../src/MaterialValueSelector.tsx","../src/translations.tsx","../src/useMuiComponents.ts","../src/index.tsx"],"sourcesContent":["import type { Context } from 'react';\nimport { createContext } from 'react';\nimport type { RQBMaterialComponents } from './types';\n\nexport interface RQBMaterialContextValue extends RQBMaterialComponents {\n showInputLabels?: boolean;\n}\n\n/**\n * @group Components\n */\nexport const RQBMaterialContext: Context<RQBMaterialContextValue | null> =\n createContext<RQBMaterialContextValue | null>(null);\n","import type { Button } from '@mui/material';\nimport type { ComponentPropsWithoutRef, ComponentType } from 'react';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport type { ActionProps } from 'react-querybuilder';\nimport { ActionElement } from 'react-querybuilder';\nimport { RQBMaterialContext } from './RQBMaterialContext';\nimport type { MuiAugmentation } from './types';\n\n/**\n * @group Props\n */\nexport interface MaterialActionProps\n extends ActionProps,\n ComponentPropsWithoutRef<typeof Button>,\n MuiAugmentation {}\n\n/**\n * @group Components\n */\nexport const MaterialActionElement = ({\n className,\n handleOnClick,\n label,\n title,\n disabled,\n disabledTranslation,\n testID,\n path,\n level,\n rules,\n context,\n validation,\n ruleOrGroup,\n schema,\n muiComponents: muiComponentsProp,\n ...otherProps\n}: MaterialActionProps): React.JSX.Element => {\n const muiComponents = useContext(RQBMaterialContext) ?? muiComponentsProp;\n const key = muiComponents ? 'mui' : 'no-mui';\n if (!muiComponents) {\n const AE = ActionElement as ComponentType<ActionProps>;\n return (\n <AE\n key={key}\n className={className}\n handleOnClick={handleOnClick}\n label={label}\n title={title}\n disabled={disabled}\n disabledTranslation={disabledTranslation}\n testID={testID}\n path={path}\n level={level}\n rules={rules}\n context={context}\n validation={validation}\n ruleOrGroup={ruleOrGroup}\n schema={schema}\n />\n );\n }\n\n const { Button } = muiComponents;\n\n return (\n <Button\n key={key}\n variant=\"contained\"\n color=\"secondary\"\n className={className}\n title={disabledTranslation && disabled ? disabledTranslation.title : title}\n size=\"small\"\n disabled={disabled && !disabledTranslation}\n onClick={e => handleOnClick(e)}\n {...otherProps}>\n {disabledTranslation && disabled ? disabledTranslation.label : label}\n </Button>\n );\n};\n","import type DragIndicator from '@mui/icons-material/DragIndicator';\nimport type { ComponentPropsWithRef } from 'react';\nimport * as React from 'react';\nimport { forwardRef, useContext } from 'react';\nimport type { DragHandleProps } from 'react-querybuilder';\nimport { DragHandle } from 'react-querybuilder';\nimport { RQBMaterialContext } from './RQBMaterialContext';\nimport type { MuiAugmentation } from './types';\n\n/**\n * @group Props\n */\nexport interface MaterialDragHandleProps\n extends DragHandleProps,\n Omit<ComponentPropsWithRef<typeof DragIndicator>, 'path'>,\n MuiAugmentation {}\n\n/**\n * @group Components\n */\nexport const MaterialDragHandle: React.ForwardRefExoticComponent<\n Omit<MaterialDragHandleProps, 'ref'> & React.RefAttributes<HTMLSpanElement>\n> = forwardRef<HTMLSpanElement, MaterialDragHandleProps>(\n (\n {\n className,\n title,\n path,\n level,\n testID,\n label,\n disabled,\n context,\n validation,\n schema,\n ruleOrGroup,\n muiComponents: muiComponentsProp,\n ...otherProps\n },\n dragRef\n ) => {\n const muiComponents = useContext(RQBMaterialContext) ?? muiComponentsProp;\n const key = muiComponents ? 'mui' : 'no-mui';\n if (!muiComponents) {\n return (\n <DragHandle\n key={key}\n path={path}\n level={level}\n className={className}\n title={title}\n testID={testID}\n label={label}\n disabled={disabled}\n context={context}\n validation={validation}\n schema={schema}\n ruleOrGroup={ruleOrGroup}\n />\n );\n }\n\n const { DragIndicator } = muiComponents;\n\n return (\n <span key={key} ref={dragRef} className={className} title={title}>\n <DragIndicator {...otherProps} />\n </span>\n );\n }\n);\n","import type { Switch } from '@mui/material';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport type { NotToggleProps } from 'react-querybuilder';\nimport { NotToggle } from 'react-querybuilder';\nimport { RQBMaterialContext } from './RQBMaterialContext';\nimport type { MuiAugmentation, RQBMaterialComponents } from './types';\n\n/**\n * @group Props\n */\nexport type MaterialNotToggleProps = NotToggleProps &\n ComponentPropsWithoutRef<typeof Switch> &\n MuiAugmentation;\n\ntype MaterialNotToggleComponents = Pick<RQBMaterialComponents, 'FormControlLabel' | 'Switch'>;\n\n/**\n * @group Components\n */\nexport const MaterialNotToggle = ({\n className,\n handleOnChange,\n label,\n checked,\n title,\n disabled,\n level,\n path,\n context,\n validation,\n testID,\n schema,\n ruleGroup,\n muiComponents: muiComponentsProp,\n ...otherProps\n}: MaterialNotToggleProps): React.JSX.Element => {\n const muiComponents = useContext(RQBMaterialContext) ?? muiComponentsProp;\n const { FormControlLabel, Switch } = (muiComponents ?? {}) as MaterialNotToggleComponents;\n const switchControl = useMemo(\n () =>\n Switch && (\n <Switch\n checked={!!checked}\n onChange={e => handleOnChange(e.target.checked)}\n {...otherProps}\n />\n ),\n [checked, handleOnChange, otherProps, Switch]\n );\n\n const key = muiComponents ? 'mui' : 'no-mui';\n if (!muiComponents) {\n return (\n <NotToggle\n key={key}\n className={className}\n handleOnChange={handleOnChange}\n label={label}\n checked={checked}\n title={title}\n disabled={disabled}\n path={path}\n level={level}\n context={context}\n validation={validation}\n testID={testID}\n schema={schema}\n ruleGroup={ruleGroup}\n />\n );\n }\n\n return (\n <FormControlLabel\n key={key}\n className={className}\n title={title}\n disabled={disabled}\n control={switchControl}\n label={label ?? /* istanbul ignore next */ ''}\n />\n );\n};\n","import type { Button } from '@mui/material';\nimport * as React from 'react';\nimport type { ShiftActionsProps } from 'react-querybuilder';\nimport { ShiftActions } from 'react-querybuilder';\nimport { RQBMaterialContext } from './RQBMaterialContext';\nimport type { MuiAugmentation } from './types';\n\n/**\n * @group Props\n */\nexport interface MaterialShiftActionsProps\n extends ShiftActionsProps,\n React.ComponentPropsWithoutRef<typeof Button>,\n MuiAugmentation {}\n\n/**\n * @group Components\n */\nexport const MaterialShiftActions = ({\n path,\n shiftUp,\n shiftDown,\n shiftUpDisabled,\n shiftDownDisabled,\n disabled,\n className,\n labels,\n titles,\n testID,\n muiComponents: muiComponentsProp,\n ...otherProps\n}: MaterialShiftActionsProps): React.JSX.Element => {\n const muiComponents = React.useContext(RQBMaterialContext) ?? muiComponentsProp;\n const key = muiComponents ? 'mui' : 'no-mui';\n if (!muiComponents) {\n return (\n <ShiftActions\n key={key}\n path={path}\n disabled={disabled}\n className={className}\n labels={labels}\n titles={titles}\n testID={testID}\n shiftUp={shiftUp}\n shiftDown={shiftDown}\n shiftUpDisabled={shiftUpDisabled}\n shiftDownDisabled={shiftDownDisabled}\n {...otherProps}\n />\n );\n }\n\n const { Button } = muiComponents;\n\n return (\n <div key={key} data-testid={testID} className={className}>\n <Button\n sx={{ boxShadow: 'none' }}\n variant=\"contained\"\n color=\"secondary\"\n className={className}\n title={titles?.shiftUp}\n size=\"small\"\n disabled={disabled || shiftUpDisabled}\n onClick={shiftUp}>\n {labels?.shiftUp}\n </Button>\n <Button\n sx={{ boxShadow: 'none' }}\n variant=\"contained\"\n color=\"secondary\"\n className={className}\n title={titles?.shiftDown}\n size=\"small\"\n disabled={disabled || shiftDownDisabled}\n onClick={shiftDown}>\n {labels?.shiftDown}\n </Button>\n </div>\n );\n};\n","import * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport type { ValueEditorProps } from 'react-querybuilder';\nimport { getFirstOption, parseNumber, useValueEditor, ValueEditor } from 'react-querybuilder';\nimport type { MaterialValueSelector } from './MaterialValueSelector';\nimport type { RQBMaterialContextValue } from './RQBMaterialContext';\nimport { RQBMaterialContext } from './RQBMaterialContext';\nimport type { MuiAugmentation } from './types';\n\n/**\n * @group Props\n */\nexport interface MaterialValueEditorProps extends ValueEditorProps, MuiAugmentation {\n extraProps?: Record<string, unknown>;\n}\n\n/**\n * @group Components\n */\nexport const MaterialValueEditor = (props: MaterialValueEditorProps): React.JSX.Element | null => {\n const { muiComponents: muiComponentsProp, ...propsForValueEditor } = props;\n const {\n field: _f,\n fieldData,\n operator,\n value,\n handleOnChange,\n title,\n className,\n type,\n inputType,\n path,\n level,\n values = [],\n listsAsArrays,\n separator,\n valueSource: _vs,\n disabled,\n testID,\n selectorComponent: SelectorComponent = props.schema.controls\n .valueSelector as typeof MaterialValueSelector,\n showInputLabels: silProp,\n extraProps,\n parseNumbers: _parseNumbers,\n ...propsForValueSelector\n } = propsForValueEditor;\n const muiComponents =\n useContext(RQBMaterialContext) ?? (muiComponentsProp as RQBMaterialContextValue);\n\n const {\n valueAsArray,\n multiValueHandler,\n bigIntValueHandler,\n parseNumberMethod,\n valueListItemClassName,\n inputTypeCoerced,\n } = useValueEditor(propsForValueEditor);\n\n const masterKey = muiComponents ? 'mui' : 'no-mui';\n const {\n Checkbox,\n FormControl,\n FormControlLabel,\n Radio,\n RadioGroup,\n Switch,\n TextareaAutosize,\n TextField,\n showInputLabels: silCtx,\n } = useMemo(() => muiComponents ?? {}, [muiComponents]);\n\n if (!muiComponents) {\n return <ValueEditor skipHook key={masterKey} {...propsForValueEditor} />;\n }\n\n if (operator === 'null' || operator === 'notNull') {\n return null;\n }\n\n const placeHolderText = fieldData?.placeholder ?? '';\n const showInputLabels = silProp || silCtx;\n\n if (\n (operator === 'between' || operator === 'notBetween') &&\n (type === 'select' || type === 'text')\n ) {\n const editors = ['From', 'To'].map((key, i) => {\n if (type === 'text') {\n return (\n <TextField\n key={key}\n variant=\"standard\"\n type={inputTypeCoerced}\n className={valueListItemClassName}\n placeholder={placeHolderText}\n value={valueAsArray[i] ?? ''}\n disabled={disabled}\n label={showInputLabels ? key : undefined}\n onChange={e => multiValueHandler(e.target.value, i)}\n {...extraProps}\n />\n );\n }\n return (\n <SelectorComponent\n key={key}\n {...propsForValueSelector}\n title={showInputLabels ? key : undefined}\n path={path}\n level={level}\n className={valueListItemClassName}\n handleOnChange={v => multiValueHandler(v, i)}\n muiComponents={muiComponents}\n disabled={disabled}\n value={valueAsArray[i] ?? getFirstOption(values)}\n options={values}\n listsAsArrays={listsAsArrays}\n />\n );\n });\n return (\n <FormControl\n key={masterKey}\n data-testid={testID}\n className={className}\n title={title}\n disabled={disabled}>\n {editors[0]}\n {separator}\n {editors[1]}\n </FormControl>\n );\n }\n\n switch (type) {\n case 'select':\n case 'multiselect':\n return (\n <SelectorComponent\n key={masterKey}\n {...propsForValueSelector}\n muiComponents={muiComponents}\n path={path}\n level={level}\n className={className}\n handleOnChange={handleOnChange}\n options={values}\n value={value}\n disabled={disabled}\n title={title}\n multiple={type === 'multiselect'}\n listsAsArrays={listsAsArrays}\n />\n );\n\n case 'textarea':\n return (\n <TextareaAutosize\n key={masterKey}\n value={value}\n title={title}\n disabled={disabled}\n className={className}\n placeholder={placeHolderText}\n onChange={e => handleOnChange(e.target.value)}\n {...extraProps}\n />\n );\n\n case 'switch':\n return (\n <Switch\n key={masterKey}\n checked={!!value}\n title={title}\n disabled={disabled}\n className={className}\n onChange={e => handleOnChange(e.target.checked)}\n {...extraProps}\n />\n );\n\n case 'checkbox':\n return (\n <Checkbox\n key={masterKey}\n className={className}\n title={title}\n onChange={e => handleOnChange(e.target.checked)}\n checked={!!value}\n disabled={disabled}\n {...extraProps}\n />\n );\n\n case 'radio':\n return (\n <FormControl\n key={masterKey}\n className={className}\n title={title}\n component=\"fieldset\"\n disabled={disabled}\n {...extraProps}>\n <RadioGroup value={value} onChange={e => handleOnChange(e.target.value)}>\n {values.map(v => (\n <FormControlLabel\n key={v.name}\n disabled={disabled}\n value={v.name}\n // oxlint-disable-next-line jsx-no-jsx-as-prop\n control={<Radio />}\n name={v.name}\n label={v.label}\n />\n ))}\n </RadioGroup>\n </FormControl>\n );\n }\n\n /**\n * TODO: Provide either (1) examples or (2) alternate exports that support `inputType`\n * \"date\", \"datetime-local\", and \"time\", with components from `@mui/x-date-pickers`\n * (`<DatePicker />`, `<DateTimePicker />`, and `<TimePicker />`, respecitively).\n */\n\n if (inputType === 'bigint') {\n return (\n <TextField\n key={masterKey}\n variant=\"standard\"\n data-testid={testID}\n type={inputTypeCoerced}\n placeholder={placeHolderText}\n value={`${value}`}\n title={title}\n className={className}\n disabled={disabled}\n label={showInputLabels ? title : undefined}\n onChange={e => bigIntValueHandler(e.target.value)}\n {...extraProps}\n />\n );\n }\n\n return (\n <TextField\n key={masterKey}\n variant=\"standard\"\n type={inputTypeCoerced}\n value={value}\n title={title}\n disabled={disabled}\n className={className}\n placeholder={placeHolderText}\n label={showInputLabels ? title : undefined}\n onChange={e =>\n handleOnChange(parseNumber(e.target.value, { parseNumbers: parseNumberMethod }))\n }\n {...extraProps}\n />\n );\n};\n","import type { JSX } from 'react';\nimport * as React from 'react';\nimport type { OptionList } from 'react-querybuilder';\nimport { isOptionGroupArray } from 'react-querybuilder';\nimport type { RQBMaterialComponents } from './types';\n\nexport { isOptionGroupArray };\n\ntype ToOptionsOptions = Pick<RQBMaterialComponents, 'ListSubheader' | 'MenuItem'>;\n\n// istanbul ignore next\nconst defaultToOptionsOptions: ToOptionsOptions = {\n ListSubheader: () => null,\n MenuItem: () => <></>,\n};\n\nexport const toOptions = (\n // istanbul ignore next\n arr: OptionList = [],\n // istanbul ignore next\n { ListSubheader, MenuItem }: ToOptionsOptions = defaultToOptionsOptions\n): JSX.Element[] | null => {\n if (isOptionGroupArray(arr)) {\n const optArray: JSX.Element[] = [];\n for (const og of arr) {\n optArray.push(\n <ListSubheader key={og.label}>{og.label}</ListSubheader>,\n ...og.options.map(opt => (\n <MenuItem key={opt.name} value={opt.name}>\n {opt.label}\n </MenuItem>\n ))\n );\n }\n return optArray;\n }\n /* istanbul ignore else */\n if (Array.isArray(arr)) {\n return arr.map(opt => (\n <MenuItem key={opt.name} value={opt.name}>\n {opt.label}\n </MenuItem>\n ));\n }\n /* istanbul ignore next */\n return null;\n};\n","import type { Select, SelectChangeEvent } from '@mui/material';\nimport type { ComponentPropsWithoutRef, ComponentType } from 'react';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport type { VersatileSelectorProps } from 'react-querybuilder';\nimport { ValueSelector, useValueSelector } from 'react-querybuilder';\nimport type { RQBMaterialContextValue } from './RQBMaterialContext';\nimport { RQBMaterialContext } from './RQBMaterialContext';\nimport type { MuiAugmentation } from './types';\nimport { toOptions } from './utils';\n\n/**\n * @group Props\n */\nexport type MaterialValueSelectorProps = VersatileSelectorProps &\n ComponentPropsWithoutRef<typeof Select> &\n MuiAugmentation;\n\n/**\n * @group Components\n */\nexport const MaterialValueSelector = ({\n className,\n handleOnChange,\n options,\n value,\n disabled,\n title,\n multiple,\n listsAsArrays,\n testID,\n rule,\n ruleGroup,\n rules,\n level,\n path,\n context,\n validation,\n operator,\n field,\n fieldData,\n schema,\n muiComponents: muiComponentsProp,\n showInputLabels: silProp,\n defaultValue: _defaultValue,\n ...otherProps\n}: MaterialValueSelectorProps): React.JSX.Element => {\n const muiComponents =\n useContext(RQBMaterialContext) ?? (muiComponentsProp as RQBMaterialContextValue);\n\n const { onChange, val } = useValueSelector({ handleOnChange, listsAsArrays, multiple, value });\n\n const muiSelectChangeHandler = React.useCallback(\n ({ target: { value } }: SelectChangeEvent<string | string[]>) => {\n onChange(value);\n },\n [onChange]\n );\n\n const key = muiComponents ? 'mui' : 'no-mui';\n if (!muiComponents) {\n const VS = ValueSelector as ComponentType<VersatileSelectorProps>;\n return (\n <VS\n key={key}\n className={className}\n handleOnChange={handleOnChange}\n options={options}\n value={value}\n disabled={disabled}\n title={title}\n multiple={multiple}\n listsAsArrays={listsAsArrays}\n testID={testID}\n rule={rule}\n ruleGroup={ruleGroup}\n rules={rules}\n level={level}\n path={path}\n context={context}\n validation={validation}\n operator={operator}\n field={field}\n fieldData={fieldData}\n schema={schema}\n />\n );\n }\n\n const {\n FormControl,\n InputLabel,\n ListSubheader,\n MenuItem,\n Select,\n showInputLabels: silCtx,\n } = muiComponents;\n\n const showInputLabels = silProp || silCtx;\n\n return (\n <FormControl\n key={key}\n variant=\"standard\"\n className={className}\n title={title}\n disabled={disabled}>\n {showInputLabels && <InputLabel>{title}</InputLabel>}\n <Select\n value={val}\n onChange={muiSelectChangeHandler}\n multiple={multiple}\n disabled={disabled}\n label={showInputLabels ? title : undefined}\n {...otherProps}>\n {toOptions(options, { ListSubheader, MenuItem })}\n </Select>\n </FormControl>\n );\n};\n","import * as React from 'react';\nimport type { Translations } from 'react-querybuilder';\nimport { defaultTranslations } from 'react-querybuilder';\nimport { RQBMaterialContext } from './RQBMaterialContext';\n\nconst CloseIconWrapper = () => {\n const muiComponents = React.useContext(RQBMaterialContext);\n if (!muiComponents) {\n return defaultTranslations.removeRule.label;\n }\n const { CloseIcon } = muiComponents;\n return <CloseIcon />;\n};\nconst ContentCopyIconWrapper = () => {\n const muiComponents = React.useContext(RQBMaterialContext);\n if (!muiComponents) {\n return defaultTranslations.cloneRule.label;\n }\n const { ContentCopyIcon } = muiComponents;\n return <ContentCopyIcon />;\n};\nconst LockIconWrapper = () => {\n const muiComponents = React.useContext(RQBMaterialContext);\n if (!muiComponents) {\n return defaultTranslations.lockRuleDisabled.label;\n }\n const { LockIcon } = muiComponents;\n return <LockIcon />;\n};\nconst LockOpenIconWrapper = () => {\n const muiComponents = React.useContext(RQBMaterialContext);\n if (!muiComponents) {\n return defaultTranslations.lockRule.label;\n }\n const { LockOpenIcon } = muiComponents;\n return <LockOpenIcon />;\n};\nconst ShiftDownIconWrapper = () => {\n const muiComponents = React.useContext(RQBMaterialContext);\n if (!muiComponents) {\n return defaultTranslations.shiftActionDown.label;\n }\n const { KeyboardArrowDownIcon } = muiComponents;\n return <KeyboardArrowDownIcon />;\n};\nconst ShiftUpIconWrapper = () => {\n const muiComponents = React.useContext(RQBMaterialContext);\n if (!muiComponents) {\n return defaultTranslations.shiftActionUp.label;\n }\n const { KeyboardArrowUpIcon } = muiComponents;\n return <KeyboardArrowUpIcon />;\n};\n\nexport const materialTranslations: Pick<\n Translations,\n | 'removeGroup'\n | 'removeRule'\n | 'cloneRule'\n | 'cloneRuleGroup'\n | 'lockGroup'\n | 'lockRule'\n | 'lockGroupDisabled'\n | 'lockRuleDisabled'\n | 'shiftActionDown'\n | 'shiftActionUp'\n> = {\n removeGroup: { label: <CloseIconWrapper /> },\n removeRule: { label: <CloseIconWrapper /> },\n cloneRule: { label: <ContentCopyIconWrapper /> },\n cloneRuleGroup: { label: <ContentCopyIconWrapper /> },\n lockGroup: { label: <LockOpenIconWrapper /> },\n lockRule: { label: <LockOpenIconWrapper /> },\n lockGroupDisabled: { label: <LockIconWrapper /> },\n lockRuleDisabled: { label: <LockIconWrapper /> },\n shiftActionDown: { label: <ShiftDownIconWrapper /> },\n shiftActionUp: { label: <ShiftUpIconWrapper /> },\n};\n","import {\n Close as CloseIcon,\n ContentCopy as ContentCopyIcon,\n DragIndicator,\n KeyboardArrowDown as KeyboardArrowDownIcon,\n KeyboardArrowUp as KeyboardArrowUpIcon,\n Lock as LockIcon,\n LockOpen as LockOpenIcon,\n} from '@mui/icons-material';\nimport {\n Button,\n Checkbox,\n FormControl,\n FormControlLabel,\n InputLabel,\n ListSubheader,\n MenuItem,\n Radio,\n RadioGroup,\n Select,\n Switch,\n TextareaAutosize,\n TextField,\n} from '@mui/material';\nimport { useContext, useMemo } from 'react';\nimport { RQBMaterialContext } from './RQBMaterialContext';\nimport type { RQBMaterialComponents } from './types';\n\nexport const defaultMuiComponents: RQBMaterialComponents = {\n DragIndicator,\n Button,\n Checkbox,\n CloseIcon,\n ContentCopyIcon,\n FormControl,\n FormControlLabel,\n InputLabel,\n KeyboardArrowDownIcon,\n KeyboardArrowUpIcon,\n ListSubheader,\n LockIcon,\n LockOpenIcon,\n MenuItem,\n Radio,\n RadioGroup,\n Select,\n Switch,\n TextareaAutosize,\n TextField,\n};\n\n/**\n * @group Hooks\n */\nexport const useMuiComponents = (\n preloadedComponents?: RQBMaterialComponents\n): RQBMaterialComponents => {\n const muiComponentsFromContext = useContext(RQBMaterialContext);\n\n const initialComponents = useMemo(\n () =>\n preloadedComponents && muiComponentsFromContext\n ? {\n ...defaultMuiComponents,\n ...muiComponentsFromContext,\n ...preloadedComponents,\n }\n : preloadedComponents\n ? { ...defaultMuiComponents, ...preloadedComponents }\n : muiComponentsFromContext\n ? { ...defaultMuiComponents, ...muiComponentsFromContext }\n : defaultMuiComponents,\n [muiComponentsFromContext, preloadedComponents]\n );\n\n return initialComponents;\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport type {\n ControlElementsProp,\n FullField,\n QueryBuilderContextProvider,\n} from 'react-querybuilder';\nimport { getCompatContextProvider } from 'react-querybuilder';\nimport { MaterialActionElement } from './MaterialActionElement';\nimport { MaterialDragHandle } from './MaterialDragHandle';\nimport { MaterialNotToggle } from './MaterialNotToggle';\nimport { MaterialShiftActions } from './MaterialShiftActions';\nimport { MaterialValueEditor } from './MaterialValueEditor';\nimport { MaterialValueSelector } from './MaterialValueSelector';\nimport { RQBMaterialContext } from './RQBMaterialContext';\nimport { materialTranslations } from './translations';\nimport type { MuiAugmentation } from './types';\nimport { useMuiComponents } from './useMuiComponents';\n\nexport * from './MaterialActionElement';\nexport * from './MaterialDragHandle';\nexport * from './MaterialNotToggle';\nexport * from './MaterialShiftActions';\nexport * from './MaterialValueEditor';\nexport * from './MaterialValueSelector';\nexport * from './RQBMaterialContext';\nexport * from './types';\nexport * from './useMuiComponents';\nexport { materialTranslations };\n\n/**\n * @group Props\n */\nexport const materialControlElements: ControlElementsProp<FullField, string> = {\n actionElement: MaterialActionElement,\n dragHandle: MaterialDragHandle,\n notToggle: MaterialNotToggle,\n shiftActions: MaterialShiftActions,\n valueEditor: MaterialValueEditor,\n valueSelector: MaterialValueSelector,\n};\n\nconst MaterialContextProvider = getCompatContextProvider({\n controlElements: materialControlElements,\n translations: materialTranslations,\n});\n\n/**\n * @group Components\n */\nexport const QueryBuilderMaterial: QueryBuilderContextProvider<MuiAugmentation> = ({\n muiComponents: muiComponentsProp,\n showInputLabels,\n ...props\n}) => {\n const muiComponents = useMuiComponents(muiComponentsProp);\n\n const ctxValue = useMemo(\n () => ({ ...muiComponents, ...muiComponentsProp, showInputLabels }),\n [muiComponents, muiComponentsProp, showInputLabels]\n );\n\n return (\n <RQBMaterialContext.Provider value={ctxValue}>\n <MaterialContextProvider {...props} />\n </RQBMaterialContext.Provider>\n );\n};\n"],"mappings":"0wBAWA,MAAaA,EACX,EAA8C,KAAK,CCQxC,GAAyB,CACpC,YACA,gBACA,QACA,QACA,WACA,sBACA,SACA,OACA,QACA,QACA,UACA,aACA,cACA,SACA,cAAe,EACf,GAAG,KACyC,CAC5C,IAAM,EAAgB,EAAW,EAAmB,EAAI,EAClD,EAAM,EAAgB,MAAQ,SACpC,GAAI,CAAC,EAAe,CAClB,IAAM,EAAK,EACX,OACE,EAAA,cAAC,EAAA,CACM,MACM,YACI,gBACR,QACA,QACG,WACW,sBACb,SACF,OACC,QACA,QACE,UACG,aACC,cACL,UACR,CAIN,GAAM,CAAE,OAAA,GAAW,EAEnB,OACE,EAAA,cAACC,EAAAA,CACM,MACL,QAAQ,YACR,MAAM,YACK,YACX,MAAO,GAAuB,EAAW,EAAoB,MAAQ,EACrE,KAAK,QACL,SAAU,GAAY,CAAC,EACvB,QAAS,GAAK,EAAc,EAAE,CAC9B,GAAI,GACH,GAAuB,EAAW,EAAoB,MAAQ,EACxD,ECzDAC,EAET,GAEA,CACE,YACA,QACA,OACA,QACA,SACA,QACA,WACA,UACA,aACA,SACA,cACA,cAAe,EACf,GAAG,GAEL,IACG,CACH,IAAM,EAAgB,EAAW,EAAmB,EAAI,EAClD,EAAM,EAAgB,MAAQ,SACpC,GAAI,CAAC,EACH,OACE,EAAA,cAAC,EAAA,CACM,MACC,OACC,QACI,YACJ,QACC,SACD,QACG,WACD,UACG,aACJ,SACK,eACb,CAIN,GAAM,CAAE,cAAA,GAAkB,EAE1B,OACE,EAAA,cAAC,OAAA,CAAU,MAAK,IAAK,EAAoB,YAAkB,SACzD,EAAA,cAACC,EAAkB,EAAc,CAC5B,EAGZ,CCjDY,GAAqB,CAChC,YACA,iBACA,QACA,UACA,QACA,WACA,QACA,OACA,UACA,aACA,SACA,SACA,YACA,cAAe,EACf,GAAG,KAC4C,CAC/C,IAAM,EAAgB,EAAW,EAAmB,EAAI,EAClD,CAAE,iBAAA,EAAkB,OAAA,GAAY,GAAiB,EAAE,CACnD,EAAgB,MAElBC,GACE,EAAA,cAACA,EAAAA,CACC,QAAS,CAAC,CAAC,EACX,SAAU,GAAK,EAAe,EAAE,OAAO,QAAQ,CAC/C,GAAI,GACJ,CAEN,CAAC,EAAS,EAAgB,EAAYA,EAAO,CAC9C,CAEK,EAAM,EAAgB,MAAQ,SAsBpC,OArBK,EAsBH,EAAA,cAACC,EAAAA,CACM,MACM,YACJ,QACG,WACV,QAAS,EACT,MAAO,GAAoC,IAC3C,CA3BA,EAAA,cAAC,EAAA,CACM,MACM,YACK,iBACT,QACE,UACF,QACG,WACJ,OACC,QACE,UACG,aACJ,SACA,SACG,aACX,ECpDK,GAAwB,CACnC,OACA,UACA,YACA,kBACA,oBACA,WACA,YACA,SACA,SACA,SACA,cAAe,EACf,GAAG,KAC+C,CAClD,IAAM,EAAgB,EAAM,WAAW,EAAmB,EAAI,EACxD,EAAM,EAAgB,MAAQ,SACpC,GAAI,CAAC,EACH,OACE,EAAA,cAAC,EAAA,CACM,MACC,OACI,WACC,YACH,SACA,SACA,SACC,UACE,YACM,kBACE,oBACnB,GAAI,GACJ,CAIN,GAAM,CAAE,OAAA,GAAW,EAEnB,OACE,EAAA,cAAC,MAAA,CAAS,MAAK,cAAa,EAAmB,aAC7C,EAAA,cAACC,EAAAA,CACC,GAAI,CAAE,UAAW,OAAQ,CACzB,QAAQ,YACR,MAAM,YACK,YACX,MAAO,GAAQ,QACf,KAAK,QACL,SAAU,GAAY,EACtB,QAAS,GACR,GAAQ,QACF,CACT,EAAA,cAACA,EAAAA,CACC,GAAI,CAAE,UAAW,OAAQ,CACzB,QAAQ,YACR,MAAM,YACK,YACX,MAAO,GAAQ,UACf,KAAK,QACL,SAAU,GAAY,EACtB,QAAS,GACR,GAAQ,UACF,CACL,EC5DG,EAAuB,GAA8D,CAChG,GAAM,CAAE,cAAe,EAAmB,GAAG,GAAwB,EAC/D,CACJ,MAAO,EACP,YACA,WACA,QACA,iBACA,QACA,YACA,OACA,YACA,OACA,QACA,SAAS,EAAE,CACX,gBACA,YACA,YAAa,EACb,WACA,SACA,kBAAmB,EAAoB,EAAM,OAAO,SACjD,cACH,gBAAiB,EACjB,aACA,aAAc,EACd,GAAG,GACD,EACE,EACJ,EAAW,EAAmB,EAAK,EAE/B,CACJ,eACA,oBACA,qBACA,oBACA,yBACA,oBACE,EAAe,EAAoB,CAEjC,EAAY,EAAgB,MAAQ,SACpC,CACJ,SAAA,EACA,YAAA,EACA,iBAAA,EACA,MAAA,EACA,WAAA,EACA,OAAA,EACA,iBAAA,EACA,UAAA,EACA,gBAAiB,GACf,MAAc,GAAiB,EAAE,CAAE,CAAC,EAAc,CAAC,CAEvD,GAAI,CAAC,EACH,OAAO,EAAA,cAAC,EAAA,CAAY,SAAA,GAAS,IAAK,EAAW,GAAI,GAAuB,CAG1E,GAAI,IAAa,QAAU,IAAa,UACtC,OAAO,KAGT,IAAM,EAAkB,GAAW,aAAe,GAC5C,EAAkB,GAAW,EAEnC,IACG,IAAa,WAAa,IAAa,gBACvC,IAAS,UAAY,IAAS,QAC/B,CACA,IAAM,EAAU,CAAC,OAAQ,KAAK,CAAC,KAAK,EAAK,IACnC,IAAS,OAET,EAAA,cAACC,EAAAA,CACM,MACL,QAAQ,WACR,KAAM,EACN,UAAW,EACX,YAAa,EACb,MAAO,EAAa,IAAM,GAChB,WACV,MAAO,EAAkB,EAAM,IAAA,GAC/B,SAAU,GAAK,EAAkB,EAAE,OAAO,MAAO,EAAE,CACnD,GAAI,GACJ,CAIJ,EAAA,cAAC,EAAA,CACM,MACL,GAAI,EACJ,MAAO,EAAkB,EAAM,IAAA,GACzB,OACC,QACP,UAAW,EACX,eAAgB,GAAK,EAAkB,EAAG,EAAE,CAC7B,gBACL,WACV,MAAO,EAAa,IAAM,EAAe,EAAO,CAChD,QAAS,EACM,iBACf,CAEJ,CACF,OACE,EAAA,cAACC,EAAAA,CACC,IAAK,EACL,cAAa,EACF,YACJ,QACG,YACT,EAAQ,GACR,EACA,EAAQ,GACG,CAIlB,OAAQ,EAAR,CACE,IAAK,SACL,IAAK,cACH,OACE,EAAA,cAAC,EAAA,CACC,IAAK,EACL,GAAI,EACW,gBACT,OACC,QACI,YACK,iBAChB,QAAS,EACF,QACG,WACH,QACP,SAAU,IAAS,cACJ,iBACf,CAGN,IAAK,WACH,OACE,EAAA,cAACC,EAAAA,CACC,IAAK,EACE,QACA,QACG,WACC,YACX,YAAa,EACb,SAAU,GAAK,EAAe,EAAE,OAAO,MAAM,CAC7C,GAAI,GACJ,CAGN,IAAK,SACH,OACE,EAAA,cAACC,EAAAA,CACC,IAAK,EACL,QAAS,CAAC,CAAC,EACJ,QACG,WACC,YACX,SAAU,GAAK,EAAe,EAAE,OAAO,QAAQ,CAC/C,GAAI,GACJ,CAGN,IAAK,WACH,OACE,EAAA,cAACC,EAAAA,CACC,IAAK,EACM,YACJ,QACP,SAAU,GAAK,EAAe,EAAE,OAAO,QAAQ,CAC/C,QAAS,CAAC,CAAC,EACD,WACV,GAAI,GACJ,CAGN,IAAK,QACH,OACE,EAAA,cAACH,EAAAA,CACC,IAAK,EACM,YACJ,QACP,UAAU,WACA,WACV,GAAI,GACJ,EAAA,cAACI,EAAAA,CAAkB,QAAO,SAAU,GAAK,EAAe,EAAE,OAAO,MAAM,EACpE,EAAO,IAAI,GACV,EAAA,cAACC,EAAAA,CACC,IAAK,EAAE,KACG,WACV,MAAO,EAAE,KAET,QAAS,EAAA,cAACC,EAAAA,KAAQ,CAClB,KAAM,EAAE,KACR,MAAO,EAAE,OACT,CACF,CACS,CACD,CA6BpB,OAnBI,IAAc,SAEd,EAAA,cAACP,EAAAA,CACC,IAAK,EACL,QAAQ,WACR,cAAa,EACb,KAAM,EACN,YAAa,EACb,MAAO,GAAG,IACH,QACI,YACD,WACV,MAAO,EAAkB,EAAQ,IAAA,GACjC,SAAU,GAAK,EAAmB,EAAE,OAAO,MAAM,CACjD,GAAI,GACJ,CAKJ,EAAA,cAACA,EAAAA,CACC,IAAK,EACL,QAAQ,WACR,KAAM,EACC,QACA,QACG,WACC,YACX,YAAa,EACb,MAAO,EAAkB,EAAQ,IAAA,GACjC,SAAU,GACR,EAAe,EAAY,EAAE,OAAO,MAAO,CAAE,aAAc,EAAmB,CAAC,CAAC,CAElF,GAAI,GACJ,EC1PAQ,EAA4C,CAChD,kBAAqB,KACrB,aAAgB,EAAA,cAAA,EAAA,SAAA,KAAK,CACtB,CAEY,GAEX,EAAkB,EAAE,CAEpB,CAAE,cAAA,EAAe,SAAA,GAA+B,IACvB,CACzB,GAAI,EAAmB,EAAI,CAAE,CAC3B,IAAMC,EAA0B,EAAE,CAClC,IAAK,IAAM,KAAM,EACf,EAAS,KACP,EAAA,cAACC,EAAAA,CAAc,IAAK,EAAG,MAAA,CAAQ,EAAG,MAAsB,CACxD,GAAG,EAAG,QAAQ,IAAI,GAChB,EAAA,cAACC,EAAAA,CAAS,IAAK,EAAI,KAAM,MAAO,EAAI,MACjC,EAAI,MACI,CACX,CACH,CAEH,OAAO,EAWT,OARI,MAAM,QAAQ,EAAI,CACb,EAAI,IAAI,GACb,EAAA,cAACA,EAAAA,CAAS,IAAK,EAAI,KAAM,MAAO,EAAI,MACjC,EAAI,MACI,CACX,CAGG,MCxBI,GAAyB,CACpC,YACA,iBACA,UACA,QACA,WACA,QACA,WACA,gBACA,SACA,OACA,YACA,QACA,QACA,OACA,UACA,aACA,WACA,QACA,YACA,SACA,cAAe,EACf,gBAAiB,EACjB,aAAc,EACd,GAAG,KACgD,CACnD,IAAM,EACJ,EAAW,EAAmB,EAAK,EAE/B,CAAE,WAAU,OAAQ,EAAiB,CAAE,iBAAgB,gBAAe,WAAU,QAAO,CAAC,CAExF,EAAyB,EAAM,aAClC,CAAE,OAAQ,CAAE,MAAA,MAAoD,CAC/D,EAASC,EAAM,EAEjB,CAAC,EAAS,CACX,CAEK,EAAM,EAAgB,MAAQ,SACpC,GAAI,CAAC,EAAe,CAClB,IAAM,EAAK,EACX,OACE,EAAA,cAAC,EAAA,CACM,MACM,YACK,iBACP,UACF,QACG,WACH,QACG,WACK,gBACP,SACF,OACK,YACJ,QACA,QACD,OACG,UACG,aACF,WACH,QACI,YACH,UACR,CAIN,GAAM,CACJ,YAAA,EACA,WAAA,EACA,cAAA,EACA,SAAA,EACA,OAAA,EACA,gBAAiB,GACf,EAEE,EAAkB,GAAW,EAEnC,OACE,EAAA,cAACC,EAAAA,CACM,MACL,QAAQ,WACG,YACJ,QACG,YACT,GAAmB,EAAA,cAACC,EAAAA,KAAY,EAAmB,CACpD,EAAA,cAACC,EAAAA,CACC,MAAO,EACP,SAAU,EACA,WACA,WACV,MAAO,EAAkB,EAAQ,IAAA,GACjC,GAAI,GACH,EAAU,EAAS,CAAE,cAAA,EAAe,SAAA,EAAU,CAAC,CACzC,CACG,EChHZ,MAAyB,CAC7B,IAAM,EAAgB,EAAM,WAAW,EAAmB,CAC1D,GAAI,CAAC,EACH,OAAO,EAAoB,WAAW,MAExC,GAAM,CAAE,aAAc,EACtB,OAAO,EAAA,cAAC,EAAA,KAAY,EAEhB,MAA+B,CACnC,IAAM,EAAgB,EAAM,WAAW,EAAmB,CAC1D,GAAI,CAAC,EACH,OAAO,EAAoB,UAAU,MAEvC,GAAM,CAAE,mBAAoB,EAC5B,OAAO,EAAA,cAAC,EAAA,KAAkB,EAEtB,MAAwB,CAC5B,IAAM,EAAgB,EAAM,WAAW,EAAmB,CAC1D,GAAI,CAAC,EACH,OAAO,EAAoB,iBAAiB,MAE9C,GAAM,CAAE,YAAa,EACrB,OAAO,EAAA,cAAC,EAAA,KAAW,EAEf,MAA4B,CAChC,IAAM,EAAgB,EAAM,WAAW,EAAmB,CAC1D,GAAI,CAAC,EACH,OAAO,EAAoB,SAAS,MAEtC,GAAM,CAAE,gBAAiB,EACzB,OAAO,EAAA,cAAC,EAAA,KAAe,EAmBZC,EAYT,CACF,YAAa,CAAE,MAAO,EAAA,cAAC,EAAA,KAAmB,CAAE,CAC5C,WAAY,CAAE,MAAO,EAAA,cAAC,EAAA,KAAmB,CAAE,CAC3C,UAAW,CAAE,MAAO,EAAA,cAAC,EAAA,KAAyB,CAAE,CAChD,eAAgB,CAAE,MAAO,EAAA,cAAC,EAAA,KAAyB,CAAE,CACrD,UAAW,CAAE,MAAO,EAAA,cAAC,EAAA,KAAsB,CAAE,CAC7C,SAAU,CAAE,MAAO,EAAA,cAAC,EAAA,KAAsB,CAAE,CAC5C,kBAAmB,CAAE,MAAO,EAAA,cAAC,EAAA,KAAkB,CAAE,CACjD,iBAAkB,CAAE,MAAO,EAAA,cAAC,EAAA,KAAkB,CAAE,CAChD,gBAAiB,CAAE,MAAO,EAAA,kBAtCO,CACjC,IAAM,EAAgB,EAAM,WAAW,EAAmB,CAC1D,GAAI,CAAC,EACH,OAAO,EAAoB,gBAAgB,MAE7C,GAAM,CAAE,yBAA0B,EAClC,OAAO,EAAA,cAAC,EAAA,KAAwB,EAgCL,KAAuB,CAAE,CACpD,cAAe,CAAE,MAAO,EAAA,kBA/BO,CAC/B,IAAM,EAAgB,EAAM,WAAW,EAAmB,CAC1D,GAAI,CAAC,EACH,OAAO,EAAoB,cAAc,MAE3C,GAAM,CAAE,uBAAwB,EAChC,OAAO,EAAA,cAAC,EAAA,KAAsB,EAyBL,KAAqB,CAAE,CACjD,CCjDYC,EAA8C,CACzD,gBACA,SACA,WACA,UAAA,EACA,gBAAA,EACA,cACA,mBACA,aACA,sBAAA,EACA,oBAAA,EACA,gBACA,SAAA,EACA,aAAA,EACA,WACA,QACA,aACA,SACA,SACA,mBACA,YACD,CAKY,EACX,GAC0B,CAC1B,IAAM,EAA2B,EAAW,EAAmB,CAkB/D,OAhB0B,MAEtB,GAAuB,EACnB,CACE,GAAG,EACH,GAAG,EACH,GAAG,EACJ,CACD,EACE,CAAE,GAAG,EAAsB,GAAG,EAAqB,CACnD,EACE,CAAE,GAAG,EAAsB,GAAG,EAA0B,CACxD,EACV,CAAC,EAA0B,EAAoB,CAChD,ECxCUC,GAAkE,CAC7E,cAAe,EACf,WAAY,EACZ,UAAW,EACX,aAAc,EACd,YAAa,EACb,cAAe,EAChB,CAEK,GAA0B,EAAyB,CACvD,gBAAiB,GACjB,aAAc,EACf,CAAC,CAKWC,IAAsE,CACjF,cAAe,EACf,kBACA,GAAG,KACC,CACJ,IAAM,EAAgB,EAAiB,EAAkB,CAEnD,EAAW,OACR,CAAE,GAAG,EAAe,GAAG,EAAmB,kBAAiB,EAClE,CAAC,EAAe,EAAmB,EAAgB,CACpD,CAED,OACE,EAAA,cAAC,EAAmB,SAAA,CAAS,MAAO,EAAA,CAClC,EAAA,cAAC,GAA4B,EAAS,CACV"}