{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.QuickSight.Types.FreeFormLayoutElement
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.QuickSight.Types.FreeFormLayoutElement where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.QuickSight.Types.FreeFormLayoutElementBackgroundStyle
import Amazonka.QuickSight.Types.FreeFormLayoutElementBorderStyle
import Amazonka.QuickSight.Types.LayoutElementType
import Amazonka.QuickSight.Types.LoadingAnimation
import Amazonka.QuickSight.Types.SheetElementRenderingRule
import Amazonka.QuickSight.Types.Visibility

-- | An element within a free-form layout.
--
-- /See:/ 'newFreeFormLayoutElement' smart constructor.
data FreeFormLayoutElement = FreeFormLayoutElement'
  { -- | The background style configuration of a free-form layout element.
    FreeFormLayoutElement -> Maybe FreeFormLayoutElementBackgroundStyle
backgroundStyle :: Prelude.Maybe FreeFormLayoutElementBackgroundStyle,
    -- | The border style configuration of a free-form layout element.
    FreeFormLayoutElement -> Maybe FreeFormLayoutElementBorderStyle
borderStyle :: Prelude.Maybe FreeFormLayoutElementBorderStyle,
    -- | The loading animation configuration of a free-form layout element.
    FreeFormLayoutElement -> Maybe LoadingAnimation
loadingAnimation :: Prelude.Maybe LoadingAnimation,
    -- | The rendering rules that determine when an element should be displayed
    -- within a free-form layout.
    FreeFormLayoutElement -> Maybe [SheetElementRenderingRule]
renderingRules :: Prelude.Maybe [SheetElementRenderingRule],
    -- | The border style configuration of a free-form layout element. This
    -- border style is used when the element is selected.
    FreeFormLayoutElement -> Maybe FreeFormLayoutElementBorderStyle
selectedBorderStyle :: Prelude.Maybe FreeFormLayoutElementBorderStyle,
    -- | The visibility of an element within a free-form layout.
    FreeFormLayoutElement -> Maybe Visibility
visibility :: Prelude.Maybe Visibility,
    -- | A unique identifier for an element within a free-form layout.
    FreeFormLayoutElement -> Text
elementId :: Prelude.Text,
    -- | The type of element.
    FreeFormLayoutElement -> LayoutElementType
elementType :: LayoutElementType,
    -- | The x-axis coordinate of the element.
    FreeFormLayoutElement -> Text
xAxisLocation :: Prelude.Text,
    -- | The y-axis coordinate of the element.
    FreeFormLayoutElement -> Text
yAxisLocation :: Prelude.Text,
    -- | The width of an element within a free-form layout.
    FreeFormLayoutElement -> Text
width :: Prelude.Text,
    -- | The height of an element within a free-form layout.
    FreeFormLayoutElement -> Text
height :: Prelude.Text
  }
  deriving (FreeFormLayoutElement -> FreeFormLayoutElement -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FreeFormLayoutElement -> FreeFormLayoutElement -> Bool
$c/= :: FreeFormLayoutElement -> FreeFormLayoutElement -> Bool
== :: FreeFormLayoutElement -> FreeFormLayoutElement -> Bool
$c== :: FreeFormLayoutElement -> FreeFormLayoutElement -> Bool
Prelude.Eq, Int -> FreeFormLayoutElement -> ShowS
[FreeFormLayoutElement] -> ShowS
FreeFormLayoutElement -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FreeFormLayoutElement] -> ShowS
$cshowList :: [FreeFormLayoutElement] -> ShowS
show :: FreeFormLayoutElement -> String
$cshow :: FreeFormLayoutElement -> String
showsPrec :: Int -> FreeFormLayoutElement -> ShowS
$cshowsPrec :: Int -> FreeFormLayoutElement -> ShowS
Prelude.Show, forall x. Rep FreeFormLayoutElement x -> FreeFormLayoutElement
forall x. FreeFormLayoutElement -> Rep FreeFormLayoutElement x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep FreeFormLayoutElement x -> FreeFormLayoutElement
$cfrom :: forall x. FreeFormLayoutElement -> Rep FreeFormLayoutElement x
Prelude.Generic)

