c80a2f09104180a020af328fd1463904.json 40.4 KB
{"ast":null,"code":"import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport TextArea from 'rc-textarea';\nimport KeywordTrigger from './KeywordTrigger';\nimport { MentionsContextProvider } from './MentionsContext';\nimport Option from './Option';\nimport { filterOption as defaultFilterOption, getBeforeSelectionText, getLastMeasureIndex, omit, replaceWithMeasure, setInputSelection, validateSearch as defaultValidateSearch } from './util';\n\nvar Mentions = /*#__PURE__*/function (_React$Component) {\n  _inherits(Mentions, _React$Component);\n\n  var _super = _createSuper(Mentions);\n\n  function Mentions(props) {\n    var _this;\n\n    _classCallCheck(this, Mentions);\n\n    _this = _super.call(this, props);\n    _this.focusId = undefined;\n\n    _this.triggerChange = function (value) {\n      var onChange = _this.props.onChange;\n\n      if (!('value' in _this.props)) {\n        _this.setState({\n          value: value\n        });\n      }\n\n      if (onChange) {\n        onChange(value);\n      }\n    };\n\n    _this.onChange = function (_ref) {\n      var value = _ref.target.value;\n\n      _this.triggerChange(value);\n    }; // Check if hit the measure keyword\n\n\n    _this.onKeyDown = function (event) {\n      var which = event.which;\n      var _this$state = _this.state,\n          activeIndex = _this$state.activeIndex,\n          measuring = _this$state.measuring; // Skip if not measuring\n\n      if (!measuring) {\n        return;\n      }\n\n      if (which === KeyCode.UP || which === KeyCode.DOWN) {\n        // Control arrow function\n        var optionLen = _this.getOptions().length;\n\n        var offset = which === KeyCode.UP ? -1 : 1;\n        var newActiveIndex = (activeIndex + offset + optionLen) % optionLen;\n\n        _this.setState({\n          activeIndex: newActiveIndex\n        });\n\n        event.preventDefault();\n      } else if (which === KeyCode.ESC) {\n        _this.stopMeasure();\n      } else if (which === KeyCode.ENTER) {\n        // Measure hit\n        event.preventDefault();\n\n        var options = _this.getOptions();\n\n        if (!options.length) {\n          _this.stopMeasure();\n\n          return;\n        }\n\n        var option = options[activeIndex];\n\n        _this.selectOption(option);\n      }\n    };\n    /**\n     * When to start measure:\n     * 1. When user press `prefix`\n     * 2. When measureText !== prevMeasureText\n     *  - If measure hit\n     *  - If measuring\n     *\n     * When to stop measure:\n     * 1. Selection is out of range\n     * 2. Contains `space`\n     * 3. ESC or select one\n     */\n\n\n    _this.onKeyUp = function (event) {\n      var key = event.key,\n          which = event.which;\n      var _this$state2 = _this.state,\n          prevMeasureText = _this$state2.measureText,\n          measuring = _this$state2.measuring;\n      var _this$props = _this.props,\n          _this$props$prefix = _this$props.prefix,\n          prefix = _this$props$prefix === void 0 ? '' : _this$props$prefix,\n          onSearch = _this$props.onSearch,\n          validateSearch = _this$props.validateSearch;\n      var target = event.target;\n      var selectionStartText = getBeforeSelectionText(target);\n\n      var _getLastMeasureIndex = getLastMeasureIndex(selectionStartText, prefix),\n          measureIndex = _getLastMeasureIndex.location,\n          measurePrefix = _getLastMeasureIndex.prefix; // Skip if match the white key list\n\n\n      if ([KeyCode.ESC, KeyCode.UP, KeyCode.DOWN, KeyCode.ENTER].indexOf(which) !== -1) {\n        return;\n      }\n\n      if (measureIndex !== -1) {\n        var measureText = selectionStartText.slice(measureIndex + measurePrefix.length);\n        var validateMeasure = validateSearch(measureText, _this.props);\n        var matchOption = !!_this.getOptions(measureText).length;\n\n        if (validateMeasure) {\n          if (key === measurePrefix || key === 'Shift' || measuring || measureText !== prevMeasureText && matchOption) {\n            _this.startMeasure(measureText, measurePrefix, measureIndex);\n          }\n        } else if (measuring) {\n          // Stop if measureText is invalidate\n          _this.stopMeasure();\n        }\n        /**\n         * We will trigger `onSearch` to developer since they may use for async update.\n         * If met `space` means user finished searching.\n         */\n\n\n        if (onSearch && validateMeasure) {\n          onSearch(measureText, measurePrefix);\n        }\n      } else if (measuring) {\n        _this.stopMeasure();\n      }\n    };\n\n    _this.onPressEnter = function (event) {\n      var measuring = _this.state.measuring;\n      var onPressEnter = _this.props.onPressEnter;\n\n      if (!measuring && onPressEnter) {\n        onPressEnter(event);\n      }\n    };\n\n    _this.onInputFocus = function (event) {\n      _this.onFocus(event);\n    };\n\n    _this.onInputBlur = function (event) {\n      _this.onBlur(event);\n    };\n\n    _this.onDropdownFocus = function () {\n      _this.onFocus();\n    };\n\n    _this.onDropdownBlur = function () {\n      _this.onBlur();\n    };\n\n    _this.onFocus = function (event) {\n      window.clearTimeout(_this.focusId);\n      var isFocus = _this.state.isFocus;\n      var onFocus = _this.props.onFocus;\n\n      if (!isFocus && event && onFocus) {\n        onFocus(event);\n      }\n\n      _this.setState({\n        isFocus: true\n      });\n    };\n\n    _this.onBlur = function (event) {\n      _this.focusId = window.setTimeout(function () {\n        var onBlur = _this.props.onBlur;\n\n        _this.setState({\n          isFocus: false\n        });\n\n        _this.stopMeasure();\n\n        if (onBlur) {\n          onBlur(event);\n        }\n      }, 0);\n    };\n\n    _this.selectOption = function (option) {\n      var _this$state3 = _this.state,\n          value = _this$state3.value,\n          measureLocation = _this$state3.measureLocation,\n          measurePrefix = _this$state3.measurePrefix;\n      var _this$props2 = _this.props,\n          split = _this$props2.split,\n          onSelect = _this$props2.onSelect;\n      var _option$value = option.value,\n          mentionValue = _option$value === void 0 ? '' : _option$value;\n\n      var _replaceWithMeasure = replaceWithMeasure(value, {\n        measureLocation: measureLocation,\n        targetText: mentionValue,\n        prefix: measurePrefix,\n        selectionStart: _this.textarea.selectionStart,\n        split: split\n      }),\n          text = _replaceWithMeasure.text,\n          selectionLocation = _replaceWithMeasure.selectionLocation;\n\n      _this.triggerChange(text);\n\n      _this.stopMeasure(function () {\n        // We need restore the selection position\n        setInputSelection(_this.textarea, selectionLocation);\n      });\n\n      if (onSelect) {\n        onSelect(option, measurePrefix);\n      }\n    };\n\n    _this.setActiveIndex = function (activeIndex) {\n      _this.setState({\n        activeIndex: activeIndex\n      });\n    };\n\n    _this.setTextAreaRef = function (element) {\n      var _element$resizableTex;\n\n      _this.textarea = element === null || element === void 0 ? void 0 : (_element$resizableTex = element.resizableTextArea) === null || _element$resizableTex === void 0 ? void 0 : _element$resizableTex.textArea;\n    };\n\n    _this.setMeasureRef = function (element) {\n      _this.measure = element;\n    };\n\n    _this.getOptions = function (measureText) {\n      var targetMeasureText = measureText || _this.state.measureText || '';\n      var _this$props3 = _this.props,\n          children = _this$props3.children,\n          filterOption = _this$props3.filterOption;\n      var list = toArray(children).map(function (_ref2) {\n        var props = _ref2.props,\n            key = _ref2.key;\n        return _objectSpread(_objectSpread({}, props), {}, {\n          key: key || props.value\n        });\n      }).filter(function (option) {\n        /** Return all result if `filterOption` is false. */\n        if (filterOption === false) {\n          return true;\n        }\n\n        return filterOption(targetMeasureText, option);\n      });\n      return list;\n    };\n\n    _this.state = {\n      value: props.defaultValue || props.value || '',\n      measuring: false,\n      measureLocation: 0,\n      measureText: null,\n      measurePrefix: '',\n      activeIndex: 0,\n      isFocus: false\n    };\n    return _this;\n  }\n\n  _createClass(Mentions, [{\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      var measuring = this.state.measuring; // Sync measure div top with textarea for rc-trigger usage\n\n      if (measuring) {\n        this.measure.scrollTop = this.textarea.scrollTop;\n      }\n    }\n  }, {\n    key: \"startMeasure\",\n    value: function startMeasure(measureText, measurePrefix, measureLocation) {\n      this.setState({\n        measuring: true,\n        measureText: measureText,\n        measurePrefix: measurePrefix,\n        measureLocation: measureLocation,\n        activeIndex: 0\n      });\n    }\n  }, {\n    key: \"stopMeasure\",\n    value: function stopMeasure(callback) {\n      this.setState({\n        measuring: false,\n        measureLocation: 0,\n        measureText: null\n      }, callback);\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      this.textarea.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.textarea.blur();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$state4 = this.state,\n          value = _this$state4.value,\n          measureLocation = _this$state4.measureLocation,\n          measurePrefix = _this$state4.measurePrefix,\n          measuring = _this$state4.measuring,\n          activeIndex = _this$state4.activeIndex;\n\n      var _this$props4 = this.props,\n          prefixCls = _this$props4.prefixCls,\n          placement = _this$props4.placement,\n          direction = _this$props4.direction,\n          transitionName = _this$props4.transitionName,\n          className = _this$props4.className,\n          style = _this$props4.style,\n          autoFocus = _this$props4.autoFocus,\n          notFoundContent = _this$props4.notFoundContent,\n          getPopupContainer = _this$props4.getPopupContainer,\n          restProps = _objectWithoutProperties(_this$props4, [\"prefixCls\", \"placement\", \"direction\", \"transitionName\", \"className\", \"style\", \"autoFocus\", \"notFoundContent\", \"getPopupContainer\"]);\n\n      var inputProps = omit(restProps, 'value', 'defaultValue', 'prefix', 'split', 'children', 'validateSearch', 'filterOption', 'onSelect', 'onSearch');\n      var options = measuring ? this.getOptions() : [];\n      return React.createElement(\"div\", {\n        className: classNames(prefixCls, className),\n        style: style\n      }, React.createElement(TextArea, Object.assign({\n        autoFocus: autoFocus,\n        ref: this.setTextAreaRef,\n        value: value\n      }, inputProps, {\n        onChange: this.onChange,\n        onKeyDown: this.onKeyDown,\n        onKeyUp: this.onKeyUp,\n        onPressEnter: this.onPressEnter,\n        onFocus: this.onInputFocus,\n        onBlur: this.onInputBlur\n      })), measuring && React.createElement(\"div\", {\n        ref: this.setMeasureRef,\n        className: \"\".concat(prefixCls, \"-measure\")\n      }, value.slice(0, measureLocation), React.createElement(MentionsContextProvider, {\n        value: {\n          notFoundContent: notFoundContent,\n          activeIndex: activeIndex,\n          setActiveIndex: this.setActiveIndex,\n          selectOption: this.selectOption,\n          onFocus: this.onDropdownFocus,\n          onBlur: this.onDropdownBlur\n        }\n      }, React.createElement(KeywordTrigger, {\n        prefixCls: prefixCls,\n        transitionName: transitionName,\n        placement: placement,\n        direction: direction,\n        options: options,\n        visible: true,\n        getPopupContainer: getPopupContainer\n      }, React.createElement(\"span\", null, measurePrefix))), value.slice(measureLocation + measurePrefix.length)));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(props, prevState) {\n      var newState = {};\n\n      if ('value' in props && props.value !== prevState.value) {\n        newState.value = props.value || '';\n      }\n\n      return newState;\n    }\n  }]);\n\n  return Mentions;\n}(React.Component);\n\nMentions.Option = Option;\nMentions.defaultProps = {\n  prefixCls: 'rc-mentions',\n  prefix: '@',\n  split: ' ',\n  validateSearch: defaultValidateSearch,\n  filterOption: defaultFilterOption,\n  notFoundContent: 'Not Found',\n  rows: 1\n};\nexport default Mentions;","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/node_modules/rc-mentions/es/Mentions.js"],"names":["_objectWithoutProperties","_objectSpread","_classCallCheck","_createClass","_inherits","_createSuper","classNames","toArray","KeyCode","React","TextArea","KeywordTrigger","MentionsContextProvider","Option","filterOption","defaultFilterOption","getBeforeSelectionText","getLastMeasureIndex","omit","replaceWithMeasure","setInputSelection","validateSearch","defaultValidateSearch","Mentions","_React$Component","_super","props","_this","call","focusId","undefined","triggerChange","value","onChange","setState","_ref","target","onKeyDown","event","which","_this$state","state","activeIndex","measuring","UP","DOWN","optionLen","getOptions","length","offset","newActiveIndex","preventDefault","ESC","stopMeasure","ENTER","options","option","selectOption","onKeyUp","key","_this$state2","prevMeasureText","measureText","_this$props","_this$props$prefix","prefix","onSearch","selectionStartText","_getLastMeasureIndex","measureIndex","location","measurePrefix","indexOf","slice","validateMeasure","matchOption","startMeasure","onPressEnter","onInputFocus","onFocus","onInputBlur","onBlur","onDropdownFocus","onDropdownBlur","window","clearTimeout","isFocus","setTimeout","_this$state3","measureLocation","_this$props2","split","onSelect","_option$value","mentionValue","_replaceWithMeasure","targetText","selectionStart","textarea","text","selectionLocation","setActiveIndex","setTextAreaRef","element","_element$resizableTex","resizableTextArea","textArea","setMeasureRef","measure","targetMeasureText","_this$props3","children","list","map","_ref2","filter","defaultValue","componentDidUpdate","scrollTop","callback","focus","blur","render","_this$state4","_this$props4","prefixCls","placement","direction","transitionName","className","style","autoFocus","notFoundContent","getPopupContainer","restProps","inputProps","createElement","Object","assign","ref","concat","visible","getDerivedStateFromProps","prevState","newState","Component","defaultProps","rows"],"mappings":"AAAA,OAAOA,wBAAP,MAAqC,oDAArC;AACA,OAAOC,aAAP,MAA0B,0CAA1B;AACA,OAAOC,eAAP,MAA4B,2CAA5B;AACA,OAAOC,YAAP,MAAyB,wCAAzB;AACA,OAAOC,SAAP,MAAsB,qCAAtB;AACA,OAAOC,YAAP,MAAyB,wCAAzB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,OAAP,MAAoB,6BAApB;AACA,OAAOC,OAAP,MAAoB,oBAApB;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,OAAOC,QAAP,MAAqB,aAArB;AACA,OAAOC,cAAP,MAA2B,kBAA3B;AACA,SAASC,uBAAT,QAAwC,mBAAxC;AACA,OAAOC,MAAP,MAAmB,UAAnB;AACA,SAASC,YAAY,IAAIC,mBAAzB,EAA8CC,sBAA9C,EAAsEC,mBAAtE,EAA2FC,IAA3F,EAAiGC,kBAAjG,EAAqHC,iBAArH,EAAwIC,cAAc,IAAIC,qBAA1J,QAAuL,QAAvL;;AAEA,IAAIC,QAAQ,GAAG,aAAa,UAAUC,gBAAV,EAA4B;AACtDpB,EAAAA,SAAS,CAACmB,QAAD,EAAWC,gBAAX,CAAT;;AAEA,MAAIC,MAAM,GAAGpB,YAAY,CAACkB,QAAD,CAAzB;;AAEA,WAASA,QAAT,CAAkBG,KAAlB,EAAyB;AACvB,QAAIC,KAAJ;;AAEAzB,IAAAA,eAAe,CAAC,IAAD,EAAOqB,QAAP,CAAf;;AAEAI,IAAAA,KAAK,GAAGF,MAAM,CAACG,IAAP,CAAY,IAAZ,EAAkBF,KAAlB,CAAR;AACAC,IAAAA,KAAK,CAACE,OAAN,GAAgBC,SAAhB;;AAEAH,IAAAA,KAAK,CAACI,aAAN,GAAsB,UAAUC,KAAV,EAAiB;AACrC,UAAIC,QAAQ,GAAGN,KAAK,CAACD,KAAN,CAAYO,QAA3B;;AAEA,UAAI,EAAE,WAAWN,KAAK,CAACD,KAAnB,CAAJ,EAA+B;AAC7BC,QAAAA,KAAK,CAACO,QAAN,CAAe;AACbF,UAAAA,KAAK,EAAEA;AADM,SAAf;AAGD;;AAED,UAAIC,QAAJ,EAAc;AACZA,QAAAA,QAAQ,CAACD,KAAD,CAAR;AACD;AACF,KAZD;;AAcAL,IAAAA,KAAK,CAACM,QAAN,GAAiB,UAAUE,IAAV,EAAgB;AAC/B,UAAIH,KAAK,GAAGG,IAAI,CAACC,MAAL,CAAYJ,KAAxB;;AAEAL,MAAAA,KAAK,CAACI,aAAN,CAAoBC,KAApB;AACD,KAJD,CAtBuB,CA0BpB;;;AAGHL,IAAAA,KAAK,CAACU,SAAN,GAAkB,UAAUC,KAAV,EAAiB;AACjC,UAAIC,KAAK,GAAGD,KAAK,CAACC,KAAlB;AACA,UAAIC,WAAW,GAAGb,KAAK,CAACc,KAAxB;AAAA,UACIC,WAAW,GAAGF,WAAW,CAACE,WAD9B;AAAA,UAEIC,SAAS,GAAGH,WAAW,CAACG,SAF5B,CAFiC,CAIM;;AAEvC,UAAI,CAACA,SAAL,EAAgB;AACd;AACD;;AAED,UAAIJ,KAAK,KAAK/B,OAAO,CAACoC,EAAlB,IAAwBL,KAAK,KAAK/B,OAAO,CAACqC,IAA9C,EAAoD;AAClD;AACA,YAAIC,SAAS,GAAGnB,KAAK,CAACoB,UAAN,GAAmBC,MAAnC;;AAEA,YAAIC,MAAM,GAAGV,KAAK,KAAK/B,OAAO,CAACoC,EAAlB,GAAuB,CAAC,CAAxB,GAA4B,CAAzC;AACA,YAAIM,cAAc,GAAG,CAACR,WAAW,GAAGO,MAAd,GAAuBH,SAAxB,IAAqCA,SAA1D;;AAEAnB,QAAAA,KAAK,CAACO,QAAN,CAAe;AACbQ,UAAAA,WAAW,EAAEQ;AADA,SAAf;;AAIAZ,QAAAA,KAAK,CAACa,cAAN;AACD,OAZD,MAYO,IAAIZ,KAAK,KAAK/B,OAAO,CAAC4C,GAAtB,EAA2B;AAChCzB,QAAAA,KAAK,CAAC0B,WAAN;AACD,OAFM,MAEA,IAAId,KAAK,KAAK/B,OAAO,CAAC8C,KAAtB,EAA6B;AAClC;AACAhB,QAAAA,KAAK,CAACa,cAAN;;AAEA,YAAII,OAAO,GAAG5B,KAAK,CAACoB,UAAN,EAAd;;AAEA,YAAI,CAACQ,OAAO,CAACP,MAAb,EAAqB;AACnBrB,UAAAA,KAAK,CAAC0B,WAAN;;AAEA;AACD;;AAED,YAAIG,MAAM,GAAGD,OAAO,CAACb,WAAD,CAApB;;AAEAf,QAAAA,KAAK,CAAC8B,YAAN,CAAmBD,MAAnB;AACD;AACF,KAxCD;AAyCA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGI7B,IAAAA,KAAK,CAAC+B,OAAN,GAAgB,UAAUpB,KAAV,EAAiB;AAC/B,UAAIqB,GAAG,GAAGrB,KAAK,CAACqB,GAAhB;AAAA,UACIpB,KAAK,GAAGD,KAAK,CAACC,KADlB;AAEA,UAAIqB,YAAY,GAAGjC,KAAK,CAACc,KAAzB;AAAA,UACIoB,eAAe,GAAGD,YAAY,CAACE,WADnC;AAAA,UAEInB,SAAS,GAAGiB,YAAY,CAACjB,SAF7B;AAGA,UAAIoB,WAAW,GAAGpC,KAAK,CAACD,KAAxB;AAAA,UACIsC,kBAAkB,GAAGD,WAAW,CAACE,MADrC;AAAA,UAEIA,MAAM,GAAGD,kBAAkB,KAAK,KAAK,CAA5B,GAAgC,EAAhC,GAAqCA,kBAFlD;AAAA,UAGIE,QAAQ,GAAGH,WAAW,CAACG,QAH3B;AAAA,UAII7C,cAAc,GAAG0C,WAAW,CAAC1C,cAJjC;AAKA,UAAIe,MAAM,GAAGE,KAAK,CAACF,MAAnB;AACA,UAAI+B,kBAAkB,GAAGnD,sBAAsB,CAACoB,MAAD,CAA/C;;AAEA,UAAIgC,oBAAoB,GAAGnD,mBAAmB,CAACkD,kBAAD,EAAqBF,MAArB,CAA9C;AAAA,UACII,YAAY,GAAGD,oBAAoB,CAACE,QADxC;AAAA,UAEIC,aAAa,GAAGH,oBAAoB,CAACH,MAFzC,CAd+B,CAgBkB;;;AAGjD,UAAI,CAACzD,OAAO,CAAC4C,GAAT,EAAc5C,OAAO,CAACoC,EAAtB,EAA0BpC,OAAO,CAACqC,IAAlC,EAAwCrC,OAAO,CAAC8C,KAAhD,EAAuDkB,OAAvD,CAA+DjC,KAA/D,MAA0E,CAAC,CAA/E,EAAkF;AAChF;AACD;;AAED,UAAI8B,YAAY,KAAK,CAAC,CAAtB,EAAyB;AACvB,YAAIP,WAAW,GAAGK,kBAAkB,CAACM,KAAnB,CAAyBJ,YAAY,GAAGE,aAAa,CAACvB,MAAtD,CAAlB;AACA,YAAI0B,eAAe,GAAGrD,cAAc,CAACyC,WAAD,EAAcnC,KAAK,CAACD,KAApB,CAApC;AACA,YAAIiD,WAAW,GAAG,CAAC,CAAChD,KAAK,CAACoB,UAAN,CAAiBe,WAAjB,EAA8Bd,MAAlD;;AAEA,YAAI0B,eAAJ,EAAqB;AACnB,cAAIf,GAAG,KAAKY,aAAR,IAAyBZ,GAAG,KAAK,OAAjC,IAA4ChB,SAA5C,IAAyDmB,WAAW,KAAKD,eAAhB,IAAmCc,WAAhG,EAA6G;AAC3GhD,YAAAA,KAAK,CAACiD,YAAN,CAAmBd,WAAnB,EAAgCS,aAAhC,EAA+CF,YAA/C;AACD;AACF,SAJD,MAIO,IAAI1B,SAAJ,EAAe;AACpB;AACAhB,UAAAA,KAAK,CAAC0B,WAAN;AACD;AACD;AACR;AACA;AACA;;;AAGQ,YAAIa,QAAQ,IAAIQ,eAAhB,EAAiC;AAC/BR,UAAAA,QAAQ,CAACJ,WAAD,EAAcS,aAAd,CAAR;AACD;AACF,OAtBD,MAsBO,IAAI5B,SAAJ,EAAe;AACpBhB,QAAAA,KAAK,CAAC0B,WAAN;AACD;AACF,KAhDD;;AAkDA1B,IAAAA,KAAK,CAACkD,YAAN,GAAqB,UAAUvC,KAAV,EAAiB;AACpC,UAAIK,SAAS,GAAGhB,KAAK,CAACc,KAAN,CAAYE,SAA5B;AACA,UAAIkC,YAAY,GAAGlD,KAAK,CAACD,KAAN,CAAYmD,YAA/B;;AAEA,UAAI,CAAClC,SAAD,IAAckC,YAAlB,EAAgC;AAC9BA,QAAAA,YAAY,CAACvC,KAAD,CAAZ;AACD;AACF,KAPD;;AASAX,IAAAA,KAAK,CAACmD,YAAN,GAAqB,UAAUxC,KAAV,EAAiB;AACpCX,MAAAA,KAAK,CAACoD,OAAN,CAAczC,KAAd;AACD,KAFD;;AAIAX,IAAAA,KAAK,CAACqD,WAAN,GAAoB,UAAU1C,KAAV,EAAiB;AACnCX,MAAAA,KAAK,CAACsD,MAAN,CAAa3C,KAAb;AACD,KAFD;;AAIAX,IAAAA,KAAK,CAACuD,eAAN,GAAwB,YAAY;AAClCvD,MAAAA,KAAK,CAACoD,OAAN;AACD,KAFD;;AAIApD,IAAAA,KAAK,CAACwD,cAAN,GAAuB,YAAY;AACjCxD,MAAAA,KAAK,CAACsD,MAAN;AACD,KAFD;;AAIAtD,IAAAA,KAAK,CAACoD,OAAN,GAAgB,UAAUzC,KAAV,EAAiB;AAC/B8C,MAAAA,MAAM,CAACC,YAAP,CAAoB1D,KAAK,CAACE,OAA1B;AACA,UAAIyD,OAAO,GAAG3D,KAAK,CAACc,KAAN,CAAY6C,OAA1B;AACA,UAAIP,OAAO,GAAGpD,KAAK,CAACD,KAAN,CAAYqD,OAA1B;;AAEA,UAAI,CAACO,OAAD,IAAYhD,KAAZ,IAAqByC,OAAzB,EAAkC;AAChCA,QAAAA,OAAO,CAACzC,KAAD,CAAP;AACD;;AAEDX,MAAAA,KAAK,CAACO,QAAN,CAAe;AACboD,QAAAA,OAAO,EAAE;AADI,OAAf;AAGD,KAZD;;AAcA3D,IAAAA,KAAK,CAACsD,MAAN,GAAe,UAAU3C,KAAV,EAAiB;AAC9BX,MAAAA,KAAK,CAACE,OAAN,GAAgBuD,MAAM,CAACG,UAAP,CAAkB,YAAY;AAC5C,YAAIN,MAAM,GAAGtD,KAAK,CAACD,KAAN,CAAYuD,MAAzB;;AAEAtD,QAAAA,KAAK,CAACO,QAAN,CAAe;AACboD,UAAAA,OAAO,EAAE;AADI,SAAf;;AAIA3D,QAAAA,KAAK,CAAC0B,WAAN;;AAEA,YAAI4B,MAAJ,EAAY;AACVA,UAAAA,MAAM,CAAC3C,KAAD,CAAN;AACD;AACF,OAZe,EAYb,CAZa,CAAhB;AAaD,KAdD;;AAgBAX,IAAAA,KAAK,CAAC8B,YAAN,GAAqB,UAAUD,MAAV,EAAkB;AACrC,UAAIgC,YAAY,GAAG7D,KAAK,CAACc,KAAzB;AAAA,UACIT,KAAK,GAAGwD,YAAY,CAACxD,KADzB;AAAA,UAEIyD,eAAe,GAAGD,YAAY,CAACC,eAFnC;AAAA,UAGIlB,aAAa,GAAGiB,YAAY,CAACjB,aAHjC;AAIA,UAAImB,YAAY,GAAG/D,KAAK,CAACD,KAAzB;AAAA,UACIiE,KAAK,GAAGD,YAAY,CAACC,KADzB;AAAA,UAEIC,QAAQ,GAAGF,YAAY,CAACE,QAF5B;AAGA,UAAIC,aAAa,GAAGrC,MAAM,CAACxB,KAA3B;AAAA,UACI8D,YAAY,GAAGD,aAAa,KAAK,KAAK,CAAvB,GAA2B,EAA3B,GAAgCA,aADnD;;AAGA,UAAIE,mBAAmB,GAAG5E,kBAAkB,CAACa,KAAD,EAAQ;AAClDyD,QAAAA,eAAe,EAAEA,eADiC;AAElDO,QAAAA,UAAU,EAAEF,YAFsC;AAGlD7B,QAAAA,MAAM,EAAEM,aAH0C;AAIlD0B,QAAAA,cAAc,EAAEtE,KAAK,CAACuE,QAAN,CAAeD,cAJmB;AAKlDN,QAAAA,KAAK,EAAEA;AAL2C,OAAR,CAA5C;AAAA,UAOIQ,IAAI,GAAGJ,mBAAmB,CAACI,IAP/B;AAAA,UAQIC,iBAAiB,GAAGL,mBAAmB,CAACK,iBAR5C;;AAUAzE,MAAAA,KAAK,CAACI,aAAN,CAAoBoE,IAApB;;AAEAxE,MAAAA,KAAK,CAAC0B,WAAN,CAAkB,YAAY;AAC5B;AACAjC,QAAAA,iBAAiB,CAACO,KAAK,CAACuE,QAAP,EAAiBE,iBAAjB,CAAjB;AACD,OAHD;;AAKA,UAAIR,QAAJ,EAAc;AACZA,QAAAA,QAAQ,CAACpC,MAAD,EAASe,aAAT,CAAR;AACD;AACF,KA/BD;;AAiCA5C,IAAAA,KAAK,CAAC0E,cAAN,GAAuB,UAAU3D,WAAV,EAAuB;AAC5Cf,MAAAA,KAAK,CAACO,QAAN,CAAe;AACbQ,QAAAA,WAAW,EAAEA;AADA,OAAf;AAGD,KAJD;;AAMAf,IAAAA,KAAK,CAAC2E,cAAN,GAAuB,UAAUC,OAAV,EAAmB;AACxC,UAAIC,qBAAJ;;AAEA7E,MAAAA,KAAK,CAACuE,QAAN,GAAiBK,OAAO,KAAK,IAAZ,IAAoBA,OAAO,KAAK,KAAK,CAArC,GAAyC,KAAK,CAA9C,GAAkD,CAACC,qBAAqB,GAAGD,OAAO,CAACE,iBAAjC,MAAwD,IAAxD,IAAgED,qBAAqB,KAAK,KAAK,CAA/F,GAAmG,KAAK,CAAxG,GAA4GA,qBAAqB,CAACE,QAArM;AACD,KAJD;;AAMA/E,IAAAA,KAAK,CAACgF,aAAN,GAAsB,UAAUJ,OAAV,EAAmB;AACvC5E,MAAAA,KAAK,CAACiF,OAAN,GAAgBL,OAAhB;AACD,KAFD;;AAIA5E,IAAAA,KAAK,CAACoB,UAAN,GAAmB,UAAUe,WAAV,EAAuB;AACxC,UAAI+C,iBAAiB,GAAG/C,WAAW,IAAInC,KAAK,CAACc,KAAN,CAAYqB,WAA3B,IAA0C,EAAlE;AACA,UAAIgD,YAAY,GAAGnF,KAAK,CAACD,KAAzB;AAAA,UACIqF,QAAQ,GAAGD,YAAY,CAACC,QAD5B;AAAA,UAEIjG,YAAY,GAAGgG,YAAY,CAAChG,YAFhC;AAGA,UAAIkG,IAAI,GAAGzG,OAAO,CAACwG,QAAD,CAAP,CAAkBE,GAAlB,CAAsB,UAAUC,KAAV,EAAiB;AAChD,YAAIxF,KAAK,GAAGwF,KAAK,CAACxF,KAAlB;AAAA,YACIiC,GAAG,GAAGuD,KAAK,CAACvD,GADhB;AAEA,eAAO1D,aAAa,CAACA,aAAa,CAAC,EAAD,EAAKyB,KAAL,CAAd,EAA2B,EAA3B,EAA+B;AACjDiC,UAAAA,GAAG,EAAEA,GAAG,IAAIjC,KAAK,CAACM;AAD+B,SAA/B,CAApB;AAGD,OANU,EAMRmF,MANQ,CAMD,UAAU3D,MAAV,EAAkB;AAC1B;AACA,YAAI1C,YAAY,KAAK,KAArB,EAA4B;AAC1B,iBAAO,IAAP;AACD;;AAED,eAAOA,YAAY,CAAC+F,iBAAD,EAAoBrD,MAApB,CAAnB;AACD,OAbU,CAAX;AAcA,aAAOwD,IAAP;AACD,KApBD;;AAsBArF,IAAAA,KAAK,CAACc,KAAN,GAAc;AACZT,MAAAA,KAAK,EAAEN,KAAK,CAAC0F,YAAN,IAAsB1F,KAAK,CAACM,KAA5B,IAAqC,EADhC;AAEZW,MAAAA,SAAS,EAAE,KAFC;AAGZ8C,MAAAA,eAAe,EAAE,CAHL;AAIZ3B,MAAAA,WAAW,EAAE,IAJD;AAKZS,MAAAA,aAAa,EAAE,EALH;AAMZ7B,MAAAA,WAAW,EAAE,CAND;AAOZ4C,MAAAA,OAAO,EAAE;AAPG,KAAd;AASA,WAAO3D,KAAP;AACD;;AAEDxB,EAAAA,YAAY,CAACoB,QAAD,EAAW,CAAC;AACtBoC,IAAAA,GAAG,EAAE,oBADiB;AAEtB3B,IAAAA,KAAK,EAAE,SAASqF,kBAAT,GAA8B;AACnC,UAAI1E,SAAS,GAAG,KAAKF,KAAL,CAAWE,SAA3B,CADmC,CACG;;AAEtC,UAAIA,SAAJ,EAAe;AACb,aAAKiE,OAAL,CAAaU,SAAb,GAAyB,KAAKpB,QAAL,CAAcoB,SAAvC;AACD;AACF;AARqB,GAAD,EASpB;AACD3D,IAAAA,GAAG,EAAE,cADJ;AAED3B,IAAAA,KAAK,EAAE,SAAS4C,YAAT,CAAsBd,WAAtB,EAAmCS,aAAnC,EAAkDkB,eAAlD,EAAmE;AACxE,WAAKvD,QAAL,CAAc;AACZS,QAAAA,SAAS,EAAE,IADC;AAEZmB,QAAAA,WAAW,EAAEA,WAFD;AAGZS,QAAAA,aAAa,EAAEA,aAHH;AAIZkB,QAAAA,eAAe,EAAEA,eAJL;AAKZ/C,QAAAA,WAAW,EAAE;AALD,OAAd;AAOD;AAVA,GAToB,EAoBpB;AACDiB,IAAAA,GAAG,EAAE,aADJ;AAED3B,IAAAA,KAAK,EAAE,SAASqB,WAAT,CAAqBkE,QAArB,EAA+B;AACpC,WAAKrF,QAAL,CAAc;AACZS,QAAAA,SAAS,EAAE,KADC;AAEZ8C,QAAAA,eAAe,EAAE,CAFL;AAGZ3B,QAAAA,WAAW,EAAE;AAHD,OAAd,EAIGyD,QAJH;AAKD;AARA,GApBoB,EA6BpB;AACD5D,IAAAA,GAAG,EAAE,OADJ;AAED3B,IAAAA,KAAK,EAAE,SAASwF,KAAT,GAAiB;AACtB,WAAKtB,QAAL,CAAcsB,KAAd;AACD;AAJA,GA7BoB,EAkCpB;AACD7D,IAAAA,GAAG,EAAE,MADJ;AAED3B,IAAAA,KAAK,EAAE,SAASyF,IAAT,GAAgB;AACrB,WAAKvB,QAAL,CAAcuB,IAAd;AACD;AAJA,GAlCoB,EAuCpB;AACD9D,IAAAA,GAAG,EAAE,QADJ;AAED3B,IAAAA,KAAK,EAAE,SAAS0F,MAAT,GAAkB;AACvB,UAAIC,YAAY,GAAG,KAAKlF,KAAxB;AAAA,UACIT,KAAK,GAAG2F,YAAY,CAAC3F,KADzB;AAAA,UAEIyD,eAAe,GAAGkC,YAAY,CAAClC,eAFnC;AAAA,UAGIlB,aAAa,GAAGoD,YAAY,CAACpD,aAHjC;AAAA,UAII5B,SAAS,GAAGgF,YAAY,CAAChF,SAJ7B;AAAA,UAKID,WAAW,GAAGiF,YAAY,CAACjF,WAL/B;;AAOA,UAAIkF,YAAY,GAAG,KAAKlG,KAAxB;AAAA,UACImG,SAAS,GAAGD,YAAY,CAACC,SAD7B;AAAA,UAEIC,SAAS,GAAGF,YAAY,CAACE,SAF7B;AAAA,UAGIC,SAAS,GAAGH,YAAY,CAACG,SAH7B;AAAA,UAIIC,cAAc,GAAGJ,YAAY,CAACI,cAJlC;AAAA,UAKIC,SAAS,GAAGL,YAAY,CAACK,SAL7B;AAAA,UAMIC,KAAK,GAAGN,YAAY,CAACM,KANzB;AAAA,UAOIC,SAAS,GAAGP,YAAY,CAACO,SAP7B;AAAA,UAQIC,eAAe,GAAGR,YAAY,CAACQ,eARnC;AAAA,UASIC,iBAAiB,GAAGT,YAAY,CAACS,iBATrC;AAAA,UAUIC,SAAS,GAAGtI,wBAAwB,CAAC4H,YAAD,EAAe,CAAC,WAAD,EAAc,WAAd,EAA2B,WAA3B,EAAwC,gBAAxC,EAA0D,WAA1D,EAAuE,OAAvE,EAAgF,WAAhF,EAA6F,iBAA7F,EAAgH,mBAAhH,CAAf,CAVxC;;AAYA,UAAIW,UAAU,GAAGrH,IAAI,CAACoH,SAAD,EAAY,OAAZ,EAAqB,cAArB,EAAqC,QAArC,EAA+C,OAA/C,EAAwD,UAAxD,EAAoE,gBAApE,EAAsF,cAAtF,EAAsG,UAAtG,EAAkH,UAAlH,CAArB;AACA,UAAI/E,OAAO,GAAGZ,SAAS,GAAG,KAAKI,UAAL,EAAH,GAAuB,EAA9C;AACA,aAAOtC,KAAK,CAAC+H,aAAN,CAAoB,KAApB,EAA2B;AAChCP,QAAAA,SAAS,EAAE3H,UAAU,CAACuH,SAAD,EAAYI,SAAZ,CADW;AAEhCC,QAAAA,KAAK,EAAEA;AAFyB,OAA3B,EAGJzH,KAAK,CAAC+H,aAAN,CAAoB9H,QAApB,EAA8B+H,MAAM,CAACC,MAAP,CAAc;AAC7CP,QAAAA,SAAS,EAAEA,SADkC;AAE7CQ,QAAAA,GAAG,EAAE,KAAKrC,cAFmC;AAG7CtE,QAAAA,KAAK,EAAEA;AAHsC,OAAd,EAI9BuG,UAJ8B,EAIlB;AACbtG,QAAAA,QAAQ,EAAE,KAAKA,QADF;AAEbI,QAAAA,SAAS,EAAE,KAAKA,SAFH;AAGbqB,QAAAA,OAAO,EAAE,KAAKA,OAHD;AAIbmB,QAAAA,YAAY,EAAE,KAAKA,YAJN;AAKbE,QAAAA,OAAO,EAAE,KAAKD,YALD;AAMbG,QAAAA,MAAM,EAAE,KAAKD;AANA,OAJkB,CAA9B,CAHI,EAcFrC,SAAS,IAAIlC,KAAK,CAAC+H,aAAN,CAAoB,KAApB,EAA2B;AAC3CG,QAAAA,GAAG,EAAE,KAAKhC,aADiC;AAE3CsB,QAAAA,SAAS,EAAE,GAAGW,MAAH,CAAUf,SAAV,EAAqB,UAArB;AAFgC,OAA3B,EAGf7F,KAAK,CAACyC,KAAN,CAAY,CAAZ,EAAegB,eAAf,CAHe,EAGkBhF,KAAK,CAAC+H,aAAN,CAAoB5H,uBAApB,EAA6C;AAC/EoB,QAAAA,KAAK,EAAE;AACLoG,UAAAA,eAAe,EAAEA,eADZ;AAEL1F,UAAAA,WAAW,EAAEA,WAFR;AAGL2D,UAAAA,cAAc,EAAE,KAAKA,cAHhB;AAIL5C,UAAAA,YAAY,EAAE,KAAKA,YAJd;AAKLsB,UAAAA,OAAO,EAAE,KAAKG,eALT;AAMLD,UAAAA,MAAM,EAAE,KAAKE;AANR;AADwE,OAA7C,EASjC1E,KAAK,CAAC+H,aAAN,CAAoB7H,cAApB,EAAoC;AACrCkH,QAAAA,SAAS,EAAEA,SAD0B;AAErCG,QAAAA,cAAc,EAAEA,cAFqB;AAGrCF,QAAAA,SAAS,EAAEA,SAH0B;AAIrCC,QAAAA,SAAS,EAAEA,SAJ0B;AAKrCxE,QAAAA,OAAO,EAAEA,OAL4B;AAMrCsF,QAAAA,OAAO,EAAE,IAN4B;AAOrCR,QAAAA,iBAAiB,EAAEA;AAPkB,OAApC,EAQA5H,KAAK,CAAC+H,aAAN,CAAoB,MAApB,EAA4B,IAA5B,EAAkCjE,aAAlC,CARA,CATiC,CAHlB,EAoBqCvC,KAAK,CAACyC,KAAN,CAAYgB,eAAe,GAAGlB,aAAa,CAACvB,MAA5C,CApBrC,CAdX,CAAP;AAmCD;AA3DA,GAvCoB,CAAX,EAmGR,CAAC;AACHW,IAAAA,GAAG,EAAE,0BADF;AAEH3B,IAAAA,KAAK,EAAE,SAAS8G,wBAAT,CAAkCpH,KAAlC,EAAyCqH,SAAzC,EAAoD;AACzD,UAAIC,QAAQ,GAAG,EAAf;;AAEA,UAAI,WAAWtH,KAAX,IAAoBA,KAAK,CAACM,KAAN,KAAgB+G,SAAS,CAAC/G,KAAlD,EAAyD;AACvDgH,QAAAA,QAAQ,CAAChH,KAAT,GAAiBN,KAAK,CAACM,KAAN,IAAe,EAAhC;AACD;;AAED,aAAOgH,QAAP;AACD;AAVE,GAAD,CAnGQ,CAAZ;;AAgHA,SAAOzH,QAAP;AACD,CAtY2B,CAsY1Bd,KAAK,CAACwI,SAtYoB,CAA5B;;AAwYA1H,QAAQ,CAACV,MAAT,GAAkBA,MAAlB;AACAU,QAAQ,CAAC2H,YAAT,GAAwB;AACtBrB,EAAAA,SAAS,EAAE,aADW;AAEtB5D,EAAAA,MAAM,EAAE,GAFc;AAGtB0B,EAAAA,KAAK,EAAE,GAHe;AAItBtE,EAAAA,cAAc,EAAEC,qBAJM;AAKtBR,EAAAA,YAAY,EAAEC,mBALQ;AAMtBqH,EAAAA,eAAe,EAAE,WANK;AAOtBe,EAAAA,IAAI,EAAE;AAPgB,CAAxB;AASA,eAAe5H,QAAf","sourcesContent":["import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport TextArea from 'rc-textarea';\nimport KeywordTrigger from './KeywordTrigger';\nimport { MentionsContextProvider } from './MentionsContext';\nimport Option from './Option';\nimport { filterOption as defaultFilterOption, getBeforeSelectionText, getLastMeasureIndex, omit, replaceWithMeasure, setInputSelection, validateSearch as defaultValidateSearch } from './util';\n\nvar Mentions = /*#__PURE__*/function (_React$Component) {\n  _inherits(Mentions, _React$Component);\n\n  var _super = _createSuper(Mentions);\n\n  function Mentions(props) {\n    var _this;\n\n    _classCallCheck(this, Mentions);\n\n    _this = _super.call(this, props);\n    _this.focusId = undefined;\n\n    _this.triggerChange = function (value) {\n      var onChange = _this.props.onChange;\n\n      if (!('value' in _this.props)) {\n        _this.setState({\n          value: value\n        });\n      }\n\n      if (onChange) {\n        onChange(value);\n      }\n    };\n\n    _this.onChange = function (_ref) {\n      var value = _ref.target.value;\n\n      _this.triggerChange(value);\n    }; // Check if hit the measure keyword\n\n\n    _this.onKeyDown = function (event) {\n      var which = event.which;\n      var _this$state = _this.state,\n          activeIndex = _this$state.activeIndex,\n          measuring = _this$state.measuring; // Skip if not measuring\n\n      if (!measuring) {\n        return;\n      }\n\n      if (which === KeyCode.UP || which === KeyCode.DOWN) {\n        // Control arrow function\n        var optionLen = _this.getOptions().length;\n\n        var offset = which === KeyCode.UP ? -1 : 1;\n        var newActiveIndex = (activeIndex + offset + optionLen) % optionLen;\n\n        _this.setState({\n          activeIndex: newActiveIndex\n        });\n\n        event.preventDefault();\n      } else if (which === KeyCode.ESC) {\n        _this.stopMeasure();\n      } else if (which === KeyCode.ENTER) {\n        // Measure hit\n        event.preventDefault();\n\n        var options = _this.getOptions();\n\n        if (!options.length) {\n          _this.stopMeasure();\n\n          return;\n        }\n\n        var option = options[activeIndex];\n\n        _this.selectOption(option);\n      }\n    };\n    /**\n     * When to start measure:\n     * 1. When user press `prefix`\n     * 2. When measureText !== prevMeasureText\n     *  - If measure hit\n     *  - If measuring\n     *\n     * When to stop measure:\n     * 1. Selection is out of range\n     * 2. Contains `space`\n     * 3. ESC or select one\n     */\n\n\n    _this.onKeyUp = function (event) {\n      var key = event.key,\n          which = event.which;\n      var _this$state2 = _this.state,\n          prevMeasureText = _this$state2.measureText,\n          measuring = _this$state2.measuring;\n      var _this$props = _this.props,\n          _this$props$prefix = _this$props.prefix,\n          prefix = _this$props$prefix === void 0 ? '' : _this$props$prefix,\n          onSearch = _this$props.onSearch,\n          validateSearch = _this$props.validateSearch;\n      var target = event.target;\n      var selectionStartText = getBeforeSelectionText(target);\n\n      var _getLastMeasureIndex = getLastMeasureIndex(selectionStartText, prefix),\n          measureIndex = _getLastMeasureIndex.location,\n          measurePrefix = _getLastMeasureIndex.prefix; // Skip if match the white key list\n\n\n      if ([KeyCode.ESC, KeyCode.UP, KeyCode.DOWN, KeyCode.ENTER].indexOf(which) !== -1) {\n        return;\n      }\n\n      if (measureIndex !== -1) {\n        var measureText = selectionStartText.slice(measureIndex + measurePrefix.length);\n        var validateMeasure = validateSearch(measureText, _this.props);\n        var matchOption = !!_this.getOptions(measureText).length;\n\n        if (validateMeasure) {\n          if (key === measurePrefix || key === 'Shift' || measuring || measureText !== prevMeasureText && matchOption) {\n            _this.startMeasure(measureText, measurePrefix, measureIndex);\n          }\n        } else if (measuring) {\n          // Stop if measureText is invalidate\n          _this.stopMeasure();\n        }\n        /**\n         * We will trigger `onSearch` to developer since they may use for async update.\n         * If met `space` means user finished searching.\n         */\n\n\n        if (onSearch && validateMeasure) {\n          onSearch(measureText, measurePrefix);\n        }\n      } else if (measuring) {\n        _this.stopMeasure();\n      }\n    };\n\n    _this.onPressEnter = function (event) {\n      var measuring = _this.state.measuring;\n      var onPressEnter = _this.props.onPressEnter;\n\n      if (!measuring && onPressEnter) {\n        onPressEnter(event);\n      }\n    };\n\n    _this.onInputFocus = function (event) {\n      _this.onFocus(event);\n    };\n\n    _this.onInputBlur = function (event) {\n      _this.onBlur(event);\n    };\n\n    _this.onDropdownFocus = function () {\n      _this.onFocus();\n    };\n\n    _this.onDropdownBlur = function () {\n      _this.onBlur();\n    };\n\n    _this.onFocus = function (event) {\n      window.clearTimeout(_this.focusId);\n      var isFocus = _this.state.isFocus;\n      var onFocus = _this.props.onFocus;\n\n      if (!isFocus && event && onFocus) {\n        onFocus(event);\n      }\n\n      _this.setState({\n        isFocus: true\n      });\n    };\n\n    _this.onBlur = function (event) {\n      _this.focusId = window.setTimeout(function () {\n        var onBlur = _this.props.onBlur;\n\n        _this.setState({\n          isFocus: false\n        });\n\n        _this.stopMeasure();\n\n        if (onBlur) {\n          onBlur(event);\n        }\n      }, 0);\n    };\n\n    _this.selectOption = function (option) {\n      var _this$state3 = _this.state,\n          value = _this$state3.value,\n          measureLocation = _this$state3.measureLocation,\n          measurePrefix = _this$state3.measurePrefix;\n      var _this$props2 = _this.props,\n          split = _this$props2.split,\n          onSelect = _this$props2.onSelect;\n      var _option$value = option.value,\n          mentionValue = _option$value === void 0 ? '' : _option$value;\n\n      var _replaceWithMeasure = replaceWithMeasure(value, {\n        measureLocation: measureLocation,\n        targetText: mentionValue,\n        prefix: measurePrefix,\n        selectionStart: _this.textarea.selectionStart,\n        split: split\n      }),\n          text = _replaceWithMeasure.text,\n          selectionLocation = _replaceWithMeasure.selectionLocation;\n\n      _this.triggerChange(text);\n\n      _this.stopMeasure(function () {\n        // We need restore the selection position\n        setInputSelection(_this.textarea, selectionLocation);\n      });\n\n      if (onSelect) {\n        onSelect(option, measurePrefix);\n      }\n    };\n\n    _this.setActiveIndex = function (activeIndex) {\n      _this.setState({\n        activeIndex: activeIndex\n      });\n    };\n\n    _this.setTextAreaRef = function (element) {\n      var _element$resizableTex;\n\n      _this.textarea = element === null || element === void 0 ? void 0 : (_element$resizableTex = element.resizableTextArea) === null || _element$resizableTex === void 0 ? void 0 : _element$resizableTex.textArea;\n    };\n\n    _this.setMeasureRef = function (element) {\n      _this.measure = element;\n    };\n\n    _this.getOptions = function (measureText) {\n      var targetMeasureText = measureText || _this.state.measureText || '';\n      var _this$props3 = _this.props,\n          children = _this$props3.children,\n          filterOption = _this$props3.filterOption;\n      var list = toArray(children).map(function (_ref2) {\n        var props = _ref2.props,\n            key = _ref2.key;\n        return _objectSpread(_objectSpread({}, props), {}, {\n          key: key || props.value\n        });\n      }).filter(function (option) {\n        /** Return all result if `filterOption` is false. */\n        if (filterOption === false) {\n          return true;\n        }\n\n        return filterOption(targetMeasureText, option);\n      });\n      return list;\n    };\n\n    _this.state = {\n      value: props.defaultValue || props.value || '',\n      measuring: false,\n      measureLocation: 0,\n      measureText: null,\n      measurePrefix: '',\n      activeIndex: 0,\n      isFocus: false\n    };\n    return _this;\n  }\n\n  _createClass(Mentions, [{\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      var measuring = this.state.measuring; // Sync measure div top with textarea for rc-trigger usage\n\n      if (measuring) {\n        this.measure.scrollTop = this.textarea.scrollTop;\n      }\n    }\n  }, {\n    key: \"startMeasure\",\n    value: function startMeasure(measureText, measurePrefix, measureLocation) {\n      this.setState({\n        measuring: true,\n        measureText: measureText,\n        measurePrefix: measurePrefix,\n        measureLocation: measureLocation,\n        activeIndex: 0\n      });\n    }\n  }, {\n    key: \"stopMeasure\",\n    value: function stopMeasure(callback) {\n      this.setState({\n        measuring: false,\n        measureLocation: 0,\n        measureText: null\n      }, callback);\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      this.textarea.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.textarea.blur();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$state4 = this.state,\n          value = _this$state4.value,\n          measureLocation = _this$state4.measureLocation,\n          measurePrefix = _this$state4.measurePrefix,\n          measuring = _this$state4.measuring,\n          activeIndex = _this$state4.activeIndex;\n\n      var _this$props4 = this.props,\n          prefixCls = _this$props4.prefixCls,\n          placement = _this$props4.placement,\n          direction = _this$props4.direction,\n          transitionName = _this$props4.transitionName,\n          className = _this$props4.className,\n          style = _this$props4.style,\n          autoFocus = _this$props4.autoFocus,\n          notFoundContent = _this$props4.notFoundContent,\n          getPopupContainer = _this$props4.getPopupContainer,\n          restProps = _objectWithoutProperties(_this$props4, [\"prefixCls\", \"placement\", \"direction\", \"transitionName\", \"className\", \"style\", \"autoFocus\", \"notFoundContent\", \"getPopupContainer\"]);\n\n      var inputProps = omit(restProps, 'value', 'defaultValue', 'prefix', 'split', 'children', 'validateSearch', 'filterOption', 'onSelect', 'onSearch');\n      var options = measuring ? this.getOptions() : [];\n      return React.createElement(\"div\", {\n        className: classNames(prefixCls, className),\n        style: style\n      }, React.createElement(TextArea, Object.assign({\n        autoFocus: autoFocus,\n        ref: this.setTextAreaRef,\n        value: value\n      }, inputProps, {\n        onChange: this.onChange,\n        onKeyDown: this.onKeyDown,\n        onKeyUp: this.onKeyUp,\n        onPressEnter: this.onPressEnter,\n        onFocus: this.onInputFocus,\n        onBlur: this.onInputBlur\n      })), measuring && React.createElement(\"div\", {\n        ref: this.setMeasureRef,\n        className: \"\".concat(prefixCls, \"-measure\")\n      }, value.slice(0, measureLocation), React.createElement(MentionsContextProvider, {\n        value: {\n          notFoundContent: notFoundContent,\n          activeIndex: activeIndex,\n          setActiveIndex: this.setActiveIndex,\n          selectOption: this.selectOption,\n          onFocus: this.onDropdownFocus,\n          onBlur: this.onDropdownBlur\n        }\n      }, React.createElement(KeywordTrigger, {\n        prefixCls: prefixCls,\n        transitionName: transitionName,\n        placement: placement,\n        direction: direction,\n        options: options,\n        visible: true,\n        getPopupContainer: getPopupContainer\n      }, React.createElement(\"span\", null, measurePrefix))), value.slice(measureLocation + measurePrefix.length)));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(props, prevState) {\n      var newState = {};\n\n      if ('value' in props && props.value !== prevState.value) {\n        newState.value = props.value || '';\n      }\n\n      return newState;\n    }\n  }]);\n\n  return Mentions;\n}(React.Component);\n\nMentions.Option = Option;\nMentions.defaultProps = {\n  prefixCls: 'rc-mentions',\n  prefix: '@',\n  split: ' ',\n  validateSearch: defaultValidateSearch,\n  filterOption: defaultFilterOption,\n  notFoundContent: 'Not Found',\n  rows: 1\n};\nexport default Mentions;"]},"metadata":{},"sourceType":"module"}