package wtypes

// IHxTrigger -- атрибут триггера HTMX (hx-trigger)
//
// # Список событий разделяется запятыми
//
// click -- простой щелчок
//
// click[ctrlKey] -- щелчок с удержанием CTRL
//
// click[ctrlKey&&shiftKey]
//
// click[checkGlobalState()]
//
//	Модификаторы:
//
// once — событие будет срабатывать только один раз (например, при первом нажатии)
//
// changed — событие сработает только в том случае, если значение элемента изменилось.
// Пожалуйста, обратите внимание, что change — это название события, а changed —
// название модификатора.
//
// delay:<timing declaration> — перед тем как событие вызовет запрос, произойдёт
// задержка. Если событие произойдёт снова, задержка сбросится.
//
// throttle:<timing declaration> — дросселирование произойдёт после того, как событие
// вызовет запрос. Если событие произойдёт снова до завершения задержки, оно будет
// проигнорировано, а элемент сработает в конце задержки.
//
// from:<Extended CSS selector> — позволяет событию, запускающему запрос, исходить от
// другого элемента в документе (например, прослушивание события нажатия клавиши в теле
// документа для поддержки горячих клавиш). Подробнее
// https://htmx.org/attributes/hx-trigger/
//
// target:<CSS selector> — позволяет фильтровать события с помощью CSS-селектора по цели
// события.
//
//	queue:<queue option> — определяет, как события ставятся в очередь, если событие
//
// происходит во время выполнения запроса на другое событие. Возможные варианты:
//
// first - поставить в очередь первое событие
//
// last - поставить в очередь последнее событие (по умолчанию)
//
// all - поставить в очередь все события (отправить запрос для каждого события)
//
// none - не ставить в очередь новые события
//
//	Основные события DOM
//
// click - Срабатывает при клике на элемент.
//
// dblclick - Срабатывает при двойном клике на элемент.
//
// mouseenter - Срабатывает, когда курсор мыши наводится на элемент.
//
// mousemove -- Срабатывает, когда мышь двигается по элементу
//
// mouseleave - Срабатывает, когда курсор мыши покидает элемент.
//
// mouseover - Срабатывает, когда курсор мыши наводится на элемент или его потомков.
//
// mouseout - Срабатывает, когда курсор мыши покидает элемент или его потомков.
//
// mousedown - Срабатывает при нажатии кнопки мыши на элементе.
//
// mouseup - Срабатывает при отпускании кнопки мыши на элементе.
//
// keydown - Срабатывает при нажатии клавиши на клавиатуре.
//
// keyup - Срабатывает при отпускании клавиши на клавиатуре.
//
// keypress - Срабатывает при нажатии и удержании клавиши на клавиатуре.
//
// focus - Срабатывает при фокусировке на элементе.
//
// blur - Срабатывает при потере фокуса элементом.
//
// change - Срабатывает при изменении значения элемента (например, в input или select).
//
// input - Срабатывает при вводе данных в элемент (например, в input или textarea).
//
// submit - Срабатывает при отправке формы.
//
// load - Срабатывает при загрузке элемента (например, изображения).
//
// scroll - Срабатывает при прокрутке элемента.
//
// resize - Срабатывает при изменении размеров окна.
//
//	Нестандартные события
//
// load - срабатывает при загрузке (полезно для отложенной загрузки чего-либо)
//
// revealed - срабатывает при прокрутке элемента в область просмотра (также полезно
// для отложенной загрузки). См. документацию.
//
// intersect — срабатывает один раз, когда элемент впервые пересекает область просмотра.
//
//	Поддерживает два дополнительных параметра:
//
// root:<selector> - CSS-селектор корневого элемента для пересечения
//
// threshold:<float> — число с плавающей запятой от 0,0 до 1,0, указывающее,
// при каком проценте пересечения должно срабатывать событие
//
// htmx:afterRequest - Срабатывает после завершения AJAX-запроса.
//
// htmx:beforeRequest - Срабатывает перед отправкой AJAX-запроса.
//
// htmx:configRequest - Срабатывает перед настройкой AJAX-запроса.
//
// htmx:afterSettle - Срабатывает после применения изменений в DOM.
//
// htmx:afterSwap - Срабатывает после замены содержимого в DOM.
//
//	Примеры
//
// hx-trigger="every 1s">
//
// hx-trigger="load, click delay:1s"></div>
//
// В этом примере ресурс будет загружаться сразу после загрузки страницы, а затем
// снова с задержкой в одну секунду после каждого нажатия.
//
// <div hx-trigger="mouseenter delay:500ms" hx-get="/example">Hover me</div>
//
//	Указывает элемент, от которого будет считываться событие:
//
// <div hx-trigger="click from:#button" hx-get="/example">Click the button</div>
//
// <button id="button">Click me</button>
//
//	Получение абсолютных координат курсора
//
// <div hx-trigger="mousemove"  hx-get="/get-coordinates"
//
//	hx-vals='js:{x: event.clientX, y: event.clientY}'
//
//	style="width: 300px; height: 200px; border: 1px solid black;">
//
//	Наведите курсор на меня
//
// </div>
//
//	Для относительной позиции:
//
// hx-vals='js:{x: event.offsetX, y: event.offsetY}'
type IHxTrigger interface {
	// Set -- устанавливает триггер атрибута
	Set(string)
	// Get -- возвращает триггер атрибута
	Get() string
	// String -- возвращает строковое значение тэга
	String() string
}