-- |
-- Create a value of 'FreeFormLayoutElement' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'backgroundStyle', 'freeFormLayoutElement_backgroundStyle' - The background style configuration of a free-form layout element.
--
-- 'borderStyle', 'freeFormLayoutElement_borderStyle' - The border style configuration of a free-form layout element.
--
-- 'loadingAnimation', 'freeFormLayoutElement_loadingAnimation' - The loading animation configuration of a free-form layout element.
--
-- 'renderingRules', 'freeFormLayoutElement_renderingRules' - The rendering rules that determine when an element should be displayed
-- within a free-form layout.
--
-- 'selectedBorderStyle', 'freeFormLayoutElement_selectedBorderStyle' - The border style configuration of a free-form layout element. This
-- border style is used when the element is selected.
--
-- 'visibility', 'freeFormLayoutElement_visibility' - The visibility of an element within a free-form layout.
--
-- 'elementId', 'freeFormLayoutElement_elementId' - A unique identifier for an element within a free-form layout.
--
-- 'elementType', 'freeFormLayoutElement_elementType' - The type of element.
--
-- 'xAxisLocation', 'freeFormLayoutElement_xAxisLocation' - The x-axis coordinate of the element.
--
-- 'yAxisLocation', 'freeFormLayoutElement_yAxisLocation' - The y-axis coordinate of the element.
--
-- 'width', 'freeFormLayoutElement_width' - The width of an element within a free-form layout.
--
-- 'height', 'freeFormLayoutElement_height' - The height of an element within a free-form layout.
newFreeFormLayoutElement ::
  -- | 'elementId'
  Prelude.Text ->
  -- | 'elementType'
  LayoutElementType ->
  -- | 'xAxisLocation'
  Prelude.Text ->
  -- | 'yAxisLocation'
  Prelude.Text ->
  -- | 'width'
  Prelude.Text ->
  -- | 'height'
  Prelude.Text ->
  FreeFormLayoutElement
newFreeFormLayoutElement :: Text
-> LayoutElementType
-> Text
-> Text
-> Text
-> Text
-> FreeFormLayoutElement
newFreeFormLayoutElement
  Text
pElementId_
  LayoutElementType
pElementType_
  Text
pXAxisLocation_
  Text
pYAxisLocation_
  Text
pWidth_
  Text
pHeight_ =
    FreeFormLayoutElement'
      { $sel:backgroundStyle:FreeFormLayoutElement' :: Maybe FreeFormLayoutElementBackgroundStyle
backgroundStyle =
          forall a. Maybe a
Prelude.Nothing,
        $sel:borderStyle:FreeFormLayoutElement' :: Maybe FreeFormLayoutElementBorderStyle
borderStyle = forall a. Maybe a
Prelude.Nothing,
        $sel:loadingAnimation:FreeFormLayoutElement' :: Maybe LoadingAnimation
loadingAnimation = forall a. Maybe a
Prelude.Nothing,
        $sel:renderingRules:FreeFormLayoutElement' :: Maybe [SheetElementRenderingRule]
renderingRules = forall a. Maybe a
Prelude.Nothing,
        $sel:selectedBorderStyle:FreeFormLayoutElement' :: Maybe FreeFormLayoutElementBorderStyle
selectedBorderStyle = forall a. Maybe a
Prelude.Nothing,
        $sel:visibility:FreeFormLayoutElement' :: Maybe Visibility
visibility = forall a. Maybe a
Prelude.Nothing,
        $sel:elementId:FreeFormLayoutElement' :: Text
elementId = Text
pElementId_,
        $sel:elementType:FreeFormLayoutElement' :: LayoutElementType
elementType = LayoutElementType
pElementType_,
        $sel:xAxisLocation:FreeFormLayoutElement' :: Text
xAxisLocation = Text
pXAxisLocation_,
        $sel:yAxisLocation:FreeFormLayoutElement' :: Text
yAxisLocation = Text
pYAxisLocation_,
        $sel:width:FreeFormLayoutElement' :: Text
width = Text
pWidth_,
        $sel:height:FreeFormLayoutElement' :: Text
height = Text
pHeight_
      }

