{-# LANGUAGE RecordWildCards #-} module Monomer.EnhancedSlider.EnhancedSliderEvent ( EnhancedSliderEvent(..) , handleEvent ) where import Monomer.Widgets.Composite import Monomer.Widgets.Singles.Slider import Monomer.EnhancedSlider.EnhancedSliderCfg data EnhancedSliderEvent a = EventSetField a | EventFocus Path | EventBlur Path deriving EnhancedSliderEvent a -> EnhancedSliderEvent a -> Bool forall a. Eq a => EnhancedSliderEvent a -> EnhancedSliderEvent a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: EnhancedSliderEvent a -> EnhancedSliderEvent a -> Bool $c/= :: forall a. Eq a => EnhancedSliderEvent a -> EnhancedSliderEvent a -> Bool == :: EnhancedSliderEvent a -> EnhancedSliderEvent a -> Bool $c== :: forall a. Eq a => EnhancedSliderEvent a -> EnhancedSliderEvent a -> Bool Eq handleEvent :: (SliderValue a) => (EnhancedSliderCfg sp ep a) -> a -> a -> EventHandler a (EnhancedSliderEvent a) sp ep handleEvent :: forall a sp ep. SliderValue a => EnhancedSliderCfg sp ep a -> a -> a -> EventHandler a (EnhancedSliderEvent a) sp ep handleEvent EnhancedSliderCfg sp ep a config a a a b WidgetEnv a (EnhancedSliderEvent a) _ WidgetNode a (EnhancedSliderEvent a) node a _ EnhancedSliderEvent a event = case EnhancedSliderEvent a event of EventSetField a value -> forall a sp ep. SliderValue a => EnhancedSliderCfg sp ep a -> a -> a -> a -> [EventResponse a (EnhancedSliderEvent a) sp ep] setFieldHandle EnhancedSliderCfg sp ep a config a a a b a value EventFocus Path prev -> forall s e sp ep a. WidgetNode s e -> Path -> EnhancedSliderCfg sp ep a -> [EventResponse a (EnhancedSliderEvent a) sp ep] focusHandle WidgetNode a (EnhancedSliderEvent a) node Path prev EnhancedSliderCfg sp ep a config EventBlur Path next -> forall s e sp ep a. WidgetNode s e -> Path -> EnhancedSliderCfg sp ep a -> [EventResponse a (EnhancedSliderEvent a) sp ep] blurHandle WidgetNode a (EnhancedSliderEvent a) node Path next EnhancedSliderCfg sp ep a config setFieldHandle :: (SliderValue a) => (EnhancedSliderCfg sp ep a) -> a -> a -> a -> [EventResponse a (EnhancedSliderEvent a) sp ep] setFieldHandle :: forall a sp ep. SliderValue a => EnhancedSliderCfg sp ep a -> a -> a -> a -> [EventResponse a (EnhancedSliderEvent a) sp ep] setFieldHandle EnhancedSliderCfg{[a -> WidgetRequest sp ep] [Path -> WidgetRequest sp ep] Maybe Bool Maybe Rational Maybe Text Maybe AlignH Maybe AlignV Maybe (a -> Text) _escOnChangeReq :: forall s e a. EnhancedSliderCfg s e a -> [a -> WidgetRequest s e] _escOnBlurReq :: forall s e a. EnhancedSliderCfg s e a -> [Path -> WidgetRequest s e] _escOnFocusReq :: forall s e a. EnhancedSliderCfg s e a -> [Path -> WidgetRequest s e] _escAlignV :: forall s e a. EnhancedSliderCfg s e a -> Maybe AlignV _escAlignH :: forall s e a. EnhancedSliderCfg s e a -> Maybe AlignH _escTitleMethod :: forall s e a. EnhancedSliderCfg s e a -> Maybe (a -> Text) _escTitle :: forall s e a. EnhancedSliderCfg s e a -> Maybe Text _escHideLabel :: forall s e a. EnhancedSliderCfg s e a -> Maybe Bool _escDragRate :: forall s e a. EnhancedSliderCfg s e a -> Maybe Rational _escOnChangeReq :: [a -> WidgetRequest sp ep] _escOnBlurReq :: [Path -> WidgetRequest sp ep] _escOnFocusReq :: [Path -> WidgetRequest sp ep] _escAlignV :: Maybe AlignV _escAlignH :: Maybe AlignH _escTitleMethod :: Maybe (a -> Text) _escTitle :: Maybe Text _escHideLabel :: Maybe Bool _escDragRate :: Maybe Rational ..} a a a b a value = forall {e}. [EventResponse a e sp ep] response where response :: [EventResponse a e sp ep] response = [forall s e sp ep. s -> EventResponse s e sp ep Model a newValue] forall a. Semigroup a => a -> a -> a <> forall {s} {e}. [EventResponse s e sp ep] report report :: [EventResponse s e sp ep] report = forall s e sp ep. WidgetRequest sp ep -> EventResponse s e sp ep RequestParent forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> ((forall a b. (a -> b) -> a -> b $ a newValue) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [a -> WidgetRequest sp ep] _escOnChangeReq) newValue :: a newValue = forall a. Ord a => a -> a -> a min a b forall a b. (a -> b) -> a -> b $ forall a. Ord a => a -> a -> a max a a a value focusHandle :: WidgetNode s e -> Path -> EnhancedSliderCfg sp ep a -> [EventResponse a (EnhancedSliderEvent a) sp ep] focusHandle :: forall s e sp ep a. WidgetNode s e -> Path -> EnhancedSliderCfg sp ep a -> [EventResponse a (EnhancedSliderEvent a) sp ep] focusHandle WidgetNode s e node Path prev EnhancedSliderCfg{[a -> WidgetRequest sp ep] [Path -> WidgetRequest sp ep] Maybe Bool Maybe Rational Maybe Text Maybe AlignH Maybe AlignV Maybe (a -> Text) _escOnChangeReq :: [a -> WidgetRequest sp ep] _escOnBlurReq :: [Path -> WidgetRequest sp ep] _escOnFocusReq :: [Path -> WidgetRequest sp ep] _escAlignV :: Maybe AlignV _escAlignH :: Maybe AlignH _escTitleMethod :: Maybe (a -> Text) _escTitle :: Maybe Text _escHideLabel :: Maybe Bool _escDragRate :: Maybe Rational _escOnChangeReq :: forall s e a. EnhancedSliderCfg s e a -> [a -> WidgetRequest s e] _escOnBlurReq :: forall s e a. EnhancedSliderCfg s e a -> [Path -> WidgetRequest s e] _escOnFocusReq :: forall s e a. EnhancedSliderCfg s e a -> [Path -> WidgetRequest s e] _escAlignV :: forall s e a. EnhancedSliderCfg s e a -> Maybe AlignV _escAlignH :: forall s e a. EnhancedSliderCfg s e a -> Maybe AlignH _escTitleMethod :: forall s e a. EnhancedSliderCfg s e a -> Maybe (a -> Text) _escTitle :: forall s e a. EnhancedSliderCfg s e a -> Maybe Text _escHideLabel :: forall s e a. EnhancedSliderCfg s e a -> Maybe Bool _escDragRate :: forall s e a. EnhancedSliderCfg s e a -> Maybe Rational ..} = forall {s} {e}. [EventResponse s e sp ep] response where response :: [EventResponse s e sp ep] response = if Bool valid then forall s e sp ep. WidgetRequest sp ep -> EventResponse s e sp ep RequestParent forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> ((forall a b. (a -> b) -> a -> b $ Path prev) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [Path -> WidgetRequest sp ep] _escOnFocusReq) else [] valid :: Bool valid = Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall s e. WidgetNode s e -> Path -> Bool isNodeParentOfPath WidgetNode s e node Path prev blurHandle :: WidgetNode s e -> Path -> EnhancedSliderCfg sp ep a -> [EventResponse a (EnhancedSliderEvent a) sp ep] blurHandle :: forall s e sp ep a. WidgetNode s e -> Path -> EnhancedSliderCfg sp ep a -> [EventResponse a (EnhancedSliderEvent a) sp ep] blurHandle WidgetNode s e node Path next EnhancedSliderCfg{[a -> WidgetRequest sp ep] [Path -> WidgetRequest sp ep] Maybe Bool Maybe Rational Maybe Text Maybe AlignH Maybe AlignV Maybe (a -> Text) _escOnChangeReq :: [a -> WidgetRequest sp ep] _escOnBlurReq :: [Path -> WidgetRequest sp ep] _escOnFocusReq :: [Path -> WidgetRequest sp ep] _escAlignV :: Maybe AlignV _escAlignH :: Maybe AlignH _escTitleMethod :: Maybe (a -> Text) _escTitle :: Maybe Text _escHideLabel :: Maybe Bool _escDragRate :: Maybe Rational _escOnChangeReq :: forall s e a. EnhancedSliderCfg s e a -> [a -> WidgetRequest s e] _escOnBlurReq :: forall s e a. EnhancedSliderCfg s e a -> [Path -> WidgetRequest s e] _escOnFocusReq :: forall s e a. EnhancedSliderCfg s e a -> [Path -> WidgetRequest s e] _escAlignV :: forall s e a. EnhancedSliderCfg s e a -> Maybe AlignV _escAlignH :: forall s e a. EnhancedSliderCfg s e a -> Maybe AlignH _escTitleMethod :: forall s e a. EnhancedSliderCfg s e a -> Maybe (a -> Text) _escTitle :: forall s e a. EnhancedSliderCfg s e a -> Maybe Text _escHideLabel :: forall s e a. EnhancedSliderCfg s e a -> Maybe Bool _escDragRate :: forall s e a. EnhancedSliderCfg s e a -> Maybe Rational ..} = forall {s} {e}. [EventResponse s e sp ep] response where response :: [EventResponse s e sp ep] response = if Bool valid then forall s e sp ep. WidgetRequest sp ep -> EventResponse s e sp ep RequestParent forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> ((forall a b. (a -> b) -> a -> b $ Path next) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [Path -> WidgetRequest sp ep] _escOnBlurReq) else [] valid :: Bool valid = Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall s e. WidgetNode s e -> Path -> Bool isNodeParentOfPath WidgetNode s e node Path next