{
  "version": 3,
  "sources": ["../../src/form-token-field/index.tsx"],
  "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce, useInstanceId, usePrevious } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { isShallowEqual } from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport Token from './token';\nimport TokenInput from './token-input';\nimport { TokensAndInputWrapperFlex } from './styles';\nimport SuggestionsList from './suggestions-list';\nimport { FlexItem } from '../flex';\nimport { StyledHelp, StyledLabel } from '../base-control/styles/base-control-styles';\nimport { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst identity = value => value;\n\n/**\n * A `FormTokenField` is a field similar to the tags and categories fields in the interim editor chrome,\n * or the \"to\" field in Mail on OS X. Tokens can be entered by typing them or selecting them from a list of suggested tokens.\n *\n * Up to one hundred suggestions that match what the user has typed so far will be shown from which the user can pick from (auto-complete).\n * Tokens are separated by the \",\" character. Suggestions can be selected with the up or down arrows and added with the tab or enter key.\n *\n * The `value` property is handled in a manner similar to controlled form components.\n * See [Forms](https://react.dev/reference/react-dom/components#form-components) in the React Documentation for more information.\n */\nexport function FormTokenField(props) {\n  const {\n    autoCapitalize,\n    autoComplete,\n    maxLength,\n    placeholder,\n    label = __('Add item'),\n    className,\n    suggestions = [],\n    maxSuggestions = 100,\n    value = [],\n    displayTransform = identity,\n    saveTransform = token => token.trim(),\n    onChange = () => {},\n    onInputChange = () => {},\n    onFocus = undefined,\n    isBorderless = false,\n    disabled = false,\n    tokenizeOnSpace = false,\n    messages = {\n      added: __('Item added.'),\n      removed: __('Item removed.'),\n      remove: __('Remove item'),\n      __experimentalInvalid: __('Invalid item')\n    },\n    __experimentalRenderItem,\n    __experimentalExpandOnFocus = false,\n    __experimentalValidateInput = () => true,\n    __experimentalShowHowTo = true,\n    __next40pxDefaultSize = false,\n    __experimentalAutoSelectFirstMatch = false,\n    tokenizeOnBlur = false\n  } = useDeprecated36pxDefaultSizeProp(props);\n  maybeWarnDeprecated36pxSize({\n    componentName: 'FormTokenField',\n    size: undefined,\n    __next40pxDefaultSize\n  });\n  const instanceId = useInstanceId(FormTokenField);\n\n  // We reset to these initial values again in the onBlur\n  const [incompleteTokenValue, setIncompleteTokenValue] = useState('');\n  const [inputOffsetFromEnd, setInputOffsetFromEnd] = useState(0);\n  const [isActive, setIsActive] = useState(false);\n  const [isExpanded, setIsExpanded] = useState(false);\n  const [selectedSuggestionIndex, setSelectedSuggestionIndex] = useState(-1);\n  const [selectedSuggestionScroll, setSelectedSuggestionScroll] = useState(false);\n  const prevSuggestions = usePrevious(suggestions);\n  const prevValue = usePrevious(value);\n  const input = useRef(null);\n  const tokensAndInput = useRef(null);\n  const debouncedSpeak = useDebounce(speak, 500);\n  useEffect(() => {\n    // Make sure to focus the input when the isActive state is true.\n    if (isActive && !hasFocus()) {\n      focus();\n    }\n  }, [isActive]);\n  useEffect(() => {\n    const suggestionsDidUpdate = !isShallowEqual(suggestions, prevSuggestions || []);\n    if (suggestionsDidUpdate || value !== prevValue) {\n      updateSuggestions(suggestionsDidUpdate);\n    }\n\n    // TODO: updateSuggestions() should first be refactored so its actual deps are clearer.\n  }, [suggestions, prevSuggestions, value, prevValue]);\n  useEffect(() => {\n    updateSuggestions();\n  }, [incompleteTokenValue]);\n  useEffect(() => {\n    updateSuggestions();\n  }, [__experimentalAutoSelectFirstMatch]);\n  if (disabled && isActive) {\n    setIsActive(false);\n    setIncompleteTokenValue('');\n  }\n  function focus() {\n    input.current?.focus();\n  }\n  function hasFocus() {\n    return input.current === input.current?.ownerDocument.activeElement;\n  }\n  function onFocusHandler(event) {\n    // If focus is on the input or on the container, set the isActive state to true.\n    if (hasFocus() || event.target === tokensAndInput.current) {\n      setIsActive(true);\n      setIsExpanded(__experimentalExpandOnFocus || isExpanded);\n    } else {\n      /*\n       * Otherwise, focus is on one of the token \"remove\" buttons and we\n       * set the isActive state to false to prevent the input to be\n       * re-focused, see componentDidUpdate().\n       */\n      setIsActive(false);\n    }\n    if ('function' === typeof onFocus) {\n      onFocus(event);\n    }\n  }\n  function onBlur(event) {\n    if (inputHasValidValue() && __experimentalValidateInput(incompleteTokenValue)) {\n      setIsActive(false);\n      if (tokenizeOnBlur && inputHasValidValue()) {\n        addNewToken(incompleteTokenValue);\n      }\n    } else {\n      // Reset to initial state\n      setIncompleteTokenValue('');\n      setInputOffsetFromEnd(0);\n      setIsActive(false);\n      if (__experimentalExpandOnFocus) {\n        // If `__experimentalExpandOnFocus` is true, don't close the suggestions list when\n        // the user clicks on it (`tokensAndInput` will be the element that caused the blur).\n        const hasFocusWithin = event.relatedTarget === tokensAndInput.current;\n        setIsExpanded(hasFocusWithin);\n      } else {\n        // Else collapse the suggestion list. This will result in the suggestion list closing\n        // after a suggestion has been submitted since that causes a blur.\n        setIsExpanded(false);\n      }\n      setSelectedSuggestionIndex(-1);\n      setSelectedSuggestionScroll(false);\n    }\n  }\n  function onKeyDown(event) {\n    let preventDefault = false;\n    if (event.defaultPrevented) {\n      return;\n    }\n    switch (event.key) {\n      case 'Backspace':\n        preventDefault = handleDeleteKey(deleteTokenBeforeInput);\n        break;\n      case 'Enter':\n        preventDefault = addCurrentToken();\n        break;\n      case 'ArrowLeft':\n        preventDefault = handleLeftArrowKey();\n        break;\n      case 'ArrowUp':\n        preventDefault = handleUpArrowKey();\n        break;\n      case 'ArrowRight':\n        preventDefault = handleRightArrowKey();\n        break;\n      case 'ArrowDown':\n        preventDefault = handleDownArrowKey();\n        break;\n      case 'Delete':\n        preventDefault = handleDeleteKey(deleteTokenAfterInput);\n        break;\n      case 'Space':\n        if (tokenizeOnSpace) {\n          preventDefault = addCurrentToken();\n        }\n        break;\n      case 'Escape':\n        preventDefault = handleEscapeKey(event);\n        break;\n      case 'Tab':\n        preventDefault = handleTabKey(event);\n        break;\n      default:\n        break;\n    }\n    if (preventDefault) {\n      event.preventDefault();\n    }\n  }\n  function onKeyPress(event) {\n    let preventDefault = false;\n    switch (event.key) {\n      case ',':\n        preventDefault = handleCommaKey();\n        break;\n      default:\n        break;\n    }\n    if (preventDefault) {\n      event.preventDefault();\n    }\n  }\n  function onContainerTouched(event) {\n    // Prevent clicking/touching the tokensAndInput container from blurring\n    // the input and adding the current token.\n    if (event.target === tokensAndInput.current && isActive) {\n      event.preventDefault();\n    }\n  }\n  function onTokenClickRemove(event) {\n    deleteToken(event.value);\n    focus();\n  }\n  function onSuggestionHovered(suggestion) {\n    const index = getMatchingSuggestions().indexOf(suggestion);\n    if (index >= 0) {\n      setSelectedSuggestionIndex(index);\n      setSelectedSuggestionScroll(false);\n    }\n  }\n  function onSuggestionSelected(suggestion) {\n    addNewToken(suggestion);\n  }\n  function onInputChangeHandler(event) {\n    const text = event.value;\n    const separator = tokenizeOnSpace ? /[ ,\\t]+/ : /[,\\t]+/;\n    const items = text.split(separator);\n    const tokenValue = items[items.length - 1] || '';\n    if (items.length > 1) {\n      addNewTokens(items.slice(0, -1));\n    }\n    setIncompleteTokenValue(tokenValue);\n    onInputChange(tokenValue);\n  }\n  function handleDeleteKey(_deleteToken) {\n    let preventDefault = false;\n    if (hasFocus() && isInputEmpty()) {\n      _deleteToken();\n      preventDefault = true;\n    }\n    return preventDefault;\n  }\n  function handleLeftArrowKey() {\n    let preventDefault = false;\n    if (isInputEmpty()) {\n      moveInputBeforePreviousToken();\n      preventDefault = true;\n    }\n    return preventDefault;\n  }\n  function handleRightArrowKey() {\n    let preventDefault = false;\n    if (isInputEmpty()) {\n      moveInputAfterNextToken();\n      preventDefault = true;\n    }\n    return preventDefault;\n  }\n  function handleUpArrowKey() {\n    setSelectedSuggestionIndex(index => {\n      return (index === 0 ? getMatchingSuggestions(incompleteTokenValue, suggestions, value, maxSuggestions, saveTransform).length : index) - 1;\n    });\n    setSelectedSuggestionScroll(true);\n    return true; // PreventDefault.\n  }\n  function handleDownArrowKey() {\n    setSelectedSuggestionIndex(index => {\n      return (index + 1) % getMatchingSuggestions(incompleteTokenValue, suggestions, value, maxSuggestions, saveTransform).length;\n    });\n    setSelectedSuggestionScroll(true);\n    return true; // PreventDefault.\n  }\n  function collapseSuggestionsList(event) {\n    if (event.target instanceof HTMLInputElement) {\n      setIncompleteTokenValue(event.target.value);\n      setIsExpanded(false);\n      setSelectedSuggestionIndex(-1);\n      setSelectedSuggestionScroll(false);\n    }\n  }\n  function handleEscapeKey(event) {\n    collapseSuggestionsList(event);\n    return true; // PreventDefault.\n  }\n  function handleTabKey(event) {\n    collapseSuggestionsList(event);\n    return false; // Do not prevent the default behavior.\n  }\n  function handleCommaKey() {\n    if (inputHasValidValue()) {\n      addNewToken(incompleteTokenValue);\n    }\n    return true; // PreventDefault.\n  }\n  function moveInputToIndex(index) {\n    setInputOffsetFromEnd(value.length - Math.max(index, -1) - 1);\n  }\n  function moveInputBeforePreviousToken() {\n    setInputOffsetFromEnd(prevInputOffsetFromEnd => {\n      return Math.min(prevInputOffsetFromEnd + 1, value.length);\n    });\n  }\n  function moveInputAfterNextToken() {\n    setInputOffsetFromEnd(prevInputOffsetFromEnd => {\n      return Math.max(prevInputOffsetFromEnd - 1, 0);\n    });\n  }\n  function deleteTokenBeforeInput() {\n    const index = getIndexOfInput() - 1;\n    if (index > -1) {\n      deleteToken(value[index]);\n    }\n  }\n  function deleteTokenAfterInput() {\n    const index = getIndexOfInput();\n    if (index < value.length) {\n      deleteToken(value[index]);\n      // Update input offset since it's the offset from the last token.\n      moveInputToIndex(index);\n    }\n  }\n  function addCurrentToken() {\n    let preventDefault = false;\n    const selectedSuggestion = getSelectedSuggestion();\n    if (selectedSuggestion) {\n      addNewToken(selectedSuggestion);\n      preventDefault = true;\n    } else if (inputHasValidValue()) {\n      addNewToken(incompleteTokenValue);\n      preventDefault = true;\n    }\n    return preventDefault;\n  }\n  function addNewTokens(tokens) {\n    const tokensToAdd = [...new Set(tokens.map(saveTransform).filter(Boolean).filter(token => !valueContainsToken(token)))];\n    if (tokensToAdd.length > 0) {\n      const newValue = [...value];\n      newValue.splice(getIndexOfInput(), 0, ...tokensToAdd);\n      onChange(newValue);\n    }\n  }\n  function addNewToken(token) {\n    if (!__experimentalValidateInput(token)) {\n      speak(messages.__experimentalInvalid, 'assertive');\n      return;\n    }\n    addNewTokens([token]);\n    speak(messages.added, 'assertive');\n    setIncompleteTokenValue('');\n    setSelectedSuggestionIndex(-1);\n    setSelectedSuggestionScroll(false);\n    setIsExpanded(!__experimentalExpandOnFocus);\n    if (isActive && !tokenizeOnBlur) {\n      focus();\n    }\n  }\n  function deleteToken(token) {\n    const newTokens = value.filter(item => {\n      return getTokenValue(item) !== getTokenValue(token);\n    });\n    onChange(newTokens);\n    speak(messages.removed, 'assertive');\n  }\n  function getTokenValue(token) {\n    if ('object' === typeof token) {\n      return token.value;\n    }\n    return token;\n  }\n  function getMatchingSuggestions(searchValue = incompleteTokenValue, _suggestions = suggestions, _value = value, _maxSuggestions = maxSuggestions, _saveTransform = saveTransform) {\n    let match = _saveTransform(searchValue);\n    const startsWithMatch = [];\n    const containsMatch = [];\n    const normalizedValue = _value.map(item => {\n      if (typeof item === 'string') {\n        return item;\n      }\n      return item.value;\n    });\n    if (match.length === 0) {\n      _suggestions = _suggestions.filter(suggestion => !normalizedValue.includes(suggestion));\n    } else {\n      match = match.normalize('NFKC').toLocaleLowerCase();\n      _suggestions.forEach(suggestion => {\n        const index = suggestion.normalize('NFKC').toLocaleLowerCase().indexOf(match);\n        if (normalizedValue.indexOf(suggestion) === -1) {\n          if (index === 0) {\n            startsWithMatch.push(suggestion);\n          } else if (index > 0) {\n            containsMatch.push(suggestion);\n          }\n        }\n      });\n      _suggestions = startsWithMatch.concat(containsMatch);\n    }\n    return _suggestions.slice(0, _maxSuggestions);\n  }\n  function getSelectedSuggestion() {\n    if (selectedSuggestionIndex !== -1) {\n      return getMatchingSuggestions()[selectedSuggestionIndex];\n    }\n    return undefined;\n  }\n  function valueContainsToken(token) {\n    return value.some(item => {\n      return getTokenValue(token) === getTokenValue(item);\n    });\n  }\n  function getIndexOfInput() {\n    return value.length - inputOffsetFromEnd;\n  }\n  function isInputEmpty() {\n    return incompleteTokenValue.length === 0;\n  }\n  function inputHasValidValue() {\n    return saveTransform(incompleteTokenValue).length > 0;\n  }\n  function updateSuggestions(resetSelectedSuggestion = true) {\n    const inputHasMinimumChars = incompleteTokenValue.trim().length > 1;\n    const matchingSuggestions = getMatchingSuggestions(incompleteTokenValue);\n    const hasMatchingSuggestions = matchingSuggestions.length > 0;\n    const shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;\n    setIsExpanded(shouldExpandIfFocuses || inputHasMinimumChars && hasMatchingSuggestions);\n    if (resetSelectedSuggestion) {\n      if (__experimentalAutoSelectFirstMatch && inputHasMinimumChars && hasMatchingSuggestions) {\n        setSelectedSuggestionIndex(0);\n        setSelectedSuggestionScroll(true);\n      } else {\n        setSelectedSuggestionIndex(-1);\n        setSelectedSuggestionScroll(false);\n      }\n    }\n    if (inputHasMinimumChars) {\n      const message = hasMatchingSuggestions ? sprintf(/* translators: %d: number of results. */\n      _n('%d result found, use up and down arrow keys to navigate.', '%d results found, use up and down arrow keys to navigate.', matchingSuggestions.length), matchingSuggestions.length) : __('No results.');\n      debouncedSpeak(message, 'assertive');\n    }\n  }\n  function renderTokensAndInput() {\n    const components = value.map(renderToken);\n    components.splice(getIndexOfInput(), 0, renderInput());\n    return components;\n  }\n  function renderToken(token, index, tokens) {\n    const _value = getTokenValue(token);\n    const status = typeof token !== 'string' ? token.status : undefined;\n    const termPosition = index + 1;\n    const termsCount = tokens.length;\n    return /*#__PURE__*/_jsx(FlexItem, {\n      children: /*#__PURE__*/_jsx(Token, {\n        value: _value,\n        status: status,\n        title: typeof token !== 'string' ? token.title : undefined,\n        displayTransform: displayTransform,\n        onClickRemove: onTokenClickRemove,\n        isBorderless: typeof token !== 'string' && token.isBorderless || isBorderless,\n        onMouseEnter: typeof token !== 'string' ? token.onMouseEnter : undefined,\n        onMouseLeave: typeof token !== 'string' ? token.onMouseLeave : undefined,\n        disabled: 'error' !== status && disabled,\n        messages: messages,\n        termsCount: termsCount,\n        termPosition: termPosition\n      })\n    }, 'token-' + _value);\n  }\n  function renderInput() {\n    const inputProps = {\n      instanceId,\n      autoCapitalize,\n      autoComplete,\n      placeholder: value.length === 0 ? placeholder : '',\n      disabled,\n      value: incompleteTokenValue,\n      onBlur,\n      isExpanded,\n      selectedSuggestionIndex\n    };\n    return /*#__PURE__*/_jsx(TokenInput, {\n      ...inputProps,\n      onChange: !(maxLength && value.length >= maxLength) ? onInputChangeHandler : undefined,\n      ref: input\n    }, \"input\");\n  }\n  const classes = clsx(className, 'components-form-token-field__input-container', {\n    'is-active': isActive,\n    'is-disabled': disabled\n  });\n  let tokenFieldProps = {\n    className: 'components-form-token-field',\n    tabIndex: -1\n  };\n  const matchingSuggestions = getMatchingSuggestions();\n  if (!disabled) {\n    tokenFieldProps = Object.assign({}, tokenFieldProps, {\n      onKeyDown: withIgnoreIMEEvents(onKeyDown),\n      onKeyPress,\n      onFocus: onFocusHandler\n    });\n  }\n\n  // Disable reason: There is no appropriate role which describes the\n  // input container intended accessible usability.\n  // TODO: Refactor click detection to use blur to stop propagation.\n  /* eslint-disable jsx-a11y/no-static-element-interactions */\n  return /*#__PURE__*/_jsxs(\"div\", {\n    ...tokenFieldProps,\n    children: [label && /*#__PURE__*/_jsx(StyledLabel, {\n      htmlFor: `components-form-token-input-${instanceId}`,\n      className: \"components-form-token-field__label\",\n      children: label\n    }), /*#__PURE__*/_jsxs(\"div\", {\n      ref: tokensAndInput,\n      className: classes,\n      tabIndex: -1,\n      onMouseDown: onContainerTouched,\n      onTouchStart: onContainerTouched,\n      children: [/*#__PURE__*/_jsx(TokensAndInputWrapperFlex, {\n        justify: \"flex-start\",\n        align: \"center\",\n        gap: 1,\n        wrap: true,\n        __next40pxDefaultSize: __next40pxDefaultSize,\n        hasTokens: !!value.length,\n        children: renderTokensAndInput()\n      }), isExpanded && /*#__PURE__*/_jsx(SuggestionsList, {\n        instanceId: instanceId,\n        match: saveTransform(incompleteTokenValue),\n        displayTransform: displayTransform,\n        suggestions: matchingSuggestions,\n        selectedIndex: selectedSuggestionIndex,\n        scrollIntoView: selectedSuggestionScroll,\n        onHover: onSuggestionHovered,\n        onSelect: onSuggestionSelected,\n        __experimentalRenderItem: __experimentalRenderItem\n      })]\n    }), __experimentalShowHowTo && /*#__PURE__*/_jsx(StyledHelp, {\n      id: `components-form-token-suggestions-howto-${instanceId}`,\n      className: \"components-form-token-field__help\",\n      children: tokenizeOnSpace ? __('Separate with commas, spaces, or the Enter key.') : __('Separate with commas or the Enter key.')\n    })]\n  });\n  /* eslint-enable jsx-a11y/no-static-element-interactions */\n}\nexport default FormTokenField;"],
  "mappings": "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",
  "names": ["matchingSuggestions", "_jsx", "Token", "TokenInput", "clsx", "_jsxs", "SuggestionsList"]
}