-- | The background style configuration of a free-form layout element.
freeFormLayoutElement_backgroundStyle :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe FreeFormLayoutElementBackgroundStyle)
freeFormLayoutElement_backgroundStyle :: Lens'
  FreeFormLayoutElement (Maybe FreeFormLayoutElementBackgroundStyle)
freeFormLayoutElement_backgroundStyle = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Maybe FreeFormLayoutElementBackgroundStyle
backgroundStyle :: Maybe FreeFormLayoutElementBackgroundStyle
$sel:backgroundStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBackgroundStyle
backgroundStyle} -> Maybe FreeFormLayoutElementBackgroundStyle
backgroundStyle) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Maybe FreeFormLayoutElementBackgroundStyle
a -> FreeFormLayoutElement
s {$sel:backgroundStyle:FreeFormLayoutElement' :: Maybe FreeFormLayoutElementBackgroundStyle
backgroundStyle = Maybe FreeFormLayoutElementBackgroundStyle
a} :: FreeFormLayoutElement)

-- | The border style configuration of a free-form layout element.
freeFormLayoutElement_borderStyle :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe FreeFormLayoutElementBorderStyle)
freeFormLayoutElement_borderStyle :: Lens'
  FreeFormLayoutElement (Maybe FreeFormLayoutElementBorderStyle)
freeFormLayoutElement_borderStyle = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Maybe FreeFormLayoutElementBorderStyle
borderStyle :: Maybe FreeFormLayoutElementBorderStyle
$sel:borderStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBorderStyle
borderStyle} -> Maybe FreeFormLayoutElementBorderStyle
borderStyle) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Maybe FreeFormLayoutElementBorderStyle
a -> FreeFormLayoutElement
s {$sel:borderStyle:FreeFormLayoutElement' :: Maybe FreeFormLayoutElementBorderStyle
borderStyle = Maybe FreeFormLayoutElementBorderStyle
a} :: FreeFormLayoutElement)

-- | The loading animation configuration of a free-form layout element.
freeFormLayoutElement_loadingAnimation :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe LoadingAnimation)
freeFormLayoutElement_loadingAnimation :: Lens' FreeFormLayoutElement (Maybe LoadingAnimation)
freeFormLayoutElement_loadingAnimation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Maybe LoadingAnimation
loadingAnimation :: Maybe LoadingAnimation
$sel:loadingAnimation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe LoadingAnimation
loadingAnimation} -> Maybe LoadingAnimation
loadingAnimation) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Maybe LoadingAnimation
a -> FreeFormLayoutElement
s {$sel:loadingAnimation:FreeFormLayoutElement' :: Maybe LoadingAnimation
loadingAnimation = Maybe LoadingAnimation
a} :: FreeFormLayoutElement)

-- | The rendering rules that determine when an element should be displayed
-- within a free-form layout.
freeFormLayoutElement_renderingRules :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe [SheetElementRenderingRule])
freeFormLayoutElement_renderingRules :: Lens' FreeFormLayoutElement (Maybe [SheetElementRenderingRule])
freeFormLayoutElement_renderingRules = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Maybe [SheetElementRenderingRule]
renderingRules :: Maybe [SheetElementRenderingRule]
$sel:renderingRules:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe [SheetElementRenderingRule]
renderingRules} -> Maybe [SheetElementRenderingRule]
renderingRules) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Maybe [SheetElementRenderingRule]
a -> FreeFormLayoutElement
s {$sel:renderingRules:FreeFormLayoutElement' :: Maybe [SheetElementRenderingRule]
renderingRules = Maybe [SheetElementRenderingRule]
a} :: FreeFormLayoutElement) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The border style configuration of a free-form layout element. This
-- border style is used when the element is selected.
freeFormLayoutElement_selectedBorderStyle :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe FreeFormLayoutElementBorderStyle)
freeFormLayoutElement_selectedBorderStyle :: Lens'
  FreeFormLayoutElement (Maybe FreeFormLayoutElementBorderStyle)
