This commit is contained in:
Rizky 2023-10-21 11:28:24 +07:00
parent 76bf7ebf53
commit 9dc86db663
1 changed files with 41 additions and 23 deletions

View File

@ -61,7 +61,21 @@ const Renaming: FC<{
spellCheck={false} spellCheck={false}
onChange={(e) => { onChange={(e) => {
local.newname = e.currentTarget.value; local.newname = e.currentTarget.value;
let shouldReplace =
local.newname.includes("=>") || local.newname.includes("<=");
const target = e.currentTarget;
let position = target.selectionStart;
if (shouldReplace) {
local.newname = local.newname.replace("<=", "⇦");
local.newname = local.newname.replace("=>", "⇨");
}
local.render(); local.render();
setTimeout(() => {
if (position && shouldReplace) target.selectionEnd = position - 1;
});
}}
onClick={(e) => {
e.stopPropagation();
}} }}
onFocus={(e) => { onFocus={(e) => {
e.currentTarget.select(); e.currentTarget.select();
@ -71,32 +85,36 @@ const Renaming: FC<{
e.currentTarget.blur(); e.currentTarget.blur();
} }
}} }}
onBlur={() => { onBlur={(e) => {
doneRenaming(); setTimeout(() => {
if (isComponent) { if (document.activeElement !== e.currentTarget) {
const comp = item.get("component"); doneRenaming();
if (comp) comp.set("name", local.newname); if (isComponent) {
} else { const comp = item.get("component");
item.set("name", local.newname); if (comp) comp.set("name", local.newname);
} } else {
item.set("name", local.newname);
}
if (isRootComponent && rootComponentID) { if (isRootComponent && rootComponentID) {
const doc = p.comps.doc[rootComponentID]; const doc = p.comps.doc[rootComponentID];
if (doc) { if (doc) {
doc.transact(() => { doc.transact(() => {
const comp = doc.getMap("map"); const comp = doc.getMap("map");
comp.set("name", local.newname); comp.set("name", local.newname);
const ctree = comp.get("content_tree"); const ctree = comp.get("content_tree");
if (ctree) { if (ctree) {
ctree.set("name", local.newname); ctree.set("name", local.newname);
const ccomp = ctree.get("component"); const ccomp = ctree.get("component");
if (ccomp) { if (ccomp) {
ccomp.set("name", local.newname); ccomp.set("name", local.newname);
} }
}
});
} }
}); }
} }
} }, 100);
}} }}
autoFocus autoFocus
/> />