static A bindTextComponentToIntLiveValue(final A tc, final SimpleLiveValue lv) { final Var dontRecurse = new(false); bindLiveValueListenerToComponent(tc, lv, r { if (!dontRecurse!) setTextKeepCaret(tc, strOrNull(lv!)) }); onChange(tc, r { S s = gtt(tc); if (isInteger(s) || empty(s)) { temp tempSetVar(dontRecurse, true); lv.set(parseIntOpt(s)); } }); ret tc; }