freeFormLayoutElement_selectedBorderStyle = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Maybe FreeFormLayoutElementBorderStyle
selectedBorderStyle :: Maybe FreeFormLayoutElementBorderStyle
$sel:selectedBorderStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBorderStyle
selectedBorderStyle} -> Maybe FreeFormLayoutElementBorderStyle
selectedBorderStyle) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Maybe FreeFormLayoutElementBorderStyle
a -> FreeFormLayoutElement
s {$sel:selectedBorderStyle:FreeFormLayoutElement' :: Maybe FreeFormLayoutElementBorderStyle
selectedBorderStyle = Maybe FreeFormLayoutElementBorderStyle
a} :: FreeFormLayoutElement)

-- | The visibility of an element within a free-form layout.
freeFormLayoutElement_visibility :: Lens.Lens' FreeFormLayoutElement (Prelude.Maybe Visibility)
freeFormLayoutElement_visibility :: Lens' FreeFormLayoutElement (Maybe Visibility)
freeFormLayoutElement_visibility = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Maybe Visibility
visibility :: Maybe Visibility
$sel:visibility:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe Visibility
visibility} -> Maybe Visibility
visibility) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Maybe Visibility
a -> FreeFormLayoutElement
s {$sel:visibility:FreeFormLayoutElement' :: Maybe Visibility
visibility = Maybe Visibility
a} :: FreeFormLayoutElement)

-- | A unique identifier for an element within a free-form layout.
freeFormLayoutElement_elementId :: Lens.Lens' FreeFormLayoutElement Prelude.Text
freeFormLayoutElement_elementId :: Lens' FreeFormLayoutElement Text
freeFormLayoutElement_elementId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Text
elementId :: Text
$sel:elementId:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
elementId} -> Text
elementId) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Text
a -> FreeFormLayoutElement
s {$sel:elementId:FreeFormLayoutElement' :: Text
elementId = Text
a} :: FreeFormLayoutElement)

-- | The type of element.
freeFormLayoutElement_elementType :: Lens.Lens' FreeFormLayoutElement LayoutElementType
freeFormLayoutElement_elementType :: Lens' FreeFormLayoutElement LayoutElementType
freeFormLayoutElement_elementType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {LayoutElementType
elementType :: LayoutElementType
$sel:elementType:FreeFormLayoutElement' :: FreeFormLayoutElement -> LayoutElementType
elementType} -> LayoutElementType
elementType) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} LayoutElementType
a -> FreeFormLayoutElement
s {$sel:elementType:FreeFormLayoutElement' :: LayoutElementType
elementType = LayoutElementType
a} :: FreeFormLayoutElement)

-- | The x-axis coordinate of the element.
freeFormLayoutElement_xAxisLocation :: Lens.Lens' FreeFormLayoutElement Prelude.Text
freeFormLayoutElement_xAxisLocation :: Lens' FreeFormLayoutElement Text
freeFormLayoutElement_xAxisLocation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Text
xAxisLocation :: Text
$sel:xAxisLocation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
xAxisLocation} -> Text
xAxisLocation) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Text
a -> FreeFormLayoutElement
s {$sel:xAxisLocation:FreeFormLayoutElement' :: Text
xAxisLocation = Text
a} :: FreeFormLayoutElement)

-- | The y-axis coordinate of the element.
freeFormLayoutElement_yAxisLocation :: Lens.Lens' FreeFormLayoutElement Prelude.Text
freeFormLayoutElement_yAxisLocation :: Lens' FreeFormLayoutElement Text
freeFormLayoutElement_yAxisLocation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Text
yAxisLocation :: Text
$sel:yAxisLocation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
yAxisLocation} -> Text
yAxisLocation) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Text
a -> FreeFormLayoutElement
s {$sel:yAxisLocation:FreeFormLayoutElement' :: Text
yAxisLocation = Text
a} :: FreeFormLayoutElement)

-- | The width of an element within a free-form layout.
freeFormLayoutElement_width :: Lens.Lens' FreeFormLayoutElement Prelude.Text
freeFormLayoutElement_width :: Lens' FreeFormLayoutElement Text
freeFormLayoutElement_width = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Text
width :: Text
$sel:width:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
width} -> Text
width) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Text
a -> FreeFormLayoutElement
s {$sel:width:FreeFormLayoutElement' :: Text
width = Text
a} :: FreeFormLayoutElement)

