hx_target.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // package hx_target -- атрибут HTMX (цель замены).
  2. package hx_target
  3. import (
  4. "gitp78su.ipnodns.ru/svi/kern/v4/d0"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs"
  6. mWt "gitp78su.ipnodns.ru/svi/kern/v4/d2/wui/wui_types"
  7. )
  8. // HxSwap -- атрибут HTMX (цель замены).
  9. type HxSwap struct {
  10. *d0.MSafeMutex
  11. val defs.Txt
  12. }
  13. // NewHxTarget -- возвращает новую цель замены.
  14. func NewHxTarget() *HxSwap {
  15. sf := &HxSwap{
  16. MSafeMutex: d0.MutSafeMutex(),
  17. }
  18. _ = mWt.IHxTarget(sf)
  19. return sf
  20. }
  21. // String -- возвращает строковое представление тэга.
  22. func (sf *HxSwap) String() string {
  23. sf.RLock()
  24. defer sf.RUnlock()
  25. return `hx-target="` + string(sf.val) + `"`
  26. }
  27. // Get -- возвращает хранимое значение цели замена.
  28. func (sf *HxSwap) Get() defs.Txt {
  29. sf.RLock()
  30. defer sf.RUnlock()
  31. return sf.val
  32. }
  33. // Set -- устанавливает значение цели обмена.
  34. func (sf *HxSwap) Set(val defs.Txt) {
  35. sf.Lock()
  36. defer sf.Unlock()
  37. sf.val = val
  38. }