keep liveediting in sync with contenteditable