-- | The height of an element within a free-form layout.
freeFormLayoutElement_height :: Lens.Lens' FreeFormLayoutElement Prelude.Text
freeFormLayoutElement_height :: Lens' FreeFormLayoutElement Text
freeFormLayoutElement_height = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FreeFormLayoutElement' {Text
height :: Text
$sel:height:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
height} -> Text
height) (\s :: FreeFormLayoutElement
s@FreeFormLayoutElement' {} Text
a -> FreeFormLayoutElement
s {$sel:height:FreeFormLayoutElement' :: Text
height = Text
a} :: FreeFormLayoutElement)

instance Data.FromJSON FreeFormLayoutElement where
  parseJSON :: Value -> Parser FreeFormLayoutElement
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"FreeFormLayoutElement"
      ( \Object
x ->
          Maybe FreeFormLayoutElementBackgroundStyle
-> Maybe FreeFormLayoutElementBorderStyle
-> Maybe LoadingAnimation
-> Maybe [SheetElementRenderingRule]
-> Maybe FreeFormLayoutElementBorderStyle
-> Maybe Visibility
-> Text
-> LayoutElementType
-> Text
-> Text
-> Text
-> Text
-> FreeFormLayoutElement
FreeFormLayoutElement'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"BackgroundStyle")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"BorderStyle")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LoadingAnimation")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RenderingRules" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SelectedBorderStyle")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Visibility")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"ElementId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"ElementType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"XAxisLocation")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"YAxisLocation")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"Width")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"Height")
      )

instance Prelude.Hashable FreeFormLayoutElement where
  hashWithSalt :: Int -> FreeFormLayoutElement -> Int
