/*
 * Modified input field favicon indicator
 * 1.0.20180325.0
 *
 * By Eli Grey, https://eligrey.com
 * License: Dedicated to the public domain.
 *   See LICENSE.md
 */

// requires Emoji Favicon Toolkit: https://github.com/eligrey/emoji-favicon-toolkit

// REQUIRED: set `var favicon` to your current emoji favicon string
// I might add generic support for non-EFT favicons later

"use strict";
(()=>{
const modified_inputs = new Set;
const input_modified = "💬";
const original_favicon = favicon;
const defaultValue = "defaultValue";
// store default values
addEventListener("beforeinput", (evt) => {
	const target = evt.target;
	if (!(defaultValue in target || defaultValue in target.dataset)) {
		target.dataset[defaultValue] = ("" + (target.value || target.textContent)).trim();
	}
});
// detect input modifications
addEventListener("input", (evt) => {
	const target = evt.target;
	const original = defaultValue in target ? target[defaultValue] : target.dataset[defaultValue];
	if (original !== ("" + (target.value || target.textContent)).trim()) {
		if (modified_inputs.add(target).size && favicon !== input_modified) {
			set_emoji_favicon(favicon = input_modified);
		}
	} else if (modified_inputs.delete(target) && favicon === input_modified && !modified_inputs.size) {
		set_emoji_favicon(favicon = original_favicon);
	}
});
})();