{
  "version": 3,
  "sources": ["../../src/autocomplete/index.tsx"],
  "sourcesContent": ["/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\n\n/**\n * WordPress dependencies\n */\nimport { renderToString, useEffect, useState, useRef, useMemo } from '@wordpress/element';\nimport { useInstanceId, useMergeRefs, useRefEffect } from '@wordpress/compose';\nimport { create, slice, insert, isCollapsed, getTextContent } from '@wordpress/rich-text';\nimport { speak } from '@wordpress/a11y';\nimport { isAppleOS } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { getAutoCompleterUI } from './autocompleter-ui';\nimport { escapeRegExp } from '../utils/strings';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\nimport getNodeText from '../utils/get-node-text';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst EMPTY_FILTERED_OPTIONS = [];\n\n// Used for generating the instance ID\nconst AUTOCOMPLETE_HOOK_REFERENCE = {};\nexport function useAutocomplete({\n  record,\n  onChange,\n  onReplace,\n  completers,\n  contentRef\n}) {\n  const instanceId = useInstanceId(AUTOCOMPLETE_HOOK_REFERENCE);\n  const [selectedIndex, setSelectedIndex] = useState(0);\n  const [filteredOptions, setFilteredOptions] = useState(EMPTY_FILTERED_OPTIONS);\n  const [filterValue, setFilterValue] = useState('');\n  const [autocompleter, setAutocompleter] = useState(null);\n  const [AutocompleterUI, setAutocompleterUI] = useState(null);\n  const backspacingRef = useRef(false);\n  function insertCompletion(replacement) {\n    if (autocompleter === null) {\n      return;\n    }\n    const end = record.start;\n    const start = end - autocompleter.triggerPrefix.length - filterValue.length;\n    const toInsert = create({\n      html: renderToString(replacement)\n    });\n    onChange(insert(record, toInsert, start, end));\n  }\n  function select(option) {\n    const {\n      getOptionCompletion\n    } = autocompleter || {};\n    if (option.isDisabled) {\n      return;\n    }\n    if (getOptionCompletion) {\n      const completion = getOptionCompletion(option.value, filterValue);\n      const isCompletionObject = obj => {\n        return obj !== null && typeof obj === 'object' && 'action' in obj && obj.action !== undefined && 'value' in obj && obj.value !== undefined;\n      };\n      const completionObject = isCompletionObject(completion) ? completion : {\n        action: 'insert-at-caret',\n        value: completion\n      };\n      if ('replace' === completionObject.action) {\n        onReplace([completionObject.value]);\n        // When replacing, the component will unmount, so don't reset\n        // state (below) on an unmounted component.\n        return;\n      } else if ('insert-at-caret' === completionObject.action) {\n        insertCompletion(completionObject.value);\n      }\n    }\n\n    // Reset autocomplete state after insertion rather than before\n    // so insertion events don't cause the completion menu to redisplay.\n    reset();\n\n    // Make sure that the content remains focused after making a selection\n    // and that the text cursor position is not lost.\n    contentRef.current?.focus();\n  }\n  function reset() {\n    setSelectedIndex(0);\n    setFilteredOptions(EMPTY_FILTERED_OPTIONS);\n    setFilterValue('');\n    setAutocompleter(null);\n    setAutocompleterUI(null);\n  }\n\n  /**\n   * Load options for an autocompleter.\n   *\n   * @param {Array} options\n   */\n  function onChangeOptions(options) {\n    setSelectedIndex(options.length === filteredOptions.length ? selectedIndex : 0);\n    setFilteredOptions(options);\n  }\n  function handleKeyDown(event) {\n    backspacingRef.current = event.key === 'Backspace';\n    if (!autocompleter) {\n      return;\n    }\n    if (filteredOptions.length === 0) {\n      return;\n    }\n    if (event.defaultPrevented) {\n      return;\n    }\n    switch (event.key) {\n      case 'ArrowUp':\n        {\n          const newIndex = (selectedIndex === 0 ? filteredOptions.length : selectedIndex) - 1;\n          setSelectedIndex(newIndex);\n          // See the related PR as to why this is necessary: https://github.com/WordPress/gutenberg/pull/54902.\n          if (isAppleOS()) {\n            speak(getNodeText(filteredOptions[newIndex].label), 'assertive');\n          }\n          break;\n        }\n      case 'ArrowDown':\n        {\n          const newIndex = (selectedIndex + 1) % filteredOptions.length;\n          setSelectedIndex(newIndex);\n          if (isAppleOS()) {\n            speak(getNodeText(filteredOptions[newIndex].label), 'assertive');\n          }\n          break;\n        }\n      case 'Escape':\n        setAutocompleter(null);\n        setAutocompleterUI(null);\n        event.preventDefault();\n        break;\n      case 'Enter':\n        select(filteredOptions[selectedIndex]);\n        break;\n      case 'ArrowLeft':\n      case 'ArrowRight':\n        reset();\n        return;\n      default:\n        return;\n    }\n\n    // Any handled key should prevent original behavior. This relies on\n    // the early return in the default case.\n    event.preventDefault();\n  }\n\n  // textContent is a primitive (string), memoizing is not strictly necessary\n  // but this is a preemptive performance improvement, since the autocompleter\n  // is a potential bottleneck for the editor type metric.\n  const textContent = useMemo(() => {\n    if (isCollapsed(record)) {\n      return getTextContent(slice(record, 0));\n    }\n    return '';\n  }, [record]);\n  useEffect(() => {\n    if (!textContent) {\n      if (autocompleter) {\n        reset();\n      }\n      return;\n    }\n\n    // Find the completer with the highest triggerPrefix index in the\n    // textContent.\n    const completer = completers.reduce((lastTrigger, currentCompleter) => {\n      const triggerIndex = textContent.lastIndexOf(currentCompleter.triggerPrefix);\n      const lastTriggerIndex = lastTrigger !== null ? textContent.lastIndexOf(lastTrigger.triggerPrefix) : -1;\n      return triggerIndex > lastTriggerIndex ? currentCompleter : lastTrigger;\n    }, null);\n    if (!completer) {\n      if (autocompleter) {\n        reset();\n      }\n      return;\n    }\n    const {\n      allowContext,\n      triggerPrefix\n    } = completer;\n    const triggerIndex = textContent.lastIndexOf(triggerPrefix);\n    const textWithoutTrigger = textContent.slice(triggerIndex + triggerPrefix.length);\n    const tooDistantFromTrigger = textWithoutTrigger.length > 50; // 50 chars seems to be a good limit.\n    // This is a final barrier to prevent the effect from completing with\n    // an extremely long string, which causes the editor to slow-down\n    // significantly. This could happen, for example, if `matchingWhileBackspacing`\n    // is true and one of the \"words\" end up being too long. If that's the case,\n    // it will be caught by this guard.\n    if (tooDistantFromTrigger) {\n      return;\n    }\n    const mismatch = filteredOptions.length === 0;\n    const wordsFromTrigger = textWithoutTrigger.split(/\\s/);\n    // We need to allow the effect to run when not backspacing and if there\n    // was a mismatch. i.e when typing a trigger + the match string or when\n    // clicking in an existing trigger word on the page. We do that if we\n    // detect that we have one word from trigger in the current textual context.\n    //\n    // Ex.: \"Some text @a\" <-- \"@a\" will be detected as the trigger word and\n    // allow the effect to run. It will run until there's a mismatch.\n    const hasOneTriggerWord = wordsFromTrigger.length === 1;\n    // This is used to allow the effect to run when backspacing and if\n    // \"touching\" a word that \"belongs\" to a trigger. We consider a \"trigger\n    // word\" any word up to the limit of 3 from the trigger character.\n    // Anything beyond that is ignored if there's a mismatch. This allows\n    // us to \"escape\" a mismatch when backspacing, but still imposing some\n    // sane limits.\n    //\n    // Ex: \"Some text @marcelo sekkkk\" <--- \"kkkk\" caused a mismatch, but\n    // if the user presses backspace here, it will show the completion popup again.\n    const matchingWhileBackspacing = backspacingRef.current && wordsFromTrigger.length <= 3;\n    if (mismatch && !(matchingWhileBackspacing || hasOneTriggerWord)) {\n      if (autocompleter) {\n        reset();\n      }\n      return;\n    }\n    const textAfterSelection = getTextContent(slice(record, undefined, getTextContent(record).length));\n    if (allowContext && !allowContext(textContent.slice(0, triggerIndex), textAfterSelection)) {\n      if (autocompleter) {\n        reset();\n      }\n      return;\n    }\n    if (/^\\s/.test(textWithoutTrigger) || /\\s\\s+$/.test(textWithoutTrigger)) {\n      if (autocompleter) {\n        reset();\n      }\n      return;\n    }\n    if (!/[\\u0000-\\uFFFF]*$/.test(textWithoutTrigger)) {\n      if (autocompleter) {\n        reset();\n      }\n      return;\n    }\n    const safeTrigger = escapeRegExp(completer.triggerPrefix);\n    const text = removeAccents(textContent);\n    const match = text.slice(text.lastIndexOf(completer.triggerPrefix)).match(new RegExp(`${safeTrigger}([\\u0000-\\uFFFF]*)$`));\n    const query = match && match[1];\n    setAutocompleter(completer);\n    setAutocompleterUI(() => completer !== autocompleter ? getAutoCompleterUI(completer) : AutocompleterUI);\n    setFilterValue(query === null ? '' : query);\n    // We want to avoid introducing unexpected side effects.\n    // See https://github.com/WordPress/gutenberg/pull/41820\n  }, [textContent]);\n  const {\n    key: selectedKey = ''\n  } = filteredOptions[selectedIndex] || {};\n  const {\n    className\n  } = autocompleter || {};\n  const isExpanded = !!autocompleter && filteredOptions.length > 0;\n  const listBoxId = isExpanded ? `components-autocomplete-listbox-${instanceId}` : undefined;\n  const activeId = isExpanded ? `components-autocomplete-item-${instanceId}-${selectedKey}` : null;\n  const hasSelection = record.start !== undefined;\n  const showPopover = !!textContent && hasSelection && !!AutocompleterUI;\n  return {\n    listBoxId,\n    activeId,\n    onKeyDown: withIgnoreIMEEvents(handleKeyDown),\n    popover: showPopover && /*#__PURE__*/_jsx(AutocompleterUI, {\n      className: className,\n      filterValue: filterValue,\n      instanceId: instanceId,\n      listBoxId: listBoxId,\n      selectedIndex: selectedIndex,\n      onChangeOptions: onChangeOptions,\n      onSelect: select,\n      value: record,\n      contentRef: contentRef,\n      reset: reset\n    })\n  };\n}\nfunction useLastDifferentValue(value) {\n  const history = useRef(new Set());\n  history.current.add(value);\n\n  // Keep the history size to 2.\n  if (history.current.size > 2) {\n    history.current.delete(Array.from(history.current)[0]);\n  }\n  return Array.from(history.current)[0];\n}\nexport function useAutocompleteProps(options) {\n  const ref = useRef(null);\n  const onKeyDownRef = useRef(undefined);\n  const {\n    record\n  } = options;\n  const previousRecord = useLastDifferentValue(record);\n  const {\n    popover,\n    listBoxId,\n    activeId,\n    onKeyDown\n  } = useAutocomplete({\n    ...options,\n    contentRef: ref\n  });\n  onKeyDownRef.current = onKeyDown;\n  const mergedRefs = useMergeRefs([ref, useRefEffect(element => {\n    function _onKeyDown(event) {\n      onKeyDownRef.current?.(event);\n    }\n    element.addEventListener('keydown', _onKeyDown);\n    return () => {\n      element.removeEventListener('keydown', _onKeyDown);\n    };\n  }, [])]);\n\n  // We only want to show the popover if the user has typed something.\n  const didUserInput = record.text !== previousRecord?.text;\n  if (!didUserInput) {\n    return {\n      ref: mergedRefs\n    };\n  }\n  return {\n    ref: mergedRefs,\n    children: popover,\n    'aria-autocomplete': listBoxId ? 'list' : undefined,\n    'aria-owns': listBoxId,\n    'aria-activedescendant': activeId\n  };\n}\nexport default function Autocomplete({\n  children,\n  isSelected,\n  ...options\n}) {\n  const {\n    popover,\n    ...props\n  } = useAutocomplete(options);\n  return /*#__PURE__*/_jsxs(_Fragment, {\n    children: [children(props), isSelected && popover]\n  });\n}"],
  "mappings": "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",
  "names": ["getNodeText", "triggerIndex", "removeAccents", "_jsx", "_jsxs", "_Fragment"]
}