hashWithSalt Int
_salt FreeFormLayoutElement' {Maybe [SheetElementRenderingRule]
Maybe Visibility
Maybe LoadingAnimation
Maybe FreeFormLayoutElementBorderStyle
Maybe FreeFormLayoutElementBackgroundStyle
Text
LayoutElementType
height :: Text
width :: Text
yAxisLocation :: Text
xAxisLocation :: Text
elementType :: LayoutElementType
elementId :: Text
visibility :: Maybe Visibility
selectedBorderStyle :: Maybe FreeFormLayoutElementBorderStyle
renderingRules :: Maybe [SheetElementRenderingRule]
loadingAnimation :: Maybe LoadingAnimation
borderStyle :: Maybe FreeFormLayoutElementBorderStyle
backgroundStyle :: Maybe FreeFormLayoutElementBackgroundStyle
$sel:height:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:width:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:yAxisLocation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:xAxisLocation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:elementType:FreeFormLayoutElement' :: FreeFormLayoutElement -> LayoutElementType
$sel:elementId:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:visibility:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe Visibility
$sel:selectedBorderStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBorderStyle
$sel:renderingRules:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe [SheetElementRenderingRule]
$sel:loadingAnimation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe LoadingAnimation
$sel:borderStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBorderStyle
$sel:backgroundStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBackgroundStyle
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FreeFormLayoutElementBackgroundStyle
backgroundStyle
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FreeFormLayoutElementBorderStyle
borderStyle
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LoadingAnimation
loadingAnimation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SheetElementRenderingRule]
renderingRules
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FreeFormLayoutElementBorderStyle
selectedBorderStyle
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Visibility
visibility
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
elementId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` LayoutElementType
elementType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
xAxisLocation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
yAxisLocation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
width
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
height

instance Prelude.NFData FreeFormLayoutElement where
  rnf :: FreeFormLayoutElement -> ()
rnf FreeFormLayoutElement' {Maybe [SheetElementRenderingRule]
Maybe Visibility
Maybe LoadingAnimation
Maybe FreeFormLayoutElementBorderStyle
Maybe FreeFormLayoutElementBackgroundStyle
Text
LayoutElementType
height :: Text
width :: Text
yAxisLocation :: Text
xAxisLocation :: Text
elementType :: LayoutElementType
elementId :: Text
visibility :: Maybe Visibility
selectedBorderStyle :: Maybe FreeFormLayoutElementBorderStyle
renderingRules :: Maybe [SheetElementRenderingRule]
loadingAnimation :: Maybe LoadingAnimation
borderStyle :: Maybe FreeFormLayoutElementBorderStyle
backgroundStyle :: Maybe FreeFormLayoutElementBackgroundStyle
$sel:height:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:width:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:yAxisLocation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:xAxisLocation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:elementType:FreeFormLayoutElement' :: FreeFormLayoutElement -> LayoutElementType
$sel:elementId:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:visibility:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe Visibility
$sel:selectedBorderStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBorderStyle
$sel:renderingRules:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe [SheetElementRenderingRule]
$sel:loadingAnimation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe LoadingAnimation
$sel:borderStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBorderStyle
$sel:backgroundStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBackgroundStyle
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe FreeFormLayoutElementBackgroundStyle
backgroundStyle
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FreeFormLayoutElementBorderStyle
borderStyle
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LoadingAnimation
loadingAnimation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [SheetElementRenderingRule]
renderingRules
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FreeFormLayoutElementBorderStyle
selectedBorderStyle
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Visibility
visibility
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
elementId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf LayoutElementType
elementType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
xAxisLocation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
yAxisLocation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
width
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
height

instance Data.ToJSON FreeFormLayoutElement where
  toJSON :: FreeFormLayoutElement -> Value
toJSON FreeFormLayoutElement' {Maybe [SheetElementRenderingRule]
Maybe Visibility
Maybe LoadingAnimation
Maybe FreeFormLayoutElementBorderStyle
Maybe FreeFormLayoutElementBackgroundStyle
Text
LayoutElementType
height :: Text
width :: Text
yAxisLocation :: Text
xAxisLocation :: Text
elementType :: LayoutElementType
elementId :: Text
visibility :: Maybe Visibility
selectedBorderStyle :: Maybe FreeFormLayoutElementBorderStyle
renderingRules :: Maybe [SheetElementRenderingRule]
loadingAnimation :: Maybe LoadingAnimation
borderStyle :: Maybe FreeFormLayoutElementBorderStyle
backgroundStyle :: Maybe FreeFormLayoutElementBackgroundStyle
$sel:height:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:width:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:yAxisLocation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:xAxisLocation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:elementType:FreeFormLayoutElement' :: FreeFormLayoutElement -> LayoutElementType
$sel:elementId:FreeFormLayoutElement' :: FreeFormLayoutElement -> Text
$sel:visibility:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe Visibility
$sel:selectedBorderStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBorderStyle
$sel:renderingRules:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe [SheetElementRenderingRule]
$sel:loadingAnimation:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe LoadingAnimation
$sel:borderStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBorderStyle
$sel:backgroundStyle:FreeFormLayoutElement' :: FreeFormLayoutElement -> Maybe FreeFormLayoutElementBackgroundStyle
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"BackgroundStyle" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FreeFormLayoutElementBackgroundStyle
backgroundStyle,
            (Key
"BorderStyle" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FreeFormLayoutElementBorderStyle
borderStyle,
            (Key
"LoadingAnimation" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe LoadingAnimation
loadingAnimation,
            (Key
"RenderingRules" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [SheetElementRenderingRule]
renderingRules,
            (Key
"SelectedBorderStyle" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FreeFormLayoutElementBorderStyle
selectedBorderStyle,
            (Key
"Visibility" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Visibility
visibility,
            forall a. a -> Maybe a
Prelude.Just (Key
"ElementId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
elementId),
            forall a. a -> Maybe a
Prelude.Just (Key
"ElementType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= LayoutElementType
elementType),
            forall a. a -> Maybe a
Prelude.Just (Key
"XAxisLocation" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
xAxisLocation),
            forall a. a -> Maybe a
Prelude.Just (Key
"YAxisLocation" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
yAxisLocation),
            forall a. a -> Maybe a
Prelude.Just (Key
"Width" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
width),
            forall a. a -> Maybe a
Prelude.Just (Key
"Height" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
height)
          ]
      )