{
  "version": 3,
  "sources": ["../../src/select-control/index.tsx"],
  "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BaseControl from '../base-control';\nimport { Select, StyledInputBase } from './styles/select-control-styles';\nimport SelectControlChevronDown from './chevron-down';\nimport { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction useUniqueId(idProp) {\n  const instanceId = useInstanceId(SelectControl);\n  const id = `inspector-select-control-${instanceId}`;\n  return idProp || id;\n}\nfunction SelectOptions({\n  options\n}) {\n  return options.map(({\n    id,\n    label,\n    value,\n    ...optionProps\n  }, index) => {\n    const key = id || `${label}-${value}-${index}`;\n    return /*#__PURE__*/_jsx(\"option\", {\n      value: value,\n      ...optionProps,\n      children: label\n    }, key);\n  });\n}\nfunction UnforwardedSelectControl(props, ref) {\n  const {\n    className,\n    disabled = false,\n    help,\n    hideLabelFromVision,\n    id: idProp,\n    label,\n    multiple = false,\n    onChange,\n    options = [],\n    size = 'default',\n    value: valueProp,\n    labelPosition = 'top',\n    children,\n    prefix,\n    suffix,\n    variant = 'default',\n    __next40pxDefaultSize = false,\n    __nextHasNoMarginBottom: _,\n    // Prevent passing to internal component\n    __shouldNotWarnDeprecated36pxSize,\n    ...restProps\n  } = useDeprecated36pxDefaultSizeProp(props);\n  const id = useUniqueId(idProp);\n  const helpId = help ? `${id}__help` : undefined;\n  if (!options?.length && !children) {\n    return null;\n  }\n  const handleOnChange = event => {\n    if (props.multiple) {\n      const selectedOptions = Array.from(event.target.options).filter(({\n        selected\n      }) => selected);\n      const newValues = selectedOptions.map(({\n        value\n      }) => value);\n      props.onChange?.(newValues, {\n        event\n      });\n      return;\n    }\n    props.onChange?.(event.target.value, {\n      event\n    });\n  };\n  const classes = clsx('components-select-control', className);\n  maybeWarnDeprecated36pxSize({\n    componentName: 'SelectControl',\n    __next40pxDefaultSize,\n    size,\n    __shouldNotWarnDeprecated36pxSize\n  });\n  return /*#__PURE__*/_jsx(BaseControl, {\n    help: help,\n    id: id,\n    className: classes,\n    children: /*#__PURE__*/_jsx(StyledInputBase, {\n      disabled: disabled,\n      hideLabelFromVision: hideLabelFromVision,\n      id: id,\n      isBorderless: variant === 'minimal',\n      label: label,\n      size: size,\n      suffix: suffix || !multiple && /*#__PURE__*/_jsx(SelectControlChevronDown, {}),\n      prefix: prefix,\n      labelPosition: labelPosition,\n      __unstableInputWidth: variant === 'minimal' ? 'auto' : undefined,\n      variant: variant,\n      __next40pxDefaultSize: __next40pxDefaultSize,\n      children: /*#__PURE__*/_jsx(Select, {\n        ...restProps,\n        __next40pxDefaultSize: __next40pxDefaultSize,\n        \"aria-describedby\": helpId,\n        className: \"components-select-control__input\",\n        disabled: disabled,\n        id: id,\n        multiple: multiple,\n        onChange: handleOnChange,\n        ref: ref,\n        selectSize: size,\n        value: valueProp,\n        variant: variant,\n        children: children || /*#__PURE__*/_jsx(SelectOptions, {\n          options: options\n        })\n      })\n    })\n  });\n}\n\n/**\n * `SelectControl` allows users to select from a single or multiple option menu.\n * It functions as a wrapper around the browser's native `<select>` element.\n *\n * ```jsx\n * import { SelectControl } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MySelectControl = () => {\n *   const [ size, setSize ] = useState( '50%' );\n *\n *   return (\n *     <SelectControl\n *       __next40pxDefaultSize\n *       label=\"Size\"\n *       value={ size }\n *       options={ [\n *         { label: 'Big', value: '100%' },\n *         { label: 'Medium', value: '50%' },\n *         { label: 'Small', value: '25%' },\n *       ] }\n *       onChange={ setSize }\n *     />\n *   );\n * };\n * ```\n */\nexport const SelectControl = forwardRef(UnforwardedSelectControl);\n\n// @ts-expect-error TS says: \"Property 'displayName' does not exist on type ...\"\nSelectControl.displayName = 'SelectControl';\nexport default SelectControl;"],
  "mappings": "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",
  "names": ["_jsx", "clsx", "BaseControl", "SelectControlChevronDown"]
}
