Extract contentEditable handling to puli.js