today's progress, emoji support! it mostly consisted of  text => new Intl.Segmenter('en').segment(text).map(s => s.segment)  in a bunch of places, so that offset calculations made sense. I also had to add a hidden  <input/>  onto the page instead of just harvesting  keypress , because emoji-pickers don't actually send valid keypresses, but they do trigger  oninput  in a focused  <input/>  🎉
🎥 Untitled.mov