{"version":3,"file":"react-querybuilder_material.production.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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"}