a9ffb1a7315b40f9ee6b0b53d84cbc55.json 12 KB
{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useState, useEffect, useRef } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { addGlobalMouseDownEvent } from '../utils/uiUtil';\nexport default function usePickerInput(_ref) {\n  var open = _ref.open,\n      value = _ref.value,\n      isClickOutside = _ref.isClickOutside,\n      triggerOpen = _ref.triggerOpen,\n      forwardKeyDown = _ref.forwardKeyDown,\n      blurToCancel = _ref.blurToCancel,\n      onSubmit = _ref.onSubmit,\n      onCancel = _ref.onCancel,\n      _onFocus = _ref.onFocus,\n      _onBlur = _ref.onBlur;\n\n  var _useState = useState(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      typing = _useState2[0],\n      setTyping = _useState2[1];\n\n  var _useState3 = useState(false),\n      _useState4 = _slicedToArray(_useState3, 2),\n      focused = _useState4[0],\n      setFocused = _useState4[1];\n  /**\n   * We will prevent blur to handle open event when user click outside,\n   * since this will repeat trigger `onOpenChange` event.\n   */\n\n\n  var preventBlurRef = useRef(false);\n  var valueChangedRef = useRef(false);\n  var inputProps = {\n    onMouseDown: function onMouseDown() {\n      setTyping(true);\n      triggerOpen(true);\n    },\n    onKeyDown: function onKeyDown(e) {\n      switch (e.which) {\n        case KeyCode.ENTER:\n          {\n            if (!open) {\n              triggerOpen(true);\n            } else if (onSubmit() !== false) {\n              setTyping(true);\n            }\n\n            e.preventDefault();\n            return;\n          }\n\n        case KeyCode.TAB:\n          {\n            if (typing && open && !e.shiftKey) {\n              setTyping(false);\n              e.preventDefault();\n            } else if (!typing && open) {\n              if (!forwardKeyDown(e) && e.shiftKey) {\n                setTyping(true);\n                e.preventDefault();\n              }\n            }\n\n            return;\n          }\n\n        case KeyCode.ESC:\n          {\n            setTyping(true);\n            onCancel();\n            return;\n          }\n      }\n\n      if (!open && ![KeyCode.SHIFT].includes(e.which)) {\n        triggerOpen(true);\n      } else if (!typing) {\n        // Let popup panel handle keyboard\n        forwardKeyDown(e);\n      }\n    },\n    onFocus: function onFocus(e) {\n      setTyping(true);\n      setFocused(true);\n\n      if (_onFocus) {\n        _onFocus(e);\n      }\n    },\n    onBlur: function onBlur(e) {\n      if (preventBlurRef.current || !isClickOutside(document.activeElement)) {\n        preventBlurRef.current = false;\n        return;\n      }\n\n      if (blurToCancel) {\n        setTimeout(function () {\n          if (isClickOutside(document.activeElement)) {\n            onCancel();\n          }\n        }, 0);\n      } else if (open) {\n        triggerOpen(false);\n\n        if (valueChangedRef.current) {\n          onSubmit();\n        }\n      }\n\n      setFocused(false);\n\n      if (_onBlur) {\n        _onBlur(e);\n      }\n    }\n  }; // check if value changed\n\n  useEffect(function () {\n    valueChangedRef.current = false;\n  }, [open]);\n  useEffect(function () {\n    valueChangedRef.current = true;\n  }, [value]); // Global click handler\n\n  useEffect(function () {\n    return addGlobalMouseDownEvent(function (_ref2) {\n      var target = _ref2.target;\n\n      if (open) {\n        if (!isClickOutside(target)) {\n          preventBlurRef.current = true; // Always set back in case `onBlur` prevented by user\n\n          requestAnimationFrame(function () {\n            preventBlurRef.current = false;\n          });\n        } else if (!focused) {\n          triggerOpen(false);\n        }\n      }\n    });\n  });\n  return [inputProps, {\n    focused: focused,\n    typing: typing\n  }];\n}","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/node_modules/rc-picker/es/hooks/usePickerInput.js"],"names":["_slicedToArray","useState","useEffect","useRef","KeyCode","addGlobalMouseDownEvent","usePickerInput","_ref","open","value","isClickOutside","triggerOpen","forwardKeyDown","blurToCancel","onSubmit","onCancel","_onFocus","onFocus","_onBlur","onBlur","_useState","_useState2","typing","setTyping","_useState3","_useState4","focused","setFocused","preventBlurRef","valueChangedRef","inputProps","onMouseDown","onKeyDown","e","which","ENTER","preventDefault","TAB","shiftKey","ESC","SHIFT","includes","current","document","activeElement","setTimeout","_ref2","target","requestAnimationFrame"],"mappings":"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","sourcesContent":["import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useState, useEffect, useRef } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { addGlobalMouseDownEvent } from '../utils/uiUtil';\nexport default function usePickerInput(_ref) {\n  var open = _ref.open,\n      value = _ref.value,\n      isClickOutside = _ref.isClickOutside,\n      triggerOpen = _ref.triggerOpen,\n      forwardKeyDown = _ref.forwardKeyDown,\n      blurToCancel = _ref.blurToCancel,\n      onSubmit = _ref.onSubmit,\n      onCancel = _ref.onCancel,\n      _onFocus = _ref.onFocus,\n      _onBlur = _ref.onBlur;\n\n  var _useState = useState(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      typing = _useState2[0],\n      setTyping = _useState2[1];\n\n  var _useState3 = useState(false),\n      _useState4 = _slicedToArray(_useState3, 2),\n      focused = _useState4[0],\n      setFocused = _useState4[1];\n  /**\n   * We will prevent blur to handle open event when user click outside,\n   * since this will repeat trigger `onOpenChange` event.\n   */\n\n\n  var preventBlurRef = useRef(false);\n  var valueChangedRef = useRef(false);\n  var inputProps = {\n    onMouseDown: function onMouseDown() {\n      setTyping(true);\n      triggerOpen(true);\n    },\n    onKeyDown: function onKeyDown(e) {\n      switch (e.which) {\n        case KeyCode.ENTER:\n          {\n            if (!open) {\n              triggerOpen(true);\n            } else if (onSubmit() !== false) {\n              setTyping(true);\n            }\n\n            e.preventDefault();\n            return;\n          }\n\n        case KeyCode.TAB:\n          {\n            if (typing && open && !e.shiftKey) {\n              setTyping(false);\n              e.preventDefault();\n            } else if (!typing && open) {\n              if (!forwardKeyDown(e) && e.shiftKey) {\n                setTyping(true);\n                e.preventDefault();\n              }\n            }\n\n            return;\n          }\n\n        case KeyCode.ESC:\n          {\n            setTyping(true);\n            onCancel();\n            return;\n          }\n      }\n\n      if (!open && ![KeyCode.SHIFT].includes(e.which)) {\n        triggerOpen(true);\n      } else if (!typing) {\n        // Let popup panel handle keyboard\n        forwardKeyDown(e);\n      }\n    },\n    onFocus: function onFocus(e) {\n      setTyping(true);\n      setFocused(true);\n\n      if (_onFocus) {\n        _onFocus(e);\n      }\n    },\n    onBlur: function onBlur(e) {\n      if (preventBlurRef.current || !isClickOutside(document.activeElement)) {\n        preventBlurRef.current = false;\n        return;\n      }\n\n      if (blurToCancel) {\n        setTimeout(function () {\n          if (isClickOutside(document.activeElement)) {\n            onCancel();\n          }\n        }, 0);\n      } else if (open) {\n        triggerOpen(false);\n\n        if (valueChangedRef.current) {\n          onSubmit();\n        }\n      }\n\n      setFocused(false);\n\n      if (_onBlur) {\n        _onBlur(e);\n      }\n    }\n  }; // check if value changed\n\n  useEffect(function () {\n    valueChangedRef.current = false;\n  }, [open]);\n  useEffect(function () {\n    valueChangedRef.current = true;\n  }, [value]); // Global click handler\n\n  useEffect(function () {\n    return addGlobalMouseDownEvent(function (_ref2) {\n      var target = _ref2.target;\n\n      if (open) {\n        if (!isClickOutside(target)) {\n          preventBlurRef.current = true; // Always set back in case `onBlur` prevented by user\n\n          requestAnimationFrame(function () {\n            preventBlurRef.current = false;\n          });\n        } else if (!focused) {\n          triggerOpen(false);\n        }\n      }\n    });\n  });\n  return [inputProps, {\n    focused: focused,\n    typing: typing\n  }];\n}"]},"metadata":{},"sourceType":"module"}