refactor TextColor plugin to allow custom ColorPicker, fixes #16908