{"version":3,"file":"Editable.cjs","sources":["../../../../../../packages/components/typography/src/Editable.tsx"],"sourcesContent":["import type { ChangeEventHandler } from '@antdv/types';\nimport { EnterOutlined } from '@ant-design/icons-vue';\nimport { classNames, KeyCode } from '@antdv/utils';\nimport {\n  defineComponent,\n  onMounted,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue';\nimport { Textarea } from '../../input';\n\nimport useStyle from '../style';\nimport { editableProps } from './props';\n\n// CSSINJS\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Editable',\n  inheritAttrs: false,\n  props: editableProps(),\n  // emits: ['save', 'cancel', 'end', 'change'],\n  setup(props, { emit, slots, attrs }) {\n    const { prefixCls } = toRefs(props);\n    const state = reactive({\n      current: props.value || '',\n      lastKeyCode: undefined,\n      inComposition: false,\n      cancelFlag: false,\n    });\n    watch(\n      () => props.value,\n      (current) => {\n        state.current = current;\n      },\n    );\n\n    const textArea = ref();\n\n    onMounted(() => {\n      if (textArea.value) {\n        const resizableTextArea = textArea.value?.resizableTextArea;\n        const innerTextArea = resizableTextArea?.textArea;\n        innerTextArea.focus();\n        const { length } = innerTextArea.value;\n        innerTextArea.setSelectionRange(length, length);\n      }\n    });\n\n    function saveTextAreaRef(node: any) {\n      textArea.value = node;\n    }\n\n    function onChange({ target: { value } }) {\n      state.current = value.replace(/[\\r\\n]/g, '');\n      emit('change', state.current);\n    }\n\n    function onCompositionStart() {\n      state.inComposition = true;\n    }\n\n    function onCompositionEnd() {\n      state.inComposition = false;\n    }\n\n    function onKeyDown(e: KeyboardEvent) {\n      const { keyCode } = e;\n      if (keyCode === KeyCode.ENTER)\n        e.preventDefault();\n\n      // We don't record keyCode when IME is using\n      if (state.inComposition) return;\n\n      state.lastKeyCode = keyCode;\n    }\n\n    function onKeyUp(e: KeyboardEvent) {\n      const { keyCode, ctrlKey, altKey, metaKey, shiftKey } = e;\n\n      // Check if it's a real key\n      if (\n        state.lastKeyCode === keyCode\n        && !state.inComposition\n        && !ctrlKey\n        && !altKey\n        && !metaKey\n        && !shiftKey\n      ) {\n        if (keyCode === KeyCode.ENTER) {\n          confirmChange();\n          emit('end');\n        } else if (keyCode === KeyCode.ESC) {\n          state.current = props.originContent;\n          emit('cancel');\n        }\n      }\n    }\n\n    function onBlur() {\n      confirmChange();\n    }\n\n    function confirmChange() {\n      emit('save', state.current.trim());\n    }\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    return () => {\n      const textAreaClassName = classNames(\n        {\n          [`${prefixCls.value}`]: true,\n          [`${prefixCls.value}-edit-content`]: true,\n          [`${prefixCls.value}-rtl`]: props.direction === 'rtl',\n          [props.component ? `${prefixCls.value}-${props.component}` : '']: true,\n        },\n        attrs.class,\n        hashId.value,\n      );\n\n      return wrapSSR(\n        <div {...attrs} class={textAreaClassName}>\n          <Textarea\n            ref={saveTextAreaRef}\n            maxlength={props.maxlength}\n            value={state.current}\n            onChange={onChange as ChangeEventHandler}\n            onKeydown={onKeyDown}\n            onKeyup={onKeyUp}\n            onCompositionstart={onCompositionStart}\n            onCompositionend={onCompositionEnd}\n            onBlur={onBlur}\n            rows={1}\n            autoSize={props.autoSize === undefined || props.autoSize}\n          />\n          {slots.enterIcon\n            ? (\n                slots.enterIcon({ className: `${props.prefixCls}-edit-content-confirm` })\n              )\n            : (\n                <EnterOutlined class={`${props.prefixCls}-edit-content-confirm`} />\n              )}\n        </div>,\n      );\n    };\n  },\n});\n"],"names":["defineComponent","compatConfig","MODE","name","inheritAttrs","props","editableProps","setup","emit","slots","attrs","prefixCls","toRefs","state","reactive","current","value","lastKeyCode","undefined","inComposition","cancelFlag","watch","textArea","ref","onMounted","resizableTextArea","innerTextArea","focus","length","setSelectionRange","saveTextAreaRef","node","onChange","target","replace","onCompositionStart","onCompositionEnd","onKeyDown","e","keyCode","KeyCode","ENTER","preventDefault","onKeyUp","ctrlKey","altKey","metaKey","shiftKey","confirmChange","ESC","originContent","onBlur","trim","wrapSSR","hashId","useStyle","textAreaClassName","classNames","direction","component","class","_createVNode","Textarea","maxlength","autoSize","enterIcon","className","EnterOutlined"],"mappings":"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"}