Îõ³h*\Wè¶      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij k l m n o p q r s t u v w x y z { | } ~  €  ‚ ƒ „ … † ‡ ˆ ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ0.3.1Visual orientation config.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredàFULE%Layout orientation, used in multiple  s.Padding config.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-Inferred,FULE!Visual padding around an element.FULE+Padding to use; see parameters for details.FULEDon't use any padding.FULEHorizontal padding to use.FULEVertical padding to use.Content size config.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-Inferred¿FULEÇThe size that the sized portion of a container should have; see the  container for an example use.FULE4Use a set size for the sized portion of a container. FULEÊUse the inherent size of the content for the sized portion of a container.  Common configuration types.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredJ   Safe-Inferredy   Safe-Inferred¿Low-level layout functionality.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredZ FULEA 2Å that has been enlivened and can have its Guides queried or moved.!FULEÁThe type of constraint one Guide should have relative to another."FULE=Constrain a Guide to be always less-than or equal-to another.#FULEÀConstrain a Guide to be always greater-than or equal-to another.$FULE'The Guide to constrain the movement of.%FULE6The reference Guide to constrain movement relative to.&FULE.The specification of a Guide to be added to a 2. A Guide may be added:)at an absolute position within the designârelative to a reference Guide within the design with a plastic dependencey upon the referenceÜrelative to two reference Guides within the design with an elastic dependency upon both9See each constructor and its fields for more information.'FULE3Add a new Guide at an absolute position within the Layout.(FULE?Add a new Guide with a plastic dependence on a reference Guide.)FULEÍAdd a new Guide between two other Guides with an elastic dependency on them: Whenever one of the reference Guides moves the dependent Guide will be moved to remain positioned relatively between them.The Double2 arguments of the pairs below should sum to equal 1.0; this will not be checked.*FULE.The position the new Guide should have in the Layout". Note this could be either an x or y< position, the axis doesn't matter for the specification.+FULEÈThe offset from the reference Guide the new dependent Guide should have.,FULEThe ID of the reference Guide.-FULEÑThe type of dependency the dependent Guide should have on the reference Guide..FULE4The type of a plastic dependency between two Guides./FULE’Specifies that changes to the dependent Guide do not affect the reference Guide, but changes to the reference propagate to the dependent Guide.0FULEÈSpecifies that changes to either Guide are applied to the other as well.1FULEAn identifier for a Guide in a   or 2.2FULEA  . that is still under construction. Use the 6 function to turn a  LayoutDesign into an elivened Layout.3FULE Create a new 2.4FULEAdd a new Guide to a 2 according to the given &.6Returns an ID for the new Guide along with an updated 2.5FULEÛConstrain the movement of one Guide relative to another. (Still slightly experimental.)Important Notes:&Never constrain a Guide against itselfA Guide should be used  only onceÅ as the constrainee (first argument) for a given constraint-type)The above conditions will not be checked!‰If a guide depends on multiple other guides that are simultaneously affected by constraints, things may go a bit wonky, just sayin'.6FULECreate an enlivened   from a 2.7FULE Transform a   back into a 2.8FULE%Get the position of a Guide within a  .9FULE-Get the position of multiple Guides within a  .:FULEMove a Guide within a  .;FULEMove multiple Guides within a  .)FULEøA reference Guide and how close the dependent Guide should be to it relative to the other reference, as a percentage.FULEþAnother reference Guide and how close the dependent Guide should be to it relative to the first reference, as a percentage.:FULEThe Guide to move.FULE.The movement to apply to the Guide -- a delta.;FULE:A list of Guides with movements (deltas) to apply to them.231./0&'()*+,-4!"#$%5 6789:;231./0&'()*+,-4!"#$%5 6789:;The  Component typeclass(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-Inferred9ÂÄÅÆ HFULEÄA typeclass for retrieving Guides representing a bounding rectangle.IFULE:Retrieves the bounding Guides for a type in the order: top, left, right, bottom.JFULEÔA collection of Guides representing the bounding rectangle of a visual component.LFULEThe Guide representing the top edge of the bounding rectangle.MFULEThe Guide representing the left edge of the bounding rectangle.NFULEThe Guide representing the right edge of the bounding rectangle.OFULEThe Guide representing the bottom edge of the bounding rectangle.PFULEAnother Bounds" which may cause this one to clip.QFULE°A convenience type-wrapper representing the rendering group a component is associated with. Rendering groups are tracked when multiple components overlap (in the z-axis) or are part of containers which overlap. (They are not used internally but are tracked as a convenience for the consumer.)RFULE Safe-Inferred!kdFULE!An operation that will produce a 2% and a list of components of type k in the monad m.eFULE Internal.fFULERun a d to create a 2% and a list of components of type k.gFULEAdd a Guide to the 2.hFULEAdd a Guide constraint to the 2.iFULE-Get the next available render group from the d1 state and advance to the next one internally.defghidefghi The  Container typeclass.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredÂÃÄÅÆ$ejFULE/A typeclass for laying-out a container of type c that holds content of type k.You'll need to have the FlexibleInstances and MultiParamTypeClassesÞ language extensions enabled to use this and you may wish to have your instance use the {-# OVERLAPS #-} or {-# OVERLAPPING #-} pragmas.kFULEGet the minimum width' required for display of the container c.lFULEGet the minimum height' required for display of the container c.mFULEAdd the container c and its contents k to a .jklmjklm The Window- Container and layout construction functions.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredÃ*oFULE'The base container of any (non-custom)  õ representing the window in the encompassing GUI framework. It is the only container that can be used with the s and r functions to build a Layout.pFULE Type of a function to produce a W to adjust the  Ý in response to a change in the size of the window in the encompassing GUI framework. The  ComponentÍ should use the Guides passed as arguments to this function to update the Layout.qFULE Create a o.rFULEBuild a layout for a o in the specified monad m.sFULEBuild a layout for a o in the ¶ monad.pFULEThe Guide to use to adjust the width of the ÷ in response to a change in the window size. Adjustments should be made using the delta of the old and new sizes.FULEThe Guide to use to adjust the height of the ÷ in response to a change in the window size. Adjustments should be made using the delta of the old and new sizes.qFULE#The width and height of the window.FULEA function to construct a WØ for reacting to changes in the size of the window in the encompassing GUI framework.FULEThe content of the window.opqrsopqrs The  Unreckoned Container.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredÂÄÅÆ-ltFULEA container complementary to   : whereas SizedË specifies a size for content which may or may not already have one,  Unreckoned removes– size associated with content as it is reckoned in the layout. This allows for content to overflow its bounds as far as the layout is concerned.The J in the R for a W which is  Unreckoned+ will match the overflowing size of the  ComponentÕ even though the size was not taken into account during the layout process itself.uFULE)Elide the horizontal size of the content.vFULE&Elide the verital size of the content.wFULE,Elide all sizes associated with the content.tuvwtuvw The Sized Container.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredÂÄÅÆ/öyFULEËA container which specifies or overrides the size of content in the layout.zFULE3Add or override the horizontal size of the content.{FULE1Add or override the vertical size of the content.|FULE;Add or override the size of the content in both dimensions.zFULE"The width the content should have.FULE The content.{FULE#The height the content should have.FULE The content.|FULE-The width and height the content should have.FULE The content.yz{|yz{| The  Positioned Container.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredÂÄÅÆ4w ~FULEÒA container for positioning content within a larger container in one of nine positions relative to the parent. Relative positioning will adjust to keep up with changes to the size of the parent container.FULEPosition content in the top-left corner of its parent container.€FULE&Position content in the middle of the top side of its parent container.FULEPosition content in the  top-right corner of its parent container.‚FULE&Position content in the middle of the left side of its parent container.ƒFULE Safe-InferredÂÄÅÆ5 ‰FULE,A container with padding around the content.ŠFULE3Create a container with padding around the content.‰Š‰Š!Wrapper for heterogenous content.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredÂÄÅÆÊÝ:gŒFULELike  but run in the ¶ monad.FULE‡A container for heterogenous items. This container lets items of different types be used in the same aggregating container, like , , or . When using ItemM you'll likely need to:Use the  .https://wiki.haskell.org/Scoped_type_variablesScopedTypeVariables2 language extension and explicitly specify a forall mÅ in your function declaration (if a type-variable is being used),Explicitly specify the type of your list of ItemMÏ in the call to the aggregating container and wrap the list in parentheses For example: ñ{-# LANGUAGE ScopedTypeVariables #-} import FULE ... someFn :: forall m => m (ArrayedM m Widget) someFn = return $ arrayedHoriz noPadding ([item someWidget , item someContainer , item someOtherWidget ]::[ItemM m Widget]) 1https://wiki.haskell.org/Heterogenous_collections#Reference: Heterogenous CollectionsŽFULE Create an  with a heterogenous item.ŒŽŒŽThe Layered Container.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredÂÄÅÆ<éFULELike ‘ but run in the ¶ monad.‘FULE&This container layers multiple visual ·s within the same bounding rectangle, one on top of the other. Z-ordering is not really taken into account since that depends on how you are using the layout output, but the ItemM"s will appear in the output of  5 in the same order in which they're passed to the ’ function.’FULELayer %s within the same bounding rectangle.‘’‘’The Grid Container.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredÂÄÅÆ@%”FULELike • but run in the ¶ monad.•FULE!A two-dimensional grid of visual s, evenly spaced.–FULE Create a • of s.–FULE#The number of rows and columns the • should have.FULEThe s to put in the •.Placement of the ¦s will start with the top-left position of the grid and proceed to the right, wrapping around to the next row when the end of the previous row has been reached.¼If the number of elements in this list does not meet or exceeds the number of grid locations available, then up-to the number of grid locations will be filled, but no more than that.•”–•”–The Divided Container.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredÂÄÅÆJ$ ˜FULE¨A container divided (horizontally or vertically) into two parts with one of the parts having a set size (height or width) and the other part resizing dynamically.²When configured to be resizable, the resize bar's size is not included in the size of the sized content during layout but is treated as an additional size to be considered.™FULE”A specification of whether the sized portion of the container should be resizable and how the resize bar, if any, should be sized and controlled.šFULE Type of a function to produce a WÚ for controlling the resize bar, thus leaving the mechanics and presentation up to you.›FULEÓUse a dynamic sizing, with a resize bar, for the sized portion of the container.œFULE9Use a static size for the sized portion of the container.FULE Create a ˜9 container with the top portion having a particular size.žFULE Create a ˜: container with the left portion having a particular size.ŸFULE Create a ˜; container with the right portion having a particular size. FULE Create a ˜< container with the bottom portion having a particular size.šFULE%The orientation of the resize bar; a  Horizontalê orientation would call for vertical movement, so should be paired with watching for changes in the y axis, and likewise with Vertical and the x axis.FULEäA Guide associated with the resize bar that should be updated with a delta when the bar is moved.FULE,The bar component to be added to the layout.›FULEA function to generate a  Component to use for the resize bar.FULE The thickness of the resize bar  Component in the direction of travel.FULEThe size of the sized content.FULEThe dynamics of the Divided container.FULEThe sized content.FULEThe dynamic content.žFULEThe size of the sized content.FULEThe dynamics of the Divided container.FULEThe sized content.FULEThe dynamic content.ŸFULEThe size of the sized content.FULEThe dynamics of the Divided container.FULEThe sized content.FULEThe dynamic content. FULEThe size of the sized content.FULEThe dynamics of the Divided container.FULEThe sized content.FULEThe dynamic content. ˜š™›œžŸ  ˜š™›œžŸ The Clipped Container.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredÂÄÅÆK÷¢FULEìA container the content of which should be clipped on overflow. Clipping bounds are specified as part of J of contained Ws.ÉIt is up to you the consumer to implement the actual clipping of content.£FULE,Create a container which clips any overflow.¢£¢£The Arrayed Container.(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-Inferred-ÂÄÅÆPC¥FULELike ¦ but run in the ¶ monad.¦FULE,An array (horizontal or vertical) of visual †s in a layout. Each item will occupy a different amount of space in the array; if you wish each item to be evenly spaced, use a ! instead.§FULEArray *s horizontally with the specified padding.‰Padding is added between the elements and around the perimeter of the array; the horizontal padding is added once between elements, and the same padding is used before and after the array -- thus the intra-element padding is not double the outside padding.¨FULEArray (s vertically with the specified padding.‡Padding is added between the elements and around the perimeter of the array; the vertical padding is added once between elements, and the same padding is used before and after the array -- thus the intra-element padding is not double the outside padding.¦¥§¨¦¥§¨The Reactor and Reactor' types and the Reaction typeclass.(c) Paul Schnapp, 2024BSD3%Paul Schnapp  Safe-Inferred)*ÂÄÅÆV\ªFULEöA container for heterogeneous types which is strict in its contents. The contents can be interacted with using the ¬ typeclass. In addition to implementing the  Component and Reaction typeclasses like the « type, this type implements the · typeclass from Control.DeepSeq- so evaluation of its contents can be forced.«FULEÖA container for heterogeneous types. The contents can be interacted with using the ¬ typeclass.¬FULE4An interface for interacting with the contents of a Reactor:The r: type-parameter is the reacting type (the data inside the Reactor).The iË type-parameter is the type of input the reaction will accept in the  addReactant method.The ogadtÕ type-parameter is a higher-order type used to specify what type of output the  getProductÍ method should produce. You'll likely want to use a GADT for this type.IMPORTANT NOTE:› when implementing these methods you'll need a catchall case for any input or output cases you're not handling, otherwise you'll get a runtime error!­FULE'Add a reactant (input) to the reaction.®FULE)Get a product (output) from the reaction.¯FULE Construct a Reactor.°FULE Construct a Reactor'.¬®­«¯ª°¬®­«¯ª°The full library (import this!)(c) Paul Schnapp, 2023BSD3%Paul Schnapp  Safe-InferredWúJKLMNOPWXYRSTUVQHIZjklm¥¦§¨¢£ ˜š™œ›žŸ ”•–ŒŽ‘’‰Š~€‚ƒ„…†‡yz{|tuvwopqrs 21./0&'()*+,-!"#$%6345789:;defghi«¬®­ª¯°" Safe-InferredWÓ¸¹º»¼½¾¿À#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkklmnopqrrstuvwxyz{|}~€‚ƒ„ …†‡  ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” •  – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤¥¦§¨©ª«¬­®!¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒ"Ó"Ô"Õ"Ö"×"Ø"Ù"ÚÛ!FULE-0.3.1-BRdt9StNS834mW3BdeQaWK!FULE.Container.Config.OrientationFULE.Container.Config.Padding"FULE.Container.Config.SizedContentFULE.Internal.SparseFULE.Internal.Util FULE.LayoutFULE.Component FULE.LayoutOpFULE.ContainerFULE.Container.WindowFULE.Container.UnreckonedFULE.Container.SizedFULE.Container.PositionedFULE.Container.PaddedFULE.Container.ItemFULE.Container.LayeredFULE.Container.GridFULE.Container.DividedFULE.Container.ClippedFULE.Container.Arrayed FULE.ReactorFULE ContainerDividedFULE.Container.Config LayoutDesignLayoutSizedArrayedMGridMLayeredM runLayoutOpGrid Paths_FULE Orientation HorizontalVertical$fNFDataOrientationPaddingpadding noPaddingSizedContentSizesizedTosizedToContentsMatrixPosemptyeyematrixdimsexpandTogetsetdelcountaddsubmulstarfilter$fFunctorMatrix $fShowMatrix$fNFDataMatrix collapseTo getMaxSize getTotalSizeGuideConstraintLTEGTE constrainedOf referenceOfGuideSpecificationAbsoluteRelativeBetween positionOfoffsetOf dependencyOfdependencyTypeOfPlasticDependencyType Asymmetric SymmetricGuideIDemptyLayoutDesignaddGuideaddGuideConstraintbuilddesigngetGuide getGuides reactToChangereactToChanges$fNFDataLayoutDesign$fNFDataGuideID $fShowLayout$fNFDataLayout$fEqGuideConstraint$fShowGuideConstraint$fEqPlasticDependencyType$fShowPlasticDependencyType $fEqGuideID $fOrdGuideID $fReadGuideID $fShowGuideIDHasBoundingGuidesboundingGuidesForBoundstopOfleftOfrightOfbottomOf clippingOf RenderGroup ComponentInfoboundsOf componentOf renderGroupOf Component requiredWidthrequiredHeightboundingGuidesInCSSOrderFor $fComponentkm$fNFDataBounds$fNFDataComponentInfo $fHasBoundingGuidesComponentInfo$fHasBoundingGuidesBounds$fFunctorComponentInfo$fShowComponentInfo $fReadBounds $fShowBoundsLayoutOp LayoutOpStateaddGuideToLayoutaddGuideConstraintToLayoutnextRenderGroupminWidth minHeight addToLayout$fContainerkkmWindowWindowAdjustorGenwindowlayoutMlayout UnreckonedunreckonedHorizunreckonedVert unreckoned$fContainerUnreckonedkm sizedHoriz sizedVertsized$fContainerSizedkm PositionedtopLeft topMiddletopRight middleLeftcentered middleRight bottomLeft bottomMiddle bottomRight$fContainerPositionedkmPaddedpadded$fContainerPaddedkmItemItemMitem$fContainerItemMkmLayeredlayered$fContainerLayeredMkmgrid$fContainerGridMkmDynamics BarControlGendynamicstaticsizedTop sizedLeft sizedRight sizedBottom$fContainerDividedbmClippedclipped$fContainerClippedkmArrayed arrayedHoriz arrayedVert$fContainerArrayedMkmReactor'ReactorReaction addReactant getProductreactorreactor'$fReactionReactoriogadt$fComponentReactorm$fReactionReactor'iogadt$fNFDataReactor'$fComponentReactor'mbaseData.Functor.IdentityIdentitydeepseq-1.4.8.1Control.DeepSeqNFDataversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDirgetDataFileName getSysconfDir