{"version":3,"file":"react-querybuilder_material.mjs","names":[],"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, ComponentPropsWithoutRef<typeof Button>, 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\n    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 ?? /* v8 ignore start -- @preserve */ ''} /* v8 ignore stop -- @preserve */\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, React.ComponentPropsWithoutRef<typeof Button>, 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// v8 ignore next\nconst defaultToOptionsOptions: ToOptionsOptions = {\n  ListSubheader: () => null,\n  MenuItem: () => <></>,\n};\n\nexport const toOptions = (\n  // v8 ignore next\n  arr: OptionList = [],\n  // v8 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  /* v8 ignore else -- @preserve */\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  /* v8 ignore next -- @preserve */\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: v } }: SelectChangeEvent<string | string[]>) => {\n      onChange(v);\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 CloseIcon from '@mui/icons-material/Close';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport DragIndicator from '@mui/icons-material/DragIndicator';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\nimport LockIcon from '@mui/icons-material/Lock';\nimport LockOpenIcon from '@mui/icons-material/LockOpen';\nimport Button from '@mui/material/Button';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControl from '@mui/material/FormControl';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport InputLabel from '@mui/material/InputLabel';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport MenuItem from '@mui/material/MenuItem';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport Select from '@mui/material/Select';\nimport Switch from '@mui/material/Switch';\nimport TextareaAutosize from '@mui/material/TextareaAutosize';\nimport TextField from '@mui/material/TextField';\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 { 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 = ({\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":"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"}