@zhongqian97-code/ecode 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +18 -13
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -639,8 +639,12 @@ var BLINK_INTERVAL_MS = 530;
|
|
|
639
639
|
var Input = forwardRef(function Input2({ isActive, onSubmit, onChange, placeholder }, ref) {
|
|
640
640
|
const [lines, setLines] = useState2([""]);
|
|
641
641
|
const [cursorVisible, setCursorVisible] = useState2(true);
|
|
642
|
+
const linesRef = useRef(lines);
|
|
643
|
+
linesRef.current = lines;
|
|
642
644
|
const onChangeRef = useRef(onChange);
|
|
643
645
|
onChangeRef.current = onChange;
|
|
646
|
+
const onSubmitRef = useRef(onSubmit);
|
|
647
|
+
onSubmitRef.current = onSubmit;
|
|
644
648
|
useImperativeHandle(ref, () => ({
|
|
645
649
|
fill(text) {
|
|
646
650
|
const newLines = text ? text.split("\n") : [""];
|
|
@@ -662,41 +666,42 @@ var Input = forwardRef(function Input2({ isActive, onSubmit, onChange, placehold
|
|
|
662
666
|
}, [isActive]);
|
|
663
667
|
useInput(
|
|
664
668
|
(input, key) => {
|
|
669
|
+
const currentLines = linesRef.current;
|
|
665
670
|
if (key.return && key.shift) {
|
|
666
|
-
const newLines = [...
|
|
671
|
+
const newLines = [...currentLines, ""];
|
|
667
672
|
setLines(newLines);
|
|
668
|
-
|
|
673
|
+
onChangeRef.current?.(newLines.join("\n"));
|
|
669
674
|
return;
|
|
670
675
|
}
|
|
671
676
|
if (key.return) {
|
|
672
|
-
const text =
|
|
673
|
-
|
|
677
|
+
const text = currentLines.join("\n");
|
|
678
|
+
onSubmitRef.current(text);
|
|
674
679
|
setLines([""]);
|
|
675
|
-
|
|
680
|
+
onChangeRef.current?.("");
|
|
676
681
|
return;
|
|
677
682
|
}
|
|
678
683
|
if (key.backspace || key.delete) {
|
|
679
|
-
const lastIdx =
|
|
680
|
-
const lastLine =
|
|
684
|
+
const lastIdx = currentLines.length - 1;
|
|
685
|
+
const lastLine = currentLines[lastIdx];
|
|
681
686
|
let newLines;
|
|
682
687
|
if (lastLine.length > 0) {
|
|
683
|
-
newLines = [...
|
|
684
|
-
} else if (
|
|
685
|
-
newLines =
|
|
688
|
+
newLines = [...currentLines.slice(0, lastIdx), lastLine.slice(0, -1)];
|
|
689
|
+
} else if (currentLines.length > 1) {
|
|
690
|
+
newLines = currentLines.slice(0, -1);
|
|
686
691
|
} else {
|
|
687
692
|
return;
|
|
688
693
|
}
|
|
689
694
|
setLines(newLines);
|
|
690
|
-
|
|
695
|
+
onChangeRef.current?.(newLines.join("\n"));
|
|
691
696
|
return;
|
|
692
697
|
}
|
|
693
698
|
if (key.ctrl || key.escape || key.upArrow || key.downArrow || key.leftArrow || key.rightArrow || key.tab || key.pageUp || key.pageDown) {
|
|
694
699
|
return;
|
|
695
700
|
}
|
|
696
701
|
if (input.length > 0) {
|
|
697
|
-
const newLines = [...
|
|
702
|
+
const newLines = [...currentLines.slice(0, -1), currentLines[currentLines.length - 1] + input];
|
|
698
703
|
setLines(newLines);
|
|
699
|
-
|
|
704
|
+
onChangeRef.current?.(newLines.join("\n"));
|
|
700
705
|
}
|
|
701
706
|
},
|
|
702
707
|
{ isActive }
|