diff --git a/Classes.html b/Classes.html new file mode 100644 index 000000000..bd209a22f --- /dev/null +++ b/Classes.html @@ -0,0 +1,686 @@ + + + + Classes Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Classes

+

The following classes are available globally.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + FocusTrigger + +
    +
    +
    +
    +
    +
    +

    A trigger for focus and blur actions.

    + +

    This type is meant to be used in conjunction with FocusState; you will usually not create +it directly. For information about adding focus support to a custom element, see FocusBinding.

    + +

    Triggers allow imperative actions to be invoked on backing views, by creating a trigger in a +declarative model before the view is realized, late-binding the actions to a backing view after +that view has been realized, and then invoking the action on the trigger later in response to +some other event.

    +

    See Also

    + +

    FocusBinding

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class FocusTrigger
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Classes/BlueprintView.html b/Classes/BlueprintView.html new file mode 100644 index 000000000..4f0f78f80 --- /dev/null +++ b/Classes/BlueprintView.html @@ -0,0 +1,1234 @@ + + + + BlueprintView Class Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

BlueprintView

+
+
+ +
public final class BlueprintView : UIView
+ +
+
+

A view that is responsible for displaying an Element hierarchy.

+ +

A view controller that renders content via Blueprint might look something +like this:

+
final class HelloWorldViewController: UIViewController {
+
+   private var blueprintView = BlueprintView(element: nil)
+
+   override func viewDidLoad() {
+       super.viewDidLoad()
+
+       let rootElement = Label(text: "Hello, world!")
+       blueprintView.element = rootElement
+       view.addSubview(blueprintView)
+    }
+
+    override func viewDidLayoutSubviews() {
+        super.viewDidLayoutSubviews()
+        blueprintView.frame = view.bounds
+    }
+
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + environment + +
    +
    +
    +
    +
    +
    +

    A base environment used when laying out and rendering the element tree.

    + +

    Some keys will be overridden with the traits from the view itself. Eg, windowSize, safeAreaInsets, etc.

    + +

    If this blueprint view is within another blueprint view, the environment of the parent view +will be inherited by this view if automaticallyInheritsEnvironmentFromContainingBlueprintViews +is enabled. In the case of matching keys in both the inherited environment and the provided +environment, the values from this environment will take priority over the inherited environment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var environment: Environment { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    If true, then Blueprint will automatically inherit the Environment from the nearest +parent BlueprintView in the view hierarchy.

    + +

    If false, then only the values from environment will be used to +seed the environment passed to the element hierarchy.

    + +

    This property is recursive – if the nearest parent BlueprintView also sets this property to +true, then you will inherit the Environment from that view’s parent BlueprintView, and so on.

    + +

    Defaults to true.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var automaticallyInheritsEnvironmentFromContainingBlueprintViews: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    +

    The root element that is displayed within the view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var element: Element? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bounds + +
    +
    +
    +
    +
    +
    +

    We need to invalidateIntrinsicContentSize when bound.size changes for Auto Layout to work correctly.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var bounds: CGRect { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutMode + +
    +
    +
    +
    +
    +
    +

    An optional explicit layout mode for this view. If nil, this view will inherit the layout +mode of its nearest ancestor or use default if it has no ancestor.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutMode: LayoutMode? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    An optional name to help identify this view

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var name: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + metricsDelegate + +
    +
    +
    +
    +
    +
    +

    Provides performance metrics about the duration of layouts, updates, etc.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var metricsDelegate: BlueprintViewMetricsDelegate?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Instantiates a view with the given element

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public required init(element: Element?, environment: Environment = .empty)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + element + + +
    +

    The root element that will be displayed in the view.

    +
    +
    + + environment + + +
    +

    A base environment to render elements with. Defaults to .empty.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(frame:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public convenience override init(frame: CGRect)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sizeThatFits(_:) + +
    +
    +
    +
    +
    +
    +

    Measures the size needed to display the view within the given constraining size, +by measuring the current element of the BlueprintView.

    + +

    If you would like to not constrain the measurement in a given axis, +pass 0.0 or .greatestFiniteMagnitude for that axis, eg:

    +
    // Measures with a width of 100, and no height constraint.
    +blueprintView.sizeThatFits(CGSize(width: 100.0, height: 0.0))
    +
    +// Measures with a height of 100, and no width constraint.
    +blueprintView.sizeThatFits(CGSize(width: 0.0, height: 100.0))
    +
    +// Measures unconstrained in both axes.
    +blueprintView.sizeThatFits(.zero)
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func sizeThatFits(_ fittingSize: CGSize) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sizeThatFits(_:) + +
    +
    +
    +
    +
    +
    +

    Measures the size needed to display the view within the given SizeConstraint. +by measuring the current element of the BlueprintView.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sizeThatFits(_ constraint: SizeConstraint) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Measures the size needed to display the view within then given constraining size, +by measuring the current element of the BlueprintView.

    + +

    If you would like to not constrain the measurement in a given axis, +pass 0.0 or .greatestFiniteMagnitude for that axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func systemLayoutSizeFitting(
    +    _ targetSize: CGSize
    +) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Measures the size needed to display the view within then given constraining size, +by measuring the current element of the BlueprintView.

    + +

    If you would like to not constrain the measurement in a given axis, +pass 0.0 or .greatestFiniteMagnitude for that axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func systemLayoutSizeFitting(
    +    _ targetSize: CGSize,
    +    withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority,
    +    verticalFittingPriority: UILayoutPriority
    +) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + intrinsicContentSize + +
    +
    +
    +
    +
    +
    +

    For us, this is the same as sizeThatFits, since blueprint does not +contain the same concept of constraints as Autolayout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var intrinsicContentSize: CGSize { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var semanticContentAttribute: UISemanticContentAttribute { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func safeAreaInsetsDidChange()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutSubviews() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func layoutSubviews()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + didMoveToWindow() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func didMoveToWindow()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Classes/FocusTrigger.html b/Classes/FocusTrigger.html new file mode 100644 index 000000000..1138444ab --- /dev/null +++ b/Classes/FocusTrigger.html @@ -0,0 +1,800 @@ + + + + FocusTrigger Class Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FocusTrigger

+
+
+ +
public final class FocusTrigger
+ +
+
+

A trigger for focus and blur actions.

+ +

This type is meant to be used in conjunction with FocusState; you will usually not create +it directly. For information about adding focus support to a custom element, see FocusBinding.

+ +

Triggers allow imperative actions to be invoked on backing views, by creating a trigger in a +declarative model before the view is realized, late-binding the actions to a backing view after +that view has been realized, and then invoking the action on the trigger later in response to +some other event.

+

See Also

+ +

FocusBinding

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Create a new trigger, not yet bound to any view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + focusAction + +
    +
    +
    +
    +
    +
    +

    The action to be invoked on focus, which will be set by a backing view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var focusAction: (() -> Void)?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + blurAction + +
    +
    +
    +
    +
    +
    +

    The action to be invoked on blur, which will be set by a backing view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var blurAction: (() -> Void)?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + focus() + +
    +
    +
    +
    +
    +
    +

    Focuses the backing view bound to this trigger.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func focus()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + blur() + +
    +
    +
    +
    +
    +
    +

    Blurs (removes focus from) the backing view bound to this trigger.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func blur()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Common Elements.html b/Common Elements.html new file mode 100644 index 000000000..7195c6132 --- /dev/null +++ b/Common Elements.html @@ -0,0 +1,1523 @@ + + + + Common Elements Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Common Elements

+ +
+
+ +
+
+
+
    +
  • +
    + + + + AccessibilityBlocker + +
    +
    +
    +
    +
    +
    +

    Blocks all accessibility on the element, so that it is +is no longer an accessibility element, and its children are +hidden from the accessibility system.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AccessibilityBlocker : Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Acts as an accessibility container for any accessible subviews.

    + +

    Accessible subviews are found using the following algorithm:

    + +

    Recurse subviews until a view is found that either

    + +
      +
    • hasisAccessibilityElement set to true or
    • +
    + +

    If an accessibility element is found, we add it to the accessibilityElements +and terminate the search down that branch. If a container is found, +the elements returned from the container are added to the accessibilityElements +and the search down that branch is also terminated.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AccessibilityContainer : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AccessibilityElement + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AccessibilityElement : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AdaptedEnvironment + +
    +
    +
    +
    +
    +
    +

    Wraps an element tree with a modified environment.

    + +

    By specifying environmental values with this element, all child elements nested +will automatically inherit those values automatically. Values can be changed +anywhere in a sub-tree by inserting another AdaptedEnvironment element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AdaptedEnvironment : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EnvironmentReader + +
    +
    +
    +
    +
    +
    +

    An element that dynamically builds its content based on the environment.

    + +

    Use this element to build elements whose contents may change depending on the Environment.

    +

    Example

    +
    EnvironmentReader { environment -> Element in
    +    MyElement(
    +        foo: environment.foo
    +    )
    +}
    +
    +
    +

    Seealso

    + ProxyElement + +
    +

    Seealso

    + Environment + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct EnvironmentReader : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Aligned + +
    +
    +
    +
    +
    +
    +

    Aligns a content element within itself. The vertical and horizontal alignment may be set independently.

    + +

    When using alignment mode .fill, the content is scaled to the width or height of the Aligned element.

    + +

    For other modes, the size of the content element is determined by calling measure(in:) +on the content element – even if that size is larger than the wrapping element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Aligned : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AttributedLabel + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AttributedLabel : Element, Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Box + +
    +
    +
    +
    +
    +
    +

    A simple element that wraps a child element and adds visual styling including +background color.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Box : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Button + +
    +
    +
    +
    +
    +
    +

    An element that wraps a child element in a button that mimics a UIButton with the .system style. That is, when +highlighted (or disabled), it fades its contents to partial alpha.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Button : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Centered + +
    +
    +
    +
    +
    +
    +

    Centers a content element within itself.

    + +

    The size of the content element is determined by calling measure(in:) on +the content element – even if that size is larger than the wrapping Centered +element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Centered : ProxyElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Column + +
    +
    +
    +
    +
    +
    +

    Displays a list of items in a linear vertical layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Column : StackElement
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Constrains the size of the content element to an aspect ratio.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ConstrainedAspectRatio : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ConstrainedSize + +
    +
    +
    +
    +
    +
    +

    Constrains the measured size of the contained element in the ranges specified by the width and height properties.

    + +

    There are several constraint types available for each axis. See ConstrainedSize.Constraint for a full list and in-depth +descriptions of each.

    +

    Notes

    + +

    An important note is that the constraints of ConstrainedSize are authoritative during measurement. For example, +if your ConstrainedSize specifies .atLeast(300) for width, and the ConstrainedSize is asked to measure within +a SizeConstraint that is at most 100 points wide, the returned measurement will still be 300 points. The same goes for the +height of the ConstrainedSize.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ConstrainedSize : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Empty + +
    +
    +
    +
    +
    +
    +

    An empty Element which has no size and draws no content.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Empty : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EqualStack + +
    +
    +
    +
    +
    +
    +

    An element that sizes its children equally, stacking them in the primary axis according to +the specified direction and spacing them according to the specified spacing. In the +secondary axis, children are justified to fill the space of the largest child.

    +
    +

    Note

    + A stack measures itself by determining its largest child in each axis, and + in the case of the primary axis, multiplying by children.count (accounting + for spacing as necessary). + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct EqualStack : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + GeometryReader + +
    +
    +
    +
    +
    +
    +

    An element that dynamically builds its content based on the available space.

    + +

    Use this element to build elements whose contents may change responsively to +different layouts.

    +

    Example

    +
    GeometryReader { (geometry) -> Element in
    +    let image: UIImage
    +    switch geometry.constraint.width.maximum {
    +    case ..<100:
    +        image = UIImage(named: "small")!
    +    case 100..<500:
    +        image = UIImage(named: "medium")!
    +    default:
    +        image = UIImage(named: "large")!
    +    }
    +    return Image(image: image)
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct GeometryReader : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Image + +
    +
    +
    +
    +
    +
    +

    Displays an image within an element hierarchy.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Image : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Inset + +
    +
    +
    +
    +
    +
    +

    Insets a content element within a layout.

    + +

    Commonly used to add padding around another element when displayed within a container.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Inset : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Label + +
    +
    +
    +
    +
    +
    +

    Displays text content.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Label : ProxyElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Overlay + +
    +
    +
    +
    +
    +
    +

    Stretches all of its child elements to fill the layout area, stacked on top of each other.

    + +

    During a layout pass, measurement is calculated as the max size (in both x and y dimensions) +produced by measuring all of the child elements.

    + +

    View-backed descendants will be z-ordered from back to front in the order of this element’s +children.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Overlay : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Row + +
    +
    +
    +
    +
    +
    +

    Displays a list of items in a linear horizontal layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Row : StackElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Rule + +
    +
    +
    +
    +
    +
    +

    A solid line, parallel to the x or y axis, with a fixed thickness but unconstrained in length, +suitable for use as a separator.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Rule : ProxyElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ScrollView + +
    +
    +
    +
    +
    +
    +

    Wraps a content element and makes it scrollable.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ScrollView : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SegmentedControl + +
    +
    +
    +
    +
    +
    +

    Allows users to pick from an array of options.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct SegmentedControl : Element, Measurable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Spacer + +
    +
    +
    +
    +
    +
    +

    An element that does not display anything (it has neither children or a view).

    + +

    Spacer simply takes up a specified amount of space within a layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Spacer : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Tappable + +
    +
    +
    +
    +
    +
    +

    Wraps a content element and calls the provided closure when tapped.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Tappable : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TextField + +
    +
    +
    +
    +
    +
    +

    Displays a text field.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct TextField : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TransitionContainer + +
    +
    +
    +
    +
    +
    +

    Wraps a content element and adds transitions when the element appears, +disappears, or changes layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct TransitionContainer : Element
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Creating Custom Elements.html b/Creating Custom Elements.html new file mode 100644 index 000000000..23e934baf --- /dev/null +++ b/Creating Custom Elements.html @@ -0,0 +1,888 @@ + + + + Creating Custom Elements Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Creating Custom Elements

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Element + +
    +
    +
    +
    +
    +
    +

    Conforming types represent a rectangular content area in a two-dimensional +layout space.

    + +
    + +

    The ultimate purpose of an element is to provide visual content. This can be +done in two ways:

    + +
      +
    • By providing a view description (ViewDescription).

    • +
    • By providing child elements that will be displayed recursively within +the local coordinate space.

    • +
    + +
    + +

    A custom element might look something like this:

    +
    struct MyElement: Element {
    +
    +    var backgroundColor: UIColor = .red
    +
    +    // Returns a single child element.
    +    var content: ElementContent {
    +        return ElementContent(child: Label(text: "😂"))
    +    }
    +
    +    // Providing a view description means that this element will be
    +    // backed by a UIView instance when displayed in a `BlueprintView`.
    +    func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription? {
    +        return UIView.describe { config in
    +            config.bind(backgroundColor, to: \.backgroundColor)
    +        }
    +    }
    +
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ProxyElement + +
    +
    +
    +
    +
    +
    +

    Custom elements commonly use another element to actually display content. For example, a profile element might +display an image and a few labels inside a Column element. The ProxyElement protocol is provided to make that +task easier.

    + +

    Conforming types only need to implement elementRepresentation in order to generate an element that will be +displayed.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ProxyElement : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ElementContent + +
    +
    +
    +
    +
    +
    +

    Represents the content of an element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ElementContent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ViewDescription + +
    +
    +
    +
    +
    +
    +

    Contains a description of a UIView instance. A description includes +logic to handle all parts of a view lifecycle from instantiation onward.

    + +

    View descriptions include:

    + +
      +
    • The view’s class.
    • +
    • How an instance of the view should be instantiated.
    • +
    • How to update a view instance by setting properties appropriately.
    • +
    • Which subview of a view instance should be used as a contain for +additional subviews.
    • +
    • How to animate transitions for appearance, layout changes, and +disappearance.
    • +
    • Hooks to be called during lifecycle events.
    • +
    + +

    A view description does not contain a concrete view instance. It simply +contains functionality for creating, updating, and animating view instances.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ViewDescription
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutTransition + +
    +
    +
    +
    +
    +
    +

    The transition used when layout attributes change for a view during an +update cycle.

    + +

    ‘Inherited’ transitions: the ‘inherited’ transition is determined by searching up the tree (not literally, but +this is the resulting behavior). The nearest ancestor that defines an animation will be used, following this +logic:

    + +
      +
    • Ancestors with a layout transition of none will result in no inherited animation for their descendents.
    • +
    • Ancestors in the tree with a layout transition of inherited will be skipped, and the search will continue +up the tree.
    • +
    • Any ancestors in the tree with a layout transition of inheritedWithFallback will be used if they do not +themselves inherit a layout transition from one of their ancestors.
    • +
    • Ancestors with a layout transition of specific will always be used for their descendents inherited +animation.
    • +
    • If no ancestor is found that specifies a layout transition, but the containing BlueprintView has the element +property assigned from within a UIKit animation block, that animation will be used as the inherited animation.
    • +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LayoutTransition
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + VisibilityTransition + +
    +
    +
    +
    +
    +
    +

    The transition used when a view is inserted or removed during an update cycle.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct VisibilityTransition
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Displaying Elements.html b/Displaying Elements.html new file mode 100644 index 000000000..29435f7bf --- /dev/null +++ b/Displaying Elements.html @@ -0,0 +1,773 @@ + + + + Displaying Elements Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Displaying Elements

+ +
+
+ +
+
+
+
    +
  • +
    + + + + BlueprintView + +
    +
    +
    +
    +
    +
    +

    A view that is responsible for displaying an Element hierarchy.

    + +

    A view controller that renders content via Blueprint might look something +like this:

    +
    final class HelloWorldViewController: UIViewController {
    +
    +   private var blueprintView = BlueprintView(element: nil)
    +
    +   override func viewDidLoad() {
    +       super.viewDidLoad()
    +
    +       let rootElement = Label(text: "Hello, world!")
    +       blueprintView.element = rootElement
    +       view.addSubview(blueprintView)
    +    }
    +
    +    override func viewDidLayoutSubviews() {
    +        super.viewDidLayoutSubviews()
    +        blueprintView.frame = view.bounds
    +    }
    +
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class BlueprintView : UIView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ElementPreview + +
    +
    +
    +
    +
    +
    +

    A SwiftUI view which wraps a Blueprint element, which can be used to preview Blueprint elements +via Xcode’s preview functionality (enable via the Editor > Canvas menu).

    + +

    You can leverage ElementPreview by adding something like this to the bottom of the file which contains +your Blueprint element, then as you edit and work on your element, the live preview will update to show the +current state of your element:

    +
    
    +struct MyElement : Element {
    +   ...
    +}
    +
    +// Add this at the bottom of your element's source file.
    +
    +#if DEBUG && canImport(SwiftUI) && !arch(i386) && !arch(arm)
    +
    +import SwiftUI
    +
    +@available(iOS 13.0, *)
    +struct MyElement_Preview: PreviewProvider {
    +    static var previews: some View {
    +        ElementPreview {
    +            MyElement()
    +        }
    +    }
    +}
    +
    +#endif
    +
    +
    +

    Uhhh

    + +

    You’re probably asking… +Why the !arch(i386) check above? Turns out, a compiler bug! +SwiftUI is only available on 64 bit devices, but the canImport check erroneously +finds it when building to target iOS 10 devices. Until we drop iOS 10, this part of the check is also required.

    +

    Details

    + +

    It’s important that you keep the PreviewProvider in the same file as the element that you are editing.

    + +

    Why? Xcode uses a new feature called “Dynamic Replacement” to re-compile the source file you are editing, +and inject it back into the running app which drives the preview. This only works on the level of a single +file – if your preview and element live in separate files, Xcode needs to recompile your entire module +which will slow down preview updates greatly.

    + +

    You can learn more about Xcode previews here: https://nshipster.com/swiftui-previews/

    +

    Requirements

    + +

    You must be running Xcode 11 and Catalina to take advantage of live previews. +They do not work on Mojave. Your selected simulator must also be an iOS 13 device.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(iOS 13.0, *)
    +public struct ElementPreview : View
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums.html b/Enums.html new file mode 100644 index 000000000..bc3ce0f45 --- /dev/null +++ b/Enums.html @@ -0,0 +1,976 @@ + + + + Enumerations Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+ +
+
+
+
+ + +
+ +

Font +

+
+
+ +
+
+
+ + +
+ +

Color +

+
+
+ +
+
+
+ + +
+ +

Tracking +

+
+
+ +
+
+
+ + +
+ +

Underline +

+
+
+ +
+
+
+ + +
+ +

Paragraph style +

+
+
+ +
+
+
+ + +
+ +

Link +

+
+
+
    +
  • +
    + + + + LinkKey + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LinkKey : AttributedTextKey
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + BlueprintLogging + +
    +
    +
    +
    +
    +
    +

    Namespace for logging config.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum BlueprintLogging
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutMode + +
    +
    +
    +
    +
    +
    +

    Controls the layout system that Blueprint uses to lay out elements.

    + +

    Blueprint supports multiple layout systems. Each is expected to produce the same result, but +some may have different performance profiles or special requirements.

    + +

    You can change the layout system used by setting the layoutMode property, but +generally you should use the default option.

    + +

    Changing the default will cause all instances of BlueprintView to be invalidated, and re- +render their contents.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LayoutMode : Equatable
    +
    extension LayoutMode: CustomStringConvertible
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/BlueprintLogging.html b/Enums/BlueprintLogging.html new file mode 100644 index 000000000..d4539c7e2 --- /dev/null +++ b/Enums/BlueprintLogging.html @@ -0,0 +1,739 @@ + + + + BlueprintLogging Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

BlueprintLogging

+
+
+ +
public enum BlueprintLogging
+ +
+
+

Namespace for logging config.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Config + +
    +
    +
    +
    +
    +
    +

    Configuration for logging options

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Config
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + config + +
    +
    +
    +
    +
    +
    +

    Logging configuration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var config: Config
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    +

    If enabled, Blueprint will emit signpost logs. You can view these logs in Instruments to +aid in debugging or performance tuning.

    + +

    Signpost logging is disabled by default.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var isEnabled: Bool { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/BlueprintLogging/Config.html b/Enums/BlueprintLogging/Config.html new file mode 100644 index 000000000..c3d6e688b --- /dev/null +++ b/Enums/BlueprintLogging/Config.html @@ -0,0 +1,764 @@ + + + + Config Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Config

+
+
+ +
public struct Config
+ +
+
+

Configuration for logging options

+ +
+
+ +
+
+
+
    +
  • +
    + + + + recordElementMeasures + +
    +
    +
    +
    +
    +
    +

    When true, timing data will be logged when measuring each Element

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var recordElementMeasures: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(recordElementMeasures: Bool)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lite + +
    +
    +
    +
    +
    +
    +

    Logging configuration that will not record measurement data for all Elements. +This provides a reasonable balance between data collection and performance impact. +This is the default logging configuration.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let lite: BlueprintLogging.Config
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + verbose + +
    +
    +
    +
    +
    +
    +

    Logging configuration that includes measurement data. +This provides the most granular information, but has a noticeable impact on performance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let verbose: BlueprintLogging.Config
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/ColorKey.html b/Enums/ColorKey.html new file mode 100644 index 000000000..f9d9968df --- /dev/null +++ b/Enums/ColorKey.html @@ -0,0 +1,705 @@ + + + + ColorKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ColorKey

+
+
+ +
public enum ColorKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = UIColor
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/FontKey.html b/Enums/FontKey.html new file mode 100644 index 000000000..930a778ec --- /dev/null +++ b/Enums/FontKey.html @@ -0,0 +1,705 @@ + + + + FontKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FontKey

+
+
+ +
public enum FontKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = UIFont
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/LayoutMode.html b/Enums/LayoutMode.html new file mode 100644 index 000000000..b888b9f33 --- /dev/null +++ b/Enums/LayoutMode.html @@ -0,0 +1,826 @@ + + + + LayoutMode Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutMode

+
+
+ +
public enum LayoutMode : Equatable
+
extension LayoutMode: CustomStringConvertible
+ +
+
+

Controls the layout system that Blueprint uses to lay out elements.

+ +

Blueprint supports multiple layout systems. Each is expected to produce the same result, but +some may have different performance profiles or special requirements.

+ +

You can change the layout system used by setting the layoutMode property, but +generally you should use the default option.

+ +

Changing the default will cause all instances of BlueprintView to be invalidated, and re- +render their contents.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + default + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var `default`: `Self` { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + legacy + +
    +
    +
    +
    +
    +
    +

    The “standard” layout system.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case legacy
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + caffeinated(options:) + +
    +
    +
    +
    +
    +
    +

    A newer layout system with some optimizations made possible by ensuring elements adhere +to a certain contract for behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case caffeinated(options: LayoutOptions = .default)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + caffeinated + +
    +
    +
    +
    +
    +
    +

    A newer layout system with some optimizations made possible by ensuring elements adhere +to a certain contract for behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let caffeinated: LayoutMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    The name of the layout mode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var name: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/LayoutTransition.html b/Enums/LayoutTransition.html new file mode 100644 index 000000000..2896dd116 --- /dev/null +++ b/Enums/LayoutTransition.html @@ -0,0 +1,779 @@ + + + + LayoutTransition Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutTransition

+
+
+ +
public enum LayoutTransition
+ +
+
+

The transition used when layout attributes change for a view during an +update cycle.

+ +

‘Inherited’ transitions: the ‘inherited’ transition is determined by searching up the tree (not literally, but +this is the resulting behavior). The nearest ancestor that defines an animation will be used, following this +logic:

+ +
    +
  • Ancestors with a layout transition of none will result in no inherited animation for their descendents.
  • +
  • Ancestors in the tree with a layout transition of inherited will be skipped, and the search will continue +up the tree.
  • +
  • Any ancestors in the tree with a layout transition of inheritedWithFallback will be used if they do not +themselves inherit a layout transition from one of their ancestors.
  • +
  • Ancestors with a layout transition of specific will always be used for their descendents inherited +animation.
  • +
  • If no ancestor is found that specifies a layout transition, but the containing BlueprintView has the element +property assigned from within a UIKit animation block, that animation will be used as the inherited animation.
  • +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + none + +
    +
    +
    +
    +
    +
    +

    The view will never animate layout changes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case none
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + specific(_:) + +
    +
    +
    +
    +
    +
    +

    Layout changes will always animate with the given attributes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case specific(_: AnimationAttributes = .default)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inherited + +
    +
    +
    +
    +
    +
    +

    The view will only animate layout changes if an inherited transition exists.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case inherited
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The view will animate along with an inherited transition (if present) or the specified fallback attributes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case inheritedWithFallback(_: AnimationAttributes = .default)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/LinkKey.html b/Enums/LinkKey.html new file mode 100644 index 000000000..fcfa01ae3 --- /dev/null +++ b/Enums/LinkKey.html @@ -0,0 +1,705 @@ + + + + LinkKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LinkKey

+
+
+ +
public enum LinkKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = URL
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/ParagraphStyleKey.html b/Enums/ParagraphStyleKey.html new file mode 100644 index 000000000..f228059d5 --- /dev/null +++ b/Enums/ParagraphStyleKey.html @@ -0,0 +1,705 @@ + + + + ParagraphStyleKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ParagraphStyleKey

+
+
+ +
public enum ParagraphStyleKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = NSParagraphStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/TrackingKey.html b/Enums/TrackingKey.html new file mode 100644 index 000000000..1ba2df447 --- /dev/null +++ b/Enums/TrackingKey.html @@ -0,0 +1,705 @@ + + + + TrackingKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TrackingKey

+
+
+ +
public enum TrackingKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/UnderlineColorKey.html b/Enums/UnderlineColorKey.html new file mode 100644 index 000000000..f946c82f1 --- /dev/null +++ b/Enums/UnderlineColorKey.html @@ -0,0 +1,705 @@ + + + + UnderlineColorKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UnderlineColorKey

+
+
+ +
public enum UnderlineColorKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = UIColor
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Enums/UnderlineStyleKey.html b/Enums/UnderlineStyleKey.html new file mode 100644 index 000000000..69cf23a53 --- /dev/null +++ b/Enums/UnderlineStyleKey.html @@ -0,0 +1,705 @@ + + + + UnderlineStyleKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UnderlineStyleKey

+
+
+ +
public enum UnderlineStyleKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Environment.html b/Environment.html new file mode 100644 index 000000000..98271525c --- /dev/null +++ b/Environment.html @@ -0,0 +1,752 @@ + + + + Environment Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Environment

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Environment + +
    +
    +
    +
    +
    +
    +

    Environment is a container for values to be passed down an element tree.

    + +

    Environment values are not resolved until the tree is being rendered, so they do not need to be +explicitly passed to elements at the time they are created.

    + +

    Environment key-value pairs are strongly typed: keys are types conforming to the +EnvironmentKey protocol, and each key’s value is the type of that key’s +EnvironmentKey.Value associated value. Keys must provide a default value.

    +

    Example

    + +

    To set an environment value, so that it will cascade to child elements, use +AdaptedEnvironment. Here, every element in childElement will have access to someValue +via the key MyEnvironmentKey.

    +
    AdaptedEnvironment(
    +    key: MyEnvironmentKey.self,
    +    value: someValue,
    +    wrapping: childElement
    +)
    +
    + +

    To read an environment value, use EnvironmentReader. If this element were part of the child +element in the previous example, myValue would be set to someValue. If the key had not +been set in an ancestor element, the value would be MyEnvironmentKey.defaultValue.

    +
    struct MyElement: ProxyElement {
    +    var elementRepresentation: Element {
    +        return EnvironmentReader { environment -> Element in
    +            let myValue = environment[MyEnvironmentKey.self]
    +            return SomeElement(using: myValue)
    +        }
    +    }
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Environment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EnvironmentKey + +
    +
    +
    +
    +
    +
    +

    Types conforming to this protocol can be used as keys in an Environment.

    + +

    Using a type as the key allows us to strongly type each value, with the +key’s EnvironmentKey.Value associated value.

    +

    Example

    + +

    Usually a key is implemented with an uninhabited type, such an empty enum.

    +
    enum WidgetCountKey: EnvironmentKey {
    +    static let defaultValue: Int = 0
    +}
    +
    + +

    You can write a small extension on Environment to make it easier to use your key.

    +
    extension Environment {
    +    var widgetCount: Int {
    +        get { self[WidgetCountKey.self] }
    +        set { self[WidgetCountKey.self] = newValue }
    +    }
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol EnvironmentKey
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Extensions.html b/Extensions.html new file mode 100644 index 000000000..182d5362a --- /dev/null +++ b/Extensions.html @@ -0,0 +1,880 @@ + + + + Extensions Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Extensions

+

The following extensions are available globally.

+ +
+
+ +
+
+
+ +
+
+
+ + +
+ +

Extensions +

+
+
+
    +
  • +
    + + + + UIOffset + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension UIOffset: Hashable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Extensions/AXCustomContent.html b/Extensions/AXCustomContent.html new file mode 100644 index 000000000..0b5dbc50c --- /dev/null +++ b/Extensions/AXCustomContent.html @@ -0,0 +1,705 @@ + + + + AXCustomContent Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AXCustomContent

+
+
+ +
extension AXCustomContent
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public convenience init(_ content: AccessibilityElement.CustomContent)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public convenience init(label: String, value: String?, importance: AXCustomContent.Importance = .default)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Extensions/CGSize.html b/Extensions/CGSize.html new file mode 100644 index 000000000..2cf3624dd --- /dev/null +++ b/Extensions/CGSize.html @@ -0,0 +1,707 @@ + + + + CGSize Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CGSize

+
+
+ +
extension CGSize
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + infinity + +
    +
    +
    +
    +
    +
    +

    A size with infinity in both dimensions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let infinity: CGSize
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a size with infinite dimensions replaced by the values from the given replacement.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func replacingInfinity(with replacement: CGSize) -> CGSize
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Extensions/ElementBuilder.html b/Extensions/ElementBuilder.html new file mode 100644 index 000000000..c1847f420 --- /dev/null +++ b/Extensions/ElementBuilder.html @@ -0,0 +1,814 @@ + + + + ElementBuilder Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ElementBuilder

+
+
+ +
extension ElementBuilder
+
extension ElementBuilder where Child == Overlay.Child
+
extension ElementBuilder where Child == StackLayout.Child
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    +

    Allow an Element to be implicitly converted into Child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ element: Element) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    +

    Allow an Optional Element to be unwrapped and implicitly converted into Child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ child: Element?) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    +

    Allow Elements to be implicitly converted into Child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ elements: [Element]) -> Children
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Available where Child == Overlay.Child +

+
+
+
    +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ keyed: Keyed) -> Children
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Available where Child == StackLayout.Child +

+
+
+
    +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ keyed: Keyed) -> Children
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Extensions/FloatingPoint.html b/Extensions/FloatingPoint.html new file mode 100644 index 000000000..d0063e769 --- /dev/null +++ b/Extensions/FloatingPoint.html @@ -0,0 +1,808 @@ + + + + FloatingPoint Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FloatingPoint

+
+
+ +
extension FloatingPoint
+ +
+
+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Returns replacement if self.isInfinite is true, or self if self is finite.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func replacingInfinity(with replacement: Self) -> Self
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + round(_:by:) + +
    +
    +
    +
    +
    +
    +

    Rounds this value to the specified scale, where the scale is the number of rounding stops per integer.

    + +

    A rounding scale of 1.0 is standard integer rounding. +A rounding scale of 2.0 rounds to halves (0, 0.5, 1.0, 1.5, 2.0, 2.5., …). +A rounding scale of 3.0 rounds to thirds (0, 1/3, 2/3, 1.0, 4/3, 5/3, 2.0, …).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func round(_ rule: FloatingPointRoundingRule, by scale: Self)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + rule + + +
    +

    the rounding rule

    +
    +
    + + scale + + +
    +

    the rounding scale

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + rounded(_:by:) + +
    +
    +
    +
    +
    +
    +

    Returns this value rounded to the specified scale, where the scale is the number of rounding stops per integer.

    + +

    A rounding scale of 1.0 is standard integer rounding. +A rounding scale of 2.0 rounds to halves (0, 0.5, 1.0, 1.5, 2.0, 2.5., …). +A rounding scale of 3.0 rounds to thirds (0, 1/3, 2/3, 1.0, 4/3, 5/3, 2.0, …).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func rounded(_ rule: FloatingPointRoundingRule, by scale: Self) -> Self
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + rule + + +
    +

    the rounding rule

    +
    +
    + + scale + + +
    +

    the rounding scale

    +
    +
    +
    +
    +

    Return Value

    +

    The rounded value.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Extensions/PreviewDevice.html b/Extensions/PreviewDevice.html new file mode 100644 index 000000000..56cebf0c9 --- /dev/null +++ b/Extensions/PreviewDevice.html @@ -0,0 +1,1263 @@ + + + + PreviewDevice Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

PreviewDevice

+
+
+ +
extension PreviewDevice
+ +
+
+

The available devices to be used for previewing elements in an Xcode preview.

+ +

Via https://developer.apple.com/documentation/swiftui/securefield/3289399-previewdevice

+ +
+
+ +
+
+
+
    +
  • +
    + + + + iPhone7 + +
    +
    +
    +
    +
    +
    +

    iPhone 7

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhone7: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhone7Plus + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhone7Plus: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhone8 + +
    +
    +
    +
    +
    +
    +

    iPhone 8

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhone8: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhone8Plus + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhone8Plus: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneSE_1 + +
    +
    +
    +
    +
    +
    +

    iPhone SE

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneSE_1: PreviewDevice { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneSE_2 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneSE_2: PreviewDevice { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneX + +
    +
    +
    +
    +
    +
    +

    iPhone X

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneX: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneXs + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneXs: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneXsMax + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneXsMax: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneXr + +
    +
    +
    +
    +
    +
    +

    iPhone Xr

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneXr: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadMini_4 + +
    +
    +
    +
    +
    +
    +

    iPad Mini

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadMini_4: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadMini_5 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadMini_5: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadAir_2 + +
    +
    +
    +
    +
    +
    +

    iPad Air

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadAir_2: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadAir_3 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadAir_3: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPad_5 + +
    +
    +
    +
    +
    +
    +

    iPad

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPad_5: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPad_6 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPad_6: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_9_7 + +
    +
    +
    +
    +
    +
    +

    iPad Pro

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_9_7: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_10_5 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_10_5: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_11_1 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_11_1: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_11_2 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_11_2: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_12_9_1 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_12_9_1: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_12_9_2 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_12_9_2: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_12_9_3 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_12_9_3: PreviewDevice
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Extensions/UIAccessibilityTraits.html b/Extensions/UIAccessibilityTraits.html new file mode 100644 index 000000000..e0d376a01 --- /dev/null +++ b/Extensions/UIAccessibilityTraits.html @@ -0,0 +1,679 @@ + + + + UIAccessibilityTraits Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UIAccessibilityTraits

+
+
+ +
extension UIAccessibilityTraits
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/Extensions/UIOffset.html b/Extensions/UIOffset.html new file mode 100644 index 000000000..57dabc867 --- /dev/null +++ b/Extensions/UIOffset.html @@ -0,0 +1,679 @@ + + + + UIOffset Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UIOffset

+
+
+ +
extension UIOffset: Hashable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + hash(into:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hash(into hasher: inout Hasher)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols.html b/Protocols.html new file mode 100644 index 000000000..32a219cf8 --- /dev/null +++ b/Protocols.html @@ -0,0 +1,1209 @@ + + + + Protocols Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + AttributedTextKey + +
    +
    +
    +
    +
    +
    +

    Define AttributedText keys using this protocol. Keys must have an attribute name +and an associated type for the attribute.

    + +

    After defining a key, enable dynamic member access to it by extending TextAttributeContainer +with a property for getting and setting setting the value. This property should generally be optional, +since the text may not have that property defined.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol AttributedTextKey
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Provides performance information for blueprint layouts and updates.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol BlueprintViewMetricsDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + UIViewElement + +
    +
    +
    +
    +
    +
    +

    An element type which makes it easier to wrap an existing UIView instance that +provides its own sizing via sizeThatFits. An instance of the view is used for +sizing and measurement, so that you do not need to re-implement your own measurement.

    +

    Note

    + +

    The sizing and measurement prototype view is kept alive for the lifetime of the containing application. +Do not pass anything to the initializer of this type that you expect to be quickly released.

    +

    Example

    + +

    If you were implementing a very basic Switch element, your implementation would look something +like this:

    +
    struct Switch : UIViewElement
    +{
    +    var isOn : Bool
    +
    +    typealias UIViewType = UISwitch
    +
    +    func makeUIView() -> UISwitch {
    +        UISwitch()
    +    }
    +
    +    func updateUIView(_ view: UISwitch, with context: UIViewElementContext) {
    +        view.isOn = self.isOn
    +    }
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol UIViewElement : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AlignmentID + +
    +
    +
    +
    +
    +
    +

    Types used to identify alignment guides.

    + +

    Types conforming to AlignmentID have a corresponding alignment guide value, +typically declared as a static constant property of HorizontalAlignment or +VerticalAlignment.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol AlignmentID
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ElementBuilderChild + +
    +
    +
    +
    +
    +
    +

    Defines a way for anElement to be implicitly converted into the conforming type (the child of a container). +In practice, this allows us to pass an Element directly into the result builder without manually converting to Child (i.e. Converting Element -> StackLayout.Child.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ElementBuilderChild
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Layout + +
    +
    +
    +
    +
    +
    +

    A type that defines the geometry of a collection of elements.

    + +

    You traditionally arrange views in your app’s user interface using built-in layout containers +like Row and Column. If you need more complex layout behavior, you can define a custom +layout container by creating a type that conforms to the Layout protocol and implementing +its required methods:

    + + + +

    You can define a basic layout type with only these two methods (see note below):

    +
    struct BasicLayout: Layout {
    +    func sizeThatFits(
    +        proposal: SizeConstraint,
    +        subelements: Subelements,
    +        cache: inout ()
    +    ) -> CGSize {
    +        // Calculate and return the size of the layout container.
    +    }
    +
    +    func placeSubelements(
    +        in size: CGSize,
    +        subelements: Subelements,
    +        cache: inout ()
    +    ) {
    +        // Tell each subelement where to appear.
    +    }
    +}
    +
    + +

    Add your layout to an element by passing it to the ElementContent initializer +init(layout:configure:). If your layout has parameters that come from the +element, pass them at initialization time. Use the configure block to add your element’s +children to the content.

    +
    struct BasicContainer: Element {
    +    var alignment: Alignment = .center
    +    var children: [Element]
    +
    +    var content: ElementContent {
    +        ElementContent(layout: BasicLayout(alignment: alignment)) { builder in
    +            for child in children {
    +                builder.add(element: child)
    +            }
    +        }
    +    }
    +
    +    func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription? {
    +        nil
    +    }
    +}
    +
    + +

    If your layout is specialized for laying out a single subelement, you can use the +SingleChildLayout protocol instead. It has similar methods, but is strongly typed for a +single subelement instead of a collection.

    +
    +

    Note

    + During the transition from Blueprint’s legacy layout system to Caffeinated Layout, the +Layout protocol is composed of two sets of layout methods: LegacyLayout and +CaffeinatedLayout. While this documentation focuses on the newer layout API, you must +currently implement both. Fortunately, the methods are similar, and you may be able to reuse +logic. + +
    +

    Interact with subelements through their proxies

    + +

    To perform layout, you need information about all of your container’s subelements, which are the +child elements that your container arranges. While your layout can’t interact directly with its +subelements, it can access a set of subelement proxies through the +Subelements collection that each protocol method receives as an input +parameter. That type is an alias for the LayoutSubelements collection type, which in turn +contains LayoutSubelement instances that are the subelement proxies.

    + +

    You can get information about each subelement from its proxy, like its dimensions and traits. +This enables you to measure subelements before you commit to placing them. You also assign a +position to each subelement by calling its proxy’s place(at:anchor:size:) +method. Call the method on each subelement from within your implementation of the layout’s +placeSubelements(in:subelements:environment:cache:) method.

    +

    Access layout traits

    + +

    Subelements may have traits that are specific to their container’s layout. The traits are of +the Layout protocol’s associated type Traits, and each subelement can have +a distinct Traits value assigned. You can set this in the configure block of +init(layout:configure:), when you call +add(traits:key:element:). If you do not specify a Traits type for +your layout, it defaults to the void type, ().

    + +

    Containers can choose to condition their behavior according to the traits of their subelements. +For example, the Row and Column types allocate space for their subelements based in part +on the grow and shrink priorities that you set on each child. Your layout container accesses the +traits for a subelement by calling traits(forLayoutType:) on the +LayoutSubelement proxy.

    +
    +

    Note

    + The Layout API, and its documentation, are modeled after SwiftUI’s +Layout, with major differences +noted. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol Layout : CaffeinatedLayout, LegacyLayout
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LegacyLayout + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol LegacyLayout
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + CaffeinatedLayout + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol CaffeinatedLayout
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SingleChildLayout + +
    +
    +
    +
    +
    +
    +

    A type that defines the geometry of a single element.

    + +

    For convenience, you can implement this protocol instead of Layout when building a container +that always has a single child element.

    + +

    For more information about writing custom layouts, see Layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol SingleChildLayout : CaffeinatedSingleChildLayout, LegacySingleChildLayout
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol LegacySingleChildLayout
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol CaffeinatedSingleChildLayout
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + StackElement + +
    +
    +
    +
    +
    +
    +

    Conforming types (Row and Column) act as StackLayout powered containers.

    + +

    This protocol should only be used by Row and Column elements (you should never add conformance to other custom +types).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol StackElement : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Measurable + +
    +
    +
    +
    +
    +
    +

    Conforming types can calculate the size that they require within a layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol Measurable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + NativeView + +
    +
    +
    +
    +
    +
    +

    Marker protocol used by generic extensions to native views (e.g. UIView).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol NativeView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + URLHandler + +
    +
    +
    +
    +
    +
    +

    Conform to this protocol to handle links tapped in an AttributedLabel.

    + +

    Use the URLHandlerEnvironmentKey or Environment.urlHandler property to override +the link handler in the environment.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol URLHandler
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/AlignmentID.html b/Protocols/AlignmentID.html new file mode 100644 index 000000000..d2c31d951 --- /dev/null +++ b/Protocols/AlignmentID.html @@ -0,0 +1,686 @@ + + + + AlignmentID Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AlignmentID

+
+
+ +
public protocol AlignmentID
+ +
+
+

Types used to identify alignment guides.

+ +

Types conforming to AlignmentID have a corresponding alignment guide value, +typically declared as a static constant property of HorizontalAlignment or +VerticalAlignment.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + defaultValue(in:) + +
    +
    +
    +
    +
    +
    +

    Returns the value of the corresponding guide, in context, when not +otherwise set in context.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func defaultValue(in context: ElementDimensions) -> CGFloat
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/AttributedTextKey.html b/Protocols/AttributedTextKey.html new file mode 100644 index 000000000..894faf8b2 --- /dev/null +++ b/Protocols/AttributedTextKey.html @@ -0,0 +1,711 @@ + + + + AttributedTextKey Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AttributedTextKey

+
+
+ +
public protocol AttributedTextKey
+ +
+
+

Define AttributedText keys using this protocol. Keys must have an attribute name +and an associated type for the attribute.

+ +

After defining a key, enable dynamic member access to it by extending TextAttributeContainer +with a property for getting and setting setting the value. This property should generally be optional, +since the text may not have that property defined.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype Value : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/BlueprintViewMetricsDelegate.html b/Protocols/BlueprintViewMetricsDelegate.html new file mode 100644 index 000000000..12b357020 --- /dev/null +++ b/Protocols/BlueprintViewMetricsDelegate.html @@ -0,0 +1,680 @@ + + + + BlueprintViewMetricsDelegate Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

BlueprintViewMetricsDelegate

+
+
+ +
public protocol BlueprintViewMetricsDelegate : AnyObject
+ +
+
+

Provides performance information for blueprint layouts and updates.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/Protocols/CaffeinatedLayout.html b/Protocols/CaffeinatedLayout.html new file mode 100644 index 000000000..4800bac7c --- /dev/null +++ b/Protocols/CaffeinatedLayout.html @@ -0,0 +1,1065 @@ + + + + CaffeinatedLayout Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CaffeinatedLayout

+
+
+ +
public protocol CaffeinatedLayout
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Subelements + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    typealias Subelements = LayoutSubelements
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Cache + +
    +
    +
    +
    +
    +
    +

    Cached values associated with the layout instance.

    + +

    If you create a cache for your custom layout, you can use a type alias to define this type +as your data storage type. Alternatively, you can refer to the data storage type directly in +all the places where you work with the cache.

    + +

    See makeCache(subelements:environment:) for more information.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype Cache = Void
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the size of the composite element, given a proposed size constraint and the +container’s subelements.

    + +

    Implement this method to tell your custom layout container’s parent how much space the +container needs for a set of subelements, given a size constraint. The parent might call +this method more than once during a layout pass with different proposed sizes to test the +flexibility of the container.

    + +

    In Blueprint, parents ultimately choose the size of their children, so the actual size that +this container is laid out in may not be a size that was returned from this method.

    +

    Sizing Rules

    + +

    For performance reasons, the layout engine may deduce the measurement of your container for +some constraint values without explicitly calling +sizeThatFits(proposal:subelements:environment:cache:). To ensure that the deduced value +is correct, your layout must follow some ground rules:

    + +
      +
    1. Given one fixed constraint axis, the element’s growth along the other axis should be +monotonic. That is, an element can grow when given a larger constraint, or shrink +when given a smaller constraint, but it should never shrink when given a larger +constraint. When growing on one axis, it is OK to shrink along the other axis, such as a +block of text that re-flows as the width changes.
    2. +
    3. For a constraint axis value a, if an element has a length b that is less than a on +that axis, then the element must return b for all constraint values between a and +b. In other words, growth must follow a stair-step pattern; elements that grow +continuously by calculating a fixed inset of the constraint or a percentage value of the +constraint are forbidden. For example, if an element returns 10 for a constraint of +20, then the element must return 10 for all values in the range [10, 20].
    4. +
    5. If your element has no intrinsic size along an axis, you can represent that in a couple +ways: + +
        +
      • You can return a fixed value representing the minimum size for your element. In this +approach, a containing element is usually responsible for stretching your element to +fill desired space.
      • +
      • You can return a size that entirely fills the constraint proposed. In this approach, +you must return .infinity when the constraint is +unconstrained. Otherwise, your behavior would be in violation +of rule #1.
      • +
    6. +
    + +

    If an element does not adhere to these rules, it may lay out in unexpected and unpredictable +ways.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func sizeThatFits(
    +    proposal: SizeConstraint,
    +    subelements: Subelements,
    +    environment: Environment,
    +    cache: inout Cache
    +) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + proposal + + +
    +

    A size constraint for the container. The container’s parent element that calls +this method might call the method more than once with different constraints to learn +more about the container’s flexibility before choosing a size for placement.

    +
    +
    + + subelements + + +
    +

    A collection of proxies that represent the elements that the container +arranges. You can use the proxies in the collection to get information about the +subelements as you determine how much space the container needs to display them.

    +
    +
    + + environment + + +
    +

    The environment of the container. You can use properties from the +environment when calculating the size of this container, as long as you adhere to the +sizing rules.

    +
    +
    + + cache + + +
    +

    Optional storage for calculated data that you can share among the methods of your +custom layout container. See makeCache(subelements:environment:) for details.

    +
    +
    +
    +
    +

    Return Value

    +

    A size that indicates how much space the container needs to arrange its +subelements.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Assigns positions to each of the layout’s subelements.

    + +

    Blueprint calls your implementation of this method to tell your custom layout container to +place its subelements. From this method, call the +place(at:anchor:size:) method on each item in subelements to tell the +subelements where to appear in the user interface.

    + +

    You can also update the attributes property of each +subelement to set properties like opacity and transforms on each subelement.

    + +

    Be sure that you use computations during placement that are consistent with those in your +implementation of other protocol methods for a given set of inputs. For example, if you add +spacing during placement, make sure your implementation of +sizeThatFits(proposal:subelements:environment:cache:) accounts for the extra space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func placeSubelements(
    +    in size: CGSize,
    +    subelements: Subelements,
    +    environment: Environment,
    +    cache: inout Cache
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + size + + +
    +

    The region that the container’s parent allocates to the container. Place all the +container’s subelements within the region. The size of this region may not match any +size that was returned from a call to +sizeThatFits(proposal:subelements:environment:cache:).

    +
    +
    + + subelements + + +
    +

    A collection of proxies that represent the elements that the container +arranges. Use the proxies in the collection to get information about the subelements and +to tell the subelements where to appear.

    +
    +
    + + environment + + +
    +

    The environment of this container. You can use properties from the +environment to vary the placement of subelements.

    +
    +
    + + cache + + +
    +

    Optional storage for calculated data that you can share among the methods of your +custom layout container. See makeCache(subelements:environment:) for details.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates and initializes a cache for a layout instance.

    + +

    You can optionally use a cache to preserve calculated values across calls to a layout +container’s methods. Many layout types don’t need a cache, because Blueprint automatically +caches the results of calls into layout methods, such as +sizeThatFits(_:). Rely on the protocol’s default implementation of this +method if you don’t need a cache.

    + +

    However you might find a cache useful when the layout container repeats complex intermediate +calculations across calls to sizeThatFits(proposal:subelements:environment:cache:) and +placeSubelements(in:subelements:environment:cache:). You might be able to improve +performance by calculating values once and storing them in a cache.

    +
    +

    Note

    + A cache’s lifetime is limited to a single render pass, so you cannot use it to store +values across multiple calls to placeSubelements(in:subelements:environment:cache:). A +render pass includes zero, one, or many calls to +sizeThatFits(proposal:subelements:environment:cache:), followed by a single call to +placeSubelements(in:subelements:environment:cache:). + +
    + +

    Only implement a cache if profiling shows that it improves performance.

    +

    Initializing a cache

    + +

    Implement the makeCache(subelements:) method to create a cache. You can add computed +values to the cache right away, using information from the subelements input parameter, or +you can do that later. The methods of the Layout protocol that can access the cache take +the cache as an in-out parameter, which enables you to modify the cache anywhere that you +can read it.

    + +

    You can use any storage type that makes sense for your layout algorithm, but be sure that +you only store data that you derive from the layout and its subelements (lazily, if +possible). For this to work correctly, Blueprint needs to be able to call this method to +recreate the cache without changing the layout result.

    + +

    When you return a cache from this method, you implicitly define a type for your cache. Be +sure to either make the type of the cache parameters on your other Layout protocol +methods match, or use a type alias to define the Cache associated type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func makeCache(subelements: Subelements, environment: Environment) -> Cache
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + subelements + + +
    +

    A collection of proxy instances that represent the subelements that +the container arranges. You can use the proxies in the collection to get information about +the subelements as you calculate values to store in the cache.

    +
    +
    + + environment + + +
    +

    The environment of this container.

    +
    +
    +
    +
    +

    Return Value

    +

    Storage for calculated data that you share among the methods of your custom +layout container.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/CaffeinatedSingleChildLayout.html b/Protocols/CaffeinatedSingleChildLayout.html new file mode 100644 index 000000000..7a69d9ae0 --- /dev/null +++ b/Protocols/CaffeinatedSingleChildLayout.html @@ -0,0 +1,1018 @@ + + + + CaffeinatedSingleChildLayout Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CaffeinatedSingleChildLayout

+
+
+ +
public protocol CaffeinatedSingleChildLayout
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Subelement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    typealias Subelement = LayoutSubelement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Cache + +
    +
    +
    +
    +
    +
    +

    Cached values associated with the layout instance.

    + +

    If you create a cache for your custom layout, you can use a type alias to define this type +as your data storage type. Alternatively, you can refer to the data storage type directly in +all the places where you work with the cache.

    + +

    See makeCache(subelement:environment:) for more information.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype Cache = Void
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the size of the element, given a proposed size constraint and the container’s +subelement.

    + +

    Implement this method to tell your custom layout container’s parent how much space the +container needs for a subelement, given a size constraint. The parent might call this method +more than once during a layout pass with different proposed sizes to test the flexibility of +the container.

    + +

    In Blueprint, parents ultimately choose the size of their children, so the actual size that +this container is laid out in may not be a size that was returned from this method.

    + +

    For more information, see +sizeThatFits(proposal:subelements:environment:cache:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func sizeThatFits(
    +    proposal: SizeConstraint,
    +    subelement: Subelement,
    +    environment: Environment,
    +    cache: inout Cache
    +) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + proposal + + +
    +

    A size constraint for the container. The container’s parent element that calls +this method might call the method more than once with different constraints to learn +more about the container’s flexibility before choosing a size for placement.

    +
    +
    + + subelement + + +
    +

    A proxy that represents the element that the container arranges. You can use +the proxy to get information about the subelement as you determine how much space the +container needs to display it.

    +
    +
    + + environment + + +
    +

    The environment of the container. You can use properties from the +environment when calculating the size of this container, as long as you adhere to the +sizing rules.

    +
    +
    + + cache + + +
    +

    Optional storage for calculated data that you can share among the methods of your +custom layout container. See makeCache(subelement:environment:) for details.

    +
    +
    +
    +
    +

    Return Value

    +

    A size that indicates how much space the container needs to arrange its +subelement.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Assigns a position to the layout’s subelement.

    + +

    Blueprint calls your implementation of this method to tell your custom layout container to +place its subelement. From this method, call the place(at:anchor:size:) +method on subelement to tell the subelement where to appear in the user interface.

    + +

    You can also update the attributes property to set +properties like opacity and transforms on the subelement.

    + +

    Be sure that you use computations during placement that are consistent with those in your +implementation of other protocol methods for a given set of inputs. For example, if you add +spacing during placement, make sure your implementation of +sizeThatFits(proposal:subelement:environment:cache:) accounts for the extra space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func placeSubelement(
    +    in size: CGSize,
    +    subelement: Subelement,
    +    environment: Environment,
    +    cache: inout Cache
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + size + + +
    +

    The region that the container’s parent allocates to the container. Place the +container’s subelement within the region. The size of this region may not match any size +that was returned from a call to +sizeThatFits(proposal:subelement:environment:cache:).

    +
    +
    + + subelement + + +
    +

    A proxy that represents the element that the container arranges. Use the +proxy to get information about the subelement and to tell the subelement where to +appear.

    +
    +
    + + environment + + +
    +

    The environment of this container. You can use properties from the +environment to vary the placement of the subelement.

    +
    +
    + + cache + + +
    +

    Optional storage for calculated data that you can share among the methods of your +custom layout container. See makeCache(subelement:environment:) for details.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates and initializes a cache for a layout instance.

    + +

    You can optionally use a cache to preserve calculated values across calls to a layout +container’s methods. Many layout types don’t need a cache, because Blueprint automatically +caches the results of calls into layout methods, such as +sizeThatFits(_:). Rely on the protocol’s default implementation of this +method if you don’t need a cache.

    + +

    However you might find a cache useful when the layout container repeats complex intermediate +calculations across calls to sizeThatFits(proposal:subelement:environment:cache:) and +placeSubelement(in:subelement:environment:cache:). You might be able to improve +performance by calculating values once and storing them in a cache.

    +
    +

    Note

    + A cache’s lifetime is limited to a single render pass, so you cannot use it to store +values across multiple calls to placeSubelement(in:subelement:environment:cache:). A +render pass includes zero, one, or many calls to +sizeThatFits(proposal:subelement:environment:cache:), followed by a single call to +placeSubelement(in:subelement:environment:cache:). + +
    + +

    Only implement a cache if profiling shows that it improves performance.

    + +

    For more information, see makeCache(subelements:environment:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func makeCache(subelement: Subelement, environment: Environment) -> Cache
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + subelement + + +
    +

    A proxy that represent the subelement that the container arranges. +You can use the proxy to get information about the subelement as you calculate values to +store in the cache.

    +
    +
    + + environment + + +
    +

    The environment of this container.

    +
    +
    +
    +
    +

    Return Value

    +

    Storage for calculated data that you share among the methods of your custom +layout container.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/Element.html b/Protocols/Element.html new file mode 100644 index 000000000..923e29585 --- /dev/null +++ b/Protocols/Element.html @@ -0,0 +1,2992 @@ + + + + Element Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Element

+
+
+ +
public protocol Element
+ +
+
+

Conforming types represent a rectangular content area in a two-dimensional +layout space.

+ +
+ +

The ultimate purpose of an element is to provide visual content. This can be +done in two ways:

+ +
    +
  • By providing a view description (ViewDescription).

  • +
  • By providing child elements that will be displayed recursively within +the local coordinate space.

  • +
+ +
+ +

A custom element might look something like this:

+
struct MyElement: Element {
+
+    var backgroundColor: UIColor = .red
+
+    // Returns a single child element.
+    var content: ElementContent {
+        return ElementContent(child: Label(text: "😂"))
+    }
+
+    // Providing a view description means that this element will be
+    // backed by a UIView instance when displayed in a `BlueprintView`.
+    func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription? {
+        return UIView.describe { config in
+            config.bind(backgroundColor, to: \.backgroundColor)
+        }
+    }
+
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    +

    Returns the content of this element.

    + +

    Elements generally fall into two types:

    + +
      +
    • Leaf elements, or elements that have no children. These elements commonly have an intrinsic size, or some +content that can be measured. Leaf elements typically instantiate their content with +ElementContent(measurable:) or similar.
    • +
    • Container elements: these element have one or more children, which are arranged by a layout implementation. +Container elements typically use methods like ElementContent(layout:configure:) to instantiate +their content.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns an (optional) description of the view that should back this element.

    + +

    In Blueprint, elements that are displayed using a live UIView instance are referred to as “view-backed”. +Elements become view-backed by returning a ViewDescription value from this method.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + context + + +
    +

    The context this element is rendered in.

    +
    +
    +
    +
    +

    Return Value

    +

    An optional ViewDescription.

    +
    +
    +
    +
  • +
  • +
    + + + + adaptedEnvironment(key:value:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps this element in an AdaptedEnvironment with the given environment key and value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func adaptedEnvironment<Key>(key: Key.Type, value: Key.Value) -> Element where Key : EnvironmentKey
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + adaptedEnvironment(keyPath:value:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps this element in an AdaptedEnvironment with the given keypath and value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func adaptedEnvironment<Value>(keyPath: WritableKeyPath<Environment, Value>, value: Value) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + adaptedEnvironment(by:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps this element in an AdaptedEnvironment with the given configuration block.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func adaptedEnvironment(by environmentAdapter: @escaping (inout Environment) -> Void) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + aligned(vertically:horizontally:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Aligned element with the provided parameters.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func aligned(
    +    vertically: Aligned.VerticalAlignment = .center,
    +    horizontally: Aligned.HorizontalAlignment = .center
    +) -> Aligned
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + vertically + + +
    +

    The vertical alignment. Defaults to .centered.

    +
    +
    + + horizontally + + +
    +

    The horizontal alignment. Defaults to .centered.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + centered() + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in a Centered element to center it within its parent.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func centered() -> Centered
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

If / Else +

+
+
+
    +
  • +
    + + + + if(_:then:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Returns a new element from the provided modify +closure, if the provided boolean is true. Otherwise, the original +element is returned.

    +
    myElement.if(someBoolean) { element in
    +    element.centered()
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func `if`(
    +    _ isTrue: Bool,
    +    then: (Self) -> Element
    +) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + if(_:then:else:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Returns a new element from the provided then +closure if the provided boolean is true. If the provided boolean +is false, the else closure is used

    +
    myElement.if(
    +    someBoolean,
    +    then: { element in
    +          element.aligned(horizontally: .trailing, vertically: .fill)
    +    },
    +    else: { element in
    +        element.aligned(horizontally: .leading, vertically: .fill)
    +    }
    +)
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func `if`(
    +    _ isTrue: Bool,
    +    then: (Self) -> Element,
    +    else: (Self) -> Element
    +) -> Element
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

If Let +

+
+
+
    +
  • +
    + + + + if(let:then:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Returns a new element from the provided modify +closure if the provided value is non-nil. Otherwise, the original +element is returned.

    +
    myElement.if(let: someValue) { value, element in
    +    element.inset(uniform: someValue.padding)
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func `if`<Value>(
    +    `let` value: Value?,
    +    then: (Value, Self) -> Element
    +) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + if(let:then:else:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Returns a new element from the provided then +closure if the provided boolean is true. If the provided value +is nil, the else closure is used

    +
    myElement.if(
    +    let: someValue,
    +    then: { value, element in
    +          element.inset(uniform: value.padding)
    +    },
    +    else: { element in
    +        element.inset(uniform: 10)
    +    }
    +)
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func `if`<Value>(
    +    `let` value: Value?,
    +    then: (Value, Self) -> Element,
    +    else: (Self) -> Element
    +) -> Element
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Map & Modify +

+
+
+
    +
  • +
    + + + + map(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Creates and returns a new element by passing the +element to the provided map function.

    +
    myElement.map { element in
    +    switch myState {
    +    case .small: element.inset(uniform: 5)
    +    case .medium: element.inset(uniform: 10)
    +    case .large: element.inset(uniform: 15)
    +    }
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func map(_ map: (Self) -> Element) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + modify(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Creates and returns a new element by passing the +element to the provided modify function, which can edit it.

    +
    myElement.modify { element in
    +    switch myState {
    +    case .small: element.inset = 5
    +    case .medium: element.inset = 10
    +    case .large: element.inset = 15
    +    }
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func modify(_ modify: (inout Self) -> Void) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + constrainedTo(aspectRatio:contentMode:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Constrains the element to the provided aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func constrainedTo(
    +    aspectRatio: AspectRatio,
    +    contentMode: ConstrainedAspectRatio.ContentMode = .fitContent
    +) -> ConstrainedAspectRatio
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + aspectRatio + + +
    +

    The aspect ratio that the content size should match.

    +
    +
    + + contentMode + + +
    +

    How the content should size itself relative to its parent.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + constrainedTo(width:height:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Constrains the measured size of the element to the provided width and height.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func constrainedTo(
    +    width: ConstrainedSize.Constraint = .unconstrained,
    +    height: ConstrainedSize.Constraint = .unconstrained
    +) -> ConstrainedSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + constrainedTo(width:height:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Constrains the measured size of the element to the provided width and height.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func constrainedTo(
    +    width: CGFloat,
    +    height: CGFloat
    +) -> ConstrainedSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + constrainedTo(size:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Constrains the measured size of the element to the provided size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func constrainedTo(
    +    size: CGSize
    +) -> ConstrainedSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + constrained(to:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Constrains the measured size of the element to the provided SizeConstraint.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func constrained(to sizeConstraint: SizeConstraint) -> ConstrainedSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + decorate(layering:position:with:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Places a decoration element behind or in front of the given wrapped element, +and positions it according to the position parameter.

    + +

    See the Decorate element for more.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func decorate(
    +    layering: Decorate.Layering,
    +    position: Decorate.Position,
    +    with decoration: () -> Element
    +) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + flowChild(key:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in a Flow.Child to allow customizing the item in the flow layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func flowChild(key: AnyHashable? = nil) -> Flow.Child
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

child modeling +

+
+
+
    +
  • +
    + + + + gridRowChild(key:width:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps an element with a GridRowChild in order to provide meta information that a GridRow can aply to its layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func gridRowChild(key: AnyHashable? = nil, width: GridRow.Width) -> GridRow.Child
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + key + + +
    +

    A unique identifier for the child.

    +
    +
    + + width + + +
    +

    The sizing for the element.

    +
    +
    +
    +
    +

    Return Value

    +

    GridRowChild

    +
    +
    +
    +
  • +
  • +
    + + + + hidden(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Conditionally hide the wrapped element.

    + +

    Hidden elements still participate in layout. Hiding sets the UIView.isHidden property of the nearest backing view.

    +
    +

    Note

    + When an element is hidden, any elements within the wrapped element will be hidden. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hidden(_ hidden: Bool = true) -> Hidden
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(top:bottom:left:right:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Insets the element by the given amount on each side.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(
    +    top: CGFloat = 0.0,
    +    bottom: CGFloat = 0.0,
    +    left: CGFloat = 0.0,
    +    right: CGFloat = 0.0
    +) -> Inset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(by:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Insets the element by the given amount on each side.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(by edgeInsets: UIEdgeInsets) -> Inset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(uniform:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Insets the element by the given amount on each side.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(uniform: CGFloat) -> Inset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(horizontal:vertical:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Insets the element by the given amount on each side.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(
    +    horizontal: CGFloat = 0.0,
    +    vertical: CGFloat = 0.0
    +) -> Inset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyed(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Keyed allows providing a Hashable value which is used +during view updates to uniquely identify content during the diff process +between the old and new element structure.

    + +

    This is useful if you have two elements of the same type at the same depth +in the element hierarchy, and you’d like to differentiate between them, eg +for appearance transition purposes.

    +

    Example

    + +

    Keying the image returned, so that a transition occurs when changing +between a placeholder image and an available photo.

    +
    func imageElement() -> Element {
    +    if let photo = self.photo {
    +        return Image(image: photo)
    +                .transition(.fade)
    +                .keyed("photo")
    +    } else {
    +        return Image(image: self.placeholder)
    +                .transition(.fade)
    +                .keyed("placeholder")
    +    }
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func keyed(_ key: AnyHashable) -> Keyed
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onAppear(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Adds a hook that will be called when this element appears.

    + +

    Callbacks run in depth-first traversal order, with parents before children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onAppear(_ callback: @escaping LifecycleCallback) -> LifecycleObserver
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onDisappear(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Adds a hook that will be called when this element disappears.

    + +

    Callbacks run in depth-first traversal order, with parents before children. There is no +guaranteed order between disappearance callbacks and backing views being removed from their +superviews.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onDisappear(_ callback: @escaping LifecycleCallback) -> LifecycleObserver
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + opacity(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Opacity element with the provided opacity.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func opacity(_ opacity: CGFloat) -> Opacity
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + opacity + + +
    +

    The opacity to be applied.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + overlayChild(key:) + + + Extension method + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func overlayChild(key: AnyHashable? = nil) -> Overlay.Child
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Result Builders +

+
+
+
    +
  • +
    + + + + stackLayoutChild(priority:alignmentGuide:key:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps an element with a StackLayout.Child in order to customize StackLayout.Traits and the key.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func stackLayoutChild(
    +    priority: StackLayout.Child.Priority = .flexible,
    +    alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    key: AnyHashable? = nil
    +) -> StackLayout.Child
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + priority + + +
    +

    Controls the amount of extra space distributed to this child during underflow and overflow

    +
    +
    + + alignmentGuide + + +
    +

    Allows for custom alignment of a child along the cross axis.

    +
    +
    + + key + + +
    +

    A key used to disambiguate children between subsequent updates of the view +hierarchy.

    +
    +
    +
    +
    +

    Return Value

    +

    A wrapper containing this element with additional layout information for the StackElement.

    +
    +
    +
    +
  • +
  • +
    + + + + stackLayoutChild(priority:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps an element with a StackLayout.Child in order to customize the StackLayout.Child.Priority.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func stackLayoutChild(
    +    priority: StackLayout.Child.Priority
    +) -> StackLayout.Child
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + priority + + +
    +

    Controls the amount of extra space distributed to this child during underflow and overflow

    +
    +
    +
    +
    +

    Return Value

    +

    A wrapper containing this element with additional layout information for the StackElement.

    +
    +
    +
    +
  • +
  • +
    + + + + tintAdjustmentMode(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Conditionally modifies the tint adjustment mode of its wrapped element.

    +
    +

    Note

    + When a tint adjustment mode is applied, any elements within the wrapped element will adopt the parent’s tint adjustment mode. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tintAdjustmentMode(_ tintAdjustmentMode: UIView.TintAdjustmentMode) -> TintAdjustmentMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + transformed(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Transformed element with the provided 3D transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transformed(_ transform: CATransform3D) -> Transformed
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + transform + + +
    +

    The 3D transform to be applied.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + transformed(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Transformed element with the provided 2D transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transformed(_ transform: CGAffineTransform) -> Transformed
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + transform + + +
    +

    The 2D transform to be applied.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + translated(translateX:translateY:translateZ:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Transformed element that translates the receiver in 3D space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func translated(
    +    translateX: CGFloat = 0,
    +    translateY: CGFloat = 0,
    +    translateZ: CGFloat = 0
    +) -> Transformed
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + transformX + + +
    +

    The X component of the translation.

    +
    +
    + + transformY + + +
    +

    The Y component of the translation.

    +
    +
    + + transformZ + + +
    +

    The Z component of the translation.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + rotated(by:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Transformed element that rotates the receiver in 2D space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func rotated(by rotationAngle: Measurement<UnitAngle>) -> Transformed
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + rotate + + +
    +

    The angle measurement to rotate the receiver by.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + scaled(scaleX:scaleY:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Transformed element that scales the receiver in 2D space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func scaled(
    +    scaleX: CGFloat = 1,
    +    scaleY: CGFloat = 1
    +) -> Transformed
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + scaleX + + +
    +

    The X axis scale.

    +
    +
    + + scaleY + + +
    +

    The Y axis scale.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + userInteractionEnabled(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Conditionally enable user interaction of the wrapped element.

    +
    +

    Note

    + When user interaction is disabled, any elements within the wrapped element will become non-interactive. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func userInteractionEnabled(_ enabled: Bool = true) -> UserInteractionEnabled
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + blockAccessibility(isBlocking:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Blocks all accessibility on the element, so that it is +is no longer an accessibility element, and its children are +hidden from the accessibility system.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func blockAccessibility(isBlocking: Bool = true) -> AccessibilityBlocker
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityContainer(identifier:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Acts as an accessibility container for any subviews +where isAccessibilityElement == true.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func accessibilityContainer(identifier: String? = nil) -> Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Wraps the receiver in an accessibility element with the provided values.

    + +

    Providing a nil value for any of these parameters will result in no resolved value for that accessibility +parameter—it does not inherit parameters from the wrapped element’s accessibility configuration.

    +
    +

    Important

    + ⚠️ This overrides the accessibility of the contained element and all of its children ⚠️ + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func accessibilityElement(
    +    label: String?,
    +    value: String?,
    +    traits: Set<AccessibilityElement.Trait>,
    +    hint: String? = nil,
    +    identifier: String? = nil,
    +    accessibilityFrameSize: CGSize? = nil,
    +    accessibilityFrameCornerStyle: Box.CornerStyle = .square,
    +    customActions: [AccessibilityElement.CustomAction] = [],
    +    customContent: [AccessibilityElement.CustomContent] = []
    +) -> AccessibilityElement
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Wraps the receiver in an accessibility element with the provided values.

    +
    +

    Important

    +

    ⚠️ This overrides the accessibility of the contained element and all of its children ⚠️

    + +
    +

    See also

    +

    accessibilityElement

    + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "accessibilityElement(label:value:traits:hint:identifier:accessibilityFrameSize:﹚")
    +public func accessibility(
    +    label: String? = nil,
    +    value: String? = nil,
    +    hint: String? = nil,
    +    identifier: String? = nil,
    +    traits: Set<AccessibilityElement.Trait> = [],
    +    accessibilityFrameSize: CGSize? = nil
    +) -> AccessibilityElement
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Trigger +

+
+
+
    +
  • +
    + + + + accessibilityFocus(on:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Enables VoiceOver focus to jump to the wrapped element via the trigger.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func accessibilityFocus(
    +    on trigger: AccessibilityFocus.Trigger
    +) -> Element
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + on + + +
    +

    A reference-type trigger object that can be used to trigger accessibility focus via the focus() function.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

View implementation +

+
+
+
    +
  • +
    + + + + onLinkTapped(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Handle links opened in any AttributedLabel within this element using the provided closure.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onLinkTapped(_ onTap: @escaping (URL) -> Void) -> Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Wraps the element in a box to provide basic styling.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func box(
    +    background: UIColor = .clear,
    +    corners: Box.CornerStyle = .square,
    +    cornerCurve: Box.CornerCurve = .circular,
    +    borders: Box.BorderStyle = .none,
    +    shadow: Box.ShadowStyle = .none,
    +    clipsContent: Bool = false
    +) -> Box
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + editingMenu(show:with:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Allows showing the system’s UIMenuController editing menu upon long press of the wrapped element.

    +
    myElement.editingMenu(show: .onLongPress) {
    +    EditingMenuItem.copying("A String")
    +
    +    EditingMenuItem(.select) {
    +        print("Selected!")
    +    }
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func editingMenu(
    +    show gesture: EditingMenu.Gesture,
    +    @Builder<EditingMenuItem> with items: () -> [EditingMenuItem]
    +) -> EditingMenu
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scrollable(_:configure:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in a ScrollView to allow it to be scrolled +if it takes up more space then is available on screen.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func scrollable(
    +    _ contentSize: ScrollView.ContentSize = .fittingHeight,
    +    configure: (inout ScrollView) -> Void = { _ in }
    +) -> ScrollView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tappable(onTap:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element and calls the provided closure when tapped.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tappable(onTap: @escaping () -> Void) -> Tappable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + transition(onAppear:onDisappear:onLayout:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in a transition container to provide an animated transition.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transition(
    +    onAppear: VisibilityTransition? = nil,
    +    onDisappear: VisibilityTransition? = nil,
    +    onLayout: LayoutTransition = .inherited
    +) -> TransitionContainer
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + onAppear + + +
    +

    The transition to use when the element appears. By default, no transition.

    +
    +
    + + onDisappear + + +
    +

    The transition to use when the element disappears. By default, no transition.

    +
    +
    + + onLayout + + +
    +

    The transition to use when the element’s layout changes. The default value is +.inherited, which means the element will participate in the same transition as its +nearest ancestor with a specified transition.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + transition(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in a transition container to provide an animated transition when its visibility changes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transition(_ onAppearOrDisappear: VisibilityTransition) -> TransitionContainer
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + onAppearOrDisappear + + +
    +

    The transition to use when the element appears or disappears.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/ElementBuilderChild.html b/Protocols/ElementBuilderChild.html new file mode 100644 index 000000000..4b405ac59 --- /dev/null +++ b/Protocols/ElementBuilderChild.html @@ -0,0 +1,681 @@ + + + + ElementBuilderChild Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ElementBuilderChild

+
+
+ +
public protocol ElementBuilderChild
+ +
+
+

Defines a way for anElement to be implicitly converted into the conforming type (the child of a container). +In practice, this allows us to pass an Element directly into the result builder without manually converting to Child (i.e. Converting Element -> StackLayout.Child.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/EnvironmentKey.html b/Protocols/EnvironmentKey.html new file mode 100644 index 000000000..9552545d2 --- /dev/null +++ b/Protocols/EnvironmentKey.html @@ -0,0 +1,728 @@ + + + + EnvironmentKey Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EnvironmentKey

+
+
+ +
public protocol EnvironmentKey
+ +
+
+

Types conforming to this protocol can be used as keys in an Environment.

+ +

Using a type as the key allows us to strongly type each value, with the +key’s EnvironmentKey.Value associated value.

+

Example

+ +

Usually a key is implemented with an uninhabited type, such an empty enum.

+
enum WidgetCountKey: EnvironmentKey {
+    static let defaultValue: Int = 0
+}
+
+ +

You can write a small extension on Environment to make it easier to use your key.

+
extension Environment {
+    var widgetCount: Int {
+        get { self[WidgetCountKey.self] }
+        set { self[WidgetCountKey.self] = newValue }
+    }
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    +

    The type of value stored by this key.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype Value
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + defaultValue + +
    +
    +
    +
    +
    +
    +

    The default value that will be vended by an Environment for this key if no other value +has been set.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static var defaultValue: Self.Value { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/LegacyLayout.html b/Protocols/LegacyLayout.html new file mode 100644 index 000000000..4c6b25651 --- /dev/null +++ b/Protocols/LegacyLayout.html @@ -0,0 +1,834 @@ + + + + LegacyLayout Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LegacyLayout

+
+
+ +
public protocol LegacyLayout
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Traits + +
    +
    +
    +
    +
    +
    +

    Per-item metadata that is used during the measuring and layout pass.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype Traits = ()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + measure(in:items:) + +
    +
    +
    +
    +
    +
    +

    Computes the size that this layout requires in a layout, given an array of children and +accompanying layout traits.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func measure(in constraint: SizeConstraint, items: [(traits: Self.Traits, content: Measurable)]) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + constraint + + +
    +

    The size constraint in which measuring should occur.

    +
    +
    + + items + + +
    +

    An array of ‘items’, pairs consisting of a traits object and a +Measurable value.

    +
    +
    +
    +
    +

    Return Value

    +

    The measured size for the given array of items.

    +
    +
    +
    +
  • +
  • +
    + + + + layout(size:items:) + +
    +
    +
    +
    +
    +
    +

    Generates layout attributes for the given items.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func layout(size: CGSize, items: [(traits: Self.Traits, content: Measurable)]) -> [LayoutAttributes]
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + size + + +
    +

    The size that layout attributes should be generated within.

    +
    +
    + + items + + +
    +

    An array of ‘items’, pairs consisting of a traits object and a +Measurable value.

    +
    +
    +
    +
    +

    Return Value

    +

    Layout attributes for the given array of items.

    +
    +
    +
    +
  • +
  • +
    + + + + defaultTraits + +
    +
    +
    +
    +
    +
    +

    Returns a default traits object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static var defaultTraits: Self.Traits { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/LegacySingleChildLayout.html b/Protocols/LegacySingleChildLayout.html new file mode 100644 index 000000000..a463b850c --- /dev/null +++ b/Protocols/LegacySingleChildLayout.html @@ -0,0 +1,777 @@ + + + + LegacySingleChildLayout Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LegacySingleChildLayout

+
+
+ +
public protocol LegacySingleChildLayout
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + measure(in:child:) + +
    +
    +
    +
    +
    +
    +

    Computes the size that this layout requires

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func measure(in constraint: SizeConstraint, child: Measurable) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + constraint + + +
    +

    The size constraint in which measuring should occur.

    +
    +
    + + child + + +
    +

    A Measurable representing the single child of this layout.

    +
    +
    +
    +
    +

    Return Value

    +

    The measured size.

    +
    +
    +
    +
  • +
  • +
    + + + + layout(size:child:) + +
    +
    +
    +
    +
    +
    +

    Generates layout attributes for the child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func layout(size: CGSize, child: Measurable) -> LayoutAttributes
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + size + + +
    +

    The size that layout attributes should be generated within.

    +
    +
    + + child + + +
    +

    A Measurable representing the single child of this layout.

    +
    +
    +
    +
    +

    Return Value

    +

    Layout attributes for the child of this layout.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/Measurable.html b/Protocols/Measurable.html new file mode 100644 index 000000000..93357c8d3 --- /dev/null +++ b/Protocols/Measurable.html @@ -0,0 +1,704 @@ + + + + Measurable Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Measurable

+
+
+ +
public protocol Measurable
+ +
+
+

Conforming types can calculate the size that they require within a layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + measure(in:) + +
    +
    +
    +
    +
    +
    +

    Measures the required size of the receiver.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func measure(in constraint: SizeConstraint) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + constraint + + +
    +

    The size constraint.

    +
    +
    +
    +
    +

    Return Value

    +

    The layout size needed by the receiver.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/NativeView.html b/Protocols/NativeView.html new file mode 100644 index 000000000..8abb95631 --- /dev/null +++ b/Protocols/NativeView.html @@ -0,0 +1,722 @@ + + + + NativeView Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

NativeView

+
+
+ +
public protocol NativeView
+ +
+
+

Marker protocol used by generic extensions to native views (e.g. UIView).

+ +
+
+ +
+
+
+
+ + +
+ +

Available where Self: UIView +

+
+
+
    +
  • +
    + + + + describe(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Generates a view description for the receiving class. +Example:

    +
    let viewDescription = UILabel.describe { config in
    +    config[\.text] = "Hello, world"
    +    config[\.textColor] = UIColor.orange
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func describe(_ configuring: (inout ViewDescription.Configuration<Self>) -> Void) -> ViewDescription
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + configuring + + +
    +

    A closure that is responsible for populating a configuration object.

    +
    +
    +
    +
    +

    Return Value

    +

    The resulting view description.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/ProxyElement.html b/Protocols/ProxyElement.html new file mode 100644 index 000000000..dcb10963d --- /dev/null +++ b/Protocols/ProxyElement.html @@ -0,0 +1,744 @@ + + + + ProxyElement Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ProxyElement

+
+
+ +
public protocol ProxyElement : Element
+ +
+
+

Custom elements commonly use another element to actually display content. For example, a profile element might +display an image and a few labels inside a Column element. The ProxyElement protocol is provided to make that +task easier.

+ +

Conforming types only need to implement elementRepresentation in order to generate an element that will be +displayed.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/Protocols/StackElement.html b/Protocols/StackElement.html new file mode 100644 index 000000000..8d176e8c6 --- /dev/null +++ b/Protocols/StackElement.html @@ -0,0 +1,1098 @@ + + + + StackElement Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

StackElement

+
+
+ +
public protocol StackElement : Element
+ +
+
+

Conforming types (Row and Column) act as StackLayout powered containers.

+ +

This protocol should only be used by Row and Column elements (you should never add conformance to other custom +types).

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layout + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var layout: StackLayout { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var children: [(element: Element, traits: StackLayout.Traits, key: AnyHashable?)] { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + + + Extension method + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + backingViewDescription(with:) + + + Extension method + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ configure: (inout Self) -> Void)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Adds a given child element to the stack.

    + +
      +
    • Tag: StackElement.add

    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(
    +    growPriority: CGFloat = 1.0,
    +    shrinkPriority: CGFloat = 1.0,
    +    alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    key: AnyHashable? = nil,
    +    child: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + +
    + + growPriority + + +
    +

    +
    +
    + + shrinkPriority + + +
    +

    +
    +
    + + alignmentGuide + + +
    +

    +
    +
    + + key + + +
    +

    A key used to disambiguate children between subsequent updates of the view +hierarchy

    +
    +
    + + child + + +
    +

    The child element to add to this stack

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + addFixed(alignmentGuide:key:child:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Convenience method for adding a child with a grow and shrink priority of 0.0.

    + +

    See StackElement.add(...) for details.

    +

    In Xcode

    + +

    StackElement.add()

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func addFixed(
    +    alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    key: AnyHashable? = nil,
    +    child: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + alignmentGuide + + +
    +

    A closure that can be used to provide a custom alignment guide for this +child.

    +
    +
    + + key + + +
    +

    A key used to disambiguate children between subsequent updates of the view +hierarchy

    +
    +
    + + child + + +
    +

    The child element to add to this stack

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + addFlexible(alignmentGuide:key:child:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Convenience method for adding a child with a grow and shrink priority of 1.0.

    + +

    See StackElement.add(...) for details.

    +

    In Xcode

    + +

    StackElement.add()

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func addFlexible(
    +    alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    key: AnyHashable? = nil,
    +    child: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + alignmentGuide + + +
    +

    A closure that can be used to provide a custom alignment guide for this +child.

    +
    +
    + + key + + +
    +

    A key used to disambiguate children between subsequent updates of the view +hierarchy

    +
    +
    + + child + + +
    +

    The child element to add to this stack

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/UIViewElement.html b/Protocols/UIViewElement.html new file mode 100644 index 000000000..c05bb3729 --- /dev/null +++ b/Protocols/UIViewElement.html @@ -0,0 +1,893 @@ + + + + UIViewElement Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UIViewElement

+
+
+ +
public protocol UIViewElement : Element
+ +
+
+

An element type which makes it easier to wrap an existing UIView instance that +provides its own sizing via sizeThatFits. An instance of the view is used for +sizing and measurement, so that you do not need to re-implement your own measurement.

+

Note

+ +

The sizing and measurement prototype view is kept alive for the lifetime of the containing application. +Do not pass anything to the initializer of this type that you expect to be quickly released.

+

Example

+ +

If you were implementing a very basic Switch element, your implementation would look something +like this:

+
struct Switch : UIViewElement
+{
+    var isOn : Bool
+
+    typealias UIViewType = UISwitch
+
+    func makeUIView() -> UISwitch {
+        UISwitch()
+    }
+
+    func updateUIView(_ view: UISwitch, with context: UIViewElementContext) {
+        view.isOn = self.isOn
+    }
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + UIViewType + +
    +
    +
    +
    +
    +
    +

    The type of the view associated with the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype UIViewType : UIView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + makeUIView() + +
    +
    +
    +
    +
    +
    +

    Create and return a new instance of the provided view type.

    +

    Note

    + +

    Ensure that you do not pass any values to the initializer of your view type +that you cannot also update in updateUIView(_:), as view instances +are reused for sizing and measurement.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func makeUIView() -> UIViewType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateUIView(_:with:) + +
    +
    +
    +
    +
    +
    +

    Update the view instance with the content from the element. The context provides additional +information, such as whether the update is for the measuring instance.

    +

    Example

    + +

    If you were to implement a simple UIViewElement which wraps a UISwitch, +your update method would look like this:

    +
    func updateUIView(_ view: UISwitch, with context: UIViewElementContext) {
    +   view.isOn = self.isOn
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func updateUIView(_ view: UIViewType, with context: UIViewElementContext)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + size(_:thatFits:) + + + Default implementation + +
    +
    +
    +
    +
    +
    +

    Returns the sizing measurement for the element for the provided +measurement view.

    + +

    You usually do not need to implement this method – the default implementation of +this method simply calls sizeThatFits(_:) on the provided view.

    + +

    The view is fully configured and updated before this method is called – you do not need to +update it in any way.

    +

    When To Override

    + +

    You may want to override this method if you need to mutate the value returned from sizeThatFits(_:), +or if you want to use some other sizing method like systemLayoutSizeFitting(...).

    + +
    +

    Default Implementation

    +
    +

    The default implementation simply forwards to sizeThatFits(_:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func size(_ size: CGSize, thatFits view: UIViewType) -> CGSize
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+
    +
  • +
    + + + + content + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Defer to the reused measurement view to provide the size of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + backingViewDescription(with:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Provide the view for the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Protocols/URLHandler.html b/Protocols/URLHandler.html new file mode 100644 index 000000000..890115b4c --- /dev/null +++ b/Protocols/URLHandler.html @@ -0,0 +1,683 @@ + + + + URLHandler Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

URLHandler

+
+
+ +
public protocol URLHandler
+ +
+
+

Conform to this protocol to handle links tapped in an AttributedLabel.

+ +

Use the URLHandlerEnvironmentKey or Environment.urlHandler property to override +the link handler in the environment.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + onTap(url:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func onTap(url: URL)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs.html b/Structs.html new file mode 100644 index 000000000..cb2ac6d83 --- /dev/null +++ b/Structs.html @@ -0,0 +1,2075 @@ + + + + Structures Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Structures

+

The following structures are available globally.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + AttributedText + +
    +
    +
    +
    +
    +
    +

    AttributedText allows you to apply strongly-typed attributes to strings (much like the AttributedString type +introduced in iOS 15). You can then access the attributedString property to get an attributed string with those +attributes applied.

    + +

    For example:

    +
    var text = AttributedText(string: "Hello, world")
    +// Apply a font to the entire range
    +text.font = .systemFont(ofSize: 20)
    +
    +// Apply a color to part of the string
    +let range = text.string.range(of: "world")!
    +text[range].color = .blue
    +
    +// Render the attributed text
    +let label = AttributedLabel(attributedText: text.attributedString)
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @dynamicMemberLookup
    +public struct AttributedText
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct TextAttributeContainer
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct BlueprintViewRenderMetrics
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The context passing to the backingViewDescription of an Element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ViewDescriptionContext
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + UIViewElementContext + +
    +
    +
    +
    +
    +
    +

    Context object passed into updateUIView.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct UIViewElementContext
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + FocusBinding + +
    +
    +
    +
    +
    +
    +

    A two-way binding between a focusable element’s backing view and a FocusState-wrapped +property.

    + +

    Generally you should not need to interact with this type directly. However, you can use focus +bindings to add focus support to custom elements.

    +

    Adding Focus Bindings

    + +

    On a FocusState, call the binding(for:) method to get a binding bound to an optional value, +or binding() to get a binding bound to a boolean.

    + +

    To set up the 2-way binding, there are 2 steps:

    + +
      +
    1. Assign actions to the nested FocusTrigger, so that your backing view is updated when the +FocusState‘s value changes.

    2. +
    3. Call the onFocus and onBlur callbacks when your backing view gains or loses focus, so +that the value of the bound FocusState is updated.

    4. +
    +

    Example

    +
    final class FocusableView: UIView {
    +    var focusBinding: FocusBinding? {
    +        didSet {
    +            oldValue?.trigger.focusAction = nil
    +            oldValue?.trigger.blurAction = nil
    +
    +            guard let focusBinding = focusBinding else { return }
    +
    +            focusBinding.trigger.focusAction = { [weak self] in
    +                self?.becomeFirstResponder()
    +            }
    +            focusBinding.trigger.blurAction = { [weak self] in
    +                self?.resignFirstResponder()
    +            }
    +
    +            if isFirstResponder {
    +                focusBinding.onFocus()
    +            } else {
    +                focusBinding.onBlur()
    +            }
    +        }
    +    }
    +
    +    @discardableResult
    +    override func becomeFirstResponder() -> Bool {
    +        let focused = super.becomeFirstResponder()
    +        if focused {
    +            focusBinding?.onFocus()
    +        }
    +        return focused
    +    }
    +
    +    @discardableResult
    +    override func resignFirstResponder() -> Bool {
    +        let blurred = super.resignFirstResponder()
    +        if blurred {
    +            focusBinding?.onBlur()
    +        }
    +        return blurred
    +    }
    +}
    +
    + +
      +
    • Tag: FocusBinding
    • +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct FocusBinding
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + FocusState + +
    +
    +
    +
    +
    +
    +

    A property wrapper type that can read and write a value that represents the placement of focus.

    + +

    Use this property wrapper in conjunction with modifiers on elements that support focus, such as +TextField.focused(when:equals:) and TextField.focused(when:), to describe when those elements +should have focus. When focus enters the modified element, the wrapped value of this property +updates to match a given value. Similarly, when focus leaves, the wrapped value of this property +resets to nil or false. Setting this property’s value programmatically has the reverse +effect, causing focus to move to the element associated with the updated value.

    + +

    In the following example of a simple login screen, when the user presses the Sign In button and +one of the fields is still empty, focus moves to that field. Otherwise, the sign-in process +proceeds.

    +
    struct LoginForm: ProxyElement {
    +    enum Field: Hashable {
    +        case username
    +        case password
    +    }
    +
    +    var username: String
    +    var password: String
    +    var handleLogin: () -> Void
    +
    +    @FocusState private var focusedField: Field?
    +
    +    var elementRepresentation: Element {
    +        Column { column in
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .username)
    +            )
    +
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .password)
    +            )
    +
    +            column.add(
    +                child: Button(
    +                    onTap: {
    +                        if username.isEmpty {
    +                            focusedField = .username
    +                        } else if password.isEmpty {
    +                            focusedField = .password
    +                        } else {
    +                            handleLogin()
    +                        }
    +                    },
    +                    wrapping: Label(text: "Sign In")
    +                )
    +            )
    +        }
    +    }
    +}
    +
    + +

    To allow for cases where focus is completely absent from a view tree, the wrapped value must be +either an optional or a Boolean. Set the focus binding to false or nil as appropriate to +remove focus from all bound fields. You can also use this to remove focus from a TextField +and thereby dismiss the keyboard.

    +

    Auto-Focus

    + +

    To auto-focus a field when it appears, set the value in an onAppear hook.

    +
    struct Example: ProxyElement {
    +    @FocusState var isFocused: Bool
    +
    +    var elementRepresentation: Element {
    +        TextField(text: "")
    +            .focused(when: $isFocused)
    +            .onAppear {
    +                isFocused = true
    +            }
    +    }
    +}
    +
    +

    Avoid Ambiguous Focus Bindings

    + +

    A TextField can have only one focus binding, stored in its focusBinding property. If you apply +the focused modifier multiple times, the last one will overwrite the previous value.

    + +

    On the other hand, binding the same value to two views is ambiguous. In the following example, +two separate fields bind focus to the name value:

    +
    struct Content: ProxyElement {
    +    enum Field: Hashable {
    +        case name
    +        case fullName
    +    }
    +
    +    @FocusState private var focusedField: Field?
    +
    +    var elementRepresentation: Element {
    +        Column { column in
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .name)
    +            )
    +
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .name) // incorrect re-use of .name
    +            )
    +        }
    +    }
    +}
    +
    + +

    If the user moves focus to either field, the focusedField binding updates to name. However, +if the app programmatically sets the value to name, the last field bound will be chosen.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @propertyWrapper
    +public struct FocusState<Value> where Value : Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Alignment + +
    +
    +
    +
    +
    +
    +

    An alignment in both axes.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Alignment : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + HorizontalAlignment + +
    +
    +
    +
    +
    +
    +

    An alignment position along the horizontal axis.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct HorizontalAlignment : Equatable, CustomStringConvertible
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + VerticalAlignment + +
    +
    +
    +
    +
    +
    +

    An alignment position along the vertical axis.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct VerticalAlignment : Equatable, CustomStringConvertible
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AspectRatio + +
    +
    +
    +
    +
    +
    +

    Represents an a proportional relationship between width and height.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AspectRatio
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Builder + +
    +
    +
    +
    +
    +
    +

    Generic result builder for converting blocks of Child... into [Child].

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @resultBuilder
    +public struct Builder<Child>
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Decorate + +
    +
    +
    +
    +
    +
    +

    Places a decoration element behind or in front of the given wrapped element, +and positions it according to the position parameter.

    + +

    The size and position of the element is determined only by the wrapped +element, the decoration element does not affect the layout at all.

    +

    Example

    + +

    The arrows represent the measured size of the element for layout purposes.

    +
    ┌───────────────────┐     ┌──────┐
    +    Decoration                
    + ┏━━━━━━━━━━━━━━━┓           ┣━━━━━━━━━━┓   
    +                     └─┳────┘             
    +     Wrapped               Wrapped       
    +                                         
    + ┗━━━━━━━━━━━━━━━┛       ┗━━━━━━━━━━━━━━━┛   
    +└───────────────────┘
    +  ◀───────────────▶         ◀───────────────▶
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Decorate : ProxyElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ElementDimensions + +
    +
    +
    +
    +
    +
    +

    An element’s size and its alignment guides in its own coordinate space.

    + +

    You can access the size of the element through the width and height properties. You can +access alignment guide values by subscripting with the specific alignment.

    + +

    These dimensions are typically used when setting an alignment guide on a stack, with +StackElement.add(...).

    +

    Example

    +
    // get the alignment guide value for `VerticalAlignment.center`, falling back to the default
    +// value if no alignment guide has been set
    +dimensions[VerticalAlignment.center]
    +
    +// get the alignment guide value for `HorizontalAlignment.trailing`, or `nil` if none has been
    +// set.
    +dimensions[explicit: .trailing]
    +
    +

    See Also

    + +

    StackElement.add()

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ElementDimensions : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Flow + +
    +
    +
    +
    +
    +
    +

    Element which lays out children horizontally, wrapping to another row when there is not enough space.

    + +

    You may control the layout of each row within the flow layout, by providing a LineAlignment, +which controls the horizontal alignment of content within a row when it is smaller than its container, +and via ItemAlignment, which controls the vertical alignment of shorter elements within a row.

    +
    Flow(itemSpacing: 10, lineSpacing: 10) {
    +    OnboardingPill("Food / drink")
    +    OnboardingPill("Retail goods").flowChild(key: "aKey")
    +    OnboardingPill("Grocery / gourmet / alcohol")
    +    OnboardingPill("Beauty / wellness bookings")
    +    OnboardingPill("Healthcare services")
    +    OnboardingPill("Something else")
    +}
    +
    + +

    Below is a diagram showing a simple example of a Flow layout.

    +
    ┌─────────────────────────────────────┐
    + ┌─────────┐┌─────────┐┌────────────┐│
    +     1    ││    2    ││     3      ││
    + └─────────┘└─────────┘└────────────┘│
    + ┌───────┐┌─────┐┌───────────┐       
    +    4   ││  5  ││     6            
    + └───────┘└─────┘└───────────┘       
    +└─────────────────────────────────────┘
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Flow : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + GeometryProxy + +
    +
    +
    +
    +
    +
    +

    Contains information about the current layout being measured by GeometryReader

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct GeometryProxy
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + GridRow + +
    +
    +
    +
    +
    +
    +

    Like Row, GridRow displays a list of items in a linear horizontal layout. Unlike Row, GridRow provides +convenience for describing columnar layout.

    + +

    Horizontally, GridRow children are stretched to fill the available space. Vertically, children are aligned +according to the verticalAlignment property.

    + +

    Children may be sized proportionally or absolutely. Proportionally-sized children are granted a proportion of +the total layout space after absolutely-sized children and margins have been subtracted.

    +

    Example:

    +
    GridRow { row in
    +  row.verticalAlignment = .fill
    +  row.spacing = 8.0
    +  row.add(width: .proportional(0.75), child: name)
    +  row.add(width: .proportional(0.25), child: number)
    +  row.add(width: .absolute(100), child: status)
    +}
    +
    +

    Expected layout:

    +
    ┌────────────────────────────┬─┬────────┬─┬──────────────────┐
    +            name              number        status      
    +            (75%)           8  (25%) 8     (100 pts)    
    +                                                        
    +●──────────── 150 ───────────● ●── 50 ──● ●─────── 100 ──────●
    +└────────────────────────────┴─┴────────┴─┴──────────────────┘
    +●──────────────────────────── 316 ───────────────────────────●
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct GridRow : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Hidden + +
    +
    +
    +
    +
    +
    +

    Hidden conditionally hides its wrapped element.

    +
    +

    Note

    + When an element is hidden, any elements within the wrapped element will be hidden. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Hidden : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Keyed + +
    +
    +
    +
    +
    +
    +

    Keyed allows providing a Hashable value which is used +during view updates to uniquely identify content during the diff process +between the old and new element structure.

    + +

    This is useful if you have two elements of the same type at the same depth +in the element hierarchy, and you’d like to differentiate between them, eg +for appearance transition purposes.

    +

    Example

    + +

    Keying the image returned, so that a transition occurs when changing +between a placeholder image and an available photo.

    +
    func imageElement() -> Element {
    +    if let photo = self.photo {
    +        return Image(image: photo)
    +                .transition(.fade)
    +                .keyed("photo")
    +    } else {
    +        return Image(image: self.placeholder)
    +                .transition(.fade)
    +                .keyed("placeholder")
    +    }
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Keyed : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutAttributes + +
    +
    +
    +
    +
    +
    +

    Contains layout-related metrics for an element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LayoutAttributes
    +
    extension LayoutAttributes: Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutOptions + +
    +
    +
    +
    +
    +
    +

    Configuration options for caffeinated.

    + +

    Generally these are only useful for experimenting with the performance profile of different +element compositions, and you should stick with default.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LayoutOptions : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutSubelement + +
    +
    +
    +
    +
    +
    +

    A proxy that represents one child element of a layout.

    + +

    This type acts as a proxy for a child element in a Layout. Layout protocol methods receive a +LayoutSubelements collection that contains exactly one proxy for each of the child elements +managed by the layout.

    + +

    Use this proxy to get information about the associated element, like its size and traits. You +should also use the proxy to tell its corresponding element where to appear by calling the +proxy’s place(at:anchor:size:) method. Do this once for each subview from your +implementation of the layout’s +placeSubelements(in:subelements:environment:cache:) method.

    +
    +

    Note

    + The LayoutSubelement API, and its documentation, are modeled after SwiftUI’s +LayoutSubview, with major +differences noted. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LayoutSubelement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutWriter + +
    +
    +
    +
    +
    +
    +

    A parent element which allows arbitrary, custom layout and positioning of its children.

    + +

    Instead of creating a custom Element with a custom Layout, you might use +this element to create a customized layout in a more lightweight way.

    +
    LayoutWriter { context, layout in
    +    layout.add(with: myFrame, child: myElement)
    +    layout.add(with: myOtherFrame, child: myOtherElement)
    +
    +    layout.sizing = .unionOfChildren
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LayoutWriter : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LifecycleObserver + +
    +
    +
    +
    +
    +
    +

    Allows element lifecycle callbacks to be inserted anywhere into the element tree.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LifecycleObserver : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Opacity + +
    +
    +
    +
    +
    +
    +

    Changes the opacity of the wrapped element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Opacity : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + StackLayout + +
    +
    +
    +
    +
    +
    +

    A layout implementation that linearly lays out an array of children along either the horizontal or vertical axis.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct StackLayout : Layout
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TintAdjustmentMode + +
    +
    +
    +
    +
    +
    +

    TintAdjustmentMode conditionally modifies the tint adjustment mode of its wrapped element.

    +
    +

    Note

    + When a tint adjustment mode is applied, any elements within the wrapped element will adopt the parent’s tint adjustment mode. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct TintAdjustmentMode : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Transformed + +
    +
    +
    +
    +
    +
    +

    Changes the transform of the wrapped element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Transformed : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + UnitPoint + +
    +
    +
    +
    +
    +
    +

    A normalized point in an element’s coordinate space.

    + +

    Use a unit point to represent a location in an element without having to know the element’s +rendered size. The point stores a value in each dimension that indicates the fraction of the +element’s size in that dimension — measured from the element’s origin — where the point appears. +For example, you can create a unit point that represents the center of any element by using the +value 0.5 for each dimension:

    +
    let unitPoint = UnitPoint(x: 0.5, y: 0.5)
    +
    + +

    To project the unit point into the rendered element’s coordinate space, multiply each component +of the unit point with the corresponding component of the element’s size:

    +
    let projectedPoint = CGPoint(
    +    x: unitPoint.x * size.width,
    +    y: unitPoint.y * size.height
    +)
    +
    + +

    You can perform this calculation yourself if you happen to know an element’s size, but Blueprint +typically does this for you to carry out operations that you request, like when you place a +subelement in a custom layout.

    + +

    You can create custom unit points with explicit values, like the example above, or you can use +one of the built-in unit points, like zero, center, or topTrailing. The built-in +values correspond to the alignment positions of the similarly named, built-in Alignment +types.

    +
    +

    Note

    + A unit point with one or more components outside the range [0, 1] projects to a point +outside of the element. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct UnitPoint : Hashable
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    UserInteractionEnabled conditionally enables user interaction of its wrapped element.

    +
    +

    Note

    + When user interaction is disabled, any elements within the wrapped element will become non-interactive. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct UserInteractionEnabled : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SizeConstraint + +
    +
    +
    +
    +
    +
    +

    Defines the maximum size for a measurement.

    + +

    Currently this constraint type can only handles layout where +the primary (breaking) axis is horizontal (row in CSS-speak).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct SizeConstraint : Hashable, CustomStringConvertible
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AnimationAttributes + +
    +
    +
    +
    +
    +
    +

    UIView animation configuration values.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AnimationAttributes
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AccessibilityFocus + +
    +
    +
    +
    +
    +
    +

    Enables VoiceOver focus to jump to the wrapped element via a trigger that can be manually fired.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AccessibilityFocus : Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct URLHandlerEnvironmentKey : EnvironmentKey
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EditingMenu + +
    +
    +
    +
    +
    +
    +

    Allows showing the system’s UIMenuController editing menu.

    + +

    You can show the menu upon tap or long press:

    +
    myElement.editingMenu(show: .onLongPress) {
    +    EditingMenuItem.copying("A String")
    +
    +    EditingMenuItem(.select) {
    +        print("Selected!")
    +    }
    +}
    +
    + +

    You can also show the menu as a result of another element’s onTap closure, +using the trigger-based API:

    +
    EditingMenu { menu in
    +    MyRow(text: "Hello, World") {
    +        menu.show()
    +    }
    +} items: {
    +    EditingMenuItem.copying("A String")
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct EditingMenu : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EditingMenuItem + +
    +
    +
    +
    +
    +
    +

    A single item in an editing menu.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct EditingMenuItem
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TextShadow + +
    +
    +
    +
    +
    +
    +

    Describes a shadow that can be applied to text elements, like Label.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct TextShadow : Hashable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AccessibilityBlocker.html b/Structs/AccessibilityBlocker.html new file mode 100644 index 000000000..84d45744d --- /dev/null +++ b/Structs/AccessibilityBlocker.html @@ -0,0 +1,805 @@ + + + + AccessibilityBlocker Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AccessibilityBlocker

+
+
+ +
public struct AccessibilityBlocker : Element
+ +
+
+

Blocks all accessibility on the element, so that it is +is no longer an accessibility element, and its children are +hidden from the accessibility system.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The element whose accessibility information will be blocked.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isBlocking + +
    +
    +
    +
    +
    +
    +

    If the AccessibilityBlocker is currently blocking accessibility.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isBlocking: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new AccessibilityBlocker wrapping the provided element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    isBlocking: Bool = true,
    +    wrapping element: Element
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/AccessibilityContainer.html b/Structs/AccessibilityContainer.html new file mode 100644 index 000000000..8c721ade4 --- /dev/null +++ b/Structs/AccessibilityContainer.html @@ -0,0 +1,812 @@ + + + + AccessibilityContainer Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AccessibilityContainer

+
+
+ +
public struct AccessibilityContainer : Element
+ +
+
+

Acts as an accessibility container for any accessible subviews.

+ +

Accessible subviews are found using the following algorithm:

+ +

Recurse subviews until a view is found that either

+ +
    +
  • hasisAccessibilityElement set to true or
  • +
+ +

If an accessibility element is found, we add it to the accessibilityElements +and terminate the search down that branch. If a container is found, +the elements returned from the container are added to the accessibilityElements +and the search down that branch is also terminated.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + identifier + +
    +
    +
    +
    +
    +
    +

    An optional accessibilityIdentifier to give the container. Defaults to nil.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var identifier: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new AccessibilityContainer wrapping the provided element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(identifier: String? = nil, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/AccessibilityElement.html b/Structs/AccessibilityElement.html new file mode 100644 index 000000000..2beb14905 --- /dev/null +++ b/Structs/AccessibilityElement.html @@ -0,0 +1,1116 @@ + + + + AccessibilityElement Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AccessibilityElement

+
+
+ +
public struct AccessibilityElement : Element
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + label + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var label: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var value: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hint + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var hint: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + identifier + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var identifier: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + traits + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var traits: Set<Trait>
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityFrameSize: CGSize?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityFrameCornerStyle: Box.CornerStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityActivate + +
    +
    +
    +
    +
    +
    +

    Used to provide custom behaviour when activated by voiceover. This will override the default behavior of issuing a tap event at the accessibility activation point. +See Accessibility Activate Documentation for further information.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityActivate: (() -> Bool)?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + customActions + +
    +
    +
    +
    +
    +
    +

    An array containing one or more CustomActions, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var customActions: [CustomAction]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + customContent + +
    +
    +
    +
    +
    +
    +

    An array containing one or more CustomContents, defining additional content associated with the element. Assistive technologies, such as VoiceOver, will announce your custom content to the user at appropriate times.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var customContent: [CustomContent]
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    label: String?,
    +    value: String?,
    +    traits: Set<AccessibilityElement.Trait>,
    +    hint: String? = nil,
    +    identifier: String? = nil,
    +    accessibilityFrameSize: CGSize? = nil,
    +    accessibilityFrameCornerStyle: Box.CornerStyle = .square,
    +    customActions: [AccessibilityElement.CustomAction] = [],
    +    customContent: [AccessibilityElement.CustomContent] = [],
    +    wrapping element: Element,
    +    configure: (inout Self) -> Void = { _ in }
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Trait + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Trait
    +
    extension AccessibilityElement.Trait: Hashable, Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + CustomAction + +
    +
    +
    +
    +
    +
    +

    Used to provide additional functionality to assistive technologies beyond your accessible UI.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct CustomAction : Equatable, Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + CustomContent + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct CustomContent
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AccessibilityElement/CustomAction.html b/Structs/AccessibilityElement/CustomAction.html new file mode 100644 index 000000000..ce2678a84 --- /dev/null +++ b/Structs/AccessibilityElement/CustomAction.html @@ -0,0 +1,839 @@ + + + + CustomAction Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CustomAction

+
+
+ +
public struct CustomAction : Equatable, Hashable
+ +
+
+

Used to provide additional functionality to assistive technologies beyond your accessible UI.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + OnActivation + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias OnActivation = () -> Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    A localized name that discribes the action.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + image + +
    +
    +
    +
    +
    +
    +

    An image representing the action to be shown with some assistive technologies such as Switch Control.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var image: UIImage?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onActivation + +
    +
    +
    +
    +
    +
    +

    A Callback for when the action is activated. This should return a bool indicating success or failure of the action.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onActivation: OnActivation
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(name: String, image: UIImage? = nil, onActivation: @escaping OnActivation)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: AccessibilityElement.CustomAction, rhs: AccessibilityElement.CustomAction) -> Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hash(into:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hash(into hasher: inout Hasher)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AccessibilityElement/CustomContent.html b/Structs/AccessibilityElement/CustomContent.html new file mode 100644 index 000000000..bc0d45e7e --- /dev/null +++ b/Structs/AccessibilityElement/CustomContent.html @@ -0,0 +1,811 @@ + + + + CustomContent Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CustomContent

+
+
+ +
public struct CustomContent
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Importance + +
    +
    +
    +
    +
    +
    +

    The importance of the content.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Importance : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + label + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var label: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var value: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + importance + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var importance: Importance
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(label: String, value: String? = nil, importance: Importance = .default)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + axCustomContent + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var axCustomContent: AXCustomContent { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AccessibilityElement/CustomContent/Importance.html b/Structs/AccessibilityElement/CustomContent/Importance.html new file mode 100644 index 000000000..d2d84bfb7 --- /dev/null +++ b/Structs/AccessibilityElement/CustomContent/Importance.html @@ -0,0 +1,709 @@ + + + + Importance Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Importance

+
+
+ +
public enum Importance : Equatable
+ +
+
+

The importance of the content.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + default + +
    +
    +
    +
    +
    +
    +

    By default custom content is available through the rotor.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case `default`
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + high + +
    +
    +
    +
    +
    +
    +

    In addtion to being available through the rotor, high importance content will announced in the main VoiceOver utterance. +High Importance content is announced follllowing the accessibilityValue but preceding any accessibilityHint.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case high
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AccessibilityElement/Trait.html b/Structs/AccessibilityElement/Trait.html new file mode 100644 index 000000000..994cd92ff --- /dev/null +++ b/Structs/AccessibilityElement/Trait.html @@ -0,0 +1,1204 @@ + + + + Trait Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Trait

+
+
+ +
public enum Trait
+
extension AccessibilityElement.Trait: Hashable, Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + IncrementAction + +
    +
    +
    +
    +
    +
    +

    Used in conjunction with UIAccessibilityTrait.adjustable, these will be called to allow accessible adjustment of a value, for example in a slider or stepper control. +See Accessibility Increment Documentation for further information.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias IncrementAction = () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + DecrementAction + +
    +
    +
    +
    +
    +
    +

    Used in conjunction with UIAccessibilityTrait.adjustable, these will be called to allow accessible adjustment of a value, for example in a slider or stepper control. +See Accessibility Decrement Documentation for further information.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias DecrementAction = () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + button + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case button
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + link + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case link
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + header + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case header
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + searchField + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case searchField
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + image + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case image
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + selected + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case selected
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + playsSound + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case playsSound
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyboardKey + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case keyboardKey
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + staticText + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case staticText
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + summaryElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case summaryElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + notEnabled + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case notEnabled
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updatesFrequently + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case updatesFrequently
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + startsMediaSession + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case startsMediaSession
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + adjustable(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case adjustable(IncrementAction, DecrementAction)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case allowsDirectInteraction
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + causesPageTurn + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case causesPageTurn
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tabBar + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case tabBar
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: AccessibilityElement.Trait, rhs: AccessibilityElement.Trait) -> Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hash(into:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hash(into hasher: inout Hasher)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AccessibilityFocus.html b/Structs/AccessibilityFocus.html new file mode 100644 index 000000000..5994bd85b --- /dev/null +++ b/Structs/AccessibilityFocus.html @@ -0,0 +1,844 @@ + + + + AccessibilityFocus Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AccessibilityFocus

+
+
+ +
public struct AccessibilityFocus : Element
+ +
+
+

Enables VoiceOver focus to jump to the wrapped element via a trigger that can be manually fired.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The element that will have the focus.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trigger + +
    +
    +
    +
    +
    +
    +

    A object that can be held on to by the caller to manually trigger a focus.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var trigger: Trigger
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new AccessibilityFocus wrapping the provided element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    wrapping wrapped: Element,
    +    trigger: Trigger
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+ +
+
+
+ + +
+ +

Trigger +

+
+
+
    +
  • +
    + + + + Trigger + +
    +
    +
    +
    +
    +
    +

    A trigger that can be used to manually fire an accessibility focus.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Trigger
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AccessibilityFocus/Trigger.html b/Structs/AccessibilityFocus/Trigger.html new file mode 100644 index 000000000..8e6e11a55 --- /dev/null +++ b/Structs/AccessibilityFocus/Trigger.html @@ -0,0 +1,796 @@ + + + + Trigger Class Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Trigger

+
+
+ +
public final class Trigger
+ +
+
+

A trigger that can be used to manually fire an accessibility focus.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + notificationType + +
    +
    +
    +
    +
    +
    +

    The type of accessibility notification that will be triggered.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var notificationType: UIAccessibility.Notification
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + identifier + +
    +
    +
    +
    +
    +
    +

    An optional identifier for the trigger.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var identifier: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new trigger for the purpose of changing accessibility focus.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    notificationType: UIAccessibility.Notification = .layoutChanged,
    +    identifier: AnyHashable? = nil
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + notificationType + + +
    +

    Type of accessibility notification to trigger. Defaults to .layoutChanged. Limited to .layoutChanged or .screenChanged.

    +
    +
    + + identifier + + +
    +

    An optional identifier for the trigger. Defaults to nil.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + focus() + +
    +
    +
    +
    +
    +
    +

    Manually fire the trigger

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func focus()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AdaptedEnvironment.html b/Structs/AdaptedEnvironment.html new file mode 100644 index 000000000..4360363d1 --- /dev/null +++ b/Structs/AdaptedEnvironment.html @@ -0,0 +1,947 @@ + + + + AdaptedEnvironment Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AdaptedEnvironment

+
+
+ +
public struct AdaptedEnvironment : Element
+ +
+
+

Wraps an element tree with a modified environment.

+ +

By specifying environmental values with this element, all child elements nested +will automatically inherit those values automatically. Values can be changed +anywhere in a sub-tree by inserting another AdaptedEnvironment element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Adapter + +
    +
    +
    +
    +
    +
    +

    Takes in a mutable Environment which can be mutated to add or override values.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Adapter = (inout Environment) -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(by:wrapping:) + +
    +
    +
    +
    +
    +
    +

    Wraps an element with an environment that is modified using the given +configuration block.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    by adapt: @escaping Adapter,
    +    wrapping wrapped: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + by + + +
    +

    A block that will set environmental values.

    +
    +
    + + wrapping + + +
    +

    The element to be wrapped.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Wraps an element with an environment that is modified for a single key and value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Key>(
    +    key: Key.Type,
    +    value: Key.Value,
    +    wrapping child: Element
    +) where Key: EnvironmentKey
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + key + + +
    +

    The environment key to modify.

    +
    +
    + + value + + +
    +

    The new environment value to cascade.

    +
    +
    + + wrapping + + +
    +

    The element to be wrapped.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Wraps an element with an environment that is modified for a single value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Value>(
    +    keyPath: WritableKeyPath<Environment, Value>,
    +    value: Value,
    +    wrapping child: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + keyPath + + +
    +

    The keypath of the environment value to modify.

    +
    +
    + + value + + +
    +

    The new environment value to cascade.

    +
    +
    + + wrapping + + +
    +

    The element to be wrapped.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Aligned.html b/Structs/Aligned.html new file mode 100644 index 000000000..376d902d4 --- /dev/null +++ b/Structs/Aligned.html @@ -0,0 +1,922 @@ + + + + Aligned Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Aligned

+
+
+ +
public struct Aligned : Element
+ +
+
+

Aligns a content element within itself. The vertical and horizontal alignment may be set independently.

+ +

When using alignment mode .fill, the content is scaled to the width or height of the Aligned element.

+ +

For other modes, the size of the content element is determined by calling measure(in:) +on the content element – even if that size is larger than the wrapping element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + VerticalAlignment + +
    +
    +
    +
    +
    +
    +

    The possible vertical alignment values.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum VerticalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + HorizontalAlignment + +
    +
    +
    +
    +
    +
    +

    The possible horizontal alignment values.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The content element to be aligned.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + verticalAlignment + +
    +
    +
    +
    +
    +
    +

    The vertical alignment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var verticalAlignment: VerticalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontalAlignment + +
    +
    +
    +
    +
    +
    +

    The horizontal alignment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var horizontalAlignment: HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes an Aligned with the given content element and alignments.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    vertically verticalAlignment: VerticalAlignment = .center,
    +    horizontally horizontalAlignment: HorizontalAlignment = .center,
    +    wrapping wrappedElement: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + vertically + + +
    +

    The vertical alignment. Defaults to centered.

    +
    +
    + + horizontally + + +
    +

    The horizontal alignment. Defaults to centered.

    +
    +
    + + wrapping + + +
    +

    The content element to be aligned.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Aligned/HorizontalAlignment.html b/Structs/Aligned/HorizontalAlignment.html new file mode 100644 index 000000000..f6c34bfbe --- /dev/null +++ b/Structs/Aligned/HorizontalAlignment.html @@ -0,0 +1,764 @@ + + + + HorizontalAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

HorizontalAlignment

+
+
+ +
public enum HorizontalAlignment
+ +
+
+

The possible horizontal alignment values.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    Aligns the content to the leading edge of the containing element. +In left-to-right languages, this is the left edge.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case leading
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Centers the content horizontally.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    Aligns the content to the trailing edge of the containing element. +In left-to-right languages, this is the right edge.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case trailing
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    The content fills the full horizontal width of the containing element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Aligned/VerticalAlignment.html b/Structs/Aligned/VerticalAlignment.html new file mode 100644 index 000000000..26bdeec94 --- /dev/null +++ b/Structs/Aligned/VerticalAlignment.html @@ -0,0 +1,762 @@ + + + + VerticalAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

VerticalAlignment

+
+
+ +
public enum VerticalAlignment
+ +
+
+

The possible vertical alignment values.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    Aligns the content to the top edge of the containing element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case top
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Centers the content vertically.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    Aligns the content to the bottom edge of the containing element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottom
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    The content fills the full vertical height of the containing element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Alignment.html b/Structs/Alignment.html new file mode 100644 index 000000000..772b827d8 --- /dev/null +++ b/Structs/Alignment.html @@ -0,0 +1,978 @@ + + + + Alignment Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Alignment

+
+
+ +
public struct Alignment : Equatable
+ +
+
+

An alignment in both axes.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    A guide marking the center of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    A guide marking the leading edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let leading: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    A guide marking the trailing edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let trailing: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    A guide marking the top edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    A guide marking the bottom edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topLeading + +
    +
    +
    +
    +
    +
    +

    A guide marking the top and leading edges of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topLeading: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topTrailing + +
    +
    +
    +
    +
    +
    +

    A guide marking the top and trailing edges of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topTrailing: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomLeading + +
    +
    +
    +
    +
    +
    +

    A guide marking the bottom and leading edges of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomLeading: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomTrailing + +
    +
    +
    +
    +
    +
    +

    A guide marking the bottom and trailing edges of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomTrailing: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontal + +
    +
    +
    +
    +
    +
    +

    The alignment on the horizontal axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var horizontal: HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + vertical + +
    +
    +
    +
    +
    +
    +

    The alignment on the vertical axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var vertical: VerticalAlignment
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates an instance with the given horizontal and vertical alignments.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(horizontal: HorizontalAlignment, vertical: VerticalAlignment)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AnimationAttributes.html b/Structs/AnimationAttributes.html new file mode 100644 index 000000000..f317b96c6 --- /dev/null +++ b/Structs/AnimationAttributes.html @@ -0,0 +1,791 @@ + + + + AnimationAttributes Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AnimationAttributes

+
+
+ +
public struct AnimationAttributes
+ +
+
+

UIView animation configuration values.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + duration + +
    +
    +
    +
    +
    +
    +

    The duration of the animation.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var duration: TimeInterval
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + curve + +
    +
    +
    +
    +
    +
    +

    The timing curve of the animation.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var curve: UIView.AnimationCurve
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + allowUserInteraction + +
    +
    +
    +
    +
    +
    +

    Whether the view supports user interaction during the animation.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var allowUserInteraction: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + default + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let `default`: `Self`
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    duration: TimeInterval = 0.2,
    +    curve: UIView.AnimationCurve = .easeInOut,
    +    allowUserInteraction: Bool = true
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AspectRatio.html b/Structs/AspectRatio.html new file mode 100644 index 000000000..765793301 --- /dev/null +++ b/Structs/AspectRatio.html @@ -0,0 +1,812 @@ + + + + AspectRatio Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AspectRatio

+
+
+ +
public struct AspectRatio
+ +
+
+

Represents an a proportional relationship between width and height.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + square + +
    +
    +
    +
    +
    +
    +

    A 1:1 aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let square: AspectRatio
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ratio + +
    +
    +
    +
    +
    +
    +

    The width:height ratio value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var ratio: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(width:height:) + +
    +
    +
    +
    +
    +
    +

    Initializes with a width & height ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(width: CGFloat, height: CGFloat)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + width + + +
    +

    The relative width of the ratio.

    +
    +
    + + height + + +
    +

    The relative height of the ratio.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(ratio:) + +
    +
    +
    +
    +
    +
    +

    Initializes with a specific ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(ratio: CGFloat)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + ratio + + +
    +

    The width:height ratio.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AttributedLabel.html b/Structs/AttributedLabel.html new file mode 100644 index 000000000..f847e67de --- /dev/null +++ b/Structs/AttributedLabel.html @@ -0,0 +1,1215 @@ + + + + AttributedLabel Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AttributedLabel

+
+
+ +
public struct AttributedLabel : Element, Hashable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + attributedText + +
    +
    +
    +
    +
    +
    +

    The attributed text to render in the label.

    + +

    If you customize the line break mode using an NSParagraphStyle, the mode will be normalized +based on the number of lines allowed. This is because some line break modes are incompatible +with multi-line text rendering in TextKit, which is used to detect where links are in the text. +Some modes also break line height adjustment in single-line labels, so these are also normalized.

    + +

    Specifically:

    + +
      +
    • 1 line labels with a mode of byCharWrapping or byWordWrapping will be normalized to byClipping.
    • +
    • Multiline labels with a mode of byTruncatingHead or byTruncatingMiddle +will be normalized to byTruncatingTail.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributedText: NSAttributedString
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + numberOfLines + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var numberOfLines: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shadow + +
    +
    +
    +
    +
    +
    +

    A shadow to display behind the label’s text. Defaults to no shadow.

    +
    +

    Note

    + This shadow is applied using the backing view’s CALayer, and will affect the +entire label. To apply a shadow to only a portion of text, you can instead set +NSAttributedString.Key.shadow on the string, but note that those shadows may be clipped +by the bounds of the backing view. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadow: TextShadow?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + textRectOffset + +
    +
    +
    +
    +
    +
    +

    An offset that will be applied to the rect used by drawText(in:).

    + +

    This can be used to adjust the positioning of text within each line’s frame, such as adjusting +the way text is distributed within the line height.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var textRectOffset: UIOffset
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Determines if the label should be included when navigating the UI via accessibility.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isAccessibilityElement: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A Boolean value that determines whether the label reduces the text’s font +size to fit the title string into the label’s bounding rectangle.

    + +

    Normally, the label draws the text with the font you specify in the font property. +If this property is true, and the text in the text property exceeds the label’s bounding rectangle, +the label reduces the font size until the text fits or it has scaled the font down to the minimum +font size. The default value for this property is false.

    + +

    If you change it to true, be sure that you also set an appropriate minimum +font scale by modifying the minimumScaleFactor property.

    + +

    This autoshrinking behavior is only intended for use with a single-line label.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var adjustsFontSizeToFitWidth: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimumScaleFactor + +
    +
    +
    +
    +
    +
    +

    The minimum scale factor for the label’s text.

    + +

    If the adjustsFontSizeToFitWidth is true, use this property to specify the +smallest multiplier for the current font size that yields an acceptable +font size for the label’s text.

    + +

    If you specify a value of 0 for this property, the label doesn’t scale the text down. +The default value of this property is 0.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumScaleFactor: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A Boolean value that determines whether the label tightens text before truncating.

    + +

    When the value of this property is true, the label tightens intercharacter spacing +of its text before allowing any truncation to occur. The label determines the +maximum amount of tightening automatically based on the font, current line width, +line break mode, and other relevant information.

    + +

    This autoshrinking behavior is only intended for use with a single-line label.

    + +

    The default value of this property is false.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var allowsDefaultTighteningForTruncation: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityTraits + +
    +
    +
    +
    +
    +
    +

    A set of accessibility traits that should be applied to the label, these will be merged with any existing traits.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityTraits: Set<AccessibilityElement.Trait>?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityHint + +
    +
    +
    +
    +
    +
    +

    A localized string that describes the result of performing an action on the element, when the result is non-obvious.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityHint: String?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    An array containing one or more AccessibilityElement.CustomActions, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityCustomActions: [AccessibilityElement.CustomAction]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + linkDetectionTypes + +
    +
    +
    +
    +
    +
    +

    A set of data types to detect and automatically link in the label.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var linkDetectionTypes: Set<LinkDetectionType>
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + linkAttributes + +
    +
    +
    +
    +
    +
    +

    A set of attributes to apply to links in the string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var linkAttributes: [NSAttributedString.Key : AnyHashable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + activeLinkAttributes + +
    +
    +
    +
    +
    +
    +

    A set of attributes to apply to links when they are touched.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var activeLinkAttributes: [NSAttributedString.Key : AnyHashable]
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(attributedText: NSAttributedString, configure: (inout `Self`) -> Void = { _ in })
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+ +
+
+
+ + +
+ +

Models +

+
+
+
    +
  • +
    + + + + LinkDetectionType + +
    +
    +
    +
    +
    +
    +

    Types of data that can be detected and automatically turned into links.

    + +

    Corresponds to NSTextCheckingResult.CheckingType types.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LinkDetectionType : Equatable, Hashable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AttributedLabel/LinkDetectionType.html b/Structs/AttributedLabel/LinkDetectionType.html new file mode 100644 index 000000000..68ddb658f --- /dev/null +++ b/Structs/AttributedLabel/LinkDetectionType.html @@ -0,0 +1,764 @@ + + + + LinkDetectionType Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LinkDetectionType

+
+
+ +
public enum LinkDetectionType : Equatable, Hashable
+ +
+
+

Types of data that can be detected and automatically turned into links.

+ +

Corresponds to NSTextCheckingResult.CheckingType types.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + date + +
    +
    +
    +
    +
    +
    +

    Detect date strings. Tapping a date opens the calendar to that date.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case date
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + address + +
    +
    +
    +
    +
    +
    +

    Detect addresses. Tapping the address opens Maps with that address.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case address
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + link + +
    +
    +
    +
    +
    +
    +

    Detect URLs. Tapping the link opens the URL.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case link
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + phoneNumber + +
    +
    +
    +
    +
    +
    +

    Detect phone numbers. Tapping the phone number prompts the user to call it.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case phoneNumber
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AttributedText.html b/Structs/AttributedText.html new file mode 100644 index 000000000..6abcc42b0 --- /dev/null +++ b/Structs/AttributedText.html @@ -0,0 +1,959 @@ + + + + AttributedText Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AttributedText

+
+
+ +
@dynamicMemberLookup
+public struct AttributedText
+ +
+
+

AttributedText allows you to apply strongly-typed attributes to strings (much like the AttributedString type +introduced in iOS 15). You can then access the attributedString property to get an attributed string with those +attributes applied.

+ +

For example:

+
var text = AttributedText(string: "Hello, world")
+// Apply a font to the entire range
+text.font = .systemFont(ofSize: 20)
+
+// Apply a color to part of the string
+let range = text.string.range(of: "world")!
+text[range].color = .blue
+
+// Render the attributed text
+let label = AttributedLabel(attributedText: text.attributedString)
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + string + +
    +
    +
    +
    +
    +
    +

    The wrapped string, with no attributes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let string: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributedString + +
    +
    +
    +
    +
    +
    +

    An NSAttributedString representation of the attributed text.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributedString: NSAttributedString { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + runs + +
    +
    +
    +
    +
    +
    +

    An iterable view into segments of the attributed string, each of which indicates where a run of identical +attributes begins or ends.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var runs: [Run] { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Create some AttributedText from a plain string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ string: String)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Create some AttributedText from an attributed string. The attributes are preserved.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ attributedString: NSAttributedString)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + range(of:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func range(of aString: some StringProtocol) -> Range<String.Index>?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Dynamic member getter or setter for any attributes defined on TextAttributeContainer. +Applies the attribute to the entire range of text, for example:

    +
    var text = AttributedText(string: "Hello, world")
    +text.font = .systemFont(ofSize: 20)
    +
    + +

    Note that only attributes applying to the entire range will be returned. For example, if the text +has two different font attributes, then text.font will be nil.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Value>(dynamicMember keyPath: WritableKeyPath<TextAttributeContainer, Value>) -> Value { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Get or set a TextAttributeContainer for the provided range of text. This allows you to set attributes +for specific ranges using strong types:

    +
    var text = AttributedText(string: "Hello, world")
    +let range = text.string.range(of: "Hello")!
    +text[range].font = .systemFont(ofSize: 20)
    +
    + +

    Note that the returned TextAttributeContainer will only contain attributes that apply to the entire subscript +range. (Setting an attribute will set it across the subscript range regardless of any existing contents).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<R>(range: R) -> TextAttributeContainer where R : RangeExpression, R.Bound == String.Index { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +(_:_:) + +
    +
    +
    +
    +
    +
    +

    Concatenate two pieces of AttributedText together.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func + (lhs: AttributedText, rhs: AttributedText) -> AttributedText
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Run + +
    +
    +
    +
    +
    +
    +

    A Run represents a range of identical attributes in the attributed text.

    + +

    You can access any properties of TextAttributeContainer on this type using dynamic member lookup.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @dynamicMemberLookup
    +public struct Run
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/AttributedText/Run.html b/Structs/AttributedText/Run.html new file mode 100644 index 000000000..586cc18fb --- /dev/null +++ b/Structs/AttributedText/Run.html @@ -0,0 +1,741 @@ + + + + Run Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Run

+
+
+ +
@dynamicMemberLookup
+public struct Run
+ +
+
+

A Run represents a range of identical attributes in the attributed text.

+ +

You can access any properties of TextAttributeContainer on this type using dynamic member lookup.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + range + +
    +
    +
    +
    +
    +
    +

    The range of the run of attributes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let range: Range<String.Index>
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    The attributes that apply to this run.

    + +

    Note that you can access properties of the attribute container directly on the Run itself, since it +implements dynamic member look up.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let attributes: TextAttributeContainer
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Dynamic member getter for the TextAttributeContainer of this run.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Value>(dynamicMember keyPath: KeyPath<TextAttributeContainer, Value>) -> Value { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/BlueprintViewRenderMetrics.html b/Structs/BlueprintViewRenderMetrics.html new file mode 100644 index 000000000..3c3237b9d --- /dev/null +++ b/Structs/BlueprintViewRenderMetrics.html @@ -0,0 +1,788 @@ + + + + BlueprintViewRenderMetrics Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

BlueprintViewRenderMetrics

+
+
+ +
public struct BlueprintViewRenderMetrics
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + layoutMode + +
    +
    +
    +
    +
    +
    +

    The layout mode used to render the view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutMode: LayoutMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + startTimestamp + +
    +
    +
    +
    +
    +
    +

    The mach time in seconds at which the view render started (from CACurrentMediaTime()).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var startTimestamp: TimeInterval
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + totalDuration + +
    +
    +
    +
    +
    +
    +

    The total time it took to apply a new element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var totalDuration: TimeInterval
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutDuration + +
    +
    +
    +
    +
    +
    +

    The time it took to lay out and measure the new element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutDuration: TimeInterval
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + viewUpdateDuration + +
    +
    +
    +
    +
    +
    +

    The time it took to update the on-screen views for the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var viewUpdateDuration: TimeInterval
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Box.html b/Structs/Box.html new file mode 100644 index 000000000..de569151c --- /dev/null +++ b/Structs/Box.html @@ -0,0 +1,1038 @@ + + + + Box Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Box

+
+
+ +
public struct Box : Element
+ +
+
+

A simple element that wraps a child element and adds visual styling including +background color.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + backgroundColor + +
    +
    +
    +
    +
    +
    +

    The background color to show in the box.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var backgroundColor: UIColor
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + cornerStyle + +
    +
    +
    +
    +
    +
    +

    The corner style to apply, eg rounded, capsule, or normal, square corners.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var cornerStyle: CornerStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + cornerCurve + +
    +
    +
    +
    +
    +
    +

    How to style the curves when cornerStyle is non-square.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var cornerCurve: CornerCurve
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + borderStyle + +
    +
    +
    +
    +
    +
    +

    The border to apply around the edges of the box.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var borderStyle: BorderStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shadowStyle + +
    +
    +
    +
    +
    +
    +

    The shadow style to apply to the outside of the box.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowStyle: ShadowStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + clipsContent + +
    +
    +
    +
    +
    +
    +

    If content placed within the box should be clipped.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var clipsContent: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    backgroundColor: UIColor = .clear,
    +    cornerStyle: CornerStyle = .square,
    +    cornerCurve: CornerCurve = .circular,
    +    borderStyle: BorderStyle = .none,
    +    shadowStyle: ShadowStyle = .none,
    +    clipsContent: Bool = false,
    +    wrapping element: Element? = nil
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + CornerStyle + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum CornerStyle : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + CornerCurve + +
    +
    +
    +
    +
    +
    +

    Specifies the curve style when showing rounded corners on a Box.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum CornerCurve : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + BorderStyle + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum BorderStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ShadowStyle + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ShadowStyle
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Box/BorderStyle.html b/Structs/Box/BorderStyle.html new file mode 100644 index 000000000..c4c4607ad --- /dev/null +++ b/Structs/Box/BorderStyle.html @@ -0,0 +1,705 @@ + + + + BorderStyle Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

BorderStyle

+
+
+ +
public enum BorderStyle
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + none + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case none
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + solid(color:width:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case solid(color: UIColor, width: CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Box/CornerCurve.html b/Structs/Box/CornerCurve.html new file mode 100644 index 000000000..108597489 --- /dev/null +++ b/Structs/Box/CornerCurve.html @@ -0,0 +1,711 @@ + + + + CornerCurve Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CornerCurve

+
+
+ +
public enum CornerCurve : Equatable
+ +
+
+

Specifies the curve style when showing rounded corners on a Box.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + circular + +
    +
    +
    +
    +
    +
    +

    Provides a standard-style corner radius as you would see in design tools like Figma.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case circular
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + continuous + +
    +
    +
    +
    +
    +
    +

    Provides an iOS icon-style corner radius.

    +

    Note

    + +

    Only appears on iOS 13 and later. Before iOS 13, circular corners will be displayed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case continuous
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Box/CornerStyle.html b/Structs/Box/CornerStyle.html new file mode 100644 index 000000000..dcdd04f18 --- /dev/null +++ b/Structs/Box/CornerStyle.html @@ -0,0 +1,758 @@ + + + + CornerStyle Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CornerStyle

+
+
+ +
public enum CornerStyle : Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + square + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case square
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + capsule + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case capsule
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case rounded(radius: CGFloat, corners: Corners = .all)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Corners + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Corners : OptionSet, Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Box/CornerStyle/Corners.html b/Structs/Box/CornerStyle/Corners.html new file mode 100644 index 000000000..2cf304d79 --- /dev/null +++ b/Structs/Box/CornerStyle/Corners.html @@ -0,0 +1,939 @@ + + + + Corners Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Corners

+
+
+ +
public struct Corners : OptionSet, Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + rawValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let rawValue: UInt8
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(rawValue:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(rawValue: UInt8)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topLeft + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topLeft: Box.CornerStyle.Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topRight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topRight: Box.CornerStyle.Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomLeft + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomLeft: Box.CornerStyle.Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomRight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomRight: Box.CornerStyle.Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + all + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let all: Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + left + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let left: Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + right + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let right: Corners
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Box/ShadowStyle.html b/Structs/Box/ShadowStyle.html new file mode 100644 index 000000000..f9f8d17b9 --- /dev/null +++ b/Structs/Box/ShadowStyle.html @@ -0,0 +1,705 @@ + + + + ShadowStyle Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ShadowStyle

+
+
+ +
public enum ShadowStyle
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + none + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case none
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case simple(radius: CGFloat, opacity: CGFloat, offset: CGSize, color: UIColor)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Builder.html b/Structs/Builder.html new file mode 100644 index 000000000..f58284c5f --- /dev/null +++ b/Structs/Builder.html @@ -0,0 +1,946 @@ + + + + Builder Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Builder

+
+
+ +
@resultBuilder
+public struct Builder<Child>
+ +
+
+

Generic result builder for converting blocks of Child... into [Child].

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Children + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Children = [Child]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildBlock(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildBlock(_ children: Children...) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildOptional(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildOptional(_ children: Children?) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildEither(first:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildEither(first: Children) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildEither(second:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildEither(second: Children) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ child: Child) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    +

    This function is disfavored in case a builder wants to offer additional buildExpression functions to support +multiple types in their builders. @_disfavoredOverload allows the compiler to choose the other function when +nil is built, instead of it being ambiguous.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @_disfavoredOverload
    +public static func buildExpression(_ child: Child?) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildArray(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildArray(_ components: [Children]) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildArray(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildArray(_ components: Children) -> Children
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildLimitedAvailability(_ component: Children) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    +

    Allow for an array of Child to be flattened into the overall result.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ children: [Child]) -> Children
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Button.html b/Structs/Button.html new file mode 100644 index 000000000..a5ce11475 --- /dev/null +++ b/Structs/Button.html @@ -0,0 +1,837 @@ + + + + Button Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Button

+
+
+ +
public struct Button : Element
+ +
+
+

An element that wraps a child element in a button that mimics a UIButton with the .system style. That is, when +highlighted (or disabled), it fades its contents to partial alpha.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isEnabled: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onTap + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onTap: () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimumTappableSize + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumTappableSize: CGSize
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(isEnabled: Bool = true, onTap: @escaping () -> Void = {}, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Centered.html b/Structs/Centered.html new file mode 100644 index 000000000..162c020d9 --- /dev/null +++ b/Structs/Centered.html @@ -0,0 +1,738 @@ + + + + Centered Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Centered

+
+
+ +
public struct Centered : ProxyElement
+ +
+
+

Centers a content element within itself.

+ +

The size of the content element is determined by calling measure(in:) on +the content element – even if that size is larger than the wrapping Centered +element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The content element to be centered.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a Centered element with the given content element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ wrapped: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + elementRepresentation + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var elementRepresentation: Element { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Column.html b/Structs/Column.html new file mode 100644 index 000000000..6bfe6a33d --- /dev/null +++ b/Structs/Column.html @@ -0,0 +1,997 @@ + + + + Column Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Column

+
+
+ +
public struct Column : StackElement
+ +
+
+

Displays a list of items in a linear vertical layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + ColumnAlignment + +
    +
    +
    +
    +
    +
    +

    Describes how the column’s children will be horizontally aligned.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ColumnAlignment : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [(element: Element, traits: StackLayout.Traits, key: AnyHashable?)]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layout + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public private(set) var layout: StackLayout { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a Column, using result builder syntax. Columns display a list of items in a vertical +stack.

    +
    Column {
    +    Label(text: "Welcome")
    +
    +    TextField(text: username)
    +    TextField(text: password)
    +
    +    Button(
    +        onTap: handleSignIn,
    +        wrapping: Label(text: "Sign In")
    +    )
    +}
    +
    + +

    By default, each item in the column will be stretched or compressed with equal priority in +the event of overflow or underflow. You can control this behavior by adding a +stackLayoutChild modifier to an item.

    +
    Column {
    +    ImportantHeader()
    +        .stackLayoutChild(priority: .fixed)
    +
    +    LessImportantContent()
    +}
    +
    + +

    You can also use this modifier to add keys and alignment guides. See StackElement.add for +more information.

    +

    See Also

    + +

    StackElement.add()

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    alignment: ColumnAlignment = .leading,
    +    underflow: StackLayout.UnderflowDistribution = .spaceEvenly,
    +    overflow: StackLayout.OverflowDistribution = .condenseProportionally,
    +    minimumSpacing: CGFloat = 0,
    +    @ElementBuilder<StackLayout.Child> elements: () -> [StackLayout.Child]
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + +
    + + alignment + + +
    +

    Specifies how children will be aligned horizontally. Default: .leading

    +
    +
    + + underflow + + +
    +

    Determines the layout when there is extra free space available. Default: +.spaceEvenly

    +
    +
    + + overflow + + +
    +

    Determines the layout when there is not enough space to fit all children as +measured. Default: .condenseProportionally

    +
    +
    + + minimumSpacing + + +
    +

    Spacing in between elements. Default: 0

    +
    +
    + + elements + + +
    +

    A block containing all elements to be included in the stack.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + verticalUnderflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var verticalUnderflow: StackLayout.UnderflowDistribution { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + verticalOverflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var verticalOverflow: StackLayout.OverflowDistribution { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontalAlignment + +
    +
    +
    +
    +
    +
    +

    Specifies how children will be aligned horizontally.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var horizontalAlignment: ColumnAlignment { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumVerticalSpacing: CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Column/ColumnAlignment.html b/Structs/Column/ColumnAlignment.html new file mode 100644 index 000000000..5f780edc7 --- /dev/null +++ b/Structs/Column/ColumnAlignment.html @@ -0,0 +1,793 @@ + + + + ColumnAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ColumnAlignment

+
+
+ +
public enum ColumnAlignment : Equatable
+ +
+
+

Describes how the column’s children will be horizontally aligned.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    Children will be stretched to fit the horizontal size of the column.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + align(to:) + +
    +
    +
    +
    +
    +
    +

    Using the specified alignment, children will be aligned relatively to each other, and +then all the contents will be aligned to the column’s bounding box.

    + +

    This case can be used for custom alignments. For common alignments you can use the +existing static instancesleading, center, and trailing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case align(to: HorizontalAlignment)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the leading edge of the column.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let leading: Column.ColumnAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Children will be horizontally centered in the column.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: Column.ColumnAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the trailing edge of the column.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let trailing: Column.ColumnAlignment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ConstrainedAspectRatio.html b/Structs/ConstrainedAspectRatio.html new file mode 100644 index 000000000..5644c8d7c --- /dev/null +++ b/Structs/ConstrainedAspectRatio.html @@ -0,0 +1,886 @@ + + + + ConstrainedAspectRatio Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ConstrainedAspectRatio

+
+
+ +
public struct ConstrainedAspectRatio : Element
+ +
+
+

Constrains the size of the content element to an aspect ratio.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + ContentMode + +
    +
    +
    +
    +
    +
    +

    Represents how the content should size itself relative to its parent.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ContentMode : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The element being constrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + aspectRatio + +
    +
    +
    +
    +
    +
    +

    The target aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var aspectRatio: AspectRatio
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentMode + +
    +
    +
    +
    +
    +
    +

    Whether the aspect ratio should be reached by expanding the content element’s size to fill its parent +or shrinking it to fit.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentMode: ContentMode
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes with the given properties.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(aspectRatio: AspectRatio, contentMode: ContentMode = .fitContent, wrapping wrappedElement: Element)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + aspectRatio + + +
    +

    The aspect ratio that the content size should match.

    +
    +
    + + contentMode + + +
    +

    How the content should size itself relative to its parent.

    +
    +
    + + wrapping + + +
    +

    The content element.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ConstrainedAspectRatio/ContentMode.html b/Structs/ConstrainedAspectRatio/ContentMode.html new file mode 100644 index 000000000..f974cbf50 --- /dev/null +++ b/Structs/ConstrainedAspectRatio/ContentMode.html @@ -0,0 +1,789 @@ + + + + ContentMode Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ContentMode

+
+
+ +
public enum ContentMode : Equatable
+ +
+
+

Represents how the content should size itself relative to its parent.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + fillParent + +
    +
    +
    +
    +
    +
    +

    The content will be sized to fill its parent while +maintaining the specified aspect ratio.

    + +

    In legacy layout mode, if the parent is unconstrained in all dimensions, +the content size will be used for measurement and will behave like fitContent. If the +parent is unconstrained in one dimension, the element will fill the constrained +dimension.

    + +

    In caffeinated, if the parent is unconstrained in any dimension, this +element will report a size of infinity.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fillParent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fitParent + +
    +
    +
    +
    +
    +
    +

    The content will be sized to fit within its parent while maintaining the specified +aspect ratio.

    + +

    If the parent is unconstrained in one dimension, the element will fit the constrained +dimension.

    + +

    In legacy layout mode, if the parent is unconstrained in all dimensions, +the content size will be used for measurement and will behave like fitContent.

    + +

    In caffeinated layout mode, if the parent is unconstrained in both +dimensions, this element will report a size of infinity.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fitParent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fitContent + +
    +
    +
    +
    +
    +
    +

    The content will grow in whichever dimension is needed to maintain the aspect ratio, +while ensuring the content still fits.

    + +

    This mode does not take the parents applied size constraint into account, so the parent +may ultimately layout the element without the constrained aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fitContent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shrinkContent + +
    +
    +
    +
    +
    +
    +

    The content will shrink in whichever dimension is needed to maintain the aspect ratio, +meaning it may be smaller in one dimension than the measured size.

    + +

    This mode does not take the parents applied size constraint into account, so the parent +may ultimately layout the element without the constrained aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case shrinkContent
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ConstrainedSize.html b/Structs/ConstrainedSize.html new file mode 100644 index 000000000..d3992dde2 --- /dev/null +++ b/Structs/ConstrainedSize.html @@ -0,0 +1,855 @@ + + + + ConstrainedSize Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ConstrainedSize

+
+
+ +
public struct ConstrainedSize : Element
+ +
+
+

Constrains the measured size of the contained element in the ranges specified by the width and height properties.

+ +

There are several constraint types available for each axis. See ConstrainedSize.Constraint for a full list and in-depth +descriptions of each.

+

Notes

+ +

An important note is that the constraints of ConstrainedSize are authoritative during measurement. For example, +if your ConstrainedSize specifies .atLeast(300) for width, and the ConstrainedSize is asked to measure within +a SizeConstraint that is at most 100 points wide, the returned measurement will still be 300 points. The same goes for the +height of the ConstrainedSize.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The element whose measurement will be constrained by the ConstrainedSize.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + width + +
    +
    +
    +
    +
    +
    +

    The constraint to place on the width of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var width: Constraint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + height + +
    +
    +
    +
    +
    +
    +

    The constraint to place on the height of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var height: Constraint
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new ConstrainedSize with the provided constraint options.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    width: Constraint = .unconstrained,
    +    height: Constraint = .unconstrained,
    +    wrapping element: Element
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Constraint + +
    +
    +
    +
    +
    +
    +

    The available ways to constrain the measurement of a given axis within a ConstrainedSize element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Constraint : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ConstrainedSize/Constraint.html b/Structs/ConstrainedSize/Constraint.html new file mode 100644 index 000000000..bc742ca01 --- /dev/null +++ b/Structs/ConstrainedSize/Constraint.html @@ -0,0 +1,791 @@ + + + + Constraint Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Constraint

+
+
+ +
public enum Constraint : Equatable
+ +
+
+

The available ways to constrain the measurement of a given axis within a ConstrainedSize element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + unconstrained + +
    +
    +
    +
    +
    +
    +

    There is no constraint for this axis – the natural size of the element will be used.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case unconstrained
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + atMost(_:) + +
    +
    +
    +
    +
    +
    +

    The measured size for this axis will be no greater than the value provided.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case atMost(CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + atLeast(_:) + +
    +
    +
    +
    +
    +
    +

    The measured size for this axis will be no less than the value provided.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case atLeast(CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + within(_:) + +
    +
    +
    +
    +
    +
    +

    The measured size for this axis will be within the range provided. +If the measured value is below the bottom of the range, the lower value will be used. +If the measured value is above the top of the range, the lower value will be used.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case within(ClosedRange<CGFloat>)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + absolute(_:) + +
    +
    +
    +
    +
    +
    +

    The measured size for this axis will be exactly the value provided.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case absolute(CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Decorate.html b/Structs/Decorate.html new file mode 100644 index 000000000..34b25f962 --- /dev/null +++ b/Structs/Decorate.html @@ -0,0 +1,937 @@ + + + + Decorate Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Decorate

+
+
+ +
public struct Decorate : ProxyElement
+ +
+
+

Places a decoration element behind or in front of the given wrapped element, +and positions it according to the position parameter.

+ +

The size and position of the element is determined only by the wrapped +element, the decoration element does not affect the layout at all.

+

Example

+ +

The arrows represent the measured size of the element for layout purposes.

+
┌───────────────────┐     ┌──────┐
+    Decoration                
+ ┏━━━━━━━━━━━━━━━┓           ┣━━━━━━━━━━┓   
+                     └─┳────┘             
+     Wrapped               Wrapped       
+                                         
+ ┗━━━━━━━━━━━━━━━┛       ┗━━━━━━━━━━━━━━━┛   
+└───────────────────┘
+  ◀───────────────▶         ◀───────────────▶
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The element which provides the sizing and measurement. +The sizing and position of the Decorate element is determined +by this element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + decoration + +
    +
    +
    +
    +
    +
    +

    The element which is used to draw the decoration. +It does not affect sizing or positioning.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var decoration: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layering + +
    +
    +
    +
    +
    +
    +

    Where the decoration should be positioned in the z-axis: Above or below the wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layering: Layering
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + position + +
    +
    +
    +
    +
    +
    +

    How the decoration should be positioned in respect to the wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var position: Position
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new instance with the provided overflow, background, and wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    layering: Layering,
    +    position: Position,
    +    wrapping: Element,
    +    decoration: Element
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

ProxyElement +

+
+
+
    +
  • +
    + + + + elementRepresentation + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var elementRepresentation: Element { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Layering + +
    +
    +
    +
    +
    +
    +

    If the decoration should be positioned above or below the content element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Layering : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Corner + +
    +
    +
    +
    +
    +
    +

    What corner the decoration element should be positioned in.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Corner : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Position + +
    +
    +
    +
    +
    +
    +

    How to position the decoration element relative to the content element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Position
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Decorate/Corner.html b/Structs/Decorate/Corner.html new file mode 100644 index 000000000..d65e7e676 --- /dev/null +++ b/Structs/Decorate/Corner.html @@ -0,0 +1,758 @@ + + + + Corner Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Corner

+
+
+ +
public enum Corner : Equatable
+ +
+
+

What corner the decoration element should be positioned in.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + topLeft + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case topLeft
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topRight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case topRight
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomRight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottomRight
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomLeft + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottomLeft
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Decorate/Layering.html b/Structs/Decorate/Layering.html new file mode 100644 index 000000000..0ea29e35e --- /dev/null +++ b/Structs/Decorate/Layering.html @@ -0,0 +1,708 @@ + + + + Layering Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Layering

+
+
+ +
public enum Layering : Equatable
+ +
+
+

If the decoration should be positioned above or below the content element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + above + +
    +
    +
    +
    +
    +
    +

    The decoration is displayed above the content element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case above
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + below + +
    +
    +
    +
    +
    +
    +

    The decoration is displayed below the content element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case below
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Decorate/Position.html b/Structs/Decorate/Position.html new file mode 100644 index 000000000..595727485 --- /dev/null +++ b/Structs/Decorate/Position.html @@ -0,0 +1,904 @@ + + + + Position Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Position

+
+
+ +
public struct Position
+ +
+
+

How to position the decoration element relative to the content element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + inset(_:) + +
    +
    +
    +
    +
    +
    +

    Insets the decoration element on each edge by the amount specified by +the UIEdgeInsets property.

    + +

    A positive value for an edge expands the decoration outside of that edge, +whereas a negative inset pushes the the decoration inside that edge.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func inset(_ inset: UIEdgeInsets) -> Decorate.Position
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(_:) + +
    +
    +
    +
    +
    +
    +

    Provides a .inset position where the decoration is inset by the +same amount on each side.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func inset(_ amount: CGFloat) -> Decorate.Position
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Provides a .inset position where the decoration is inset by the +horizontal amount on the left and right, and the vertical amount on the top and bottom.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func inset(horizontal: CGFloat = 0.0, vertical: CGFloat = 0.0) -> Decorate.Position
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Aligns the decoration according the given alignment option, optionally adjusting it with +an alignment guide on either axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func aligned(
    +    to alignment: Alignment,
    +    horizontalGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    verticalGuide: ((ElementDimensions) -> CGFloat)? = nil
    +) -> Self
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + alignment + + +
    +

    Determines the position of the decoration relative to the decorated +content.

    +
    +
    + + horizontalGuide + + +
    +

    +
    +
    + + verticalGuide + + +
    +

    +
    +
    +
    +
    +

    Return Value

    +

    An aligned position.

    +
    +
    +
    +
  • +
  • +
    + + + + corner(_:_:) + +
    +
    +
    +
    +
    +
    +

    The decoration element is positioned in the given corner of the +content element, optionally offset by the provided amount.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func corner(_ corner: Corner, _ offset: UIOffset = .zero) -> Decorate.Position
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + custom(_:) + +
    +
    +
    +
    +
    +
    +

    Allows you to provide custom positioning for the decoration, based on the passed context.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func custom(_ position: @escaping (PositionContext) -> CGRect) -> Decorate.Position
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + PositionContext + +
    +
    +
    +
    +
    +
    +

    Information provided to Position closures.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct PositionContext
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Decorate/Position/PositionContext.html b/Structs/Decorate/Position/PositionContext.html new file mode 100644 index 000000000..348584fe5 --- /dev/null +++ b/Structs/Decorate/Position/PositionContext.html @@ -0,0 +1,735 @@ + + + + PositionContext Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

PositionContext

+
+
+ +
public struct PositionContext
+ +
+
+

Information provided to Position closures.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + decorationSize + +
    +
    +
    +
    +
    +
    +

    The size of the decoration being positioned within the decorated content’s bounds.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var decorationSize: CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentSize + +
    +
    +
    +
    +
    +
    +

    The size of the content element within the Decorate element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentSize: CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + environment + +
    +
    +
    +
    +
    +
    +

    The environment the element is being rendered in.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var environment: Environment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/EditingMenu.html b/Structs/EditingMenu.html new file mode 100644 index 000000000..731a5e8df --- /dev/null +++ b/Structs/EditingMenu.html @@ -0,0 +1,920 @@ + + + + EditingMenu Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EditingMenu

+
+
+ +
public struct EditingMenu : Element
+ +
+
+

Allows showing the system’s UIMenuController editing menu.

+ +

You can show the menu upon tap or long press:

+
myElement.editingMenu(show: .onLongPress) {
+    EditingMenuItem.copying("A String")
+
+    EditingMenuItem(.select) {
+        print("Selected!")
+    }
+}
+
+ +

You can also show the menu as a result of another element’s onTap closure, +using the trigger-based API:

+
EditingMenu { menu in
+    MyRow(text: "Hello, World") {
+        menu.show()
+    }
+} items: {
+    EditingMenuItem.copying("A String")
+}
+
+ +
+
+ +
+
+
+ +
+
+
+ + +
+ +

Element +

+
+
+
    +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Gesture + +
    +
    +
    +
    +
    +
    +

    The gesture to use to show the menu.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Gesture
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MenuTrigger + +
    +
    +
    +
    +
    +
    +

    A trigger that you can use to show the menu based on the result of some other +action firing, such as the onTap or onSelect of another element.

    +
    EditingMenu { menu in
    +    MyRow(text: "Hello, World") {
    +        menu.show()
    +    }
    +} items: {
    +    EditingMenuItem.copying("A String")
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class MenuTrigger
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/EditingMenu/Gesture.html b/Structs/EditingMenu/Gesture.html new file mode 100644 index 000000000..4ced98427 --- /dev/null +++ b/Structs/EditingMenu/Gesture.html @@ -0,0 +1,708 @@ + + + + Gesture Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Gesture

+
+
+ +
public enum Gesture
+ +
+
+

The gesture to use to show the menu.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + onTap + +
    +
    +
    +
    +
    +
    +

    The menu will be shown when the element is tapped.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case onTap
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onLongPress + +
    +
    +
    +
    +
    +
    +

    The menu will be shown when the element is long pressed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case onLongPress
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/EditingMenu/MenuTrigger.html b/Structs/EditingMenu/MenuTrigger.html new file mode 100644 index 000000000..324b02053 --- /dev/null +++ b/Structs/EditingMenu/MenuTrigger.html @@ -0,0 +1,690 @@ + + + + MenuTrigger Class Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

MenuTrigger

+
+
+ +
public final class MenuTrigger
+ +
+
+

A trigger that you can use to show the menu based on the result of some other +action firing, such as the onTap or onSelect of another element.

+
EditingMenu { menu in
+    MyRow(text: "Hello, World") {
+        menu.show()
+    }
+} items: {
+    EditingMenuItem.copying("A String")
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + show() + +
    +
    +
    +
    +
    +
    +

    Call this method to show the menu.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func show()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/EditingMenuItem.html b/Structs/EditingMenuItem.html new file mode 100644 index 000000000..c060c31cb --- /dev/null +++ b/Structs/EditingMenuItem.html @@ -0,0 +1,877 @@ + + + + EditingMenuItem Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EditingMenuItem

+
+
+ +
public struct EditingMenuItem
+ +
+
+

A single item in an editing menu.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    The type of menu item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var kind: Kind
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onSelect + +
    +
    +
    +
    +
    +
    +

    A callback, invoked when the user selects the menu item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onSelect: () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(title:onSelect:) + +
    +
    +
    +
    +
    +
    +

    Creates a new menu item of the given kind.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    title: String,
    +    onSelect: @escaping () -> Void
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:onSelect:) + +
    +
    +
    +
    +
    +
    +

    Creates a new menu item of the given kind.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    _ kind: Kind.System,
    +    onSelect: @escaping () -> Void
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + copying(_:to:) + +
    +
    +
    +
    +
    +
    +

    A .copy type item, which will copy the given string to the provided pasteboard.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func copying(_ string: String, to pasteboard: UIPasteboard? = .general) -> EditingMenuItem
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + copying(_:to:) + +
    +
    +
    +
    +
    +
    +

    A .copy type item, which will copy the given image to the provided pasteboard.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func copying(_ image: UIImage, to pasteboard: UIPasteboard? = .general) -> EditingMenuItem
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + copying(_:to:) + +
    +
    +
    +
    +
    +
    +

    A .copy type item, which will copy the given url to the provided pasteboard.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func copying(_ url: URL, to pasteboard: UIPasteboard? = .general) -> EditingMenuItem
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Kind + +
    +
    +
    +
    +
    +
    +

    The menu item types you may place into a menu.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Kind : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/EditingMenuItem/Kind.html b/Structs/EditingMenuItem/Kind.html new file mode 100644 index 000000000..574c5eb84 --- /dev/null +++ b/Structs/EditingMenuItem/Kind.html @@ -0,0 +1,738 @@ + + + + Kind Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Kind

+
+
+ +
public enum Kind : Equatable
+ +
+
+

The menu item types you may place into a menu.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + system(_:) + +
    +
    +
    +
    +
    +
    +

    A standard system item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case system(System)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + custom(_:) + +
    +
    +
    +
    +
    +
    +

    A custom item with a custom title.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case custom(String)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + System + +
    +
    +
    +
    +
    +
    +

    The system menu item kinds supported by an editing menu.

    + +

    Note – Matches methods from UIResponderStandardEditActions.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum System : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/EditingMenuItem/Kind/System.html b/Structs/EditingMenuItem/Kind/System.html new file mode 100644 index 000000000..a56086e3e --- /dev/null +++ b/Structs/EditingMenuItem/Kind/System.html @@ -0,0 +1,1046 @@ + + + + System Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

System

+
+
+ +
public enum System : Equatable
+ +
+
+

The system menu item kinds supported by an editing menu.

+ +

Note – Matches methods from UIResponderStandardEditActions.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + cut + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case cut
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + copy + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case copy
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + paste + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case paste
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + delete + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case delete
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + select + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case select
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + selectAll + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case selectAll
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + toggleBoldface + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case toggleBoldface
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + toggleItalics + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case toggleItalics
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + toggleUnderline + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case toggleUnderline
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + increaseSize + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case increaseSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + decreaseSize + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case decreaseSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + printContent + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case printContent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pasteAndGo + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case pasteAndGo
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pasteAndMatchStyle + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case pasteAndMatchStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pasteAndSearch + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case pasteAndSearch
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ElementContent.html b/Structs/ElementContent.html new file mode 100644 index 000000000..c36a4f7ad --- /dev/null +++ b/Structs/ElementContent.html @@ -0,0 +1,1427 @@ + + + + ElementContent Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ElementContent

+
+
+ +
public struct ElementContent
+ +
+
+

Represents the content of an element.

+ +
+
+ +
+
+
+
+ + +
+ +

Measurement & Children +

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Measures the required size of this element’s content.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func measure(in constraint: SizeConstraint, environment: Environment) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + constraint + + +
    +

    The size constraint.

    +
    +
    + + environment + + +
    +

    The environment to measure in.

    +
    +
    +
    +
    +

    Return Value

    +

    The layout size needed by this content.

    +
    +
    +
    +
  • +
  • +
    + + + + childCount + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var childCount: Int { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Layout storage +

+
+
+
    +
  • +
    + + + + Builder + +
    +
    +
    +
    +
    +
    +

    Used to construct elements that have layout and children.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Builder<LayoutType> where LayoutType : Layout
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with the given layout and children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<LayoutType: Layout>(
    +    layout: LayoutType,
    +    configure: (inout Builder<LayoutType>) -> Void = { _ in }
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + layout + + +
    +

    The layout to use.

    +
    +
    + + configure + + +
    +

    A closure that configures the layout and adds children to the container.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with the given element and layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    child: Element,
    +    key: AnyHashable? = nil,
    +    layout: some SingleChildLayout
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + element + + +
    +

    The single child element.

    +
    +
    + + key + + +
    +

    The key to use to unique the element during updates.

    +
    +
    + + layout + + +
    +

    The layout that will be used.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Passthrough storage +

+
+
+
    +
  • +
    + + + + init(child:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with the given element.

    + +

    The given element will be used for measuring, and it will always fill the extent of the parent element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(child: Element)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + element + + +
    +

    The single child element.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Lazy storage +

+
+
+
    +
  • +
    + + + + init(build:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new ElementContent that will lazily create its storage during a layout and measurement pass, +based on the Environment passed to the builder closure.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    build builder: @escaping (SizeConstraint, Environment) -> Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + builder + + +
    +

    A closure that provides the content Element based on the provided SizeConstraint +and Environment.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Leaf content +

+
+
+
    +
  • +
    + + + + init(measurable:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with no children that delegates to the provided Measurable.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(measurable: Measurable)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + measurable + + +
    +

    How to measure the ElementContent.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with no children that delegates to the provided measure function.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    measureFunction: @escaping (SizeConstraint) -> CGSize
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + measureFunction + + +
    +

    How to measure the ElementContent in the given SizeConstraint.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with no children that delegates to the provided measure function.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    measureFunction: @escaping (SizeConstraint, Environment) -> CGSize
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + measureFunction + + +
    +

    How to measure the ElementContent in the given SizeConstraint and Environment.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(intrinsicSize:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with no children that uses the provided intrinsic size for measuring.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(intrinsicSize: CGSize)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Environment adapters +

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with the given child element, measurement caching key, and environment adapter, +which allows adapting the environment to affect the element, plus elements further down the tree.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    child: Element,
    +    environment environmentAdapter: @escaping (inout Environment) -> Void
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + child + + +
    +

    The child element to display.

    +
    +
    + + environmentAdapter + + +
    +

    How to adapt the Environment for the child and elements further down the tree.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with the given child element, measurement caching key, and environment key + value. +which adapts the environment to affect the element, plus elements further down the tree.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Key>(
    +    child: Element,
    +    key: Key.Type,
    +    value: Key.Value
    +) where Key: EnvironmentKey
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + child + + +
    +

    The child element to display.

    +
    +
    + + key + + +
    +

    The key to set in the Environment.

    +
    +
    + + value + + +
    +

    The value to set in the Environment for the given key.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Nested element measuring +

+
+
+
    +
  • +
    + + + + init(measuring:) + +
    +
    +
    +
    +
    +
    +

    Creates a new ElementContent which uses the provided element to measure its +size, but does not place the element as a child in the final, laid out hierarchy.

    + +

    This is useful if you are placing the element in a nested BlueprintView, for example (eg +to create a stateful element) and just need this element to be correctly sized.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(measuring element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ElementContent/Builder.html b/Structs/ElementContent/Builder.html new file mode 100644 index 000000000..42c78dfff --- /dev/null +++ b/Structs/ElementContent/Builder.html @@ -0,0 +1,713 @@ + + + + Builder Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Builder

+
+
+ +
public struct Builder<LayoutType> where LayoutType : Layout
+ +
+
+

Used to construct elements that have layout and children.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + layout + +
    +
    +
    +
    +
    +
    +

    The layout object that is ultimately responsible for measuring +and layout tasks.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layout: LayoutType
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Adds the given child element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(
    +    traits: LayoutType.Traits = LayoutType.defaultTraits,
    +    key: AnyHashable? = nil,
    +    element: Element
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ElementDimensions.html b/Structs/ElementDimensions.html new file mode 100644 index 000000000..c63e0a7fd --- /dev/null +++ b/Structs/ElementDimensions.html @@ -0,0 +1,838 @@ + + + + ElementDimensions Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ElementDimensions

+
+
+ +
public struct ElementDimensions : Equatable
+ +
+
+

An element’s size and its alignment guides in its own coordinate space.

+ +

You can access the size of the element through the width and height properties. You can +access alignment guide values by subscripting with the specific alignment.

+ +

These dimensions are typically used when setting an alignment guide on a stack, with +StackElement.add(...).

+

Example

+
// get the alignment guide value for `VerticalAlignment.center`, falling back to the default
+// value if no alignment guide has been set
+dimensions[VerticalAlignment.center]
+
+// get the alignment guide value for `HorizontalAlignment.trailing`, or `nil` if none has been
+// set.
+dimensions[explicit: .trailing]
+
+

See Also

+ +

StackElement.add()

+ +
+
+ +
+
+
+
    +
  • +
    + + + + width + +
    +
    +
    +
    +
    +
    +

    The element’s width

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var width: CGFloat { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + height + +
    +
    +
    +
    +
    +
    +

    The element’s height

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var height: CGFloat { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Accesses the value of the given guide, or the default value of the alignment if this +guide has not been set.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) subscript(guide: HorizontalAlignment) -> CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Accesses the value of the given guide, or the default value of the alignment if this +guide has not been set.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) subscript(guide: VerticalAlignment) -> CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(explicit:) + +
    +
    +
    +
    +
    +
    +

    Returns the explicit value of the given alignment guide in this view, or +nil if no such value exists.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript(explicit guide: HorizontalAlignment) -> CGFloat? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(explicit:) + +
    +
    +
    +
    +
    +
    +

    Returns the explicit value of the given alignment guide in this view, or +nil if no such value exists.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript(explicit guide: VerticalAlignment) -> CGFloat? { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ElementPreview.html b/Structs/ElementPreview.html new file mode 100644 index 000000000..bd7626710 --- /dev/null +++ b/Structs/ElementPreview.html @@ -0,0 +1,919 @@ + + + + ElementPreview Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ElementPreview

+
+
+ +
@available(iOS 13.0, *)
+public struct ElementPreview : View
+ +
+
+

A SwiftUI view which wraps a Blueprint element, which can be used to preview Blueprint elements +via Xcode’s preview functionality (enable via the Editor > Canvas menu).

+ +

You can leverage ElementPreview by adding something like this to the bottom of the file which contains +your Blueprint element, then as you edit and work on your element, the live preview will update to show the +current state of your element:

+

+struct MyElement : Element {
+   ...
+}
+
+// Add this at the bottom of your element's source file.
+
+#if DEBUG && canImport(SwiftUI) && !arch(i386) && !arch(arm)
+
+import SwiftUI
+
+@available(iOS 13.0, *)
+struct MyElement_Preview: PreviewProvider {
+    static var previews: some View {
+        ElementPreview {
+            MyElement()
+        }
+    }
+}
+
+#endif
+
+
+

Uhhh

+ +

You’re probably asking… +Why the !arch(i386) check above? Turns out, a compiler bug! +SwiftUI is only available on 64 bit devices, but the canImport check erroneously +finds it when building to target iOS 10 devices. Until we drop iOS 10, this part of the check is also required.

+

Details

+ +

It’s important that you keep the PreviewProvider in the same file as the element that you are editing.

+ +

Why? Xcode uses a new feature called “Dynamic Replacement” to re-compile the source file you are editing, +and inject it back into the running app which drives the preview. This only works on the level of a single +file – if your preview and element live in separate files, Xcode needs to recompile your entire module +which will slow down preview updates greatly.

+ +

You can learn more about Xcode previews here: https://nshipster.com/swiftui-previews/

+

Requirements

+ +

You must be running Xcode 11 and Catalina to take advantage of live previews. +They do not work on Mojave. Your selected simulator must also be an iOS 13 device.

+ +
+
+ +
+
+
+
+ + +
+ +

Properties +

+
+
+
    +
  • +
    + + + + ElementProvider + +
    +
    +
    +
    +
    +
    +

    A provider which returns a new element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias ElementProvider = () -> Element
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Initialization +

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Creates a new ElementPreview with several common devices that your users may use.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func commonDevices(
    +    named name: String = "",
    +    with provider: @escaping ElementProvider
    +) -> Self
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new ElementPreview with the provided preview type. +If you do not pass a preview type, .thatFits is used.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    named name: String = "",
    +    with previewType: PreviewType = .thatFits(),
    +    with provider: @escaping ElementProvider
    +)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new ElementPreview with the provided preview types.

    + +

    You can pass as many preview types as you would like to see your +element rendered in those different environments.

    + +

    If you do not pass a preview type, .thatFits is used.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    named name: String = "",
    +    with previewTypes: [PreviewType],
    +    with provider: @escaping ElementProvider
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

View +

+
+
+
    +
  • +
    + + + + body + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var body: some View { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + PreviewType + +
    +
    +
    +
    +
    +
    +

    The preview type to use to display an element in an Xcode preview.

    + +

    We provide three preview types: A specific device type, a fixed size, and the size that fits the view.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PreviewType
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ElementPreview/PreviewType.html b/Structs/ElementPreview/PreviewType.html new file mode 100644 index 000000000..cbf37b14d --- /dev/null +++ b/Structs/ElementPreview/PreviewType.html @@ -0,0 +1,795 @@ + + + + PreviewType Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

PreviewType

+
+
+ +
public enum PreviewType
+ +
+
+

The preview type to use to display an element in an Xcode preview.

+ +

We provide three preview types: A specific device type, a fixed size, and the size that fits the view.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + device(_:) + +
    +
    +
    +
    +
    +
    +

    The preview will be inside the provided device (eg, iPhone X).

    + +

    Note: You can use the provided extension on PreviewDevice +to access devices in a type-safe way, eg: .device(.iPhone7).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case device(PreviewDevice)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fixed(width:height:) + +
    +
    +
    +
    +
    +
    +

    The preview will be the provided size

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fixed(width: CGFloat, height: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + thatFits(padding:) + +
    +
    +
    +
    +
    +
    +

    The preview will be as large as needed to preview the content.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case thatFits(padding: CGFloat = 10.0)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + identifier + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var identifier: AnyHashable { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func previewView(
    +    with name: String,
    +    for element: Element
    +) -> AnyView
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Empty.html b/Structs/Empty.html new file mode 100644 index 000000000..7addaa570 --- /dev/null +++ b/Structs/Empty.html @@ -0,0 +1,732 @@ + + + + Empty Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Empty

+
+
+ +
public struct Empty : Element
+ +
+
+

An empty Element which has no size and draws no content.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/Environment.html b/Structs/Environment.html new file mode 100644 index 000000000..771943ee3 --- /dev/null +++ b/Structs/Environment.html @@ -0,0 +1,1050 @@ + + + + Environment Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Environment

+
+
+ +
public struct Environment
+ +
+
+

Environment is a container for values to be passed down an element tree.

+ +

Environment values are not resolved until the tree is being rendered, so they do not need to be +explicitly passed to elements at the time they are created.

+ +

Environment key-value pairs are strongly typed: keys are types conforming to the +EnvironmentKey protocol, and each key’s value is the type of that key’s +EnvironmentKey.Value associated value. Keys must provide a default value.

+

Example

+ +

To set an environment value, so that it will cascade to child elements, use +AdaptedEnvironment. Here, every element in childElement will have access to someValue +via the key MyEnvironmentKey.

+
AdaptedEnvironment(
+    key: MyEnvironmentKey.self,
+    value: someValue,
+    wrapping: childElement
+)
+
+ +

To read an environment value, use EnvironmentReader. If this element were part of the child +element in the previous example, myValue would be set to someValue. If the key had not +been set in an ancestor element, the value would be MyEnvironmentKey.defaultValue.

+
struct MyElement: ProxyElement {
+    var elementRepresentation: Element {
+        return EnvironmentReader { environment -> Element in
+            let myValue = environment[MyEnvironmentKey.self]
+            return SomeElement(using: myValue)
+        }
+    }
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + empty + +
    +
    +
    +
    +
    +
    +

    A default “empty” environment, with no values overridden. +Each key will return its default value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let empty: Environment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Gets or sets an environment value by its key.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Key>(key: Key.Type) -> Key.Value where Key : EnvironmentKey { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The localised accessibility label elements should use when handling links.

    + +

    Defaults to UIImage(systemName: "link")?.accessibilityLabel.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var linkAccessibilityLabel: String? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + calendar + +
    +
    +
    +
    +
    +
    +

    The current calendar that elements should use when handling dates.

    + +

    Defaults to Calendar.current.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var calendar: Calendar { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + displayScale + +
    +
    +
    +
    +
    +
    +

    The display scale of this environment.

    + +

    This value is the number of pixels per point. A value of 1.0 indicates non-Retina screens, +2.0 indicates 2x Retina screens, etc.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var displayScale: CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutDirection + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LayoutDirection : Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutDirection + +
    +
    +
    +
    +
    +
    +

    The layout direction associated with the current environment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutDirection: LayoutDirection { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locale + +
    +
    +
    +
    +
    +
    +

    The current locale that elements should use.

    + +

    Defaults to Locale.current.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var locale: Locale { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + safeAreaInsets + +
    +
    +
    +
    +
    +
    +

    The insets representing the safe area for content.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var safeAreaInsets: UIEdgeInsets { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + timeZone + +
    +
    +
    +
    +
    +
    +

    The current time zone that elements should use when handling dates.

    + +

    Defaults to TimeZone.current.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var timeZone: TimeZone { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + windowSize + +
    +
    +
    +
    +
    +
    +

    The size of the window that contains the hosting BlueprintView. +Defaults to nil if the hosting view is not in a window.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var windowSize: CGSize? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutMode + +
    +
    +
    +
    +
    +
    +

    This mode will be inherited by descendant BlueprintViews that do not have an explicit +mode set.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var layoutMode: LayoutMode { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + urlHandler + +
    +
    +
    +
    +
    +
    +

    The link handler to use to open links tapped in an AttributedLabel.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var urlHandler: URLHandler { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Environment/LayoutDirection.html b/Structs/Environment/LayoutDirection.html new file mode 100644 index 000000000..340828058 --- /dev/null +++ b/Structs/Environment/LayoutDirection.html @@ -0,0 +1,705 @@ + + + + LayoutDirection Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutDirection

+
+
+ +
public enum LayoutDirection : Hashable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + leftToRight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case leftToRight
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + rightToLeft + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case rightToLeft
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/EnvironmentReader.html b/Structs/EnvironmentReader.html new file mode 100644 index 000000000..94ea40e2e --- /dev/null +++ b/Structs/EnvironmentReader.html @@ -0,0 +1,750 @@ + + + + EnvironmentReader Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EnvironmentReader

+
+
+ +
public struct EnvironmentReader : Element
+ +
+
+

An element that dynamically builds its content based on the environment.

+ +

Use this element to build elements whose contents may change depending on the Environment.

+

Example

+
EnvironmentReader { environment -> Element in
+    MyElement(
+        foo: environment.foo
+    )
+}
+
+
+

Seealso

+ ProxyElement + +
+

Seealso

+ Environment + +
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/EqualStack.html b/Structs/EqualStack.html new file mode 100644 index 000000000..11e9f4d8d --- /dev/null +++ b/Structs/EqualStack.html @@ -0,0 +1,998 @@ + + + + EqualStack Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EqualStack

+
+
+ +
public struct EqualStack : Element
+ +
+
+

An element that sizes its children equally, stacking them in the primary axis according to +the specified direction and spacing them according to the specified spacing. In the +secondary axis, children are justified to fill the space of the largest child.

+
+

Note

+ A stack measures itself by determining its largest child in each axis, and + in the case of the primary axis, multiplying by children.count (accounting + for spacing as necessary). + +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + direction + +
    +
    +
    +
    +
    +
    +

    The direction in which this element will stack its children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var direction: Direction
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + spacing + +
    +
    +
    +
    +
    +
    +

    The amount of space between children in this element. Defaults to 0.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var spacing: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    +

    The child elements to be laid out. Defaults to an empty array.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [Element]
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    direction: Direction,
    +    configure: (inout EqualStack) -> Void = { _ in }
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + direction + + +
    +

    The direction in which this element will stack its children.

    +
    +
    + + configure + + +
    +

    A closure allowing the element to be further customized. Defaults to a no-op.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializer using result builder to declaritively build up a stack.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    direction: Direction,
    +    spacing: CGFloat = 0,
    +    @ElementBuilder<Child> elements: () -> [Child]
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + direction + + +
    +

    Direction of the stack.

    +
    +
    + + children + + +
    +

    A block containing all elements to be included in the stack.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + add(child:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(child: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Direction + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Direction
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Child + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Child : ElementBuilderChild
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/EqualStack/Child.html b/Structs/EqualStack/Child.html new file mode 100644 index 000000000..f0cfd8b31 --- /dev/null +++ b/Structs/EqualStack/Child.html @@ -0,0 +1,705 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child : ElementBuilderChild
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let element: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/EqualStack/Direction.html b/Structs/EqualStack/Direction.html new file mode 100644 index 000000000..1bb59fa98 --- /dev/null +++ b/Structs/EqualStack/Direction.html @@ -0,0 +1,705 @@ + + + + Direction Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Direction

+
+
+ +
public enum Direction
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + vertical + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case vertical
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontal + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case horizontal
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Flow.html b/Structs/Flow.html new file mode 100644 index 000000000..fbe35e7cf --- /dev/null +++ b/Structs/Flow.html @@ -0,0 +1,995 @@ + + + + Flow Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Flow

+
+
+ +
public struct Flow : Element
+ +
+
+

Element which lays out children horizontally, wrapping to another row when there is not enough space.

+ +

You may control the layout of each row within the flow layout, by providing a LineAlignment, +which controls the horizontal alignment of content within a row when it is smaller than its container, +and via ItemAlignment, which controls the vertical alignment of shorter elements within a row.

+
Flow(itemSpacing: 10, lineSpacing: 10) {
+    OnboardingPill("Food / drink")
+    OnboardingPill("Retail goods").flowChild(key: "aKey")
+    OnboardingPill("Grocery / gourmet / alcohol")
+    OnboardingPill("Beauty / wellness bookings")
+    OnboardingPill("Healthcare services")
+    OnboardingPill("Something else")
+}
+
+ +

Below is a diagram showing a simple example of a Flow layout.

+
┌─────────────────────────────────────┐
+ ┌─────────┐┌─────────┐┌────────────┐│
+     1    ││    2    ││     3      ││
+ └─────────┘└─────────┘└────────────┘│
+ ┌───────┐┌─────┐┌───────────┐       
+    4   ││  5  ││     6            
+ └───────┘└─────┘└───────────┘       
+└─────────────────────────────────────┘
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + lineAlignment + +
    +
    +
    +
    +
    +
    +

    How to align each row when there is extra horizontal space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var lineAlignment: LineAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lineSpacing + +
    +
    +
    +
    +
    +
    +

    Space between lines in the layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var lineSpacing: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + itemAlignment + +
    +
    +
    +
    +
    +
    +

    How to align items in a line when there is extra vertical space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var itemAlignment: ItemAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + itemSpacing + +
    +
    +
    +
    +
    +
    +

    Space between items within a line.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var itemSpacing: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    +

    The child elements of the flow layout to be laid out.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [Child]
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new flow layout with the provided parameters.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    lineAlignment: LineAlignment = .leading,
    +    lineSpacing: CGFloat = 0,
    +    itemAlignment: ItemAlignment = .center,
    +    itemSpacing: CGFloat = 0,
    +    @ElementBuilder<Flow.Child> _ children: () -> [Flow.Child]
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+
    +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LineAlignment + +
    +
    +
    +
    +
    +
    +

    How to horizontally align the line when there is extra space.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LineAlignment : CaseIterable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ItemAlignment + +
    +
    +
    +
    +
    +
    +

    How to vertically align items which there is extra space.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ItemAlignment : CaseIterable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Child + +
    +
    +
    +
    +
    +
    +

    A child placed within the flow layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Child : ElementBuilderChild
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Flow/Child.html b/Structs/Flow/Child.html new file mode 100644 index 000000000..d9a4f75a3 --- /dev/null +++ b/Structs/Flow/Child.html @@ -0,0 +1,815 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child : ElementBuilderChild
+ +
+
+

A child placed within the flow layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    +

    The key used to optionally unique the child item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + traits + +
    +
    +
    +
    +
    +
    +

    The traits of a child item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var traits: Traits
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    +

    The element representing the child item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var element: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Creates a new child item with the given element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:key:) + +
    +
    +
    +
    +
    +
    +

    Creates a new child item with the given element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element, key: AnyHashable? = nil)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Traits + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Traits
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Flow/ItemAlignment.html b/Structs/Flow/ItemAlignment.html new file mode 100644 index 000000000..020a72291 --- /dev/null +++ b/Structs/Flow/ItemAlignment.html @@ -0,0 +1,762 @@ + + + + ItemAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ItemAlignment

+
+
+ +
public enum ItemAlignment : CaseIterable
+ +
+
+

How to vertically align items which there is extra space.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    Shorter items are stretched to fill the height of the tallest item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    Shorter items are aligned to the top of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case top
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Shorter items are vertically aligned within the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    Shorter items are aligned to the bottom of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottom
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Flow/LineAlignment.html b/Structs/Flow/LineAlignment.html new file mode 100644 index 000000000..9ff60f240 --- /dev/null +++ b/Structs/Flow/LineAlignment.html @@ -0,0 +1,735 @@ + + + + LineAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LineAlignment

+
+
+ +
public enum LineAlignment : CaseIterable
+ +
+
+

How to horizontally align the line when there is extra space.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    Items are aligned with the leading edge.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case leading
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Items are centered within the remaining space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    Items are aligned with the trailing edge.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case trailing
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/FocusBinding.html b/Structs/FocusBinding.html new file mode 100644 index 000000000..5b339b573 --- /dev/null +++ b/Structs/FocusBinding.html @@ -0,0 +1,829 @@ + + + + FocusBinding Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FocusBinding

+
+
+ +
public struct FocusBinding
+ +
+
+

A two-way binding between a focusable element’s backing view and a FocusState-wrapped +property.

+ +

Generally you should not need to interact with this type directly. However, you can use focus +bindings to add focus support to custom elements.

+

Adding Focus Bindings

+ +

On a FocusState, call the binding(for:) method to get a binding bound to an optional value, +or binding() to get a binding bound to a boolean.

+ +

To set up the 2-way binding, there are 2 steps:

+ +
    +
  1. Assign actions to the nested FocusTrigger, so that your backing view is updated when the +FocusState‘s value changes.

  2. +
  3. Call the onFocus and onBlur callbacks when your backing view gains or loses focus, so +that the value of the bound FocusState is updated.

  4. +
+

Example

+
final class FocusableView: UIView {
+    var focusBinding: FocusBinding? {
+        didSet {
+            oldValue?.trigger.focusAction = nil
+            oldValue?.trigger.blurAction = nil
+
+            guard let focusBinding = focusBinding else { return }
+
+            focusBinding.trigger.focusAction = { [weak self] in
+                self?.becomeFirstResponder()
+            }
+            focusBinding.trigger.blurAction = { [weak self] in
+                self?.resignFirstResponder()
+            }
+
+            if isFirstResponder {
+                focusBinding.onFocus()
+            } else {
+                focusBinding.onBlur()
+            }
+        }
+    }
+
+    @discardableResult
+    override func becomeFirstResponder() -> Bool {
+        let focused = super.becomeFirstResponder()
+        if focused {
+            focusBinding?.onFocus()
+        }
+        return focused
+    }
+
+    @discardableResult
+    override func resignFirstResponder() -> Bool {
+        let blurred = super.resignFirstResponder()
+        if blurred {
+            focusBinding?.onBlur()
+        }
+        return blurred
+    }
+}
+
+ +
    +
  • Tag: FocusBinding
  • +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + trigger + +
    +
    +
    +
    +
    +
    +

    A trigger, which is responsible for piping focus changes from a FocusState into a backing +view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let trigger: FocusTrigger
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onFocus + +
    +
    +
    +
    +
    +
    +

    A callback to be called by a backing view when it is focused, to pipe changes from a backing +view to a bound FocusState.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onFocus: () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onBlur + +
    +
    +
    +
    +
    +
    +

    A callback to be called by a backing view when it loses focus, to pipe changes from a +backing view to a bound FocusState.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onBlur: () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(onFocus:onBlur:) + +
    +
    +
    +
    +
    +
    +

    Creates a new binding

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(onFocus: @escaping () -> Void, onBlur: @escaping () -> Void)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/FocusState.html b/Structs/FocusState.html new file mode 100644 index 000000000..db30ad466 --- /dev/null +++ b/Structs/FocusState.html @@ -0,0 +1,956 @@ + + + + FocusState Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FocusState

+
+
+ +
@propertyWrapper
+public struct FocusState<Value> where Value : Hashable
+ +
+
+

A property wrapper type that can read and write a value that represents the placement of focus.

+ +

Use this property wrapper in conjunction with modifiers on elements that support focus, such as +TextField.focused(when:equals:) and TextField.focused(when:), to describe when those elements +should have focus. When focus enters the modified element, the wrapped value of this property +updates to match a given value. Similarly, when focus leaves, the wrapped value of this property +resets to nil or false. Setting this property’s value programmatically has the reverse +effect, causing focus to move to the element associated with the updated value.

+ +

In the following example of a simple login screen, when the user presses the Sign In button and +one of the fields is still empty, focus moves to that field. Otherwise, the sign-in process +proceeds.

+
struct LoginForm: ProxyElement {
+    enum Field: Hashable {
+        case username
+        case password
+    }
+
+    var username: String
+    var password: String
+    var handleLogin: () -> Void
+
+    @FocusState private var focusedField: Field?
+
+    var elementRepresentation: Element {
+        Column { column in
+            column.add(
+                child: TextField(text: "")
+                    .focused(when: $focusedField, equals: .username)
+            )
+
+            column.add(
+                child: TextField(text: "")
+                    .focused(when: $focusedField, equals: .password)
+            )
+
+            column.add(
+                child: Button(
+                    onTap: {
+                        if username.isEmpty {
+                            focusedField = .username
+                        } else if password.isEmpty {
+                            focusedField = .password
+                        } else {
+                            handleLogin()
+                        }
+                    },
+                    wrapping: Label(text: "Sign In")
+                )
+            )
+        }
+    }
+}
+
+ +

To allow for cases where focus is completely absent from a view tree, the wrapped value must be +either an optional or a Boolean. Set the focus binding to false or nil as appropriate to +remove focus from all bound fields. You can also use this to remove focus from a TextField +and thereby dismiss the keyboard.

+

Auto-Focus

+ +

To auto-focus a field when it appears, set the value in an onAppear hook.

+
struct Example: ProxyElement {
+    @FocusState var isFocused: Bool
+
+    var elementRepresentation: Element {
+        TextField(text: "")
+            .focused(when: $isFocused)
+            .onAppear {
+                isFocused = true
+            }
+    }
+}
+
+

Avoid Ambiguous Focus Bindings

+ +

A TextField can have only one focus binding, stored in its focusBinding property. If you apply +the focused modifier multiple times, the last one will overwrite the previous value.

+ +

On the other hand, binding the same value to two views is ambiguous. In the following example, +two separate fields bind focus to the name value:

+
struct Content: ProxyElement {
+    enum Field: Hashable {
+        case name
+        case fullName
+    }
+
+    @FocusState private var focusedField: Field?
+
+    var elementRepresentation: Element {
+        Column { column in
+            column.add(
+                child: TextField(text: "")
+                    .focused(when: $focusedField, equals: .name)
+            )
+
+            column.add(
+                child: TextField(text: "")
+                    .focused(when: $focusedField, equals: .name) // incorrect re-use of .name
+            )
+        }
+    }
+}
+
+ +

If the user moves focus to either field, the focusedField binding updates to name. However, +if the app programmatically sets the value to name, the last field bound will be chosen.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Creates a focus state that binds to a Boolean.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init() where Value == Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Creates a focus state that binds to an optional type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<T>() where Value == T?, T : Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedValue + +
    +
    +
    +
    +
    +
    +

    The current state value, taking into account whatever bindings might be +in effect due to the current location of focus.

    + +

    When focus is not in any view that is bound to this state, the wrapped +value will be nil (for optional-typed state) or false (for Bool- +typed state).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedValue: Value { get nonmutating set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + projectedValue + +
    +
    +
    +
    +
    +
    +

    A projection of the focus state that can be bound to focusable elements.

    + +

    Use this property wrapper in conjunction with modifiers on elements that support focus, such +as TextField.focused(when:equals) and TextField.focused(when:), to describe when those +elements should have focus.

    + +

    To add focus support to a custom element, use one of the methods on this projection to +retrieve a FocusBinding: binding() for Bool values and binding(for:) for optional +values.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var projectedValue: `Self` { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + binding(for:) + +
    +
    +
    +
    +
    +
    +

    Gets a focus binding associated with the FocusState being a specific value.

    + +

    You can use this binding to add focus support to a custom element.

    + +

    When the FocusState property is set to this value, the binding’s focus trigger will +fire, and when the property is set to another value, the binding’s blur trigger will fire. +Similarly, calling the onFocus callback will set the FocusState to this value, and the +onBlur callback will set it to nil.

    +

    See Also

    + +

    FocusBinding

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func binding<T>(for value: T) -> FocusBinding where Value == T?, T : Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + binding() + +
    +
    +
    +
    +
    +
    +

    Gets a focus binding associated with the FocusState value being true.

    + +

    You can use this binding to add focus support to a custom element.

    + +

    When the FocusState property is set to true, the binding’s focus trigger will fire, and +when the property is set to false, the binding’s blur trigger will fire. Similarly, +calling the onFocus callback will set the FocusState to true, and the onBlur callback +will set it to false.

    +

    See Also

    + +

    FocusBinding

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func binding() -> FocusBinding where Value == Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/GeometryProxy.html b/Structs/GeometryProxy.html new file mode 100644 index 000000000..9430ff65f --- /dev/null +++ b/Structs/GeometryProxy.html @@ -0,0 +1,708 @@ + + + + GeometryProxy Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

GeometryProxy

+
+
+ +
public struct GeometryProxy
+ +
+
+

Contains information about the current layout being measured by GeometryReader

+ +
+
+ +
+
+
+
    +
  • +
    + + + + constraint + +
    +
    +
    +
    +
    +
    +

    The size constraint of the element being laid out.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var constraint: SizeConstraint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + measure(element:in:) + +
    +
    +
    +
    +
    +
    +

    Measure the given element, constrained to the same size as the GeometryProxy itself (unless a constraint is explicitly provided).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func measure(element: Element, in explicit: SizeConstraint? = nil) -> CGSize
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/GeometryReader.html b/Structs/GeometryReader.html new file mode 100644 index 000000000..4687817b0 --- /dev/null +++ b/Structs/GeometryReader.html @@ -0,0 +1,749 @@ + + + + GeometryReader Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

GeometryReader

+
+
+ +
public struct GeometryReader : Element
+ +
+
+

An element that dynamically builds its content based on the available space.

+ +

Use this element to build elements whose contents may change responsively to +different layouts.

+

Example

+
GeometryReader { (geometry) -> Element in
+    let image: UIImage
+    switch geometry.constraint.width.maximum {
+    case ..<100:
+        image = UIImage(named: "small")!
+    case 100..<500:
+        image = UIImage(named: "medium")!
+    default:
+        image = UIImage(named: "large")!
+    }
+    return Image(image: image)
+}
+
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/GridRow.html b/Structs/GridRow.html new file mode 100644 index 000000000..fcf9fb4ea --- /dev/null +++ b/Structs/GridRow.html @@ -0,0 +1,1056 @@ + + + + GridRow Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

GridRow

+
+
+ +
public struct GridRow : Element
+ +
+
+

Like Row, GridRow displays a list of items in a linear horizontal layout. Unlike Row, GridRow provides +convenience for describing columnar layout.

+ +

Horizontally, GridRow children are stretched to fill the available space. Vertically, children are aligned +according to the verticalAlignment property.

+ +

Children may be sized proportionally or absolutely. Proportionally-sized children are granted a proportion of +the total layout space after absolutely-sized children and margins have been subtracted.

+

Example:

+
GridRow { row in
+  row.verticalAlignment = .fill
+  row.spacing = 8.0
+  row.add(width: .proportional(0.75), child: name)
+  row.add(width: .proportional(0.25), child: number)
+  row.add(width: .absolute(100), child: status)
+}
+
+

Expected layout:

+
┌────────────────────────────┬─┬────────┬─┬──────────────────┐
+            name              number        status      
+            (75%)           8  (25%) 8     (100 pts)    
+                                                        
+●──────────── 150 ───────────● ●── 50 ──● ●─────── 100 ──────●
+└────────────────────────────┴─┴────────┴─┴──────────────────┘
+●──────────────────────────── 316 ───────────────────────────●
+
+ +
+
+ +
+
+
+
+ + +
+ +

properties +

+
+
+
    +
  • +
    + + + + verticalAlignment + +
    +
    +
    +
    +
    +
    +

    How children are aligned vertically. By default, .fill.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var verticalAlignment: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + spacing + +
    +
    +
    +
    +
    +
    +

    The space between children. By default, 0.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var spacing: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    +

    The child elements to be laid out. By default, an empty array.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [Child]
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

initialization +

+
+
+
    +
  • +
    + + + + init(configure:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(configure: (inout GridRow) -> Void = { _ in })
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializer using result builder to declaritively build up a grid row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    verticalAlignment: Row.RowAlignment = .fill,
    +    spacing: CGFloat = 0,
    +    @ElementBuilder<Child> _ elements: () -> [Child]
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + verticalAlignment + + +
    +

    How children are aligned vertically. By default, .fill.

    +
    +
    + + spacing + + +
    +

    The space between children. By default, 0.

    +
    +
    + + elements + + +
    +

    A block containing all elements to be included in the row.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

mutations +

+
+
+
    +
  • +
    + + + + add(width:key:child:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(width: Width, key: AnyHashable? = nil, child: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

GridRow+Element +

+
+
+ +
+
+
+ + +
+ +

child modeling +

+
+
+
    +
  • +
    + + + + Child + +
    +
    +
    +
    +
    +
    +

    A child of a GridRow.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Child
    +
    extension GridRow.Child: ElementBuilderChild
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Width + +
    +
    +
    +
    +
    +
    +

    The sizing and content of a GridRow child.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Width : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/GridRow/Child.html b/Structs/GridRow/Child.html new file mode 100644 index 000000000..b97040d79 --- /dev/null +++ b/Structs/GridRow/Child.html @@ -0,0 +1,822 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child
+
extension GridRow.Child: ElementBuilderChild
+ +
+
+

A child of a GridRow.

+ +
+
+ +
+
+
+
+ + +
+ +

properties +

+
+
+
    +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    +

    The element displayed in the Grid.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var element: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    +

    A unique identifier for the child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + width + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var width: Width
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

initialialization +

+
+
+ +
+
+
+ + +
+ +

child modeling +

+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/GridRow/Width.html b/Structs/GridRow/Width.html new file mode 100644 index 000000000..1ac20ed2a --- /dev/null +++ b/Structs/GridRow/Width.html @@ -0,0 +1,719 @@ + + + + Width Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Width

+
+
+ +
public enum Width : Equatable
+ +
+
+

The sizing and content of a GridRow child.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + absolute(_:) + +
    +
    +
    +
    +
    +
    +

    Assign the child a fixed width equal to the payload.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case absolute(CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + proportional(_:) + +
    +
    +
    +
    +
    +
    +

    Assign the child a proportional width of the available layout width. Note that proportional children +take proportional shares of the available layout width.

    +

    Example:

    +
    Available layout width: 100
    +Child A: .proportional(1)  -> 25 (100 * 1/4)
    +Child B: .proportional(3) -> 75 (100 * 3/4)
    +
    +

    Example:

    +
    Available layout width: 100
    +Child A: .proportional(0.25)  -> 25 (100 * 1/4)
    +Child B: .proportional(0.75) -> 75 (100 * 3/4)
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case proportional(CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Hidden.html b/Structs/Hidden.html new file mode 100644 index 000000000..6dfa04771 --- /dev/null +++ b/Structs/Hidden.html @@ -0,0 +1,789 @@ + + + + Hidden Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Hidden

+
+
+ +
public struct Hidden : Element
+ +
+
+

Hidden conditionally hides its wrapped element.

+
+

Note

+ When an element is hidden, any elements within the wrapped element will be hidden. + +
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/HorizontalAlignment.html b/Structs/HorizontalAlignment.html new file mode 100644 index 000000000..6ad290654 --- /dev/null +++ b/Structs/HorizontalAlignment.html @@ -0,0 +1,816 @@ + + + + HorizontalAlignment Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

HorizontalAlignment

+
+
+ +
public struct HorizontalAlignment : Equatable, CustomStringConvertible
+ +
+
+

An alignment position along the horizontal axis.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Creates an instance with the given ID.

    + +

    Note: each instance should have a unique ID.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ id: AlignmentID.Type)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: HorizontalAlignment, rhs: HorizontalAlignment) -> Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    A guide marking the leading edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let leading: HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    A guide marking the horizontal center of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    A guide marking the trailing edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let trailing: HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Image.html b/Structs/Image.html new file mode 100644 index 000000000..db5b17528 --- /dev/null +++ b/Structs/Image.html @@ -0,0 +1,877 @@ + + + + Image Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Image

+
+
+ +
public struct Image : Element
+ +
+
+

Displays an image within an element hierarchy.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + image + +
    +
    +
    +
    +
    +
    +

    The image to be displayed

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var image: UIImage?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tintColor + +
    +
    +
    +
    +
    +
    +

    The tint color.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tintColor: UIColor?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentMode + +
    +
    +
    +
    +
    +
    +

    The content mode determines the layout of the image when its size does +not precisely match the size that the element is assigned.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentMode: ContentMode
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    iOS 14 added support for Image Descriptions using VoiceOver. This is not always appropriate. +Set this to true to prevent VoiceOver from describing the displayed image.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var blockAccessibilityDescription: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes an image element with the given UIImage instance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    image: UIImage?,
    +    contentMode: ContentMode = .aspectFill,
    +    tintColor: UIColor? = nil,
    +    blockAccessibilityDescription: Bool = false
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ContentMode + +
    +
    +
    +
    +
    +
    +

    The content mode determines the layout of the image when its size does +not precisely match the size that the element is assigned.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ContentMode
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Image/ContentMode.html b/Structs/Image/ContentMode.html new file mode 100644 index 000000000..30999e66a --- /dev/null +++ b/Structs/Image/ContentMode.html @@ -0,0 +1,772 @@ + + + + ContentMode Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ContentMode

+
+
+ +
public enum ContentMode
+ +
+
+

The content mode determines the layout of the image when its size does +not precisely match the size that the element is assigned.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    The image is not scaled, and is simply centered within the Image +element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + stretch + +
    +
    +
    +
    +
    +
    +

    The image is stretched to fill the Image element, causing the image +to become distorted if its aspect ratio is different than that of the +containing element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case stretch
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + aspectFit + +
    +
    +
    +
    +
    +
    +

    The image is scaled to touch the edges of the Image element while +maintaining the image’s aspect ratio. If the aspect ratio of the +image is different than that of the element, the image will be +letterboxed or pillarboxed as needed to ensure that the entire +image is visible within the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case aspectFit
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + aspectFill + +
    +
    +
    +
    +
    +
    +

    The image is scaled to fill the entire Image element. If the aspect +ratio of the image is different than that of the element, the image +will be cropped to match the element’s aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case aspectFill
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Inset.html b/Structs/Inset.html new file mode 100644 index 000000000..e409ad472 --- /dev/null +++ b/Structs/Inset.html @@ -0,0 +1,976 @@ + + + + Inset Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Inset

+
+
+ +
public struct Inset : Element
+ +
+
+

Insets a content element within a layout.

+ +

Commonly used to add padding around another element when displayed within a container.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The wrapped element to be inset.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    The amount to inset the content element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var top: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var bottom: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + left + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var left: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + right + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var right: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    top: CGFloat = 0.0,
    +    bottom: CGFloat = 0.0,
    +    left: CGFloat = 0.0,
    +    right: CGFloat = 0.0,
    +    wrapping element: Element
    +)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(uniformInset: CGFloat, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(insets: UIEdgeInsets, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(sideInsets: CGFloat, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(vertical: CGFloat, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Keyed.html b/Structs/Keyed.html new file mode 100644 index 000000000..994fd23de --- /dev/null +++ b/Structs/Keyed.html @@ -0,0 +1,809 @@ + + + + Keyed Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Keyed

+
+
+ +
public struct Keyed : Element
+ +
+
+

Keyed allows providing a Hashable value which is used +during view updates to uniquely identify content during the diff process +between the old and new element structure.

+ +

This is useful if you have two elements of the same type at the same depth +in the element hierarchy, and you’d like to differentiate between them, eg +for appearance transition purposes.

+

Example

+ +

Keying the image returned, so that a transition occurs when changing +between a placeholder image and an available photo.

+
func imageElement() -> Element {
+    if let photo = self.photo {
+        return Image(image: photo)
+                .transition(.fade)
+                .keyed("photo")
+    } else {
+        return Image(image: self.placeholder)
+                .transition(.fade)
+                .keyed("placeholder")
+    }
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    +

    The key used to differentiate the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(key:wrapping:) + +
    +
    +
    +
    +
    +
    +

    Creates a new Keyed element with the provided key and wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(key: AnyHashable?, wrapping: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Label.html b/Structs/Label.html new file mode 100644 index 000000000..c40ed4e7f --- /dev/null +++ b/Structs/Label.html @@ -0,0 +1,1159 @@ + + + + Label Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Label

+
+
+ +
public struct Label : ProxyElement
+ +
+
+

Displays text content.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + text + +
    +
    +
    +
    +
    +
    +

    The text to be displayed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var text: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + font + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var font: UIFont
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + color + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var color: UIColor
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + alignment + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alignment: NSTextAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + numberOfLines + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var numberOfLines: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lineBreakMode + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var lineBreakMode: NSLineBreakMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lineHeight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var lineHeight: LineHeight
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A Boolean value that determines whether the label reduces the text’s font +size to fit the title string into the label’s bounding rectangle.

    + +

    Normally, the label draws the text with the font you specify in the font property. +If this property is true, and the text in the text property exceeds the label’s bounding rectangle, +the label reduces the font size until the text fits or it has scaled the font down to the minimum +font size. The default value for this property is false.

    + +

    If you change it to true, be sure that you also set an appropriate minimum +font scale by modifying the minimumScaleFactor property.

    + +

    This autoshrinking behavior is only intended for use with a single-line label.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var adjustsFontSizeToFitWidth: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimumScaleFactor + +
    +
    +
    +
    +
    +
    +

    The minimum scale factor for the label’s text.

    + +

    If the adjustsFontSizeToFitWidth is true, use this property to specify the +smallest multiplier for the current font size that yields an acceptable +font size for the label’s text.

    + +

    If you specify a value of 0 for this property, the label doesn’t scale the text down. +The default value of this property is 0.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumScaleFactor: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A Boolean value that determines whether the label tightens text before truncating.

    + +

    When the value of this property is true, the label tightens intercharacter spacing +of its text before allowing any truncation to occur. The label determines the +maximum amount of tightening automatically based on the font, current line width, +line break mode, and other relevant information.

    + +

    This autoshrinking behavior is only intended for use with a single-line label.

    + +

    The default value of this property is false.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var allowsDefaultTighteningForTruncation: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shadow + +
    +
    +
    +
    +
    +
    +

    A shadow to display behind the label’s text. Defaults to no shadow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadow: TextShadow?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Determines if the label should be included when navigating the UI via accessibility.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isAccessibilityElement: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityHint + +
    +
    +
    +
    +
    +
    +

    A localized string that describes the result of performing an action on the element, when the result is non-obvious.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityHint: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityTraits + +
    +
    +
    +
    +
    +
    +

    A set of accessibility traits that should be applied to the label, these will be merged with any existing traits.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityTraits: Set<AccessibilityElement.Trait>?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    An array containing one or more AccessibilityElement.CustomActions, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityCustomActions: [AccessibilityElement.CustomAction]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(text:configure:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(text: String, configure: (inout Label) -> Void = { _ in })
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + elementRepresentation + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var elementRepresentation: Element { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LineHeight + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LineHeight : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Label/LineHeight.html b/Structs/Label/LineHeight.html new file mode 100644 index 000000000..448cede09 --- /dev/null +++ b/Structs/Label/LineHeight.html @@ -0,0 +1,734 @@ + + + + LineHeight Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LineHeight

+
+
+ +
public enum LineHeight : Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Alignment + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Alignment : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + font + +
    +
    +
    +
    +
    +
    +

    Use the default line height of the label’s font.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case font
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Use a custom line height and alignment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case custom(lineHeight: CGFloat, alignment: Alignment = .bottom)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Label/LineHeight/Alignment.html b/Structs/Label/LineHeight/Alignment.html new file mode 100644 index 000000000..6aedb61c7 --- /dev/null +++ b/Structs/Label/LineHeight/Alignment.html @@ -0,0 +1,737 @@ + + + + Alignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Alignment

+
+
+ +
public enum Alignment : Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    Align text to the top of the available line height, with extra space added at the bottom. +This makes line height behave like traditional leading.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case top
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Center text within the available line height. This makes line height behave like half-leading, +and matches the model used by CSS.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    Align text to the bottom of the available line height, with extra space added at the top. +This is the default behavior of UILabel on iOS.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottom
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LayoutAttributes.html b/Structs/LayoutAttributes.html new file mode 100644 index 000000000..a80814ff0 --- /dev/null +++ b/Structs/LayoutAttributes.html @@ -0,0 +1,1053 @@ + + + + LayoutAttributes Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutAttributes

+
+
+ +
public struct LayoutAttributes
+
extension LayoutAttributes: Equatable
+ +
+
+

Contains layout-related metrics for an element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.center.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var center: CGPoint { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bounds + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.bounds.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var bounds: CGRect { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + transform + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.layer.transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transform: CATransform3D { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + alpha + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.alpha.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alpha: CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Corresponds to UIView.isUserInteractionEnabled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isUserInteractionEnabled: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isHidden + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.isHidden.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isHidden: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tintAdjustmentMode + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.tintAdjustmentMode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tintAdjustmentMode: UIView.TintAdjustmentMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(frame:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(frame: CGRect)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(size:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(size: CGSize)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(center:bounds:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(center: CGPoint, bounds: CGRect)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + frame + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var frame: CGRect { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + within(_:) + +
    +
    +
    +
    +
    +
    +

    Concatenates layout attributes, moving the receiver from the local +coordinate space of layoutAttributes and into its parent coordinate +space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func within(_ layoutAttributes: LayoutAttributes) -> LayoutAttributes
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + layoutAttributes + + +
    +

    Another layout attributes object representing +a parent coordinate space.

    +
    +
    +
    +
    +

    Return Value

    +

    The resulting combined layout attributes object.

    +
    +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: LayoutAttributes, rhs: LayoutAttributes) -> Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LayoutOptions.html b/Structs/LayoutOptions.html new file mode 100644 index 000000000..fc92b204d --- /dev/null +++ b/Structs/LayoutOptions.html @@ -0,0 +1,768 @@ + + + + LayoutOptions Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutOptions

+
+
+ +
public struct LayoutOptions : Equatable
+ +
+
+

Configuration options for caffeinated.

+ +

Generally these are only useful for experimenting with the performance profile of different +element compositions, and you should stick with default.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + default + +
    +
    +
    +
    +
    +
    +

    The default configuration.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let `default`: LayoutOptions
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hintRangeBoundaries + +
    +
    +
    +
    +
    +
    +

    Enables aggressive cache hinting along the boundaries of the range between constraints and +measured sizes. Requires elements to conform to the Caffeinated Layout contract for correct +behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var hintRangeBoundaries: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Allows cache misses on finite constraints to deduce a range-based match by searching for a +hit on the unconstrained value for each axis. Requires elements to adhere to the Caffeinated +Layout contract for correct behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var searchUnconstrainedKeys: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(hintRangeBoundaries: Bool, searchUnconstrainedKeys: Bool)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LayoutSubelement.html b/Structs/LayoutSubelement.html new file mode 100644 index 000000000..64ff05980 --- /dev/null +++ b/Structs/LayoutSubelement.html @@ -0,0 +1,1031 @@ + + + + LayoutSubelement Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutSubelement

+
+
+ +
public struct LayoutSubelement
+ +
+
+

A proxy that represents one child element of a layout.

+ +

This type acts as a proxy for a child element in a Layout. Layout protocol methods receive a +LayoutSubelements collection that contains exactly one proxy for each of the child elements +managed by the layout.

+ +

Use this proxy to get information about the associated element, like its size and traits. You +should also use the proxy to tell its corresponding element where to appear by calling the +proxy’s place(at:anchor:size:) method. Do this once for each subview from your +implementation of the layout’s +placeSubelements(in:subelements:environment:cache:) method.

+
+

Note

+ The LayoutSubelement API, and its documentation, are modeled after SwiftUI’s +LayoutSubview, with major +differences noted. + +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Optional attributes to apply to this subelement, such as opacity and transforms.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @LayoutSubelement
    +.Storage public var attributes: LayoutSubelement.Attributes { get nonmutating set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Assigns a position and size to a subelement.

    + +

    Call this method from your implementation of the Layout protocol’s +placeSubelements(in:subelements:environment:cache:) method for each +subelement arranged by the layout. Provide a position within the container’s bounds where +the subelement should appear, an anchor that indicates which part of the subelement appears +at that point, and a size.

    + +

    To learn the subelement’s preferred size for a given proposal before calling this method, +you can call sizeThatFits(_:) method on the subelement.

    + +

    If you call this method more than once for a subelement, the last call takes precedence. If +you don’t call this method for a subelement, the subelement fills the bounds of its +container.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func place(
    +    at position: CGPoint,
    +    anchor: UnitPoint = .topLeading,
    +    size: CGSize
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + position + + +
    +

    The place where the anchor of the subelement should appear in its container, +relative to the container’s bounds.

    +
    +
    + + anchor + + +
    +

    The unit point on the subelement that appears at position. You can use a +built-in point, like center, or you can create a custom UnitPoint.

    +
    +
    + + size + + +
    +

    The size of the subelement. In Blueprint, parents choose their children’s size. +You can determine a good size for a subelement by calling sizeThatFits(_:) on it.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + place(in:anchor:) + +
    +
    +
    +
    +
    +
    +

    Assigns a position and size to a subelement.

    + +

    This is a convenience for calling place(at:anchor:size:) with frame.origin and +frame.size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func place(
    +    in frame: CGRect,
    +    anchor: UnitPoint = .topLeading
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + frame + + +
    +

    The position and size of the subelement. The origin of this frame represents the +place where the anchor of the subelement should appear in its container, relative to the +container’s bounds. In Blueprint, parents choose their children’s size. You can +determine a good size for a subelement by calling sizeThatFits(_:) on it.

    +
    +
    + + anchor + + +
    +

    The unit point on the subelement that appears at position. You can use a +built-in point, like center, or you can create a custom UnitPoint.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + place(filling:) + +
    +
    +
    +
    +
    +
    +

    Assigns a position and size to a subelement.

    + +

    This is a convenience for calling place(at:anchor:size:) with a position of .zero and +this size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func place(
    +    filling size: CGSize
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sizeThatFits(_:) + +
    +
    +
    +
    +
    +
    +

    Asks the subelement for its size.

    + +

    In Blueprint, elements are ultimately sized by their parents, but you can use this method to +determine the size that a subelement would prefer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sizeThatFits(_ proposal: SizeConstraint) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + proposal + + +
    +

    A proposed size constraint for the subelement.

    +
    +
    +
    +
    +

    Return Value

    +

    The size that the subelement would choose for itself, given the proposal.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Gets the layout traits of the subelement.

    + +

    Use this method to access the layout-specific Traits value for this +subelement.

    +
    +

    Important

    +

    Only call this method with the type of your Layout. For compatibility with +legacy layout, this is the only type of traits supported.

    + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func traits<LayoutType>(
    +    forLayoutType layoutType: LayoutType.Type
    +) -> LayoutType.Traits where LayoutType: Layout
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + layoutType + + +
    +

    The type of layout, which determines the type of the traits.

    +
    +
    +
    +
    +

    Return Value

    +

    The subelements’s layout traits.

    +
    +
    +
    +
  • +
  • +
    + + + + Attributes + +
    +
    +
    +
    +
    +
    +

    Optional additional attributes that can be applied to a subelement.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Attributes
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LayoutSubelement/Attributes.html b/Structs/LayoutSubelement/Attributes.html new file mode 100644 index 000000000..ed8aa062e --- /dev/null +++ b/Structs/LayoutSubelement/Attributes.html @@ -0,0 +1,789 @@ + + + + Attributes Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Attributes

+
+
+ +
public struct Attributes
+ +
+
+

Optional additional attributes that can be applied to a subelement.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + transform + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.layer.transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transform: CATransform3D
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + alpha + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.alpha.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alpha: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Corresponds to UIView.isUserInteractionEnabled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isUserInteractionEnabled: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isHidden + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.isHidden.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isHidden: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tintAdjustmentMode + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.tintAdjustmentMode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tintAdjustmentMode: UIView.TintAdjustmentMode
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LayoutWriter.html b/Structs/LayoutWriter.html new file mode 100644 index 000000000..f08d2c565 --- /dev/null +++ b/Structs/LayoutWriter.html @@ -0,0 +1,938 @@ + + + + LayoutWriter Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutWriter

+
+
+ +
public struct LayoutWriter : Element
+ +
+
+

A parent element which allows arbitrary, custom layout and positioning of its children.

+ +

Instead of creating a custom Element with a custom Layout, you might use +this element to create a customized layout in a more lightweight way.

+
LayoutWriter { context, layout in
+    layout.add(with: myFrame, child: myElement)
+    layout.add(with: myOtherFrame, child: myOtherElement)
+
+    layout.sizing = .unionOfChildren
+}
+
+ +
+
+ +
+
+
+
+ + +
+ +

Initialization +

+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Creates a new instance of the LayoutWriter with the custom layout provided by the builder.

    + +

    The parameters to the closure are the Context, which provides information about +the environment and sizing of the layout, and the Builder itself, which you use to +add child elements to the layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ build: @escaping Build)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Build + +
    +
    +
    +
    +
    +
    +

    The builder type passed to the LayoutWriter initializer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Build = (Context, inout Builder) -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + build + +
    +
    +
    +
    +
    +
    +

    The builder used to create the custom layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let build: Build
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+
    +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Builder + +
    +
    +
    +
    +
    +
    +

    The builder is the primary surface area you interact with when using a LayoutWriter.

    + +

    It provides you the ability to manage the sizing and measurement of the final layout, +alongside methods to add and manage the children of the layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Builder
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Context + +
    +
    +
    +
    +
    +
    +

    Provides the relevant information about the context in which the layout is occurring.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Context
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Sizing + +
    +
    +
    +
    +
    +
    +

    Controls the sizing calculation of the custom layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Sizing : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Child + +
    +
    +
    +
    +
    +
    +

    A child of the custom layout, providing its frame and element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Child
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LayoutWriter/Builder.html b/Structs/LayoutWriter/Builder.html new file mode 100644 index 000000000..df0640038 --- /dev/null +++ b/Structs/LayoutWriter/Builder.html @@ -0,0 +1,825 @@ + + + + Builder Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Builder

+
+
+ +
public struct Builder
+ +
+
+

The builder is the primary surface area you interact with when using a LayoutWriter.

+ +

It provides you the ability to manage the sizing and measurement of the final layout, +alongside methods to add and manage the children of the layout.

+ +
+
+ +
+
+
+
+ + +
+ +

Managing Sizing +

+
+
+
    +
  • +
    + + + + sizing + +
    +
    +
    +
    +
    +
    +

    How the size of the layout should be calculated. Defaults to .unionOfChildren, +which means the size will be big enough to contain the frames of all contained children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var sizing: Sizing
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Managing Children +

+
+
+
    +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    +

    The children of the custom layout, which specifies the child element and its frame.

    +

    Note

    + +

    You rarely need to access this property directly. Instead, add children via +the various provided add(...) methods. However, if you’re map-ing over an array +or other collection of content, using this property directly is useful.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [Child]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + add(with:key:child:) + +
    +
    +
    +
    +
    +
    +

    Adds a new child element to the layout with the provided frame and optional key.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(
    +    with frame: CGRect,
    +    key: AnyHashable? = nil,
    +    child: Element
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + add(_:) + +
    +
    +
    +
    +
    +
    +

    Adds a new child element to the layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(_ child: Child)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + modifyEach(using:) + +
    +
    +
    +
    +
    +
    +

    Enumerates each of the children, allowing you to modify them in place, +eg to align them all along a common alignment axis or to set a uniform size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func modifyEach(using change: (inout Child) -> Void)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LayoutWriter/Child.html b/Structs/LayoutWriter/Child.html new file mode 100644 index 000000000..846ef98b4 --- /dev/null +++ b/Structs/LayoutWriter/Child.html @@ -0,0 +1,766 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child
+ +
+
+

A child of the custom layout, providing its frame and element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + frame + +
    +
    +
    +
    +
    +
    +

    The frame of the element in the coordinate space of the custom layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var frame: CGRect
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    +

    The key to use to disambiguate this element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    +

    The element to be displayed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var element: Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new child element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    frame: CGRect,
    +    key: AnyHashable? = nil,
    +    element: Element
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LayoutWriter/Context.html b/Structs/LayoutWriter/Context.html new file mode 100644 index 000000000..433e53d48 --- /dev/null +++ b/Structs/LayoutWriter/Context.html @@ -0,0 +1,739 @@ + + + + Context Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Context

+
+
+ +
public struct Context
+ +
+
+

Provides the relevant information about the context in which the layout is occurring.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + size + +
    +
    +
    +
    +
    +
    +

    The size constraint the layout is occurring in.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var size: SizeConstraint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + phase + +
    +
    +
    +
    +
    +
    +

    The phase of the layout current occurring – measurement or layout.

    + +

    You can use this value to vary calculations as needed between phases; eg, to make +an element take up the full available size during the .layout phase, where sizing is known.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var phase: LayoutPhase
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutPhase + +
    +
    +
    +
    +
    +
    +

    The current phase of the layout event: .measurement or .layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LayoutPhase : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LayoutWriter/Context/LayoutPhase.html b/Structs/LayoutWriter/Context/LayoutPhase.html new file mode 100644 index 000000000..471f7313e --- /dev/null +++ b/Structs/LayoutWriter/Context/LayoutPhase.html @@ -0,0 +1,738 @@ + + + + LayoutPhase Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutPhase

+
+
+ +
public enum LayoutPhase : Equatable
+ +
+
+

The current phase of the layout event: .measurement or .layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + measurement + +
    +
    +
    +
    +
    +
    +

    The element is being measured.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case measurement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layout(_:) + +
    +
    +
    +
    +
    +
    +

    The element is being laid out with a known size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case layout(CGSize)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the provided value based on if a measurement or layout is occurring.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onMeasure<Value>(
    +    _ onMeasure: () -> Value,
    +    onLayout: (CGSize) -> Value
    +) -> Value
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LayoutWriter/Sizing.html b/Structs/LayoutWriter/Sizing.html new file mode 100644 index 000000000..61b2a3eb0 --- /dev/null +++ b/Structs/LayoutWriter/Sizing.html @@ -0,0 +1,725 @@ + + + + Sizing Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Sizing

+
+
+ +
public enum Sizing : Equatable
+ +
+
+

Controls the sizing calculation of the custom layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + unionOfChildren + +
    +
    +
    +
    +
    +
    +

    Ensures that the final size of element is large enough to fit all children, starting from (0,0).

    + +

    Negative origins of rects are not considered in this calculation. If you have the following layout:

    +
     ┌──────┐
    +       ├─────────┐
    +       *********
    + └─┬────┘**┌──────┤
    +   *******      
    +   *******      
    +┌──┴───┐***      
    +      ***      
    +      ***└──────┤
    +└──────┴──────────┘
    +
    + +

    The large rect will be the calculated size / bounds of the layout, starting at (0,0). Any rects with +negative origins will overhang the layout to the top or left, respectively.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case unionOfChildren
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fixed(_:) + +
    +
    +
    +
    +
    +
    +

    Fixes the layout size to the provided size. Children are positioned within this size, starting at (0,0) +Any rects with negative origins will overhang the layout to the top or left, respectively.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fixed(CGSize)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/LifecycleObserver.html b/Structs/LifecycleObserver.html new file mode 100644 index 000000000..e45e76ab2 --- /dev/null +++ b/Structs/LifecycleObserver.html @@ -0,0 +1,874 @@ + + + + LifecycleObserver Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LifecycleObserver

+
+
+ +
public struct LifecycleObserver : Element
+ +
+
+

Allows element lifecycle callbacks to be inserted anywhere into the element tree.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onAppear + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onAppear: LifecycleCallback?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onDisappear + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onDisappear: LifecycleCallback?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    onAppear: LifecycleCallback? = nil,
    +    onDisappear: LifecycleCallback? = nil,
    +    wrapping: Element
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onAppear(_:) + +
    +
    +
    +
    +
    +
    +

    Adds a hook that will be called when this element appears.

    + +

    Callbacks run in depth-first traversal order, with parents before children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onAppear(_ callback: @escaping LifecycleCallback) -> LifecycleObserver
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onDisappear(_:) + +
    +
    +
    +
    +
    +
    +

    Adds a hook that will be called when this element disappears.

    + +

    Callbacks run in depth-first traversal order, with parents before children. There is no +guaranteed order between disappearance callbacks and backing views being removed from their +superviews.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onDisappear(_ callback: @escaping LifecycleCallback) -> LifecycleObserver
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Opacity.html b/Structs/Opacity.html new file mode 100644 index 000000000..3add4e9e5 --- /dev/null +++ b/Structs/Opacity.html @@ -0,0 +1,821 @@ + + + + Opacity Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Opacity

+
+
+ +
public struct Opacity : Element
+ +
+
+

Changes the opacity of the wrapped element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The content element whose opacity is being affected.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + opacity + +
    +
    +
    +
    +
    +
    +

    The opacity of the wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var opacity: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes an Opacity with the given content element and opacity.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    opacity: CGFloat,
    +    wrapping wrappedElement: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + opacity + + +
    +

    The opacity to be applied to the wrapped element.

    +
    +
    + + wrapping + + +
    +

    The content element to be made transparent.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Overlay.html b/Structs/Overlay.html new file mode 100644 index 000000000..ec07f9b20 --- /dev/null +++ b/Structs/Overlay.html @@ -0,0 +1,927 @@ + + + + Overlay Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Overlay

+
+
+ +
public struct Overlay : Element
+ +
+
+

Stretches all of its child elements to fill the layout area, stacked on top of each other.

+ +

During a layout pass, measurement is calculated as the max size (in both x and y dimensions) +produced by measuring all of the child elements.

+ +

View-backed descendants will be z-ordered from back to front in the order of this element’s +children.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    +

    All elements displayed in the overlay.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [Child]
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new overlay with the provided elements.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    elements: [Element] = [],
    +    configure: (inout Overlay) -> Void = { _ in }
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(elements:) + +
    +
    +
    +
    +
    +
    +

    Creates a new overlay using a result builder.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    @ElementBuilder<Overlay.Child> elements: () -> [Overlay.Child]
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + add(_:) + +
    +
    +
    +
    +
    +
    +

    Adds the provided element to the overlay.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "add(child:﹚")
    +public mutating func add(_ element: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + add(key:child:) + +
    +
    +
    +
    +
    +
    +

    Adds the provided element to the overlay, above other children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(key: AnyHashable? = nil, child: Element)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + key + + +
    +

    A key used to disambiguate children between subsequent updates of the view +hierarchy

    +
    +
    + + child + + +
    +

    The child element to add.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/Overlay/Child.html b/Structs/Overlay/Child.html new file mode 100644 index 000000000..1663353d3 --- /dev/null +++ b/Structs/Overlay/Child.html @@ -0,0 +1,762 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child
+
extension Overlay.Child: ElementBuilderChild
+ +
+
+

The child of an Overlay.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    +

    The child element

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var element: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    +

    An optional key to disambiguate between view updates

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(element:key:) + +
    +
    +
    +
    +
    +
    +

    Create a new child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(element: Element, key: AnyHashable? = nil)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Row.html b/Structs/Row.html new file mode 100644 index 000000000..6ffeec955 --- /dev/null +++ b/Structs/Row.html @@ -0,0 +1,970 @@ + + + + Row Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Row

+
+
+ +
public struct Row : StackElement
+ +
+
+

Displays a list of items in a linear horizontal layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + RowAlignment + +
    +
    +
    +
    +
    +
    +

    Describes how the row’s children will be vertically aligned.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum RowAlignment : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [(element: Element, traits: StackLayout.Traits, key: AnyHashable?)]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layout + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public private(set) var layout: StackLayout { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializer using result builder to declaratively build up a stack.

    +
    +

    Note

    + If element is a plain Element, then that Element will be implicitly converted into a StackLayout.Child with default values + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    alignment: RowAlignment = .top,
    +    underflow: StackLayout.UnderflowDistribution = .spaceEvenly,
    +    overflow: StackLayout.OverflowDistribution = .condenseProportionally,
    +    minimumSpacing: CGFloat = 0,
    +    @ElementBuilder<StackLayout.Child> elements: () -> [StackLayout.Child]
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + +
    + + alignment + + +
    +

    Specifies how children will be aligned vertically. Default: .top

    +
    +
    + + underflow + + +
    +

    Determines the layout when there is extra free space available. Default: .spaceEvenly

    +
    +
    + + overflow + + +
    +

    Determines the layout when there is not enough space to fit all children as measured. Default: .condenseProportionally

    +
    +
    + + minimumSpacing + + +
    +

    Spacing in between elements. Default: 0

    +
    +
    + + elements + + +
    +

    A block containing all elements to be included in the stack.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontalUnderflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var horizontalUnderflow: StackLayout.UnderflowDistribution { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontalOverflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var horizontalOverflow: StackLayout.OverflowDistribution { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + verticalAlignment + +
    +
    +
    +
    +
    +
    +

    Specifies how children will be aligned vertically.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var verticalAlignment: RowAlignment { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumHorizontalSpacing: CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Row/RowAlignment.html b/Structs/Row/RowAlignment.html new file mode 100644 index 000000000..852db0c4c --- /dev/null +++ b/Structs/Row/RowAlignment.html @@ -0,0 +1,849 @@ + + + + RowAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

RowAlignment

+
+
+ +
public enum RowAlignment : Equatable
+ +
+
+

Describes how the row’s children will be vertically aligned.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    Children will be stretched to fit the vertical size of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + align(to:) + +
    +
    +
    +
    +
    +
    +

    Using the specified alignment, children will be aligned relatively to each other, and +then all the contents will be aligned to the row’s bounding box.

    + +

    This case can be used for custom alignments. For common alignments you can use the +existing static instancestop, center, and bottom.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case align(to: VerticalAlignment)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the top edge of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Children will be vertically centered in the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the bottom edge of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the top edge of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "top")
    +public static let leading: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the bottom edge of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "bottom")
    +public static let trailing: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Rule.html b/Structs/Rule.html new file mode 100644 index 000000000..73fc7171b --- /dev/null +++ b/Structs/Rule.html @@ -0,0 +1,889 @@ + + + + Rule Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Rule

+
+
+ +
public struct Rule : ProxyElement
+ +
+
+

A solid line, parallel to the x or y axis, with a fixed thickness but unconstrained in length, +suitable for use as a separator.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Orientation + +
    +
    +
    +
    +
    +
    +

    Represents whether the rule is parallel to the x or y axis.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Orientation
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Thickness + +
    +
    +
    +
    +
    +
    +

    Represents the thickness of a rule in the direction perpendicular to its orientation.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Thickness
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + orientation + +
    +
    +
    +
    +
    +
    +

    Whether this rule is horizontal or vertical.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var orientation: Orientation
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + thickness + +
    +
    +
    +
    +
    +
    +

    The thickness of this rule in the direction perpendicular to its orientation.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var thickness: Thickness
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + color + +
    +
    +
    +
    +
    +
    +

    The color that the rule should be drawn.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var color: UIColor
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a Rule with the given properties.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(orientation: Orientation, color: UIColor, thickness: Thickness = .hairline)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + orientation + + +
    +

    Whether the rule is horizontal or vertical.

    +
    +
    + + color + + +
    +

    The color that the rule should be drawn.

    +
    +
    + + thickness + + +
    +

    The thickness of the rule in the direction perpendicular to its orientation. +Defaults to a hairline thickness, meaning the thinnest possible line that can be drawn.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + elementRepresentation + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var elementRepresentation: Element { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Rule/Orientation.html b/Structs/Rule/Orientation.html new file mode 100644 index 000000000..e7e0a850b --- /dev/null +++ b/Structs/Rule/Orientation.html @@ -0,0 +1,708 @@ + + + + Orientation Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Orientation

+
+
+ +
public enum Orientation
+ +
+
+

Represents whether the rule is parallel to the x or y axis.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + horizontal + +
    +
    +
    +
    +
    +
    +

    Indicates that the rule is parallel to the x axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case horizontal
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + vertical + +
    +
    +
    +
    +
    +
    +

    Indicates that the rule is parallel to the y axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case vertical
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Rule/Thickness.html b/Structs/Rule/Thickness.html new file mode 100644 index 000000000..a0e61a192 --- /dev/null +++ b/Structs/Rule/Thickness.html @@ -0,0 +1,709 @@ + + + + Thickness Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Thickness

+
+
+ +
public enum Thickness
+ +
+
+

Represents the thickness of a rule in the direction perpendicular to its orientation.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + hairline + +
    +
    +
    +
    +
    +
    +

    Indicates that the rule should be exactly 1 screen pixel thick, +the thinnest possible line that can be drawn.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case hairline
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + points(_:) + +
    +
    +
    +
    +
    +
    +

    An exact thickness in points.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case points(CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ScrollView.html b/Structs/ScrollView.html new file mode 100644 index 000000000..389648df3 --- /dev/null +++ b/Structs/ScrollView.html @@ -0,0 +1,1241 @@ + + + + ScrollView Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ScrollView

+
+
+ +
public struct ScrollView : Element
+ +
+
+

Wraps a content element and makes it scrollable.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The content to be scrolled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentSize + +
    +
    +
    +
    +
    +
    +

    Determines the sizing behavior of the content within the scroll view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentSize: ContentSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + alwaysBounceVertical + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alwaysBounceVertical: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alwaysBounceHorizontal: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentInset + +
    +
    +
    +
    +
    +
    +

    How much the content of the ScrollView should be inset.

    + +

    Note: When keyboardAdjustmentMode is used, it will also adjust +the on-screen UIScrollViews contentInset.bottom to make space for the keyboard.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentInset: UIEdgeInsets
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + centersUnderflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var centersUnderflow: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var showsHorizontalScrollIndicator: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var showsVerticalScrollIndicator: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pullToRefreshBehavior + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var pullToRefreshBehavior: PullToRefreshBehavior
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyboardDismissMode + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var keyboardDismissMode: UIScrollView.KeyboardDismissMode
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentInsetAdjustmentBehavior: UIScrollView.ContentInsetAdjustmentBehavior
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var keyboardAdjustmentMode: KeyboardAdjustmentMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + delaysContentTouches + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var delaysContentTouches: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentOffsetTrigger + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentOffsetTrigger: ScrollTrigger?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    _ contentSize: ContentSize = .fittingHeight,
    +    wrapping element: Element,
    +    configure: (inout ScrollView) -> Void = { _ in }
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum KeyboardAdjustmentMode : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ContentSize + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ContentSize : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + PullToRefreshBehavior + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PullToRefreshBehavior
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ScrollTrigger + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class ScrollTrigger
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ContentOffset + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ContentOffset
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ScrollView/ContentOffset.html b/Structs/ScrollView/ContentOffset.html new file mode 100644 index 000000000..cd9258d62 --- /dev/null +++ b/Structs/ScrollView/ContentOffset.html @@ -0,0 +1,784 @@ + + + + ContentOffset Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ContentOffset

+
+
+ +
public struct ContentOffset
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + ScrollingContext + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ScrollingContext
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Provider + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Provider = (ScrollingContext) -> CGPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: ScrollView.ContentOffset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: ScrollView.ContentOffset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(provider:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(provider: @escaping Provider)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ScrollView/ContentOffset/ScrollingContext.html b/Structs/ScrollView/ContentOffset/ScrollingContext.html new file mode 100644 index 000000000..31dcb4044 --- /dev/null +++ b/Structs/ScrollView/ContentOffset/ScrollingContext.html @@ -0,0 +1,731 @@ + + + + ScrollingContext Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ScrollingContext

+
+
+ +
public struct ScrollingContext
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + contentSize + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentSize: CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scrollViewBounds + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var scrollViewBounds: CGRect
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentInsets + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentInsets: UIEdgeInsets
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ScrollView/ContentSize.html b/Structs/ScrollView/ContentSize.html new file mode 100644 index 000000000..1d815f19a --- /dev/null +++ b/Structs/ScrollView/ContentSize.html @@ -0,0 +1,761 @@ + + + + ContentSize Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ContentSize

+
+
+ +
public enum ContentSize : Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + fittingWidth + +
    +
    +
    +
    +
    +
    +

    The content will fill the height of the scroller, width will be dynamic

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fittingWidth
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fittingHeight + +
    +
    +
    +
    +
    +
    +

    The content will fill the width of the scroller, height will be dynamic

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fittingHeight
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fittingContent + +
    +
    +
    +
    +
    +
    +

    The content size will be the minimum required to fit the content.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fittingContent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + custom(_:) + +
    +
    +
    +
    +
    +
    +

    Manually provided content size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case custom(CGSize)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ScrollView/KeyboardAdjustmentMode.html b/Structs/ScrollView/KeyboardAdjustmentMode.html new file mode 100644 index 000000000..5a8e0b4b3 --- /dev/null +++ b/Structs/ScrollView/KeyboardAdjustmentMode.html @@ -0,0 +1,705 @@ + + + + KeyboardAdjustmentMode Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

KeyboardAdjustmentMode

+
+
+ +
public enum KeyboardAdjustmentMode : Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + none + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case none
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + adjustsWhenVisible + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case adjustsWhenVisible
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ScrollView/PullToRefreshBehavior.html b/Structs/ScrollView/PullToRefreshBehavior.html new file mode 100644 index 000000000..2d11fac27 --- /dev/null +++ b/Structs/ScrollView/PullToRefreshBehavior.html @@ -0,0 +1,731 @@ + + + + PullToRefreshBehavior Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

PullToRefreshBehavior

+
+
+ +
public enum PullToRefreshBehavior
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + disabled + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case disabled
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + enabled(action:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case enabled(action: () -> Void)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + refreshing + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case refreshing
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ScrollView/ScrollTrigger.html b/Structs/ScrollView/ScrollTrigger.html new file mode 100644 index 000000000..2aacfdfdb --- /dev/null +++ b/Structs/ScrollView/ScrollTrigger.html @@ -0,0 +1,705 @@ + + + + ScrollTrigger Class Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ScrollTrigger

+
+
+ +
public final class ScrollTrigger
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scroll(to:animated:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func scroll(to: ContentOffset, animated: Bool)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/SegmentedControl.html b/Structs/SegmentedControl.html new file mode 100644 index 000000000..3c30e1ca0 --- /dev/null +++ b/Structs/SegmentedControl.html @@ -0,0 +1,972 @@ + + + + SegmentedControl Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

SegmentedControl

+
+
+ +
public struct SegmentedControl : Element, Measurable
+ +
+
+

Allows users to pick from an array of options.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + items + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var items: [Item]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + selection + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var selection: Selection
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + font + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var font: UIFont
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + roundingScale + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var roundingScale: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(items: [Item] = [], configure: (inout SegmentedControl) -> Void = { _ in })
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    selection: Selection = .none,
    +    font: UIFont = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body),
    +    @Builder<Item> itemBuilder: () -> [Item]
    +)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func appendItem(title: String, width: Item.Width = .automatic, onSelect: @escaping () -> Void)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + measure(in:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func measure(in constraint: SizeConstraint) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Selection + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Selection
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Item + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Item
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/SegmentedControl/Item.html b/Structs/SegmentedControl/Item.html new file mode 100644 index 000000000..e940effe2 --- /dev/null +++ b/Structs/SegmentedControl/Item.html @@ -0,0 +1,758 @@ + + + + Item Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Item

+
+
+ +
public struct Item
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + title + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var title: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + width + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var width: Width
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onSelect + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onSelect: () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Width + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Width
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/SegmentedControl/Item/Width.html b/Structs/SegmentedControl/Item/Width.html new file mode 100644 index 000000000..2effe7c83 --- /dev/null +++ b/Structs/SegmentedControl/Item/Width.html @@ -0,0 +1,705 @@ + + + + Width Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Width

+
+
+ +
public enum Width
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + automatic + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case automatic
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + specific(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case specific(CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/SegmentedControl/Selection.html b/Structs/SegmentedControl/Selection.html new file mode 100644 index 000000000..0b1103df4 --- /dev/null +++ b/Structs/SegmentedControl/Selection.html @@ -0,0 +1,705 @@ + + + + Selection Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Selection

+
+
+ +
public enum Selection
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + none + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case none
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + index(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case index(Int)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/SizeConstraint.html b/Structs/SizeConstraint.html new file mode 100644 index 000000000..8724ab96e --- /dev/null +++ b/Structs/SizeConstraint.html @@ -0,0 +1,1044 @@ + + + + SizeConstraint Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

SizeConstraint

+
+
+ +
public struct SizeConstraint : Hashable, CustomStringConvertible
+ +
+
+

Defines the maximum size for a measurement.

+ +

Currently this constraint type can only handles layout where +the primary (breaking) axis is horizontal (row in CSS-speak).

+ +
+
+ +
+
+
+
    +
  • +
    + + + + width + +
    +
    +
    +
    +
    +
    +

    The width constraint.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @SizeConstraint
    +.UnconstrainedInfiniteAxis public var width: Axis { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + height + +
    +
    +
    +
    +
    +
    +

    The height constraint.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @SizeConstraint
    +.UnconstrainedInfiniteAxis public var height: Axis { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(width:height:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(width: Axis, height: Axis)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

CustomDebugStringConvertible +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unconstrained + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var unconstrained: SizeConstraint { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ size: CGSize)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(width:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(width: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(height:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(height: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimum + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimum: CGSize { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + maximum + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var maximum: CGSize { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(width:height:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(width: CGFloat, height: CGFloat) -> SizeConstraint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(by:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(by insets: UIEdgeInsets) -> SizeConstraint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Axis + +
    +
    +
    +
    +
    +
    +

    Represents a size constraint for a single axis.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Axis : Hashable, CustomStringConvertible
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    This property wrapper checks the value of atMost cases, and turns it into an +unconstrained axis if the value equals greatestFiniteMagnitude or isInfinite.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @propertyWrapper
    +public struct UnconstrainedInfiniteAxis : Equatable, Hashable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/SizeConstraint/Axis.html b/Structs/SizeConstraint/Axis.html new file mode 100644 index 000000000..3a910462a --- /dev/null +++ b/Structs/SizeConstraint/Axis.html @@ -0,0 +1,1080 @@ + + + + Axis Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Axis

+
+
+ +
public enum Axis : Hashable, CustomStringConvertible
+ +
+
+

Represents a size constraint for a single axis.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + atMost(_:) + +
    +
    +
    +
    +
    +
    +

    The measurement should treat the associated value as the largest +possible size in the given dimension.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case atMost(CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unconstrained + +
    +
    +
    +
    +
    +
    +

    The measurement is unconstrained in the given dimension.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case unconstrained
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + maximum + +
    +
    +
    +
    +
    +
    +

    The maximum magnitude in the given dimension.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var maximum: CGFloat { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimum + +
    +
    +
    +
    +
    +
    +

    The minimum magnitude in the given dimension.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimum: CGFloat { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + constrainedValue + +
    +
    +
    +
    +
    +
    +

    The constraint value in this dimension, or nil if this dimension is unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var constrainedValue: CGFloat? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +(_:_:) + +
    +
    +
    +
    +
    +
    +

    Adds a scalar value to an Axis. If the Axis is unconstrained the +result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func + (lhs: SizeConstraint.Axis, rhs: CGFloat) -> SizeConstraint.Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -(_:_:) + +
    +
    +
    +
    +
    +
    +

    Subtracts a scalar value from an Axis. If the Axis is unconstrained +the result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func - (lhs: SizeConstraint.Axis, rhs: CGFloat) -> SizeConstraint.Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + /(_:_:) + +
    +
    +
    +
    +
    +
    +

    Divides an Axis by a scalar value. If the Axis is unconstrained the +result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func / (lhs: SizeConstraint.Axis, rhs: CGFloat) -> SizeConstraint.Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + *(_:_:) + +
    +
    +
    +
    +
    +
    +

    Multiplies an Axis by a scalar value. If the Axis is unconstrained +the result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func * (lhs: SizeConstraint.Axis, rhs: CGFloat) -> SizeConstraint.Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isGreaterThanZero + +
    +
    +
    +
    +
    +
    +

    If the Axis is greater than zero.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isGreaterThanZero: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +=(_:_:) + +
    +
    +
    +
    +
    +
    +

    Adds a scalar value to an Axis. If the Axis is unconstrained the +result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func += (lhs: inout SizeConstraint.Axis, rhs: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -=(_:_:) + +
    +
    +
    +
    +
    +
    +

    Subtracts a scalar value from an Axis. If the Axis is unconstrained +the result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func -= (lhs: inout SizeConstraint.Axis, rhs: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + /=(_:_:) + +
    +
    +
    +
    +
    +
    +

    Divides an Axis by a scalar value. If the Axis is unconstrained the +result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func /= (lhs: inout SizeConstraint.Axis, rhs: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + *=(_:_:) + +
    +
    +
    +
    +
    +
    +

    Multiplies an Axis by a scalar value. If the Axis is unconstrained +the result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func *= (lhs: inout SizeConstraint.Axis, rhs: CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

CustomDebugStringConvertible +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/SizeConstraint/UnconstrainedInfiniteAxis.html b/Structs/SizeConstraint/UnconstrainedInfiniteAxis.html new file mode 100644 index 000000000..2cd7ab74e --- /dev/null +++ b/Structs/SizeConstraint/UnconstrainedInfiniteAxis.html @@ -0,0 +1,708 @@ + + + + UnconstrainedInfiniteAxis Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UnconstrainedInfiniteAxis

+
+
+ +
@propertyWrapper
+public struct UnconstrainedInfiniteAxis : Equatable, Hashable
+ +
+
+

This property wrapper checks the value of atMost cases, and turns it into an +unconstrained axis if the value equals greatestFiniteMagnitude or isInfinite.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedValue: Axis { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(wrappedValue:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wrappedValue value: Axis)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Spacer.html b/Structs/Spacer.html new file mode 100644 index 000000000..1ba4d190a --- /dev/null +++ b/Structs/Spacer.html @@ -0,0 +1,816 @@ + + + + Spacer Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Spacer

+
+
+ +
public struct Spacer : Element
+ +
+
+

An element that does not display anything (it has neither children or a view).

+ +

Spacer simply takes up a specified amount of space within a layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + size + +
    +
    +
    +
    +
    +
    +

    The size that this spacer will take in a layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var size: CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(size:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new spacer with the given size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(size: CGSize)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(width:height:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new spacer with the given width and height.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(width: CGFloat = 0.0, height: CGFloat = 0.0)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new spacer with the given value for the width and height.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ value: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/StackLayout.html b/Structs/StackLayout.html new file mode 100644 index 000000000..6aaa0970b --- /dev/null +++ b/Structs/StackLayout.html @@ -0,0 +1,1178 @@ + + + + StackLayout Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

StackLayout

+
+
+ +
public struct StackLayout : Layout
+ +
+
+

A layout implementation that linearly lays out an array of children along either the horizontal or vertical axis.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + defaultTraits + +
    +
    +
    +
    +
    +
    +

    The default traits for a child contained within a stack layout

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var defaultTraits: Traits { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AlignmentGuide + +
    +
    +
    +
    +
    +
    +

    Determines how a stack child will be aligned on the cross axis relative to other children.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AlignmentGuide
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Traits + +
    +
    +
    +
    +
    +
    +

    Contains traits that affect the layout of individual children in the stack.

    + +

    See StackElement.add(...) for details.

    +

    In Xcode

    + +

    StackElement.add()

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Traits
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + axis + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var axis: Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + underflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var underflow: StackLayout.UnderflowDistribution
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + overflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var overflow: StackLayout.OverflowDistribution
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + alignment + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alignment: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimumSpacing + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumSpacing: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(axis:alignment:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(axis: Axis, alignment: Alignment)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + measure(in:items:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func measure(in constraint: SizeConstraint, items: [(traits: Traits, content: Measurable)]) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layout(size:items:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func layout(size: CGSize, items: [(traits: Traits, content: Measurable)]) -> [LayoutAttributes]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Axis + +
    +
    +
    +
    +
    +
    +

    The direction of the stack.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + UnderflowDistribution + +
    +
    +
    +
    +
    +
    +

    Determines the on-axis layout when there is extra free space available.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum UnderflowDistribution
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + OverflowDistribution + +
    +
    +
    +
    +
    +
    +

    Determines the on-axis layout when there is not enough space to fit all children as measured.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum OverflowDistribution
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Alignment + +
    +
    +
    +
    +
    +
    +

    Determines the cross-axis layout (height for a horizontal stack, width for a vertical stack).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Alignment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Layout logic +

+
+
+ +
+
+
+ + +
+ +

Result Builders +

+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/StackLayout/Alignment.html b/Structs/StackLayout/Alignment.html new file mode 100644 index 000000000..da8179ca2 --- /dev/null +++ b/Structs/StackLayout/Alignment.html @@ -0,0 +1,709 @@ + + + + Alignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Alignment

+
+
+ +
public enum Alignment
+ +
+
+

Determines the cross-axis layout (height for a horizontal stack, width for a vertical stack).

+ +
+
+ +
+
+
+
    +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    Children will be stretched to the size of the stack.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + align(to:) + +
    +
    +
    +
    +
    +
    +

    Children will be aligned relatively to each other, and then all the contents will be +aligned to the stack’s bounding box, according to the specified alignment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case align(to: AlignmentID.Type)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/StackLayout/AlignmentGuide.html b/Structs/StackLayout/AlignmentGuide.html new file mode 100644 index 000000000..d5d2061d1 --- /dev/null +++ b/Structs/StackLayout/AlignmentGuide.html @@ -0,0 +1,682 @@ + + + + AlignmentGuide Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AlignmentGuide

+
+
+ +
public struct AlignmentGuide
+ +
+
+

Determines how a stack child will be aligned on the cross axis relative to other children.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + computeValue + +
    +
    +
    +
    +
    +
    +

    Returns a value along the stack’s cross axis, in the element’s own coordinate space, +where a child should be aligned relative to the alignment guides of its siblings.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var computeValue: (ElementDimensions) -> CGFloat
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/StackLayout/Axis.html b/Structs/StackLayout/Axis.html new file mode 100644 index 000000000..b42bf0d58 --- /dev/null +++ b/Structs/StackLayout/Axis.html @@ -0,0 +1,706 @@ + + + + Axis Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Axis

+
+
+ +
public enum Axis
+ +
+
+

The direction of the stack.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + horizontal + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case horizontal
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + vertical + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case vertical
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/StackLayout/Child.html b/Structs/StackLayout/Child.html new file mode 100644 index 000000000..6b4321ef4 --- /dev/null +++ b/Structs/StackLayout/Child.html @@ -0,0 +1,859 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child
+
extension StackLayout.Child: ElementBuilderChild
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let element: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + traits + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let traits: StackLayout.Traits
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Priority + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Priority
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    element: Element,
    +    traits: StackLayout.Traits = .init(),
    +    key: AnyHashable? = nil
    +)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    element: Element,
    +    priority: Priority = .flexible,
    +    alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    key: AnyHashable? = nil
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Result Builders +

+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/StackLayout/Child/Priority.html b/Structs/StackLayout/Child/Priority.html new file mode 100644 index 000000000..2b0f0917b --- /dev/null +++ b/Structs/StackLayout/Child/Priority.html @@ -0,0 +1,765 @@ + + + + Priority Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Priority

+
+
+ +
public enum Priority
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + fixed + +
    +
    +
    +
    +
    +
    +

    The element has a fixed size, with a grow and shrink priority of 0. +The element will neither grow nor shrink during overflow and underflow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fixed
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + flexible + +
    +
    +
    +
    +
    +
    +

    The element has a flexible size, with a grow and shrink priority of 1. +The element will grow during underflow and shrink during overflow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case flexible
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + grows + +
    +
    +
    +
    +
    +
    +

    The element has a flexible size, it will grow if the stack underflows, +but it will not shrink if the stack overflows.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case grows
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shrinks + +
    +
    +
    +
    +
    +
    +

    The element has a flexible size, it will shrink if the stack overflows, +but it will not grow if the stack underflows.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case shrinks
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/StackLayout/OverflowDistribution.html b/Structs/StackLayout/OverflowDistribution.html new file mode 100644 index 000000000..5be99822c --- /dev/null +++ b/Structs/StackLayout/OverflowDistribution.html @@ -0,0 +1,708 @@ + + + + OverflowDistribution Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

OverflowDistribution

+
+
+ +
public enum OverflowDistribution
+ +
+
+

Determines the on-axis layout when there is not enough space to fit all children as measured.

+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Each child will shrink proportionally to its measured size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case condenseProportionally
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + condenseUniformly + +
    +
    +
    +
    +
    +
    +

    Each child will shrink by the same amount.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case condenseUniformly
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/StackLayout/Traits.html b/Structs/StackLayout/Traits.html new file mode 100644 index 000000000..7154a8fd2 --- /dev/null +++ b/Structs/StackLayout/Traits.html @@ -0,0 +1,786 @@ + + + + Traits Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Traits

+
+
+ +
public struct Traits
+ +
+
+

Contains traits that affect the layout of individual children in the stack.

+ +

See StackElement.add(...) for details.

+

In Xcode

+ +

StackElement.add()

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/StackLayout/UnderflowDistribution.html b/Structs/StackLayout/UnderflowDistribution.html new file mode 100644 index 000000000..bf8beebe1 --- /dev/null +++ b/Structs/StackLayout/UnderflowDistribution.html @@ -0,0 +1,816 @@ + + + + UnderflowDistribution Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UnderflowDistribution

+
+
+ +
public enum UnderflowDistribution
+ +
+
+

Determines the on-axis layout when there is extra free space available.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + spaceEvenly + +
    +
    +
    +
    +
    +
    +

    Additional space will be evenly divided into the spacing between items.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case spaceEvenly
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + growProportionally + +
    +
    +
    +
    +
    +
    +

    Additional space will be divided proportionally by the measured size of each child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case growProportionally
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + growUniformly + +
    +
    +
    +
    +
    +
    +

    Additional space will be distributed uniformly between children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case growUniformly
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + justifyToStart + +
    +
    +
    +
    +
    +
    +

    Additional space will appear after all children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case justifyToStart
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + justifyToCenter + +
    +
    +
    +
    +
    +
    +

    Additional space will be distributed on either side of all children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case justifyToCenter
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + justifyToEnd + +
    +
    +
    +
    +
    +
    +

    Additional space will be appear before all children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case justifyToEnd
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Tappable.html b/Structs/Tappable.html new file mode 100644 index 000000000..c84f211bb --- /dev/null +++ b/Structs/Tappable.html @@ -0,0 +1,784 @@ + + + + Tappable Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Tappable

+
+
+ +
public struct Tappable : Element
+ +
+
+

Wraps a content element and calls the provided closure when tapped.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/TextAttributeContainer.html b/Structs/TextAttributeContainer.html new file mode 100644 index 000000000..dde1ca402 --- /dev/null +++ b/Structs/TextAttributeContainer.html @@ -0,0 +1,966 @@ + + + + TextAttributeContainer Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TextAttributeContainer

+
+
+ +
public struct TextAttributeContainer
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + empty + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let empty: TextAttributeContainer
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Get or set for the given AttributedTextKey.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Key>(key: Key.Type) -> Key.Value? where Key : AttributedTextKey { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Font +

+
+
+
    +
  • +
    + + + + font + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var font: UIFont? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Color +

+
+
+
    +
  • +
    + + + + color + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var color: UIColor? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Tracking +

+
+
+
    +
  • +
    + + + + tracking + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tracking: CGFloat? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Underline +

+
+
+
    +
  • +
    + + + + underlineStyle + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var underlineStyle: NSUnderlineStyle? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + underlineColor + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var underlineColor: UIColor? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Paragraph style +

+
+
+
    +
  • +
    + + + + paragraphStyle + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var paragraphStyle: NSParagraphStyle? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Link +

+
+
+
    +
  • +
    + + + + link + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var link: URL? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/TextField.html b/Structs/TextField.html new file mode 100644 index 000000000..8737a6409 --- /dev/null +++ b/Structs/TextField.html @@ -0,0 +1,1461 @@ + + + + TextField Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TextField

+
+
+ +
public struct TextField : Element
+ +
+
+

Displays a text field.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + text + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var text: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + placeholder + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var placeholder: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onChange + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onChange: ((String) -> Void)?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + secure + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var secure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isEnabled: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + textAlignment + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var textAlignment: NSTextAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + font + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var font: UIFont
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + textColor + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var textColor: UIColor
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + clearButtonMode + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var clearButtonMode: UITextField.ViewMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyboardType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var keyboardType: UIKeyboardType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyboardAppearance + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var keyboardAppearance: UIKeyboardAppearance
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var autocapitalizationType: UITextAutocapitalizationType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + autocorrectionType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var autocorrectionType: UITextAutocorrectionType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + spellCheckingType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var spellCheckingType: UITextSpellCheckingType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + textContentType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var textContentType: UITextContentType?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onReturn + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onReturn: (() -> Void)?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + returnKeyType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var returnKeyType: UIReturnKeyType
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var enablesReturnKeyAutomatically: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + focusBinding + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var focusBinding: FocusBinding?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityTraits + +
    +
    +
    +
    +
    +
    +

    A set of accessibility traits that should be applied to the field, these will be merged with any existing traits. +These traits should relate to the content of the text, for example .header, .link, or .updatesFrequently.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityTraits: Set<AccessibilityElement.Trait>?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(text:configure:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(text: String, configure: (inout TextField) -> Void = { _ in })
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + focused(when:equals:) + +
    +
    +
    +
    +
    +
    +

    Modifies this text field by binding its focus state to the given state value.

    + +

    Use this modifier to cause the text field to receive focus whenever the state equals +the value. Typically, you create an enumeration of fields that may receive focus, bind an +instance of this enumeration, and assign its cases to focusable views.

    + +

    The following example uses the cases of a LoginForm enumeration to bind the focus state of +two TextField elements. A sign-in button validates the fields and sets the bound +focusedField value to any field that requires the user to correct a problem.

    +
    struct LoginForm: ProxyElement {
    +    enum Field: Hashable {
    +        case username
    +        case password
    +    }
    +
    +    var username: String
    +    var password: String
    +    var handleLogin: () -> Void
    +
    +    @FocusState private var focusedField: Field?
    +
    +    var elementRepresentation: Element {
    +        Column { column in
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .username)
    +            )
    +
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .password)
    +            )
    +
    +            column.add(
    +                child: Button(
    +                    onTap: {
    +                        if username.isEmpty {
    +                            focusedField = .username
    +                        } else if password.isEmpty {
    +                            focusedField = .password
    +                        } else {
    +                            handleLogin()
    +                        }
    +                    },
    +                    wrapping: Label(text: "Sign In")
    +                )
    +            )
    +        }
    +    }
    +}
    +
    + +

    To control focus using a Boolean, use the focused(when:) method instead.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func focused<Value>(
    +    when state: FocusState<Value?>,
    +    equals value: Value
    +) -> Self
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + state + + +
    +

    The state to bind to.

    +
    +
    + + value + + +
    +

    The value to match against when determining whether the binding should change.

    +
    +
    +
    +
    +

    Return Value

    +

    A modified text field.

    +
    +
    +
    +
  • +
  • +
    + + + + focused(when:) + +
    +
    +
    +
    +
    +
    +

    Modifies this text field by binding its focus state to the given Boolean state value.

    + +

    Use this modifier to cause the text field to receive focus whenever the the condition is +true. You can use this modifier to observe the focus state of a text field, or +programmatically focus or blur the field.

    + +

    In the following example, a single text field accepts a user’s desired username. The text +field binds its focus state to the Boolean value isUsernameFocused. A “Submit” button’s +action checks if the username is empty, and sets isUsernameFocused to true, which causes +focus to return to the text field.

    +
    struct SignupForm: ProxyElement {
    +    var username: String
    +    var onSignUpTapped: () -> Void
    +
    +    @FocusState var isUsernameFocused: Bool
    +
    +    var elementRepresentation: Element {
    +        Column { column in
    +            column.add(
    +                child: TextField(text: username)
    +                    .focused(when: $isUsernameFocused)
    +            )
    +
    +            column.add(
    +                child: Button(
    +                    onTap: {
    +                        if username.isEmpty {
    +                            isUsernameFocused = true
    +                        } else {
    +                            onSignUpTapped()
    +                        }
    +                    },
    +                    wrapping: Label(text: "Submit")
    +                )
    +            )
    +        }
    +    }
    +}
    +
    + +

    To control focus by matching a value, use the focused(when:equals:) method instead.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func focused(when condition: FocusState<Bool>) -> TextField
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + condition + + +
    +

    The state to bind to.

    +
    +
    +
    +
    +

    Return Value

    +

    A modified text field.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/TextShadow.html b/Structs/TextShadow.html new file mode 100644 index 000000000..d0bf9cbdc --- /dev/null +++ b/Structs/TextShadow.html @@ -0,0 +1,788 @@ + + + + TextShadow Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TextShadow

+
+
+ +
public struct TextShadow : Hashable
+ +
+
+

Describes a shadow that can be applied to text elements, like Label.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + radius + +
    +
    +
    +
    +
    +
    +

    The blur radius of the shadow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var radius: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + opacity + +
    +
    +
    +
    +
    +
    +

    The opacity of the shadow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var opacity: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + offset + +
    +
    +
    +
    +
    +
    +

    The offset of the shadow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var offset: UIOffset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + color + +
    +
    +
    +
    +
    +
    +

    The color of the shadow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var color: UIColor
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(radius: CGFloat, opacity: CGFloat, offset: UIOffset, color: UIColor)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/TintAdjustmentMode.html b/Structs/TintAdjustmentMode.html new file mode 100644 index 000000000..34135afc2 --- /dev/null +++ b/Structs/TintAdjustmentMode.html @@ -0,0 +1,789 @@ + + + + TintAdjustmentMode Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TintAdjustmentMode

+
+
+ +
public struct TintAdjustmentMode : Element
+ +
+
+

TintAdjustmentMode conditionally modifies the tint adjustment mode of its wrapped element.

+
+

Note

+ When a tint adjustment mode is applied, any elements within the wrapped element will adopt the parent’s tint adjustment mode. + +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + tintAdjustmentMode + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tintAdjustmentMode: UIView.TintAdjustmentMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:wrapping:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ tintAdjustmentMode: UIView.TintAdjustmentMode, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/Transformed.html b/Structs/Transformed.html new file mode 100644 index 000000000..21601cbd3 --- /dev/null +++ b/Structs/Transformed.html @@ -0,0 +1,882 @@ + + + + Transformed Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Transformed

+
+
+ +
public struct Transformed : Element
+ +
+
+

Changes the transform of the wrapped element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The content element whose transform is being affected.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + transform + +
    +
    +
    +
    +
    +
    +

    The transform of the wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transform: CATransform3D
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a Transformed with the given content element and 3D transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    transform: CATransform3D,
    +    wrapping wrappedElement: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + transform + + +
    +

    The 3D transform to be applied to the wrapped element.

    +
    +
    + + wrapping + + +
    +

    The content element to be made transparent.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a Transformed with the given content element and DD transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    transform: CGAffineTransform,
    +    wrapping wrappedElement: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + transform + + +
    +

    The 2D transform to be applied to the wrapped element.

    +
    +
    + + wrapping + + +
    +

    The content element to be made transparent.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/TransitionContainer.html b/Structs/TransitionContainer.html new file mode 100644 index 000000000..da778b548 --- /dev/null +++ b/Structs/TransitionContainer.html @@ -0,0 +1,959 @@ + + + + TransitionContainer Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TransitionContainer

+
+
+ +
public struct TransitionContainer : Element
+ +
+
+

Wraps a content element and adds transitions when the element appears, +disappears, or changes layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + appearingTransition + +
    +
    +
    +
    +
    +
    +

    The transition to apply when the wrapped element is appearing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var appearingTransition: VisibilityTransition?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The transition to apply when the wrapped element is disappearing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var disappearingTransition: VisibilityTransition?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutTransition + +
    +
    +
    +
    +
    +
    +

    The transition to apply when the wrapped element’s layout is changing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutTransition: LayoutTransition
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The element to which transitions are being applied.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(wrapping:) + +
    +
    +
    +
    +
    +
    +

    Create a transition container wrapping an element.

    + +

    The created container’s default transitions are:

    + + + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, message: "Use TransitionContainer(transitioning:﹚, which has better defaults")
    +public init(wrapping element: Element)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + wrapping + + +
    +

    The element to which transitions will be applied.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Create a transition container wrapping an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    appearingTransition: VisibilityTransition? = nil,
    +    disappearingTransition: VisibilityTransition? = nil,
    +    layoutTransition: LayoutTransition = .inherited,
    +    transitioning element: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + appearingTransition + + +
    +

    The transition to use when the element appears. By default, no transition.

    +
    +
    + + disappearingTransition + + +
    +

    The transition to use when the element disappears. By default, no transition.

    +
    +
    + + layoutTransition + + +
    +

    The transition to use when the element’s layout changes. The default value is +.inherited, which means the element will participate in the same transition as its +nearest ancestor with a specified transition.

    +
    +
    + + transitioning + + +
    +

    The element to which transitions will be applied.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/UIViewElementContext.html b/Structs/UIViewElementContext.html new file mode 100644 index 000000000..0cc3921b2 --- /dev/null +++ b/Structs/UIViewElementContext.html @@ -0,0 +1,709 @@ + + + + UIViewElementContext Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UIViewElementContext

+
+
+ +
public struct UIViewElementContext
+ +
+
+

Context object passed into updateUIView.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + isMeasuring + +
    +
    +
    +
    +
    +
    +

    This bool indicates whether the view being updated is the static measuring instance. You may +not want to perform certain updates if it is (such as updating field trigger references).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isMeasuring: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + environment + +
    +
    +
    +
    +
    +
    +

    The environment the element is rendered in.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var environment: Environment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/URLHandlerEnvironmentKey.html b/Structs/URLHandlerEnvironmentKey.html new file mode 100644 index 000000000..062413f31 --- /dev/null +++ b/Structs/URLHandlerEnvironmentKey.html @@ -0,0 +1,679 @@ + + + + URLHandlerEnvironmentKey Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

URLHandlerEnvironmentKey

+
+
+ +
public struct URLHandlerEnvironmentKey : EnvironmentKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + defaultValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let defaultValue: URLHandler
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/UnitPoint.html b/Structs/UnitPoint.html new file mode 100644 index 000000000..9f8a32433 --- /dev/null +++ b/Structs/UnitPoint.html @@ -0,0 +1,1036 @@ + + + + UnitPoint Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UnitPoint

+
+
+ +
public struct UnitPoint : Hashable
+ +
+
+

A normalized point in an element’s coordinate space.

+ +

Use a unit point to represent a location in an element without having to know the element’s +rendered size. The point stores a value in each dimension that indicates the fraction of the +element’s size in that dimension — measured from the element’s origin — where the point appears. +For example, you can create a unit point that represents the center of any element by using the +value 0.5 for each dimension:

+
let unitPoint = UnitPoint(x: 0.5, y: 0.5)
+
+ +

To project the unit point into the rendered element’s coordinate space, multiply each component +of the unit point with the corresponding component of the element’s size:

+
let projectedPoint = CGPoint(
+    x: unitPoint.x * size.width,
+    y: unitPoint.y * size.height
+)
+
+ +

You can perform this calculation yourself if you happen to know an element’s size, but Blueprint +typically does this for you to carry out operations that you request, like when you place a +subelement in a custom layout.

+ +

You can create custom unit points with explicit values, like the example above, or you can use +one of the built-in unit points, like zero, center, or topTrailing. The built-in +values correspond to the alignment positions of the similarly named, built-in Alignment +types.

+
+

Note

+ A unit point with one or more components outside the range [0, 1] projects to a point +outside of the element. + +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + x + +
    +
    +
    +
    +
    +
    +

    The normalized distance from the origin to the point in the horizontal direction.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var x: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + y + +
    +
    +
    +
    +
    +
    +

    The normalized distance from the origin to the point in the vertical direction.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var y: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(x:y:) + +
    +
    +
    +
    +
    +
    +

    Creates a unit point with the specified horizontal and vertical offsets.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(x: CGFloat, y: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + zero + +
    +
    +
    +
    +
    +
    +

    The origin of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let zero: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    A point that’s centered in an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    A point that’s centered vertically on the leading edge of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let leading: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    A point that’s centered vertically on the trailing edge of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let trailing: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    A point that’s centered horizontally on the top edge of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    A point that’s centered horizontally on the bottom edge of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topLeading + +
    +
    +
    +
    +
    +
    +

    A point that’s in the top leading corner of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topLeading: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topTrailing + +
    +
    +
    +
    +
    +
    +

    A point that’s in the top trailing corner of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topTrailing: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomLeading + +
    +
    +
    +
    +
    +
    +

    A point that’s in the bottom leading corner of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomLeading: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomTrailing + +
    +
    +
    +
    +
    +
    +

    A point that’s in the bottom trailing corner of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomTrailing: UnitPoint
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/UserInteractionEnabled.html b/Structs/UserInteractionEnabled.html new file mode 100644 index 000000000..636a89920 --- /dev/null +++ b/Structs/UserInteractionEnabled.html @@ -0,0 +1,789 @@ + + + + UserInteractionEnabled Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UserInteractionEnabled

+
+
+ +
public struct UserInteractionEnabled : Element
+ +
+
+

UserInteractionEnabled conditionally enables user interaction of its wrapped element.

+
+

Note

+ When user interaction is disabled, any elements within the wrapped element will become non-interactive. + +
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/Structs/VerticalAlignment.html b/Structs/VerticalAlignment.html new file mode 100644 index 000000000..9399808fa --- /dev/null +++ b/Structs/VerticalAlignment.html @@ -0,0 +1,816 @@ + + + + VerticalAlignment Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

VerticalAlignment

+
+
+ +
public struct VerticalAlignment : Equatable, CustomStringConvertible
+ +
+
+

An alignment position along the vertical axis.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Creates an instance with the given ID.

    + +

    Note: each instance should have a unique ID.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ id: AlignmentID.Type)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: VerticalAlignment, rhs: VerticalAlignment) -> Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    A guide marking the top edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: VerticalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    A guide marking the vertical center of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: VerticalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    A guide marking the bottom edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: VerticalAlignment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ViewDescription.html b/Structs/ViewDescription.html new file mode 100644 index 000000000..d7ce702ee --- /dev/null +++ b/Structs/ViewDescription.html @@ -0,0 +1,1013 @@ + + + + ViewDescription Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ViewDescription

+
+
+ +
public struct ViewDescription
+ +
+
+

Contains a description of a UIView instance. A description includes +logic to handle all parts of a view lifecycle from instantiation onward.

+ +

View descriptions include:

+ +
    +
  • The view’s class.
  • +
  • How an instance of the view should be instantiated.
  • +
  • How to update a view instance by setting properties appropriately.
  • +
  • Which subview of a view instance should be used as a contain for +additional subviews.
  • +
  • How to animate transitions for appearance, layout changes, and +disappearance.
  • +
  • Hooks to be called during lifecycle events.
  • +
+ +

A view description does not contain a concrete view instance. It simply +contains functionality for creating, updating, and animating view instances.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Generates a view description for the given view class.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ viewType: (some UIView).Type)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + viewType + + +
    +

    The class of the described view.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:configuring:) + +
    +
    +
    +
    +
    +
    +

    Generates a view description for the given view class.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<View>(_ type: View.Type, configuring: (inout Configuration<View>) -> Void) where View : UIView
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + viewType + + +
    +

    The class of the described view.

    +
    +
    + + configuring + + +
    +

    A closure that is responsible for populating a configuration object.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + viewType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var viewType: UIView.Type { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + build() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func build() -> UIView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + apply(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func apply(to view: UIView)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentView(in:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func contentView(in view: UIView) -> UIView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutTransition + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutTransition: LayoutTransition { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + appearingTransition + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var appearingTransition: VisibilityTransition? { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var disappearingTransition: VisibilityTransition? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + FrameRoundingBehavior + +
    +
    +
    +
    +
    +
    +

    The available prioritization options for rounding frames to pixel boundaries.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum FrameRoundingBehavior : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Configuration + +
    +
    +
    +
    +
    +
    +

    Represents the configuration of a specific UIView type.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Configuration<View> where View : UIView
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ViewDescription/Configuration.html b/Structs/ViewDescription/Configuration.html new file mode 100644 index 000000000..862aae8a2 --- /dev/null +++ b/Structs/ViewDescription/Configuration.html @@ -0,0 +1,1104 @@ + + + + Configuration Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Configuration

+
+
+ +
public struct Configuration<View> where View : UIView
+ +
+
+

Represents the configuration of a specific UIView type.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Update + +
    +
    +
    +
    +
    +
    +

    A closure that is applied to the native view instance during an update cycle.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Update = (_ view: View) -> Void
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + view + + +
    +

    The native view instance.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + builder + +
    +
    +
    +
    +
    +
    +

    A closure that is responsible for instantiating an instance of the native view. +The default value instantiates the view using init(frame:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var builder: () -> View
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updates + +
    +
    +
    +
    +
    +
    +

    An array of update closures.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var updates: [Update]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentView + +
    +
    +
    +
    +
    +
    +

    A closure that takes a native view instance as the single argument, and +returns a subview of that view into which child views should be added +and managed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentView: (View) -> UIView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutTransition + +
    +
    +
    +
    +
    +
    +

    The transition to use during layout changes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutTransition: LayoutTransition
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + appearingTransition + +
    +
    +
    +
    +
    +
    +

    The transition to use when this view appears.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var appearingTransition: VisibilityTransition?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The transition to use when this view disappears.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var disappearingTransition: VisibilityTransition?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onAppear + +
    +
    +
    +
    +
    +
    +

    A hook to call when the element appears.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onAppear: LifecycleCallback?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onDisappear + +
    +
    +
    +
    +
    +
    +

    A hook to call when the element disappears.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onDisappear: LifecycleCallback?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + frameRoundingBehavior + +
    +
    +
    +
    +
    +
    +

    The prioritization method to use when snapping the native view’s frame to pixel +boundaries.

    + +

    When snapping views to pixel boundaries, Blueprint prioritizes placing frame edges as +close to the correct value as possible. This ensures that flush edges stay flush after +rounding, but can result in frame sizes growing or shrinking by 1 pixel in either axis.

    + +

    Backing views that are particularly sensitive to size changes can opt-in to prioritize +preserving their frame size instead of maximally correct edges. This will guarantee +frame sizes, with the tradeoff that their edges may no longer be flush to other edges as +they were laid out.

    + +

    Generally you should not change this value except in specific circumstances when all +criteria are met:

    + +
      +
    • The backing view is sensitive to frame size, such as a text label.
    • +
    • And the backing view has a transparent background, so that overlapping frames or gaps +between frames are not visible.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var frameRoundingBehavior: FrameRoundingBehavior
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Initializes a default configuration object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + apply(_:) + +
    +
    +
    +
    +
    +
    +

    Adds the given update closure to the updates array.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func apply(_ update: @escaping Update)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Subscript for values that are not optional. We must represent these values as optional so that we can +return nil from the subscript in the case where no value has been assigned for the given keypath.

    + +

    When getting a value for a keypath:

    + +
      +
    • If a value has previously been assigned, it will be returned.
    • +
    • If no value has been assigned, nil will be returned.
    • +
    + +

    When assigning a value for a keypath:

    + +
      +
    • If a value is provided, it will be applied to the view.
    • +
    • If nil is provided, no value will be applied to the view (any previous assignment will be cleared).
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Value>(keyPath: ReferenceWritableKeyPath<View, Value>) -> Value? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Subscript for values that are optional.

    + +

    When getting a value for a keypath:

    + +
      +
    • If a value has previously been assigned (including nil), it will be returned.
    • +
    • If no value has been assigned, nil will be returned.
    • +
    + +

    When assigning a value for a keypath:

    + +
      +
    • Any provided value will be applied to the view (including nil). This means that there is a difference +between the initial state of a view description (where the view’s property will not be touched), and the +state after nil is assigned. After assigning nil to an optional keypath, view.property = nil will +be called on the next update.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Value>(keyPath: ReferenceWritableKeyPath<View, Value?>) -> Value? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ViewDescription/FrameRoundingBehavior.html b/Structs/ViewDescription/FrameRoundingBehavior.html new file mode 100644 index 000000000..62c3d142a --- /dev/null +++ b/Structs/ViewDescription/FrameRoundingBehavior.html @@ -0,0 +1,708 @@ + + + + FrameRoundingBehavior Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FrameRoundingBehavior

+
+
+ +
public enum FrameRoundingBehavior : Equatable
+ +
+
+

The available prioritization options for rounding frames to pixel boundaries.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + prioritizeEdges + +
    +
    +
    +
    +
    +
    +

    Prioritize preserving frame edge positions

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case prioritizeEdges
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + prioritizeSize + +
    +
    +
    +
    +
    +
    +

    Prioritize preserving frame sizes

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case prioritizeSize
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/ViewDescriptionContext.html b/Structs/ViewDescriptionContext.html new file mode 100644 index 000000000..35c845a35 --- /dev/null +++ b/Structs/ViewDescriptionContext.html @@ -0,0 +1,762 @@ + + + + ViewDescriptionContext Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ViewDescriptionContext

+
+
+ +
public struct ViewDescriptionContext
+ +
+
+

The context passing to the backingViewDescription of an Element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + bounds + +
    +
    +
    +
    +
    +
    +

    The bounds of this element after layout is complete.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var bounds: CGRect
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subtreeExtent + +
    +
    +
    +
    +
    +
    +

    A rectangle in the local coordinate space that contains any children. +This will be nil if there are no children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var subtreeExtent: CGRect?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + environment + +
    +
    +
    +
    +
    +
    +

    The environment the element is rendered in.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var environment: Environment
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(bounds: CGRect, subtreeExtent: CGRect?, environment: Environment)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Structs/VisibilityTransition.html b/Structs/VisibilityTransition.html new file mode 100644 index 000000000..50e7ad302 --- /dev/null +++ b/Structs/VisibilityTransition.html @@ -0,0 +1,842 @@ + + + + VisibilityTransition Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

VisibilityTransition

+
+
+ +
public struct VisibilityTransition
+ +
+
+

The transition used when a view is inserted or removed during an update cycle.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + alpha + +
    +
    +
    +
    +
    +
    +

    The alpha of the view in the hidden state (initial for appearing, final for disappearing).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alpha: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + transform + +
    +
    +
    +
    +
    +
    +

    The transform of the view in the hidden state (initial for appearing, final for disappearing).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transform: CATransform3D
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    The animation attributes that will be used to drive the transition.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributes: AnimationAttributes
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(alpha: CGFloat, transform: CATransform3D, attributes: AnimationAttributes = AnimationAttributes())
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scale + +
    +
    +
    +
    +
    +
    +

    Returns a VisibilityTransition that scales in and out.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var scale: VisibilityTransition { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fade + +
    +
    +
    +
    +
    +
    +

    Returns a VisibilityTransition that fades in and out.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var fade: VisibilityTransition { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scaleAndFade + +
    +
    +
    +
    +
    +
    +

    Returns a VisibilityTransition that simultaneously scales and fades in and out.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var scaleAndFade: VisibilityTransition { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/Typealiases.html b/Typealiases.html new file mode 100644 index 000000000..0c4a9b5ee --- /dev/null +++ b/Typealiases.html @@ -0,0 +1,728 @@ + + + + Type Aliases Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Type Aliases

+

The following type aliases are available globally.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + ElementBuilder + +
    +
    +
    +
    +
    +
    +

    Result builder for working with elements that conform to ElementBuilderChild.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias ElementBuilder<Child> = Builder<Child> where Child : ElementBuilderChild
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutSubelements + +
    +
    +
    +
    +
    +
    +

    A collection of proxy values that represent the child elements of a layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LayoutSubelements = [LayoutSubelement]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LifecycleCallback + +
    +
    +
    +
    +
    +
    +

    This is the type used by all lifecycle callback hooks.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LifecycleCallback = () -> Void
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/badge.svg b/badge.svg new file mode 100644 index 000000000..a096feca8 --- /dev/null +++ b/badge.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + documentation + + + documentation + + + 100% + + + 100% + + + diff --git a/css/highlight.css b/css/highlight.css new file mode 100644 index 000000000..c170357ce --- /dev/null +++ b/css/highlight.css @@ -0,0 +1,202 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight .c { + color: #999988; + font-style: italic; } + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +.highlight .k { + color: #000000; + font-weight: bold; } + +.highlight .o { + color: #000000; + font-weight: bold; } + +.highlight .cm { + color: #999988; + font-style: italic; } + +.highlight .cp { + color: #999999; + font-weight: bold; } + +.highlight .c1 { + color: #999988; + font-style: italic; } + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +.highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + +.highlight .ge { + color: #000000; + font-style: italic; } + +.highlight .gr { + color: #aa0000; } + +.highlight .gh { + color: #999999; } + +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +.highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + +.highlight .go { + color: #888888; } + +.highlight .gp { + color: #555555; } + +.highlight .gs { + font-weight: bold; } + +.highlight .gu { + color: #aaaaaa; } + +.highlight .gt { + color: #aa0000; } + +.highlight .kc { + color: #000000; + font-weight: bold; } + +.highlight .kd { + color: #000000; + font-weight: bold; } + +.highlight .kp { + color: #000000; + font-weight: bold; } + +.highlight .kr { + color: #000000; + font-weight: bold; } + +.highlight .kt { + color: #445588; } + +.highlight .m { + color: #009999; } + +.highlight .s { + color: #d14; } + +.highlight .na { + color: #008080; } + +.highlight .nb { + color: #0086B3; } + +.highlight .nc { + color: #445588; + font-weight: bold; } + +.highlight .no { + color: #008080; } + +.highlight .ni { + color: #800080; } + +.highlight .ne { + color: #990000; + font-weight: bold; } + +.highlight .nf { + color: #990000; } + +.highlight .nn { + color: #555555; } + +.highlight .nt { + color: #000080; } + +.highlight .nv { + color: #008080; } + +.highlight .ow { + color: #000000; + font-weight: bold; } + +.highlight .w { + color: #bbbbbb; } + +.highlight .mf { + color: #009999; } + +.highlight .mh { + color: #009999; } + +.highlight .mi { + color: #009999; } + +.highlight .mo { + color: #009999; } + +.highlight .sb { + color: #d14; } + +.highlight .sc { + color: #d14; } + +.highlight .sd { + color: #d14; } + +.highlight .s2 { + color: #d14; } + +.highlight .se { + color: #d14; } + +.highlight .sh { + color: #d14; } + +.highlight .si { + color: #d14; } + +.highlight .sx { + color: #d14; } + +.highlight .sr { + color: #009926; } + +.highlight .s1 { + color: #d14; } + +.highlight .ss { + color: #990073; } + +.highlight .bp { + color: #999999; } + +.highlight .vc { + color: #008080; } + +.highlight .vg { + color: #008080; } + +.highlight .vi { + color: #008080; } + +.highlight .il { + color: #009999; } diff --git a/css/jazzy.css b/css/jazzy.css new file mode 100644 index 000000000..c7bb9fe22 --- /dev/null +++ b/css/jazzy.css @@ -0,0 +1,404 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +*, *:before, *:after { + box-sizing: inherit; } + +body { + margin: 0; + background: #fff; + color: #333; + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + letter-spacing: .2px; + -webkit-font-smoothing: antialiased; + box-sizing: border-box; } + +h1 { + font-size: 2rem; + font-weight: 700; + margin: 1.275em 0 0.6em; } + +h2 { + font-size: 1.75rem; + font-weight: 700; + margin: 1.275em 0 0.3em; } + +h3 { + font-size: 1.5rem; + font-weight: 700; + margin: 1em 0 0.3em; } + +h4 { + font-size: 1.25rem; + font-weight: 700; + margin: 1.275em 0 0.85em; } + +h5 { + font-size: 1rem; + font-weight: 700; + margin: 1.275em 0 0.85em; } + +h6 { + font-size: 1rem; + font-weight: 700; + margin: 1.275em 0 0.85em; + color: #777; } + +p { + margin: 0 0 1em; } + +ul, ol { + padding: 0 0 0 2em; + margin: 0 0 0.85em; } + +blockquote { + margin: 0 0 0.85em; + padding: 0 15px; + color: #858585; + border-left: 4px solid #e5e5e5; } + +img { + max-width: 100%; } + +a { + color: #4183c4; + text-decoration: none; } + a:hover, a:focus { + outline: 0; + text-decoration: underline; } + a.discouraged { + text-decoration: line-through; } + a.discouraged:hover, a.discouraged:focus { + text-decoration: underline line-through; } + +table { + background: #fff; + width: 100%; + border-collapse: collapse; + border-spacing: 0; + overflow: auto; + margin: 0 0 0.85em; } + +tr:nth-child(2n) { + background-color: #fbfbfb; } + +th, td { + padding: 6px 13px; + border: 1px solid #ddd; } + +hr { + height: 1px; + border: none; + background-color: #ddd; } + +pre { + margin: 0 0 1.275em; + padding: .85em 1em; + overflow: auto; + background: #f7f7f7; + font-size: .85em; + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } + +code { + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } + +.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code { + background: #f7f7f7; + padding: .2em; } + .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after { + letter-spacing: -.2em; + content: "\00a0"; } + +pre code { + padding: 0; + white-space: pre; } + +.content-wrapper { + display: flex; + flex-direction: column; } + @media (min-width: 768px) { + .content-wrapper { + flex-direction: row; } } +.header { + display: flex; + padding: 8px; + font-size: 0.875em; + background: #444; + color: #999; } + +.header-col { + margin: 0; + padding: 0 8px; } + +.header-col--primary { + flex: 1; } + +.header-link { + color: #fff; } + +.header-icon { + padding-right: 2px; + vertical-align: -3px; + height: 16px; } + +.breadcrumbs { + font-size: 0.875em; + padding: 8px 16px; + margin: 0; + background: #fbfbfb; + border-bottom: 1px solid #ddd; } + +.carat { + height: 10px; + margin: 0 5px; } + +.navigation { + order: 2; } + @media (min-width: 768px) { + .navigation { + order: 1; + width: 25%; + max-width: 300px; + padding-bottom: 64px; + overflow: hidden; + word-wrap: normal; + background: #fbfbfb; + border-right: 1px solid #ddd; } } +.nav-groups { + list-style-type: none; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #ddd; + padding: 8px 0 8px 16px; } + +.nav-group-name-link { + color: #333; } + +.nav-group-tasks { + margin: 8px 0; + padding: 0 0 0 8px; } + +.nav-group-task { + font-size: 1em; + list-style-type: none; + white-space: nowrap; } + +.nav-group-task-link { + color: #808080; } + +.main-content { + order: 1; } + @media (min-width: 768px) { + .main-content { + order: 2; + flex: 1; + padding-bottom: 60px; } } +.section { + padding: 0 32px; + border-bottom: 1px solid #ddd; } + +.section-content { + max-width: 834px; + margin: 0 auto; + padding: 16px 0; } + +.section-name { + color: #666; + display: block; } + .section-name p { + margin-bottom: inherit; } + +.declaration .highlight { + overflow-x: initial; + padding: 8px 0; + margin: 0; + background-color: transparent; + border: none; } + +.task-group-section { + border-top: 1px solid #ddd; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; } + +.section-name-container { + position: relative; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + +.item-container { + padding: 0; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; } + .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; + padding-left: 3px; + margin-left: 20px; + font-size: 1rem; } + .item .declaration-note { + font-size: .85em; + color: #808080; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #ddd; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + left: 21px; + top: 7px; + display: block; + position: absolute; + width: 12px; + height: 12px; + border-left: 1px solid #ddd; + border-top: 1px solid #ddd; + background: #fff; + transform: rotate(45deg); } + +.height-container { + display: none; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #fff; + border: 1px solid #ddd; + border-top-width: 0; + padding-top: 10px; + padding-bottom: 5px; + padding: 8px 16px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4183c4; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #ddd; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +.footer { + padding: 8px 16px; + background: #444; + color: #ddd; + font-size: 0.8em; } + .footer p { + margin: 8px 0; } + .footer a { + color: #fff; } + +html.dash .header, html.dash .breadcrumbs, html.dash .navigation { + display: none; } + +html.dash .height-container { + display: block; } + +form[role=search] input { + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 24px; + padding: 0 10px; + margin: 0; + border: none; + border-radius: 1em; } + .loading form[role=search] input { + background: white url(../img/spinner.gif) center right 4px no-repeat; } + +form[role=search] .tt-menu { + margin: 0; + min-width: 300px; + background: #fbfbfb; + color: #333; + border: 1px solid #ddd; } + +form[role=search] .tt-highlight { + font-weight: bold; } + +form[role=search] .tt-suggestion { + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 0 8px; } + form[role=search] .tt-suggestion span { + display: table-cell; + white-space: nowrap; } + form[role=search] .tt-suggestion .doc-parent-name { + width: 100%; + text-align: right; + font-weight: normal; + font-size: 0.9em; + padding-left: 16px; } + +form[role=search] .tt-suggestion:hover, +form[role=search] .tt-suggestion.tt-cursor { + cursor: pointer; + background-color: #4183c4; + color: #fff; } + +form[role=search] .tt-suggestion:hover .doc-parent-name, +form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { + color: #fff; } diff --git a/docsets/Blueprint.docset/Contents/Info.plist b/docsets/Blueprint.docset/Contents/Info.plist new file mode 100644 index 000000000..6836728c3 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleIdentifier + com.jazzy.blueprint + CFBundleName + Blueprint + DocSetPlatformFamily + blueprint + isDashDocset + + dashIndexFilePath + index.html + isJavaScriptEnabled + + DashDocSetFamily + dashtoc + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Classes.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Classes.html new file mode 100644 index 000000000..bd209a22f --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Classes.html @@ -0,0 +1,686 @@ + + + + Classes Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Classes

+

The following classes are available globally.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + FocusTrigger + +
    +
    +
    +
    +
    +
    +

    A trigger for focus and blur actions.

    + +

    This type is meant to be used in conjunction with FocusState; you will usually not create +it directly. For information about adding focus support to a custom element, see FocusBinding.

    + +

    Triggers allow imperative actions to be invoked on backing views, by creating a trigger in a +declarative model before the view is realized, late-binding the actions to a backing view after +that view has been realized, and then invoking the action on the trigger later in response to +some other event.

    +

    See Also

    + +

    FocusBinding

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class FocusTrigger
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Classes/BlueprintView.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Classes/BlueprintView.html new file mode 100644 index 000000000..4f0f78f80 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Classes/BlueprintView.html @@ -0,0 +1,1234 @@ + + + + BlueprintView Class Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

BlueprintView

+
+
+ +
public final class BlueprintView : UIView
+ +
+
+

A view that is responsible for displaying an Element hierarchy.

+ +

A view controller that renders content via Blueprint might look something +like this:

+
final class HelloWorldViewController: UIViewController {
+
+   private var blueprintView = BlueprintView(element: nil)
+
+   override func viewDidLoad() {
+       super.viewDidLoad()
+
+       let rootElement = Label(text: "Hello, world!")
+       blueprintView.element = rootElement
+       view.addSubview(blueprintView)
+    }
+
+    override func viewDidLayoutSubviews() {
+        super.viewDidLayoutSubviews()
+        blueprintView.frame = view.bounds
+    }
+
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + environment + +
    +
    +
    +
    +
    +
    +

    A base environment used when laying out and rendering the element tree.

    + +

    Some keys will be overridden with the traits from the view itself. Eg, windowSize, safeAreaInsets, etc.

    + +

    If this blueprint view is within another blueprint view, the environment of the parent view +will be inherited by this view if automaticallyInheritsEnvironmentFromContainingBlueprintViews +is enabled. In the case of matching keys in both the inherited environment and the provided +environment, the values from this environment will take priority over the inherited environment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var environment: Environment { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    If true, then Blueprint will automatically inherit the Environment from the nearest +parent BlueprintView in the view hierarchy.

    + +

    If false, then only the values from environment will be used to +seed the environment passed to the element hierarchy.

    + +

    This property is recursive – if the nearest parent BlueprintView also sets this property to +true, then you will inherit the Environment from that view’s parent BlueprintView, and so on.

    + +

    Defaults to true.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var automaticallyInheritsEnvironmentFromContainingBlueprintViews: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    +

    The root element that is displayed within the view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var element: Element? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bounds + +
    +
    +
    +
    +
    +
    +

    We need to invalidateIntrinsicContentSize when bound.size changes for Auto Layout to work correctly.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var bounds: CGRect { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutMode + +
    +
    +
    +
    +
    +
    +

    An optional explicit layout mode for this view. If nil, this view will inherit the layout +mode of its nearest ancestor or use default if it has no ancestor.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutMode: LayoutMode? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    An optional name to help identify this view

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var name: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + metricsDelegate + +
    +
    +
    +
    +
    +
    +

    Provides performance metrics about the duration of layouts, updates, etc.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var metricsDelegate: BlueprintViewMetricsDelegate?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Instantiates a view with the given element

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public required init(element: Element?, environment: Environment = .empty)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + element + + +
    +

    The root element that will be displayed in the view.

    +
    +
    + + environment + + +
    +

    A base environment to render elements with. Defaults to .empty.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(frame:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public convenience override init(frame: CGRect)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sizeThatFits(_:) + +
    +
    +
    +
    +
    +
    +

    Measures the size needed to display the view within the given constraining size, +by measuring the current element of the BlueprintView.

    + +

    If you would like to not constrain the measurement in a given axis, +pass 0.0 or .greatestFiniteMagnitude for that axis, eg:

    +
    // Measures with a width of 100, and no height constraint.
    +blueprintView.sizeThatFits(CGSize(width: 100.0, height: 0.0))
    +
    +// Measures with a height of 100, and no width constraint.
    +blueprintView.sizeThatFits(CGSize(width: 0.0, height: 100.0))
    +
    +// Measures unconstrained in both axes.
    +blueprintView.sizeThatFits(.zero)
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func sizeThatFits(_ fittingSize: CGSize) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sizeThatFits(_:) + +
    +
    +
    +
    +
    +
    +

    Measures the size needed to display the view within the given SizeConstraint. +by measuring the current element of the BlueprintView.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sizeThatFits(_ constraint: SizeConstraint) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Measures the size needed to display the view within then given constraining size, +by measuring the current element of the BlueprintView.

    + +

    If you would like to not constrain the measurement in a given axis, +pass 0.0 or .greatestFiniteMagnitude for that axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func systemLayoutSizeFitting(
    +    _ targetSize: CGSize
    +) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Measures the size needed to display the view within then given constraining size, +by measuring the current element of the BlueprintView.

    + +

    If you would like to not constrain the measurement in a given axis, +pass 0.0 or .greatestFiniteMagnitude for that axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func systemLayoutSizeFitting(
    +    _ targetSize: CGSize,
    +    withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority,
    +    verticalFittingPriority: UILayoutPriority
    +) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + intrinsicContentSize + +
    +
    +
    +
    +
    +
    +

    For us, this is the same as sizeThatFits, since blueprint does not +contain the same concept of constraints as Autolayout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var intrinsicContentSize: CGSize { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var semanticContentAttribute: UISemanticContentAttribute { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func safeAreaInsetsDidChange()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutSubviews() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func layoutSubviews()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + didMoveToWindow() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override func didMoveToWindow()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Classes/FocusTrigger.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Classes/FocusTrigger.html new file mode 100644 index 000000000..1138444ab --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Classes/FocusTrigger.html @@ -0,0 +1,800 @@ + + + + FocusTrigger Class Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FocusTrigger

+
+
+ +
public final class FocusTrigger
+ +
+
+

A trigger for focus and blur actions.

+ +

This type is meant to be used in conjunction with FocusState; you will usually not create +it directly. For information about adding focus support to a custom element, see FocusBinding.

+ +

Triggers allow imperative actions to be invoked on backing views, by creating a trigger in a +declarative model before the view is realized, late-binding the actions to a backing view after +that view has been realized, and then invoking the action on the trigger later in response to +some other event.

+

See Also

+ +

FocusBinding

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Create a new trigger, not yet bound to any view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + focusAction + +
    +
    +
    +
    +
    +
    +

    The action to be invoked on focus, which will be set by a backing view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var focusAction: (() -> Void)?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + blurAction + +
    +
    +
    +
    +
    +
    +

    The action to be invoked on blur, which will be set by a backing view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var blurAction: (() -> Void)?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + focus() + +
    +
    +
    +
    +
    +
    +

    Focuses the backing view bound to this trigger.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func focus()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + blur() + +
    +
    +
    +
    +
    +
    +

    Blurs (removes focus from) the backing view bound to this trigger.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func blur()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Common Elements.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Common Elements.html new file mode 100644 index 000000000..7195c6132 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Common Elements.html @@ -0,0 +1,1523 @@ + + + + Common Elements Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Common Elements

+ +
+
+ +
+
+
+
    +
  • +
    + + + + AccessibilityBlocker + +
    +
    +
    +
    +
    +
    +

    Blocks all accessibility on the element, so that it is +is no longer an accessibility element, and its children are +hidden from the accessibility system.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AccessibilityBlocker : Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Acts as an accessibility container for any accessible subviews.

    + +

    Accessible subviews are found using the following algorithm:

    + +

    Recurse subviews until a view is found that either

    + +
      +
    • hasisAccessibilityElement set to true or
    • +
    + +

    If an accessibility element is found, we add it to the accessibilityElements +and terminate the search down that branch. If a container is found, +the elements returned from the container are added to the accessibilityElements +and the search down that branch is also terminated.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AccessibilityContainer : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AccessibilityElement + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AccessibilityElement : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AdaptedEnvironment + +
    +
    +
    +
    +
    +
    +

    Wraps an element tree with a modified environment.

    + +

    By specifying environmental values with this element, all child elements nested +will automatically inherit those values automatically. Values can be changed +anywhere in a sub-tree by inserting another AdaptedEnvironment element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AdaptedEnvironment : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EnvironmentReader + +
    +
    +
    +
    +
    +
    +

    An element that dynamically builds its content based on the environment.

    + +

    Use this element to build elements whose contents may change depending on the Environment.

    +

    Example

    +
    EnvironmentReader { environment -> Element in
    +    MyElement(
    +        foo: environment.foo
    +    )
    +}
    +
    +
    +

    Seealso

    + ProxyElement + +
    +

    Seealso

    + Environment + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct EnvironmentReader : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Aligned + +
    +
    +
    +
    +
    +
    +

    Aligns a content element within itself. The vertical and horizontal alignment may be set independently.

    + +

    When using alignment mode .fill, the content is scaled to the width or height of the Aligned element.

    + +

    For other modes, the size of the content element is determined by calling measure(in:) +on the content element – even if that size is larger than the wrapping element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Aligned : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AttributedLabel + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AttributedLabel : Element, Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Box + +
    +
    +
    +
    +
    +
    +

    A simple element that wraps a child element and adds visual styling including +background color.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Box : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Button + +
    +
    +
    +
    +
    +
    +

    An element that wraps a child element in a button that mimics a UIButton with the .system style. That is, when +highlighted (or disabled), it fades its contents to partial alpha.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Button : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Centered + +
    +
    +
    +
    +
    +
    +

    Centers a content element within itself.

    + +

    The size of the content element is determined by calling measure(in:) on +the content element – even if that size is larger than the wrapping Centered +element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Centered : ProxyElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Column + +
    +
    +
    +
    +
    +
    +

    Displays a list of items in a linear vertical layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Column : StackElement
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Constrains the size of the content element to an aspect ratio.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ConstrainedAspectRatio : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ConstrainedSize + +
    +
    +
    +
    +
    +
    +

    Constrains the measured size of the contained element in the ranges specified by the width and height properties.

    + +

    There are several constraint types available for each axis. See ConstrainedSize.Constraint for a full list and in-depth +descriptions of each.

    +

    Notes

    + +

    An important note is that the constraints of ConstrainedSize are authoritative during measurement. For example, +if your ConstrainedSize specifies .atLeast(300) for width, and the ConstrainedSize is asked to measure within +a SizeConstraint that is at most 100 points wide, the returned measurement will still be 300 points. The same goes for the +height of the ConstrainedSize.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ConstrainedSize : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Empty + +
    +
    +
    +
    +
    +
    +

    An empty Element which has no size and draws no content.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Empty : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EqualStack + +
    +
    +
    +
    +
    +
    +

    An element that sizes its children equally, stacking them in the primary axis according to +the specified direction and spacing them according to the specified spacing. In the +secondary axis, children are justified to fill the space of the largest child.

    +
    +

    Note

    + A stack measures itself by determining its largest child in each axis, and + in the case of the primary axis, multiplying by children.count (accounting + for spacing as necessary). + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct EqualStack : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + GeometryReader + +
    +
    +
    +
    +
    +
    +

    An element that dynamically builds its content based on the available space.

    + +

    Use this element to build elements whose contents may change responsively to +different layouts.

    +

    Example

    +
    GeometryReader { (geometry) -> Element in
    +    let image: UIImage
    +    switch geometry.constraint.width.maximum {
    +    case ..<100:
    +        image = UIImage(named: "small")!
    +    case 100..<500:
    +        image = UIImage(named: "medium")!
    +    default:
    +        image = UIImage(named: "large")!
    +    }
    +    return Image(image: image)
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct GeometryReader : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Image + +
    +
    +
    +
    +
    +
    +

    Displays an image within an element hierarchy.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Image : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Inset + +
    +
    +
    +
    +
    +
    +

    Insets a content element within a layout.

    + +

    Commonly used to add padding around another element when displayed within a container.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Inset : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Label + +
    +
    +
    +
    +
    +
    +

    Displays text content.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Label : ProxyElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Overlay + +
    +
    +
    +
    +
    +
    +

    Stretches all of its child elements to fill the layout area, stacked on top of each other.

    + +

    During a layout pass, measurement is calculated as the max size (in both x and y dimensions) +produced by measuring all of the child elements.

    + +

    View-backed descendants will be z-ordered from back to front in the order of this element’s +children.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Overlay : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Row + +
    +
    +
    +
    +
    +
    +

    Displays a list of items in a linear horizontal layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Row : StackElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Rule + +
    +
    +
    +
    +
    +
    +

    A solid line, parallel to the x or y axis, with a fixed thickness but unconstrained in length, +suitable for use as a separator.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Rule : ProxyElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ScrollView + +
    +
    +
    +
    +
    +
    +

    Wraps a content element and makes it scrollable.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ScrollView : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SegmentedControl + +
    +
    +
    +
    +
    +
    +

    Allows users to pick from an array of options.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct SegmentedControl : Element, Measurable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Spacer + +
    +
    +
    +
    +
    +
    +

    An element that does not display anything (it has neither children or a view).

    + +

    Spacer simply takes up a specified amount of space within a layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Spacer : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Tappable + +
    +
    +
    +
    +
    +
    +

    Wraps a content element and calls the provided closure when tapped.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Tappable : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TextField + +
    +
    +
    +
    +
    +
    +

    Displays a text field.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct TextField : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TransitionContainer + +
    +
    +
    +
    +
    +
    +

    Wraps a content element and adds transitions when the element appears, +disappears, or changes layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct TransitionContainer : Element
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Creating Custom Elements.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Creating Custom Elements.html new file mode 100644 index 000000000..23e934baf --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Creating Custom Elements.html @@ -0,0 +1,888 @@ + + + + Creating Custom Elements Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Creating Custom Elements

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Element + +
    +
    +
    +
    +
    +
    +

    Conforming types represent a rectangular content area in a two-dimensional +layout space.

    + +
    + +

    The ultimate purpose of an element is to provide visual content. This can be +done in two ways:

    + +
      +
    • By providing a view description (ViewDescription).

    • +
    • By providing child elements that will be displayed recursively within +the local coordinate space.

    • +
    + +
    + +

    A custom element might look something like this:

    +
    struct MyElement: Element {
    +
    +    var backgroundColor: UIColor = .red
    +
    +    // Returns a single child element.
    +    var content: ElementContent {
    +        return ElementContent(child: Label(text: "😂"))
    +    }
    +
    +    // Providing a view description means that this element will be
    +    // backed by a UIView instance when displayed in a `BlueprintView`.
    +    func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription? {
    +        return UIView.describe { config in
    +            config.bind(backgroundColor, to: \.backgroundColor)
    +        }
    +    }
    +
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ProxyElement + +
    +
    +
    +
    +
    +
    +

    Custom elements commonly use another element to actually display content. For example, a profile element might +display an image and a few labels inside a Column element. The ProxyElement protocol is provided to make that +task easier.

    + +

    Conforming types only need to implement elementRepresentation in order to generate an element that will be +displayed.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ProxyElement : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ElementContent + +
    +
    +
    +
    +
    +
    +

    Represents the content of an element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ElementContent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ViewDescription + +
    +
    +
    +
    +
    +
    +

    Contains a description of a UIView instance. A description includes +logic to handle all parts of a view lifecycle from instantiation onward.

    + +

    View descriptions include:

    + +
      +
    • The view’s class.
    • +
    • How an instance of the view should be instantiated.
    • +
    • How to update a view instance by setting properties appropriately.
    • +
    • Which subview of a view instance should be used as a contain for +additional subviews.
    • +
    • How to animate transitions for appearance, layout changes, and +disappearance.
    • +
    • Hooks to be called during lifecycle events.
    • +
    + +

    A view description does not contain a concrete view instance. It simply +contains functionality for creating, updating, and animating view instances.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ViewDescription
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutTransition + +
    +
    +
    +
    +
    +
    +

    The transition used when layout attributes change for a view during an +update cycle.

    + +

    ‘Inherited’ transitions: the ‘inherited’ transition is determined by searching up the tree (not literally, but +this is the resulting behavior). The nearest ancestor that defines an animation will be used, following this +logic:

    + +
      +
    • Ancestors with a layout transition of none will result in no inherited animation for their descendents.
    • +
    • Ancestors in the tree with a layout transition of inherited will be skipped, and the search will continue +up the tree.
    • +
    • Any ancestors in the tree with a layout transition of inheritedWithFallback will be used if they do not +themselves inherit a layout transition from one of their ancestors.
    • +
    • Ancestors with a layout transition of specific will always be used for their descendents inherited +animation.
    • +
    • If no ancestor is found that specifies a layout transition, but the containing BlueprintView has the element +property assigned from within a UIKit animation block, that animation will be used as the inherited animation.
    • +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LayoutTransition
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + VisibilityTransition + +
    +
    +
    +
    +
    +
    +

    The transition used when a view is inserted or removed during an update cycle.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct VisibilityTransition
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Displaying Elements.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Displaying Elements.html new file mode 100644 index 000000000..29435f7bf --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Displaying Elements.html @@ -0,0 +1,773 @@ + + + + Displaying Elements Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Displaying Elements

+ +
+
+ +
+
+
+
    +
  • +
    + + + + BlueprintView + +
    +
    +
    +
    +
    +
    +

    A view that is responsible for displaying an Element hierarchy.

    + +

    A view controller that renders content via Blueprint might look something +like this:

    +
    final class HelloWorldViewController: UIViewController {
    +
    +   private var blueprintView = BlueprintView(element: nil)
    +
    +   override func viewDidLoad() {
    +       super.viewDidLoad()
    +
    +       let rootElement = Label(text: "Hello, world!")
    +       blueprintView.element = rootElement
    +       view.addSubview(blueprintView)
    +    }
    +
    +    override func viewDidLayoutSubviews() {
    +        super.viewDidLayoutSubviews()
    +        blueprintView.frame = view.bounds
    +    }
    +
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class BlueprintView : UIView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ElementPreview + +
    +
    +
    +
    +
    +
    +

    A SwiftUI view which wraps a Blueprint element, which can be used to preview Blueprint elements +via Xcode’s preview functionality (enable via the Editor > Canvas menu).

    + +

    You can leverage ElementPreview by adding something like this to the bottom of the file which contains +your Blueprint element, then as you edit and work on your element, the live preview will update to show the +current state of your element:

    +
    
    +struct MyElement : Element {
    +   ...
    +}
    +
    +// Add this at the bottom of your element's source file.
    +
    +#if DEBUG && canImport(SwiftUI) && !arch(i386) && !arch(arm)
    +
    +import SwiftUI
    +
    +@available(iOS 13.0, *)
    +struct MyElement_Preview: PreviewProvider {
    +    static var previews: some View {
    +        ElementPreview {
    +            MyElement()
    +        }
    +    }
    +}
    +
    +#endif
    +
    +
    +

    Uhhh

    + +

    You’re probably asking… +Why the !arch(i386) check above? Turns out, a compiler bug! +SwiftUI is only available on 64 bit devices, but the canImport check erroneously +finds it when building to target iOS 10 devices. Until we drop iOS 10, this part of the check is also required.

    +

    Details

    + +

    It’s important that you keep the PreviewProvider in the same file as the element that you are editing.

    + +

    Why? Xcode uses a new feature called “Dynamic Replacement” to re-compile the source file you are editing, +and inject it back into the running app which drives the preview. This only works on the level of a single +file – if your preview and element live in separate files, Xcode needs to recompile your entire module +which will slow down preview updates greatly.

    + +

    You can learn more about Xcode previews here: https://nshipster.com/swiftui-previews/

    +

    Requirements

    + +

    You must be running Xcode 11 and Catalina to take advantage of live previews. +They do not work on Mojave. Your selected simulator must also be an iOS 13 device.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(iOS 13.0, *)
    +public struct ElementPreview : View
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums.html new file mode 100644 index 000000000..bc3ce0f45 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums.html @@ -0,0 +1,976 @@ + + + + Enumerations Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+ +
+
+
+
+ + +
+ +

Font +

+
+
+ +
+
+
+ + +
+ +

Color +

+
+
+ +
+
+
+ + +
+ +

Tracking +

+
+
+ +
+
+
+ + +
+ +

Underline +

+
+
+ +
+
+
+ + +
+ +

Paragraph style +

+
+
+ +
+
+
+ + +
+ +

Link +

+
+
+
    +
  • +
    + + + + LinkKey + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LinkKey : AttributedTextKey
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + BlueprintLogging + +
    +
    +
    +
    +
    +
    +

    Namespace for logging config.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum BlueprintLogging
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutMode + +
    +
    +
    +
    +
    +
    +

    Controls the layout system that Blueprint uses to lay out elements.

    + +

    Blueprint supports multiple layout systems. Each is expected to produce the same result, but +some may have different performance profiles or special requirements.

    + +

    You can change the layout system used by setting the layoutMode property, but +generally you should use the default option.

    + +

    Changing the default will cause all instances of BlueprintView to be invalidated, and re- +render their contents.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LayoutMode : Equatable
    +
    extension LayoutMode: CustomStringConvertible
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/BlueprintLogging.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/BlueprintLogging.html new file mode 100644 index 000000000..d4539c7e2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/BlueprintLogging.html @@ -0,0 +1,739 @@ + + + + BlueprintLogging Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

BlueprintLogging

+
+
+ +
public enum BlueprintLogging
+ +
+
+

Namespace for logging config.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Config + +
    +
    +
    +
    +
    +
    +

    Configuration for logging options

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Config
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + config + +
    +
    +
    +
    +
    +
    +

    Logging configuration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var config: Config
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    +

    If enabled, Blueprint will emit signpost logs. You can view these logs in Instruments to +aid in debugging or performance tuning.

    + +

    Signpost logging is disabled by default.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var isEnabled: Bool { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/BlueprintLogging/Config.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/BlueprintLogging/Config.html new file mode 100644 index 000000000..c3d6e688b --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/BlueprintLogging/Config.html @@ -0,0 +1,764 @@ + + + + Config Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Config

+
+
+ +
public struct Config
+ +
+
+

Configuration for logging options

+ +
+
+ +
+
+
+
    +
  • +
    + + + + recordElementMeasures + +
    +
    +
    +
    +
    +
    +

    When true, timing data will be logged when measuring each Element

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var recordElementMeasures: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(recordElementMeasures: Bool)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lite + +
    +
    +
    +
    +
    +
    +

    Logging configuration that will not record measurement data for all Elements. +This provides a reasonable balance between data collection and performance impact. +This is the default logging configuration.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let lite: BlueprintLogging.Config
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + verbose + +
    +
    +
    +
    +
    +
    +

    Logging configuration that includes measurement data. +This provides the most granular information, but has a noticeable impact on performance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let verbose: BlueprintLogging.Config
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/ColorKey.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/ColorKey.html new file mode 100644 index 000000000..f9d9968df --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/ColorKey.html @@ -0,0 +1,705 @@ + + + + ColorKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ColorKey

+
+
+ +
public enum ColorKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = UIColor
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/FontKey.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/FontKey.html new file mode 100644 index 000000000..930a778ec --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/FontKey.html @@ -0,0 +1,705 @@ + + + + FontKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FontKey

+
+
+ +
public enum FontKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = UIFont
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/LayoutMode.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/LayoutMode.html new file mode 100644 index 000000000..b888b9f33 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/LayoutMode.html @@ -0,0 +1,826 @@ + + + + LayoutMode Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutMode

+
+
+ +
public enum LayoutMode : Equatable
+
extension LayoutMode: CustomStringConvertible
+ +
+
+

Controls the layout system that Blueprint uses to lay out elements.

+ +

Blueprint supports multiple layout systems. Each is expected to produce the same result, but +some may have different performance profiles or special requirements.

+ +

You can change the layout system used by setting the layoutMode property, but +generally you should use the default option.

+ +

Changing the default will cause all instances of BlueprintView to be invalidated, and re- +render their contents.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + default + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var `default`: `Self` { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + legacy + +
    +
    +
    +
    +
    +
    +

    The “standard” layout system.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case legacy
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + caffeinated(options:) + +
    +
    +
    +
    +
    +
    +

    A newer layout system with some optimizations made possible by ensuring elements adhere +to a certain contract for behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case caffeinated(options: LayoutOptions = .default)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + caffeinated + +
    +
    +
    +
    +
    +
    +

    A newer layout system with some optimizations made possible by ensuring elements adhere +to a certain contract for behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let caffeinated: LayoutMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    The name of the layout mode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var name: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/LayoutTransition.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/LayoutTransition.html new file mode 100644 index 000000000..2896dd116 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/LayoutTransition.html @@ -0,0 +1,779 @@ + + + + LayoutTransition Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutTransition

+
+
+ +
public enum LayoutTransition
+ +
+
+

The transition used when layout attributes change for a view during an +update cycle.

+ +

‘Inherited’ transitions: the ‘inherited’ transition is determined by searching up the tree (not literally, but +this is the resulting behavior). The nearest ancestor that defines an animation will be used, following this +logic:

+ +
    +
  • Ancestors with a layout transition of none will result in no inherited animation for their descendents.
  • +
  • Ancestors in the tree with a layout transition of inherited will be skipped, and the search will continue +up the tree.
  • +
  • Any ancestors in the tree with a layout transition of inheritedWithFallback will be used if they do not +themselves inherit a layout transition from one of their ancestors.
  • +
  • Ancestors with a layout transition of specific will always be used for their descendents inherited +animation.
  • +
  • If no ancestor is found that specifies a layout transition, but the containing BlueprintView has the element +property assigned from within a UIKit animation block, that animation will be used as the inherited animation.
  • +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + none + +
    +
    +
    +
    +
    +
    +

    The view will never animate layout changes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case none
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + specific(_:) + +
    +
    +
    +
    +
    +
    +

    Layout changes will always animate with the given attributes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case specific(_: AnimationAttributes = .default)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inherited + +
    +
    +
    +
    +
    +
    +

    The view will only animate layout changes if an inherited transition exists.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case inherited
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The view will animate along with an inherited transition (if present) or the specified fallback attributes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case inheritedWithFallback(_: AnimationAttributes = .default)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/LinkKey.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/LinkKey.html new file mode 100644 index 000000000..fcfa01ae3 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/LinkKey.html @@ -0,0 +1,705 @@ + + + + LinkKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LinkKey

+
+
+ +
public enum LinkKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = URL
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/ParagraphStyleKey.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/ParagraphStyleKey.html new file mode 100644 index 000000000..f228059d5 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/ParagraphStyleKey.html @@ -0,0 +1,705 @@ + + + + ParagraphStyleKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ParagraphStyleKey

+
+
+ +
public enum ParagraphStyleKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = NSParagraphStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/TrackingKey.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/TrackingKey.html new file mode 100644 index 000000000..1ba2df447 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/TrackingKey.html @@ -0,0 +1,705 @@ + + + + TrackingKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TrackingKey

+
+
+ +
public enum TrackingKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/UnderlineColorKey.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/UnderlineColorKey.html new file mode 100644 index 000000000..f946c82f1 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/UnderlineColorKey.html @@ -0,0 +1,705 @@ + + + + UnderlineColorKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UnderlineColorKey

+
+
+ +
public enum UnderlineColorKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = UIColor
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/UnderlineStyleKey.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/UnderlineStyleKey.html new file mode 100644 index 000000000..69cf23a53 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Enums/UnderlineStyleKey.html @@ -0,0 +1,705 @@ + + + + UnderlineStyleKey Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UnderlineStyleKey

+
+
+ +
public enum UnderlineStyleKey : AttributedTextKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Value = Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Environment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Environment.html new file mode 100644 index 000000000..98271525c --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Environment.html @@ -0,0 +1,752 @@ + + + + Environment Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Environment

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Environment + +
    +
    +
    +
    +
    +
    +

    Environment is a container for values to be passed down an element tree.

    + +

    Environment values are not resolved until the tree is being rendered, so they do not need to be +explicitly passed to elements at the time they are created.

    + +

    Environment key-value pairs are strongly typed: keys are types conforming to the +EnvironmentKey protocol, and each key’s value is the type of that key’s +EnvironmentKey.Value associated value. Keys must provide a default value.

    +

    Example

    + +

    To set an environment value, so that it will cascade to child elements, use +AdaptedEnvironment. Here, every element in childElement will have access to someValue +via the key MyEnvironmentKey.

    +
    AdaptedEnvironment(
    +    key: MyEnvironmentKey.self,
    +    value: someValue,
    +    wrapping: childElement
    +)
    +
    + +

    To read an environment value, use EnvironmentReader. If this element were part of the child +element in the previous example, myValue would be set to someValue. If the key had not +been set in an ancestor element, the value would be MyEnvironmentKey.defaultValue.

    +
    struct MyElement: ProxyElement {
    +    var elementRepresentation: Element {
    +        return EnvironmentReader { environment -> Element in
    +            let myValue = environment[MyEnvironmentKey.self]
    +            return SomeElement(using: myValue)
    +        }
    +    }
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Environment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EnvironmentKey + +
    +
    +
    +
    +
    +
    +

    Types conforming to this protocol can be used as keys in an Environment.

    + +

    Using a type as the key allows us to strongly type each value, with the +key’s EnvironmentKey.Value associated value.

    +

    Example

    + +

    Usually a key is implemented with an uninhabited type, such an empty enum.

    +
    enum WidgetCountKey: EnvironmentKey {
    +    static let defaultValue: Int = 0
    +}
    +
    + +

    You can write a small extension on Environment to make it easier to use your key.

    +
    extension Environment {
    +    var widgetCount: Int {
    +        get { self[WidgetCountKey.self] }
    +        set { self[WidgetCountKey.self] = newValue }
    +    }
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol EnvironmentKey
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions.html new file mode 100644 index 000000000..182d5362a --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions.html @@ -0,0 +1,880 @@ + + + + Extensions Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Extensions

+

The following extensions are available globally.

+ +
+
+ +
+
+
+ +
+
+
+ + +
+ +

Extensions +

+
+
+
    +
  • +
    + + + + UIOffset + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension UIOffset: Hashable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/AXCustomContent.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/AXCustomContent.html new file mode 100644 index 000000000..0b5dbc50c --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/AXCustomContent.html @@ -0,0 +1,705 @@ + + + + AXCustomContent Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AXCustomContent

+
+
+ +
extension AXCustomContent
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public convenience init(_ content: AccessibilityElement.CustomContent)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public convenience init(label: String, value: String?, importance: AXCustomContent.Importance = .default)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/CGSize.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/CGSize.html new file mode 100644 index 000000000..2cf3624dd --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/CGSize.html @@ -0,0 +1,707 @@ + + + + CGSize Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CGSize

+
+
+ +
extension CGSize
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + infinity + +
    +
    +
    +
    +
    +
    +

    A size with infinity in both dimensions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let infinity: CGSize
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a size with infinite dimensions replaced by the values from the given replacement.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func replacingInfinity(with replacement: CGSize) -> CGSize
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/ElementBuilder.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/ElementBuilder.html new file mode 100644 index 000000000..c1847f420 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/ElementBuilder.html @@ -0,0 +1,814 @@ + + + + ElementBuilder Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ElementBuilder

+
+
+ +
extension ElementBuilder
+
extension ElementBuilder where Child == Overlay.Child
+
extension ElementBuilder where Child == StackLayout.Child
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    +

    Allow an Element to be implicitly converted into Child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ element: Element) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    +

    Allow an Optional Element to be unwrapped and implicitly converted into Child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ child: Element?) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    +

    Allow Elements to be implicitly converted into Child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ elements: [Element]) -> Children
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Available where Child == Overlay.Child +

+
+
+
    +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ keyed: Keyed) -> Children
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Available where Child == StackLayout.Child +

+
+
+
    +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ keyed: Keyed) -> Children
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/FloatingPoint.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/FloatingPoint.html new file mode 100644 index 000000000..d0063e769 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/FloatingPoint.html @@ -0,0 +1,808 @@ + + + + FloatingPoint Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FloatingPoint

+
+
+ +
extension FloatingPoint
+ +
+
+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Returns replacement if self.isInfinite is true, or self if self is finite.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func replacingInfinity(with replacement: Self) -> Self
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + round(_:by:) + +
    +
    +
    +
    +
    +
    +

    Rounds this value to the specified scale, where the scale is the number of rounding stops per integer.

    + +

    A rounding scale of 1.0 is standard integer rounding. +A rounding scale of 2.0 rounds to halves (0, 0.5, 1.0, 1.5, 2.0, 2.5., …). +A rounding scale of 3.0 rounds to thirds (0, 1/3, 2/3, 1.0, 4/3, 5/3, 2.0, …).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func round(_ rule: FloatingPointRoundingRule, by scale: Self)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + rule + + +
    +

    the rounding rule

    +
    +
    + + scale + + +
    +

    the rounding scale

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + rounded(_:by:) + +
    +
    +
    +
    +
    +
    +

    Returns this value rounded to the specified scale, where the scale is the number of rounding stops per integer.

    + +

    A rounding scale of 1.0 is standard integer rounding. +A rounding scale of 2.0 rounds to halves (0, 0.5, 1.0, 1.5, 2.0, 2.5., …). +A rounding scale of 3.0 rounds to thirds (0, 1/3, 2/3, 1.0, 4/3, 5/3, 2.0, …).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func rounded(_ rule: FloatingPointRoundingRule, by scale: Self) -> Self
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + rule + + +
    +

    the rounding rule

    +
    +
    + + scale + + +
    +

    the rounding scale

    +
    +
    +
    +
    +

    Return Value

    +

    The rounded value.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/PreviewDevice.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/PreviewDevice.html new file mode 100644 index 000000000..56cebf0c9 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/PreviewDevice.html @@ -0,0 +1,1263 @@ + + + + PreviewDevice Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

PreviewDevice

+
+
+ +
extension PreviewDevice
+ +
+
+

The available devices to be used for previewing elements in an Xcode preview.

+ +

Via https://developer.apple.com/documentation/swiftui/securefield/3289399-previewdevice

+ +
+
+ +
+
+
+
    +
  • +
    + + + + iPhone7 + +
    +
    +
    +
    +
    +
    +

    iPhone 7

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhone7: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhone7Plus + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhone7Plus: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhone8 + +
    +
    +
    +
    +
    +
    +

    iPhone 8

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhone8: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhone8Plus + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhone8Plus: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneSE_1 + +
    +
    +
    +
    +
    +
    +

    iPhone SE

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneSE_1: PreviewDevice { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneSE_2 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneSE_2: PreviewDevice { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneX + +
    +
    +
    +
    +
    +
    +

    iPhone X

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneX: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneXs + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneXs: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneXsMax + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneXsMax: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPhoneXr + +
    +
    +
    +
    +
    +
    +

    iPhone Xr

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPhoneXr: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadMini_4 + +
    +
    +
    +
    +
    +
    +

    iPad Mini

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadMini_4: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadMini_5 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadMini_5: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadAir_2 + +
    +
    +
    +
    +
    +
    +

    iPad Air

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadAir_2: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadAir_3 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadAir_3: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPad_5 + +
    +
    +
    +
    +
    +
    +

    iPad

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPad_5: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPad_6 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPad_6: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_9_7 + +
    +
    +
    +
    +
    +
    +

    iPad Pro

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_9_7: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_10_5 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_10_5: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_11_1 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_11_1: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_11_2 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_11_2: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_12_9_1 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_12_9_1: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_12_9_2 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_12_9_2: PreviewDevice
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + iPadPro_12_9_3 + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var iPadPro_12_9_3: PreviewDevice
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/UIAccessibilityTraits.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/UIAccessibilityTraits.html new file mode 100644 index 000000000..e0d376a01 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/UIAccessibilityTraits.html @@ -0,0 +1,679 @@ + + + + UIAccessibilityTraits Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UIAccessibilityTraits

+
+
+ +
extension UIAccessibilityTraits
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/UIOffset.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/UIOffset.html new file mode 100644 index 000000000..57dabc867 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Extensions/UIOffset.html @@ -0,0 +1,679 @@ + + + + UIOffset Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UIOffset

+
+
+ +
extension UIOffset: Hashable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + hash(into:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hash(into hasher: inout Hasher)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols.html new file mode 100644 index 000000000..32a219cf8 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols.html @@ -0,0 +1,1209 @@ + + + + Protocols Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + AttributedTextKey + +
    +
    +
    +
    +
    +
    +

    Define AttributedText keys using this protocol. Keys must have an attribute name +and an associated type for the attribute.

    + +

    After defining a key, enable dynamic member access to it by extending TextAttributeContainer +with a property for getting and setting setting the value. This property should generally be optional, +since the text may not have that property defined.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol AttributedTextKey
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Provides performance information for blueprint layouts and updates.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol BlueprintViewMetricsDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + UIViewElement + +
    +
    +
    +
    +
    +
    +

    An element type which makes it easier to wrap an existing UIView instance that +provides its own sizing via sizeThatFits. An instance of the view is used for +sizing and measurement, so that you do not need to re-implement your own measurement.

    +

    Note

    + +

    The sizing and measurement prototype view is kept alive for the lifetime of the containing application. +Do not pass anything to the initializer of this type that you expect to be quickly released.

    +

    Example

    + +

    If you were implementing a very basic Switch element, your implementation would look something +like this:

    +
    struct Switch : UIViewElement
    +{
    +    var isOn : Bool
    +
    +    typealias UIViewType = UISwitch
    +
    +    func makeUIView() -> UISwitch {
    +        UISwitch()
    +    }
    +
    +    func updateUIView(_ view: UISwitch, with context: UIViewElementContext) {
    +        view.isOn = self.isOn
    +    }
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol UIViewElement : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AlignmentID + +
    +
    +
    +
    +
    +
    +

    Types used to identify alignment guides.

    + +

    Types conforming to AlignmentID have a corresponding alignment guide value, +typically declared as a static constant property of HorizontalAlignment or +VerticalAlignment.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol AlignmentID
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ElementBuilderChild + +
    +
    +
    +
    +
    +
    +

    Defines a way for anElement to be implicitly converted into the conforming type (the child of a container). +In practice, this allows us to pass an Element directly into the result builder without manually converting to Child (i.e. Converting Element -> StackLayout.Child.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ElementBuilderChild
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Layout + +
    +
    +
    +
    +
    +
    +

    A type that defines the geometry of a collection of elements.

    + +

    You traditionally arrange views in your app’s user interface using built-in layout containers +like Row and Column. If you need more complex layout behavior, you can define a custom +layout container by creating a type that conforms to the Layout protocol and implementing +its required methods:

    + + + +

    You can define a basic layout type with only these two methods (see note below):

    +
    struct BasicLayout: Layout {
    +    func sizeThatFits(
    +        proposal: SizeConstraint,
    +        subelements: Subelements,
    +        cache: inout ()
    +    ) -> CGSize {
    +        // Calculate and return the size of the layout container.
    +    }
    +
    +    func placeSubelements(
    +        in size: CGSize,
    +        subelements: Subelements,
    +        cache: inout ()
    +    ) {
    +        // Tell each subelement where to appear.
    +    }
    +}
    +
    + +

    Add your layout to an element by passing it to the ElementContent initializer +init(layout:configure:). If your layout has parameters that come from the +element, pass them at initialization time. Use the configure block to add your element’s +children to the content.

    +
    struct BasicContainer: Element {
    +    var alignment: Alignment = .center
    +    var children: [Element]
    +
    +    var content: ElementContent {
    +        ElementContent(layout: BasicLayout(alignment: alignment)) { builder in
    +            for child in children {
    +                builder.add(element: child)
    +            }
    +        }
    +    }
    +
    +    func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription? {
    +        nil
    +    }
    +}
    +
    + +

    If your layout is specialized for laying out a single subelement, you can use the +SingleChildLayout protocol instead. It has similar methods, but is strongly typed for a +single subelement instead of a collection.

    +
    +

    Note

    + During the transition from Blueprint’s legacy layout system to Caffeinated Layout, the +Layout protocol is composed of two sets of layout methods: LegacyLayout and +CaffeinatedLayout. While this documentation focuses on the newer layout API, you must +currently implement both. Fortunately, the methods are similar, and you may be able to reuse +logic. + +
    +

    Interact with subelements through their proxies

    + +

    To perform layout, you need information about all of your container’s subelements, which are the +child elements that your container arranges. While your layout can’t interact directly with its +subelements, it can access a set of subelement proxies through the +Subelements collection that each protocol method receives as an input +parameter. That type is an alias for the LayoutSubelements collection type, which in turn +contains LayoutSubelement instances that are the subelement proxies.

    + +

    You can get information about each subelement from its proxy, like its dimensions and traits. +This enables you to measure subelements before you commit to placing them. You also assign a +position to each subelement by calling its proxy’s place(at:anchor:size:) +method. Call the method on each subelement from within your implementation of the layout’s +placeSubelements(in:subelements:environment:cache:) method.

    +

    Access layout traits

    + +

    Subelements may have traits that are specific to their container’s layout. The traits are of +the Layout protocol’s associated type Traits, and each subelement can have +a distinct Traits value assigned. You can set this in the configure block of +init(layout:configure:), when you call +add(traits:key:element:). If you do not specify a Traits type for +your layout, it defaults to the void type, ().

    + +

    Containers can choose to condition their behavior according to the traits of their subelements. +For example, the Row and Column types allocate space for their subelements based in part +on the grow and shrink priorities that you set on each child. Your layout container accesses the +traits for a subelement by calling traits(forLayoutType:) on the +LayoutSubelement proxy.

    +
    +

    Note

    + The Layout API, and its documentation, are modeled after SwiftUI’s +Layout, with major differences +noted. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol Layout : CaffeinatedLayout, LegacyLayout
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LegacyLayout + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol LegacyLayout
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + CaffeinatedLayout + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol CaffeinatedLayout
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SingleChildLayout + +
    +
    +
    +
    +
    +
    +

    A type that defines the geometry of a single element.

    + +

    For convenience, you can implement this protocol instead of Layout when building a container +that always has a single child element.

    + +

    For more information about writing custom layouts, see Layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol SingleChildLayout : CaffeinatedSingleChildLayout, LegacySingleChildLayout
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol LegacySingleChildLayout
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol CaffeinatedSingleChildLayout
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + StackElement + +
    +
    +
    +
    +
    +
    +

    Conforming types (Row and Column) act as StackLayout powered containers.

    + +

    This protocol should only be used by Row and Column elements (you should never add conformance to other custom +types).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol StackElement : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Measurable + +
    +
    +
    +
    +
    +
    +

    Conforming types can calculate the size that they require within a layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol Measurable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + NativeView + +
    +
    +
    +
    +
    +
    +

    Marker protocol used by generic extensions to native views (e.g. UIView).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol NativeView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + URLHandler + +
    +
    +
    +
    +
    +
    +

    Conform to this protocol to handle links tapped in an AttributedLabel.

    + +

    Use the URLHandlerEnvironmentKey or Environment.urlHandler property to override +the link handler in the environment.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol URLHandler
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/AlignmentID.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/AlignmentID.html new file mode 100644 index 000000000..d2c31d951 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/AlignmentID.html @@ -0,0 +1,686 @@ + + + + AlignmentID Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AlignmentID

+
+
+ +
public protocol AlignmentID
+ +
+
+

Types used to identify alignment guides.

+ +

Types conforming to AlignmentID have a corresponding alignment guide value, +typically declared as a static constant property of HorizontalAlignment or +VerticalAlignment.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + defaultValue(in:) + +
    +
    +
    +
    +
    +
    +

    Returns the value of the corresponding guide, in context, when not +otherwise set in context.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func defaultValue(in context: ElementDimensions) -> CGFloat
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/AttributedTextKey.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/AttributedTextKey.html new file mode 100644 index 000000000..894faf8b2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/AttributedTextKey.html @@ -0,0 +1,711 @@ + + + + AttributedTextKey Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AttributedTextKey

+
+
+ +
public protocol AttributedTextKey
+ +
+
+

Define AttributedText keys using this protocol. Keys must have an attribute name +and an associated type for the attribute.

+ +

After defining a key, enable dynamic member access to it by extending TextAttributeContainer +with a property for getting and setting setting the value. This property should generally be optional, +since the text may not have that property defined.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype Value : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static var name: NSAttributedString.Key { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/BlueprintViewMetricsDelegate.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/BlueprintViewMetricsDelegate.html new file mode 100644 index 000000000..12b357020 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/BlueprintViewMetricsDelegate.html @@ -0,0 +1,680 @@ + + + + BlueprintViewMetricsDelegate Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

BlueprintViewMetricsDelegate

+
+
+ +
public protocol BlueprintViewMetricsDelegate : AnyObject
+ +
+
+

Provides performance information for blueprint layouts and updates.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/CaffeinatedLayout.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/CaffeinatedLayout.html new file mode 100644 index 000000000..4800bac7c --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/CaffeinatedLayout.html @@ -0,0 +1,1065 @@ + + + + CaffeinatedLayout Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CaffeinatedLayout

+
+
+ +
public protocol CaffeinatedLayout
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Subelements + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    typealias Subelements = LayoutSubelements
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Cache + +
    +
    +
    +
    +
    +
    +

    Cached values associated with the layout instance.

    + +

    If you create a cache for your custom layout, you can use a type alias to define this type +as your data storage type. Alternatively, you can refer to the data storage type directly in +all the places where you work with the cache.

    + +

    See makeCache(subelements:environment:) for more information.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype Cache = Void
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the size of the composite element, given a proposed size constraint and the +container’s subelements.

    + +

    Implement this method to tell your custom layout container’s parent how much space the +container needs for a set of subelements, given a size constraint. The parent might call +this method more than once during a layout pass with different proposed sizes to test the +flexibility of the container.

    + +

    In Blueprint, parents ultimately choose the size of their children, so the actual size that +this container is laid out in may not be a size that was returned from this method.

    +

    Sizing Rules

    + +

    For performance reasons, the layout engine may deduce the measurement of your container for +some constraint values without explicitly calling +sizeThatFits(proposal:subelements:environment:cache:). To ensure that the deduced value +is correct, your layout must follow some ground rules:

    + +
      +
    1. Given one fixed constraint axis, the element’s growth along the other axis should be +monotonic. That is, an element can grow when given a larger constraint, or shrink +when given a smaller constraint, but it should never shrink when given a larger +constraint. When growing on one axis, it is OK to shrink along the other axis, such as a +block of text that re-flows as the width changes.
    2. +
    3. For a constraint axis value a, if an element has a length b that is less than a on +that axis, then the element must return b for all constraint values between a and +b. In other words, growth must follow a stair-step pattern; elements that grow +continuously by calculating a fixed inset of the constraint or a percentage value of the +constraint are forbidden. For example, if an element returns 10 for a constraint of +20, then the element must return 10 for all values in the range [10, 20].
    4. +
    5. If your element has no intrinsic size along an axis, you can represent that in a couple +ways: + +
        +
      • You can return a fixed value representing the minimum size for your element. In this +approach, a containing element is usually responsible for stretching your element to +fill desired space.
      • +
      • You can return a size that entirely fills the constraint proposed. In this approach, +you must return .infinity when the constraint is +unconstrained. Otherwise, your behavior would be in violation +of rule #1.
      • +
    6. +
    + +

    If an element does not adhere to these rules, it may lay out in unexpected and unpredictable +ways.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func sizeThatFits(
    +    proposal: SizeConstraint,
    +    subelements: Subelements,
    +    environment: Environment,
    +    cache: inout Cache
    +) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + proposal + + +
    +

    A size constraint for the container. The container’s parent element that calls +this method might call the method more than once with different constraints to learn +more about the container’s flexibility before choosing a size for placement.

    +
    +
    + + subelements + + +
    +

    A collection of proxies that represent the elements that the container +arranges. You can use the proxies in the collection to get information about the +subelements as you determine how much space the container needs to display them.

    +
    +
    + + environment + + +
    +

    The environment of the container. You can use properties from the +environment when calculating the size of this container, as long as you adhere to the +sizing rules.

    +
    +
    + + cache + + +
    +

    Optional storage for calculated data that you can share among the methods of your +custom layout container. See makeCache(subelements:environment:) for details.

    +
    +
    +
    +
    +

    Return Value

    +

    A size that indicates how much space the container needs to arrange its +subelements.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Assigns positions to each of the layout’s subelements.

    + +

    Blueprint calls your implementation of this method to tell your custom layout container to +place its subelements. From this method, call the +place(at:anchor:size:) method on each item in subelements to tell the +subelements where to appear in the user interface.

    + +

    You can also update the attributes property of each +subelement to set properties like opacity and transforms on each subelement.

    + +

    Be sure that you use computations during placement that are consistent with those in your +implementation of other protocol methods for a given set of inputs. For example, if you add +spacing during placement, make sure your implementation of +sizeThatFits(proposal:subelements:environment:cache:) accounts for the extra space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func placeSubelements(
    +    in size: CGSize,
    +    subelements: Subelements,
    +    environment: Environment,
    +    cache: inout Cache
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + size + + +
    +

    The region that the container’s parent allocates to the container. Place all the +container’s subelements within the region. The size of this region may not match any +size that was returned from a call to +sizeThatFits(proposal:subelements:environment:cache:).

    +
    +
    + + subelements + + +
    +

    A collection of proxies that represent the elements that the container +arranges. Use the proxies in the collection to get information about the subelements and +to tell the subelements where to appear.

    +
    +
    + + environment + + +
    +

    The environment of this container. You can use properties from the +environment to vary the placement of subelements.

    +
    +
    + + cache + + +
    +

    Optional storage for calculated data that you can share among the methods of your +custom layout container. See makeCache(subelements:environment:) for details.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates and initializes a cache for a layout instance.

    + +

    You can optionally use a cache to preserve calculated values across calls to a layout +container’s methods. Many layout types don’t need a cache, because Blueprint automatically +caches the results of calls into layout methods, such as +sizeThatFits(_:). Rely on the protocol’s default implementation of this +method if you don’t need a cache.

    + +

    However you might find a cache useful when the layout container repeats complex intermediate +calculations across calls to sizeThatFits(proposal:subelements:environment:cache:) and +placeSubelements(in:subelements:environment:cache:). You might be able to improve +performance by calculating values once and storing them in a cache.

    +
    +

    Note

    + A cache’s lifetime is limited to a single render pass, so you cannot use it to store +values across multiple calls to placeSubelements(in:subelements:environment:cache:). A +render pass includes zero, one, or many calls to +sizeThatFits(proposal:subelements:environment:cache:), followed by a single call to +placeSubelements(in:subelements:environment:cache:). + +
    + +

    Only implement a cache if profiling shows that it improves performance.

    +

    Initializing a cache

    + +

    Implement the makeCache(subelements:) method to create a cache. You can add computed +values to the cache right away, using information from the subelements input parameter, or +you can do that later. The methods of the Layout protocol that can access the cache take +the cache as an in-out parameter, which enables you to modify the cache anywhere that you +can read it.

    + +

    You can use any storage type that makes sense for your layout algorithm, but be sure that +you only store data that you derive from the layout and its subelements (lazily, if +possible). For this to work correctly, Blueprint needs to be able to call this method to +recreate the cache without changing the layout result.

    + +

    When you return a cache from this method, you implicitly define a type for your cache. Be +sure to either make the type of the cache parameters on your other Layout protocol +methods match, or use a type alias to define the Cache associated type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func makeCache(subelements: Subelements, environment: Environment) -> Cache
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + subelements + + +
    +

    A collection of proxy instances that represent the subelements that +the container arranges. You can use the proxies in the collection to get information about +the subelements as you calculate values to store in the cache.

    +
    +
    + + environment + + +
    +

    The environment of this container.

    +
    +
    +
    +
    +

    Return Value

    +

    Storage for calculated data that you share among the methods of your custom +layout container.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/CaffeinatedSingleChildLayout.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/CaffeinatedSingleChildLayout.html new file mode 100644 index 000000000..7a69d9ae0 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/CaffeinatedSingleChildLayout.html @@ -0,0 +1,1018 @@ + + + + CaffeinatedSingleChildLayout Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CaffeinatedSingleChildLayout

+
+
+ +
public protocol CaffeinatedSingleChildLayout
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Subelement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    typealias Subelement = LayoutSubelement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Cache + +
    +
    +
    +
    +
    +
    +

    Cached values associated with the layout instance.

    + +

    If you create a cache for your custom layout, you can use a type alias to define this type +as your data storage type. Alternatively, you can refer to the data storage type directly in +all the places where you work with the cache.

    + +

    See makeCache(subelement:environment:) for more information.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype Cache = Void
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the size of the element, given a proposed size constraint and the container’s +subelement.

    + +

    Implement this method to tell your custom layout container’s parent how much space the +container needs for a subelement, given a size constraint. The parent might call this method +more than once during a layout pass with different proposed sizes to test the flexibility of +the container.

    + +

    In Blueprint, parents ultimately choose the size of their children, so the actual size that +this container is laid out in may not be a size that was returned from this method.

    + +

    For more information, see +sizeThatFits(proposal:subelements:environment:cache:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func sizeThatFits(
    +    proposal: SizeConstraint,
    +    subelement: Subelement,
    +    environment: Environment,
    +    cache: inout Cache
    +) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + proposal + + +
    +

    A size constraint for the container. The container’s parent element that calls +this method might call the method more than once with different constraints to learn +more about the container’s flexibility before choosing a size for placement.

    +
    +
    + + subelement + + +
    +

    A proxy that represents the element that the container arranges. You can use +the proxy to get information about the subelement as you determine how much space the +container needs to display it.

    +
    +
    + + environment + + +
    +

    The environment of the container. You can use properties from the +environment when calculating the size of this container, as long as you adhere to the +sizing rules.

    +
    +
    + + cache + + +
    +

    Optional storage for calculated data that you can share among the methods of your +custom layout container. See makeCache(subelement:environment:) for details.

    +
    +
    +
    +
    +

    Return Value

    +

    A size that indicates how much space the container needs to arrange its +subelement.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Assigns a position to the layout’s subelement.

    + +

    Blueprint calls your implementation of this method to tell your custom layout container to +place its subelement. From this method, call the place(at:anchor:size:) +method on subelement to tell the subelement where to appear in the user interface.

    + +

    You can also update the attributes property to set +properties like opacity and transforms on the subelement.

    + +

    Be sure that you use computations during placement that are consistent with those in your +implementation of other protocol methods for a given set of inputs. For example, if you add +spacing during placement, make sure your implementation of +sizeThatFits(proposal:subelement:environment:cache:) accounts for the extra space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func placeSubelement(
    +    in size: CGSize,
    +    subelement: Subelement,
    +    environment: Environment,
    +    cache: inout Cache
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + size + + +
    +

    The region that the container’s parent allocates to the container. Place the +container’s subelement within the region. The size of this region may not match any size +that was returned from a call to +sizeThatFits(proposal:subelement:environment:cache:).

    +
    +
    + + subelement + + +
    +

    A proxy that represents the element that the container arranges. Use the +proxy to get information about the subelement and to tell the subelement where to +appear.

    +
    +
    + + environment + + +
    +

    The environment of this container. You can use properties from the +environment to vary the placement of the subelement.

    +
    +
    + + cache + + +
    +

    Optional storage for calculated data that you can share among the methods of your +custom layout container. See makeCache(subelement:environment:) for details.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates and initializes a cache for a layout instance.

    + +

    You can optionally use a cache to preserve calculated values across calls to a layout +container’s methods. Many layout types don’t need a cache, because Blueprint automatically +caches the results of calls into layout methods, such as +sizeThatFits(_:). Rely on the protocol’s default implementation of this +method if you don’t need a cache.

    + +

    However you might find a cache useful when the layout container repeats complex intermediate +calculations across calls to sizeThatFits(proposal:subelement:environment:cache:) and +placeSubelement(in:subelement:environment:cache:). You might be able to improve +performance by calculating values once and storing them in a cache.

    +
    +

    Note

    + A cache’s lifetime is limited to a single render pass, so you cannot use it to store +values across multiple calls to placeSubelement(in:subelement:environment:cache:). A +render pass includes zero, one, or many calls to +sizeThatFits(proposal:subelement:environment:cache:), followed by a single call to +placeSubelement(in:subelement:environment:cache:). + +
    + +

    Only implement a cache if profiling shows that it improves performance.

    + +

    For more information, see makeCache(subelements:environment:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func makeCache(subelement: Subelement, environment: Environment) -> Cache
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + subelement + + +
    +

    A proxy that represent the subelement that the container arranges. +You can use the proxy to get information about the subelement as you calculate values to +store in the cache.

    +
    +
    + + environment + + +
    +

    The environment of this container.

    +
    +
    +
    +
    +

    Return Value

    +

    Storage for calculated data that you share among the methods of your custom +layout container.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/Element.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/Element.html new file mode 100644 index 000000000..923e29585 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/Element.html @@ -0,0 +1,2992 @@ + + + + Element Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Element

+
+
+ +
public protocol Element
+ +
+
+

Conforming types represent a rectangular content area in a two-dimensional +layout space.

+ +
+ +

The ultimate purpose of an element is to provide visual content. This can be +done in two ways:

+ +
    +
  • By providing a view description (ViewDescription).

  • +
  • By providing child elements that will be displayed recursively within +the local coordinate space.

  • +
+ +
+ +

A custom element might look something like this:

+
struct MyElement: Element {
+
+    var backgroundColor: UIColor = .red
+
+    // Returns a single child element.
+    var content: ElementContent {
+        return ElementContent(child: Label(text: "😂"))
+    }
+
+    // Providing a view description means that this element will be
+    // backed by a UIView instance when displayed in a `BlueprintView`.
+    func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription? {
+        return UIView.describe { config in
+            config.bind(backgroundColor, to: \.backgroundColor)
+        }
+    }
+
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    +

    Returns the content of this element.

    + +

    Elements generally fall into two types:

    + +
      +
    • Leaf elements, or elements that have no children. These elements commonly have an intrinsic size, or some +content that can be measured. Leaf elements typically instantiate their content with +ElementContent(measurable:) or similar.
    • +
    • Container elements: these element have one or more children, which are arranged by a layout implementation. +Container elements typically use methods like ElementContent(layout:configure:) to instantiate +their content.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns an (optional) description of the view that should back this element.

    + +

    In Blueprint, elements that are displayed using a live UIView instance are referred to as “view-backed”. +Elements become view-backed by returning a ViewDescription value from this method.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + context + + +
    +

    The context this element is rendered in.

    +
    +
    +
    +
    +

    Return Value

    +

    An optional ViewDescription.

    +
    +
    +
    +
  • +
  • +
    + + + + adaptedEnvironment(key:value:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps this element in an AdaptedEnvironment with the given environment key and value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func adaptedEnvironment<Key>(key: Key.Type, value: Key.Value) -> Element where Key : EnvironmentKey
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + adaptedEnvironment(keyPath:value:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps this element in an AdaptedEnvironment with the given keypath and value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func adaptedEnvironment<Value>(keyPath: WritableKeyPath<Environment, Value>, value: Value) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + adaptedEnvironment(by:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps this element in an AdaptedEnvironment with the given configuration block.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func adaptedEnvironment(by environmentAdapter: @escaping (inout Environment) -> Void) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + aligned(vertically:horizontally:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Aligned element with the provided parameters.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func aligned(
    +    vertically: Aligned.VerticalAlignment = .center,
    +    horizontally: Aligned.HorizontalAlignment = .center
    +) -> Aligned
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + vertically + + +
    +

    The vertical alignment. Defaults to .centered.

    +
    +
    + + horizontally + + +
    +

    The horizontal alignment. Defaults to .centered.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + centered() + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in a Centered element to center it within its parent.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func centered() -> Centered
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

If / Else +

+
+
+
    +
  • +
    + + + + if(_:then:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Returns a new element from the provided modify +closure, if the provided boolean is true. Otherwise, the original +element is returned.

    +
    myElement.if(someBoolean) { element in
    +    element.centered()
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func `if`(
    +    _ isTrue: Bool,
    +    then: (Self) -> Element
    +) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + if(_:then:else:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Returns a new element from the provided then +closure if the provided boolean is true. If the provided boolean +is false, the else closure is used

    +
    myElement.if(
    +    someBoolean,
    +    then: { element in
    +          element.aligned(horizontally: .trailing, vertically: .fill)
    +    },
    +    else: { element in
    +        element.aligned(horizontally: .leading, vertically: .fill)
    +    }
    +)
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func `if`(
    +    _ isTrue: Bool,
    +    then: (Self) -> Element,
    +    else: (Self) -> Element
    +) -> Element
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

If Let +

+
+
+
    +
  • +
    + + + + if(let:then:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Returns a new element from the provided modify +closure if the provided value is non-nil. Otherwise, the original +element is returned.

    +
    myElement.if(let: someValue) { value, element in
    +    element.inset(uniform: someValue.padding)
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func `if`<Value>(
    +    `let` value: Value?,
    +    then: (Value, Self) -> Element
    +) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + if(let:then:else:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Returns a new element from the provided then +closure if the provided boolean is true. If the provided value +is nil, the else closure is used

    +
    myElement.if(
    +    let: someValue,
    +    then: { value, element in
    +          element.inset(uniform: value.padding)
    +    },
    +    else: { element in
    +        element.inset(uniform: 10)
    +    }
    +)
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func `if`<Value>(
    +    `let` value: Value?,
    +    then: (Value, Self) -> Element,
    +    else: (Self) -> Element
    +) -> Element
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Map & Modify +

+
+
+
    +
  • +
    + + + + map(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Creates and returns a new element by passing the +element to the provided map function.

    +
    myElement.map { element in
    +    switch myState {
    +    case .small: element.inset(uniform: 5)
    +    case .medium: element.inset(uniform: 10)
    +    case .large: element.inset(uniform: 15)
    +    }
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func map(_ map: (Self) -> Element) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + modify(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Creates and returns a new element by passing the +element to the provided modify function, which can edit it.

    +
    myElement.modify { element in
    +    switch myState {
    +    case .small: element.inset = 5
    +    case .medium: element.inset = 10
    +    case .large: element.inset = 15
    +    }
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func modify(_ modify: (inout Self) -> Void) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + constrainedTo(aspectRatio:contentMode:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Constrains the element to the provided aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func constrainedTo(
    +    aspectRatio: AspectRatio,
    +    contentMode: ConstrainedAspectRatio.ContentMode = .fitContent
    +) -> ConstrainedAspectRatio
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + aspectRatio + + +
    +

    The aspect ratio that the content size should match.

    +
    +
    + + contentMode + + +
    +

    How the content should size itself relative to its parent.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + constrainedTo(width:height:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Constrains the measured size of the element to the provided width and height.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func constrainedTo(
    +    width: ConstrainedSize.Constraint = .unconstrained,
    +    height: ConstrainedSize.Constraint = .unconstrained
    +) -> ConstrainedSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + constrainedTo(width:height:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Constrains the measured size of the element to the provided width and height.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func constrainedTo(
    +    width: CGFloat,
    +    height: CGFloat
    +) -> ConstrainedSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + constrainedTo(size:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Constrains the measured size of the element to the provided size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func constrainedTo(
    +    size: CGSize
    +) -> ConstrainedSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + constrained(to:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Constrains the measured size of the element to the provided SizeConstraint.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func constrained(to sizeConstraint: SizeConstraint) -> ConstrainedSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + decorate(layering:position:with:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Places a decoration element behind or in front of the given wrapped element, +and positions it according to the position parameter.

    + +

    See the Decorate element for more.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func decorate(
    +    layering: Decorate.Layering,
    +    position: Decorate.Position,
    +    with decoration: () -> Element
    +) -> Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + flowChild(key:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in a Flow.Child to allow customizing the item in the flow layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func flowChild(key: AnyHashable? = nil) -> Flow.Child
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

child modeling +

+
+
+
    +
  • +
    + + + + gridRowChild(key:width:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps an element with a GridRowChild in order to provide meta information that a GridRow can aply to its layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func gridRowChild(key: AnyHashable? = nil, width: GridRow.Width) -> GridRow.Child
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + key + + +
    +

    A unique identifier for the child.

    +
    +
    + + width + + +
    +

    The sizing for the element.

    +
    +
    +
    +
    +

    Return Value

    +

    GridRowChild

    +
    +
    +
    +
  • +
  • +
    + + + + hidden(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Conditionally hide the wrapped element.

    + +

    Hidden elements still participate in layout. Hiding sets the UIView.isHidden property of the nearest backing view.

    +
    +

    Note

    + When an element is hidden, any elements within the wrapped element will be hidden. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hidden(_ hidden: Bool = true) -> Hidden
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(top:bottom:left:right:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Insets the element by the given amount on each side.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(
    +    top: CGFloat = 0.0,
    +    bottom: CGFloat = 0.0,
    +    left: CGFloat = 0.0,
    +    right: CGFloat = 0.0
    +) -> Inset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(by:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Insets the element by the given amount on each side.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(by edgeInsets: UIEdgeInsets) -> Inset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(uniform:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Insets the element by the given amount on each side.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(uniform: CGFloat) -> Inset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(horizontal:vertical:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Insets the element by the given amount on each side.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(
    +    horizontal: CGFloat = 0.0,
    +    vertical: CGFloat = 0.0
    +) -> Inset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyed(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Keyed allows providing a Hashable value which is used +during view updates to uniquely identify content during the diff process +between the old and new element structure.

    + +

    This is useful if you have two elements of the same type at the same depth +in the element hierarchy, and you’d like to differentiate between them, eg +for appearance transition purposes.

    +

    Example

    + +

    Keying the image returned, so that a transition occurs when changing +between a placeholder image and an available photo.

    +
    func imageElement() -> Element {
    +    if let photo = self.photo {
    +        return Image(image: photo)
    +                .transition(.fade)
    +                .keyed("photo")
    +    } else {
    +        return Image(image: self.placeholder)
    +                .transition(.fade)
    +                .keyed("placeholder")
    +    }
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func keyed(_ key: AnyHashable) -> Keyed
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onAppear(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Adds a hook that will be called when this element appears.

    + +

    Callbacks run in depth-first traversal order, with parents before children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onAppear(_ callback: @escaping LifecycleCallback) -> LifecycleObserver
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onDisappear(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Adds a hook that will be called when this element disappears.

    + +

    Callbacks run in depth-first traversal order, with parents before children. There is no +guaranteed order between disappearance callbacks and backing views being removed from their +superviews.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onDisappear(_ callback: @escaping LifecycleCallback) -> LifecycleObserver
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + opacity(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Opacity element with the provided opacity.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func opacity(_ opacity: CGFloat) -> Opacity
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + opacity + + +
    +

    The opacity to be applied.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + overlayChild(key:) + + + Extension method + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func overlayChild(key: AnyHashable? = nil) -> Overlay.Child
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Result Builders +

+
+
+
    +
  • +
    + + + + stackLayoutChild(priority:alignmentGuide:key:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps an element with a StackLayout.Child in order to customize StackLayout.Traits and the key.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func stackLayoutChild(
    +    priority: StackLayout.Child.Priority = .flexible,
    +    alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    key: AnyHashable? = nil
    +) -> StackLayout.Child
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + priority + + +
    +

    Controls the amount of extra space distributed to this child during underflow and overflow

    +
    +
    + + alignmentGuide + + +
    +

    Allows for custom alignment of a child along the cross axis.

    +
    +
    + + key + + +
    +

    A key used to disambiguate children between subsequent updates of the view +hierarchy.

    +
    +
    +
    +
    +

    Return Value

    +

    A wrapper containing this element with additional layout information for the StackElement.

    +
    +
    +
    +
  • +
  • +
    + + + + stackLayoutChild(priority:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps an element with a StackLayout.Child in order to customize the StackLayout.Child.Priority.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func stackLayoutChild(
    +    priority: StackLayout.Child.Priority
    +) -> StackLayout.Child
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + priority + + +
    +

    Controls the amount of extra space distributed to this child during underflow and overflow

    +
    +
    +
    +
    +

    Return Value

    +

    A wrapper containing this element with additional layout information for the StackElement.

    +
    +
    +
    +
  • +
  • +
    + + + + tintAdjustmentMode(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Conditionally modifies the tint adjustment mode of its wrapped element.

    +
    +

    Note

    + When a tint adjustment mode is applied, any elements within the wrapped element will adopt the parent’s tint adjustment mode. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tintAdjustmentMode(_ tintAdjustmentMode: UIView.TintAdjustmentMode) -> TintAdjustmentMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + transformed(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Transformed element with the provided 3D transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transformed(_ transform: CATransform3D) -> Transformed
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + transform + + +
    +

    The 3D transform to be applied.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + transformed(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Transformed element with the provided 2D transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transformed(_ transform: CGAffineTransform) -> Transformed
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + transform + + +
    +

    The 2D transform to be applied.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + translated(translateX:translateY:translateZ:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Transformed element that translates the receiver in 3D space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func translated(
    +    translateX: CGFloat = 0,
    +    translateY: CGFloat = 0,
    +    translateZ: CGFloat = 0
    +) -> Transformed
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + transformX + + +
    +

    The X component of the translation.

    +
    +
    + + transformY + + +
    +

    The Y component of the translation.

    +
    +
    + + transformZ + + +
    +

    The Z component of the translation.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + rotated(by:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Transformed element that rotates the receiver in 2D space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func rotated(by rotationAngle: Measurement<UnitAngle>) -> Transformed
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + rotate + + +
    +

    The angle measurement to rotate the receiver by.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + scaled(scaleX:scaleY:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in an Transformed element that scales the receiver in 2D space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func scaled(
    +    scaleX: CGFloat = 1,
    +    scaleY: CGFloat = 1
    +) -> Transformed
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + scaleX + + +
    +

    The X axis scale.

    +
    +
    + + scaleY + + +
    +

    The Y axis scale.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + userInteractionEnabled(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Conditionally enable user interaction of the wrapped element.

    +
    +

    Note

    + When user interaction is disabled, any elements within the wrapped element will become non-interactive. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func userInteractionEnabled(_ enabled: Bool = true) -> UserInteractionEnabled
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + blockAccessibility(isBlocking:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Blocks all accessibility on the element, so that it is +is no longer an accessibility element, and its children are +hidden from the accessibility system.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func blockAccessibility(isBlocking: Bool = true) -> AccessibilityBlocker
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityContainer(identifier:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Acts as an accessibility container for any subviews +where isAccessibilityElement == true.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func accessibilityContainer(identifier: String? = nil) -> Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Wraps the receiver in an accessibility element with the provided values.

    + +

    Providing a nil value for any of these parameters will result in no resolved value for that accessibility +parameter—it does not inherit parameters from the wrapped element’s accessibility configuration.

    +
    +

    Important

    + ⚠️ This overrides the accessibility of the contained element and all of its children ⚠️ + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func accessibilityElement(
    +    label: String?,
    +    value: String?,
    +    traits: Set<AccessibilityElement.Trait>,
    +    hint: String? = nil,
    +    identifier: String? = nil,
    +    accessibilityFrameSize: CGSize? = nil,
    +    accessibilityFrameCornerStyle: Box.CornerStyle = .square,
    +    customActions: [AccessibilityElement.CustomAction] = [],
    +    customContent: [AccessibilityElement.CustomContent] = []
    +) -> AccessibilityElement
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Wraps the receiver in an accessibility element with the provided values.

    +
    +

    Important

    +

    ⚠️ This overrides the accessibility of the contained element and all of its children ⚠️

    + +
    +

    See also

    +

    accessibilityElement

    + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "accessibilityElement(label:value:traits:hint:identifier:accessibilityFrameSize:﹚")
    +public func accessibility(
    +    label: String? = nil,
    +    value: String? = nil,
    +    hint: String? = nil,
    +    identifier: String? = nil,
    +    traits: Set<AccessibilityElement.Trait> = [],
    +    accessibilityFrameSize: CGSize? = nil
    +) -> AccessibilityElement
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Trigger +

+
+
+
    +
  • +
    + + + + accessibilityFocus(on:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Enables VoiceOver focus to jump to the wrapped element via the trigger.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func accessibilityFocus(
    +    on trigger: AccessibilityFocus.Trigger
    +) -> Element
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + on + + +
    +

    A reference-type trigger object that can be used to trigger accessibility focus via the focus() function.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

View implementation +

+
+
+
    +
  • +
    + + + + onLinkTapped(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Handle links opened in any AttributedLabel within this element using the provided closure.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onLinkTapped(_ onTap: @escaping (URL) -> Void) -> Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Wraps the element in a box to provide basic styling.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func box(
    +    background: UIColor = .clear,
    +    corners: Box.CornerStyle = .square,
    +    cornerCurve: Box.CornerCurve = .circular,
    +    borders: Box.BorderStyle = .none,
    +    shadow: Box.ShadowStyle = .none,
    +    clipsContent: Bool = false
    +) -> Box
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + editingMenu(show:with:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Allows showing the system’s UIMenuController editing menu upon long press of the wrapped element.

    +
    myElement.editingMenu(show: .onLongPress) {
    +    EditingMenuItem.copying("A String")
    +
    +    EditingMenuItem(.select) {
    +        print("Selected!")
    +    }
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func editingMenu(
    +    show gesture: EditingMenu.Gesture,
    +    @Builder<EditingMenuItem> with items: () -> [EditingMenuItem]
    +) -> EditingMenu
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scrollable(_:configure:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in a ScrollView to allow it to be scrolled +if it takes up more space then is available on screen.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func scrollable(
    +    _ contentSize: ScrollView.ContentSize = .fittingHeight,
    +    configure: (inout ScrollView) -> Void = { _ in }
    +) -> ScrollView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tappable(onTap:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element and calls the provided closure when tapped.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tappable(onTap: @escaping () -> Void) -> Tappable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + transition(onAppear:onDisappear:onLayout:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in a transition container to provide an animated transition.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transition(
    +    onAppear: VisibilityTransition? = nil,
    +    onDisappear: VisibilityTransition? = nil,
    +    onLayout: LayoutTransition = .inherited
    +) -> TransitionContainer
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + onAppear + + +
    +

    The transition to use when the element appears. By default, no transition.

    +
    +
    + + onDisappear + + +
    +

    The transition to use when the element disappears. By default, no transition.

    +
    +
    + + onLayout + + +
    +

    The transition to use when the element’s layout changes. The default value is +.inherited, which means the element will participate in the same transition as its +nearest ancestor with a specified transition.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + transition(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Wraps the element in a transition container to provide an animated transition when its visibility changes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transition(_ onAppearOrDisappear: VisibilityTransition) -> TransitionContainer
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + onAppearOrDisappear + + +
    +

    The transition to use when the element appears or disappears.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/ElementBuilderChild.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/ElementBuilderChild.html new file mode 100644 index 000000000..4b405ac59 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/ElementBuilderChild.html @@ -0,0 +1,681 @@ + + + + ElementBuilderChild Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ElementBuilderChild

+
+
+ +
public protocol ElementBuilderChild
+ +
+
+

Defines a way for anElement to be implicitly converted into the conforming type (the child of a container). +In practice, this allows us to pass an Element directly into the result builder without manually converting to Child (i.e. Converting Element -> StackLayout.Child.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/EnvironmentKey.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/EnvironmentKey.html new file mode 100644 index 000000000..9552545d2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/EnvironmentKey.html @@ -0,0 +1,728 @@ + + + + EnvironmentKey Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EnvironmentKey

+
+
+ +
public protocol EnvironmentKey
+ +
+
+

Types conforming to this protocol can be used as keys in an Environment.

+ +

Using a type as the key allows us to strongly type each value, with the +key’s EnvironmentKey.Value associated value.

+

Example

+ +

Usually a key is implemented with an uninhabited type, such an empty enum.

+
enum WidgetCountKey: EnvironmentKey {
+    static let defaultValue: Int = 0
+}
+
+ +

You can write a small extension on Environment to make it easier to use your key.

+
extension Environment {
+    var widgetCount: Int {
+        get { self[WidgetCountKey.self] }
+        set { self[WidgetCountKey.self] = newValue }
+    }
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Value + +
    +
    +
    +
    +
    +
    +

    The type of value stored by this key.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype Value
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + defaultValue + +
    +
    +
    +
    +
    +
    +

    The default value that will be vended by an Environment for this key if no other value +has been set.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static var defaultValue: Self.Value { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/LegacyLayout.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/LegacyLayout.html new file mode 100644 index 000000000..4c6b25651 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/LegacyLayout.html @@ -0,0 +1,834 @@ + + + + LegacyLayout Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LegacyLayout

+
+
+ +
public protocol LegacyLayout
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Traits + +
    +
    +
    +
    +
    +
    +

    Per-item metadata that is used during the measuring and layout pass.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype Traits = ()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + measure(in:items:) + +
    +
    +
    +
    +
    +
    +

    Computes the size that this layout requires in a layout, given an array of children and +accompanying layout traits.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func measure(in constraint: SizeConstraint, items: [(traits: Self.Traits, content: Measurable)]) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + constraint + + +
    +

    The size constraint in which measuring should occur.

    +
    +
    + + items + + +
    +

    An array of ‘items’, pairs consisting of a traits object and a +Measurable value.

    +
    +
    +
    +
    +

    Return Value

    +

    The measured size for the given array of items.

    +
    +
    +
    +
  • +
  • +
    + + + + layout(size:items:) + +
    +
    +
    +
    +
    +
    +

    Generates layout attributes for the given items.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func layout(size: CGSize, items: [(traits: Self.Traits, content: Measurable)]) -> [LayoutAttributes]
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + size + + +
    +

    The size that layout attributes should be generated within.

    +
    +
    + + items + + +
    +

    An array of ‘items’, pairs consisting of a traits object and a +Measurable value.

    +
    +
    +
    +
    +

    Return Value

    +

    Layout attributes for the given array of items.

    +
    +
    +
    +
  • +
  • +
    + + + + defaultTraits + +
    +
    +
    +
    +
    +
    +

    Returns a default traits object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static var defaultTraits: Self.Traits { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/LegacySingleChildLayout.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/LegacySingleChildLayout.html new file mode 100644 index 000000000..a463b850c --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/LegacySingleChildLayout.html @@ -0,0 +1,777 @@ + + + + LegacySingleChildLayout Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LegacySingleChildLayout

+
+
+ +
public protocol LegacySingleChildLayout
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + measure(in:child:) + +
    +
    +
    +
    +
    +
    +

    Computes the size that this layout requires

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func measure(in constraint: SizeConstraint, child: Measurable) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + constraint + + +
    +

    The size constraint in which measuring should occur.

    +
    +
    + + child + + +
    +

    A Measurable representing the single child of this layout.

    +
    +
    +
    +
    +

    Return Value

    +

    The measured size.

    +
    +
    +
    +
  • +
  • +
    + + + + layout(size:child:) + +
    +
    +
    +
    +
    +
    +

    Generates layout attributes for the child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func layout(size: CGSize, child: Measurable) -> LayoutAttributes
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + size + + +
    +

    The size that layout attributes should be generated within.

    +
    +
    + + child + + +
    +

    A Measurable representing the single child of this layout.

    +
    +
    +
    +
    +

    Return Value

    +

    Layout attributes for the child of this layout.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/Measurable.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/Measurable.html new file mode 100644 index 000000000..93357c8d3 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/Measurable.html @@ -0,0 +1,704 @@ + + + + Measurable Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Measurable

+
+
+ +
public protocol Measurable
+ +
+
+

Conforming types can calculate the size that they require within a layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + measure(in:) + +
    +
    +
    +
    +
    +
    +

    Measures the required size of the receiver.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func measure(in constraint: SizeConstraint) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + constraint + + +
    +

    The size constraint.

    +
    +
    +
    +
    +

    Return Value

    +

    The layout size needed by the receiver.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/NativeView.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/NativeView.html new file mode 100644 index 000000000..8abb95631 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/NativeView.html @@ -0,0 +1,722 @@ + + + + NativeView Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

NativeView

+
+
+ +
public protocol NativeView
+ +
+
+

Marker protocol used by generic extensions to native views (e.g. UIView).

+ +
+
+ +
+
+
+
+ + +
+ +

Available where Self: UIView +

+
+
+
    +
  • +
    + + + + describe(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Generates a view description for the receiving class. +Example:

    +
    let viewDescription = UILabel.describe { config in
    +    config[\.text] = "Hello, world"
    +    config[\.textColor] = UIColor.orange
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func describe(_ configuring: (inout ViewDescription.Configuration<Self>) -> Void) -> ViewDescription
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + configuring + + +
    +

    A closure that is responsible for populating a configuration object.

    +
    +
    +
    +
    +

    Return Value

    +

    The resulting view description.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/ProxyElement.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/ProxyElement.html new file mode 100644 index 000000000..dcb10963d --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/ProxyElement.html @@ -0,0 +1,744 @@ + + + + ProxyElement Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ProxyElement

+
+
+ +
public protocol ProxyElement : Element
+ +
+
+

Custom elements commonly use another element to actually display content. For example, a profile element might +display an image and a few labels inside a Column element. The ProxyElement protocol is provided to make that +task easier.

+ +

Conforming types only need to implement elementRepresentation in order to generate an element that will be +displayed.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/StackElement.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/StackElement.html new file mode 100644 index 000000000..8d176e8c6 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/StackElement.html @@ -0,0 +1,1098 @@ + + + + StackElement Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

StackElement

+
+
+ +
public protocol StackElement : Element
+ +
+
+

Conforming types (Row and Column) act as StackLayout powered containers.

+ +

This protocol should only be used by Row and Column elements (you should never add conformance to other custom +types).

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layout + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var layout: StackLayout { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var children: [(element: Element, traits: StackLayout.Traits, key: AnyHashable?)] { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + + + Extension method + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + backingViewDescription(with:) + + + Extension method + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ configure: (inout Self) -> Void)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Adds a given child element to the stack.

    + +
      +
    • Tag: StackElement.add

    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(
    +    growPriority: CGFloat = 1.0,
    +    shrinkPriority: CGFloat = 1.0,
    +    alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    key: AnyHashable? = nil,
    +    child: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + +
    + + growPriority + + +
    +

    +
    +
    + + shrinkPriority + + +
    +

    +
    +
    + + alignmentGuide + + +
    +

    +
    +
    + + key + + +
    +

    A key used to disambiguate children between subsequent updates of the view +hierarchy

    +
    +
    + + child + + +
    +

    The child element to add to this stack

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + addFixed(alignmentGuide:key:child:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Convenience method for adding a child with a grow and shrink priority of 0.0.

    + +

    See StackElement.add(...) for details.

    +

    In Xcode

    + +

    StackElement.add()

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func addFixed(
    +    alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    key: AnyHashable? = nil,
    +    child: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + alignmentGuide + + +
    +

    A closure that can be used to provide a custom alignment guide for this +child.

    +
    +
    + + key + + +
    +

    A key used to disambiguate children between subsequent updates of the view +hierarchy

    +
    +
    + + child + + +
    +

    The child element to add to this stack

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + addFlexible(alignmentGuide:key:child:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Convenience method for adding a child with a grow and shrink priority of 1.0.

    + +

    See StackElement.add(...) for details.

    +

    In Xcode

    + +

    StackElement.add()

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func addFlexible(
    +    alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    key: AnyHashable? = nil,
    +    child: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + alignmentGuide + + +
    +

    A closure that can be used to provide a custom alignment guide for this +child.

    +
    +
    + + key + + +
    +

    A key used to disambiguate children between subsequent updates of the view +hierarchy

    +
    +
    + + child + + +
    +

    The child element to add to this stack

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/UIViewElement.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/UIViewElement.html new file mode 100644 index 000000000..c05bb3729 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/UIViewElement.html @@ -0,0 +1,893 @@ + + + + UIViewElement Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UIViewElement

+
+
+ +
public protocol UIViewElement : Element
+ +
+
+

An element type which makes it easier to wrap an existing UIView instance that +provides its own sizing via sizeThatFits. An instance of the view is used for +sizing and measurement, so that you do not need to re-implement your own measurement.

+

Note

+ +

The sizing and measurement prototype view is kept alive for the lifetime of the containing application. +Do not pass anything to the initializer of this type that you expect to be quickly released.

+

Example

+ +

If you were implementing a very basic Switch element, your implementation would look something +like this:

+
struct Switch : UIViewElement
+{
+    var isOn : Bool
+
+    typealias UIViewType = UISwitch
+
+    func makeUIView() -> UISwitch {
+        UISwitch()
+    }
+
+    func updateUIView(_ view: UISwitch, with context: UIViewElementContext) {
+        view.isOn = self.isOn
+    }
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + UIViewType + +
    +
    +
    +
    +
    +
    +

    The type of the view associated with the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype UIViewType : UIView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + makeUIView() + +
    +
    +
    +
    +
    +
    +

    Create and return a new instance of the provided view type.

    +

    Note

    + +

    Ensure that you do not pass any values to the initializer of your view type +that you cannot also update in updateUIView(_:), as view instances +are reused for sizing and measurement.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func makeUIView() -> UIViewType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateUIView(_:with:) + +
    +
    +
    +
    +
    +
    +

    Update the view instance with the content from the element. The context provides additional +information, such as whether the update is for the measuring instance.

    +

    Example

    + +

    If you were to implement a simple UIViewElement which wraps a UISwitch, +your update method would look like this:

    +
    func updateUIView(_ view: UISwitch, with context: UIViewElementContext) {
    +   view.isOn = self.isOn
    +}
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func updateUIView(_ view: UIViewType, with context: UIViewElementContext)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + size(_:thatFits:) + + + Default implementation + +
    +
    +
    +
    +
    +
    +

    Returns the sizing measurement for the element for the provided +measurement view.

    + +

    You usually do not need to implement this method – the default implementation of +this method simply calls sizeThatFits(_:) on the provided view.

    + +

    The view is fully configured and updated before this method is called – you do not need to +update it in any way.

    +

    When To Override

    + +

    You may want to override this method if you need to mutate the value returned from sizeThatFits(_:), +or if you want to use some other sizing method like systemLayoutSizeFitting(...).

    + +
    +

    Default Implementation

    +
    +

    The default implementation simply forwards to sizeThatFits(_:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func size(_ size: CGSize, thatFits view: UIViewType) -> CGSize
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+
    +
  • +
    + + + + content + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Defer to the reused measurement view to provide the size of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + backingViewDescription(with:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    Provide the view for the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/URLHandler.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/URLHandler.html new file mode 100644 index 000000000..890115b4c --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Protocols/URLHandler.html @@ -0,0 +1,683 @@ + + + + URLHandler Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

URLHandler

+
+
+ +
public protocol URLHandler
+ +
+
+

Conform to this protocol to handle links tapped in an AttributedLabel.

+ +

Use the URLHandlerEnvironmentKey or Environment.urlHandler property to override +the link handler in the environment.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + onTap(url:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func onTap(url: URL)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs.html new file mode 100644 index 000000000..cb2ac6d83 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs.html @@ -0,0 +1,2075 @@ + + + + Structures Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Structures

+

The following structures are available globally.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + AttributedText + +
    +
    +
    +
    +
    +
    +

    AttributedText allows you to apply strongly-typed attributes to strings (much like the AttributedString type +introduced in iOS 15). You can then access the attributedString property to get an attributed string with those +attributes applied.

    + +

    For example:

    +
    var text = AttributedText(string: "Hello, world")
    +// Apply a font to the entire range
    +text.font = .systemFont(ofSize: 20)
    +
    +// Apply a color to part of the string
    +let range = text.string.range(of: "world")!
    +text[range].color = .blue
    +
    +// Render the attributed text
    +let label = AttributedLabel(attributedText: text.attributedString)
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @dynamicMemberLookup
    +public struct AttributedText
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct TextAttributeContainer
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct BlueprintViewRenderMetrics
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The context passing to the backingViewDescription of an Element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ViewDescriptionContext
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + UIViewElementContext + +
    +
    +
    +
    +
    +
    +

    Context object passed into updateUIView.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct UIViewElementContext
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + FocusBinding + +
    +
    +
    +
    +
    +
    +

    A two-way binding between a focusable element’s backing view and a FocusState-wrapped +property.

    + +

    Generally you should not need to interact with this type directly. However, you can use focus +bindings to add focus support to custom elements.

    +

    Adding Focus Bindings

    + +

    On a FocusState, call the binding(for:) method to get a binding bound to an optional value, +or binding() to get a binding bound to a boolean.

    + +

    To set up the 2-way binding, there are 2 steps:

    + +
      +
    1. Assign actions to the nested FocusTrigger, so that your backing view is updated when the +FocusState‘s value changes.

    2. +
    3. Call the onFocus and onBlur callbacks when your backing view gains or loses focus, so +that the value of the bound FocusState is updated.

    4. +
    +

    Example

    +
    final class FocusableView: UIView {
    +    var focusBinding: FocusBinding? {
    +        didSet {
    +            oldValue?.trigger.focusAction = nil
    +            oldValue?.trigger.blurAction = nil
    +
    +            guard let focusBinding = focusBinding else { return }
    +
    +            focusBinding.trigger.focusAction = { [weak self] in
    +                self?.becomeFirstResponder()
    +            }
    +            focusBinding.trigger.blurAction = { [weak self] in
    +                self?.resignFirstResponder()
    +            }
    +
    +            if isFirstResponder {
    +                focusBinding.onFocus()
    +            } else {
    +                focusBinding.onBlur()
    +            }
    +        }
    +    }
    +
    +    @discardableResult
    +    override func becomeFirstResponder() -> Bool {
    +        let focused = super.becomeFirstResponder()
    +        if focused {
    +            focusBinding?.onFocus()
    +        }
    +        return focused
    +    }
    +
    +    @discardableResult
    +    override func resignFirstResponder() -> Bool {
    +        let blurred = super.resignFirstResponder()
    +        if blurred {
    +            focusBinding?.onBlur()
    +        }
    +        return blurred
    +    }
    +}
    +
    + +
      +
    • Tag: FocusBinding
    • +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct FocusBinding
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + FocusState + +
    +
    +
    +
    +
    +
    +

    A property wrapper type that can read and write a value that represents the placement of focus.

    + +

    Use this property wrapper in conjunction with modifiers on elements that support focus, such as +TextField.focused(when:equals:) and TextField.focused(when:), to describe when those elements +should have focus. When focus enters the modified element, the wrapped value of this property +updates to match a given value. Similarly, when focus leaves, the wrapped value of this property +resets to nil or false. Setting this property’s value programmatically has the reverse +effect, causing focus to move to the element associated with the updated value.

    + +

    In the following example of a simple login screen, when the user presses the Sign In button and +one of the fields is still empty, focus moves to that field. Otherwise, the sign-in process +proceeds.

    +
    struct LoginForm: ProxyElement {
    +    enum Field: Hashable {
    +        case username
    +        case password
    +    }
    +
    +    var username: String
    +    var password: String
    +    var handleLogin: () -> Void
    +
    +    @FocusState private var focusedField: Field?
    +
    +    var elementRepresentation: Element {
    +        Column { column in
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .username)
    +            )
    +
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .password)
    +            )
    +
    +            column.add(
    +                child: Button(
    +                    onTap: {
    +                        if username.isEmpty {
    +                            focusedField = .username
    +                        } else if password.isEmpty {
    +                            focusedField = .password
    +                        } else {
    +                            handleLogin()
    +                        }
    +                    },
    +                    wrapping: Label(text: "Sign In")
    +                )
    +            )
    +        }
    +    }
    +}
    +
    + +

    To allow for cases where focus is completely absent from a view tree, the wrapped value must be +either an optional or a Boolean. Set the focus binding to false or nil as appropriate to +remove focus from all bound fields. You can also use this to remove focus from a TextField +and thereby dismiss the keyboard.

    +

    Auto-Focus

    + +

    To auto-focus a field when it appears, set the value in an onAppear hook.

    +
    struct Example: ProxyElement {
    +    @FocusState var isFocused: Bool
    +
    +    var elementRepresentation: Element {
    +        TextField(text: "")
    +            .focused(when: $isFocused)
    +            .onAppear {
    +                isFocused = true
    +            }
    +    }
    +}
    +
    +

    Avoid Ambiguous Focus Bindings

    + +

    A TextField can have only one focus binding, stored in its focusBinding property. If you apply +the focused modifier multiple times, the last one will overwrite the previous value.

    + +

    On the other hand, binding the same value to two views is ambiguous. In the following example, +two separate fields bind focus to the name value:

    +
    struct Content: ProxyElement {
    +    enum Field: Hashable {
    +        case name
    +        case fullName
    +    }
    +
    +    @FocusState private var focusedField: Field?
    +
    +    var elementRepresentation: Element {
    +        Column { column in
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .name)
    +            )
    +
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .name) // incorrect re-use of .name
    +            )
    +        }
    +    }
    +}
    +
    + +

    If the user moves focus to either field, the focusedField binding updates to name. However, +if the app programmatically sets the value to name, the last field bound will be chosen.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @propertyWrapper
    +public struct FocusState<Value> where Value : Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Alignment + +
    +
    +
    +
    +
    +
    +

    An alignment in both axes.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Alignment : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + HorizontalAlignment + +
    +
    +
    +
    +
    +
    +

    An alignment position along the horizontal axis.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct HorizontalAlignment : Equatable, CustomStringConvertible
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + VerticalAlignment + +
    +
    +
    +
    +
    +
    +

    An alignment position along the vertical axis.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct VerticalAlignment : Equatable, CustomStringConvertible
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AspectRatio + +
    +
    +
    +
    +
    +
    +

    Represents an a proportional relationship between width and height.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AspectRatio
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Builder + +
    +
    +
    +
    +
    +
    +

    Generic result builder for converting blocks of Child... into [Child].

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @resultBuilder
    +public struct Builder<Child>
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Decorate + +
    +
    +
    +
    +
    +
    +

    Places a decoration element behind or in front of the given wrapped element, +and positions it according to the position parameter.

    + +

    The size and position of the element is determined only by the wrapped +element, the decoration element does not affect the layout at all.

    +

    Example

    + +

    The arrows represent the measured size of the element for layout purposes.

    +
    ┌───────────────────┐     ┌──────┐
    +    Decoration                
    + ┏━━━━━━━━━━━━━━━┓           ┣━━━━━━━━━━┓   
    +                     └─┳────┘             
    +     Wrapped               Wrapped       
    +                                         
    + ┗━━━━━━━━━━━━━━━┛       ┗━━━━━━━━━━━━━━━┛   
    +└───────────────────┘
    +  ◀───────────────▶         ◀───────────────▶
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Decorate : ProxyElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ElementDimensions + +
    +
    +
    +
    +
    +
    +

    An element’s size and its alignment guides in its own coordinate space.

    + +

    You can access the size of the element through the width and height properties. You can +access alignment guide values by subscripting with the specific alignment.

    + +

    These dimensions are typically used when setting an alignment guide on a stack, with +StackElement.add(...).

    +

    Example

    +
    // get the alignment guide value for `VerticalAlignment.center`, falling back to the default
    +// value if no alignment guide has been set
    +dimensions[VerticalAlignment.center]
    +
    +// get the alignment guide value for `HorizontalAlignment.trailing`, or `nil` if none has been
    +// set.
    +dimensions[explicit: .trailing]
    +
    +

    See Also

    + +

    StackElement.add()

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ElementDimensions : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Flow + +
    +
    +
    +
    +
    +
    +

    Element which lays out children horizontally, wrapping to another row when there is not enough space.

    + +

    You may control the layout of each row within the flow layout, by providing a LineAlignment, +which controls the horizontal alignment of content within a row when it is smaller than its container, +and via ItemAlignment, which controls the vertical alignment of shorter elements within a row.

    +
    Flow(itemSpacing: 10, lineSpacing: 10) {
    +    OnboardingPill("Food / drink")
    +    OnboardingPill("Retail goods").flowChild(key: "aKey")
    +    OnboardingPill("Grocery / gourmet / alcohol")
    +    OnboardingPill("Beauty / wellness bookings")
    +    OnboardingPill("Healthcare services")
    +    OnboardingPill("Something else")
    +}
    +
    + +

    Below is a diagram showing a simple example of a Flow layout.

    +
    ┌─────────────────────────────────────┐
    + ┌─────────┐┌─────────┐┌────────────┐│
    +     1    ││    2    ││     3      ││
    + └─────────┘└─────────┘└────────────┘│
    + ┌───────┐┌─────┐┌───────────┐       
    +    4   ││  5  ││     6            
    + └───────┘└─────┘└───────────┘       
    +└─────────────────────────────────────┘
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Flow : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + GeometryProxy + +
    +
    +
    +
    +
    +
    +

    Contains information about the current layout being measured by GeometryReader

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct GeometryProxy
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + GridRow + +
    +
    +
    +
    +
    +
    +

    Like Row, GridRow displays a list of items in a linear horizontal layout. Unlike Row, GridRow provides +convenience for describing columnar layout.

    + +

    Horizontally, GridRow children are stretched to fill the available space. Vertically, children are aligned +according to the verticalAlignment property.

    + +

    Children may be sized proportionally or absolutely. Proportionally-sized children are granted a proportion of +the total layout space after absolutely-sized children and margins have been subtracted.

    +

    Example:

    +
    GridRow { row in
    +  row.verticalAlignment = .fill
    +  row.spacing = 8.0
    +  row.add(width: .proportional(0.75), child: name)
    +  row.add(width: .proportional(0.25), child: number)
    +  row.add(width: .absolute(100), child: status)
    +}
    +
    +

    Expected layout:

    +
    ┌────────────────────────────┬─┬────────┬─┬──────────────────┐
    +            name              number        status      
    +            (75%)           8  (25%) 8     (100 pts)    
    +                                                        
    +●──────────── 150 ───────────● ●── 50 ──● ●─────── 100 ──────●
    +└────────────────────────────┴─┴────────┴─┴──────────────────┘
    +●──────────────────────────── 316 ───────────────────────────●
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct GridRow : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Hidden + +
    +
    +
    +
    +
    +
    +

    Hidden conditionally hides its wrapped element.

    +
    +

    Note

    + When an element is hidden, any elements within the wrapped element will be hidden. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Hidden : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Keyed + +
    +
    +
    +
    +
    +
    +

    Keyed allows providing a Hashable value which is used +during view updates to uniquely identify content during the diff process +between the old and new element structure.

    + +

    This is useful if you have two elements of the same type at the same depth +in the element hierarchy, and you’d like to differentiate between them, eg +for appearance transition purposes.

    +

    Example

    + +

    Keying the image returned, so that a transition occurs when changing +between a placeholder image and an available photo.

    +
    func imageElement() -> Element {
    +    if let photo = self.photo {
    +        return Image(image: photo)
    +                .transition(.fade)
    +                .keyed("photo")
    +    } else {
    +        return Image(image: self.placeholder)
    +                .transition(.fade)
    +                .keyed("placeholder")
    +    }
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Keyed : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutAttributes + +
    +
    +
    +
    +
    +
    +

    Contains layout-related metrics for an element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LayoutAttributes
    +
    extension LayoutAttributes: Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutOptions + +
    +
    +
    +
    +
    +
    +

    Configuration options for caffeinated.

    + +

    Generally these are only useful for experimenting with the performance profile of different +element compositions, and you should stick with default.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LayoutOptions : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutSubelement + +
    +
    +
    +
    +
    +
    +

    A proxy that represents one child element of a layout.

    + +

    This type acts as a proxy for a child element in a Layout. Layout protocol methods receive a +LayoutSubelements collection that contains exactly one proxy for each of the child elements +managed by the layout.

    + +

    Use this proxy to get information about the associated element, like its size and traits. You +should also use the proxy to tell its corresponding element where to appear by calling the +proxy’s place(at:anchor:size:) method. Do this once for each subview from your +implementation of the layout’s +placeSubelements(in:subelements:environment:cache:) method.

    +
    +

    Note

    + The LayoutSubelement API, and its documentation, are modeled after SwiftUI’s +LayoutSubview, with major +differences noted. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LayoutSubelement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutWriter + +
    +
    +
    +
    +
    +
    +

    A parent element which allows arbitrary, custom layout and positioning of its children.

    + +

    Instead of creating a custom Element with a custom Layout, you might use +this element to create a customized layout in a more lightweight way.

    +
    LayoutWriter { context, layout in
    +    layout.add(with: myFrame, child: myElement)
    +    layout.add(with: myOtherFrame, child: myOtherElement)
    +
    +    layout.sizing = .unionOfChildren
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LayoutWriter : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LifecycleObserver + +
    +
    +
    +
    +
    +
    +

    Allows element lifecycle callbacks to be inserted anywhere into the element tree.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LifecycleObserver : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Opacity + +
    +
    +
    +
    +
    +
    +

    Changes the opacity of the wrapped element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Opacity : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + StackLayout + +
    +
    +
    +
    +
    +
    +

    A layout implementation that linearly lays out an array of children along either the horizontal or vertical axis.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct StackLayout : Layout
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TintAdjustmentMode + +
    +
    +
    +
    +
    +
    +

    TintAdjustmentMode conditionally modifies the tint adjustment mode of its wrapped element.

    +
    +

    Note

    + When a tint adjustment mode is applied, any elements within the wrapped element will adopt the parent’s tint adjustment mode. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct TintAdjustmentMode : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Transformed + +
    +
    +
    +
    +
    +
    +

    Changes the transform of the wrapped element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Transformed : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + UnitPoint + +
    +
    +
    +
    +
    +
    +

    A normalized point in an element’s coordinate space.

    + +

    Use a unit point to represent a location in an element without having to know the element’s +rendered size. The point stores a value in each dimension that indicates the fraction of the +element’s size in that dimension — measured from the element’s origin — where the point appears. +For example, you can create a unit point that represents the center of any element by using the +value 0.5 for each dimension:

    +
    let unitPoint = UnitPoint(x: 0.5, y: 0.5)
    +
    + +

    To project the unit point into the rendered element’s coordinate space, multiply each component +of the unit point with the corresponding component of the element’s size:

    +
    let projectedPoint = CGPoint(
    +    x: unitPoint.x * size.width,
    +    y: unitPoint.y * size.height
    +)
    +
    + +

    You can perform this calculation yourself if you happen to know an element’s size, but Blueprint +typically does this for you to carry out operations that you request, like when you place a +subelement in a custom layout.

    + +

    You can create custom unit points with explicit values, like the example above, or you can use +one of the built-in unit points, like zero, center, or topTrailing. The built-in +values correspond to the alignment positions of the similarly named, built-in Alignment +types.

    +
    +

    Note

    + A unit point with one or more components outside the range [0, 1] projects to a point +outside of the element. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct UnitPoint : Hashable
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    UserInteractionEnabled conditionally enables user interaction of its wrapped element.

    +
    +

    Note

    + When user interaction is disabled, any elements within the wrapped element will become non-interactive. + +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct UserInteractionEnabled : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SizeConstraint + +
    +
    +
    +
    +
    +
    +

    Defines the maximum size for a measurement.

    + +

    Currently this constraint type can only handles layout where +the primary (breaking) axis is horizontal (row in CSS-speak).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct SizeConstraint : Hashable, CustomStringConvertible
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AnimationAttributes + +
    +
    +
    +
    +
    +
    +

    UIView animation configuration values.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AnimationAttributes
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AccessibilityFocus + +
    +
    +
    +
    +
    +
    +

    Enables VoiceOver focus to jump to the wrapped element via a trigger that can be manually fired.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AccessibilityFocus : Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct URLHandlerEnvironmentKey : EnvironmentKey
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EditingMenu + +
    +
    +
    +
    +
    +
    +

    Allows showing the system’s UIMenuController editing menu.

    + +

    You can show the menu upon tap or long press:

    +
    myElement.editingMenu(show: .onLongPress) {
    +    EditingMenuItem.copying("A String")
    +
    +    EditingMenuItem(.select) {
    +        print("Selected!")
    +    }
    +}
    +
    + +

    You can also show the menu as a result of another element’s onTap closure, +using the trigger-based API:

    +
    EditingMenu { menu in
    +    MyRow(text: "Hello, World") {
    +        menu.show()
    +    }
    +} items: {
    +    EditingMenuItem.copying("A String")
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct EditingMenu : Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EditingMenuItem + +
    +
    +
    +
    +
    +
    +

    A single item in an editing menu.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct EditingMenuItem
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TextShadow + +
    +
    +
    +
    +
    +
    +

    Describes a shadow that can be applied to text elements, like Label.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct TextShadow : Hashable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityBlocker.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityBlocker.html new file mode 100644 index 000000000..84d45744d --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityBlocker.html @@ -0,0 +1,805 @@ + + + + AccessibilityBlocker Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AccessibilityBlocker

+
+
+ +
public struct AccessibilityBlocker : Element
+ +
+
+

Blocks all accessibility on the element, so that it is +is no longer an accessibility element, and its children are +hidden from the accessibility system.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The element whose accessibility information will be blocked.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isBlocking + +
    +
    +
    +
    +
    +
    +

    If the AccessibilityBlocker is currently blocking accessibility.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isBlocking: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new AccessibilityBlocker wrapping the provided element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    isBlocking: Bool = true,
    +    wrapping element: Element
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityContainer.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityContainer.html new file mode 100644 index 000000000..8c721ade4 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityContainer.html @@ -0,0 +1,812 @@ + + + + AccessibilityContainer Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AccessibilityContainer

+
+
+ +
public struct AccessibilityContainer : Element
+ +
+
+

Acts as an accessibility container for any accessible subviews.

+ +

Accessible subviews are found using the following algorithm:

+ +

Recurse subviews until a view is found that either

+ +
    +
  • hasisAccessibilityElement set to true or
  • +
+ +

If an accessibility element is found, we add it to the accessibilityElements +and terminate the search down that branch. If a container is found, +the elements returned from the container are added to the accessibilityElements +and the search down that branch is also terminated.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + identifier + +
    +
    +
    +
    +
    +
    +

    An optional accessibilityIdentifier to give the container. Defaults to nil.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var identifier: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new AccessibilityContainer wrapping the provided element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(identifier: String? = nil, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement.html new file mode 100644 index 000000000..2beb14905 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement.html @@ -0,0 +1,1116 @@ + + + + AccessibilityElement Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AccessibilityElement

+
+
+ +
public struct AccessibilityElement : Element
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + label + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var label: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var value: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hint + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var hint: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + identifier + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var identifier: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + traits + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var traits: Set<Trait>
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityFrameSize: CGSize?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityFrameCornerStyle: Box.CornerStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityActivate + +
    +
    +
    +
    +
    +
    +

    Used to provide custom behaviour when activated by voiceover. This will override the default behavior of issuing a tap event at the accessibility activation point. +See Accessibility Activate Documentation for further information.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityActivate: (() -> Bool)?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + customActions + +
    +
    +
    +
    +
    +
    +

    An array containing one or more CustomActions, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var customActions: [CustomAction]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + customContent + +
    +
    +
    +
    +
    +
    +

    An array containing one or more CustomContents, defining additional content associated with the element. Assistive technologies, such as VoiceOver, will announce your custom content to the user at appropriate times.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var customContent: [CustomContent]
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    label: String?,
    +    value: String?,
    +    traits: Set<AccessibilityElement.Trait>,
    +    hint: String? = nil,
    +    identifier: String? = nil,
    +    accessibilityFrameSize: CGSize? = nil,
    +    accessibilityFrameCornerStyle: Box.CornerStyle = .square,
    +    customActions: [AccessibilityElement.CustomAction] = [],
    +    customContent: [AccessibilityElement.CustomContent] = [],
    +    wrapping element: Element,
    +    configure: (inout Self) -> Void = { _ in }
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Trait + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Trait
    +
    extension AccessibilityElement.Trait: Hashable, Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + CustomAction + +
    +
    +
    +
    +
    +
    +

    Used to provide additional functionality to assistive technologies beyond your accessible UI.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct CustomAction : Equatable, Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + CustomContent + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct CustomContent
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/CustomAction.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/CustomAction.html new file mode 100644 index 000000000..ce2678a84 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/CustomAction.html @@ -0,0 +1,839 @@ + + + + CustomAction Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CustomAction

+
+
+ +
public struct CustomAction : Equatable, Hashable
+ +
+
+

Used to provide additional functionality to assistive technologies beyond your accessible UI.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + OnActivation + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias OnActivation = () -> Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    A localized name that discribes the action.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + image + +
    +
    +
    +
    +
    +
    +

    An image representing the action to be shown with some assistive technologies such as Switch Control.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var image: UIImage?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onActivation + +
    +
    +
    +
    +
    +
    +

    A Callback for when the action is activated. This should return a bool indicating success or failure of the action.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onActivation: OnActivation
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(name: String, image: UIImage? = nil, onActivation: @escaping OnActivation)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: AccessibilityElement.CustomAction, rhs: AccessibilityElement.CustomAction) -> Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hash(into:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hash(into hasher: inout Hasher)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/CustomContent.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/CustomContent.html new file mode 100644 index 000000000..bc0d45e7e --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/CustomContent.html @@ -0,0 +1,811 @@ + + + + CustomContent Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CustomContent

+
+
+ +
public struct CustomContent
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Importance + +
    +
    +
    +
    +
    +
    +

    The importance of the content.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Importance : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + label + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var label: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var value: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + importance + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var importance: Importance
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(label: String, value: String? = nil, importance: Importance = .default)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + axCustomContent + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var axCustomContent: AXCustomContent { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/CustomContent/Importance.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/CustomContent/Importance.html new file mode 100644 index 000000000..d2d84bfb7 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/CustomContent/Importance.html @@ -0,0 +1,709 @@ + + + + Importance Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Importance

+
+
+ +
public enum Importance : Equatable
+ +
+
+

The importance of the content.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + default + +
    +
    +
    +
    +
    +
    +

    By default custom content is available through the rotor.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case `default`
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + high + +
    +
    +
    +
    +
    +
    +

    In addtion to being available through the rotor, high importance content will announced in the main VoiceOver utterance. +High Importance content is announced follllowing the accessibilityValue but preceding any accessibilityHint.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case high
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/Trait.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/Trait.html new file mode 100644 index 000000000..994cd92ff --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityElement/Trait.html @@ -0,0 +1,1204 @@ + + + + Trait Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Trait

+
+
+ +
public enum Trait
+
extension AccessibilityElement.Trait: Hashable, Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + IncrementAction + +
    +
    +
    +
    +
    +
    +

    Used in conjunction with UIAccessibilityTrait.adjustable, these will be called to allow accessible adjustment of a value, for example in a slider or stepper control. +See Accessibility Increment Documentation for further information.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias IncrementAction = () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + DecrementAction + +
    +
    +
    +
    +
    +
    +

    Used in conjunction with UIAccessibilityTrait.adjustable, these will be called to allow accessible adjustment of a value, for example in a slider or stepper control. +See Accessibility Decrement Documentation for further information.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias DecrementAction = () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + button + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case button
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + link + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case link
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + header + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case header
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + searchField + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case searchField
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + image + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case image
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + selected + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case selected
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + playsSound + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case playsSound
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyboardKey + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case keyboardKey
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + staticText + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case staticText
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + summaryElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case summaryElement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + notEnabled + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case notEnabled
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updatesFrequently + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case updatesFrequently
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + startsMediaSession + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case startsMediaSession
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + adjustable(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case adjustable(IncrementAction, DecrementAction)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case allowsDirectInteraction
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + causesPageTurn + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case causesPageTurn
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tabBar + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case tabBar
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: AccessibilityElement.Trait, rhs: AccessibilityElement.Trait) -> Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hash(into:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hash(into hasher: inout Hasher)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityFocus.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityFocus.html new file mode 100644 index 000000000..5994bd85b --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityFocus.html @@ -0,0 +1,844 @@ + + + + AccessibilityFocus Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AccessibilityFocus

+
+
+ +
public struct AccessibilityFocus : Element
+ +
+
+

Enables VoiceOver focus to jump to the wrapped element via a trigger that can be manually fired.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The element that will have the focus.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trigger + +
    +
    +
    +
    +
    +
    +

    A object that can be held on to by the caller to manually trigger a focus.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var trigger: Trigger
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new AccessibilityFocus wrapping the provided element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    wrapping wrapped: Element,
    +    trigger: Trigger
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+ +
+
+
+ + +
+ +

Trigger +

+
+
+
    +
  • +
    + + + + Trigger + +
    +
    +
    +
    +
    +
    +

    A trigger that can be used to manually fire an accessibility focus.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Trigger
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityFocus/Trigger.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityFocus/Trigger.html new file mode 100644 index 000000000..8e6e11a55 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AccessibilityFocus/Trigger.html @@ -0,0 +1,796 @@ + + + + Trigger Class Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Trigger

+
+
+ +
public final class Trigger
+ +
+
+

A trigger that can be used to manually fire an accessibility focus.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + notificationType + +
    +
    +
    +
    +
    +
    +

    The type of accessibility notification that will be triggered.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var notificationType: UIAccessibility.Notification
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + identifier + +
    +
    +
    +
    +
    +
    +

    An optional identifier for the trigger.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var identifier: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new trigger for the purpose of changing accessibility focus.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    notificationType: UIAccessibility.Notification = .layoutChanged,
    +    identifier: AnyHashable? = nil
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + notificationType + + +
    +

    Type of accessibility notification to trigger. Defaults to .layoutChanged. Limited to .layoutChanged or .screenChanged.

    +
    +
    + + identifier + + +
    +

    An optional identifier for the trigger. Defaults to nil.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + focus() + +
    +
    +
    +
    +
    +
    +

    Manually fire the trigger

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func focus()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AdaptedEnvironment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AdaptedEnvironment.html new file mode 100644 index 000000000..4360363d1 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AdaptedEnvironment.html @@ -0,0 +1,947 @@ + + + + AdaptedEnvironment Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AdaptedEnvironment

+
+
+ +
public struct AdaptedEnvironment : Element
+ +
+
+

Wraps an element tree with a modified environment.

+ +

By specifying environmental values with this element, all child elements nested +will automatically inherit those values automatically. Values can be changed +anywhere in a sub-tree by inserting another AdaptedEnvironment element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Adapter + +
    +
    +
    +
    +
    +
    +

    Takes in a mutable Environment which can be mutated to add or override values.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Adapter = (inout Environment) -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(by:wrapping:) + +
    +
    +
    +
    +
    +
    +

    Wraps an element with an environment that is modified using the given +configuration block.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    by adapt: @escaping Adapter,
    +    wrapping wrapped: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + by + + +
    +

    A block that will set environmental values.

    +
    +
    + + wrapping + + +
    +

    The element to be wrapped.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Wraps an element with an environment that is modified for a single key and value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Key>(
    +    key: Key.Type,
    +    value: Key.Value,
    +    wrapping child: Element
    +) where Key: EnvironmentKey
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + key + + +
    +

    The environment key to modify.

    +
    +
    + + value + + +
    +

    The new environment value to cascade.

    +
    +
    + + wrapping + + +
    +

    The element to be wrapped.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Wraps an element with an environment that is modified for a single value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Value>(
    +    keyPath: WritableKeyPath<Environment, Value>,
    +    value: Value,
    +    wrapping child: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + keyPath + + +
    +

    The keypath of the environment value to modify.

    +
    +
    + + value + + +
    +

    The new environment value to cascade.

    +
    +
    + + wrapping + + +
    +

    The element to be wrapped.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Aligned.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Aligned.html new file mode 100644 index 000000000..376d902d4 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Aligned.html @@ -0,0 +1,922 @@ + + + + Aligned Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Aligned

+
+
+ +
public struct Aligned : Element
+ +
+
+

Aligns a content element within itself. The vertical and horizontal alignment may be set independently.

+ +

When using alignment mode .fill, the content is scaled to the width or height of the Aligned element.

+ +

For other modes, the size of the content element is determined by calling measure(in:) +on the content element – even if that size is larger than the wrapping element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + VerticalAlignment + +
    +
    +
    +
    +
    +
    +

    The possible vertical alignment values.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum VerticalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + HorizontalAlignment + +
    +
    +
    +
    +
    +
    +

    The possible horizontal alignment values.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The content element to be aligned.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + verticalAlignment + +
    +
    +
    +
    +
    +
    +

    The vertical alignment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var verticalAlignment: VerticalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontalAlignment + +
    +
    +
    +
    +
    +
    +

    The horizontal alignment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var horizontalAlignment: HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes an Aligned with the given content element and alignments.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    vertically verticalAlignment: VerticalAlignment = .center,
    +    horizontally horizontalAlignment: HorizontalAlignment = .center,
    +    wrapping wrappedElement: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + vertically + + +
    +

    The vertical alignment. Defaults to centered.

    +
    +
    + + horizontally + + +
    +

    The horizontal alignment. Defaults to centered.

    +
    +
    + + wrapping + + +
    +

    The content element to be aligned.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Aligned/HorizontalAlignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Aligned/HorizontalAlignment.html new file mode 100644 index 000000000..f6c34bfbe --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Aligned/HorizontalAlignment.html @@ -0,0 +1,764 @@ + + + + HorizontalAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

HorizontalAlignment

+
+
+ +
public enum HorizontalAlignment
+ +
+
+

The possible horizontal alignment values.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    Aligns the content to the leading edge of the containing element. +In left-to-right languages, this is the left edge.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case leading
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Centers the content horizontally.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    Aligns the content to the trailing edge of the containing element. +In left-to-right languages, this is the right edge.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case trailing
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    The content fills the full horizontal width of the containing element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Aligned/VerticalAlignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Aligned/VerticalAlignment.html new file mode 100644 index 000000000..26bdeec94 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Aligned/VerticalAlignment.html @@ -0,0 +1,762 @@ + + + + VerticalAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

VerticalAlignment

+
+
+ +
public enum VerticalAlignment
+ +
+
+

The possible vertical alignment values.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    Aligns the content to the top edge of the containing element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case top
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Centers the content vertically.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    Aligns the content to the bottom edge of the containing element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottom
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    The content fills the full vertical height of the containing element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Alignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Alignment.html new file mode 100644 index 000000000..772b827d8 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Alignment.html @@ -0,0 +1,978 @@ + + + + Alignment Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Alignment

+
+
+ +
public struct Alignment : Equatable
+ +
+
+

An alignment in both axes.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    A guide marking the center of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    A guide marking the leading edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let leading: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    A guide marking the trailing edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let trailing: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    A guide marking the top edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    A guide marking the bottom edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topLeading + +
    +
    +
    +
    +
    +
    +

    A guide marking the top and leading edges of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topLeading: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topTrailing + +
    +
    +
    +
    +
    +
    +

    A guide marking the top and trailing edges of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topTrailing: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomLeading + +
    +
    +
    +
    +
    +
    +

    A guide marking the bottom and leading edges of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomLeading: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomTrailing + +
    +
    +
    +
    +
    +
    +

    A guide marking the bottom and trailing edges of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomTrailing: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontal + +
    +
    +
    +
    +
    +
    +

    The alignment on the horizontal axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var horizontal: HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + vertical + +
    +
    +
    +
    +
    +
    +

    The alignment on the vertical axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var vertical: VerticalAlignment
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates an instance with the given horizontal and vertical alignments.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(horizontal: HorizontalAlignment, vertical: VerticalAlignment)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AnimationAttributes.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AnimationAttributes.html new file mode 100644 index 000000000..f317b96c6 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AnimationAttributes.html @@ -0,0 +1,791 @@ + + + + AnimationAttributes Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AnimationAttributes

+
+
+ +
public struct AnimationAttributes
+ +
+
+

UIView animation configuration values.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + duration + +
    +
    +
    +
    +
    +
    +

    The duration of the animation.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var duration: TimeInterval
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + curve + +
    +
    +
    +
    +
    +
    +

    The timing curve of the animation.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var curve: UIView.AnimationCurve
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + allowUserInteraction + +
    +
    +
    +
    +
    +
    +

    Whether the view supports user interaction during the animation.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var allowUserInteraction: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + default + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let `default`: `Self`
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    duration: TimeInterval = 0.2,
    +    curve: UIView.AnimationCurve = .easeInOut,
    +    allowUserInteraction: Bool = true
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AspectRatio.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AspectRatio.html new file mode 100644 index 000000000..765793301 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AspectRatio.html @@ -0,0 +1,812 @@ + + + + AspectRatio Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AspectRatio

+
+
+ +
public struct AspectRatio
+ +
+
+

Represents an a proportional relationship between width and height.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + square + +
    +
    +
    +
    +
    +
    +

    A 1:1 aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let square: AspectRatio
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ratio + +
    +
    +
    +
    +
    +
    +

    The width:height ratio value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var ratio: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(width:height:) + +
    +
    +
    +
    +
    +
    +

    Initializes with a width & height ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(width: CGFloat, height: CGFloat)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + width + + +
    +

    The relative width of the ratio.

    +
    +
    + + height + + +
    +

    The relative height of the ratio.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(ratio:) + +
    +
    +
    +
    +
    +
    +

    Initializes with a specific ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(ratio: CGFloat)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + ratio + + +
    +

    The width:height ratio.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedLabel.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedLabel.html new file mode 100644 index 000000000..f847e67de --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedLabel.html @@ -0,0 +1,1215 @@ + + + + AttributedLabel Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AttributedLabel

+
+
+ +
public struct AttributedLabel : Element, Hashable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + attributedText + +
    +
    +
    +
    +
    +
    +

    The attributed text to render in the label.

    + +

    If you customize the line break mode using an NSParagraphStyle, the mode will be normalized +based on the number of lines allowed. This is because some line break modes are incompatible +with multi-line text rendering in TextKit, which is used to detect where links are in the text. +Some modes also break line height adjustment in single-line labels, so these are also normalized.

    + +

    Specifically:

    + +
      +
    • 1 line labels with a mode of byCharWrapping or byWordWrapping will be normalized to byClipping.
    • +
    • Multiline labels with a mode of byTruncatingHead or byTruncatingMiddle +will be normalized to byTruncatingTail.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributedText: NSAttributedString
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + numberOfLines + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var numberOfLines: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shadow + +
    +
    +
    +
    +
    +
    +

    A shadow to display behind the label’s text. Defaults to no shadow.

    +
    +

    Note

    + This shadow is applied using the backing view’s CALayer, and will affect the +entire label. To apply a shadow to only a portion of text, you can instead set +NSAttributedString.Key.shadow on the string, but note that those shadows may be clipped +by the bounds of the backing view. + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadow: TextShadow?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + textRectOffset + +
    +
    +
    +
    +
    +
    +

    An offset that will be applied to the rect used by drawText(in:).

    + +

    This can be used to adjust the positioning of text within each line’s frame, such as adjusting +the way text is distributed within the line height.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var textRectOffset: UIOffset
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Determines if the label should be included when navigating the UI via accessibility.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isAccessibilityElement: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A Boolean value that determines whether the label reduces the text’s font +size to fit the title string into the label’s bounding rectangle.

    + +

    Normally, the label draws the text with the font you specify in the font property. +If this property is true, and the text in the text property exceeds the label’s bounding rectangle, +the label reduces the font size until the text fits or it has scaled the font down to the minimum +font size. The default value for this property is false.

    + +

    If you change it to true, be sure that you also set an appropriate minimum +font scale by modifying the minimumScaleFactor property.

    + +

    This autoshrinking behavior is only intended for use with a single-line label.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var adjustsFontSizeToFitWidth: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimumScaleFactor + +
    +
    +
    +
    +
    +
    +

    The minimum scale factor for the label’s text.

    + +

    If the adjustsFontSizeToFitWidth is true, use this property to specify the +smallest multiplier for the current font size that yields an acceptable +font size for the label’s text.

    + +

    If you specify a value of 0 for this property, the label doesn’t scale the text down. +The default value of this property is 0.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumScaleFactor: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A Boolean value that determines whether the label tightens text before truncating.

    + +

    When the value of this property is true, the label tightens intercharacter spacing +of its text before allowing any truncation to occur. The label determines the +maximum amount of tightening automatically based on the font, current line width, +line break mode, and other relevant information.

    + +

    This autoshrinking behavior is only intended for use with a single-line label.

    + +

    The default value of this property is false.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var allowsDefaultTighteningForTruncation: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityTraits + +
    +
    +
    +
    +
    +
    +

    A set of accessibility traits that should be applied to the label, these will be merged with any existing traits.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityTraits: Set<AccessibilityElement.Trait>?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityHint + +
    +
    +
    +
    +
    +
    +

    A localized string that describes the result of performing an action on the element, when the result is non-obvious.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityHint: String?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    An array containing one or more AccessibilityElement.CustomActions, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityCustomActions: [AccessibilityElement.CustomAction]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + linkDetectionTypes + +
    +
    +
    +
    +
    +
    +

    A set of data types to detect and automatically link in the label.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var linkDetectionTypes: Set<LinkDetectionType>
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + linkAttributes + +
    +
    +
    +
    +
    +
    +

    A set of attributes to apply to links in the string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var linkAttributes: [NSAttributedString.Key : AnyHashable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + activeLinkAttributes + +
    +
    +
    +
    +
    +
    +

    A set of attributes to apply to links when they are touched.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var activeLinkAttributes: [NSAttributedString.Key : AnyHashable]
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(attributedText: NSAttributedString, configure: (inout `Self`) -> Void = { _ in })
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+ +
+
+
+ + +
+ +

Models +

+
+
+
    +
  • +
    + + + + LinkDetectionType + +
    +
    +
    +
    +
    +
    +

    Types of data that can be detected and automatically turned into links.

    + +

    Corresponds to NSTextCheckingResult.CheckingType types.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LinkDetectionType : Equatable, Hashable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedLabel/LinkDetectionType.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedLabel/LinkDetectionType.html new file mode 100644 index 000000000..68ddb658f --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedLabel/LinkDetectionType.html @@ -0,0 +1,764 @@ + + + + LinkDetectionType Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LinkDetectionType

+
+
+ +
public enum LinkDetectionType : Equatable, Hashable
+ +
+
+

Types of data that can be detected and automatically turned into links.

+ +

Corresponds to NSTextCheckingResult.CheckingType types.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + date + +
    +
    +
    +
    +
    +
    +

    Detect date strings. Tapping a date opens the calendar to that date.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case date
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + address + +
    +
    +
    +
    +
    +
    +

    Detect addresses. Tapping the address opens Maps with that address.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case address
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + link + +
    +
    +
    +
    +
    +
    +

    Detect URLs. Tapping the link opens the URL.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case link
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + phoneNumber + +
    +
    +
    +
    +
    +
    +

    Detect phone numbers. Tapping the phone number prompts the user to call it.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case phoneNumber
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedText.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedText.html new file mode 100644 index 000000000..6abcc42b0 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedText.html @@ -0,0 +1,959 @@ + + + + AttributedText Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AttributedText

+
+
+ +
@dynamicMemberLookup
+public struct AttributedText
+ +
+
+

AttributedText allows you to apply strongly-typed attributes to strings (much like the AttributedString type +introduced in iOS 15). You can then access the attributedString property to get an attributed string with those +attributes applied.

+ +

For example:

+
var text = AttributedText(string: "Hello, world")
+// Apply a font to the entire range
+text.font = .systemFont(ofSize: 20)
+
+// Apply a color to part of the string
+let range = text.string.range(of: "world")!
+text[range].color = .blue
+
+// Render the attributed text
+let label = AttributedLabel(attributedText: text.attributedString)
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + string + +
    +
    +
    +
    +
    +
    +

    The wrapped string, with no attributes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let string: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributedString + +
    +
    +
    +
    +
    +
    +

    An NSAttributedString representation of the attributed text.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributedString: NSAttributedString { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + runs + +
    +
    +
    +
    +
    +
    +

    An iterable view into segments of the attributed string, each of which indicates where a run of identical +attributes begins or ends.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var runs: [Run] { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Create some AttributedText from a plain string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ string: String)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Create some AttributedText from an attributed string. The attributes are preserved.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ attributedString: NSAttributedString)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + range(of:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func range(of aString: some StringProtocol) -> Range<String.Index>?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Dynamic member getter or setter for any attributes defined on TextAttributeContainer. +Applies the attribute to the entire range of text, for example:

    +
    var text = AttributedText(string: "Hello, world")
    +text.font = .systemFont(ofSize: 20)
    +
    + +

    Note that only attributes applying to the entire range will be returned. For example, if the text +has two different font attributes, then text.font will be nil.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Value>(dynamicMember keyPath: WritableKeyPath<TextAttributeContainer, Value>) -> Value { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Get or set a TextAttributeContainer for the provided range of text. This allows you to set attributes +for specific ranges using strong types:

    +
    var text = AttributedText(string: "Hello, world")
    +let range = text.string.range(of: "Hello")!
    +text[range].font = .systemFont(ofSize: 20)
    +
    + +

    Note that the returned TextAttributeContainer will only contain attributes that apply to the entire subscript +range. (Setting an attribute will set it across the subscript range regardless of any existing contents).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<R>(range: R) -> TextAttributeContainer where R : RangeExpression, R.Bound == String.Index { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +(_:_:) + +
    +
    +
    +
    +
    +
    +

    Concatenate two pieces of AttributedText together.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func + (lhs: AttributedText, rhs: AttributedText) -> AttributedText
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Run + +
    +
    +
    +
    +
    +
    +

    A Run represents a range of identical attributes in the attributed text.

    + +

    You can access any properties of TextAttributeContainer on this type using dynamic member lookup.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @dynamicMemberLookup
    +public struct Run
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedText/Run.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedText/Run.html new file mode 100644 index 000000000..586cc18fb --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/AttributedText/Run.html @@ -0,0 +1,741 @@ + + + + Run Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Run

+
+
+ +
@dynamicMemberLookup
+public struct Run
+ +
+
+

A Run represents a range of identical attributes in the attributed text.

+ +

You can access any properties of TextAttributeContainer on this type using dynamic member lookup.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + range + +
    +
    +
    +
    +
    +
    +

    The range of the run of attributes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let range: Range<String.Index>
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    The attributes that apply to this run.

    + +

    Note that you can access properties of the attribute container directly on the Run itself, since it +implements dynamic member look up.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let attributes: TextAttributeContainer
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Dynamic member getter for the TextAttributeContainer of this run.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Value>(dynamicMember keyPath: KeyPath<TextAttributeContainer, Value>) -> Value { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/BlueprintViewRenderMetrics.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/BlueprintViewRenderMetrics.html new file mode 100644 index 000000000..3c3237b9d --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/BlueprintViewRenderMetrics.html @@ -0,0 +1,788 @@ + + + + BlueprintViewRenderMetrics Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

BlueprintViewRenderMetrics

+
+
+ +
public struct BlueprintViewRenderMetrics
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + layoutMode + +
    +
    +
    +
    +
    +
    +

    The layout mode used to render the view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutMode: LayoutMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + startTimestamp + +
    +
    +
    +
    +
    +
    +

    The mach time in seconds at which the view render started (from CACurrentMediaTime()).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var startTimestamp: TimeInterval
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + totalDuration + +
    +
    +
    +
    +
    +
    +

    The total time it took to apply a new element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var totalDuration: TimeInterval
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutDuration + +
    +
    +
    +
    +
    +
    +

    The time it took to lay out and measure the new element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutDuration: TimeInterval
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + viewUpdateDuration + +
    +
    +
    +
    +
    +
    +

    The time it took to update the on-screen views for the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var viewUpdateDuration: TimeInterval
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box.html new file mode 100644 index 000000000..de569151c --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box.html @@ -0,0 +1,1038 @@ + + + + Box Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Box

+
+
+ +
public struct Box : Element
+ +
+
+

A simple element that wraps a child element and adds visual styling including +background color.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + backgroundColor + +
    +
    +
    +
    +
    +
    +

    The background color to show in the box.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var backgroundColor: UIColor
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + cornerStyle + +
    +
    +
    +
    +
    +
    +

    The corner style to apply, eg rounded, capsule, or normal, square corners.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var cornerStyle: CornerStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + cornerCurve + +
    +
    +
    +
    +
    +
    +

    How to style the curves when cornerStyle is non-square.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var cornerCurve: CornerCurve
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + borderStyle + +
    +
    +
    +
    +
    +
    +

    The border to apply around the edges of the box.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var borderStyle: BorderStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shadowStyle + +
    +
    +
    +
    +
    +
    +

    The shadow style to apply to the outside of the box.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowStyle: ShadowStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + clipsContent + +
    +
    +
    +
    +
    +
    +

    If content placed within the box should be clipped.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var clipsContent: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    backgroundColor: UIColor = .clear,
    +    cornerStyle: CornerStyle = .square,
    +    cornerCurve: CornerCurve = .circular,
    +    borderStyle: BorderStyle = .none,
    +    shadowStyle: ShadowStyle = .none,
    +    clipsContent: Bool = false,
    +    wrapping element: Element? = nil
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + CornerStyle + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum CornerStyle : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + CornerCurve + +
    +
    +
    +
    +
    +
    +

    Specifies the curve style when showing rounded corners on a Box.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum CornerCurve : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + BorderStyle + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum BorderStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ShadowStyle + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ShadowStyle
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/BorderStyle.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/BorderStyle.html new file mode 100644 index 000000000..c4c4607ad --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/BorderStyle.html @@ -0,0 +1,705 @@ + + + + BorderStyle Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

BorderStyle

+
+
+ +
public enum BorderStyle
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + none + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case none
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + solid(color:width:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case solid(color: UIColor, width: CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/CornerCurve.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/CornerCurve.html new file mode 100644 index 000000000..108597489 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/CornerCurve.html @@ -0,0 +1,711 @@ + + + + CornerCurve Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CornerCurve

+
+
+ +
public enum CornerCurve : Equatable
+ +
+
+

Specifies the curve style when showing rounded corners on a Box.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + circular + +
    +
    +
    +
    +
    +
    +

    Provides a standard-style corner radius as you would see in design tools like Figma.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case circular
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + continuous + +
    +
    +
    +
    +
    +
    +

    Provides an iOS icon-style corner radius.

    +

    Note

    + +

    Only appears on iOS 13 and later. Before iOS 13, circular corners will be displayed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case continuous
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/CornerStyle.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/CornerStyle.html new file mode 100644 index 000000000..dcdd04f18 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/CornerStyle.html @@ -0,0 +1,758 @@ + + + + CornerStyle Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

CornerStyle

+
+
+ +
public enum CornerStyle : Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + square + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case square
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + capsule + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case capsule
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case rounded(radius: CGFloat, corners: Corners = .all)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Corners + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Corners : OptionSet, Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/CornerStyle/Corners.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/CornerStyle/Corners.html new file mode 100644 index 000000000..2cf304d79 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/CornerStyle/Corners.html @@ -0,0 +1,939 @@ + + + + Corners Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Corners

+
+
+ +
public struct Corners : OptionSet, Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + rawValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let rawValue: UInt8
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(rawValue:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(rawValue: UInt8)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topLeft + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topLeft: Box.CornerStyle.Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topRight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topRight: Box.CornerStyle.Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomLeft + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomLeft: Box.CornerStyle.Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomRight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomRight: Box.CornerStyle.Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + all + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let all: Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + left + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let left: Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: Corners
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + right + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let right: Corners
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/ShadowStyle.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/ShadowStyle.html new file mode 100644 index 000000000..f9f8d17b9 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Box/ShadowStyle.html @@ -0,0 +1,705 @@ + + + + ShadowStyle Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ShadowStyle

+
+
+ +
public enum ShadowStyle
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + none + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case none
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case simple(radius: CGFloat, opacity: CGFloat, offset: CGSize, color: UIColor)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Builder.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Builder.html new file mode 100644 index 000000000..f58284c5f --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Builder.html @@ -0,0 +1,946 @@ + + + + Builder Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Builder

+
+
+ +
@resultBuilder
+public struct Builder<Child>
+ +
+
+

Generic result builder for converting blocks of Child... into [Child].

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Children + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Children = [Child]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildBlock(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildBlock(_ children: Children...) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildOptional(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildOptional(_ children: Children?) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildEither(first:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildEither(first: Children) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildEither(second:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildEither(second: Children) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ child: Child) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    +

    This function is disfavored in case a builder wants to offer additional buildExpression functions to support +multiple types in their builders. @_disfavoredOverload allows the compiler to choose the other function when +nil is built, instead of it being ambiguous.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @_disfavoredOverload
    +public static func buildExpression(_ child: Child?) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildArray(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildArray(_ components: [Children]) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildArray(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildArray(_ components: Children) -> Children
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildLimitedAvailability(_ component: Children) -> Children
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buildExpression(_:) + +
    +
    +
    +
    +
    +
    +

    Allow for an array of Child to be flattened into the overall result.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func buildExpression(_ children: [Child]) -> Children
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Button.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Button.html new file mode 100644 index 000000000..a5ce11475 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Button.html @@ -0,0 +1,837 @@ + + + + Button Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Button

+
+
+ +
public struct Button : Element
+ +
+
+

An element that wraps a child element in a button that mimics a UIButton with the .system style. That is, when +highlighted (or disabled), it fades its contents to partial alpha.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isEnabled: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onTap + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onTap: () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimumTappableSize + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumTappableSize: CGSize
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(isEnabled: Bool = true, onTap: @escaping () -> Void = {}, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Centered.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Centered.html new file mode 100644 index 000000000..162c020d9 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Centered.html @@ -0,0 +1,738 @@ + + + + Centered Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Centered

+
+
+ +
public struct Centered : ProxyElement
+ +
+
+

Centers a content element within itself.

+ +

The size of the content element is determined by calling measure(in:) on +the content element – even if that size is larger than the wrapping Centered +element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The content element to be centered.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a Centered element with the given content element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ wrapped: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + elementRepresentation + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var elementRepresentation: Element { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Column.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Column.html new file mode 100644 index 000000000..6bfe6a33d --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Column.html @@ -0,0 +1,997 @@ + + + + Column Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Column

+
+
+ +
public struct Column : StackElement
+ +
+
+

Displays a list of items in a linear vertical layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + ColumnAlignment + +
    +
    +
    +
    +
    +
    +

    Describes how the column’s children will be horizontally aligned.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ColumnAlignment : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [(element: Element, traits: StackLayout.Traits, key: AnyHashable?)]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layout + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public private(set) var layout: StackLayout { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a Column, using result builder syntax. Columns display a list of items in a vertical +stack.

    +
    Column {
    +    Label(text: "Welcome")
    +
    +    TextField(text: username)
    +    TextField(text: password)
    +
    +    Button(
    +        onTap: handleSignIn,
    +        wrapping: Label(text: "Sign In")
    +    )
    +}
    +
    + +

    By default, each item in the column will be stretched or compressed with equal priority in +the event of overflow or underflow. You can control this behavior by adding a +stackLayoutChild modifier to an item.

    +
    Column {
    +    ImportantHeader()
    +        .stackLayoutChild(priority: .fixed)
    +
    +    LessImportantContent()
    +}
    +
    + +

    You can also use this modifier to add keys and alignment guides. See StackElement.add for +more information.

    +

    See Also

    + +

    StackElement.add()

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    alignment: ColumnAlignment = .leading,
    +    underflow: StackLayout.UnderflowDistribution = .spaceEvenly,
    +    overflow: StackLayout.OverflowDistribution = .condenseProportionally,
    +    minimumSpacing: CGFloat = 0,
    +    @ElementBuilder<StackLayout.Child> elements: () -> [StackLayout.Child]
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + +
    + + alignment + + +
    +

    Specifies how children will be aligned horizontally. Default: .leading

    +
    +
    + + underflow + + +
    +

    Determines the layout when there is extra free space available. Default: +.spaceEvenly

    +
    +
    + + overflow + + +
    +

    Determines the layout when there is not enough space to fit all children as +measured. Default: .condenseProportionally

    +
    +
    + + minimumSpacing + + +
    +

    Spacing in between elements. Default: 0

    +
    +
    + + elements + + +
    +

    A block containing all elements to be included in the stack.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + verticalUnderflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var verticalUnderflow: StackLayout.UnderflowDistribution { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + verticalOverflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var verticalOverflow: StackLayout.OverflowDistribution { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontalAlignment + +
    +
    +
    +
    +
    +
    +

    Specifies how children will be aligned horizontally.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var horizontalAlignment: ColumnAlignment { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumVerticalSpacing: CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Column/ColumnAlignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Column/ColumnAlignment.html new file mode 100644 index 000000000..5f780edc7 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Column/ColumnAlignment.html @@ -0,0 +1,793 @@ + + + + ColumnAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ColumnAlignment

+
+
+ +
public enum ColumnAlignment : Equatable
+ +
+
+

Describes how the column’s children will be horizontally aligned.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    Children will be stretched to fit the horizontal size of the column.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + align(to:) + +
    +
    +
    +
    +
    +
    +

    Using the specified alignment, children will be aligned relatively to each other, and +then all the contents will be aligned to the column’s bounding box.

    + +

    This case can be used for custom alignments. For common alignments you can use the +existing static instancesleading, center, and trailing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case align(to: HorizontalAlignment)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the leading edge of the column.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let leading: Column.ColumnAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Children will be horizontally centered in the column.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: Column.ColumnAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the trailing edge of the column.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let trailing: Column.ColumnAlignment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedAspectRatio.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedAspectRatio.html new file mode 100644 index 000000000..5644c8d7c --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedAspectRatio.html @@ -0,0 +1,886 @@ + + + + ConstrainedAspectRatio Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ConstrainedAspectRatio

+
+
+ +
public struct ConstrainedAspectRatio : Element
+ +
+
+

Constrains the size of the content element to an aspect ratio.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + ContentMode + +
    +
    +
    +
    +
    +
    +

    Represents how the content should size itself relative to its parent.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ContentMode : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The element being constrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + aspectRatio + +
    +
    +
    +
    +
    +
    +

    The target aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var aspectRatio: AspectRatio
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentMode + +
    +
    +
    +
    +
    +
    +

    Whether the aspect ratio should be reached by expanding the content element’s size to fill its parent +or shrinking it to fit.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentMode: ContentMode
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes with the given properties.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(aspectRatio: AspectRatio, contentMode: ContentMode = .fitContent, wrapping wrappedElement: Element)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + aspectRatio + + +
    +

    The aspect ratio that the content size should match.

    +
    +
    + + contentMode + + +
    +

    How the content should size itself relative to its parent.

    +
    +
    + + wrapping + + +
    +

    The content element.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedAspectRatio/ContentMode.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedAspectRatio/ContentMode.html new file mode 100644 index 000000000..f974cbf50 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedAspectRatio/ContentMode.html @@ -0,0 +1,789 @@ + + + + ContentMode Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ContentMode

+
+
+ +
public enum ContentMode : Equatable
+ +
+
+

Represents how the content should size itself relative to its parent.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + fillParent + +
    +
    +
    +
    +
    +
    +

    The content will be sized to fill its parent while +maintaining the specified aspect ratio.

    + +

    In legacy layout mode, if the parent is unconstrained in all dimensions, +the content size will be used for measurement and will behave like fitContent. If the +parent is unconstrained in one dimension, the element will fill the constrained +dimension.

    + +

    In caffeinated, if the parent is unconstrained in any dimension, this +element will report a size of infinity.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fillParent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fitParent + +
    +
    +
    +
    +
    +
    +

    The content will be sized to fit within its parent while maintaining the specified +aspect ratio.

    + +

    If the parent is unconstrained in one dimension, the element will fit the constrained +dimension.

    + +

    In legacy layout mode, if the parent is unconstrained in all dimensions, +the content size will be used for measurement and will behave like fitContent.

    + +

    In caffeinated layout mode, if the parent is unconstrained in both +dimensions, this element will report a size of infinity.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fitParent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fitContent + +
    +
    +
    +
    +
    +
    +

    The content will grow in whichever dimension is needed to maintain the aspect ratio, +while ensuring the content still fits.

    + +

    This mode does not take the parents applied size constraint into account, so the parent +may ultimately layout the element without the constrained aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fitContent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shrinkContent + +
    +
    +
    +
    +
    +
    +

    The content will shrink in whichever dimension is needed to maintain the aspect ratio, +meaning it may be smaller in one dimension than the measured size.

    + +

    This mode does not take the parents applied size constraint into account, so the parent +may ultimately layout the element without the constrained aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case shrinkContent
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedSize.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedSize.html new file mode 100644 index 000000000..d3992dde2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedSize.html @@ -0,0 +1,855 @@ + + + + ConstrainedSize Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ConstrainedSize

+
+
+ +
public struct ConstrainedSize : Element
+ +
+
+

Constrains the measured size of the contained element in the ranges specified by the width and height properties.

+ +

There are several constraint types available for each axis. See ConstrainedSize.Constraint for a full list and in-depth +descriptions of each.

+

Notes

+ +

An important note is that the constraints of ConstrainedSize are authoritative during measurement. For example, +if your ConstrainedSize specifies .atLeast(300) for width, and the ConstrainedSize is asked to measure within +a SizeConstraint that is at most 100 points wide, the returned measurement will still be 300 points. The same goes for the +height of the ConstrainedSize.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The element whose measurement will be constrained by the ConstrainedSize.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + width + +
    +
    +
    +
    +
    +
    +

    The constraint to place on the width of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var width: Constraint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + height + +
    +
    +
    +
    +
    +
    +

    The constraint to place on the height of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var height: Constraint
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new ConstrainedSize with the provided constraint options.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    width: Constraint = .unconstrained,
    +    height: Constraint = .unconstrained,
    +    wrapping element: Element
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Constraint + +
    +
    +
    +
    +
    +
    +

    The available ways to constrain the measurement of a given axis within a ConstrainedSize element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Constraint : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedSize/Constraint.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedSize/Constraint.html new file mode 100644 index 000000000..bc742ca01 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ConstrainedSize/Constraint.html @@ -0,0 +1,791 @@ + + + + Constraint Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Constraint

+
+
+ +
public enum Constraint : Equatable
+ +
+
+

The available ways to constrain the measurement of a given axis within a ConstrainedSize element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + unconstrained + +
    +
    +
    +
    +
    +
    +

    There is no constraint for this axis – the natural size of the element will be used.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case unconstrained
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + atMost(_:) + +
    +
    +
    +
    +
    +
    +

    The measured size for this axis will be no greater than the value provided.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case atMost(CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + atLeast(_:) + +
    +
    +
    +
    +
    +
    +

    The measured size for this axis will be no less than the value provided.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case atLeast(CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + within(_:) + +
    +
    +
    +
    +
    +
    +

    The measured size for this axis will be within the range provided. +If the measured value is below the bottom of the range, the lower value will be used. +If the measured value is above the top of the range, the lower value will be used.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case within(ClosedRange<CGFloat>)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + absolute(_:) + +
    +
    +
    +
    +
    +
    +

    The measured size for this axis will be exactly the value provided.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case absolute(CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate.html new file mode 100644 index 000000000..34b25f962 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate.html @@ -0,0 +1,937 @@ + + + + Decorate Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Decorate

+
+
+ +
public struct Decorate : ProxyElement
+ +
+
+

Places a decoration element behind or in front of the given wrapped element, +and positions it according to the position parameter.

+ +

The size and position of the element is determined only by the wrapped +element, the decoration element does not affect the layout at all.

+

Example

+ +

The arrows represent the measured size of the element for layout purposes.

+
┌───────────────────┐     ┌──────┐
+    Decoration                
+ ┏━━━━━━━━━━━━━━━┓           ┣━━━━━━━━━━┓   
+                     └─┳────┘             
+     Wrapped               Wrapped       
+                                         
+ ┗━━━━━━━━━━━━━━━┛       ┗━━━━━━━━━━━━━━━┛   
+└───────────────────┘
+  ◀───────────────▶         ◀───────────────▶
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The element which provides the sizing and measurement. +The sizing and position of the Decorate element is determined +by this element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + decoration + +
    +
    +
    +
    +
    +
    +

    The element which is used to draw the decoration. +It does not affect sizing or positioning.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var decoration: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layering + +
    +
    +
    +
    +
    +
    +

    Where the decoration should be positioned in the z-axis: Above or below the wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layering: Layering
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + position + +
    +
    +
    +
    +
    +
    +

    How the decoration should be positioned in respect to the wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var position: Position
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new instance with the provided overflow, background, and wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    layering: Layering,
    +    position: Position,
    +    wrapping: Element,
    +    decoration: Element
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

ProxyElement +

+
+
+
    +
  • +
    + + + + elementRepresentation + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var elementRepresentation: Element { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Layering + +
    +
    +
    +
    +
    +
    +

    If the decoration should be positioned above or below the content element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Layering : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Corner + +
    +
    +
    +
    +
    +
    +

    What corner the decoration element should be positioned in.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Corner : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Position + +
    +
    +
    +
    +
    +
    +

    How to position the decoration element relative to the content element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Position
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Corner.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Corner.html new file mode 100644 index 000000000..d65e7e676 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Corner.html @@ -0,0 +1,758 @@ + + + + Corner Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Corner

+
+
+ +
public enum Corner : Equatable
+ +
+
+

What corner the decoration element should be positioned in.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + topLeft + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case topLeft
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topRight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case topRight
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomRight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottomRight
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomLeft + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottomLeft
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Layering.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Layering.html new file mode 100644 index 000000000..0ea29e35e --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Layering.html @@ -0,0 +1,708 @@ + + + + Layering Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Layering

+
+
+ +
public enum Layering : Equatable
+ +
+
+

If the decoration should be positioned above or below the content element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + above + +
    +
    +
    +
    +
    +
    +

    The decoration is displayed above the content element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case above
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + below + +
    +
    +
    +
    +
    +
    +

    The decoration is displayed below the content element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case below
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Position.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Position.html new file mode 100644 index 000000000..595727485 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Position.html @@ -0,0 +1,904 @@ + + + + Position Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Position

+
+
+ +
public struct Position
+ +
+
+

How to position the decoration element relative to the content element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + inset(_:) + +
    +
    +
    +
    +
    +
    +

    Insets the decoration element on each edge by the amount specified by +the UIEdgeInsets property.

    + +

    A positive value for an edge expands the decoration outside of that edge, +whereas a negative inset pushes the the decoration inside that edge.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func inset(_ inset: UIEdgeInsets) -> Decorate.Position
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(_:) + +
    +
    +
    +
    +
    +
    +

    Provides a .inset position where the decoration is inset by the +same amount on each side.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func inset(_ amount: CGFloat) -> Decorate.Position
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Provides a .inset position where the decoration is inset by the +horizontal amount on the left and right, and the vertical amount on the top and bottom.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func inset(horizontal: CGFloat = 0.0, vertical: CGFloat = 0.0) -> Decorate.Position
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Aligns the decoration according the given alignment option, optionally adjusting it with +an alignment guide on either axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func aligned(
    +    to alignment: Alignment,
    +    horizontalGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    verticalGuide: ((ElementDimensions) -> CGFloat)? = nil
    +) -> Self
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + alignment + + +
    +

    Determines the position of the decoration relative to the decorated +content.

    +
    +
    + + horizontalGuide + + +
    +

    +
    +
    + + verticalGuide + + +
    +

    +
    +
    +
    +
    +

    Return Value

    +

    An aligned position.

    +
    +
    +
    +
  • +
  • +
    + + + + corner(_:_:) + +
    +
    +
    +
    +
    +
    +

    The decoration element is positioned in the given corner of the +content element, optionally offset by the provided amount.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func corner(_ corner: Corner, _ offset: UIOffset = .zero) -> Decorate.Position
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + custom(_:) + +
    +
    +
    +
    +
    +
    +

    Allows you to provide custom positioning for the decoration, based on the passed context.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func custom(_ position: @escaping (PositionContext) -> CGRect) -> Decorate.Position
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + PositionContext + +
    +
    +
    +
    +
    +
    +

    Information provided to Position closures.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct PositionContext
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Position/PositionContext.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Position/PositionContext.html new file mode 100644 index 000000000..348584fe5 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Decorate/Position/PositionContext.html @@ -0,0 +1,735 @@ + + + + PositionContext Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

PositionContext

+
+
+ +
public struct PositionContext
+ +
+
+

Information provided to Position closures.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + decorationSize + +
    +
    +
    +
    +
    +
    +

    The size of the decoration being positioned within the decorated content’s bounds.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var decorationSize: CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentSize + +
    +
    +
    +
    +
    +
    +

    The size of the content element within the Decorate element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentSize: CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + environment + +
    +
    +
    +
    +
    +
    +

    The environment the element is being rendered in.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var environment: Environment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenu.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenu.html new file mode 100644 index 000000000..731a5e8df --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenu.html @@ -0,0 +1,920 @@ + + + + EditingMenu Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EditingMenu

+
+
+ +
public struct EditingMenu : Element
+ +
+
+

Allows showing the system’s UIMenuController editing menu.

+ +

You can show the menu upon tap or long press:

+
myElement.editingMenu(show: .onLongPress) {
+    EditingMenuItem.copying("A String")
+
+    EditingMenuItem(.select) {
+        print("Selected!")
+    }
+}
+
+ +

You can also show the menu as a result of another element’s onTap closure, +using the trigger-based API:

+
EditingMenu { menu in
+    MyRow(text: "Hello, World") {
+        menu.show()
+    }
+} items: {
+    EditingMenuItem.copying("A String")
+}
+
+ +
+
+ +
+
+
+ +
+
+
+ + +
+ +

Element +

+
+
+
    +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Gesture + +
    +
    +
    +
    +
    +
    +

    The gesture to use to show the menu.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Gesture
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MenuTrigger + +
    +
    +
    +
    +
    +
    +

    A trigger that you can use to show the menu based on the result of some other +action firing, such as the onTap or onSelect of another element.

    +
    EditingMenu { menu in
    +    MyRow(text: "Hello, World") {
    +        menu.show()
    +    }
    +} items: {
    +    EditingMenuItem.copying("A String")
    +}
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class MenuTrigger
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenu/Gesture.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenu/Gesture.html new file mode 100644 index 000000000..4ced98427 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenu/Gesture.html @@ -0,0 +1,708 @@ + + + + Gesture Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Gesture

+
+
+ +
public enum Gesture
+ +
+
+

The gesture to use to show the menu.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + onTap + +
    +
    +
    +
    +
    +
    +

    The menu will be shown when the element is tapped.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case onTap
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onLongPress + +
    +
    +
    +
    +
    +
    +

    The menu will be shown when the element is long pressed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case onLongPress
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenu/MenuTrigger.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenu/MenuTrigger.html new file mode 100644 index 000000000..324b02053 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenu/MenuTrigger.html @@ -0,0 +1,690 @@ + + + + MenuTrigger Class Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

MenuTrigger

+
+
+ +
public final class MenuTrigger
+ +
+
+

A trigger that you can use to show the menu based on the result of some other +action firing, such as the onTap or onSelect of another element.

+
EditingMenu { menu in
+    MyRow(text: "Hello, World") {
+        menu.show()
+    }
+} items: {
+    EditingMenuItem.copying("A String")
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + show() + +
    +
    +
    +
    +
    +
    +

    Call this method to show the menu.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func show()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenuItem.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenuItem.html new file mode 100644 index 000000000..c060c31cb --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenuItem.html @@ -0,0 +1,877 @@ + + + + EditingMenuItem Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EditingMenuItem

+
+
+ +
public struct EditingMenuItem
+ +
+
+

A single item in an editing menu.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    The type of menu item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var kind: Kind
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onSelect + +
    +
    +
    +
    +
    +
    +

    A callback, invoked when the user selects the menu item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onSelect: () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(title:onSelect:) + +
    +
    +
    +
    +
    +
    +

    Creates a new menu item of the given kind.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    title: String,
    +    onSelect: @escaping () -> Void
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:onSelect:) + +
    +
    +
    +
    +
    +
    +

    Creates a new menu item of the given kind.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    _ kind: Kind.System,
    +    onSelect: @escaping () -> Void
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + copying(_:to:) + +
    +
    +
    +
    +
    +
    +

    A .copy type item, which will copy the given string to the provided pasteboard.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func copying(_ string: String, to pasteboard: UIPasteboard? = .general) -> EditingMenuItem
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + copying(_:to:) + +
    +
    +
    +
    +
    +
    +

    A .copy type item, which will copy the given image to the provided pasteboard.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func copying(_ image: UIImage, to pasteboard: UIPasteboard? = .general) -> EditingMenuItem
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + copying(_:to:) + +
    +
    +
    +
    +
    +
    +

    A .copy type item, which will copy the given url to the provided pasteboard.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func copying(_ url: URL, to pasteboard: UIPasteboard? = .general) -> EditingMenuItem
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Kind + +
    +
    +
    +
    +
    +
    +

    The menu item types you may place into a menu.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Kind : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenuItem/Kind.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenuItem/Kind.html new file mode 100644 index 000000000..574c5eb84 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenuItem/Kind.html @@ -0,0 +1,738 @@ + + + + Kind Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Kind

+
+
+ +
public enum Kind : Equatable
+ +
+
+

The menu item types you may place into a menu.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + system(_:) + +
    +
    +
    +
    +
    +
    +

    A standard system item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case system(System)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + custom(_:) + +
    +
    +
    +
    +
    +
    +

    A custom item with a custom title.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case custom(String)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + System + +
    +
    +
    +
    +
    +
    +

    The system menu item kinds supported by an editing menu.

    + +

    Note – Matches methods from UIResponderStandardEditActions.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum System : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenuItem/Kind/System.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenuItem/Kind/System.html new file mode 100644 index 000000000..a56086e3e --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EditingMenuItem/Kind/System.html @@ -0,0 +1,1046 @@ + + + + System Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

System

+
+
+ +
public enum System : Equatable
+ +
+
+

The system menu item kinds supported by an editing menu.

+ +

Note – Matches methods from UIResponderStandardEditActions.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + cut + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case cut
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + copy + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case copy
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + paste + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case paste
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + delete + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case delete
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + select + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case select
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + selectAll + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case selectAll
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + toggleBoldface + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case toggleBoldface
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + toggleItalics + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case toggleItalics
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + toggleUnderline + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case toggleUnderline
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + increaseSize + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case increaseSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + decreaseSize + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case decreaseSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + printContent + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case printContent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pasteAndGo + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case pasteAndGo
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pasteAndMatchStyle + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case pasteAndMatchStyle
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pasteAndSearch + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case pasteAndSearch
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementContent.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementContent.html new file mode 100644 index 000000000..c36a4f7ad --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementContent.html @@ -0,0 +1,1427 @@ + + + + ElementContent Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ElementContent

+
+
+ +
public struct ElementContent
+ +
+
+

Represents the content of an element.

+ +
+
+ +
+
+
+
+ + +
+ +

Measurement & Children +

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Measures the required size of this element’s content.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func measure(in constraint: SizeConstraint, environment: Environment) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + constraint + + +
    +

    The size constraint.

    +
    +
    + + environment + + +
    +

    The environment to measure in.

    +
    +
    +
    +
    +

    Return Value

    +

    The layout size needed by this content.

    +
    +
    +
    +
  • +
  • +
    + + + + childCount + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var childCount: Int { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Layout storage +

+
+
+
    +
  • +
    + + + + Builder + +
    +
    +
    +
    +
    +
    +

    Used to construct elements that have layout and children.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Builder<LayoutType> where LayoutType : Layout
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with the given layout and children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<LayoutType: Layout>(
    +    layout: LayoutType,
    +    configure: (inout Builder<LayoutType>) -> Void = { _ in }
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + layout + + +
    +

    The layout to use.

    +
    +
    + + configure + + +
    +

    A closure that configures the layout and adds children to the container.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with the given element and layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    child: Element,
    +    key: AnyHashable? = nil,
    +    layout: some SingleChildLayout
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + element + + +
    +

    The single child element.

    +
    +
    + + key + + +
    +

    The key to use to unique the element during updates.

    +
    +
    + + layout + + +
    +

    The layout that will be used.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Passthrough storage +

+
+
+
    +
  • +
    + + + + init(child:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with the given element.

    + +

    The given element will be used for measuring, and it will always fill the extent of the parent element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(child: Element)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + element + + +
    +

    The single child element.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Lazy storage +

+
+
+
    +
  • +
    + + + + init(build:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new ElementContent that will lazily create its storage during a layout and measurement pass, +based on the Environment passed to the builder closure.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    build builder: @escaping (SizeConstraint, Environment) -> Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + builder + + +
    +

    A closure that provides the content Element based on the provided SizeConstraint +and Environment.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Leaf content +

+
+
+
    +
  • +
    + + + + init(measurable:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with no children that delegates to the provided Measurable.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(measurable: Measurable)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + measurable + + +
    +

    How to measure the ElementContent.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with no children that delegates to the provided measure function.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    measureFunction: @escaping (SizeConstraint) -> CGSize
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + measureFunction + + +
    +

    How to measure the ElementContent in the given SizeConstraint.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with no children that delegates to the provided measure function.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    measureFunction: @escaping (SizeConstraint, Environment) -> CGSize
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + measureFunction + + +
    +

    How to measure the ElementContent in the given SizeConstraint and Environment.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(intrinsicSize:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with no children that uses the provided intrinsic size for measuring.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(intrinsicSize: CGSize)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Environment adapters +

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with the given child element, measurement caching key, and environment adapter, +which allows adapting the environment to affect the element, plus elements further down the tree.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    child: Element,
    +    environment environmentAdapter: @escaping (inout Environment) -> Void
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + child + + +
    +

    The child element to display.

    +
    +
    + + environmentAdapter + + +
    +

    How to adapt the Environment for the child and elements further down the tree.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a new ElementContent with the given child element, measurement caching key, and environment key + value. +which adapts the environment to affect the element, plus elements further down the tree.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<Key>(
    +    child: Element,
    +    key: Key.Type,
    +    value: Key.Value
    +) where Key: EnvironmentKey
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + child + + +
    +

    The child element to display.

    +
    +
    + + key + + +
    +

    The key to set in the Environment.

    +
    +
    + + value + + +
    +

    The value to set in the Environment for the given key.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Nested element measuring +

+
+
+
    +
  • +
    + + + + init(measuring:) + +
    +
    +
    +
    +
    +
    +

    Creates a new ElementContent which uses the provided element to measure its +size, but does not place the element as a child in the final, laid out hierarchy.

    + +

    This is useful if you are placing the element in a nested BlueprintView, for example (eg +to create a stateful element) and just need this element to be correctly sized.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(measuring element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementContent/Builder.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementContent/Builder.html new file mode 100644 index 000000000..42c78dfff --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementContent/Builder.html @@ -0,0 +1,713 @@ + + + + Builder Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Builder

+
+
+ +
public struct Builder<LayoutType> where LayoutType : Layout
+ +
+
+

Used to construct elements that have layout and children.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + layout + +
    +
    +
    +
    +
    +
    +

    The layout object that is ultimately responsible for measuring +and layout tasks.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layout: LayoutType
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Adds the given child element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(
    +    traits: LayoutType.Traits = LayoutType.defaultTraits,
    +    key: AnyHashable? = nil,
    +    element: Element
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementDimensions.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementDimensions.html new file mode 100644 index 000000000..c63e0a7fd --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementDimensions.html @@ -0,0 +1,838 @@ + + + + ElementDimensions Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ElementDimensions

+
+
+ +
public struct ElementDimensions : Equatable
+ +
+
+

An element’s size and its alignment guides in its own coordinate space.

+ +

You can access the size of the element through the width and height properties. You can +access alignment guide values by subscripting with the specific alignment.

+ +

These dimensions are typically used when setting an alignment guide on a stack, with +StackElement.add(...).

+

Example

+
// get the alignment guide value for `VerticalAlignment.center`, falling back to the default
+// value if no alignment guide has been set
+dimensions[VerticalAlignment.center]
+
+// get the alignment guide value for `HorizontalAlignment.trailing`, or `nil` if none has been
+// set.
+dimensions[explicit: .trailing]
+
+

See Also

+ +

StackElement.add()

+ +
+
+ +
+
+
+
    +
  • +
    + + + + width + +
    +
    +
    +
    +
    +
    +

    The element’s width

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var width: CGFloat { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + height + +
    +
    +
    +
    +
    +
    +

    The element’s height

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var height: CGFloat { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Accesses the value of the given guide, or the default value of the alignment if this +guide has not been set.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) subscript(guide: HorizontalAlignment) -> CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Accesses the value of the given guide, or the default value of the alignment if this +guide has not been set.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) subscript(guide: VerticalAlignment) -> CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(explicit:) + +
    +
    +
    +
    +
    +
    +

    Returns the explicit value of the given alignment guide in this view, or +nil if no such value exists.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript(explicit guide: HorizontalAlignment) -> CGFloat? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(explicit:) + +
    +
    +
    +
    +
    +
    +

    Returns the explicit value of the given alignment guide in this view, or +nil if no such value exists.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript(explicit guide: VerticalAlignment) -> CGFloat? { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementPreview.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementPreview.html new file mode 100644 index 000000000..bd7626710 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementPreview.html @@ -0,0 +1,919 @@ + + + + ElementPreview Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ElementPreview

+
+
+ +
@available(iOS 13.0, *)
+public struct ElementPreview : View
+ +
+
+

A SwiftUI view which wraps a Blueprint element, which can be used to preview Blueprint elements +via Xcode’s preview functionality (enable via the Editor > Canvas menu).

+ +

You can leverage ElementPreview by adding something like this to the bottom of the file which contains +your Blueprint element, then as you edit and work on your element, the live preview will update to show the +current state of your element:

+

+struct MyElement : Element {
+   ...
+}
+
+// Add this at the bottom of your element's source file.
+
+#if DEBUG && canImport(SwiftUI) && !arch(i386) && !arch(arm)
+
+import SwiftUI
+
+@available(iOS 13.0, *)
+struct MyElement_Preview: PreviewProvider {
+    static var previews: some View {
+        ElementPreview {
+            MyElement()
+        }
+    }
+}
+
+#endif
+
+
+

Uhhh

+ +

You’re probably asking… +Why the !arch(i386) check above? Turns out, a compiler bug! +SwiftUI is only available on 64 bit devices, but the canImport check erroneously +finds it when building to target iOS 10 devices. Until we drop iOS 10, this part of the check is also required.

+

Details

+ +

It’s important that you keep the PreviewProvider in the same file as the element that you are editing.

+ +

Why? Xcode uses a new feature called “Dynamic Replacement” to re-compile the source file you are editing, +and inject it back into the running app which drives the preview. This only works on the level of a single +file – if your preview and element live in separate files, Xcode needs to recompile your entire module +which will slow down preview updates greatly.

+ +

You can learn more about Xcode previews here: https://nshipster.com/swiftui-previews/

+

Requirements

+ +

You must be running Xcode 11 and Catalina to take advantage of live previews. +They do not work on Mojave. Your selected simulator must also be an iOS 13 device.

+ +
+
+ +
+
+
+
+ + +
+ +

Properties +

+
+
+
    +
  • +
    + + + + ElementProvider + +
    +
    +
    +
    +
    +
    +

    A provider which returns a new element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias ElementProvider = () -> Element
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Initialization +

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Creates a new ElementPreview with several common devices that your users may use.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func commonDevices(
    +    named name: String = "",
    +    with provider: @escaping ElementProvider
    +) -> Self
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new ElementPreview with the provided preview type. +If you do not pass a preview type, .thatFits is used.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    named name: String = "",
    +    with previewType: PreviewType = .thatFits(),
    +    with provider: @escaping ElementProvider
    +)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new ElementPreview with the provided preview types.

    + +

    You can pass as many preview types as you would like to see your +element rendered in those different environments.

    + +

    If you do not pass a preview type, .thatFits is used.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    named name: String = "",
    +    with previewTypes: [PreviewType],
    +    with provider: @escaping ElementProvider
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

View +

+
+
+
    +
  • +
    + + + + body + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var body: some View { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + PreviewType + +
    +
    +
    +
    +
    +
    +

    The preview type to use to display an element in an Xcode preview.

    + +

    We provide three preview types: A specific device type, a fixed size, and the size that fits the view.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PreviewType
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementPreview/PreviewType.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementPreview/PreviewType.html new file mode 100644 index 000000000..cbf37b14d --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ElementPreview/PreviewType.html @@ -0,0 +1,795 @@ + + + + PreviewType Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

PreviewType

+
+
+ +
public enum PreviewType
+ +
+
+

The preview type to use to display an element in an Xcode preview.

+ +

We provide three preview types: A specific device type, a fixed size, and the size that fits the view.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + device(_:) + +
    +
    +
    +
    +
    +
    +

    The preview will be inside the provided device (eg, iPhone X).

    + +

    Note: You can use the provided extension on PreviewDevice +to access devices in a type-safe way, eg: .device(.iPhone7).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case device(PreviewDevice)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fixed(width:height:) + +
    +
    +
    +
    +
    +
    +

    The preview will be the provided size

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fixed(width: CGFloat, height: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + thatFits(padding:) + +
    +
    +
    +
    +
    +
    +

    The preview will be as large as needed to preview the content.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case thatFits(padding: CGFloat = 10.0)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + identifier + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var identifier: AnyHashable { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func previewView(
    +    with name: String,
    +    for element: Element
    +) -> AnyView
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Empty.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Empty.html new file mode 100644 index 000000000..7addaa570 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Empty.html @@ -0,0 +1,732 @@ + + + + Empty Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Empty

+
+
+ +
public struct Empty : Element
+ +
+
+

An empty Element which has no size and draws no content.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Environment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Environment.html new file mode 100644 index 000000000..771943ee3 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Environment.html @@ -0,0 +1,1050 @@ + + + + Environment Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Environment

+
+
+ +
public struct Environment
+ +
+
+

Environment is a container for values to be passed down an element tree.

+ +

Environment values are not resolved until the tree is being rendered, so they do not need to be +explicitly passed to elements at the time they are created.

+ +

Environment key-value pairs are strongly typed: keys are types conforming to the +EnvironmentKey protocol, and each key’s value is the type of that key’s +EnvironmentKey.Value associated value. Keys must provide a default value.

+

Example

+ +

To set an environment value, so that it will cascade to child elements, use +AdaptedEnvironment. Here, every element in childElement will have access to someValue +via the key MyEnvironmentKey.

+
AdaptedEnvironment(
+    key: MyEnvironmentKey.self,
+    value: someValue,
+    wrapping: childElement
+)
+
+ +

To read an environment value, use EnvironmentReader. If this element were part of the child +element in the previous example, myValue would be set to someValue. If the key had not +been set in an ancestor element, the value would be MyEnvironmentKey.defaultValue.

+
struct MyElement: ProxyElement {
+    var elementRepresentation: Element {
+        return EnvironmentReader { environment -> Element in
+            let myValue = environment[MyEnvironmentKey.self]
+            return SomeElement(using: myValue)
+        }
+    }
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + empty + +
    +
    +
    +
    +
    +
    +

    A default “empty” environment, with no values overridden. +Each key will return its default value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let empty: Environment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Gets or sets an environment value by its key.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Key>(key: Key.Type) -> Key.Value where Key : EnvironmentKey { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The localised accessibility label elements should use when handling links.

    + +

    Defaults to UIImage(systemName: "link")?.accessibilityLabel.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var linkAccessibilityLabel: String? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + calendar + +
    +
    +
    +
    +
    +
    +

    The current calendar that elements should use when handling dates.

    + +

    Defaults to Calendar.current.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var calendar: Calendar { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + displayScale + +
    +
    +
    +
    +
    +
    +

    The display scale of this environment.

    + +

    This value is the number of pixels per point. A value of 1.0 indicates non-Retina screens, +2.0 indicates 2x Retina screens, etc.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var displayScale: CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutDirection + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LayoutDirection : Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutDirection + +
    +
    +
    +
    +
    +
    +

    The layout direction associated with the current environment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutDirection: LayoutDirection { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locale + +
    +
    +
    +
    +
    +
    +

    The current locale that elements should use.

    + +

    Defaults to Locale.current.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var locale: Locale { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + safeAreaInsets + +
    +
    +
    +
    +
    +
    +

    The insets representing the safe area for content.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var safeAreaInsets: UIEdgeInsets { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + timeZone + +
    +
    +
    +
    +
    +
    +

    The current time zone that elements should use when handling dates.

    + +

    Defaults to TimeZone.current.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var timeZone: TimeZone { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + windowSize + +
    +
    +
    +
    +
    +
    +

    The size of the window that contains the hosting BlueprintView. +Defaults to nil if the hosting view is not in a window.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var windowSize: CGSize? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutMode + +
    +
    +
    +
    +
    +
    +

    This mode will be inherited by descendant BlueprintViews that do not have an explicit +mode set.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var layoutMode: LayoutMode { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + urlHandler + +
    +
    +
    +
    +
    +
    +

    The link handler to use to open links tapped in an AttributedLabel.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var urlHandler: URLHandler { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Environment/LayoutDirection.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Environment/LayoutDirection.html new file mode 100644 index 000000000..340828058 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Environment/LayoutDirection.html @@ -0,0 +1,705 @@ + + + + LayoutDirection Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutDirection

+
+
+ +
public enum LayoutDirection : Hashable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + leftToRight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case leftToRight
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + rightToLeft + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case rightToLeft
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EnvironmentReader.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EnvironmentReader.html new file mode 100644 index 000000000..94ea40e2e --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EnvironmentReader.html @@ -0,0 +1,750 @@ + + + + EnvironmentReader Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EnvironmentReader

+
+
+ +
public struct EnvironmentReader : Element
+ +
+
+

An element that dynamically builds its content based on the environment.

+ +

Use this element to build elements whose contents may change depending on the Environment.

+

Example

+
EnvironmentReader { environment -> Element in
+    MyElement(
+        foo: environment.foo
+    )
+}
+
+
+

Seealso

+ ProxyElement + +
+

Seealso

+ Environment + +
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EqualStack.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EqualStack.html new file mode 100644 index 000000000..11e9f4d8d --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EqualStack.html @@ -0,0 +1,998 @@ + + + + EqualStack Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EqualStack

+
+
+ +
public struct EqualStack : Element
+ +
+
+

An element that sizes its children equally, stacking them in the primary axis according to +the specified direction and spacing them according to the specified spacing. In the +secondary axis, children are justified to fill the space of the largest child.

+
+

Note

+ A stack measures itself by determining its largest child in each axis, and + in the case of the primary axis, multiplying by children.count (accounting + for spacing as necessary). + +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + direction + +
    +
    +
    +
    +
    +
    +

    The direction in which this element will stack its children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var direction: Direction
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + spacing + +
    +
    +
    +
    +
    +
    +

    The amount of space between children in this element. Defaults to 0.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var spacing: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    +

    The child elements to be laid out. Defaults to an empty array.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [Element]
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    direction: Direction,
    +    configure: (inout EqualStack) -> Void = { _ in }
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + direction + + +
    +

    The direction in which this element will stack its children.

    +
    +
    + + configure + + +
    +

    A closure allowing the element to be further customized. Defaults to a no-op.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializer using result builder to declaritively build up a stack.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    direction: Direction,
    +    spacing: CGFloat = 0,
    +    @ElementBuilder<Child> elements: () -> [Child]
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + direction + + +
    +

    Direction of the stack.

    +
    +
    + + children + + +
    +

    A block containing all elements to be included in the stack.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + add(child:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(child: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Direction + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Direction
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Child + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Child : ElementBuilderChild
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EqualStack/Child.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EqualStack/Child.html new file mode 100644 index 000000000..f0cfd8b31 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EqualStack/Child.html @@ -0,0 +1,705 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child : ElementBuilderChild
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let element: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EqualStack/Direction.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EqualStack/Direction.html new file mode 100644 index 000000000..1bb59fa98 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/EqualStack/Direction.html @@ -0,0 +1,705 @@ + + + + Direction Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Direction

+
+
+ +
public enum Direction
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + vertical + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case vertical
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontal + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case horizontal
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow.html new file mode 100644 index 000000000..fbe35e7cf --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow.html @@ -0,0 +1,995 @@ + + + + Flow Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Flow

+
+
+ +
public struct Flow : Element
+ +
+
+

Element which lays out children horizontally, wrapping to another row when there is not enough space.

+ +

You may control the layout of each row within the flow layout, by providing a LineAlignment, +which controls the horizontal alignment of content within a row when it is smaller than its container, +and via ItemAlignment, which controls the vertical alignment of shorter elements within a row.

+
Flow(itemSpacing: 10, lineSpacing: 10) {
+    OnboardingPill("Food / drink")
+    OnboardingPill("Retail goods").flowChild(key: "aKey")
+    OnboardingPill("Grocery / gourmet / alcohol")
+    OnboardingPill("Beauty / wellness bookings")
+    OnboardingPill("Healthcare services")
+    OnboardingPill("Something else")
+}
+
+ +

Below is a diagram showing a simple example of a Flow layout.

+
┌─────────────────────────────────────┐
+ ┌─────────┐┌─────────┐┌────────────┐│
+     1    ││    2    ││     3      ││
+ └─────────┘└─────────┘└────────────┘│
+ ┌───────┐┌─────┐┌───────────┐       
+    4   ││  5  ││     6            
+ └───────┘└─────┘└───────────┘       
+└─────────────────────────────────────┘
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + lineAlignment + +
    +
    +
    +
    +
    +
    +

    How to align each row when there is extra horizontal space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var lineAlignment: LineAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lineSpacing + +
    +
    +
    +
    +
    +
    +

    Space between lines in the layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var lineSpacing: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + itemAlignment + +
    +
    +
    +
    +
    +
    +

    How to align items in a line when there is extra vertical space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var itemAlignment: ItemAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + itemSpacing + +
    +
    +
    +
    +
    +
    +

    Space between items within a line.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var itemSpacing: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    +

    The child elements of the flow layout to be laid out.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [Child]
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new flow layout with the provided parameters.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    lineAlignment: LineAlignment = .leading,
    +    lineSpacing: CGFloat = 0,
    +    itemAlignment: ItemAlignment = .center,
    +    itemSpacing: CGFloat = 0,
    +    @ElementBuilder<Flow.Child> _ children: () -> [Flow.Child]
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+
    +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LineAlignment + +
    +
    +
    +
    +
    +
    +

    How to horizontally align the line when there is extra space.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LineAlignment : CaseIterable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ItemAlignment + +
    +
    +
    +
    +
    +
    +

    How to vertically align items which there is extra space.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ItemAlignment : CaseIterable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Child + +
    +
    +
    +
    +
    +
    +

    A child placed within the flow layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Child : ElementBuilderChild
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow/Child.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow/Child.html new file mode 100644 index 000000000..d9a4f75a3 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow/Child.html @@ -0,0 +1,815 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child : ElementBuilderChild
+ +
+
+

A child placed within the flow layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    +

    The key used to optionally unique the child item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + traits + +
    +
    +
    +
    +
    +
    +

    The traits of a child item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var traits: Traits
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    +

    The element representing the child item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var element: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Creates a new child item with the given element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:key:) + +
    +
    +
    +
    +
    +
    +

    Creates a new child item with the given element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element, key: AnyHashable? = nil)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Traits + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Traits
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow/ItemAlignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow/ItemAlignment.html new file mode 100644 index 000000000..020a72291 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow/ItemAlignment.html @@ -0,0 +1,762 @@ + + + + ItemAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ItemAlignment

+
+
+ +
public enum ItemAlignment : CaseIterable
+ +
+
+

How to vertically align items which there is extra space.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    Shorter items are stretched to fill the height of the tallest item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    Shorter items are aligned to the top of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case top
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Shorter items are vertically aligned within the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    Shorter items are aligned to the bottom of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottom
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow/LineAlignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow/LineAlignment.html new file mode 100644 index 000000000..9ff60f240 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Flow/LineAlignment.html @@ -0,0 +1,735 @@ + + + + LineAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LineAlignment

+
+
+ +
public enum LineAlignment : CaseIterable
+ +
+
+

How to horizontally align the line when there is extra space.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    Items are aligned with the leading edge.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case leading
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Items are centered within the remaining space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    Items are aligned with the trailing edge.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case trailing
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/FocusBinding.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/FocusBinding.html new file mode 100644 index 000000000..5b339b573 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/FocusBinding.html @@ -0,0 +1,829 @@ + + + + FocusBinding Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FocusBinding

+
+
+ +
public struct FocusBinding
+ +
+
+

A two-way binding between a focusable element’s backing view and a FocusState-wrapped +property.

+ +

Generally you should not need to interact with this type directly. However, you can use focus +bindings to add focus support to custom elements.

+

Adding Focus Bindings

+ +

On a FocusState, call the binding(for:) method to get a binding bound to an optional value, +or binding() to get a binding bound to a boolean.

+ +

To set up the 2-way binding, there are 2 steps:

+ +
    +
  1. Assign actions to the nested FocusTrigger, so that your backing view is updated when the +FocusState‘s value changes.

  2. +
  3. Call the onFocus and onBlur callbacks when your backing view gains or loses focus, so +that the value of the bound FocusState is updated.

  4. +
+

Example

+
final class FocusableView: UIView {
+    var focusBinding: FocusBinding? {
+        didSet {
+            oldValue?.trigger.focusAction = nil
+            oldValue?.trigger.blurAction = nil
+
+            guard let focusBinding = focusBinding else { return }
+
+            focusBinding.trigger.focusAction = { [weak self] in
+                self?.becomeFirstResponder()
+            }
+            focusBinding.trigger.blurAction = { [weak self] in
+                self?.resignFirstResponder()
+            }
+
+            if isFirstResponder {
+                focusBinding.onFocus()
+            } else {
+                focusBinding.onBlur()
+            }
+        }
+    }
+
+    @discardableResult
+    override func becomeFirstResponder() -> Bool {
+        let focused = super.becomeFirstResponder()
+        if focused {
+            focusBinding?.onFocus()
+        }
+        return focused
+    }
+
+    @discardableResult
+    override func resignFirstResponder() -> Bool {
+        let blurred = super.resignFirstResponder()
+        if blurred {
+            focusBinding?.onBlur()
+        }
+        return blurred
+    }
+}
+
+ +
    +
  • Tag: FocusBinding
  • +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + trigger + +
    +
    +
    +
    +
    +
    +

    A trigger, which is responsible for piping focus changes from a FocusState into a backing +view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let trigger: FocusTrigger
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onFocus + +
    +
    +
    +
    +
    +
    +

    A callback to be called by a backing view when it is focused, to pipe changes from a backing +view to a bound FocusState.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onFocus: () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onBlur + +
    +
    +
    +
    +
    +
    +

    A callback to be called by a backing view when it loses focus, to pipe changes from a +backing view to a bound FocusState.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onBlur: () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(onFocus:onBlur:) + +
    +
    +
    +
    +
    +
    +

    Creates a new binding

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(onFocus: @escaping () -> Void, onBlur: @escaping () -> Void)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/FocusState.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/FocusState.html new file mode 100644 index 000000000..db30ad466 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/FocusState.html @@ -0,0 +1,956 @@ + + + + FocusState Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FocusState

+
+
+ +
@propertyWrapper
+public struct FocusState<Value> where Value : Hashable
+ +
+
+

A property wrapper type that can read and write a value that represents the placement of focus.

+ +

Use this property wrapper in conjunction with modifiers on elements that support focus, such as +TextField.focused(when:equals:) and TextField.focused(when:), to describe when those elements +should have focus. When focus enters the modified element, the wrapped value of this property +updates to match a given value. Similarly, when focus leaves, the wrapped value of this property +resets to nil or false. Setting this property’s value programmatically has the reverse +effect, causing focus to move to the element associated with the updated value.

+ +

In the following example of a simple login screen, when the user presses the Sign In button and +one of the fields is still empty, focus moves to that field. Otherwise, the sign-in process +proceeds.

+
struct LoginForm: ProxyElement {
+    enum Field: Hashable {
+        case username
+        case password
+    }
+
+    var username: String
+    var password: String
+    var handleLogin: () -> Void
+
+    @FocusState private var focusedField: Field?
+
+    var elementRepresentation: Element {
+        Column { column in
+            column.add(
+                child: TextField(text: "")
+                    .focused(when: $focusedField, equals: .username)
+            )
+
+            column.add(
+                child: TextField(text: "")
+                    .focused(when: $focusedField, equals: .password)
+            )
+
+            column.add(
+                child: Button(
+                    onTap: {
+                        if username.isEmpty {
+                            focusedField = .username
+                        } else if password.isEmpty {
+                            focusedField = .password
+                        } else {
+                            handleLogin()
+                        }
+                    },
+                    wrapping: Label(text: "Sign In")
+                )
+            )
+        }
+    }
+}
+
+ +

To allow for cases where focus is completely absent from a view tree, the wrapped value must be +either an optional or a Boolean. Set the focus binding to false or nil as appropriate to +remove focus from all bound fields. You can also use this to remove focus from a TextField +and thereby dismiss the keyboard.

+

Auto-Focus

+ +

To auto-focus a field when it appears, set the value in an onAppear hook.

+
struct Example: ProxyElement {
+    @FocusState var isFocused: Bool
+
+    var elementRepresentation: Element {
+        TextField(text: "")
+            .focused(when: $isFocused)
+            .onAppear {
+                isFocused = true
+            }
+    }
+}
+
+

Avoid Ambiguous Focus Bindings

+ +

A TextField can have only one focus binding, stored in its focusBinding property. If you apply +the focused modifier multiple times, the last one will overwrite the previous value.

+ +

On the other hand, binding the same value to two views is ambiguous. In the following example, +two separate fields bind focus to the name value:

+
struct Content: ProxyElement {
+    enum Field: Hashable {
+        case name
+        case fullName
+    }
+
+    @FocusState private var focusedField: Field?
+
+    var elementRepresentation: Element {
+        Column { column in
+            column.add(
+                child: TextField(text: "")
+                    .focused(when: $focusedField, equals: .name)
+            )
+
+            column.add(
+                child: TextField(text: "")
+                    .focused(when: $focusedField, equals: .name) // incorrect re-use of .name
+            )
+        }
+    }
+}
+
+ +

If the user moves focus to either field, the focusedField binding updates to name. However, +if the app programmatically sets the value to name, the last field bound will be chosen.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Creates a focus state that binds to a Boolean.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init() where Value == Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Creates a focus state that binds to an optional type.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<T>() where Value == T?, T : Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedValue + +
    +
    +
    +
    +
    +
    +

    The current state value, taking into account whatever bindings might be +in effect due to the current location of focus.

    + +

    When focus is not in any view that is bound to this state, the wrapped +value will be nil (for optional-typed state) or false (for Bool- +typed state).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedValue: Value { get nonmutating set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + projectedValue + +
    +
    +
    +
    +
    +
    +

    A projection of the focus state that can be bound to focusable elements.

    + +

    Use this property wrapper in conjunction with modifiers on elements that support focus, such +as TextField.focused(when:equals) and TextField.focused(when:), to describe when those +elements should have focus.

    + +

    To add focus support to a custom element, use one of the methods on this projection to +retrieve a FocusBinding: binding() for Bool values and binding(for:) for optional +values.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var projectedValue: `Self` { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + binding(for:) + +
    +
    +
    +
    +
    +
    +

    Gets a focus binding associated with the FocusState being a specific value.

    + +

    You can use this binding to add focus support to a custom element.

    + +

    When the FocusState property is set to this value, the binding’s focus trigger will +fire, and when the property is set to another value, the binding’s blur trigger will fire. +Similarly, calling the onFocus callback will set the FocusState to this value, and the +onBlur callback will set it to nil.

    +

    See Also

    + +

    FocusBinding

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func binding<T>(for value: T) -> FocusBinding where Value == T?, T : Hashable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + binding() + +
    +
    +
    +
    +
    +
    +

    Gets a focus binding associated with the FocusState value being true.

    + +

    You can use this binding to add focus support to a custom element.

    + +

    When the FocusState property is set to true, the binding’s focus trigger will fire, and +when the property is set to false, the binding’s blur trigger will fire. Similarly, +calling the onFocus callback will set the FocusState to true, and the onBlur callback +will set it to false.

    +

    See Also

    + +

    FocusBinding

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func binding() -> FocusBinding where Value == Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GeometryProxy.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GeometryProxy.html new file mode 100644 index 000000000..9430ff65f --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GeometryProxy.html @@ -0,0 +1,708 @@ + + + + GeometryProxy Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

GeometryProxy

+
+
+ +
public struct GeometryProxy
+ +
+
+

Contains information about the current layout being measured by GeometryReader

+ +
+
+ +
+
+
+
    +
  • +
    + + + + constraint + +
    +
    +
    +
    +
    +
    +

    The size constraint of the element being laid out.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var constraint: SizeConstraint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + measure(element:in:) + +
    +
    +
    +
    +
    +
    +

    Measure the given element, constrained to the same size as the GeometryProxy itself (unless a constraint is explicitly provided).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func measure(element: Element, in explicit: SizeConstraint? = nil) -> CGSize
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GeometryReader.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GeometryReader.html new file mode 100644 index 000000000..4687817b0 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GeometryReader.html @@ -0,0 +1,749 @@ + + + + GeometryReader Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

GeometryReader

+
+
+ +
public struct GeometryReader : Element
+ +
+
+

An element that dynamically builds its content based on the available space.

+ +

Use this element to build elements whose contents may change responsively to +different layouts.

+

Example

+
GeometryReader { (geometry) -> Element in
+    let image: UIImage
+    switch geometry.constraint.width.maximum {
+    case ..<100:
+        image = UIImage(named: "small")!
+    case 100..<500:
+        image = UIImage(named: "medium")!
+    default:
+        image = UIImage(named: "large")!
+    }
+    return Image(image: image)
+}
+
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GridRow.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GridRow.html new file mode 100644 index 000000000..fcf9fb4ea --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GridRow.html @@ -0,0 +1,1056 @@ + + + + GridRow Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

GridRow

+
+
+ +
public struct GridRow : Element
+ +
+
+

Like Row, GridRow displays a list of items in a linear horizontal layout. Unlike Row, GridRow provides +convenience for describing columnar layout.

+ +

Horizontally, GridRow children are stretched to fill the available space. Vertically, children are aligned +according to the verticalAlignment property.

+ +

Children may be sized proportionally or absolutely. Proportionally-sized children are granted a proportion of +the total layout space after absolutely-sized children and margins have been subtracted.

+

Example:

+
GridRow { row in
+  row.verticalAlignment = .fill
+  row.spacing = 8.0
+  row.add(width: .proportional(0.75), child: name)
+  row.add(width: .proportional(0.25), child: number)
+  row.add(width: .absolute(100), child: status)
+}
+
+

Expected layout:

+
┌────────────────────────────┬─┬────────┬─┬──────────────────┐
+            name              number        status      
+            (75%)           8  (25%) 8     (100 pts)    
+                                                        
+●──────────── 150 ───────────● ●── 50 ──● ●─────── 100 ──────●
+└────────────────────────────┴─┴────────┴─┴──────────────────┘
+●──────────────────────────── 316 ───────────────────────────●
+
+ +
+
+ +
+
+
+
+ + +
+ +

properties +

+
+
+
    +
  • +
    + + + + verticalAlignment + +
    +
    +
    +
    +
    +
    +

    How children are aligned vertically. By default, .fill.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var verticalAlignment: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + spacing + +
    +
    +
    +
    +
    +
    +

    The space between children. By default, 0.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var spacing: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    +

    The child elements to be laid out. By default, an empty array.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [Child]
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

initialization +

+
+
+
    +
  • +
    + + + + init(configure:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(configure: (inout GridRow) -> Void = { _ in })
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializer using result builder to declaritively build up a grid row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    verticalAlignment: Row.RowAlignment = .fill,
    +    spacing: CGFloat = 0,
    +    @ElementBuilder<Child> _ elements: () -> [Child]
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + verticalAlignment + + +
    +

    How children are aligned vertically. By default, .fill.

    +
    +
    + + spacing + + +
    +

    The space between children. By default, 0.

    +
    +
    + + elements + + +
    +

    A block containing all elements to be included in the row.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

mutations +

+
+
+
    +
  • +
    + + + + add(width:key:child:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(width: Width, key: AnyHashable? = nil, child: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

GridRow+Element +

+
+
+ +
+
+
+ + +
+ +

child modeling +

+
+
+
    +
  • +
    + + + + Child + +
    +
    +
    +
    +
    +
    +

    A child of a GridRow.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Child
    +
    extension GridRow.Child: ElementBuilderChild
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Width + +
    +
    +
    +
    +
    +
    +

    The sizing and content of a GridRow child.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Width : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GridRow/Child.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GridRow/Child.html new file mode 100644 index 000000000..b97040d79 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GridRow/Child.html @@ -0,0 +1,822 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child
+
extension GridRow.Child: ElementBuilderChild
+ +
+
+

A child of a GridRow.

+ +
+
+ +
+
+
+
+ + +
+ +

properties +

+
+
+
    +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    +

    The element displayed in the Grid.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var element: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    +

    A unique identifier for the child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + width + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var width: Width
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

initialialization +

+
+
+ +
+
+
+ + +
+ +

child modeling +

+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GridRow/Width.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GridRow/Width.html new file mode 100644 index 000000000..1ac20ed2a --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/GridRow/Width.html @@ -0,0 +1,719 @@ + + + + Width Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Width

+
+
+ +
public enum Width : Equatable
+ +
+
+

The sizing and content of a GridRow child.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + absolute(_:) + +
    +
    +
    +
    +
    +
    +

    Assign the child a fixed width equal to the payload.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case absolute(CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + proportional(_:) + +
    +
    +
    +
    +
    +
    +

    Assign the child a proportional width of the available layout width. Note that proportional children +take proportional shares of the available layout width.

    +

    Example:

    +
    Available layout width: 100
    +Child A: .proportional(1)  -> 25 (100 * 1/4)
    +Child B: .proportional(3) -> 75 (100 * 3/4)
    +
    +

    Example:

    +
    Available layout width: 100
    +Child A: .proportional(0.25)  -> 25 (100 * 1/4)
    +Child B: .proportional(0.75) -> 75 (100 * 3/4)
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case proportional(CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Hidden.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Hidden.html new file mode 100644 index 000000000..6dfa04771 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Hidden.html @@ -0,0 +1,789 @@ + + + + Hidden Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Hidden

+
+
+ +
public struct Hidden : Element
+ +
+
+

Hidden conditionally hides its wrapped element.

+
+

Note

+ When an element is hidden, any elements within the wrapped element will be hidden. + +
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/HorizontalAlignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/HorizontalAlignment.html new file mode 100644 index 000000000..6ad290654 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/HorizontalAlignment.html @@ -0,0 +1,816 @@ + + + + HorizontalAlignment Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

HorizontalAlignment

+
+
+ +
public struct HorizontalAlignment : Equatable, CustomStringConvertible
+ +
+
+

An alignment position along the horizontal axis.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Creates an instance with the given ID.

    + +

    Note: each instance should have a unique ID.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ id: AlignmentID.Type)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: HorizontalAlignment, rhs: HorizontalAlignment) -> Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    A guide marking the leading edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let leading: HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    A guide marking the horizontal center of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    A guide marking the trailing edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let trailing: HorizontalAlignment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Image.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Image.html new file mode 100644 index 000000000..db5b17528 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Image.html @@ -0,0 +1,877 @@ + + + + Image Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Image

+
+
+ +
public struct Image : Element
+ +
+
+

Displays an image within an element hierarchy.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + image + +
    +
    +
    +
    +
    +
    +

    The image to be displayed

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var image: UIImage?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tintColor + +
    +
    +
    +
    +
    +
    +

    The tint color.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tintColor: UIColor?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentMode + +
    +
    +
    +
    +
    +
    +

    The content mode determines the layout of the image when its size does +not precisely match the size that the element is assigned.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentMode: ContentMode
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    iOS 14 added support for Image Descriptions using VoiceOver. This is not always appropriate. +Set this to true to prevent VoiceOver from describing the displayed image.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var blockAccessibilityDescription: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes an image element with the given UIImage instance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    image: UIImage?,
    +    contentMode: ContentMode = .aspectFill,
    +    tintColor: UIColor? = nil,
    +    blockAccessibilityDescription: Bool = false
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ContentMode + +
    +
    +
    +
    +
    +
    +

    The content mode determines the layout of the image when its size does +not precisely match the size that the element is assigned.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ContentMode
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Image/ContentMode.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Image/ContentMode.html new file mode 100644 index 000000000..30999e66a --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Image/ContentMode.html @@ -0,0 +1,772 @@ + + + + ContentMode Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ContentMode

+
+
+ +
public enum ContentMode
+ +
+
+

The content mode determines the layout of the image when its size does +not precisely match the size that the element is assigned.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    The image is not scaled, and is simply centered within the Image +element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + stretch + +
    +
    +
    +
    +
    +
    +

    The image is stretched to fill the Image element, causing the image +to become distorted if its aspect ratio is different than that of the +containing element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case stretch
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + aspectFit + +
    +
    +
    +
    +
    +
    +

    The image is scaled to touch the edges of the Image element while +maintaining the image’s aspect ratio. If the aspect ratio of the +image is different than that of the element, the image will be +letterboxed or pillarboxed as needed to ensure that the entire +image is visible within the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case aspectFit
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + aspectFill + +
    +
    +
    +
    +
    +
    +

    The image is scaled to fill the entire Image element. If the aspect +ratio of the image is different than that of the element, the image +will be cropped to match the element’s aspect ratio.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case aspectFill
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Inset.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Inset.html new file mode 100644 index 000000000..e409ad472 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Inset.html @@ -0,0 +1,976 @@ + + + + Inset Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Inset

+
+
+ +
public struct Inset : Element
+ +
+
+

Insets a content element within a layout.

+ +

Commonly used to add padding around another element when displayed within a container.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The wrapped element to be inset.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    The amount to inset the content element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var top: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var bottom: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + left + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var left: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + right + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var right: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    top: CGFloat = 0.0,
    +    bottom: CGFloat = 0.0,
    +    left: CGFloat = 0.0,
    +    right: CGFloat = 0.0,
    +    wrapping element: Element
    +)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(uniformInset: CGFloat, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(insets: UIEdgeInsets, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(sideInsets: CGFloat, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(vertical: CGFloat, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Keyed.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Keyed.html new file mode 100644 index 000000000..994fd23de --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Keyed.html @@ -0,0 +1,809 @@ + + + + Keyed Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Keyed

+
+
+ +
public struct Keyed : Element
+ +
+
+

Keyed allows providing a Hashable value which is used +during view updates to uniquely identify content during the diff process +between the old and new element structure.

+ +

This is useful if you have two elements of the same type at the same depth +in the element hierarchy, and you’d like to differentiate between them, eg +for appearance transition purposes.

+

Example

+ +

Keying the image returned, so that a transition occurs when changing +between a placeholder image and an available photo.

+
func imageElement() -> Element {
+    if let photo = self.photo {
+        return Image(image: photo)
+                .transition(.fade)
+                .keyed("photo")
+    } else {
+        return Image(image: self.placeholder)
+                .transition(.fade)
+                .keyed("placeholder")
+    }
+}
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    +

    The key used to differentiate the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    +

    The wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(key:wrapping:) + +
    +
    +
    +
    +
    +
    +

    Creates a new Keyed element with the provided key and wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(key: AnyHashable?, wrapping: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Label.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Label.html new file mode 100644 index 000000000..c40ed4e7f --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Label.html @@ -0,0 +1,1159 @@ + + + + Label Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Label

+
+
+ +
public struct Label : ProxyElement
+ +
+
+

Displays text content.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + text + +
    +
    +
    +
    +
    +
    +

    The text to be displayed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var text: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + font + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var font: UIFont
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + color + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var color: UIColor
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + alignment + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alignment: NSTextAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + numberOfLines + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var numberOfLines: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lineBreakMode + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var lineBreakMode: NSLineBreakMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lineHeight + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var lineHeight: LineHeight
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A Boolean value that determines whether the label reduces the text’s font +size to fit the title string into the label’s bounding rectangle.

    + +

    Normally, the label draws the text with the font you specify in the font property. +If this property is true, and the text in the text property exceeds the label’s bounding rectangle, +the label reduces the font size until the text fits or it has scaled the font down to the minimum +font size. The default value for this property is false.

    + +

    If you change it to true, be sure that you also set an appropriate minimum +font scale by modifying the minimumScaleFactor property.

    + +

    This autoshrinking behavior is only intended for use with a single-line label.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var adjustsFontSizeToFitWidth: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimumScaleFactor + +
    +
    +
    +
    +
    +
    +

    The minimum scale factor for the label’s text.

    + +

    If the adjustsFontSizeToFitWidth is true, use this property to specify the +smallest multiplier for the current font size that yields an acceptable +font size for the label’s text.

    + +

    If you specify a value of 0 for this property, the label doesn’t scale the text down. +The default value of this property is 0.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumScaleFactor: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A Boolean value that determines whether the label tightens text before truncating.

    + +

    When the value of this property is true, the label tightens intercharacter spacing +of its text before allowing any truncation to occur. The label determines the +maximum amount of tightening automatically based on the font, current line width, +line break mode, and other relevant information.

    + +

    This autoshrinking behavior is only intended for use with a single-line label.

    + +

    The default value of this property is false.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var allowsDefaultTighteningForTruncation: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shadow + +
    +
    +
    +
    +
    +
    +

    A shadow to display behind the label’s text. Defaults to no shadow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadow: TextShadow?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Determines if the label should be included when navigating the UI via accessibility.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isAccessibilityElement: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityHint + +
    +
    +
    +
    +
    +
    +

    A localized string that describes the result of performing an action on the element, when the result is non-obvious.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityHint: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityTraits + +
    +
    +
    +
    +
    +
    +

    A set of accessibility traits that should be applied to the label, these will be merged with any existing traits.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityTraits: Set<AccessibilityElement.Trait>?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    An array containing one or more AccessibilityElement.CustomActions, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityCustomActions: [AccessibilityElement.CustomAction]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(text:configure:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(text: String, configure: (inout Label) -> Void = { _ in })
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + elementRepresentation + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var elementRepresentation: Element { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LineHeight + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LineHeight : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Label/LineHeight.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Label/LineHeight.html new file mode 100644 index 000000000..448cede09 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Label/LineHeight.html @@ -0,0 +1,734 @@ + + + + LineHeight Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LineHeight

+
+
+ +
public enum LineHeight : Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + Alignment + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Alignment : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + font + +
    +
    +
    +
    +
    +
    +

    Use the default line height of the label’s font.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case font
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Use a custom line height and alignment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case custom(lineHeight: CGFloat, alignment: Alignment = .bottom)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Label/LineHeight/Alignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Label/LineHeight/Alignment.html new file mode 100644 index 000000000..6aedb61c7 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Label/LineHeight/Alignment.html @@ -0,0 +1,737 @@ + + + + Alignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Alignment

+
+
+ +
public enum Alignment : Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    Align text to the top of the available line height, with extra space added at the bottom. +This makes line height behave like traditional leading.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case top
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Center text within the available line height. This makes line height behave like half-leading, +and matches the model used by CSS.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case center
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    Align text to the bottom of the available line height, with extra space added at the top. +This is the default behavior of UILabel on iOS.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottom
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutAttributes.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutAttributes.html new file mode 100644 index 000000000..a80814ff0 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutAttributes.html @@ -0,0 +1,1053 @@ + + + + LayoutAttributes Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutAttributes

+
+
+ +
public struct LayoutAttributes
+
extension LayoutAttributes: Equatable
+ +
+
+

Contains layout-related metrics for an element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.center.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var center: CGPoint { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bounds + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.bounds.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var bounds: CGRect { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + transform + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.layer.transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transform: CATransform3D { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + alpha + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.alpha.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alpha: CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Corresponds to UIView.isUserInteractionEnabled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isUserInteractionEnabled: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isHidden + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.isHidden.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isHidden: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tintAdjustmentMode + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.tintAdjustmentMode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tintAdjustmentMode: UIView.TintAdjustmentMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(frame:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(frame: CGRect)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(size:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(size: CGSize)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(center:bounds:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(center: CGPoint, bounds: CGRect)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + frame + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var frame: CGRect { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + within(_:) + +
    +
    +
    +
    +
    +
    +

    Concatenates layout attributes, moving the receiver from the local +coordinate space of layoutAttributes and into its parent coordinate +space.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func within(_ layoutAttributes: LayoutAttributes) -> LayoutAttributes
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + layoutAttributes + + +
    +

    Another layout attributes object representing +a parent coordinate space.

    +
    +
    +
    +
    +

    Return Value

    +

    The resulting combined layout attributes object.

    +
    +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: LayoutAttributes, rhs: LayoutAttributes) -> Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutOptions.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutOptions.html new file mode 100644 index 000000000..fc92b204d --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutOptions.html @@ -0,0 +1,768 @@ + + + + LayoutOptions Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutOptions

+
+
+ +
public struct LayoutOptions : Equatable
+ +
+
+

Configuration options for caffeinated.

+ +

Generally these are only useful for experimenting with the performance profile of different +element compositions, and you should stick with default.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + default + +
    +
    +
    +
    +
    +
    +

    The default configuration.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let `default`: LayoutOptions
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hintRangeBoundaries + +
    +
    +
    +
    +
    +
    +

    Enables aggressive cache hinting along the boundaries of the range between constraints and +measured sizes. Requires elements to conform to the Caffeinated Layout contract for correct +behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var hintRangeBoundaries: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Allows cache misses on finite constraints to deduce a range-based match by searching for a +hit on the unconstrained value for each axis. Requires elements to adhere to the Caffeinated +Layout contract for correct behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var searchUnconstrainedKeys: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(hintRangeBoundaries: Bool, searchUnconstrainedKeys: Bool)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutSubelement.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutSubelement.html new file mode 100644 index 000000000..64ff05980 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutSubelement.html @@ -0,0 +1,1031 @@ + + + + LayoutSubelement Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutSubelement

+
+
+ +
public struct LayoutSubelement
+ +
+
+

A proxy that represents one child element of a layout.

+ +

This type acts as a proxy for a child element in a Layout. Layout protocol methods receive a +LayoutSubelements collection that contains exactly one proxy for each of the child elements +managed by the layout.

+ +

Use this proxy to get information about the associated element, like its size and traits. You +should also use the proxy to tell its corresponding element where to appear by calling the +proxy’s place(at:anchor:size:) method. Do this once for each subview from your +implementation of the layout’s +placeSubelements(in:subelements:environment:cache:) method.

+
+

Note

+ The LayoutSubelement API, and its documentation, are modeled after SwiftUI’s +LayoutSubview, with major +differences noted. + +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Optional attributes to apply to this subelement, such as opacity and transforms.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @LayoutSubelement
    +.Storage public var attributes: LayoutSubelement.Attributes { get nonmutating set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Assigns a position and size to a subelement.

    + +

    Call this method from your implementation of the Layout protocol’s +placeSubelements(in:subelements:environment:cache:) method for each +subelement arranged by the layout. Provide a position within the container’s bounds where +the subelement should appear, an anchor that indicates which part of the subelement appears +at that point, and a size.

    + +

    To learn the subelement’s preferred size for a given proposal before calling this method, +you can call sizeThatFits(_:) method on the subelement.

    + +

    If you call this method more than once for a subelement, the last call takes precedence. If +you don’t call this method for a subelement, the subelement fills the bounds of its +container.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func place(
    +    at position: CGPoint,
    +    anchor: UnitPoint = .topLeading,
    +    size: CGSize
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + position + + +
    +

    The place where the anchor of the subelement should appear in its container, +relative to the container’s bounds.

    +
    +
    + + anchor + + +
    +

    The unit point on the subelement that appears at position. You can use a +built-in point, like center, or you can create a custom UnitPoint.

    +
    +
    + + size + + +
    +

    The size of the subelement. In Blueprint, parents choose their children’s size. +You can determine a good size for a subelement by calling sizeThatFits(_:) on it.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + place(in:anchor:) + +
    +
    +
    +
    +
    +
    +

    Assigns a position and size to a subelement.

    + +

    This is a convenience for calling place(at:anchor:size:) with frame.origin and +frame.size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func place(
    +    in frame: CGRect,
    +    anchor: UnitPoint = .topLeading
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + frame + + +
    +

    The position and size of the subelement. The origin of this frame represents the +place where the anchor of the subelement should appear in its container, relative to the +container’s bounds. In Blueprint, parents choose their children’s size. You can +determine a good size for a subelement by calling sizeThatFits(_:) on it.

    +
    +
    + + anchor + + +
    +

    The unit point on the subelement that appears at position. You can use a +built-in point, like center, or you can create a custom UnitPoint.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + place(filling:) + +
    +
    +
    +
    +
    +
    +

    Assigns a position and size to a subelement.

    + +

    This is a convenience for calling place(at:anchor:size:) with a position of .zero and +this size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func place(
    +    filling size: CGSize
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sizeThatFits(_:) + +
    +
    +
    +
    +
    +
    +

    Asks the subelement for its size.

    + +

    In Blueprint, elements are ultimately sized by their parents, but you can use this method to +determine the size that a subelement would prefer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sizeThatFits(_ proposal: SizeConstraint) -> CGSize
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + proposal + + +
    +

    A proposed size constraint for the subelement.

    +
    +
    +
    +
    +

    Return Value

    +

    The size that the subelement would choose for itself, given the proposal.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Gets the layout traits of the subelement.

    + +

    Use this method to access the layout-specific Traits value for this +subelement.

    +
    +

    Important

    +

    Only call this method with the type of your Layout. For compatibility with +legacy layout, this is the only type of traits supported.

    + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func traits<LayoutType>(
    +    forLayoutType layoutType: LayoutType.Type
    +) -> LayoutType.Traits where LayoutType: Layout
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + layoutType + + +
    +

    The type of layout, which determines the type of the traits.

    +
    +
    +
    +
    +

    Return Value

    +

    The subelements’s layout traits.

    +
    +
    +
    +
  • +
  • +
    + + + + Attributes + +
    +
    +
    +
    +
    +
    +

    Optional additional attributes that can be applied to a subelement.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Attributes
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutSubelement/Attributes.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutSubelement/Attributes.html new file mode 100644 index 000000000..ed8aa062e --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutSubelement/Attributes.html @@ -0,0 +1,789 @@ + + + + Attributes Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Attributes

+
+
+ +
public struct Attributes
+ +
+
+

Optional additional attributes that can be applied to a subelement.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + transform + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.layer.transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transform: CATransform3D
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + alpha + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.alpha.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alpha: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Corresponds to UIView.isUserInteractionEnabled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isUserInteractionEnabled: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isHidden + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.isHidden.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isHidden: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tintAdjustmentMode + +
    +
    +
    +
    +
    +
    +

    Corresponds to UIView.tintAdjustmentMode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tintAdjustmentMode: UIView.TintAdjustmentMode
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter.html new file mode 100644 index 000000000..f08d2c565 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter.html @@ -0,0 +1,938 @@ + + + + LayoutWriter Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutWriter

+
+
+ +
public struct LayoutWriter : Element
+ +
+
+

A parent element which allows arbitrary, custom layout and positioning of its children.

+ +

Instead of creating a custom Element with a custom Layout, you might use +this element to create a customized layout in a more lightweight way.

+
LayoutWriter { context, layout in
+    layout.add(with: myFrame, child: myElement)
+    layout.add(with: myOtherFrame, child: myOtherElement)
+
+    layout.sizing = .unionOfChildren
+}
+
+ +
+
+ +
+
+
+
+ + +
+ +

Initialization +

+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Creates a new instance of the LayoutWriter with the custom layout provided by the builder.

    + +

    The parameters to the closure are the Context, which provides information about +the environment and sizing of the layout, and the Builder itself, which you use to +add child elements to the layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ build: @escaping Build)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Build + +
    +
    +
    +
    +
    +
    +

    The builder type passed to the LayoutWriter initializer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Build = (Context, inout Builder) -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + build + +
    +
    +
    +
    +
    +
    +

    The builder used to create the custom layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let build: Build
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+
    +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Builder + +
    +
    +
    +
    +
    +
    +

    The builder is the primary surface area you interact with when using a LayoutWriter.

    + +

    It provides you the ability to manage the sizing and measurement of the final layout, +alongside methods to add and manage the children of the layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Builder
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Context + +
    +
    +
    +
    +
    +
    +

    Provides the relevant information about the context in which the layout is occurring.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Context
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Sizing + +
    +
    +
    +
    +
    +
    +

    Controls the sizing calculation of the custom layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Sizing : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Child + +
    +
    +
    +
    +
    +
    +

    A child of the custom layout, providing its frame and element.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Child
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Builder.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Builder.html new file mode 100644 index 000000000..df0640038 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Builder.html @@ -0,0 +1,825 @@ + + + + Builder Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Builder

+
+
+ +
public struct Builder
+ +
+
+

The builder is the primary surface area you interact with when using a LayoutWriter.

+ +

It provides you the ability to manage the sizing and measurement of the final layout, +alongside methods to add and manage the children of the layout.

+ +
+
+ +
+
+
+
+ + +
+ +

Managing Sizing +

+
+
+
    +
  • +
    + + + + sizing + +
    +
    +
    +
    +
    +
    +

    How the size of the layout should be calculated. Defaults to .unionOfChildren, +which means the size will be big enough to contain the frames of all contained children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var sizing: Sizing
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Managing Children +

+
+
+
    +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    +

    The children of the custom layout, which specifies the child element and its frame.

    +

    Note

    + +

    You rarely need to access this property directly. Instead, add children via +the various provided add(...) methods. However, if you’re map-ing over an array +or other collection of content, using this property directly is useful.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [Child]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + add(with:key:child:) + +
    +
    +
    +
    +
    +
    +

    Adds a new child element to the layout with the provided frame and optional key.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(
    +    with frame: CGRect,
    +    key: AnyHashable? = nil,
    +    child: Element
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + add(_:) + +
    +
    +
    +
    +
    +
    +

    Adds a new child element to the layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(_ child: Child)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + modifyEach(using:) + +
    +
    +
    +
    +
    +
    +

    Enumerates each of the children, allowing you to modify them in place, +eg to align them all along a common alignment axis or to set a uniform size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func modifyEach(using change: (inout Child) -> Void)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Child.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Child.html new file mode 100644 index 000000000..846ef98b4 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Child.html @@ -0,0 +1,766 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child
+ +
+
+

A child of the custom layout, providing its frame and element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + frame + +
    +
    +
    +
    +
    +
    +

    The frame of the element in the coordinate space of the custom layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var frame: CGRect
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    +

    The key to use to disambiguate this element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    +

    The element to be displayed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var element: Element
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new child element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    frame: CGRect,
    +    key: AnyHashable? = nil,
    +    element: Element
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Context.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Context.html new file mode 100644 index 000000000..433e53d48 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Context.html @@ -0,0 +1,739 @@ + + + + Context Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Context

+
+
+ +
public struct Context
+ +
+
+

Provides the relevant information about the context in which the layout is occurring.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + size + +
    +
    +
    +
    +
    +
    +

    The size constraint the layout is occurring in.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var size: SizeConstraint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + phase + +
    +
    +
    +
    +
    +
    +

    The phase of the layout current occurring – measurement or layout.

    + +

    You can use this value to vary calculations as needed between phases; eg, to make +an element take up the full available size during the .layout phase, where sizing is known.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var phase: LayoutPhase
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutPhase + +
    +
    +
    +
    +
    +
    +

    The current phase of the layout event: .measurement or .layout.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LayoutPhase : Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Context/LayoutPhase.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Context/LayoutPhase.html new file mode 100644 index 000000000..471f7313e --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Context/LayoutPhase.html @@ -0,0 +1,738 @@ + + + + LayoutPhase Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LayoutPhase

+
+
+ +
public enum LayoutPhase : Equatable
+ +
+
+

The current phase of the layout event: .measurement or .layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + measurement + +
    +
    +
    +
    +
    +
    +

    The element is being measured.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case measurement
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layout(_:) + +
    +
    +
    +
    +
    +
    +

    The element is being laid out with a known size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case layout(CGSize)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the provided value based on if a measurement or layout is occurring.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onMeasure<Value>(
    +    _ onMeasure: () -> Value,
    +    onLayout: (CGSize) -> Value
    +) -> Value
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Sizing.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Sizing.html new file mode 100644 index 000000000..61b2a3eb0 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LayoutWriter/Sizing.html @@ -0,0 +1,725 @@ + + + + Sizing Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Sizing

+
+
+ +
public enum Sizing : Equatable
+ +
+
+

Controls the sizing calculation of the custom layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + unionOfChildren + +
    +
    +
    +
    +
    +
    +

    Ensures that the final size of element is large enough to fit all children, starting from (0,0).

    + +

    Negative origins of rects are not considered in this calculation. If you have the following layout:

    +
     ┌──────┐
    +       ├─────────┐
    +       *********
    + └─┬────┘**┌──────┤
    +   *******      
    +   *******      
    +┌──┴───┐***      
    +      ***      
    +      ***└──────┤
    +└──────┴──────────┘
    +
    + +

    The large rect will be the calculated size / bounds of the layout, starting at (0,0). Any rects with +negative origins will overhang the layout to the top or left, respectively.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case unionOfChildren
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fixed(_:) + +
    +
    +
    +
    +
    +
    +

    Fixes the layout size to the provided size. Children are positioned within this size, starting at (0,0) +Any rects with negative origins will overhang the layout to the top or left, respectively.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fixed(CGSize)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LifecycleObserver.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LifecycleObserver.html new file mode 100644 index 000000000..e45e76ab2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/LifecycleObserver.html @@ -0,0 +1,874 @@ + + + + LifecycleObserver Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

LifecycleObserver

+
+
+ +
public struct LifecycleObserver : Element
+ +
+
+

Allows element lifecycle callbacks to be inserted anywhere into the element tree.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrapped + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrapped: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onAppear + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onAppear: LifecycleCallback?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onDisappear + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onDisappear: LifecycleCallback?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    onAppear: LifecycleCallback? = nil,
    +    onDisappear: LifecycleCallback? = nil,
    +    wrapping: Element
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onAppear(_:) + +
    +
    +
    +
    +
    +
    +

    Adds a hook that will be called when this element appears.

    + +

    Callbacks run in depth-first traversal order, with parents before children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onAppear(_ callback: @escaping LifecycleCallback) -> LifecycleObserver
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onDisappear(_:) + +
    +
    +
    +
    +
    +
    +

    Adds a hook that will be called when this element disappears.

    + +

    Callbacks run in depth-first traversal order, with parents before children. There is no +guaranteed order between disappearance callbacks and backing views being removed from their +superviews.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func onDisappear(_ callback: @escaping LifecycleCallback) -> LifecycleObserver
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Opacity.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Opacity.html new file mode 100644 index 000000000..3add4e9e5 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Opacity.html @@ -0,0 +1,821 @@ + + + + Opacity Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Opacity

+
+
+ +
public struct Opacity : Element
+ +
+
+

Changes the opacity of the wrapped element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The content element whose opacity is being affected.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + opacity + +
    +
    +
    +
    +
    +
    +

    The opacity of the wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var opacity: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes an Opacity with the given content element and opacity.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    opacity: CGFloat,
    +    wrapping wrappedElement: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + opacity + + +
    +

    The opacity to be applied to the wrapped element.

    +
    +
    + + wrapping + + +
    +

    The content element to be made transparent.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Overlay.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Overlay.html new file mode 100644 index 000000000..ec07f9b20 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Overlay.html @@ -0,0 +1,927 @@ + + + + Overlay Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Overlay

+
+
+ +
public struct Overlay : Element
+ +
+
+

Stretches all of its child elements to fill the layout area, stacked on top of each other.

+ +

During a layout pass, measurement is calculated as the max size (in both x and y dimensions) +produced by measuring all of the child elements.

+ +

View-backed descendants will be z-ordered from back to front in the order of this element’s +children.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    +

    All elements displayed in the overlay.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [Child]
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a new overlay with the provided elements.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    elements: [Element] = [],
    +    configure: (inout Overlay) -> Void = { _ in }
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(elements:) + +
    +
    +
    +
    +
    +
    +

    Creates a new overlay using a result builder.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    @ElementBuilder<Overlay.Child> elements: () -> [Overlay.Child]
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + add(_:) + +
    +
    +
    +
    +
    +
    +

    Adds the provided element to the overlay.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "add(child:﹚")
    +public mutating func add(_ element: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + add(key:child:) + +
    +
    +
    +
    +
    +
    +

    Adds the provided element to the overlay, above other children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func add(key: AnyHashable? = nil, child: Element)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + key + + +
    +

    A key used to disambiguate children between subsequent updates of the view +hierarchy

    +
    +
    + + child + + +
    +

    The child element to add.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Element +

+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Overlay/Child.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Overlay/Child.html new file mode 100644 index 000000000..1663353d3 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Overlay/Child.html @@ -0,0 +1,762 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child
+
extension Overlay.Child: ElementBuilderChild
+ +
+
+

The child of an Overlay.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    +

    The child element

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var element: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    +

    An optional key to disambiguate between view updates

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(element:key:) + +
    +
    +
    +
    +
    +
    +

    Create a new child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(element: Element, key: AnyHashable? = nil)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Row.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Row.html new file mode 100644 index 000000000..6ffeec955 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Row.html @@ -0,0 +1,970 @@ + + + + Row Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Row

+
+
+ +
public struct Row : StackElement
+ +
+
+

Displays a list of items in a linear horizontal layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + RowAlignment + +
    +
    +
    +
    +
    +
    +

    Describes how the row’s children will be vertically aligned.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum RowAlignment : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + children + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var children: [(element: Element, traits: StackLayout.Traits, key: AnyHashable?)]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layout + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public private(set) var layout: StackLayout { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializer using result builder to declaratively build up a stack.

    +
    +

    Note

    + If element is a plain Element, then that Element will be implicitly converted into a StackLayout.Child with default values + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    alignment: RowAlignment = .top,
    +    underflow: StackLayout.UnderflowDistribution = .spaceEvenly,
    +    overflow: StackLayout.OverflowDistribution = .condenseProportionally,
    +    minimumSpacing: CGFloat = 0,
    +    @ElementBuilder<StackLayout.Child> elements: () -> [StackLayout.Child]
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + +
    + + alignment + + +
    +

    Specifies how children will be aligned vertically. Default: .top

    +
    +
    + + underflow + + +
    +

    Determines the layout when there is extra free space available. Default: .spaceEvenly

    +
    +
    + + overflow + + +
    +

    Determines the layout when there is not enough space to fit all children as measured. Default: .condenseProportionally

    +
    +
    + + minimumSpacing + + +
    +

    Spacing in between elements. Default: 0

    +
    +
    + + elements + + +
    +

    A block containing all elements to be included in the stack.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontalUnderflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var horizontalUnderflow: StackLayout.UnderflowDistribution { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + horizontalOverflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var horizontalOverflow: StackLayout.OverflowDistribution { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + verticalAlignment + +
    +
    +
    +
    +
    +
    +

    Specifies how children will be aligned vertically.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var verticalAlignment: RowAlignment { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumHorizontalSpacing: CGFloat { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Row/RowAlignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Row/RowAlignment.html new file mode 100644 index 000000000..852db0c4c --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Row/RowAlignment.html @@ -0,0 +1,849 @@ + + + + RowAlignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

RowAlignment

+
+
+ +
public enum RowAlignment : Equatable
+ +
+
+

Describes how the row’s children will be vertically aligned.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    Children will be stretched to fit the vertical size of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + align(to:) + +
    +
    +
    +
    +
    +
    +

    Using the specified alignment, children will be aligned relatively to each other, and +then all the contents will be aligned to the row’s bounding box.

    + +

    This case can be used for custom alignments. For common alignments you can use the +existing static instancestop, center, and bottom.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case align(to: VerticalAlignment)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the top edge of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    Children will be vertically centered in the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the bottom edge of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the top edge of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "top")
    +public static let leading: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    Children will be aligned to the bottom edge of the row.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "bottom")
    +public static let trailing: Row.RowAlignment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Rule.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Rule.html new file mode 100644 index 000000000..73fc7171b --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Rule.html @@ -0,0 +1,889 @@ + + + + Rule Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Rule

+
+
+ +
public struct Rule : ProxyElement
+ +
+
+

A solid line, parallel to the x or y axis, with a fixed thickness but unconstrained in length, +suitable for use as a separator.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Orientation + +
    +
    +
    +
    +
    +
    +

    Represents whether the rule is parallel to the x or y axis.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Orientation
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Thickness + +
    +
    +
    +
    +
    +
    +

    Represents the thickness of a rule in the direction perpendicular to its orientation.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Thickness
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + orientation + +
    +
    +
    +
    +
    +
    +

    Whether this rule is horizontal or vertical.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var orientation: Orientation
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + thickness + +
    +
    +
    +
    +
    +
    +

    The thickness of this rule in the direction perpendicular to its orientation.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var thickness: Thickness
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + color + +
    +
    +
    +
    +
    +
    +

    The color that the rule should be drawn.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var color: UIColor
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a Rule with the given properties.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(orientation: Orientation, color: UIColor, thickness: Thickness = .hairline)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + orientation + + +
    +

    Whether the rule is horizontal or vertical.

    +
    +
    + + color + + +
    +

    The color that the rule should be drawn.

    +
    +
    + + thickness + + +
    +

    The thickness of the rule in the direction perpendicular to its orientation. +Defaults to a hairline thickness, meaning the thinnest possible line that can be drawn.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + elementRepresentation + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var elementRepresentation: Element { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Rule/Orientation.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Rule/Orientation.html new file mode 100644 index 000000000..e7e0a850b --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Rule/Orientation.html @@ -0,0 +1,708 @@ + + + + Orientation Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Orientation

+
+
+ +
public enum Orientation
+ +
+
+

Represents whether the rule is parallel to the x or y axis.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + horizontal + +
    +
    +
    +
    +
    +
    +

    Indicates that the rule is parallel to the x axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case horizontal
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + vertical + +
    +
    +
    +
    +
    +
    +

    Indicates that the rule is parallel to the y axis.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case vertical
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Rule/Thickness.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Rule/Thickness.html new file mode 100644 index 000000000..a0e61a192 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Rule/Thickness.html @@ -0,0 +1,709 @@ + + + + Thickness Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Thickness

+
+
+ +
public enum Thickness
+ +
+
+

Represents the thickness of a rule in the direction perpendicular to its orientation.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + hairline + +
    +
    +
    +
    +
    +
    +

    Indicates that the rule should be exactly 1 screen pixel thick, +the thinnest possible line that can be drawn.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case hairline
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + points(_:) + +
    +
    +
    +
    +
    +
    +

    An exact thickness in points.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case points(CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView.html new file mode 100644 index 000000000..389648df3 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView.html @@ -0,0 +1,1241 @@ + + + + ScrollView Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ScrollView

+
+
+ +
public struct ScrollView : Element
+ +
+
+

Wraps a content element and makes it scrollable.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The content to be scrolled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentSize + +
    +
    +
    +
    +
    +
    +

    Determines the sizing behavior of the content within the scroll view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentSize: ContentSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + alwaysBounceVertical + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alwaysBounceVertical: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alwaysBounceHorizontal: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentInset + +
    +
    +
    +
    +
    +
    +

    How much the content of the ScrollView should be inset.

    + +

    Note: When keyboardAdjustmentMode is used, it will also adjust +the on-screen UIScrollViews contentInset.bottom to make space for the keyboard.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentInset: UIEdgeInsets
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + centersUnderflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var centersUnderflow: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var showsHorizontalScrollIndicator: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var showsVerticalScrollIndicator: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pullToRefreshBehavior + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var pullToRefreshBehavior: PullToRefreshBehavior
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyboardDismissMode + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var keyboardDismissMode: UIScrollView.KeyboardDismissMode
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentInsetAdjustmentBehavior: UIScrollView.ContentInsetAdjustmentBehavior
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var keyboardAdjustmentMode: KeyboardAdjustmentMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + delaysContentTouches + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var delaysContentTouches: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentOffsetTrigger + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentOffsetTrigger: ScrollTrigger?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    _ contentSize: ContentSize = .fittingHeight,
    +    wrapping element: Element,
    +    configure: (inout ScrollView) -> Void = { _ in }
    +)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum KeyboardAdjustmentMode : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ContentSize + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ContentSize : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + PullToRefreshBehavior + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PullToRefreshBehavior
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ScrollTrigger + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class ScrollTrigger
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ContentOffset + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ContentOffset
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ContentOffset.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ContentOffset.html new file mode 100644 index 000000000..cd9258d62 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ContentOffset.html @@ -0,0 +1,784 @@ + + + + ContentOffset Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ContentOffset

+
+
+ +
public struct ContentOffset
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + ScrollingContext + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct ScrollingContext
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Provider + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Provider = (ScrollingContext) -> CGPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: ScrollView.ContentOffset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: ScrollView.ContentOffset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(provider:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(provider: @escaping Provider)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ContentOffset/ScrollingContext.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ContentOffset/ScrollingContext.html new file mode 100644 index 000000000..31dcb4044 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ContentOffset/ScrollingContext.html @@ -0,0 +1,731 @@ + + + + ScrollingContext Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ScrollingContext

+
+
+ +
public struct ScrollingContext
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + contentSize + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentSize: CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scrollViewBounds + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var scrollViewBounds: CGRect
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentInsets + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentInsets: UIEdgeInsets
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ContentSize.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ContentSize.html new file mode 100644 index 000000000..1d815f19a --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ContentSize.html @@ -0,0 +1,761 @@ + + + + ContentSize Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ContentSize

+
+
+ +
public enum ContentSize : Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + fittingWidth + +
    +
    +
    +
    +
    +
    +

    The content will fill the height of the scroller, width will be dynamic

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fittingWidth
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fittingHeight + +
    +
    +
    +
    +
    +
    +

    The content will fill the width of the scroller, height will be dynamic

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fittingHeight
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fittingContent + +
    +
    +
    +
    +
    +
    +

    The content size will be the minimum required to fit the content.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fittingContent
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + custom(_:) + +
    +
    +
    +
    +
    +
    +

    Manually provided content size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case custom(CGSize)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/KeyboardAdjustmentMode.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/KeyboardAdjustmentMode.html new file mode 100644 index 000000000..5a8e0b4b3 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/KeyboardAdjustmentMode.html @@ -0,0 +1,705 @@ + + + + KeyboardAdjustmentMode Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

KeyboardAdjustmentMode

+
+
+ +
public enum KeyboardAdjustmentMode : Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + none + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case none
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + adjustsWhenVisible + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case adjustsWhenVisible
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/PullToRefreshBehavior.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/PullToRefreshBehavior.html new file mode 100644 index 000000000..2d11fac27 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/PullToRefreshBehavior.html @@ -0,0 +1,731 @@ + + + + PullToRefreshBehavior Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

PullToRefreshBehavior

+
+
+ +
public enum PullToRefreshBehavior
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + disabled + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case disabled
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + enabled(action:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case enabled(action: () -> Void)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + refreshing + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case refreshing
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ScrollTrigger.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ScrollTrigger.html new file mode 100644 index 000000000..2aacfdfdb --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ScrollView/ScrollTrigger.html @@ -0,0 +1,705 @@ + + + + ScrollTrigger Class Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ScrollTrigger

+
+
+ +
public final class ScrollTrigger
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scroll(to:animated:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func scroll(to: ContentOffset, animated: Bool)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl.html new file mode 100644 index 000000000..3c30e1ca0 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl.html @@ -0,0 +1,972 @@ + + + + SegmentedControl Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

SegmentedControl

+
+
+ +
public struct SegmentedControl : Element, Measurable
+ +
+
+

Allows users to pick from an array of options.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + items + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var items: [Item]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + selection + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var selection: Selection
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + font + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var font: UIFont
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + roundingScale + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var roundingScale: CGFloat
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(items: [Item] = [], configure: (inout SegmentedControl) -> Void = { _ in })
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    selection: Selection = .none,
    +    font: UIFont = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body),
    +    @Builder<Item> itemBuilder: () -> [Item]
    +)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func appendItem(title: String, width: Item.Width = .automatic, onSelect: @escaping () -> Void)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + measure(in:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func measure(in constraint: SizeConstraint) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Selection + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Selection
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Item + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Item
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl/Item.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl/Item.html new file mode 100644 index 000000000..e940effe2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl/Item.html @@ -0,0 +1,758 @@ + + + + Item Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Item

+
+
+ +
public struct Item
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + title + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var title: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + width + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var width: Width
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onSelect + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onSelect: () -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Width + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Width
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl/Item/Width.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl/Item/Width.html new file mode 100644 index 000000000..2effe7c83 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl/Item/Width.html @@ -0,0 +1,705 @@ + + + + Width Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Width

+
+
+ +
public enum Width
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + automatic + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case automatic
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + specific(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case specific(CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl/Selection.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl/Selection.html new file mode 100644 index 000000000..0b1103df4 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SegmentedControl/Selection.html @@ -0,0 +1,705 @@ + + + + Selection Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Selection

+
+
+ +
public enum Selection
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + none + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case none
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + index(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case index(Int)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SizeConstraint.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SizeConstraint.html new file mode 100644 index 000000000..8724ab96e --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SizeConstraint.html @@ -0,0 +1,1044 @@ + + + + SizeConstraint Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

SizeConstraint

+
+
+ +
public struct SizeConstraint : Hashable, CustomStringConvertible
+ +
+
+

Defines the maximum size for a measurement.

+ +

Currently this constraint type can only handles layout where +the primary (breaking) axis is horizontal (row in CSS-speak).

+ +
+
+ +
+
+
+
    +
  • +
    + + + + width + +
    +
    +
    +
    +
    +
    +

    The width constraint.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @SizeConstraint
    +.UnconstrainedInfiniteAxis public var width: Axis { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + height + +
    +
    +
    +
    +
    +
    +

    The height constraint.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @SizeConstraint
    +.UnconstrainedInfiniteAxis public var height: Axis { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(width:height:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(width: Axis, height: Axis)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

CustomDebugStringConvertible +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unconstrained + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var unconstrained: SizeConstraint { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ size: CGSize)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(width:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(width: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(height:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(height: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimum + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimum: CGSize { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + maximum + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var maximum: CGSize { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(width:height:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(width: CGFloat, height: CGFloat) -> SizeConstraint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inset(by:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func inset(by insets: UIEdgeInsets) -> SizeConstraint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Axis + +
    +
    +
    +
    +
    +
    +

    Represents a size constraint for a single axis.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Axis : Hashable, CustomStringConvertible
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    This property wrapper checks the value of atMost cases, and turns it into an +unconstrained axis if the value equals greatestFiniteMagnitude or isInfinite.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @propertyWrapper
    +public struct UnconstrainedInfiniteAxis : Equatable, Hashable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SizeConstraint/Axis.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SizeConstraint/Axis.html new file mode 100644 index 000000000..3a910462a --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SizeConstraint/Axis.html @@ -0,0 +1,1080 @@ + + + + Axis Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Axis

+
+
+ +
public enum Axis : Hashable, CustomStringConvertible
+ +
+
+

Represents a size constraint for a single axis.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + atMost(_:) + +
    +
    +
    +
    +
    +
    +

    The measurement should treat the associated value as the largest +possible size in the given dimension.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case atMost(CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unconstrained + +
    +
    +
    +
    +
    +
    +

    The measurement is unconstrained in the given dimension.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case unconstrained
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + maximum + +
    +
    +
    +
    +
    +
    +

    The maximum magnitude in the given dimension.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var maximum: CGFloat { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimum + +
    +
    +
    +
    +
    +
    +

    The minimum magnitude in the given dimension.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimum: CGFloat { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + constrainedValue + +
    +
    +
    +
    +
    +
    +

    The constraint value in this dimension, or nil if this dimension is unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var constrainedValue: CGFloat? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +(_:_:) + +
    +
    +
    +
    +
    +
    +

    Adds a scalar value to an Axis. If the Axis is unconstrained the +result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func + (lhs: SizeConstraint.Axis, rhs: CGFloat) -> SizeConstraint.Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -(_:_:) + +
    +
    +
    +
    +
    +
    +

    Subtracts a scalar value from an Axis. If the Axis is unconstrained +the result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func - (lhs: SizeConstraint.Axis, rhs: CGFloat) -> SizeConstraint.Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + /(_:_:) + +
    +
    +
    +
    +
    +
    +

    Divides an Axis by a scalar value. If the Axis is unconstrained the +result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func / (lhs: SizeConstraint.Axis, rhs: CGFloat) -> SizeConstraint.Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + *(_:_:) + +
    +
    +
    +
    +
    +
    +

    Multiplies an Axis by a scalar value. If the Axis is unconstrained +the result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func * (lhs: SizeConstraint.Axis, rhs: CGFloat) -> SizeConstraint.Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isGreaterThanZero + +
    +
    +
    +
    +
    +
    +

    If the Axis is greater than zero.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isGreaterThanZero: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +=(_:_:) + +
    +
    +
    +
    +
    +
    +

    Adds a scalar value to an Axis. If the Axis is unconstrained the +result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func += (lhs: inout SizeConstraint.Axis, rhs: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -=(_:_:) + +
    +
    +
    +
    +
    +
    +

    Subtracts a scalar value from an Axis. If the Axis is unconstrained +the result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func -= (lhs: inout SizeConstraint.Axis, rhs: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + /=(_:_:) + +
    +
    +
    +
    +
    +
    +

    Divides an Axis by a scalar value. If the Axis is unconstrained the +result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func /= (lhs: inout SizeConstraint.Axis, rhs: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + *=(_:_:) + +
    +
    +
    +
    +
    +
    +

    Multiplies an Axis by a scalar value. If the Axis is unconstrained +the result will remain unconstrained.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func *= (lhs: inout SizeConstraint.Axis, rhs: CGFloat)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

CustomDebugStringConvertible +

+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SizeConstraint/UnconstrainedInfiniteAxis.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SizeConstraint/UnconstrainedInfiniteAxis.html new file mode 100644 index 000000000..2cd7ab74e --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/SizeConstraint/UnconstrainedInfiniteAxis.html @@ -0,0 +1,708 @@ + + + + UnconstrainedInfiniteAxis Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UnconstrainedInfiniteAxis

+
+
+ +
@propertyWrapper
+public struct UnconstrainedInfiniteAxis : Equatable, Hashable
+ +
+
+

This property wrapper checks the value of atMost cases, and turns it into an +unconstrained axis if the value equals greatestFiniteMagnitude or isInfinite.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedValue: Axis { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(wrappedValue:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(wrappedValue value: Axis)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Spacer.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Spacer.html new file mode 100644 index 000000000..1ba4d190a --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Spacer.html @@ -0,0 +1,816 @@ + + + + Spacer Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Spacer

+
+
+ +
public struct Spacer : Element
+ +
+
+

An element that does not display anything (it has neither children or a view).

+ +

Spacer simply takes up a specified amount of space within a layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + size + +
    +
    +
    +
    +
    +
    +

    The size that this spacer will take in a layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var size: CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(size:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new spacer with the given size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(size: CGSize)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(width:height:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new spacer with the given width and height.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(width: CGFloat = 0.0, height: CGFloat = 0.0)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Initializes a new spacer with the given value for the width and height.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ value: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout.html new file mode 100644 index 000000000..6aaa0970b --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout.html @@ -0,0 +1,1178 @@ + + + + StackLayout Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

StackLayout

+
+
+ +
public struct StackLayout : Layout
+ +
+
+

A layout implementation that linearly lays out an array of children along either the horizontal or vertical axis.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + defaultTraits + +
    +
    +
    +
    +
    +
    +

    The default traits for a child contained within a stack layout

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var defaultTraits: Traits { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AlignmentGuide + +
    +
    +
    +
    +
    +
    +

    Determines how a stack child will be aligned on the cross axis relative to other children.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AlignmentGuide
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Traits + +
    +
    +
    +
    +
    +
    +

    Contains traits that affect the layout of individual children in the stack.

    + +

    See StackElement.add(...) for details.

    +

    In Xcode

    + +

    StackElement.add()

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Traits
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + axis + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var axis: Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + underflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var underflow: StackLayout.UnderflowDistribution
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + overflow + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var overflow: StackLayout.OverflowDistribution
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + alignment + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alignment: Alignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimumSpacing + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var minimumSpacing: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(axis:alignment:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(axis: Axis, alignment: Alignment)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + measure(in:items:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func measure(in constraint: SizeConstraint, items: [(traits: Traits, content: Measurable)]) -> CGSize
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layout(size:items:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func layout(size: CGSize, items: [(traits: Traits, content: Measurable)]) -> [LayoutAttributes]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Axis + +
    +
    +
    +
    +
    +
    +

    The direction of the stack.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Axis
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + UnderflowDistribution + +
    +
    +
    +
    +
    +
    +

    Determines the on-axis layout when there is extra free space available.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum UnderflowDistribution
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + OverflowDistribution + +
    +
    +
    +
    +
    +
    +

    Determines the on-axis layout when there is not enough space to fit all children as measured.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum OverflowDistribution
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Alignment + +
    +
    +
    +
    +
    +
    +

    Determines the cross-axis layout (height for a horizontal stack, width for a vertical stack).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Alignment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Layout logic +

+
+
+ +
+
+
+ + +
+ +

Result Builders +

+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Alignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Alignment.html new file mode 100644 index 000000000..da8179ca2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Alignment.html @@ -0,0 +1,709 @@ + + + + Alignment Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Alignment

+
+
+ +
public enum Alignment
+ +
+
+

Determines the cross-axis layout (height for a horizontal stack, width for a vertical stack).

+ +
+
+ +
+
+
+
    +
  • +
    + + + + fill + +
    +
    +
    +
    +
    +
    +

    Children will be stretched to the size of the stack.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fill
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + align(to:) + +
    +
    +
    +
    +
    +
    +

    Children will be aligned relatively to each other, and then all the contents will be +aligned to the stack’s bounding box, according to the specified alignment.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case align(to: AlignmentID.Type)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/AlignmentGuide.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/AlignmentGuide.html new file mode 100644 index 000000000..d5d2061d1 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/AlignmentGuide.html @@ -0,0 +1,682 @@ + + + + AlignmentGuide Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

AlignmentGuide

+
+
+ +
public struct AlignmentGuide
+ +
+
+

Determines how a stack child will be aligned on the cross axis relative to other children.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + computeValue + +
    +
    +
    +
    +
    +
    +

    Returns a value along the stack’s cross axis, in the element’s own coordinate space, +where a child should be aligned relative to the alignment guides of its siblings.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var computeValue: (ElementDimensions) -> CGFloat
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Axis.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Axis.html new file mode 100644 index 000000000..b42bf0d58 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Axis.html @@ -0,0 +1,706 @@ + + + + Axis Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Axis

+
+
+ +
public enum Axis
+ +
+
+

The direction of the stack.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + horizontal + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case horizontal
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + vertical + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case vertical
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Child.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Child.html new file mode 100644 index 000000000..6b4321ef4 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Child.html @@ -0,0 +1,859 @@ + + + + Child Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Child

+
+
+ +
public struct Child
+
extension StackLayout.Child: ElementBuilderChild
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + element + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let element: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + traits + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let traits: StackLayout.Traits
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + key + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let key: AnyHashable?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Priority + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Priority
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    element: Element,
    +    traits: StackLayout.Traits = .init(),
    +    key: AnyHashable? = nil
    +)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    element: Element,
    +    priority: Priority = .flexible,
    +    alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,
    +    key: AnyHashable? = nil
    +)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Result Builders +

+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ element: Element)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Child/Priority.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Child/Priority.html new file mode 100644 index 000000000..2b0f0917b --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Child/Priority.html @@ -0,0 +1,765 @@ + + + + Priority Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Priority

+
+
+ +
public enum Priority
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + fixed + +
    +
    +
    +
    +
    +
    +

    The element has a fixed size, with a grow and shrink priority of 0. +The element will neither grow nor shrink during overflow and underflow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case fixed
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + flexible + +
    +
    +
    +
    +
    +
    +

    The element has a flexible size, with a grow and shrink priority of 1. +The element will grow during underflow and shrink during overflow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case flexible
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + grows + +
    +
    +
    +
    +
    +
    +

    The element has a flexible size, it will grow if the stack underflows, +but it will not shrink if the stack overflows.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case grows
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shrinks + +
    +
    +
    +
    +
    +
    +

    The element has a flexible size, it will shrink if the stack overflows, +but it will not grow if the stack underflows.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case shrinks
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/OverflowDistribution.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/OverflowDistribution.html new file mode 100644 index 000000000..5be99822c --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/OverflowDistribution.html @@ -0,0 +1,708 @@ + + + + OverflowDistribution Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

OverflowDistribution

+
+
+ +
public enum OverflowDistribution
+ +
+
+

Determines the on-axis layout when there is not enough space to fit all children as measured.

+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Each child will shrink proportionally to its measured size.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case condenseProportionally
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + condenseUniformly + +
    +
    +
    +
    +
    +
    +

    Each child will shrink by the same amount.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case condenseUniformly
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Traits.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Traits.html new file mode 100644 index 000000000..7154a8fd2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/Traits.html @@ -0,0 +1,786 @@ + + + + Traits Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Traits

+
+
+ +
public struct Traits
+ +
+
+

Contains traits that affect the layout of individual children in the stack.

+ +

See StackElement.add(...) for details.

+

In Xcode

+ +

StackElement.add()

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/UnderflowDistribution.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/UnderflowDistribution.html new file mode 100644 index 000000000..bf8beebe1 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/StackLayout/UnderflowDistribution.html @@ -0,0 +1,816 @@ + + + + UnderflowDistribution Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UnderflowDistribution

+
+
+ +
public enum UnderflowDistribution
+ +
+
+

Determines the on-axis layout when there is extra free space available.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + spaceEvenly + +
    +
    +
    +
    +
    +
    +

    Additional space will be evenly divided into the spacing between items.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case spaceEvenly
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + growProportionally + +
    +
    +
    +
    +
    +
    +

    Additional space will be divided proportionally by the measured size of each child.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case growProportionally
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + growUniformly + +
    +
    +
    +
    +
    +
    +

    Additional space will be distributed uniformly between children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case growUniformly
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + justifyToStart + +
    +
    +
    +
    +
    +
    +

    Additional space will appear after all children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case justifyToStart
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + justifyToCenter + +
    +
    +
    +
    +
    +
    +

    Additional space will be distributed on either side of all children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case justifyToCenter
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + justifyToEnd + +
    +
    +
    +
    +
    +
    +

    Additional space will be appear before all children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case justifyToEnd
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Tappable.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Tappable.html new file mode 100644 index 000000000..c84f211bb --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Tappable.html @@ -0,0 +1,784 @@ + + + + Tappable Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Tappable

+
+
+ +
public struct Tappable : Element
+ +
+
+

Wraps a content element and calls the provided closure when tapped.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TextAttributeContainer.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TextAttributeContainer.html new file mode 100644 index 000000000..dde1ca402 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TextAttributeContainer.html @@ -0,0 +1,966 @@ + + + + TextAttributeContainer Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TextAttributeContainer

+
+
+ +
public struct TextAttributeContainer
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + empty + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let empty: TextAttributeContainer
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Get or set for the given AttributedTextKey.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Key>(key: Key.Type) -> Key.Value? where Key : AttributedTextKey { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Font +

+
+
+
    +
  • +
    + + + + font + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var font: UIFont? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Color +

+
+
+
    +
  • +
    + + + + color + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var color: UIColor? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Tracking +

+
+
+
    +
  • +
    + + + + tracking + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tracking: CGFloat? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Underline +

+
+
+
    +
  • +
    + + + + underlineStyle + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var underlineStyle: NSUnderlineStyle? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + underlineColor + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var underlineColor: UIColor? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Paragraph style +

+
+
+
    +
  • +
    + + + + paragraphStyle + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var paragraphStyle: NSParagraphStyle? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Link +

+
+
+
    +
  • +
    + + + + link + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var link: URL? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TextField.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TextField.html new file mode 100644 index 000000000..8737a6409 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TextField.html @@ -0,0 +1,1461 @@ + + + + TextField Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TextField

+
+
+ +
public struct TextField : Element
+ +
+
+

Displays a text field.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + text + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var text: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + placeholder + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var placeholder: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onChange + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onChange: ((String) -> Void)?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + secure + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var secure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isEnabled: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + textAlignment + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var textAlignment: NSTextAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + font + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var font: UIFont
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + textColor + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var textColor: UIColor
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + clearButtonMode + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var clearButtonMode: UITextField.ViewMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyboardType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var keyboardType: UIKeyboardType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyboardAppearance + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var keyboardAppearance: UIKeyboardAppearance
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var autocapitalizationType: UITextAutocapitalizationType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + autocorrectionType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var autocorrectionType: UITextAutocorrectionType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + spellCheckingType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var spellCheckingType: UITextSpellCheckingType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + textContentType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var textContentType: UITextContentType?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onReturn + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onReturn: (() -> Void)?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + returnKeyType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var returnKeyType: UIReturnKeyType
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var enablesReturnKeyAutomatically: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + focusBinding + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var focusBinding: FocusBinding?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessibilityTraits + +
    +
    +
    +
    +
    +
    +

    A set of accessibility traits that should be applied to the field, these will be merged with any existing traits. +These traits should relate to the content of the text, for example .header, .link, or .updatesFrequently.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var accessibilityTraits: Set<AccessibilityElement.Trait>?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(text:configure:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(text: String, configure: (inout TextField) -> Void = { _ in })
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + focused(when:equals:) + +
    +
    +
    +
    +
    +
    +

    Modifies this text field by binding its focus state to the given state value.

    + +

    Use this modifier to cause the text field to receive focus whenever the state equals +the value. Typically, you create an enumeration of fields that may receive focus, bind an +instance of this enumeration, and assign its cases to focusable views.

    + +

    The following example uses the cases of a LoginForm enumeration to bind the focus state of +two TextField elements. A sign-in button validates the fields and sets the bound +focusedField value to any field that requires the user to correct a problem.

    +
    struct LoginForm: ProxyElement {
    +    enum Field: Hashable {
    +        case username
    +        case password
    +    }
    +
    +    var username: String
    +    var password: String
    +    var handleLogin: () -> Void
    +
    +    @FocusState private var focusedField: Field?
    +
    +    var elementRepresentation: Element {
    +        Column { column in
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .username)
    +            )
    +
    +            column.add(
    +                child: TextField(text: "")
    +                    .focused(when: $focusedField, equals: .password)
    +            )
    +
    +            column.add(
    +                child: Button(
    +                    onTap: {
    +                        if username.isEmpty {
    +                            focusedField = .username
    +                        } else if password.isEmpty {
    +                            focusedField = .password
    +                        } else {
    +                            handleLogin()
    +                        }
    +                    },
    +                    wrapping: Label(text: "Sign In")
    +                )
    +            )
    +        }
    +    }
    +}
    +
    + +

    To control focus using a Boolean, use the focused(when:) method instead.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func focused<Value>(
    +    when state: FocusState<Value?>,
    +    equals value: Value
    +) -> Self
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + state + + +
    +

    The state to bind to.

    +
    +
    + + value + + +
    +

    The value to match against when determining whether the binding should change.

    +
    +
    +
    +
    +

    Return Value

    +

    A modified text field.

    +
    +
    +
    +
  • +
  • +
    + + + + focused(when:) + +
    +
    +
    +
    +
    +
    +

    Modifies this text field by binding its focus state to the given Boolean state value.

    + +

    Use this modifier to cause the text field to receive focus whenever the the condition is +true. You can use this modifier to observe the focus state of a text field, or +programmatically focus or blur the field.

    + +

    In the following example, a single text field accepts a user’s desired username. The text +field binds its focus state to the Boolean value isUsernameFocused. A “Submit” button’s +action checks if the username is empty, and sets isUsernameFocused to true, which causes +focus to return to the text field.

    +
    struct SignupForm: ProxyElement {
    +    var username: String
    +    var onSignUpTapped: () -> Void
    +
    +    @FocusState var isUsernameFocused: Bool
    +
    +    var elementRepresentation: Element {
    +        Column { column in
    +            column.add(
    +                child: TextField(text: username)
    +                    .focused(when: $isUsernameFocused)
    +            )
    +
    +            column.add(
    +                child: Button(
    +                    onTap: {
    +                        if username.isEmpty {
    +                            isUsernameFocused = true
    +                        } else {
    +                            onSignUpTapped()
    +                        }
    +                    },
    +                    wrapping: Label(text: "Submit")
    +                )
    +            )
    +        }
    +    }
    +}
    +
    + +

    To control focus by matching a value, use the focused(when:equals:) method instead.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func focused(when condition: FocusState<Bool>) -> TextField
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + condition + + +
    +

    The state to bind to.

    +
    +
    +
    +
    +

    Return Value

    +

    A modified text field.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TextShadow.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TextShadow.html new file mode 100644 index 000000000..d0bf9cbdc --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TextShadow.html @@ -0,0 +1,788 @@ + + + + TextShadow Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TextShadow

+
+
+ +
public struct TextShadow : Hashable
+ +
+
+

Describes a shadow that can be applied to text elements, like Label.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + radius + +
    +
    +
    +
    +
    +
    +

    The blur radius of the shadow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var radius: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + opacity + +
    +
    +
    +
    +
    +
    +

    The opacity of the shadow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var opacity: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + offset + +
    +
    +
    +
    +
    +
    +

    The offset of the shadow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var offset: UIOffset
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + color + +
    +
    +
    +
    +
    +
    +

    The color of the shadow.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var color: UIColor
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(radius: CGFloat, opacity: CGFloat, offset: UIOffset, color: UIColor)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TintAdjustmentMode.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TintAdjustmentMode.html new file mode 100644 index 000000000..34135afc2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TintAdjustmentMode.html @@ -0,0 +1,789 @@ + + + + TintAdjustmentMode Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TintAdjustmentMode

+
+
+ +
public struct TintAdjustmentMode : Element
+ +
+
+

TintAdjustmentMode conditionally modifies the tint adjustment mode of its wrapped element.

+
+

Note

+ When a tint adjustment mode is applied, any elements within the wrapped element will adopt the parent’s tint adjustment mode. + +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + tintAdjustmentMode + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tintAdjustmentMode: UIView.TintAdjustmentMode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:wrapping:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ tintAdjustmentMode: UIView.TintAdjustmentMode, wrapping element: Element)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Transformed.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Transformed.html new file mode 100644 index 000000000..21601cbd3 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/Transformed.html @@ -0,0 +1,882 @@ + + + + Transformed Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Transformed

+
+
+ +
public struct Transformed : Element
+ +
+
+

Changes the transform of the wrapped element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The content element whose transform is being affected.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + transform + +
    +
    +
    +
    +
    +
    +

    The transform of the wrapped element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transform: CATransform3D
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a Transformed with the given content element and 3D transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    transform: CATransform3D,
    +    wrapping wrappedElement: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + transform + + +
    +

    The 3D transform to be applied to the wrapped element.

    +
    +
    + + wrapping + + +
    +

    The content element to be made transparent.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes a Transformed with the given content element and DD transform.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    transform: CGAffineTransform,
    +    wrapping wrappedElement: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + transform + + +
    +

    The 2D transform to be applied to the wrapped element.

    +
    +
    + + wrapping + + +
    +

    The content element to be made transparent.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TransitionContainer.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TransitionContainer.html new file mode 100644 index 000000000..da778b548 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/TransitionContainer.html @@ -0,0 +1,959 @@ + + + + TransitionContainer Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TransitionContainer

+
+
+ +
public struct TransitionContainer : Element
+ +
+
+

Wraps a content element and adds transitions when the element appears, +disappears, or changes layout.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + appearingTransition + +
    +
    +
    +
    +
    +
    +

    The transition to apply when the wrapped element is appearing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var appearingTransition: VisibilityTransition?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The transition to apply when the wrapped element is disappearing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var disappearingTransition: VisibilityTransition?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutTransition + +
    +
    +
    +
    +
    +
    +

    The transition to apply when the wrapped element’s layout is changing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutTransition: LayoutTransition
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + wrappedElement + +
    +
    +
    +
    +
    +
    +

    The element to which transitions are being applied.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wrappedElement: Element
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(wrapping:) + +
    +
    +
    +
    +
    +
    +

    Create a transition container wrapping an element.

    + +

    The created container’s default transitions are:

    + + + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, message: "Use TransitionContainer(transitioning:﹚, which has better defaults")
    +public init(wrapping element: Element)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + wrapping + + +
    +

    The element to which transitions will be applied.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Create a transition container wrapping an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(
    +    appearingTransition: VisibilityTransition? = nil,
    +    disappearingTransition: VisibilityTransition? = nil,
    +    layoutTransition: LayoutTransition = .inherited,
    +    transitioning element: Element
    +)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + appearingTransition + + +
    +

    The transition to use when the element appears. By default, no transition.

    +
    +
    + + disappearingTransition + + +
    +

    The transition to use when the element disappears. By default, no transition.

    +
    +
    + + layoutTransition + + +
    +

    The transition to use when the element’s layout changes. The default value is +.inherited, which means the element will participate in the same transition as its +nearest ancestor with a specified transition.

    +
    +
    + + transitioning + + +
    +

    The element to which transitions will be applied.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + content + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var content: ElementContent { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func backingViewDescription(with context: ViewDescriptionContext) -> ViewDescription?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/UIViewElementContext.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/UIViewElementContext.html new file mode 100644 index 000000000..0cc3921b2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/UIViewElementContext.html @@ -0,0 +1,709 @@ + + + + UIViewElementContext Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UIViewElementContext

+
+
+ +
public struct UIViewElementContext
+ +
+
+

Context object passed into updateUIView.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + isMeasuring + +
    +
    +
    +
    +
    +
    +

    This bool indicates whether the view being updated is the static measuring instance. You may +not want to perform certain updates if it is (such as updating field trigger references).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isMeasuring: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + environment + +
    +
    +
    +
    +
    +
    +

    The environment the element is rendered in.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var environment: Environment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/URLHandlerEnvironmentKey.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/URLHandlerEnvironmentKey.html new file mode 100644 index 000000000..062413f31 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/URLHandlerEnvironmentKey.html @@ -0,0 +1,679 @@ + + + + URLHandlerEnvironmentKey Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

URLHandlerEnvironmentKey

+
+
+ +
public struct URLHandlerEnvironmentKey : EnvironmentKey
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + defaultValue + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let defaultValue: URLHandler
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/UnitPoint.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/UnitPoint.html new file mode 100644 index 000000000..9f8a32433 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/UnitPoint.html @@ -0,0 +1,1036 @@ + + + + UnitPoint Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UnitPoint

+
+
+ +
public struct UnitPoint : Hashable
+ +
+
+

A normalized point in an element’s coordinate space.

+ +

Use a unit point to represent a location in an element without having to know the element’s +rendered size. The point stores a value in each dimension that indicates the fraction of the +element’s size in that dimension — measured from the element’s origin — where the point appears. +For example, you can create a unit point that represents the center of any element by using the +value 0.5 for each dimension:

+
let unitPoint = UnitPoint(x: 0.5, y: 0.5)
+
+ +

To project the unit point into the rendered element’s coordinate space, multiply each component +of the unit point with the corresponding component of the element’s size:

+
let projectedPoint = CGPoint(
+    x: unitPoint.x * size.width,
+    y: unitPoint.y * size.height
+)
+
+ +

You can perform this calculation yourself if you happen to know an element’s size, but Blueprint +typically does this for you to carry out operations that you request, like when you place a +subelement in a custom layout.

+ +

You can create custom unit points with explicit values, like the example above, or you can use +one of the built-in unit points, like zero, center, or topTrailing. The built-in +values correspond to the alignment positions of the similarly named, built-in Alignment +types.

+
+

Note

+ A unit point with one or more components outside the range [0, 1] projects to a point +outside of the element. + +
+ +
+
+ +
+
+
+
    +
  • +
    + + + + x + +
    +
    +
    +
    +
    +
    +

    The normalized distance from the origin to the point in the horizontal direction.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var x: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + y + +
    +
    +
    +
    +
    +
    +

    The normalized distance from the origin to the point in the vertical direction.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var y: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(x:y:) + +
    +
    +
    +
    +
    +
    +

    Creates a unit point with the specified horizontal and vertical offsets.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(x: CGFloat, y: CGFloat)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + zero + +
    +
    +
    +
    +
    +
    +

    The origin of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let zero: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    A point that’s centered in an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    A point that’s centered vertically on the leading edge of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let leading: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    A point that’s centered vertically on the trailing edge of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let trailing: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    A point that’s centered horizontally on the top edge of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    A point that’s centered horizontally on the bottom edge of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topLeading + +
    +
    +
    +
    +
    +
    +

    A point that’s in the top leading corner of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topLeading: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + topTrailing + +
    +
    +
    +
    +
    +
    +

    A point that’s in the top trailing corner of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let topTrailing: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomLeading + +
    +
    +
    +
    +
    +
    +

    A point that’s in the bottom leading corner of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomLeading: UnitPoint
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottomTrailing + +
    +
    +
    +
    +
    +
    +

    A point that’s in the bottom trailing corner of an element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottomTrailing: UnitPoint
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/UserInteractionEnabled.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/UserInteractionEnabled.html new file mode 100644 index 000000000..636a89920 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/UserInteractionEnabled.html @@ -0,0 +1,789 @@ + + + + UserInteractionEnabled Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

UserInteractionEnabled

+
+
+ +
public struct UserInteractionEnabled : Element
+ +
+
+

UserInteractionEnabled conditionally enables user interaction of its wrapped element.

+
+

Note

+ When user interaction is disabled, any elements within the wrapped element will become non-interactive. + +
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/VerticalAlignment.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/VerticalAlignment.html new file mode 100644 index 000000000..9399808fa --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/VerticalAlignment.html @@ -0,0 +1,816 @@ + + + + VerticalAlignment Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

VerticalAlignment

+
+
+ +
public struct VerticalAlignment : Equatable, CustomStringConvertible
+ +
+
+

An alignment position along the vertical axis.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Creates an instance with the given ID.

    + +

    Note: each instance should have a unique ID.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ id: AlignmentID.Type)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: VerticalAlignment, rhs: VerticalAlignment) -> Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + top + +
    +
    +
    +
    +
    +
    +

    A guide marking the top edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let top: VerticalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + center + +
    +
    +
    +
    +
    +
    +

    A guide marking the vertical center of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let center: VerticalAlignment
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bottom + +
    +
    +
    +
    +
    +
    +

    A guide marking the bottom edge of the element.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let bottom: VerticalAlignment
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescription.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescription.html new file mode 100644 index 000000000..d7ce702ee --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescription.html @@ -0,0 +1,1013 @@ + + + + ViewDescription Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ViewDescription

+
+
+ +
public struct ViewDescription
+ +
+
+

Contains a description of a UIView instance. A description includes +logic to handle all parts of a view lifecycle from instantiation onward.

+ +

View descriptions include:

+ +
    +
  • The view’s class.
  • +
  • How an instance of the view should be instantiated.
  • +
  • How to update a view instance by setting properties appropriately.
  • +
  • Which subview of a view instance should be used as a contain for +additional subviews.
  • +
  • How to animate transitions for appearance, layout changes, and +disappearance.
  • +
  • Hooks to be called during lifecycle events.
  • +
+ +

A view description does not contain a concrete view instance. It simply +contains functionality for creating, updating, and animating view instances.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(_:) + +
    +
    +
    +
    +
    +
    +

    Generates a view description for the given view class.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ viewType: (some UIView).Type)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + viewType + + +
    +

    The class of the described view.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(_:configuring:) + +
    +
    +
    +
    +
    +
    +

    Generates a view description for the given view class.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init<View>(_ type: View.Type, configuring: (inout Configuration<View>) -> Void) where View : UIView
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + viewType + + +
    +

    The class of the described view.

    +
    +
    + + configuring + + +
    +

    A closure that is responsible for populating a configuration object.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + viewType + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var viewType: UIView.Type { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + build() + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func build() -> UIView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + apply(to:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func apply(to view: UIView)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentView(in:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func contentView(in view: UIView) -> UIView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutTransition + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutTransition: LayoutTransition { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + appearingTransition + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var appearingTransition: VisibilityTransition? { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var disappearingTransition: VisibilityTransition? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + FrameRoundingBehavior + +
    +
    +
    +
    +
    +
    +

    The available prioritization options for rounding frames to pixel boundaries.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum FrameRoundingBehavior : Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Configuration + +
    +
    +
    +
    +
    +
    +

    Represents the configuration of a specific UIView type.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Configuration<View> where View : UIView
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescription/Configuration.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescription/Configuration.html new file mode 100644 index 000000000..862aae8a2 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescription/Configuration.html @@ -0,0 +1,1104 @@ + + + + Configuration Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Configuration

+
+
+ +
public struct Configuration<View> where View : UIView
+ +
+
+

Represents the configuration of a specific UIView type.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Update + +
    +
    +
    +
    +
    +
    +

    A closure that is applied to the native view instance during an update cycle.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias Update = (_ view: View) -> Void
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + view + + +
    +

    The native view instance.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + builder + +
    +
    +
    +
    +
    +
    +

    A closure that is responsible for instantiating an instance of the native view. +The default value instantiates the view using init(frame:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var builder: () -> View
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updates + +
    +
    +
    +
    +
    +
    +

    An array of update closures.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var updates: [Update]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentView + +
    +
    +
    +
    +
    +
    +

    A closure that takes a native view instance as the single argument, and +returns a subview of that view into which child views should be added +and managed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentView: (View) -> UIView
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layoutTransition + +
    +
    +
    +
    +
    +
    +

    The transition to use during layout changes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layoutTransition: LayoutTransition
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + appearingTransition + +
    +
    +
    +
    +
    +
    +

    The transition to use when this view appears.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var appearingTransition: VisibilityTransition?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The transition to use when this view disappears.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var disappearingTransition: VisibilityTransition?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onAppear + +
    +
    +
    +
    +
    +
    +

    A hook to call when the element appears.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onAppear: LifecycleCallback?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + onDisappear + +
    +
    +
    +
    +
    +
    +

    A hook to call when the element disappears.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var onDisappear: LifecycleCallback?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + frameRoundingBehavior + +
    +
    +
    +
    +
    +
    +

    The prioritization method to use when snapping the native view’s frame to pixel +boundaries.

    + +

    When snapping views to pixel boundaries, Blueprint prioritizes placing frame edges as +close to the correct value as possible. This ensures that flush edges stay flush after +rounding, but can result in frame sizes growing or shrinking by 1 pixel in either axis.

    + +

    Backing views that are particularly sensitive to size changes can opt-in to prioritize +preserving their frame size instead of maximally correct edges. This will guarantee +frame sizes, with the tradeoff that their edges may no longer be flush to other edges as +they were laid out.

    + +

    Generally you should not change this value except in specific circumstances when all +criteria are met:

    + +
      +
    • The backing view is sensitive to frame size, such as a text label.
    • +
    • And the backing view has a transparent background, so that overlapping frames or gaps +between frames are not visible.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var frameRoundingBehavior: FrameRoundingBehavior
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Initializes a default configuration object.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + apply(_:) + +
    +
    +
    +
    +
    +
    +

    Adds the given update closure to the updates array.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func apply(_ update: @escaping Update)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Subscript for values that are not optional. We must represent these values as optional so that we can +return nil from the subscript in the case where no value has been assigned for the given keypath.

    + +

    When getting a value for a keypath:

    + +
      +
    • If a value has previously been assigned, it will be returned.
    • +
    • If no value has been assigned, nil will be returned.
    • +
    + +

    When assigning a value for a keypath:

    + +
      +
    • If a value is provided, it will be applied to the view.
    • +
    • If nil is provided, no value will be applied to the view (any previous assignment will be cleared).
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Value>(keyPath: ReferenceWritableKeyPath<View, Value>) -> Value? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Subscript for values that are optional.

    + +

    When getting a value for a keypath:

    + +
      +
    • If a value has previously been assigned (including nil), it will be returned.
    • +
    • If no value has been assigned, nil will be returned.
    • +
    + +

    When assigning a value for a keypath:

    + +
      +
    • Any provided value will be applied to the view (including nil). This means that there is a difference +between the initial state of a view description (where the view’s property will not be touched), and the +state after nil is assigned. After assigning nil to an optional keypath, view.property = nil will +be called on the next update.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript<Value>(keyPath: ReferenceWritableKeyPath<View, Value?>) -> Value? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescription/FrameRoundingBehavior.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescription/FrameRoundingBehavior.html new file mode 100644 index 000000000..62c3d142a --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescription/FrameRoundingBehavior.html @@ -0,0 +1,708 @@ + + + + FrameRoundingBehavior Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

FrameRoundingBehavior

+
+
+ +
public enum FrameRoundingBehavior : Equatable
+ +
+
+

The available prioritization options for rounding frames to pixel boundaries.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + prioritizeEdges + +
    +
    +
    +
    +
    +
    +

    Prioritize preserving frame edge positions

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case prioritizeEdges
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + prioritizeSize + +
    +
    +
    +
    +
    +
    +

    Prioritize preserving frame sizes

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case prioritizeSize
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescriptionContext.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescriptionContext.html new file mode 100644 index 000000000..35c845a35 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/ViewDescriptionContext.html @@ -0,0 +1,762 @@ + + + + ViewDescriptionContext Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

ViewDescriptionContext

+
+
+ +
public struct ViewDescriptionContext
+ +
+
+

The context passing to the backingViewDescription of an Element.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + bounds + +
    +
    +
    +
    +
    +
    +

    The bounds of this element after layout is complete.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var bounds: CGRect
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + subtreeExtent + +
    +
    +
    +
    +
    +
    +

    A rectangle in the local coordinate space that contains any children. +This will be nil if there are no children.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var subtreeExtent: CGRect?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + environment + +
    +
    +
    +
    +
    +
    +

    The environment the element is rendered in.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var environment: Environment
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(bounds: CGRect, subtreeExtent: CGRect?, environment: Environment)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/VisibilityTransition.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/VisibilityTransition.html new file mode 100644 index 000000000..50e7ad302 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Structs/VisibilityTransition.html @@ -0,0 +1,842 @@ + + + + VisibilityTransition Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

VisibilityTransition

+
+
+ +
public struct VisibilityTransition
+ +
+
+

The transition used when a view is inserted or removed during an update cycle.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + alpha + +
    +
    +
    +
    +
    +
    +

    The alpha of the view in the hidden state (initial for appearing, final for disappearing).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var alpha: CGFloat
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + transform + +
    +
    +
    +
    +
    +
    +

    The transform of the view in the hidden state (initial for appearing, final for disappearing).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transform: CATransform3D
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    The animation attributes that will be used to drive the transition.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributes: AnimationAttributes
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(alpha: CGFloat, transform: CATransform3D, attributes: AnimationAttributes = AnimationAttributes())
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scale + +
    +
    +
    +
    +
    +
    +

    Returns a VisibilityTransition that scales in and out.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var scale: VisibilityTransition { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fade + +
    +
    +
    +
    +
    +
    +

    Returns a VisibilityTransition that fades in and out.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var fade: VisibilityTransition { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scaleAndFade + +
    +
    +
    +
    +
    +
    +

    Returns a VisibilityTransition that simultaneously scales and fades in and out.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var scaleAndFade: VisibilityTransition { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/Typealiases.html b/docsets/Blueprint.docset/Contents/Resources/Documents/Typealiases.html new file mode 100644 index 000000000..0c4a9b5ee --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/Typealiases.html @@ -0,0 +1,728 @@ + + + + Type Aliases Reference + + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

Type Aliases

+

The following type aliases are available globally.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + ElementBuilder + +
    +
    +
    +
    +
    +
    +

    Result builder for working with elements that conform to ElementBuilderChild.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias ElementBuilder<Child> = Builder<Child> where Child : ElementBuilderChild
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LayoutSubelements + +
    +
    +
    +
    +
    +
    +

    A collection of proxy values that represent the child elements of a layout.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LayoutSubelements = [LayoutSubelement]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LifecycleCallback + +
    +
    +
    +
    +
    +
    +

    This is the type used by all lifecycle callback hooks.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LifecycleCallback = () -> Void
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/css/highlight.css b/docsets/Blueprint.docset/Contents/Resources/Documents/css/highlight.css new file mode 100644 index 000000000..c170357ce --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/css/highlight.css @@ -0,0 +1,202 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight .c { + color: #999988; + font-style: italic; } + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +.highlight .k { + color: #000000; + font-weight: bold; } + +.highlight .o { + color: #000000; + font-weight: bold; } + +.highlight .cm { + color: #999988; + font-style: italic; } + +.highlight .cp { + color: #999999; + font-weight: bold; } + +.highlight .c1 { + color: #999988; + font-style: italic; } + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +.highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + +.highlight .ge { + color: #000000; + font-style: italic; } + +.highlight .gr { + color: #aa0000; } + +.highlight .gh { + color: #999999; } + +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +.highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + +.highlight .go { + color: #888888; } + +.highlight .gp { + color: #555555; } + +.highlight .gs { + font-weight: bold; } + +.highlight .gu { + color: #aaaaaa; } + +.highlight .gt { + color: #aa0000; } + +.highlight .kc { + color: #000000; + font-weight: bold; } + +.highlight .kd { + color: #000000; + font-weight: bold; } + +.highlight .kp { + color: #000000; + font-weight: bold; } + +.highlight .kr { + color: #000000; + font-weight: bold; } + +.highlight .kt { + color: #445588; } + +.highlight .m { + color: #009999; } + +.highlight .s { + color: #d14; } + +.highlight .na { + color: #008080; } + +.highlight .nb { + color: #0086B3; } + +.highlight .nc { + color: #445588; + font-weight: bold; } + +.highlight .no { + color: #008080; } + +.highlight .ni { + color: #800080; } + +.highlight .ne { + color: #990000; + font-weight: bold; } + +.highlight .nf { + color: #990000; } + +.highlight .nn { + color: #555555; } + +.highlight .nt { + color: #000080; } + +.highlight .nv { + color: #008080; } + +.highlight .ow { + color: #000000; + font-weight: bold; } + +.highlight .w { + color: #bbbbbb; } + +.highlight .mf { + color: #009999; } + +.highlight .mh { + color: #009999; } + +.highlight .mi { + color: #009999; } + +.highlight .mo { + color: #009999; } + +.highlight .sb { + color: #d14; } + +.highlight .sc { + color: #d14; } + +.highlight .sd { + color: #d14; } + +.highlight .s2 { + color: #d14; } + +.highlight .se { + color: #d14; } + +.highlight .sh { + color: #d14; } + +.highlight .si { + color: #d14; } + +.highlight .sx { + color: #d14; } + +.highlight .sr { + color: #009926; } + +.highlight .s1 { + color: #d14; } + +.highlight .ss { + color: #990073; } + +.highlight .bp { + color: #999999; } + +.highlight .vc { + color: #008080; } + +.highlight .vg { + color: #008080; } + +.highlight .vi { + color: #008080; } + +.highlight .il { + color: #009999; } diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/css/jazzy.css b/docsets/Blueprint.docset/Contents/Resources/Documents/css/jazzy.css new file mode 100644 index 000000000..c7bb9fe22 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/css/jazzy.css @@ -0,0 +1,404 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +*, *:before, *:after { + box-sizing: inherit; } + +body { + margin: 0; + background: #fff; + color: #333; + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + letter-spacing: .2px; + -webkit-font-smoothing: antialiased; + box-sizing: border-box; } + +h1 { + font-size: 2rem; + font-weight: 700; + margin: 1.275em 0 0.6em; } + +h2 { + font-size: 1.75rem; + font-weight: 700; + margin: 1.275em 0 0.3em; } + +h3 { + font-size: 1.5rem; + font-weight: 700; + margin: 1em 0 0.3em; } + +h4 { + font-size: 1.25rem; + font-weight: 700; + margin: 1.275em 0 0.85em; } + +h5 { + font-size: 1rem; + font-weight: 700; + margin: 1.275em 0 0.85em; } + +h6 { + font-size: 1rem; + font-weight: 700; + margin: 1.275em 0 0.85em; + color: #777; } + +p { + margin: 0 0 1em; } + +ul, ol { + padding: 0 0 0 2em; + margin: 0 0 0.85em; } + +blockquote { + margin: 0 0 0.85em; + padding: 0 15px; + color: #858585; + border-left: 4px solid #e5e5e5; } + +img { + max-width: 100%; } + +a { + color: #4183c4; + text-decoration: none; } + a:hover, a:focus { + outline: 0; + text-decoration: underline; } + a.discouraged { + text-decoration: line-through; } + a.discouraged:hover, a.discouraged:focus { + text-decoration: underline line-through; } + +table { + background: #fff; + width: 100%; + border-collapse: collapse; + border-spacing: 0; + overflow: auto; + margin: 0 0 0.85em; } + +tr:nth-child(2n) { + background-color: #fbfbfb; } + +th, td { + padding: 6px 13px; + border: 1px solid #ddd; } + +hr { + height: 1px; + border: none; + background-color: #ddd; } + +pre { + margin: 0 0 1.275em; + padding: .85em 1em; + overflow: auto; + background: #f7f7f7; + font-size: .85em; + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } + +code { + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } + +.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code { + background: #f7f7f7; + padding: .2em; } + .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after { + letter-spacing: -.2em; + content: "\00a0"; } + +pre code { + padding: 0; + white-space: pre; } + +.content-wrapper { + display: flex; + flex-direction: column; } + @media (min-width: 768px) { + .content-wrapper { + flex-direction: row; } } +.header { + display: flex; + padding: 8px; + font-size: 0.875em; + background: #444; + color: #999; } + +.header-col { + margin: 0; + padding: 0 8px; } + +.header-col--primary { + flex: 1; } + +.header-link { + color: #fff; } + +.header-icon { + padding-right: 2px; + vertical-align: -3px; + height: 16px; } + +.breadcrumbs { + font-size: 0.875em; + padding: 8px 16px; + margin: 0; + background: #fbfbfb; + border-bottom: 1px solid #ddd; } + +.carat { + height: 10px; + margin: 0 5px; } + +.navigation { + order: 2; } + @media (min-width: 768px) { + .navigation { + order: 1; + width: 25%; + max-width: 300px; + padding-bottom: 64px; + overflow: hidden; + word-wrap: normal; + background: #fbfbfb; + border-right: 1px solid #ddd; } } +.nav-groups { + list-style-type: none; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #ddd; + padding: 8px 0 8px 16px; } + +.nav-group-name-link { + color: #333; } + +.nav-group-tasks { + margin: 8px 0; + padding: 0 0 0 8px; } + +.nav-group-task { + font-size: 1em; + list-style-type: none; + white-space: nowrap; } + +.nav-group-task-link { + color: #808080; } + +.main-content { + order: 1; } + @media (min-width: 768px) { + .main-content { + order: 2; + flex: 1; + padding-bottom: 60px; } } +.section { + padding: 0 32px; + border-bottom: 1px solid #ddd; } + +.section-content { + max-width: 834px; + margin: 0 auto; + padding: 16px 0; } + +.section-name { + color: #666; + display: block; } + .section-name p { + margin-bottom: inherit; } + +.declaration .highlight { + overflow-x: initial; + padding: 8px 0; + margin: 0; + background-color: transparent; + border: none; } + +.task-group-section { + border-top: 1px solid #ddd; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; } + +.section-name-container { + position: relative; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + +.item-container { + padding: 0; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; } + .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; + padding-left: 3px; + margin-left: 20px; + font-size: 1rem; } + .item .declaration-note { + font-size: .85em; + color: #808080; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #ddd; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + left: 21px; + top: 7px; + display: block; + position: absolute; + width: 12px; + height: 12px; + border-left: 1px solid #ddd; + border-top: 1px solid #ddd; + background: #fff; + transform: rotate(45deg); } + +.height-container { + display: none; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #fff; + border: 1px solid #ddd; + border-top-width: 0; + padding-top: 10px; + padding-bottom: 5px; + padding: 8px 16px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4183c4; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #ddd; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +.footer { + padding: 8px 16px; + background: #444; + color: #ddd; + font-size: 0.8em; } + .footer p { + margin: 8px 0; } + .footer a { + color: #fff; } + +html.dash .header, html.dash .breadcrumbs, html.dash .navigation { + display: none; } + +html.dash .height-container { + display: block; } + +form[role=search] input { + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 24px; + padding: 0 10px; + margin: 0; + border: none; + border-radius: 1em; } + .loading form[role=search] input { + background: white url(../img/spinner.gif) center right 4px no-repeat; } + +form[role=search] .tt-menu { + margin: 0; + min-width: 300px; + background: #fbfbfb; + color: #333; + border: 1px solid #ddd; } + +form[role=search] .tt-highlight { + font-weight: bold; } + +form[role=search] .tt-suggestion { + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 0 8px; } + form[role=search] .tt-suggestion span { + display: table-cell; + white-space: nowrap; } + form[role=search] .tt-suggestion .doc-parent-name { + width: 100%; + text-align: right; + font-weight: normal; + font-size: 0.9em; + padding-left: 16px; } + +form[role=search] .tt-suggestion:hover, +form[role=search] .tt-suggestion.tt-cursor { + cursor: pointer; + background-color: #4183c4; + color: #fff; } + +form[role=search] .tt-suggestion:hover .doc-parent-name, +form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { + color: #fff; } diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/img/carat.png b/docsets/Blueprint.docset/Contents/Resources/Documents/img/carat.png new file mode 100755 index 000000000..29d2f7fd4 Binary files /dev/null and b/docsets/Blueprint.docset/Contents/Resources/Documents/img/carat.png differ diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/img/dash.png b/docsets/Blueprint.docset/Contents/Resources/Documents/img/dash.png new file mode 100755 index 000000000..6f694c7a0 Binary files /dev/null and b/docsets/Blueprint.docset/Contents/Resources/Documents/img/dash.png differ diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/img/gh.png b/docsets/Blueprint.docset/Contents/Resources/Documents/img/gh.png new file mode 100755 index 000000000..628da97c7 Binary files /dev/null and b/docsets/Blueprint.docset/Contents/Resources/Documents/img/gh.png differ diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/img/spinner.gif b/docsets/Blueprint.docset/Contents/Resources/Documents/img/spinner.gif new file mode 100644 index 000000000..e3038d0a4 Binary files /dev/null and b/docsets/Blueprint.docset/Contents/Resources/Documents/img/spinner.gif differ diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/index.html b/docsets/Blueprint.docset/Contents/Resources/Documents/index.html new file mode 100644 index 000000000..8d8e1c4c8 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/index.html @@ -0,0 +1,753 @@ + + + + Blueprint Reference + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+ +

Build Status

+

Blueprint

+

Declarative UI construction for iOS, written in Swift

+ +

Blueprint greatly simplifies the task of building and updating views as application state changes.

+ +

We still consider Blueprint experimental (and subject to major breaking API changes), but it has been used within Square’s production iOS apps.

+
let rootElement = Label(text: "Hello from Blueprint!")
+let view = BlueprintView(element: rootElement)
+
+ +

Generated documentation is available at square.github.io/Blueprint

+

Getting Started

+

Swift Package Manager

+ +

SwiftPM compatible

+ +

If you are developing your own package, be sure that Blueprint is included in dependencies +in Package.swift:

+
dependencies: [
+    .package(url: "git@github.com:square/Blueprint.git", from: "0.3.0")
+]
+
+ +

In Xcode 11+, add Blueprint directly as a dependency to your project with +File > Swift Packages > Add Package Dependency.... Provide the git URL when prompted: git@github.com:square/Blueprint.git.

+

Cocoapods

+ +

CocoaPods compatible

+ +

If you use CocoaPods to manage your dependencies, simply add BlueprintUI and BlueprintUICommonControls to your +Podfile:

+
pod 'BlueprintUI'
+pod 'BlueprintUICommonControls'
+
+ +
+
What does this library do?
+ +

Blueprint provides an architecture that allows you to:

+ +
    +
  • Declaratively define a UI hierarchy as pure values (Swift structs and enums).
  • +
  • Display that hierarchy within your application.
  • +
  • Update that hierarchy as application state changes (including animated transitions).
  • +
+
When should I use it?
+ +

Use Blueprint any time you want to display a view hierarchy, but don’t want to manage view lifecycle (hint: managing view lifecycle is a large portion of most conventional UIKit code). There are times when you want to manage view lifecycle (complex animations and transitions are a good example), and for these cases you may want to stick with a conventional approach.

+
How does it interact with UIKit?
+ +

Blueprint is not a replacement for UIKit! From the beginning, Blueprint has been designed as a compliment to all of the powerful tools that come with the platform. You can use Blueprint to manage the display of a single view controller, or of a single view representing a small part of the screen. Likewise, it’s straightforward to host standard views and controls within a blueprint hierarchy, always leaving you with an escape hatch.

+ +
+

Documentation

+

Getting Started

+ +
    +
  1. Hello, World

  2. +
  3. The Element Hierarchy

  4. +
  5. Building Custom Elements

  6. +
  7. Layout

  8. +
+

Reference

+ +
    +
  1. Element

  2. +
  3. BlueprintView

  4. +
  5. ViewDescription

  6. +
  7. Transitions

  8. +
+

Tutorials

+ +

Tutorial setup instructions

+ +
    +
  1. Using Blueprint in a View Controller

  2. +
  3. Building a receipt layout with Blueprint

  4. +
+ +
+

Adding Blueprint to an existing project

+ +

Two modules are provided:

+ +
    +
  • BlueprintUI contains the core architecture and layout types.
  • +
  • BlueprintUICommonControls includes elements representing some common UIKit views and controls.
  • +
+ +

Blueprint is available via CocoaPods. Add it to your Podfile to integrate:

+
target MyTarget do
+    pod 'BlueprintUI'
+    pod 'BlueprintUICommonControls'
+end
+
+ +
+ +

Release instructions

+ +
+ +

Copyright 2019 Square, Inc.

+ +

Licensed under the Apache License, Version 2.0 (the “License”); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

+ +

http://www.apache.org/licenses/LICENSE-2.0

+ +

Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an “AS IS” BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

+ +
+
+ + +
+
+ + + diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/js/jazzy.js b/docsets/Blueprint.docset/Contents/Resources/Documents/js/jazzy.js new file mode 100755 index 000000000..198441660 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/js/jazzy.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/js/jazzy.search.js b/docsets/Blueprint.docset/Contents/Resources/Documents/js/jazzy.search.js new file mode 100644 index 000000000..359cdbb8b --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/js/jazzy.search.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/js/jquery.min.js b/docsets/Blueprint.docset/Contents/Resources/Documents/js/jquery.min.js new file mode 100644 index 000000000..7f37b5d99 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/js/typeahead.jquery.js b/docsets/Blueprint.docset/Contents/Resources/Documents/js/typeahead.jquery.js new file mode 100644 index 000000000..3a2d2ab03 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/js/typeahead.jquery.js @@ -0,0 +1,1694 @@ +/*! + * typeahead.js 1.3.1 + * https://github.com/corejavascript/typeahead.js + * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT + */ + + +(function(root, factory) { + if (typeof define === "function" && define.amd) { + define([ "jquery" ], function(a0) { + return factory(a0); + }); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +})(this, function($) { + var _ = function() { + "use strict"; + return { + isMsie: function() { + return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; + }, + isBlankString: function(str) { + return !str || /^\s*$/.test(str); + }, + escapeRegExChars: function(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + }, + isString: function(obj) { + return typeof obj === "string"; + }, + isNumber: function(obj) { + return typeof obj === "number"; + }, + isArray: $.isArray, + isFunction: $.isFunction, + isObject: $.isPlainObject, + isUndefined: function(obj) { + return typeof obj === "undefined"; + }, + isElement: function(obj) { + return !!(obj && obj.nodeType === 1); + }, + isJQuery: function(obj) { + return obj instanceof $; + }, + toStr: function toStr(s) { + return _.isUndefined(s) || s === null ? "" : s + ""; + }, + bind: $.proxy, + each: function(collection, cb) { + $.each(collection, reverseArgs); + function reverseArgs(index, value) { + return cb(value, index); + } + }, + map: $.map, + filter: $.grep, + every: function(obj, test) { + var result = true; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (!(result = test.call(null, val, key, obj))) { + return false; + } + }); + return !!result; + }, + some: function(obj, test) { + var result = false; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (result = test.call(null, val, key, obj)) { + return false; + } + }); + return !!result; + }, + mixin: $.extend, + identity: function(x) { + return x; + }, + clone: function(obj) { + return $.extend(true, {}, obj); + }, + getIdGenerator: function() { + var counter = 0; + return function() { + return counter++; + }; + }, + templatify: function templatify(obj) { + return $.isFunction(obj) ? obj : template; + function template() { + return String(obj); + } + }, + defer: function(fn) { + setTimeout(fn, 0); + }, + debounce: function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments, later, callNow; + later = function() { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + throttle: function(func, wait) { + var context, args, timeout, result, previous, later; + previous = 0; + later = function() { + previous = new Date(); + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date(), remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }, + stringify: function(val) { + return _.isString(val) ? val : JSON.stringify(val); + }, + guid: function() { + function _p8(s) { + var p = (Math.random().toString(16) + "000000000").substr(2, 8); + return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; + } + return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); + }, + noop: function() {} + }; + }(); + var WWW = function() { + "use strict"; + var defaultClassNames = { + wrapper: "twitter-typeahead", + input: "tt-input", + hint: "tt-hint", + menu: "tt-menu", + dataset: "tt-dataset", + suggestion: "tt-suggestion", + selectable: "tt-selectable", + empty: "tt-empty", + open: "tt-open", + cursor: "tt-cursor", + highlight: "tt-highlight" + }; + return build; + function build(o) { + var www, classes; + classes = _.mixin({}, defaultClassNames, o); + www = { + css: buildCss(), + classes: classes, + html: buildHtml(classes), + selectors: buildSelectors(classes) + }; + return { + css: www.css, + html: www.html, + classes: www.classes, + selectors: www.selectors, + mixin: function(o) { + _.mixin(o, www); + } + }; + } + function buildHtml(c) { + return { + wrapper: '', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + var id; + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$menu = $(o.menu); + id = this.$input.attr("id") || _.guid(); + this.$menu.attr("id", id + "_listbox"); + this.$hint.attr({ + "aria-hidden": true + }); + this.$input.attr({ + "aria-owns": id + "_listbox", + role: "combobox", + "aria-autocomplete": "list", + "aria-expanded": false + }); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + }, + setAriaExpanded: function setAriaExpanded(value) { + this.$input.attr("aria-expanded", value); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate + }; + function userSuggestionTemplate(context) { + var template = templates.suggestion; + return $(template(context)).attr("id", _.guid()); + } + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if (this.autoselect) { + if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.input.setAriaExpanded(true); + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.input.setAriaExpanded(false); + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + if (typeof data.val === "string") { + this.input.setInputValue(data.val); + } + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input, + menu: $menu + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/docsets/Blueprint.docset/Contents/Resources/Documents/search.json b/docsets/Blueprint.docset/Contents/Resources/Documents/search.json new file mode 100644 index 000000000..bd22c5142 --- /dev/null +++ b/docsets/Blueprint.docset/Contents/Resources/Documents/search.json @@ -0,0 +1 @@ +{"Typealiases.html#/s:11BlueprintUI14ElementBuildera":{"name":"ElementBuilder","abstract":"\u003cp\u003eResult builder for working with elements that conform to \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/ElementBuilderChild.html\"\u003eElementBuilderChild\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Typealiases.html#/s:11BlueprintUI17LayoutSubelementsa":{"name":"LayoutSubelements","abstract":"\u003cp\u003eA collection of proxy values that represent the child elements of a layout.\u003c/p\u003e"},"Typealiases.html#/s:11BlueprintUI17LifecycleCallbacka":{"name":"LifecycleCallback","abstract":"\u003cp\u003eThis is the type used by all lifecycle callback hooks.\u003c/p\u003e"},"Structs/TextShadow.html#/s:25BlueprintUICommonControls10TextShadowV6radius14CoreFoundation7CGFloatVvp":{"name":"radius","abstract":"\u003cp\u003eThe blur radius of the shadow.\u003c/p\u003e","parent_name":"TextShadow"},"Structs/TextShadow.html#/s:25BlueprintUICommonControls10TextShadowV7opacity14CoreFoundation7CGFloatVvp":{"name":"opacity","abstract":"\u003cp\u003eThe opacity of the shadow.\u003c/p\u003e","parent_name":"TextShadow"},"Structs/TextShadow.html#/s:25BlueprintUICommonControls10TextShadowV6offsetSo8UIOffsetVvp":{"name":"offset","abstract":"\u003cp\u003eThe offset of the shadow.\u003c/p\u003e","parent_name":"TextShadow"},"Structs/TextShadow.html#/s:25BlueprintUICommonControls10TextShadowV5colorSo7UIColorCvp":{"name":"color","abstract":"\u003cp\u003eThe color of the shadow.\u003c/p\u003e","parent_name":"TextShadow"},"Structs/TextShadow.html#/s:25BlueprintUICommonControls10TextShadowV6radius7opacity6offset5colorAC14CoreFoundation7CGFloatV_AJSo8UIOffsetVSo7UIColorCtcfc":{"name":"init(radius:opacity:offset:color:)","parent_name":"TextShadow"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO3cutyA2GmF":{"name":"cut","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO4copyyA2GmF":{"name":"copy","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO5pasteyA2GmF":{"name":"paste","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO6deleteyA2GmF":{"name":"delete","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO6selectyA2GmF":{"name":"select","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO9selectAllyA2GmF":{"name":"selectAll","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO14toggleBoldfaceyA2GmF":{"name":"toggleBoldface","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO13toggleItalicsyA2GmF":{"name":"toggleItalics","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO15toggleUnderlineyA2GmF":{"name":"toggleUnderline","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO12increaseSizeyA2GmF":{"name":"increaseSize","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO12decreaseSizeyA2GmF":{"name":"decreaseSize","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO12printContentyA2GmF":{"name":"printContent","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO10pasteAndGoyA2GmF":{"name":"pasteAndGo","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO18pasteAndMatchStyleyA2GmF":{"name":"pasteAndMatchStyle","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO14pasteAndSearchyA2GmF":{"name":"pasteAndSearch","parent_name":"System"},"Structs/EditingMenuItem/Kind.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6systemyA2E6SystemOcAEmF":{"name":"system(_:)","abstract":"\u003cp\u003eA standard system item.\u003c/p\u003e","parent_name":"Kind"},"Structs/EditingMenuItem/Kind.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6customyAESScAEmF":{"name":"custom(_:)","abstract":"\u003cp\u003eA custom item with a custom title.\u003c/p\u003e","parent_name":"Kind"},"Structs/EditingMenuItem/Kind/System.html":{"name":"System","abstract":"\u003cp\u003eThe system menu item kinds supported by an editing menu.\u003c/p\u003e","parent_name":"Kind"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV4kindAC4KindOvp":{"name":"kind","abstract":"\u003cp\u003eThe type of menu item.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV8onSelectyycvp":{"name":"onSelect","abstract":"\u003cp\u003eA callback, invoked when the user selects the menu item.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV5title8onSelectACSS_yyctcfc":{"name":"init(title:onSelect:)","abstract":"\u003cp\u003eCreates a new menu item of the given kind.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV_8onSelectA2C4KindO6SystemO_yyctcfc":{"name":"init(_:onSelect:)","abstract":"\u003cp\u003eCreates a new menu item of the given kind.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV7copying_2toACSS_So12UIPasteboardCSgtFZ":{"name":"copying(_:to:)","abstract":"\u003cp\u003eA \u003ccode\u003e.copy\u003c/code\u003e type item, which will copy the given string to the provided pasteboard.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV7copying_2toACSo7UIImageC_So12UIPasteboardCSgtFZ":{"name":"copying(_:to:)","abstract":"\u003cp\u003eA \u003ccode\u003e.copy\u003c/code\u003e type item, which will copy the given image to the provided pasteboard.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV7copying_2toAC10Foundation3URLV_So12UIPasteboardCSgtFZ":{"name":"copying(_:to:)","abstract":"\u003cp\u003eA \u003ccode\u003e.copy\u003c/code\u003e type item, which will copy the given url to the provided pasteboard.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem/Kind.html":{"name":"Kind","abstract":"\u003cp\u003eThe menu item types you may place into a menu.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenu/MenuTrigger.html#/s:25BlueprintUICommonControls11EditingMenuV0E7TriggerC4showyyF":{"name":"show()","abstract":"\u003cp\u003eCall this method to show the menu.\u003c/p\u003e","parent_name":"MenuTrigger"},"Structs/EditingMenu/Gesture.html#/s:25BlueprintUICommonControls11EditingMenuV7GestureO5onTapyA2EmF":{"name":"onTap","abstract":"\u003cp\u003eThe menu will be shown when the element is tapped.\u003c/p\u003e","parent_name":"Gesture"},"Structs/EditingMenu/Gesture.html#/s:25BlueprintUICommonControls11EditingMenuV7GestureO11onLongPressyA2EmF":{"name":"onLongPress","abstract":"\u003cp\u003eThe menu will be shown when the element is long pressed.\u003c/p\u003e","parent_name":"Gesture"},"Structs/EditingMenu.html#/s:25BlueprintUICommonControls11EditingMenuV7wrapped0A2UI7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe wrapped element to display.\u003c/p\u003e","parent_name":"EditingMenu"},"Structs/EditingMenu.html#/s:25BlueprintUICommonControls11EditingMenuV5itemsSayAA0dE4ItemVGvp":{"name":"items","abstract":"\u003cp\u003eThe editing items to show in the editing menu.\u003c/p\u003e","parent_name":"EditingMenu"},"Structs/EditingMenu.html#/s:25BlueprintUICommonControls11EditingMenuV4show8wrapping4withA2C7GestureO_0A2UI7Element_pSayAA0dE4ItemVGyXEtcfc":{"name":"init(show:wrapping:with:)","abstract":"\u003cp\u003eCreates a new editing menu, wrapping the provided element, and displaying the provided items.\u003c/p\u003e","parent_name":"EditingMenu"},"Structs/EditingMenu.html#/s:25BlueprintUICommonControls11EditingMenuV8wrapping5itemsAC0A2UI7Element_pAC0E7TriggerCXE_SayAA0dE4ItemVGyXEtcfc":{"name":"init(wrapping:items:)","abstract":"\u003cp\u003eCreates a new editing menu, wrapping the provided element, and displaying the provided items.\u003c/p\u003e","parent_name":"EditingMenu"},"Structs/EditingMenu.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"EditingMenu"},"Structs/EditingMenu.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"EditingMenu"},"Structs/EditingMenu/Gesture.html":{"name":"Gesture","abstract":"\u003cp\u003eThe gesture to use to show the menu.\u003c/p\u003e","parent_name":"EditingMenu"},"Structs/EditingMenu/MenuTrigger.html":{"name":"MenuTrigger","abstract":"\u003cp\u003eA trigger that you can use to show the menu based on the result of some other","parent_name":"EditingMenu"},"Structs/URLHandlerEnvironmentKey.html#/s:11BlueprintUI14EnvironmentKeyP12defaultValue0F0QzvpZ":{"name":"defaultValue","parent_name":"URLHandlerEnvironmentKey"},"Structs/AccessibilityFocus/Trigger.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7TriggerC16notificationTypeSo28UIAccessibilityNotificationsavp":{"name":"notificationType","abstract":"\u003cp\u003eThe type of accessibility notification that will be triggered.\u003c/p\u003e","parent_name":"Trigger"},"Structs/AccessibilityFocus/Trigger.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7TriggerC10identifiers11AnyHashableVSgvp":{"name":"identifier","abstract":"\u003cp\u003eAn optional identifier for the trigger.\u003c/p\u003e","parent_name":"Trigger"},"Structs/AccessibilityFocus/Trigger.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7TriggerC16notificationType10identifierAESo28UIAccessibilityNotificationsa_s11AnyHashableVSgtcfc":{"name":"init(notificationType:identifier:)","abstract":"\u003cp\u003eCreates a new trigger for the purpose of changing accessibility focus.\u003c/p\u003e","parent_name":"Trigger"},"Structs/AccessibilityFocus/Trigger.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7TriggerC5focusyyF":{"name":"focus()","abstract":"\u003cp\u003eManually fire the trigger\u003c/p\u003e","parent_name":"Trigger"},"Structs/AccessibilityFocus.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7wrapped0A2UI7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe element that will have the focus.\u003c/p\u003e","parent_name":"AccessibilityFocus"},"Structs/AccessibilityFocus.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7triggerAC7TriggerCvp":{"name":"trigger","abstract":"\u003cp\u003eA object that can be held on to by the caller to manually trigger a focus.\u003c/p\u003e","parent_name":"AccessibilityFocus"},"Structs/AccessibilityFocus.html#/s:25BlueprintUICommonControls18AccessibilityFocusV8wrapping7triggerAC0A2UI7Element_p_AC7TriggerCtcfc":{"name":"init(wrapping:trigger:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eAccessibilityFocus\u003c/code\u003e wrapping the provided element.\u003c/p\u003e","parent_name":"AccessibilityFocus"},"Structs/AccessibilityFocus.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AccessibilityFocus"},"Structs/AccessibilityFocus.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AccessibilityFocus"},"Structs/AccessibilityFocus/Trigger.html":{"name":"Trigger","abstract":"\u003cp\u003eA trigger that can be used to manually fire an accessibility focus.\u003c/p\u003e","parent_name":"AccessibilityFocus"},"Structs/AnimationAttributes.html#/s:11BlueprintUI19AnimationAttributesV8durationSdvp":{"name":"duration","abstract":"\u003cp\u003eThe duration of the animation.\u003c/p\u003e","parent_name":"AnimationAttributes"},"Structs/AnimationAttributes.html#/s:11BlueprintUI19AnimationAttributesV5curveSo06UIViewC5CurveVvp":{"name":"curve","abstract":"\u003cp\u003eThe timing curve of the animation.\u003c/p\u003e","parent_name":"AnimationAttributes"},"Structs/AnimationAttributes.html#/s:11BlueprintUI19AnimationAttributesV20allowUserInteractionSbvp":{"name":"allowUserInteraction","abstract":"\u003cp\u003eWhether the view supports user interaction during the animation.\u003c/p\u003e","parent_name":"AnimationAttributes"},"Structs/AnimationAttributes.html#/s:11BlueprintUI19AnimationAttributesV7defaultACvpZ":{"name":"default","parent_name":"AnimationAttributes"},"Structs/AnimationAttributes.html#/s:11BlueprintUI19AnimationAttributesV8duration5curve20allowUserInteractionACSd_So06UIViewC5CurveVSbtcfc":{"name":"init(duration:curve:allowUserInteraction:)","parent_name":"AnimationAttributes"},"Structs/SizeConstraint/UnconstrainedInfiniteAxis.html#/s:11BlueprintUI14SizeConstraintV25UnconstrainedInfiniteAxisV12wrappedValueAC0G0Ovp":{"name":"wrappedValue","parent_name":"UnconstrainedInfiniteAxis"},"Structs/SizeConstraint/UnconstrainedInfiniteAxis.html#/s:11BlueprintUI14SizeConstraintV25UnconstrainedInfiniteAxisV12wrappedValueAeC0G0O_tcfc":{"name":"init(wrappedValue:)","parent_name":"UnconstrainedInfiniteAxis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO6atMostyAE14CoreFoundation7CGFloatVcAEmF":{"name":"atMost(_:)","abstract":"\u003cp\u003eThe measurement should treat the associated value as the largest","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO13unconstrainedyA2EmF":{"name":"unconstrained","abstract":"\u003cp\u003eThe measurement is unconstrained in the given dimension.\u003c/p\u003e","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO7maximum14CoreFoundation7CGFloatVvp":{"name":"maximum","abstract":"\u003cp\u003eThe maximum magnitude in the given dimension.\u003c/p\u003e","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO7minimum14CoreFoundation7CGFloatVvp":{"name":"minimum","abstract":"\u003cp\u003eThe minimum magnitude in the given dimension.\u003c/p\u003e","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO16constrainedValue14CoreFoundation7CGFloatVSgvp":{"name":"constrainedValue","abstract":"\u003cp\u003eThe constraint value in this dimension, or \u003ccode\u003enil\u003c/code\u003e if this dimension is unconstrained.\u003c/p\u003e","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO1poiyA2E_14CoreFoundation7CGFloatVtFZ":{"name":"+(_:_:)","abstract":"\u003cp\u003eAdds a scalar value to an Axis. If the Axis is unconstrained the","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO1soiyA2E_14CoreFoundation7CGFloatVtFZ":{"name":"-(_:_:)","abstract":"\u003cp\u003eSubtracts a scalar value from an Axis. If the Axis is unconstrained","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO1doiyA2E_14CoreFoundation7CGFloatVtFZ":{"name":"/(_:_:)","abstract":"\u003cp\u003eDivides an Axis by a scalar value. If the Axis is unconstrained the","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO1moiyA2E_14CoreFoundation7CGFloatVtFZ":{"name":"*(_:_:)","abstract":"\u003cp\u003eMultiplies an Axis by a scalar value. If the Axis is unconstrained","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO17isGreaterThanZeroSbvp":{"name":"isGreaterThanZero","abstract":"\u003cp\u003eIf the \u003ccode\u003eAxis\u003c/code\u003e is greater than zero.\u003c/p\u003e","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO2peoiyyAEz_14CoreFoundation7CGFloatVtFZ":{"name":"+=(_:_:)","abstract":"\u003cp\u003eAdds a scalar value to an Axis. If the Axis is unconstrained the","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO2seoiyyAEz_14CoreFoundation7CGFloatVtFZ":{"name":"-=(_:_:)","abstract":"\u003cp\u003eSubtracts a scalar value from an Axis. If the Axis is unconstrained","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO2deoiyyAEz_14CoreFoundation7CGFloatVtFZ":{"name":"/=(_:_:)","abstract":"\u003cp\u003eDivides an Axis by a scalar value. If the Axis is unconstrained the","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO2meoiyyAEz_14CoreFoundation7CGFloatVtFZ":{"name":"*=(_:_:)","abstract":"\u003cp\u003eMultiplies an Axis by a scalar value. If the Axis is unconstrained","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"Axis"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV5widthAC4AxisOvp":{"name":"width","abstract":"\u003cp\u003eThe width constraint.\u003c/p\u003e","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV6heightAC4AxisOvp":{"name":"height","abstract":"\u003cp\u003eThe height constraint.\u003c/p\u003e","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV5width6heightA2C4AxisO_AGtcfc":{"name":"init(width:height:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV13unconstrainedACvpZ":{"name":"unconstrained","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintVyACSo6CGSizeVcfc":{"name":"init(_:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV5widthAC14CoreFoundation7CGFloatV_tcfc":{"name":"init(width:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV6heightAC14CoreFoundation7CGFloatV_tcfc":{"name":"init(height:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV7minimumSo6CGSizeVvp":{"name":"minimum","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV7maximumSo6CGSizeVvp":{"name":"maximum","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV5inset5width6heightAC14CoreFoundation7CGFloatV_AItF":{"name":"inset(width:height:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV5inset2byACSo12UIEdgeInsetsV_tF":{"name":"inset(by:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint/Axis.html":{"name":"Axis","abstract":"\u003cp\u003eRepresents a size constraint for a single axis.\u003c/p\u003e","parent_name":"SizeConstraint"},"Structs/SizeConstraint/UnconstrainedInfiniteAxis.html":{"name":"UnconstrainedInfiniteAxis","abstract":"\u003cp\u003eThis property wrapper checks the value of \u003ccode\u003eatMost\u003c/code\u003e cases, and turns it into an","parent_name":"SizeConstraint"},"Structs/UserInteractionEnabled.html#/s:11BlueprintUI22UserInteractionEnabledV02isE0Sbvp":{"name":"isEnabled","parent_name":"UserInteractionEnabled"},"Structs/UserInteractionEnabled.html#/s:11BlueprintUI22UserInteractionEnabledV14wrappedElementAA0G0_pvp":{"name":"wrappedElement","parent_name":"UserInteractionEnabled"},"Structs/UserInteractionEnabled.html#/s:11BlueprintUI22UserInteractionEnabledV_8wrappingACSb_AA7Element_ptcfc":{"name":"init(_:wrapping:)","parent_name":"UserInteractionEnabled"},"Structs/UserInteractionEnabled.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"UserInteractionEnabled"},"Structs/UserInteractionEnabled.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"UserInteractionEnabled"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV1x14CoreFoundation7CGFloatVvp":{"name":"x","abstract":"\u003cp\u003eThe normalized distance from the origin to the point in the horizontal direction.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV1y14CoreFoundation7CGFloatVvp":{"name":"y","abstract":"\u003cp\u003eThe normalized distance from the origin to the point in the vertical direction.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV1x1yAC14CoreFoundation7CGFloatV_AHtcfc":{"name":"init(x:y:)","abstract":"\u003cp\u003eCreates a unit point with the specified horizontal and vertical offsets.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV4zeroACvpZ":{"name":"zero","abstract":"\u003cp\u003eThe origin of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV6centerACvpZ":{"name":"center","abstract":"\u003cp\u003eA point that’s centered in an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV7leadingACvpZ":{"name":"leading","abstract":"\u003cp\u003eA point that’s centered vertically on the leading edge of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV8trailingACvpZ":{"name":"trailing","abstract":"\u003cp\u003eA point that’s centered vertically on the trailing edge of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV3topACvpZ":{"name":"top","abstract":"\u003cp\u003eA point that’s centered horizontally on the top edge of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV6bottomACvpZ":{"name":"bottom","abstract":"\u003cp\u003eA point that’s centered horizontally on the bottom edge of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV10topLeadingACvpZ":{"name":"topLeading","abstract":"\u003cp\u003eA point that’s in the top leading corner of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV11topTrailingACvpZ":{"name":"topTrailing","abstract":"\u003cp\u003eA point that’s in the top trailing corner of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV13bottomLeadingACvpZ":{"name":"bottomLeading","abstract":"\u003cp\u003eA point that’s in the bottom leading corner of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV14bottomTrailingACvpZ":{"name":"bottomTrailing","abstract":"\u003cp\u003eA point that’s in the bottom trailing corner of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/Transformed.html#/s:11BlueprintUI11TransformedV14wrappedElementAA0E0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe content element whose transform is being affected.\u003c/p\u003e","parent_name":"Transformed"},"Structs/Transformed.html#/s:11BlueprintUI11TransformedV9transformSo13CATransform3DVvp":{"name":"transform","abstract":"\u003cp\u003eThe transform of the wrapped element.\u003c/p\u003e","parent_name":"Transformed"},"Structs/Transformed.html#/s:11BlueprintUI11TransformedV9transform8wrappingACSo13CATransform3DV_AA7Element_ptcfc":{"name":"init(transform:wrapping:)","abstract":"\u003cp\u003eInitializes a \u003ccode\u003eTransformed\u003c/code\u003e with the given content element and 3D transform.\u003c/p\u003e","parent_name":"Transformed"},"Structs/Transformed.html#/s:11BlueprintUI11TransformedV9transform8wrappingACSo17CGAffineTransformV_AA7Element_ptcfc":{"name":"init(transform:wrapping:)","abstract":"\u003cp\u003eInitializes a \u003ccode\u003eTransformed\u003c/code\u003e with the given content element and DD transform.\u003c/p\u003e","parent_name":"Transformed"},"Structs/Transformed.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Transformed"},"Structs/Transformed.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Transformed"},"Structs/TintAdjustmentMode.html#/s:11BlueprintUI18TintAdjustmentModeV04tintdE0So06UIViewcdE0Vvp":{"name":"tintAdjustmentMode","parent_name":"TintAdjustmentMode"},"Structs/TintAdjustmentMode.html#/s:11BlueprintUI18TintAdjustmentModeV14wrappedElementAA0G0_pvp":{"name":"wrappedElement","parent_name":"TintAdjustmentMode"},"Structs/TintAdjustmentMode.html#/s:11BlueprintUI18TintAdjustmentModeV_8wrappingACSo06UIViewcdE0V_AA7Element_ptcfc":{"name":"init(_:wrapping:)","parent_name":"TintAdjustmentMode"},"Structs/TintAdjustmentMode.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"TintAdjustmentMode"},"Structs/TintAdjustmentMode.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"TintAdjustmentMode"},"Structs/StackLayout/Child/Priority.html#/s:11BlueprintUI11StackLayoutV5ChildV8PriorityO5fixedyA2GmF":{"name":"fixed","abstract":"\u003cp\u003eThe element has a fixed size, with a grow and shrink priority of 0.","parent_name":"Priority"},"Structs/StackLayout/Child/Priority.html#/s:11BlueprintUI11StackLayoutV5ChildV8PriorityO8flexibleyA2GmF":{"name":"flexible","abstract":"\u003cp\u003eThe element has a flexible size, with a grow and shrink priority of 1.","parent_name":"Priority"},"Structs/StackLayout/Child/Priority.html#/s:11BlueprintUI11StackLayoutV5ChildV8PriorityO5growsyA2GmF":{"name":"grows","abstract":"\u003cp\u003eThe element has a flexible size, it will grow if the stack underflows,","parent_name":"Priority"},"Structs/StackLayout/Child/Priority.html#/s:11BlueprintUI11StackLayoutV5ChildV8PriorityO7shrinksyA2GmF":{"name":"shrinks","abstract":"\u003cp\u003eThe element has a flexible size, it will shrink if the stack overflows,","parent_name":"Priority"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildV7elementAA7Element_pvp":{"name":"element","parent_name":"Child"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildV6traitsAC6TraitsVvp":{"name":"traits","parent_name":"Child"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildV3keys11AnyHashableVSgvp":{"name":"key","parent_name":"Child"},"Structs/StackLayout/Child/Priority.html":{"name":"Priority","parent_name":"Child"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildV7element6traits3keyAeA7Element_p_AC6TraitsVs11AnyHashableVSgtcfc":{"name":"init(element:traits:key:)","parent_name":"Child"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildV7element8priority14alignmentGuide3keyAeA7Element_p_AE8PriorityO14CoreFoundation7CGFloatVAA0K10DimensionsVcSgs11AnyHashableVSgtcfc":{"name":"init(element:priority:alignmentGuide:key:)","parent_name":"Child"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildVyAeA7Element_pcfc":{"name":"init(_:)","parent_name":"Child"},"Structs/StackLayout/Alignment.html#/s:11BlueprintUI11StackLayoutV9AlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eChildren will be stretched to the size of the stack.\u003c/p\u003e","parent_name":"Alignment"},"Structs/StackLayout/Alignment.html#/s:11BlueprintUI11StackLayoutV9AlignmentO5alignyAeA0E2ID_pXp_tcAEmF":{"name":"align(to:)","abstract":"\u003cp\u003eChildren will be aligned relatively to each other, and then all the contents will be","parent_name":"Alignment"},"Structs/StackLayout/OverflowDistribution.html#/s:11BlueprintUI11StackLayoutV20OverflowDistributionO22condenseProportionallyyA2EmF":{"name":"condenseProportionally","abstract":"\u003cp\u003eEach child will shrink proportionally to its measured size.\u003c/p\u003e","parent_name":"OverflowDistribution"},"Structs/StackLayout/OverflowDistribution.html#/s:11BlueprintUI11StackLayoutV20OverflowDistributionO17condenseUniformlyyA2EmF":{"name":"condenseUniformly","abstract":"\u003cp\u003eEach child will shrink by the same amount.\u003c/p\u003e","parent_name":"OverflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO11spaceEvenlyyA2EmF":{"name":"spaceEvenly","abstract":"\u003cp\u003eAdditional space will be evenly divided into the spacing between items.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO18growProportionallyyA2EmF":{"name":"growProportionally","abstract":"\u003cp\u003eAdditional space will be divided proportionally by the measured size of each child.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO13growUniformlyyA2EmF":{"name":"growUniformly","abstract":"\u003cp\u003eAdditional space will be distributed uniformly between children.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO14justifyToStartyA2EmF":{"name":"justifyToStart","abstract":"\u003cp\u003eAdditional space will appear after all children.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO15justifyToCenteryA2EmF":{"name":"justifyToCenter","abstract":"\u003cp\u003eAdditional space will be distributed on either side of all children.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO12justifyToEndyA2EmF":{"name":"justifyToEnd","abstract":"\u003cp\u003eAdditional space will be appear before all children.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/Axis.html#/s:11BlueprintUI11StackLayoutV4AxisO10horizontalyA2EmF":{"name":"horizontal","parent_name":"Axis"},"Structs/StackLayout/Axis.html#/s:11BlueprintUI11StackLayoutV4AxisO8verticalyA2EmF":{"name":"vertical","parent_name":"Axis"},"Structs/StackLayout/Traits.html#/s:11BlueprintUI11StackLayoutV6TraitsV12growPriority14CoreFoundation7CGFloatVvp":{"name":"growPriority","abstract":"\u003cp\u003eControls the amount of extra space distributed to this child during underflow.\u003c/p\u003e","parent_name":"Traits"},"Structs/StackLayout/Traits.html#/s:11BlueprintUI11StackLayoutV6TraitsV14shrinkPriority14CoreFoundation7CGFloatVvp":{"name":"shrinkPriority","abstract":"\u003cp\u003eControls the amount of space allowed for this child during overflow.\u003c/p\u003e","parent_name":"Traits"},"Structs/StackLayout/Traits.html#/s:11BlueprintUI11StackLayoutV6TraitsV14alignmentGuideAC09AlignmentG0VSgvp":{"name":"alignmentGuide","abstract":"\u003cp\u003eAllows for custom alignment of a child along the cross axis.\u003c/p\u003e","parent_name":"Traits"},"Structs/StackLayout/Traits.html#/s:11BlueprintUI11StackLayoutV6TraitsV12growPriority06shrinkG014alignmentGuideAE14CoreFoundation7CGFloatV_AkC09AlignmentJ0VSgtcfc":{"name":"init(growPriority:shrinkPriority:alignmentGuide:)","abstract":"\u003cp\u003eCreates a new set of traits with default values.\u003c/p\u003e","parent_name":"Traits"},"Structs/StackLayout/AlignmentGuide.html#/s:11BlueprintUI11StackLayoutV14AlignmentGuideV12computeValuey14CoreFoundation7CGFloatVAA17ElementDimensionsVcvp":{"name":"computeValue","abstract":"\u003cp\u003eReturns a value along the stack\u0026rsquo;s cross axis, in the element\u0026rsquo;s own coordinate space,","parent_name":"AlignmentGuide"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV13defaultTraitsAC0F0VvpZ":{"name":"defaultTraits","abstract":"\u003cp\u003eThe default traits for a child contained within a stack layout\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout/AlignmentGuide.html":{"name":"AlignmentGuide","abstract":"\u003cp\u003eDetermines how a stack child will be aligned on the cross axis relative to other children.\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout/Traits.html":{"name":"Traits","abstract":"\u003cp\u003eContains traits that affect the layout of individual children in the stack.\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV4axisAC4AxisOvp":{"name":"axis","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV9underflowAC21UnderflowDistributionOvp":{"name":"underflow","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV8overflowAC20OverflowDistributionOvp":{"name":"overflow","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV9alignmentAC9AlignmentOvp":{"name":"alignment","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV14minimumSpacing14CoreFoundation7CGFloatVvp":{"name":"minimumSpacing","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV4axis9alignmentA2C4AxisO_AC9AlignmentOtcfc":{"name":"init(axis:alignment:)","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI12LegacyLayoutP7measure2in5itemsSo6CGSizeVAA14SizeConstraintV_Say6TraitsQz6traits_AA10Measurable_p7contenttGtF":{"name":"measure(in:items:)","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI12LegacyLayoutP6layout4size5itemsSayAA0D10AttributesVGSo6CGSizeV_Say6TraitsQz6traits_AA10Measurable_p7contenttGtF":{"name":"layout(size:items:)","parent_name":"StackLayout"},"Structs/StackLayout/Axis.html":{"name":"Axis","abstract":"\u003cp\u003eThe direction of the stack.\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout/UnderflowDistribution.html":{"name":"UnderflowDistribution","abstract":"\u003cp\u003eDetermines the on-axis layout when there is extra free space available.\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout/OverflowDistribution.html":{"name":"OverflowDistribution","abstract":"\u003cp\u003eDetermines the on-axis layout when there is not enough space to fit all children as measured.\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout/Alignment.html":{"name":"Alignment","abstract":"\u003cp\u003eDetermines the cross-axis layout (height for a horizontal stack, width for a vertical stack).\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP12sizeThatFits8proposal11subelements11environment5cacheSo6CGSizeVAA14SizeConstraintV_SayAA0D10SubelementVGAA11EnvironmentV5CacheQzztF":{"name":"sizeThatFits(proposal:subelements:environment:cache:)","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP16placeSubelements2in11subelements11environment5cacheySo6CGSizeV_SayAA0D10SubelementVGAA11EnvironmentV5CacheQzztF":{"name":"placeSubelements(in:subelements:environment:cache:)","parent_name":"StackLayout"},"Structs/StackLayout/Child.html":{"name":"Child","parent_name":"StackLayout"},"Structs/Opacity.html#/s:11BlueprintUI7OpacityV14wrappedElementAA0E0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe content element whose opacity is being affected.\u003c/p\u003e","parent_name":"Opacity"},"Structs/Opacity.html#/s:11BlueprintUI7OpacityV7opacity14CoreFoundation7CGFloatVvp":{"name":"opacity","abstract":"\u003cp\u003eThe opacity of the wrapped element.\u003c/p\u003e","parent_name":"Opacity"},"Structs/Opacity.html#/s:11BlueprintUI7OpacityV7opacity8wrappingAC14CoreFoundation7CGFloatV_AA7Element_ptcfc":{"name":"init(opacity:wrapping:)","abstract":"\u003cp\u003eInitializes an \u003ccode\u003eOpacity\u003c/code\u003e with the given content element and opacity.\u003c/p\u003e","parent_name":"Opacity"},"Structs/Opacity.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Opacity"},"Structs/Opacity.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Opacity"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV7wrappedAA7Element_pvp":{"name":"wrapped","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV8onAppearyycSgvp":{"name":"onAppear","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV11onDisappearyycSgvp":{"name":"onDisappear","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV8onAppear0E9Disappear8wrappingACyycSg_AgA7Element_ptcfc":{"name":"init(onAppear:onDisappear:wrapping:)","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV8onAppearyACyycF":{"name":"onAppear(_:)","abstract":"\u003cp\u003eAdds a hook that will be called when this element appears.\u003c/p\u003e","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV11onDisappearyACyycF":{"name":"onDisappear(_:)","abstract":"\u003cp\u003eAdds a hook that will be called when this element disappears.\u003c/p\u003e","parent_name":"LifecycleObserver"},"Structs/LayoutWriter/Child.html#/s:11BlueprintUI12LayoutWriterV5ChildV5frameSo6CGRectVvp":{"name":"frame","abstract":"\u003cp\u003eThe frame of the element in the coordinate space of the custom layout.\u003c/p\u003e","parent_name":"Child"},"Structs/LayoutWriter/Child.html#/s:11BlueprintUI12LayoutWriterV5ChildV3keys11AnyHashableVSgvp":{"name":"key","abstract":"\u003cp\u003eThe key to use to disambiguate this element.\u003c/p\u003e","parent_name":"Child"},"Structs/LayoutWriter/Child.html#/s:11BlueprintUI12LayoutWriterV5ChildV7elementAA7Element_pvp":{"name":"element","abstract":"\u003cp\u003eThe element to be displayed.\u003c/p\u003e","parent_name":"Child"},"Structs/LayoutWriter/Child.html#/s:11BlueprintUI12LayoutWriterV5ChildV5frame3key7elementAESo6CGRectV_s11AnyHashableVSgAA7Element_ptcfc":{"name":"init(frame:key:element:)","abstract":"\u003cp\u003eCreates a new child element.\u003c/p\u003e","parent_name":"Child"},"Structs/LayoutWriter/Sizing.html#/s:11BlueprintUI12LayoutWriterV6SizingO15unionOfChildrenyA2EmF":{"name":"unionOfChildren","abstract":"\u003cp\u003eEnsures that the final size of element is large enough to fit all children, starting from (0,0).\u003c/p\u003e","parent_name":"Sizing"},"Structs/LayoutWriter/Sizing.html#/s:11BlueprintUI12LayoutWriterV6SizingO5fixedyAESo6CGSizeVcAEmF":{"name":"fixed(_:)","abstract":"\u003cp\u003eFixes the layout size to the provided size. Children are positioned within this size, starting at (0,0)","parent_name":"Sizing"},"Structs/LayoutWriter/Context/LayoutPhase.html#/s:11BlueprintUI12LayoutWriterV7ContextV0C5PhaseO11measurementyA2GmF":{"name":"measurement","abstract":"\u003cp\u003eThe element is being measured.\u003c/p\u003e","parent_name":"LayoutPhase"},"Structs/LayoutWriter/Context/LayoutPhase.html#/s:11BlueprintUI12LayoutWriterV7ContextV0C5PhaseO6layoutyAGSo6CGSizeVcAGmF":{"name":"layout(_:)","abstract":"\u003cp\u003eThe element is being laid out with a known size.\u003c/p\u003e","parent_name":"LayoutPhase"},"Structs/LayoutWriter/Context/LayoutPhase.html#/s:11BlueprintUI12LayoutWriterV7ContextV0C5PhaseO9onMeasure_0gC0xxyXE_xSo6CGSizeVXEtlF":{"name":"onMeasure(_:onLayout:)","abstract":"\u003cp\u003eReturns the provided value based on if a measurement or layout is occurring.\u003c/p\u003e","parent_name":"LayoutPhase"},"Structs/LayoutWriter/Context.html#/s:11BlueprintUI12LayoutWriterV7ContextV4sizeAA14SizeConstraintVvp":{"name":"size","abstract":"\u003cp\u003eThe size constraint the layout is occurring in.\u003c/p\u003e","parent_name":"Context"},"Structs/LayoutWriter/Context.html#/s:11BlueprintUI12LayoutWriterV7ContextV5phaseAE0C5PhaseOvp":{"name":"phase","abstract":"\u003cp\u003eThe phase of the layout current occurring – measurement or layout.\u003c/p\u003e","parent_name":"Context"},"Structs/LayoutWriter/Context/LayoutPhase.html":{"name":"LayoutPhase","abstract":"\u003cp\u003eThe current phase of the layout event: \u003ccode\u003e.measurement\u003c/code\u003e or \u003ccode\u003e.layout\u003c/code\u003e.\u003c/p\u003e","parent_name":"Context"},"Structs/LayoutWriter/Builder.html#/s:11BlueprintUI12LayoutWriterV7BuilderV6sizingAC6SizingOvp":{"name":"sizing","abstract":"\u003cp\u003eHow the size of the layout should be calculated. Defaults to \u003ccode\u003e.unionOfChildren\u003c/code\u003e,","parent_name":"Builder"},"Structs/LayoutWriter/Builder.html#/s:11BlueprintUI12LayoutWriterV7BuilderV8childrenSayAC5ChildVGvp":{"name":"children","abstract":"\u003cp\u003eThe children of the custom layout, which specifies the child element and its frame.\u003c/p\u003e","parent_name":"Builder"},"Structs/LayoutWriter/Builder.html#/s:11BlueprintUI12LayoutWriterV7BuilderV3add4with3key5childySo6CGRectV_s11AnyHashableVSgAA7Element_ptF":{"name":"add(with:key:child:)","abstract":"\u003cp\u003eAdds a new child element to the layout with the provided frame and optional key.\u003c/p\u003e","parent_name":"Builder"},"Structs/LayoutWriter/Builder.html#/s:11BlueprintUI12LayoutWriterV7BuilderV3addyyAC5ChildVF":{"name":"add(_:)","abstract":"\u003cp\u003eAdds a new child element to the layout.\u003c/p\u003e","parent_name":"Builder"},"Structs/LayoutWriter/Builder.html#/s:11BlueprintUI12LayoutWriterV7BuilderV10modifyEach5usingyyAC5ChildVzXE_tF":{"name":"modifyEach(using:)","abstract":"\u003cp\u003eEnumerates each of the children, allowing you to modify them in place,","parent_name":"Builder"},"Structs/LayoutWriter.html#/s:11BlueprintUI12LayoutWriterVyACyAC7ContextV_AC7BuilderVztccfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreates a new instance of the LayoutWriter with the custom layout provided by the builder.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter.html#/s:11BlueprintUI12LayoutWriterV5Builda":{"name":"Build","abstract":"\u003cp\u003eThe builder type passed to the \u003ccode\u003eLayoutWriter\u003c/code\u003e initializer.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter.html#/s:11BlueprintUI12LayoutWriterV5buildyyAC7ContextV_AC7BuilderVztcvp":{"name":"build","abstract":"\u003cp\u003eThe builder used to create the custom layout.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"LayoutWriter"},"Structs/LayoutWriter.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"LayoutWriter"},"Structs/LayoutWriter/Builder.html":{"name":"Builder","abstract":"\u003cp\u003eThe builder is the primary surface area you interact with when using a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/LayoutWriter.html\"\u003eLayoutWriter\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter/Context.html":{"name":"Context","abstract":"\u003cp\u003eProvides the relevant information about the context in which the layout is occurring.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter/Sizing.html":{"name":"Sizing","abstract":"\u003cp\u003eControls the sizing calculation of the custom layout.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter/Child.html":{"name":"Child","abstract":"\u003cp\u003eA child of the custom layout, providing its frame and element.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutSubelement/Attributes.html#/s:11BlueprintUI16LayoutSubelementV10AttributesV9transformSo13CATransform3DVvp":{"name":"transform","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.layer.transform\u003c/code\u003e.\u003c/p\u003e","parent_name":"Attributes"},"Structs/LayoutSubelement/Attributes.html#/s:11BlueprintUI16LayoutSubelementV10AttributesV5alpha14CoreFoundation7CGFloatVvp":{"name":"alpha","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.alpha\u003c/code\u003e.\u003c/p\u003e","parent_name":"Attributes"},"Structs/LayoutSubelement/Attributes.html#/s:11BlueprintUI16LayoutSubelementV10AttributesV24isUserInteractionEnabledSbvp":{"name":"isUserInteractionEnabled","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.isUserInteractionEnabled\u003c/code\u003e.\u003c/p\u003e","parent_name":"Attributes"},"Structs/LayoutSubelement/Attributes.html#/s:11BlueprintUI16LayoutSubelementV10AttributesV8isHiddenSbvp":{"name":"isHidden","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.isHidden\u003c/code\u003e.\u003c/p\u003e","parent_name":"Attributes"},"Structs/LayoutSubelement/Attributes.html#/s:11BlueprintUI16LayoutSubelementV10AttributesV18tintAdjustmentModeSo010UIViewTintgH0Vvp":{"name":"tintAdjustmentMode","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.tintAdjustmentMode\u003c/code\u003e.\u003c/p\u003e","parent_name":"Attributes"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV10attributesAC10AttributesVvp":{"name":"attributes","abstract":"\u003cp\u003eOptional attributes to apply to this subelement, such as opacity and transforms.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV5place2at6anchor4sizeySo7CGPointV_AA9UnitPointVSo6CGSizeVtF":{"name":"place(at:anchor:size:)","abstract":"\u003cp\u003eAssigns a position and size to a subelement.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV5place2in6anchorySo6CGRectV_AA9UnitPointVtF":{"name":"place(in:anchor:)","abstract":"\u003cp\u003eAssigns a position and size to a subelement.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV5place7fillingySo6CGSizeV_tF":{"name":"place(filling:)","abstract":"\u003cp\u003eAssigns a position and size to a subelement.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV12sizeThatFitsySo6CGSizeVAA14SizeConstraintVF":{"name":"sizeThatFits(_:)","abstract":"\u003cp\u003eAsks the subelement for its size.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV6traits03forC4Type6TraitsQzxm_tAA0C0RzlF":{"name":"traits(forLayoutType:)","abstract":"\u003cp\u003eGets the layout traits of the subelement.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement/Attributes.html":{"name":"Attributes","abstract":"\u003cp\u003eOptional additional attributes that can be applied to a subelement.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutOptions.html#/s:11BlueprintUI13LayoutOptionsV7defaultACvpZ":{"name":"default","abstract":"\u003cp\u003eThe default configuration.\u003c/p\u003e","parent_name":"LayoutOptions"},"Structs/LayoutOptions.html#/s:11BlueprintUI13LayoutOptionsV19hintRangeBoundariesSbvp":{"name":"hintRangeBoundaries","abstract":"\u003cp\u003eEnables aggressive cache hinting along the boundaries of the range between constraints and","parent_name":"LayoutOptions"},"Structs/LayoutOptions.html#/s:11BlueprintUI13LayoutOptionsV23searchUnconstrainedKeysSbvp":{"name":"searchUnconstrainedKeys","abstract":"\u003cp\u003eAllows cache misses on finite constraints to deduce a range-based match by searching for a","parent_name":"LayoutOptions"},"Structs/LayoutOptions.html#/s:11BlueprintUI13LayoutOptionsV19hintRangeBoundaries23searchUnconstrainedKeysACSb_Sbtcfc":{"name":"init(hintRangeBoundaries:searchUnconstrainedKeys:)","parent_name":"LayoutOptions"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV6centerSo7CGPointVvp":{"name":"center","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.center\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV6boundsSo6CGRectVvp":{"name":"bounds","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.bounds\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV9transformSo13CATransform3DVvp":{"name":"transform","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.layer.transform\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV5alpha14CoreFoundation7CGFloatVvp":{"name":"alpha","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.alpha\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV24isUserInteractionEnabledSbvp":{"name":"isUserInteractionEnabled","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.isUserInteractionEnabled\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV8isHiddenSbvp":{"name":"isHidden","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.isHidden\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV18tintAdjustmentModeSo010UIViewTintfG0Vvp":{"name":"tintAdjustmentMode","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.tintAdjustmentMode\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesVACycfc":{"name":"init()","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV5frameACSo6CGRectV_tcfc":{"name":"init(frame:)","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV4sizeACSo6CGSizeV_tcfc":{"name":"init(size:)","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV6center6boundsACSo7CGPointV_So6CGRectVtcfc":{"name":"init(center:bounds:)","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV5frameSo6CGRectVvp":{"name":"frame","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV6withinyA2CF":{"name":"within(_:)","abstract":"\u003cp\u003eConcatenates layout attributes, moving the receiver from the local","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"LayoutAttributes"},"Structs/Keyed.html#/s:11BlueprintUI5KeyedV3keys11AnyHashableVSgvp":{"name":"key","abstract":"\u003cp\u003eThe key used to differentiate the element.\u003c/p\u003e","parent_name":"Keyed"},"Structs/Keyed.html#/s:11BlueprintUI5KeyedV7wrappedAA7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe wrapped element.\u003c/p\u003e","parent_name":"Keyed"},"Structs/Keyed.html#/s:11BlueprintUI5KeyedV3key8wrappingACs11AnyHashableVSg_AA7Element_ptcfc":{"name":"init(key:wrapping:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eKeyed\u003c/code\u003e element with the provided key and wrapped element.\u003c/p\u003e","parent_name":"Keyed"},"Structs/Keyed.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Keyed"},"Structs/Keyed.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Keyed"},"Structs/Hidden.html#/s:11BlueprintUI6HiddenV02isC0Sbvp":{"name":"isHidden","parent_name":"Hidden"},"Structs/Hidden.html#/s:11BlueprintUI6HiddenV14wrappedElementAA0E0_pvp":{"name":"wrappedElement","parent_name":"Hidden"},"Structs/Hidden.html#/s:11BlueprintUI6HiddenV_8wrappingACSb_AA7Element_ptcfc":{"name":"init(_:wrapping:)","parent_name":"Hidden"},"Structs/Hidden.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Hidden"},"Structs/Hidden.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Hidden"},"Structs/GridRow/Width.html#/s:11BlueprintUI7GridRowV5WidthO8absoluteyAE14CoreFoundation7CGFloatVcAEmF":{"name":"absolute(_:)","abstract":"\u003cp\u003eAssign the child a fixed width equal to the payload.\u003c/p\u003e","parent_name":"Width"},"Structs/GridRow/Width.html#/s:11BlueprintUI7GridRowV5WidthO12proportionalyAE14CoreFoundation7CGFloatVcAEmF":{"name":"proportional(_:)","abstract":"\u003cp\u003eAssign the child a proportional width of the available layout width. Note that proportional children","parent_name":"Width"},"Structs/GridRow/Child.html#/s:11BlueprintUI7GridRowV5ChildV7elementAA7Element_pvp":{"name":"element","abstract":"\u003cp\u003eThe element displayed in the \u003ccode\u003eGrid\u003c/code\u003e.\u003c/p\u003e","parent_name":"Child"},"Structs/GridRow/Child.html#/s:11BlueprintUI7GridRowV5ChildV3keys11AnyHashableVSgvp":{"name":"key","abstract":"\u003cp\u003eA unique identifier for the child.\u003c/p\u003e","parent_name":"Child"},"Structs/GridRow/Child.html#/s:11BlueprintUI7GridRowV5ChildV5widthAC5WidthOvp":{"name":"width","parent_name":"Child"},"Structs/GridRow/Child.html#/s:11BlueprintUI7GridRowV5ChildV5width3key7elementAeC5WidthO_s11AnyHashableVSgAA7Element_ptcfc":{"name":"init(width:key:element:)","parent_name":"Child"},"Structs/GridRow/Child.html#/s:11BlueprintUI7GridRowV5ChildVyAeA7Element_pcfc":{"name":"init(_:)","parent_name":"Child"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV17verticalAlignmentAA0D0V0dF0Ovp":{"name":"verticalAlignment","abstract":"\u003cp\u003eHow children are aligned vertically. By default, \u003ccode\u003e.fill\u003c/code\u003e.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV7spacing14CoreFoundation7CGFloatVvp":{"name":"spacing","abstract":"\u003cp\u003eThe space between children. By default, 0.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV8childrenSayAC5ChildVGvp":{"name":"children","abstract":"\u003cp\u003eThe child elements to be laid out. By default, an empty array.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV9configureACyACzXE_tcfc":{"name":"init(configure:)","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV17verticalAlignment7spacing_AcA0D0V0dF0O_14CoreFoundation7CGFloatVSayAC5ChildVGyXEtcfc":{"name":"init(verticalAlignment:spacing:_:)","abstract":"\u003cp\u003eInitializer using result builder to declaritively build up a grid row.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV3add5width3key5childyAC5WidthO_s11AnyHashableVSgAA7Element_ptF":{"name":"add(width:key:child:)","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"GridRow"},"Structs/GridRow/Child.html":{"name":"Child","abstract":"\u003cp\u003eA child of a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/GridRow.html\"\u003eGridRow\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GridRow/Width.html":{"name":"Width","abstract":"\u003cp\u003eThe sizing and content of a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/GridRow.html\"\u003eGridRow\u003c/a\u003e\u003c/code\u003e child.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GeometryProxy.html#/s:11BlueprintUI13GeometryProxyV10constraintAA14SizeConstraintVvp":{"name":"constraint","abstract":"\u003cp\u003eThe size constraint of the element being laid out.\u003c/p\u003e","parent_name":"GeometryProxy"},"Structs/GeometryProxy.html#/s:11BlueprintUI13GeometryProxyV7measure7element2inSo6CGSizeVAA7Element_p_AA14SizeConstraintVSgtF":{"name":"measure(element:in:)","abstract":"\u003cp\u003eMeasure the given element, constrained to the same size as the \u003ccode\u003eGeometryProxy\u003c/code\u003e itself (unless a constraint is explicitly provided).\u003c/p\u003e","parent_name":"GeometryProxy"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildV3keys11AnyHashableVSgvp":{"name":"key","abstract":"\u003cp\u003eThe key used to optionally unique the child item.\u003c/p\u003e","parent_name":"Child"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildV6traitsAE6TraitsVvp":{"name":"traits","abstract":"\u003cp\u003eThe traits of a child item.\u003c/p\u003e","parent_name":"Child"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildV7elementAA7Element_pvp":{"name":"element","abstract":"\u003cp\u003eThe element representing the child item.\u003c/p\u003e","parent_name":"Child"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildVyAeA7Element_pcfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreates a new child item with the given element.\u003c/p\u003e","parent_name":"Child"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildV_3keyAeA7Element_p_s11AnyHashableVSgtcfc":{"name":"init(_:key:)","abstract":"\u003cp\u003eCreates a new child item with the given element.\u003c/p\u003e","parent_name":"Child"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildV6TraitsV":{"name":"Traits","parent_name":"Child"},"Structs/Flow/ItemAlignment.html#/s:11BlueprintUI4FlowV13ItemAlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eShorter items are stretched to fill the height of the tallest item.\u003c/p\u003e","parent_name":"ItemAlignment"},"Structs/Flow/ItemAlignment.html#/s:11BlueprintUI4FlowV13ItemAlignmentO3topyA2EmF":{"name":"top","abstract":"\u003cp\u003eShorter items are aligned to the top of the row.\u003c/p\u003e","parent_name":"ItemAlignment"},"Structs/Flow/ItemAlignment.html#/s:11BlueprintUI4FlowV13ItemAlignmentO6centeryA2EmF":{"name":"center","abstract":"\u003cp\u003eShorter items are vertically aligned within the row.\u003c/p\u003e","parent_name":"ItemAlignment"},"Structs/Flow/ItemAlignment.html#/s:11BlueprintUI4FlowV13ItemAlignmentO6bottomyA2EmF":{"name":"bottom","abstract":"\u003cp\u003eShorter items are aligned to the bottom of the row.\u003c/p\u003e","parent_name":"ItemAlignment"},"Structs/Flow/LineAlignment.html#/s:11BlueprintUI4FlowV13LineAlignmentO7leadingyA2EmF":{"name":"leading","abstract":"\u003cp\u003eItems are aligned with the leading edge.\u003c/p\u003e","parent_name":"LineAlignment"},"Structs/Flow/LineAlignment.html#/s:11BlueprintUI4FlowV13LineAlignmentO6centeryA2EmF":{"name":"center","abstract":"\u003cp\u003eItems are centered within the remaining space.\u003c/p\u003e","parent_name":"LineAlignment"},"Structs/Flow/LineAlignment.html#/s:11BlueprintUI4FlowV13LineAlignmentO8trailingyA2EmF":{"name":"trailing","abstract":"\u003cp\u003eItems are aligned with the trailing edge.\u003c/p\u003e","parent_name":"LineAlignment"},"Structs/Flow.html#/s:11BlueprintUI4FlowV13lineAlignmentAC04LineE0Ovp":{"name":"lineAlignment","abstract":"\u003cp\u003eHow to align each row when there is extra horizontal space.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI4FlowV11lineSpacing14CoreFoundation7CGFloatVvp":{"name":"lineSpacing","abstract":"\u003cp\u003eSpace between lines in the layout.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI4FlowV13itemAlignmentAC04ItemE0Ovp":{"name":"itemAlignment","abstract":"\u003cp\u003eHow to align items in a line when there is extra vertical space.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI4FlowV11itemSpacing14CoreFoundation7CGFloatVvp":{"name":"itemSpacing","abstract":"\u003cp\u003eSpace between items within a line.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI4FlowV8childrenSayAC5ChildVGvp":{"name":"children","abstract":"\u003cp\u003eThe child elements of the flow layout to be laid out.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI4FlowV13lineAlignment0D7Spacing04itemE00gF0_A2C04LineE0O_14CoreFoundation7CGFloatVAC04ItemE0OALSayAC5ChildVGyXEtcfc":{"name":"init(lineAlignment:lineSpacing:itemAlignment:itemSpacing:_:)","abstract":"\u003cp\u003eCreates a new flow layout with the provided parameters.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Flow"},"Structs/Flow/LineAlignment.html":{"name":"LineAlignment","abstract":"\u003cp\u003eHow to horizontally align the line when there is extra space.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow/ItemAlignment.html":{"name":"ItemAlignment","abstract":"\u003cp\u003eHow to vertically align items which there is extra space.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow/Child.html":{"name":"Child","abstract":"\u003cp\u003eA child placed within the flow layout.\u003c/p\u003e","parent_name":"Flow"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsV5width14CoreFoundation7CGFloatVvp":{"name":"width","abstract":"\u003cp\u003eThe element\u0026rsquo;s width\u003c/p\u003e","parent_name":"ElementDimensions"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsV6height14CoreFoundation7CGFloatVvp":{"name":"height","abstract":"\u003cp\u003eThe element\u0026rsquo;s height\u003c/p\u003e","parent_name":"ElementDimensions"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsVy14CoreFoundation7CGFloatVAA19HorizontalAlignmentVcip":{"name":"subscript(_:)","abstract":"\u003cp\u003eAccesses the value of the given guide, or the default value of the alignment if this","parent_name":"ElementDimensions"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsVy14CoreFoundation7CGFloatVAA17VerticalAlignmentVcip":{"name":"subscript(_:)","abstract":"\u003cp\u003eAccesses the value of the given guide, or the default value of the alignment if this","parent_name":"ElementDimensions"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsV8explicit14CoreFoundation7CGFloatVSgAA19HorizontalAlignmentV_tcip":{"name":"subscript(explicit:)","abstract":"\u003cp\u003eReturns the explicit value of the given alignment guide in this view, or","parent_name":"ElementDimensions"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsV8explicit14CoreFoundation7CGFloatVSgAA17VerticalAlignmentV_tcip":{"name":"subscript(explicit:)","abstract":"\u003cp\u003eReturns the explicit value of the given alignment guide in this view, or","parent_name":"ElementDimensions"},"Structs/Decorate/Position/PositionContext.html#/s:11BlueprintUI8DecorateV8PositionV0D7ContextV14decorationSizeSo6CGSizeVvp":{"name":"decorationSize","abstract":"\u003cp\u003eThe size of the decoration being positioned within the decorated content\u0026rsquo;s bounds.\u003c/p\u003e","parent_name":"PositionContext"},"Structs/Decorate/Position/PositionContext.html#/s:11BlueprintUI8DecorateV8PositionV0D7ContextV11contentSizeSo6CGSizeVvp":{"name":"contentSize","abstract":"\u003cp\u003eThe size of the content element within the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Decorate.html\"\u003eDecorate\u003c/a\u003e\u003c/code\u003e element.\u003c/p\u003e","parent_name":"PositionContext"},"Structs/Decorate/Position/PositionContext.html#/s:11BlueprintUI8DecorateV8PositionV0D7ContextV11environmentAA11EnvironmentVvp":{"name":"environment","abstract":"\u003cp\u003eThe environment the element is being rendered in.\u003c/p\u003e","parent_name":"PositionContext"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV5insetyAESo12UIEdgeInsetsVFZ":{"name":"inset(_:)","abstract":"\u003cp\u003eInsets the decoration element on each edge by the amount specified by","parent_name":"Position"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV5insetyAE14CoreFoundation7CGFloatVFZ":{"name":"inset(_:)","abstract":"\u003cp\u003eProvides a \u003ccode\u003e.inset\u003c/code\u003e position where the decoration is inset by the","parent_name":"Position"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV5inset10horizontal8verticalAE14CoreFoundation7CGFloatV_AKtFZ":{"name":"inset(horizontal:vertical:)","abstract":"\u003cp\u003eProvides a \u003ccode\u003e.inset\u003c/code\u003e position where the decoration is inset by the","parent_name":"Position"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV7aligned2to15horizontalGuide08verticalH0AeA9AlignmentV_14CoreFoundation7CGFloatVAA17ElementDimensionsVcSgAQtFZ":{"name":"aligned(to:horizontalGuide:verticalGuide:)","abstract":"\u003cp\u003eAligns the decoration according the given alignment option, optionally adjusting it with","parent_name":"Position"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV6corneryAeC6CornerO_So8UIOffsetVtFZ":{"name":"corner(_:_:)","abstract":"\u003cp\u003eThe decoration element is positioned in the given corner of the","parent_name":"Position"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV6customyAESo6CGRectVAE0D7ContextVcFZ":{"name":"custom(_:)","abstract":"\u003cp\u003eAllows you to provide custom positioning for the decoration, based on the passed context.\u003c/p\u003e","parent_name":"Position"},"Structs/Decorate/Position/PositionContext.html":{"name":"PositionContext","abstract":"\u003cp\u003eInformation provided to \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Decorate/Position.html\"\u003ePosition\u003c/a\u003e\u003c/code\u003e closures.\u003c/p\u003e","parent_name":"Position"},"Structs/Decorate/Corner.html#/s:11BlueprintUI8DecorateV6CornerO7topLeftyA2EmF":{"name":"topLeft","parent_name":"Corner"},"Structs/Decorate/Corner.html#/s:11BlueprintUI8DecorateV6CornerO8topRightyA2EmF":{"name":"topRight","parent_name":"Corner"},"Structs/Decorate/Corner.html#/s:11BlueprintUI8DecorateV6CornerO11bottomRightyA2EmF":{"name":"bottomRight","parent_name":"Corner"},"Structs/Decorate/Corner.html#/s:11BlueprintUI8DecorateV6CornerO10bottomLeftyA2EmF":{"name":"bottomLeft","parent_name":"Corner"},"Structs/Decorate/Layering.html#/s:11BlueprintUI8DecorateV8LayeringO5aboveyA2EmF":{"name":"above","abstract":"\u003cp\u003eThe decoration is displayed above the content element.\u003c/p\u003e","parent_name":"Layering"},"Structs/Decorate/Layering.html#/s:11BlueprintUI8DecorateV8LayeringO5belowyA2EmF":{"name":"below","abstract":"\u003cp\u003eThe decoration is displayed below the content element.\u003c/p\u003e","parent_name":"Layering"},"Structs/Decorate.html#/s:11BlueprintUI8DecorateV7wrappedAA7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe element which provides the sizing and measurement.","parent_name":"Decorate"},"Structs/Decorate.html#/s:11BlueprintUI8DecorateV10decorationAA7Element_pvp":{"name":"decoration","abstract":"\u003cp\u003eThe element which is used to draw the decoration.","parent_name":"Decorate"},"Structs/Decorate.html#/s:11BlueprintUI8DecorateV8layeringAC8LayeringOvp":{"name":"layering","abstract":"\u003cp\u003eWhere the decoration should be positioned in the z-axis: Above or below the wrapped element.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Decorate.html#/s:11BlueprintUI8DecorateV8positionAC8PositionVvp":{"name":"position","abstract":"\u003cp\u003eHow the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Decorate.html#/s:11BlueprintUI8DecorateV10decorationAA7Element_pvp\"\u003edecoration\u003c/a\u003e\u003c/code\u003e should be positioned in respect to the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Decorate.html#/s:11BlueprintUI8DecorateV7wrappedAA7Element_pvp\"\u003ewrapped\u003c/a\u003e\u003c/code\u003e element.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Decorate.html#/s:11BlueprintUI8DecorateV8layering8position8wrapping10decorationA2C8LayeringO_AC8PositionVAA7Element_pAaL_ptcfc":{"name":"init(layering:position:wrapping:decoration:)","abstract":"\u003cp\u003eCreates a new instance with the provided overflow, background, and wrapped element.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Decorate.html#/s:11BlueprintUI12ProxyElementP21elementRepresentationAA0D0_pvp":{"name":"elementRepresentation","parent_name":"Decorate"},"Structs/Decorate/Layering.html":{"name":"Layering","abstract":"\u003cp\u003eIf the decoration should be positioned above or below the content element.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Decorate/Corner.html":{"name":"Corner","abstract":"\u003cp\u003eWhat corner the decoration element should be positioned in.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Decorate/Position.html":{"name":"Position","abstract":"\u003cp\u003eHow to position the decoration element relative to the content element.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV8Childrena":{"name":"Children","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV10buildBlockySayxGAEd_tFZ":{"name":"buildBlock(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV13buildOptionalySayxGAESgFZ":{"name":"buildOptional(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV11buildEither5firstSayxGAF_tFZ":{"name":"buildEither(first:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV11buildEither6secondSayxGAF_tFZ":{"name":"buildEither(second:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV15buildExpressionySayxGxFZ":{"name":"buildExpression(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV15buildExpressionySayxGxSgFZ":{"name":"buildExpression(_:)","abstract":"\u003cp\u003eThis function is disfavored in case a builder wants to offer additional \u003ccode\u003ebuildExpression\u003c/code\u003e functions to support","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV10buildArrayySayxGSayAEGFZ":{"name":"buildArray(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV10buildArrayySayxGAEFZ":{"name":"buildArray(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV24buildLimitedAvailabilityySayxGAEFZ":{"name":"buildLimitedAvailability(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV15buildExpressionySayxGAEFZ":{"name":"buildExpression(_:)","abstract":"\u003cp\u003eAllow for an array of \u003ccode\u003eChild\u003c/code\u003e to be flattened into the overall result.\u003c/p\u003e","parent_name":"Builder"},"Structs/AspectRatio.html#/s:11BlueprintUI11AspectRatioV6squareACvpZ":{"name":"square","abstract":"\u003cp\u003eA 1:1 aspect ratio.\u003c/p\u003e","parent_name":"AspectRatio"},"Structs/AspectRatio.html#/s:11BlueprintUI11AspectRatioV5ratio14CoreFoundation7CGFloatVvp":{"name":"ratio","abstract":"\u003cp\u003eThe width:height ratio value.\u003c/p\u003e","parent_name":"AspectRatio"},"Structs/AspectRatio.html#/s:11BlueprintUI11AspectRatioV5width6heightAC14CoreFoundation7CGFloatV_AHtcfc":{"name":"init(width:height:)","abstract":"\u003cp\u003eInitializes with a width \u0026amp; height ratio.\u003c/p\u003e","parent_name":"AspectRatio"},"Structs/AspectRatio.html#/s:11BlueprintUI11AspectRatioV5ratioAC14CoreFoundation7CGFloatV_tcfc":{"name":"init(ratio:)","abstract":"\u003cp\u003eInitializes with a specific ratio.\u003c/p\u003e","parent_name":"AspectRatio"},"Structs/VerticalAlignment.html#/s:11BlueprintUI17VerticalAlignmentVyAcA0D2ID_pXpcfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreates an instance with the given ID.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/VerticalAlignment.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"VerticalAlignment"},"Structs/VerticalAlignment.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"VerticalAlignment"},"Structs/VerticalAlignment.html#/s:11BlueprintUI17VerticalAlignmentV3topACvpZ":{"name":"top","abstract":"\u003cp\u003eA guide marking the top edge of the element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/VerticalAlignment.html#/s:11BlueprintUI17VerticalAlignmentV6centerACvpZ":{"name":"center","abstract":"\u003cp\u003eA guide marking the vertical center of the element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/VerticalAlignment.html#/s:11BlueprintUI17VerticalAlignmentV6bottomACvpZ":{"name":"bottom","abstract":"\u003cp\u003eA guide marking the bottom edge of the element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/HorizontalAlignment.html#/s:11BlueprintUI19HorizontalAlignmentVyAcA0D2ID_pXpcfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreates an instance with the given ID.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/HorizontalAlignment.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"HorizontalAlignment"},"Structs/HorizontalAlignment.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"HorizontalAlignment"},"Structs/HorizontalAlignment.html#/s:11BlueprintUI19HorizontalAlignmentV7leadingACvpZ":{"name":"leading","abstract":"\u003cp\u003eA guide marking the leading edge of the element.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/HorizontalAlignment.html#/s:11BlueprintUI19HorizontalAlignmentV6centerACvpZ":{"name":"center","abstract":"\u003cp\u003eA guide marking the horizontal center of the element.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/HorizontalAlignment.html#/s:11BlueprintUI19HorizontalAlignmentV8trailingACvpZ":{"name":"trailing","abstract":"\u003cp\u003eA guide marking the trailing edge of the element.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV6centerACvpZ":{"name":"center","abstract":"\u003cp\u003eA guide marking the center of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV7leadingACvpZ":{"name":"leading","abstract":"\u003cp\u003eA guide marking the leading edge of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV8trailingACvpZ":{"name":"trailing","abstract":"\u003cp\u003eA guide marking the trailing edge of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV3topACvpZ":{"name":"top","abstract":"\u003cp\u003eA guide marking the top edge of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV6bottomACvpZ":{"name":"bottom","abstract":"\u003cp\u003eA guide marking the bottom edge of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV10topLeadingACvpZ":{"name":"topLeading","abstract":"\u003cp\u003eA guide marking the top and leading edges of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV11topTrailingACvpZ":{"name":"topTrailing","abstract":"\u003cp\u003eA guide marking the top and trailing edges of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV13bottomLeadingACvpZ":{"name":"bottomLeading","abstract":"\u003cp\u003eA guide marking the bottom and leading edges of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV14bottomTrailingACvpZ":{"name":"bottomTrailing","abstract":"\u003cp\u003eA guide marking the bottom and trailing edges of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV10horizontalAA010HorizontalC0Vvp":{"name":"horizontal","abstract":"\u003cp\u003eThe alignment on the horizontal axis.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV8verticalAA08VerticalC0Vvp":{"name":"vertical","abstract":"\u003cp\u003eThe alignment on the vertical axis.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV10horizontal8verticalAcA010HorizontalC0V_AA08VerticalC0Vtcfc":{"name":"init(horizontal:vertical:)","abstract":"\u003cp\u003eCreates an instance with the given horizontal and vertical alignments.\u003c/p\u003e","parent_name":"Alignment"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateVACySbGycSbRszrlufc":{"name":"init()","abstract":"\u003cp\u003eCreates a focus state that binds to a Boolean.\u003c/p\u003e","parent_name":"FocusState"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateVACyqd__SgGycADRszSHRd__lufc":{"name":"init()","abstract":"\u003cp\u003eCreates a focus state that binds to an optional type.\u003c/p\u003e","parent_name":"FocusState"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateV12wrappedValuexvp":{"name":"wrappedValue","abstract":"\u003cp\u003eThe current state value, taking into account whatever bindings might be","parent_name":"FocusState"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateV14projectedValueACyxGvp":{"name":"projectedValue","abstract":"\u003cp\u003eA projection of the focus state that can be bound to focusable elements.\u003c/p\u003e","parent_name":"FocusState"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateV7binding3forAA0C7BindingVqd___tqd__SgRszSHRd__lF":{"name":"binding(for:)","abstract":"\u003cp\u003eGets a focus binding associated with the \u003ccode\u003eFocusState\u003c/code\u003e being a specific value.\u003c/p\u003e","parent_name":"FocusState"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateV7bindingAA0C7BindingVySbRszrlF":{"name":"binding()","abstract":"\u003cp\u003eGets a focus binding associated with the \u003ccode\u003eFocusState\u003c/code\u003e value being \u003ccode\u003etrue\u003c/code\u003e.\u003c/p\u003e","parent_name":"FocusState"},"Structs/FocusBinding.html#/s:11BlueprintUI12FocusBindingV7triggerAA0C7TriggerCvp":{"name":"trigger","abstract":"\u003cp\u003eA trigger, which is responsible for piping focus changes from a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/FocusState.html\"\u003eFocusState\u003c/a\u003e\u003c/code\u003e into a backing","parent_name":"FocusBinding"},"Structs/FocusBinding.html#/s:11BlueprintUI12FocusBindingV02onC0yycvp":{"name":"onFocus","abstract":"\u003cp\u003eA callback to be called by a backing view when it is focused, to pipe changes from a backing","parent_name":"FocusBinding"},"Structs/FocusBinding.html#/s:11BlueprintUI12FocusBindingV6onBluryycvp":{"name":"onBlur","abstract":"\u003cp\u003eA callback to be called by a backing view when it loses focus, to pipe changes from a","parent_name":"FocusBinding"},"Structs/FocusBinding.html#/s:11BlueprintUI12FocusBindingV02onC00E4BlurACyyc_yyctcfc":{"name":"init(onFocus:onBlur:)","abstract":"\u003cp\u003eCreates a new binding\u003c/p\u003e","parent_name":"FocusBinding"},"Structs/UIViewElementContext.html#/s:11BlueprintUI20UIViewElementContextV11isMeasuringSbvp":{"name":"isMeasuring","abstract":"\u003cp\u003eThis bool indicates whether the view being updated is the static measuring instance. You may","parent_name":"UIViewElementContext"},"Structs/UIViewElementContext.html#/s:11BlueprintUI20UIViewElementContextV11environmentAA11EnvironmentVvp":{"name":"environment","abstract":"\u003cp\u003eThe environment the element is rendered in.\u003c/p\u003e","parent_name":"UIViewElementContext"},"Structs/ViewDescriptionContext.html#/s:11BlueprintUI22ViewDescriptionContextV6boundsSo6CGRectVvp":{"name":"bounds","abstract":"\u003cp\u003eThe bounds of this element after layout is complete.\u003c/p\u003e","parent_name":"ViewDescriptionContext"},"Structs/ViewDescriptionContext.html#/s:11BlueprintUI22ViewDescriptionContextV13subtreeExtentSo6CGRectVSgvp":{"name":"subtreeExtent","abstract":"\u003cp\u003eA rectangle in the local coordinate space that contains any children.","parent_name":"ViewDescriptionContext"},"Structs/ViewDescriptionContext.html#/s:11BlueprintUI22ViewDescriptionContextV11environmentAA11EnvironmentVvp":{"name":"environment","abstract":"\u003cp\u003eThe environment the element is rendered in.\u003c/p\u003e","parent_name":"ViewDescriptionContext"},"Structs/ViewDescriptionContext.html#/s:11BlueprintUI22ViewDescriptionContextV6bounds13subtreeExtent11environmentACSo6CGRectV_AHSgAA11EnvironmentVtcfc":{"name":"init(bounds:subtreeExtent:environment:)","parent_name":"ViewDescriptionContext"},"Structs/BlueprintViewRenderMetrics.html#/s:11BlueprintUI0A17ViewRenderMetricsV10layoutModeAA06LayoutG0Ovp":{"name":"layoutMode","abstract":"\u003cp\u003eThe layout mode used to render the view.\u003c/p\u003e","parent_name":"BlueprintViewRenderMetrics"},"Structs/BlueprintViewRenderMetrics.html#/s:11BlueprintUI0A17ViewRenderMetricsV14startTimestampSdvp":{"name":"startTimestamp","abstract":"\u003cp\u003eThe mach time in seconds at which the view render started (from \u003ccode\u003eCACurrentMediaTime()\u003c/code\u003e).\u003c/p\u003e","parent_name":"BlueprintViewRenderMetrics"},"Structs/BlueprintViewRenderMetrics.html#/s:11BlueprintUI0A17ViewRenderMetricsV13totalDurationSdvp":{"name":"totalDuration","abstract":"\u003cp\u003eThe total time it took to apply a new element.\u003c/p\u003e","parent_name":"BlueprintViewRenderMetrics"},"Structs/BlueprintViewRenderMetrics.html#/s:11BlueprintUI0A17ViewRenderMetricsV14layoutDurationSdvp":{"name":"layoutDuration","abstract":"\u003cp\u003eThe time it took to lay out and measure the new element.\u003c/p\u003e","parent_name":"BlueprintViewRenderMetrics"},"Structs/BlueprintViewRenderMetrics.html#/s:11BlueprintUI0A17ViewRenderMetricsV18viewUpdateDurationSdvp":{"name":"viewUpdateDuration","abstract":"\u003cp\u003eThe time it took to update the on-screen views for the element.\u003c/p\u003e","parent_name":"BlueprintViewRenderMetrics"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV5emptyACvpZ":{"name":"empty","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerVy5ValueQzSgxmcAA010AttributedC3KeyRzluip":{"name":"subscript(_:)","abstract":"\u003cp\u003eGet or set for the given \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/AttributedTextKey.html\"\u003eAttributedTextKey\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV4fontSo6UIFontCSgvp":{"name":"font","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV5colorSo7UIColorCSgvp":{"name":"color","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV8tracking14CoreFoundation7CGFloatVSgvp":{"name":"tracking","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV14underlineStyleSo011NSUnderlineG0VSgvp":{"name":"underlineStyle","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV14underlineColorSo7UIColorCSgvp":{"name":"underlineColor","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV14paragraphStyleSo011NSParagraphG0CSgvp":{"name":"paragraphStyle","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV4link10Foundation3URLVSgvp":{"name":"link","parent_name":"TextAttributeContainer"},"Structs/AttributedText/Run.html#/s:11BlueprintUI14AttributedTextV3RunV5rangeSnySS5IndexVGvp":{"name":"range","abstract":"\u003cp\u003eThe range of the run of attributes.\u003c/p\u003e","parent_name":"Run"},"Structs/AttributedText/Run.html#/s:11BlueprintUI14AttributedTextV3RunV10attributesAA0D18AttributeContainerVvp":{"name":"attributes","abstract":"\u003cp\u003eThe attributes that apply to this run.\u003c/p\u003e","parent_name":"Run"},"Structs/AttributedText/Run.html#/s:11BlueprintUI14AttributedTextV3RunV13dynamicMemberxs7KeyPathCyAA0D18AttributeContainerVxG_tcluip":{"name":"subscript(dynamicMember:)","abstract":"\u003cp\u003eDynamic member getter for the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/TextAttributeContainer.html\"\u003eTextAttributeContainer\u003c/a\u003e\u003c/code\u003e of this run.\u003c/p\u003e","parent_name":"Run"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV6stringSSvp":{"name":"string","abstract":"\u003cp\u003eThe wrapped string, with no attributes.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV16attributedStringSo012NSAttributedF0Cvp":{"name":"attributedString","abstract":"\u003cp\u003eAn \u003ccode\u003eNSAttributedString\u003c/code\u003e representation of the attributed text.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV4runsSayAC3RunVGvp":{"name":"runs","abstract":"\u003cp\u003eAn iterable view into segments of the attributed string, each of which indicates where a run of identical","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextVyACSScfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreate some \u003ccode\u003eAttributedText\u003c/code\u003e from a plain string.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextVyACSo18NSAttributedStringCcfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreate some \u003ccode\u003eAttributedText\u003c/code\u003e from an attributed string. The attributes are preserved.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV5range2ofSnySS5IndexVGSgx_tSyRzlF":{"name":"range(of:)","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV13dynamicMemberxs15WritableKeyPathCyAA0D18AttributeContainerVxG_tcluip":{"name":"subscript(dynamicMember:)","abstract":"\u003cp\u003eDynamic member getter or setter for any attributes defined on \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/TextAttributeContainer.html\"\u003eTextAttributeContainer\u003c/a\u003e\u003c/code\u003e.","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextVyAA0D18AttributeContainerVxcSXRzSS5IndexV5BoundRtzluip":{"name":"subscript(_:)","abstract":"\u003cp\u003eGet or set a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/TextAttributeContainer.html\"\u003eTextAttributeContainer\u003c/a\u003e\u003c/code\u003e for the provided range of text. This allows you to set attributes","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV1poiyA2C_ACtFZ":{"name":"+(_:_:)","abstract":"\u003cp\u003eConcatenate two pieces of \u003ccode\u003eAttributedText\u003c/code\u003e together.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText/Run.html":{"name":"Run","abstract":"\u003cp\u003eA Run represents a range of identical attributes in the attributed text.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText.html":{"name":"AttributedText","abstract":"\u003cp\u003e\u003ccode\u003eAttributedText\u003c/code\u003e allows you to apply strongly-typed attributes to strings (much like the \u003ccode\u003eAttributedString\u003c/code\u003e type"},"Structs/TextAttributeContainer.html":{"name":"TextAttributeContainer"},"Structs/BlueprintViewRenderMetrics.html":{"name":"BlueprintViewRenderMetrics"},"Structs/ViewDescriptionContext.html":{"name":"ViewDescriptionContext","abstract":"\u003cp\u003eThe context passing to the \u003ccode\u003ebackingViewDescription\u003c/code\u003e of an Element.\u003c/p\u003e"},"Structs/UIViewElementContext.html":{"name":"UIViewElementContext","abstract":"\u003cp\u003eContext object passed into \u003ccode\u003eupdateUIView\u003c/code\u003e.\u003c/p\u003e"},"Structs/FocusBinding.html":{"name":"FocusBinding","abstract":"\u003cp\u003eA two-way binding between a focusable element\u0026rsquo;s backing view and a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/FocusState.html\"\u003eFocusState\u003c/a\u003e\u003c/code\u003e-wrapped"},"Structs/FocusState.html":{"name":"FocusState","abstract":"\u003cp\u003eA property wrapper type that can read and write a value that represents the placement of focus.\u003c/p\u003e"},"Structs/Alignment.html":{"name":"Alignment","abstract":"\u003cp\u003eAn alignment in both axes.\u003c/p\u003e"},"Structs/HorizontalAlignment.html":{"name":"HorizontalAlignment","abstract":"\u003cp\u003eAn alignment position along the horizontal axis.\u003c/p\u003e"},"Structs/VerticalAlignment.html":{"name":"VerticalAlignment","abstract":"\u003cp\u003eAn alignment position along the vertical axis.\u003c/p\u003e"},"Structs/AspectRatio.html":{"name":"AspectRatio","abstract":"\u003cp\u003eRepresents an a proportional relationship between width and height.\u003c/p\u003e"},"Structs/Builder.html":{"name":"Builder","abstract":"\u003cp\u003eGeneric result builder for converting blocks of \u003ccode\u003eChild...\u003c/code\u003e into \u003ccode\u003e[Child]\u003c/code\u003e.\u003c/p\u003e"},"Structs/Decorate.html":{"name":"Decorate","abstract":"\u003cp\u003ePlaces a decoration element behind or in front of the given \u003ccode\u003ewrapped\u003c/code\u003e element,"},"Structs/ElementDimensions.html":{"name":"ElementDimensions","abstract":"\u003cp\u003eAn element’s size and its alignment guides in its own coordinate space.\u003c/p\u003e"},"Structs/Flow.html":{"name":"Flow","abstract":"\u003cp\u003eElement which lays out children horizontally, wrapping to another row when there is not enough space.\u003c/p\u003e"},"Structs/GeometryProxy.html":{"name":"GeometryProxy","abstract":"\u003cp\u003eContains information about the current layout being measured by GeometryReader\u003c/p\u003e"},"Structs/GridRow.html":{"name":"GridRow","abstract":"\u003cp\u003eLike \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Row.html\"\u003eRow\u003c/a\u003e\u003c/code\u003e, \u003ccode\u003eGridRow\u003c/code\u003e displays a list of items in a linear horizontal layout. Unlike \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Row.html\"\u003eRow\u003c/a\u003e\u003c/code\u003e, \u003ccode\u003eGridRow\u003c/code\u003e provides"},"Structs/Hidden.html":{"name":"Hidden","abstract":"\u003cp\u003e\u003ccode\u003eHidden\u003c/code\u003e conditionally hides its wrapped element.\u003c/p\u003e"},"Structs/Keyed.html":{"name":"Keyed","abstract":"\u003cp\u003e\u003ccode\u003eKeyed\u003c/code\u003e allows providing a \u003ccode\u003eHashable\u003c/code\u003e value which is used"},"Structs/LayoutAttributes.html":{"name":"LayoutAttributes","abstract":"\u003cp\u003eContains layout-related metrics for an element.\u003c/p\u003e"},"Structs/LayoutOptions.html":{"name":"LayoutOptions","abstract":"\u003cp\u003eConfiguration options for \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO11caffeinatedACvpZ\"\u003ecaffeinated\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Structs/LayoutSubelement.html":{"name":"LayoutSubelement","abstract":"\u003cp\u003eA proxy that represents one child element of a layout.\u003c/p\u003e"},"Structs/LayoutWriter.html":{"name":"LayoutWriter","abstract":"\u003cp\u003eA parent element which allows arbitrary, custom layout and positioning of its children.\u003c/p\u003e"},"Structs/LifecycleObserver.html":{"name":"LifecycleObserver","abstract":"\u003cp\u003eAllows element lifecycle callbacks to be inserted anywhere into the element tree.\u003c/p\u003e"},"Structs/Opacity.html":{"name":"Opacity","abstract":"\u003cp\u003eChanges the opacity of the wrapped element.\u003c/p\u003e"},"Structs/StackLayout.html":{"name":"StackLayout","abstract":"\u003cp\u003eA layout implementation that linearly lays out an array of children along either the horizontal or vertical axis.\u003c/p\u003e"},"Structs/TintAdjustmentMode.html":{"name":"TintAdjustmentMode","abstract":"\u003cp\u003e\u003ccode\u003eTintAdjustmentMode\u003c/code\u003e conditionally modifies the tint adjustment mode of its wrapped element.\u003c/p\u003e"},"Structs/Transformed.html":{"name":"Transformed","abstract":"\u003cp\u003eChanges the transform of the wrapped element.\u003c/p\u003e"},"Structs/UnitPoint.html":{"name":"UnitPoint","abstract":"\u003cp\u003eA normalized point in an element\u0026rsquo;s coordinate space.\u003c/p\u003e"},"Structs/UserInteractionEnabled.html":{"name":"UserInteractionEnabled","abstract":"\u003cp\u003e\u003ccode\u003eUserInteractionEnabled\u003c/code\u003e conditionally enables user interaction of its wrapped element.\u003c/p\u003e"},"Structs/SizeConstraint.html":{"name":"SizeConstraint","abstract":"\u003cp\u003eDefines the maximum size for a measurement.\u003c/p\u003e"},"Structs/AnimationAttributes.html":{"name":"AnimationAttributes","abstract":"\u003cp\u003eUIView animation configuration values.\u003c/p\u003e"},"Structs/AccessibilityFocus.html":{"name":"AccessibilityFocus","abstract":"\u003cp\u003eEnables VoiceOver focus to jump to the wrapped element via a trigger that can be manually fired.\u003c/p\u003e"},"Structs/URLHandlerEnvironmentKey.html":{"name":"URLHandlerEnvironmentKey"},"Structs/EditingMenu.html":{"name":"EditingMenu","abstract":"\u003cp\u003eAllows showing the system\u0026rsquo;s \u003ccode\u003eUIMenuController\u003c/code\u003e editing menu.\u003c/p\u003e"},"Structs/EditingMenuItem.html":{"name":"EditingMenuItem","abstract":"\u003cp\u003eA single item in an editing menu.\u003c/p\u003e"},"Structs/TextShadow.html":{"name":"TextShadow","abstract":"\u003cp\u003eDescribes a shadow that can be applied to text elements, like \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Label.html\"\u003eLabel\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Protocols/URLHandler.html#/s:25BlueprintUICommonControls10URLHandlerP5onTap3urly10Foundation3URLV_tF":{"name":"onTap(url:)","parent_name":"URLHandler"},"Protocols/NativeView.html#/s:11BlueprintUI10NativeViewPAASo6UIViewCRbzrlE8describeyAA0D11DescriptionVyAH13ConfigurationVy_xGzXEFZ":{"name":"describe(_:)","abstract":"\u003cp\u003eGenerates a view description for the receiving class.","parent_name":"NativeView"},"Protocols/Measurable.html#/s:11BlueprintUI10MeasurableP7measure2inSo6CGSizeVAA14SizeConstraintV_tF":{"name":"measure(in:)","abstract":"\u003cp\u003eMeasures the required size of the receiver.\u003c/p\u003e","parent_name":"Measurable"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementPxycfc":{"name":"init()","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementP6layoutAA0C6LayoutVvp":{"name":"layout","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementP8childrenSayAA0D0_p7element_AA0C6LayoutV6TraitsV6traitss11AnyHashableVSg3keytGvp":{"name":"children","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementPAAEyxyxzXEcfc":{"name":"init(_:)","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementPAAE3add12growPriority06shrinkG014alignmentGuide3key5childy14CoreFoundation7CGFloatV_A2lA0D10DimensionsVcSgs11AnyHashableVSgAA0D0_ptF":{"name":"add(growPriority:shrinkPriority:alignmentGuide:key:child:)","abstract":"\u003cp\u003eAdds a given child element to the stack.\u003c/p\u003e","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementPAAE8addFixed14alignmentGuide3key5childy14CoreFoundation7CGFloatVAA0D10DimensionsVcSg_s11AnyHashableVSgAA0D0_ptF":{"name":"addFixed(alignmentGuide:key:child:)","abstract":"\u003cp\u003eConvenience method for adding a child with a grow and shrink priority of 0.0.\u003c/p\u003e","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementPAAE11addFlexible14alignmentGuide3key5childy14CoreFoundation7CGFloatVAA0D10DimensionsVcSg_s11AnyHashableVSgAA0D0_ptF":{"name":"addFlexible(alignmentGuide:key:child:)","abstract":"\u003cp\u003eConvenience method for adding a child with a grow and shrink priority of 1.0.\u003c/p\u003e","parent_name":"StackElement"},"Protocols/CaffeinatedSingleChildLayout.html#/s:11BlueprintUI28CaffeinatedSingleChildLayoutP10Subelementa":{"name":"Subelement","parent_name":"CaffeinatedSingleChildLayout"},"Protocols/CaffeinatedSingleChildLayout.html#/s:11BlueprintUI28CaffeinatedSingleChildLayoutP5CacheQa":{"name":"Cache","abstract":"\u003cp\u003eCached values associated with the layout instance.\u003c/p\u003e","parent_name":"CaffeinatedSingleChildLayout"},"Protocols/CaffeinatedSingleChildLayout.html#/s:11BlueprintUI28CaffeinatedSingleChildLayoutP12sizeThatFits8proposal10subelement11environment5cacheSo6CGSizeVAA14SizeConstraintV_AA0F10SubelementVAA11EnvironmentV5CacheQzztF":{"name":"sizeThatFits(proposal:subelement:environment:cache:)","abstract":"\u003cp\u003eReturns the size of the element, given a proposed size constraint and the container\u0026rsquo;s","parent_name":"CaffeinatedSingleChildLayout"},"Protocols/CaffeinatedSingleChildLayout.html#/s:11BlueprintUI28CaffeinatedSingleChildLayoutP15placeSubelement2in10subelement11environment5cacheySo6CGSizeV_AA0fH0VAA11EnvironmentV5CacheQzztF":{"name":"placeSubelement(in:subelement:environment:cache:)","abstract":"\u003cp\u003eAssigns a position to the layout’s subelement.\u003c/p\u003e","parent_name":"CaffeinatedSingleChildLayout"},"Protocols/CaffeinatedSingleChildLayout.html#/s:11BlueprintUI28CaffeinatedSingleChildLayoutP9makeCache10subelement11environment0H0QzAA0F10SubelementV_AA11EnvironmentVtF":{"name":"makeCache(subelement:environment:)","abstract":"\u003cp\u003eCreates and initializes a cache for a layout instance.\u003c/p\u003e","parent_name":"CaffeinatedSingleChildLayout"},"Protocols/LegacySingleChildLayout.html#/s:11BlueprintUI23LegacySingleChildLayoutP7measure2in5childSo6CGSizeVAA14SizeConstraintV_AA10Measurable_ptF":{"name":"measure(in:child:)","abstract":"\u003cp\u003eComputes the size that this layout requires\u003c/p\u003e","parent_name":"LegacySingleChildLayout"},"Protocols/LegacySingleChildLayout.html#/s:11BlueprintUI23LegacySingleChildLayoutP6layout4size5childAA0F10AttributesVSo6CGSizeV_AA10Measurable_ptF":{"name":"layout(size:child:)","abstract":"\u003cp\u003eGenerates layout attributes for the child.\u003c/p\u003e","parent_name":"LegacySingleChildLayout"},"Protocols/CaffeinatedLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP11Subelementsa":{"name":"Subelements","parent_name":"CaffeinatedLayout"},"Protocols/CaffeinatedLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP5CacheQa":{"name":"Cache","abstract":"\u003cp\u003eCached values associated with the layout instance.\u003c/p\u003e","parent_name":"CaffeinatedLayout"},"Protocols/CaffeinatedLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP12sizeThatFits8proposal11subelements11environment5cacheSo6CGSizeVAA14SizeConstraintV_SayAA0D10SubelementVGAA11EnvironmentV5CacheQzztF":{"name":"sizeThatFits(proposal:subelements:environment:cache:)","abstract":"\u003cp\u003eReturns the size of the composite element, given a proposed size constraint and the","parent_name":"CaffeinatedLayout"},"Protocols/CaffeinatedLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP16placeSubelements2in11subelements11environment5cacheySo6CGSizeV_SayAA0D10SubelementVGAA11EnvironmentV5CacheQzztF":{"name":"placeSubelements(in:subelements:environment:cache:)","abstract":"\u003cp\u003eAssigns positions to each of the layout’s subelements.\u003c/p\u003e","parent_name":"CaffeinatedLayout"},"Protocols/CaffeinatedLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP9makeCache11subelements11environment0F0QzSayAA0D10SubelementVG_AA11EnvironmentVtF":{"name":"makeCache(subelements:environment:)","abstract":"\u003cp\u003eCreates and initializes a cache for a layout instance.\u003c/p\u003e","parent_name":"CaffeinatedLayout"},"Protocols/LegacyLayout.html#/s:11BlueprintUI12LegacyLayoutP6TraitsQa":{"name":"Traits","abstract":"\u003cp\u003ePer-item metadata that is used during the measuring and layout pass.\u003c/p\u003e","parent_name":"LegacyLayout"},"Protocols/LegacyLayout.html#/s:11BlueprintUI12LegacyLayoutP7measure2in5itemsSo6CGSizeVAA14SizeConstraintV_Say6TraitsQz6traits_AA10Measurable_p7contenttGtF":{"name":"measure(in:items:)","abstract":"\u003cp\u003eComputes the size that this layout requires in a layout, given an array of children and","parent_name":"LegacyLayout"},"Protocols/LegacyLayout.html#/s:11BlueprintUI12LegacyLayoutP6layout4size5itemsSayAA0D10AttributesVGSo6CGSizeV_Say6TraitsQz6traits_AA10Measurable_p7contenttGtF":{"name":"layout(size:items:)","abstract":"\u003cp\u003eGenerates layout attributes for the given items.\u003c/p\u003e","parent_name":"LegacyLayout"},"Protocols/LegacyLayout.html#/s:11BlueprintUI12LegacyLayoutP13defaultTraits0F0QzvpZ":{"name":"defaultTraits","abstract":"\u003cp\u003eReturns a default traits object.\u003c/p\u003e","parent_name":"LegacyLayout"},"Protocols/ElementBuilderChild.html#/s:11BlueprintUI19ElementBuilderChildPyxAA0C0_pcfc":{"name":"init(_:)","parent_name":"ElementBuilderChild"},"Protocols/AlignmentID.html#/s:11BlueprintUI11AlignmentIDP12defaultValue2in14CoreFoundation7CGFloatVAA17ElementDimensionsV_tFZ":{"name":"defaultValue(in:)","abstract":"\u003cp\u003eReturns the value of the corresponding guide, in \u003ccode\u003econtext\u003c/code\u003e, when not","parent_name":"AlignmentID"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementP0C4TypeQa":{"name":"UIViewType","abstract":"\u003cp\u003eThe type of the view associated with the element.\u003c/p\u003e","parent_name":"UIViewElement"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementP04makeC00C4TypeQzyF":{"name":"makeUIView()","abstract":"\u003cp\u003eCreate and return a new instance of the provided view type.\u003c/p\u003e","parent_name":"UIViewElement"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementP06updateC0_4withy0C4TypeQz_AA0cD7ContextVtF":{"name":"updateUIView(_:with:)","abstract":"\u003cp\u003eUpdate the view instance with the content from the element. The context provides additional","parent_name":"UIViewElement"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementP4size_8thatFitsSo6CGSizeVAG_0C4TypeQztF":{"name":"size(_:thatFits:)","abstract":"\u003cp\u003eReturns the sizing measurement for the element for the provided","parent_name":"UIViewElement"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementPAAE7contentAA0D7ContentVvp":{"name":"content","abstract":"\u003cp\u003eDefer to the reused measurement view to provide the size of the element.\u003c/p\u003e","parent_name":"UIViewElement"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementPAAE22backingViewDescription4withAA0fG0VSgAA0fG7ContextV_tF":{"name":"backingViewDescription(with:)","abstract":"\u003cp\u003eProvide the view for the element.\u003c/p\u003e","parent_name":"UIViewElement"},"Protocols/BlueprintViewMetricsDelegate.html#/s:11BlueprintUI0A19ViewMetricsDelegateP09blueprintC0_19completedRenderWithyAA0aC0C_AA0achD0VtF":{"name":"blueprintView(_:completedRenderWith:)","parent_name":"BlueprintViewMetricsDelegate"},"Protocols/AttributedTextKey.html#/s:11BlueprintUI17AttributedTextKeyP5ValueQa":{"name":"Value","parent_name":"AttributedTextKey"},"Protocols/AttributedTextKey.html#/s:11BlueprintUI17AttributedTextKeyP4nameSo018NSAttributedStringE0avpZ":{"name":"name","parent_name":"AttributedTextKey"},"Protocols/AttributedTextKey.html":{"name":"AttributedTextKey","abstract":"\u003cp\u003eDefine \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AttributedText.html\"\u003eAttributedText\u003c/a\u003e\u003c/code\u003e keys using this protocol. Keys must have an attribute name"},"Protocols/BlueprintViewMetricsDelegate.html":{"name":"BlueprintViewMetricsDelegate","abstract":"\u003cp\u003eProvides performance information for blueprint layouts and updates.\u003c/p\u003e"},"Protocols/UIViewElement.html":{"name":"UIViewElement","abstract":"\u003cp\u003eAn element type which makes it easier to wrap an existing \u003ccode\u003eUIView\u003c/code\u003e instance that"},"Protocols/AlignmentID.html":{"name":"AlignmentID","abstract":"\u003cp\u003eTypes used to identify alignment guides.\u003c/p\u003e"},"Protocols/ElementBuilderChild.html":{"name":"ElementBuilderChild","abstract":"\u003cp\u003eDefines a way for an\u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Element.html\"\u003eElement\u003c/a\u003e\u003c/code\u003e to be implicitly converted into the conforming type (the child of a container)."},"Protocols.html#/s:11BlueprintUI6LayoutP":{"name":"Layout","abstract":"\u003cp\u003eA type that defines the geometry of a collection of elements.\u003c/p\u003e"},"Protocols/LegacyLayout.html":{"name":"LegacyLayout"},"Protocols/CaffeinatedLayout.html":{"name":"CaffeinatedLayout"},"Protocols.html#/s:11BlueprintUI17SingleChildLayoutP":{"name":"SingleChildLayout","abstract":"\u003cp\u003eA type that defines the geometry of a single element.\u003c/p\u003e"},"Protocols/LegacySingleChildLayout.html":{"name":"LegacySingleChildLayout"},"Protocols/CaffeinatedSingleChildLayout.html":{"name":"CaffeinatedSingleChildLayout"},"Protocols/StackElement.html":{"name":"StackElement","abstract":"\u003cp\u003eConforming types (Row and Column) act as StackLayout powered containers.\u003c/p\u003e"},"Protocols/Measurable.html":{"name":"Measurable","abstract":"\u003cp\u003eConforming types can calculate the size that they require within a layout.\u003c/p\u003e"},"Protocols/NativeView.html":{"name":"NativeView","abstract":"\u003cp\u003eMarker protocol used by generic extensions to native views (e.g. \u003ccode\u003eUIView\u003c/code\u003e).\u003c/p\u003e"},"Protocols/URLHandler.html":{"name":"URLHandler","abstract":"\u003cp\u003eConform to this protocol to handle links tapped in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AttributedLabel.html\"\u003eAttributedLabel\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Extensions/UIOffset.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"UIOffset"},"Extensions/AXCustomContent.html#/s:So15AXCustomContentC25BlueprintUICommonControlsEyAbC20AccessibilityElementV06CustomB0Vcfc":{"name":"init(_:)","parent_name":"AXCustomContent"},"Extensions/AXCustomContent.html#/s:So15AXCustomContentC25BlueprintUICommonControlsE5label5value10importanceABSS_SSSgSo0aB10ImportanceVtcfc":{"name":"init(label:value:importance:)","parent_name":"AXCustomContent"},"Extensions/UIAccessibilityTraits.html#/s:So21UIAccessibilityTraitsa25BlueprintUICommonControlsE4withABShyAC20AccessibilityElementV5TraitOG_tcfc":{"name":"init(with:)","parent_name":"UIAccessibilityTraits"},"Extensions/ElementBuilder.html#/s:11BlueprintUI7BuilderVA2A07ElementC5ChildRzlE15buildExpressionySayxGAA0D0_pFZ":{"name":"buildExpression(_:)","abstract":"\u003cp\u003eAllow an Element to be implicitly converted into \u003ccode\u003eChild\u003c/code\u003e.\u003c/p\u003e","parent_name":"ElementBuilder"},"Extensions/ElementBuilder.html#/s:11BlueprintUI7BuilderVA2A07ElementC5ChildRzlE15buildExpressionySayxGAA0D0_pSgFZ":{"name":"buildExpression(_:)","abstract":"\u003cp\u003eAllow an Optional Element to be unwrapped and implicitly converted into \u003ccode\u003eChild\u003c/code\u003e.\u003c/p\u003e","parent_name":"ElementBuilder"},"Extensions/ElementBuilder.html#/s:11BlueprintUI7BuilderVA2A07ElementC5ChildRzlE15buildExpressionySayxGSayAA0D0_pGFZ":{"name":"buildExpression(_:)","abstract":"\u003cp\u003eAllow Elements to be implicitly converted into \u003ccode\u003eChild\u003c/code\u003e.\u003c/p\u003e","parent_name":"ElementBuilder"},"Extensions/ElementBuilder.html#/s:11BlueprintUI7BuilderVA2A7OverlayV5ChildVRszlE15buildExpressionySayAGGAA5KeyedVFZ":{"name":"buildExpression(_:)","parent_name":"ElementBuilder"},"Extensions/ElementBuilder.html#/s:11BlueprintUI7BuilderVA2A11StackLayoutV5ChildVRszlE15buildExpressionySayAGGAA5KeyedVFZ":{"name":"buildExpression(_:)","parent_name":"ElementBuilder"},"Extensions/FloatingPoint.html#/s:SF11BlueprintUIE17replacingInfinity4withxx_tF":{"name":"replacingInfinity(with:)","abstract":"\u003cp\u003eReturns \u003ccode\u003ereplacement\u003c/code\u003e if \u003ccode\u003eself.isInfinite\u003c/code\u003e is \u003ccode\u003etrue\u003c/code\u003e, or \u003ccode\u003eself\u003c/code\u003e if \u003ccode\u003eself\u003c/code\u003e is finite.\u003c/p\u003e","parent_name":"FloatingPoint"},"Extensions/FloatingPoint.html#/s:SF11BlueprintUIE5round_2byys25FloatingPointRoundingRuleO_xtF":{"name":"round(_:by:)","abstract":"\u003cp\u003eRounds this value to the specified scale, where the scale is the number of rounding stops per integer.\u003c/p\u003e","parent_name":"FloatingPoint"},"Extensions/FloatingPoint.html#/s:SF11BlueprintUIE7rounded_2byxs25FloatingPointRoundingRuleO_xtF":{"name":"rounded(_:by:)","abstract":"\u003cp\u003eReturns this value rounded to the specified scale, where the scale is the number of rounding stops per integer.\u003c/p\u003e","parent_name":"FloatingPoint"},"Extensions/CGSize.html#/s:So6CGSizeV11BlueprintUIE8infinityABvpZ":{"name":"infinity","abstract":"\u003cp\u003eA size with \u003ccode\u003einfinity\u003c/code\u003e in both dimensions.\u003c/p\u003e","parent_name":"CGSize"},"Extensions/CGSize.html#/s:So6CGSizeV11BlueprintUIE17replacingInfinity4withA2B_tF":{"name":"replacingInfinity(with:)","abstract":"\u003cp\u003eReturns a size with infinite dimensions replaced by the values from the given replacement.\u003c/p\u003e","parent_name":"CGSize"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E7iPhone7ACvpZ":{"name":"iPhone7","abstract":"\u003cp\u003eiPhone 7\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E11iPhone7PlusACvpZ":{"name":"iPhone7Plus","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E7iPhone8ACvpZ":{"name":"iPhone8","abstract":"\u003cp\u003eiPhone 8\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E11iPhone8PlusACvpZ":{"name":"iPhone8Plus","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E10iPhoneSE_1ACvpZ":{"name":"iPhoneSE_1","abstract":"\u003cp\u003eiPhone SE\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E10iPhoneSE_2ACvpZ":{"name":"iPhoneSE_2","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E7iPhoneXACvpZ":{"name":"iPhoneX","abstract":"\u003cp\u003eiPhone X\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E8iPhoneXsACvpZ":{"name":"iPhoneXs","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E11iPhoneXsMaxACvpZ":{"name":"iPhoneXsMax","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E8iPhoneXrACvpZ":{"name":"iPhoneXr","abstract":"\u003cp\u003eiPhone Xr\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E10iPadMini_4ACvpZ":{"name":"iPadMini_4","abstract":"\u003cp\u003eiPad Mini\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E10iPadMini_5ACvpZ":{"name":"iPadMini_5","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E9iPadAir_2ACvpZ":{"name":"iPadAir_2","abstract":"\u003cp\u003eiPad Air\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E9iPadAir_3ACvpZ":{"name":"iPadAir_3","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E6iPad_5ACvpZ":{"name":"iPad_5","abstract":"\u003cp\u003eiPad\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E6iPad_6ACvpZ":{"name":"iPad_6","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E11iPadPro_9_7ACvpZ":{"name":"iPadPro_9_7","abstract":"\u003cp\u003eiPad Pro\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E12iPadPro_10_5ACvpZ":{"name":"iPadPro_10_5","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E12iPadPro_11_1ACvpZ":{"name":"iPadPro_11_1","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E12iPadPro_11_2ACvpZ":{"name":"iPadPro_11_2","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E14iPadPro_12_9_1ACvpZ":{"name":"iPadPro_12_9_1","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E14iPadPro_12_9_2ACvpZ":{"name":"iPadPro_12_9_2","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E14iPadPro_12_9_3ACvpZ":{"name":"iPadPro_12_9_3","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html":{"name":"PreviewDevice","abstract":"\u003cp\u003eThe available devices to be used for previewing elements in an Xcode preview.\u003c/p\u003e"},"Extensions/CGSize.html":{"name":"CGSize"},"Extensions/FloatingPoint.html":{"name":"FloatingPoint"},"Extensions/ElementBuilder.html":{"name":"ElementBuilder"},"Extensions.html#/c:objc(cs)UIView":{"name":"UIView"},"Extensions/UIAccessibilityTraits.html":{"name":"UIAccessibilityTraits"},"Extensions/AXCustomContent.html":{"name":"AXCustomContent"},"Extensions/UIOffset.html":{"name":"UIOffset"},"Enums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO7defaultACvpZ":{"name":"default","parent_name":"LayoutMode"},"Enums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO6legacyyA2CmF":{"name":"legacy","abstract":"\u003cp\u003eThe \u0026ldquo;standard\u0026rdquo; layout system.\u003c/p\u003e","parent_name":"LayoutMode"},"Enums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO11caffeinatedyAcA0C7OptionsV_tcACmF":{"name":"caffeinated(options:)","abstract":"\u003cp\u003eA newer layout system with some optimizations made possible by ensuring elements adhere","parent_name":"LayoutMode"},"Enums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO11caffeinatedACvpZ":{"name":"caffeinated","abstract":"\u003cp\u003eA newer layout system with some optimizations made possible by ensuring elements adhere","parent_name":"LayoutMode"},"Enums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO4nameSSvp":{"name":"name","abstract":"\u003cp\u003eThe name of the layout mode.\u003c/p\u003e","parent_name":"LayoutMode"},"Enums/LayoutMode.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"LayoutMode"},"Enums/BlueprintLogging/Config.html#/s:11BlueprintUI0A7LoggingO6ConfigV21recordElementMeasuresSbvp":{"name":"recordElementMeasures","abstract":"\u003cp\u003eWhen \u003ccode\u003etrue\u003c/code\u003e, timing data will be logged when measuring each \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Element.html\"\u003eElement\u003c/a\u003e\u003c/code\u003e\u003c/p\u003e","parent_name":"Config"},"Enums/BlueprintLogging/Config.html#/s:11BlueprintUI0A7LoggingO6ConfigV21recordElementMeasuresAESb_tcfc":{"name":"init(recordElementMeasures:)","parent_name":"Config"},"Enums/BlueprintLogging/Config.html#/s:11BlueprintUI0A7LoggingO6ConfigV4liteAEvpZ":{"name":"lite","abstract":"\u003cp\u003eLogging configuration that will not record measurement data for all \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Element.html\"\u003eElement\u003c/a\u003e\u003c/code\u003es.","parent_name":"Config"},"Enums/BlueprintLogging/Config.html#/s:11BlueprintUI0A7LoggingO6ConfigV7verboseAEvpZ":{"name":"verbose","abstract":"\u003cp\u003eLogging configuration that includes measurement data.","parent_name":"Config"},"Enums/BlueprintLogging/Config.html":{"name":"Config","abstract":"\u003cp\u003eConfiguration for logging options\u003c/p\u003e","parent_name":"BlueprintLogging"},"Enums/BlueprintLogging.html#/s:11BlueprintUI0A7LoggingO6configAC6ConfigVvpZ":{"name":"config","abstract":"\u003cp\u003eLogging configuration\u003c/p\u003e","parent_name":"BlueprintLogging"},"Enums/BlueprintLogging.html#/s:11BlueprintUI0A7LoggingO9isEnabledSbvpZ":{"name":"isEnabled","abstract":"\u003cp\u003eIf enabled, Blueprint will emit signpost logs. You can view these logs in Instruments to","parent_name":"BlueprintLogging"},"Enums/LinkKey.html#/s:11BlueprintUI7LinkKeyO5Valuea":{"name":"Value","parent_name":"LinkKey"},"Enums/LinkKey.html#/s:11BlueprintUI7LinkKeyO4nameSo018NSAttributedStringD0avpZ":{"name":"name","parent_name":"LinkKey"},"Enums/ParagraphStyleKey.html#/s:11BlueprintUI17ParagraphStyleKeyO5Valuea":{"name":"Value","parent_name":"ParagraphStyleKey"},"Enums/ParagraphStyleKey.html#/s:11BlueprintUI17ParagraphStyleKeyO4nameSo018NSAttributedStringE0avpZ":{"name":"name","parent_name":"ParagraphStyleKey"},"Enums/UnderlineColorKey.html#/s:11BlueprintUI17UnderlineColorKeyO5Valuea":{"name":"Value","parent_name":"UnderlineColorKey"},"Enums/UnderlineColorKey.html#/s:11BlueprintUI17UnderlineColorKeyO4nameSo018NSAttributedStringE0avpZ":{"name":"name","parent_name":"UnderlineColorKey"},"Enums/UnderlineStyleKey.html#/s:11BlueprintUI17UnderlineStyleKeyO5Valuea":{"name":"Value","parent_name":"UnderlineStyleKey"},"Enums/UnderlineStyleKey.html#/s:11BlueprintUI17UnderlineStyleKeyO4nameSo018NSAttributedStringE0avpZ":{"name":"name","parent_name":"UnderlineStyleKey"},"Enums/TrackingKey.html#/s:11BlueprintUI11TrackingKeyO5Valuea":{"name":"Value","parent_name":"TrackingKey"},"Enums/TrackingKey.html#/s:11BlueprintUI11TrackingKeyO4nameSo018NSAttributedStringD0avpZ":{"name":"name","parent_name":"TrackingKey"},"Enums/ColorKey.html#/s:11BlueprintUI8ColorKeyO5Valuea":{"name":"Value","parent_name":"ColorKey"},"Enums/ColorKey.html#/s:11BlueprintUI8ColorKeyO4nameSo018NSAttributedStringD0avpZ":{"name":"name","parent_name":"ColorKey"},"Enums/FontKey.html#/s:11BlueprintUI7FontKeyO5Valuea":{"name":"Value","parent_name":"FontKey"},"Enums/FontKey.html#/s:11BlueprintUI7FontKeyO4nameSo018NSAttributedStringD0avpZ":{"name":"name","parent_name":"FontKey"},"Enums/FontKey.html":{"name":"FontKey"},"Enums/ColorKey.html":{"name":"ColorKey"},"Enums/TrackingKey.html":{"name":"TrackingKey"},"Enums/UnderlineStyleKey.html":{"name":"UnderlineStyleKey"},"Enums/UnderlineColorKey.html":{"name":"UnderlineColorKey"},"Enums/ParagraphStyleKey.html":{"name":"ParagraphStyleKey"},"Enums/LinkKey.html":{"name":"LinkKey"},"Enums/BlueprintLogging.html":{"name":"BlueprintLogging","abstract":"\u003cp\u003eNamespace for logging config.\u003c/p\u003e"},"Enums/LayoutMode.html":{"name":"LayoutMode","abstract":"\u003cp\u003eControls the layout system that Blueprint uses to lay out elements.\u003c/p\u003e"},"Classes/FocusTrigger.html#/s:11BlueprintUI12FocusTriggerCACycfc":{"name":"init()","abstract":"\u003cp\u003eCreate a new trigger, not yet bound to any view.\u003c/p\u003e","parent_name":"FocusTrigger"},"Classes/FocusTrigger.html#/s:11BlueprintUI12FocusTriggerC11focusActionyycSgvp":{"name":"focusAction","abstract":"\u003cp\u003eThe action to be invoked on focus, which will be set by a backing view.\u003c/p\u003e","parent_name":"FocusTrigger"},"Classes/FocusTrigger.html#/s:11BlueprintUI12FocusTriggerC10blurActionyycSgvp":{"name":"blurAction","abstract":"\u003cp\u003eThe action to be invoked on blur, which will be set by a backing view.\u003c/p\u003e","parent_name":"FocusTrigger"},"Classes/FocusTrigger.html#/s:11BlueprintUI12FocusTriggerC5focusyyF":{"name":"focus()","abstract":"\u003cp\u003eFocuses the backing view bound to this trigger.\u003c/p\u003e","parent_name":"FocusTrigger"},"Classes/FocusTrigger.html#/s:11BlueprintUI12FocusTriggerC4bluryyF":{"name":"blur()","abstract":"\u003cp\u003eBlurs (removes focus from) the backing view bound to this trigger.\u003c/p\u003e","parent_name":"FocusTrigger"},"Classes/FocusTrigger.html":{"name":"FocusTrigger","abstract":"\u003cp\u003eA trigger for focus and blur actions.\u003c/p\u003e"},"Protocols/EnvironmentKey.html#/s:11BlueprintUI14EnvironmentKeyP5ValueQa":{"name":"Value","abstract":"\u003cp\u003eThe type of value stored by this key.\u003c/p\u003e","parent_name":"EnvironmentKey"},"Protocols/EnvironmentKey.html#/s:11BlueprintUI14EnvironmentKeyP12defaultValue0F0QzvpZ":{"name":"defaultValue","abstract":"\u003cp\u003eThe default value that will be vended by an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Environment.html\"\u003eEnvironment\u003c/a\u003e\u003c/code\u003e for this key if no other value","parent_name":"EnvironmentKey"},"Structs/Environment/LayoutDirection.html#/s:11BlueprintUI11EnvironmentV15LayoutDirectionO11leftToRightyA2EmF":{"name":"leftToRight","parent_name":"LayoutDirection"},"Structs/Environment/LayoutDirection.html#/s:11BlueprintUI11EnvironmentV15LayoutDirectionO11rightToLeftyA2EmF":{"name":"rightToLeft","parent_name":"LayoutDirection"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV5emptyACvpZ":{"name":"empty","abstract":"\u003cp\u003eA default \u0026ldquo;empty\u0026rdquo; environment, with no values overridden.","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentVy5ValueQzxmcAA0C3KeyRzluip":{"name":"subscript(_:)","abstract":"\u003cp\u003eGets or sets an environment value by its key.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV22linkAccessibilityLabelSSSgvp":{"name":"linkAccessibilityLabel","abstract":"\u003cp\u003eThe localised accessibility label elements should use when handling links.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV8calendar10Foundation8CalendarVvp":{"name":"calendar","abstract":"\u003cp\u003eThe current calendar that elements should use when handling dates.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV12displayScale14CoreFoundation7CGFloatVvp":{"name":"displayScale","abstract":"\u003cp\u003eThe display scale of this environment.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment/LayoutDirection.html":{"name":"LayoutDirection","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV15layoutDirectionAC06LayoutE0Ovp":{"name":"layoutDirection","abstract":"\u003cp\u003eThe layout direction associated with the current environment.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV6locale10Foundation6LocaleVvp":{"name":"locale","abstract":"\u003cp\u003eThe current locale that elements should use.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV14safeAreaInsetsSo06UIEdgeF0Vvp":{"name":"safeAreaInsets","abstract":"\u003cp\u003eThe insets representing the safe area for content.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV8timeZone10Foundation04TimeE0Vvp":{"name":"timeZone","abstract":"\u003cp\u003eThe current time zone that elements should use when handling dates.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV10windowSizeSo6CGSizeVSgvp":{"name":"windowSize","abstract":"\u003cp\u003eThe size of the window that contains the hosting \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbClasses/BlueprintView.html\"\u003eBlueprintView\u003c/a\u003e\u003c/code\u003e.","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV10layoutModeAA06LayoutE0Ovp":{"name":"layoutMode","abstract":"\u003cp\u003eThis mode will be inherited by descendant BlueprintViews that do not have an explicit","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV0A16UICommonControlsE10urlHandlerAD10URLHandler_pvp":{"name":"urlHandler","abstract":"\u003cp\u003eThe link handler to use to open links tapped in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AttributedLabel.html\"\u003eAttributedLabel\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html":{"name":"Environment","abstract":"\u003cp\u003eEnvironment is a container for values to be passed down an element tree.\u003c/p\u003e"},"Protocols/EnvironmentKey.html":{"name":"EnvironmentKey","abstract":"\u003cp\u003eTypes conforming to this protocol can be used as keys in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Environment.html\"\u003eEnvironment\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV09appearingD00A2UI010VisibilityD0VSgvp":{"name":"appearingTransition","abstract":"\u003cp\u003eThe transition to apply when the wrapped element is appearing.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV012disappearingD00A2UI010VisibilityD0VSgvp":{"name":"disappearingTransition","abstract":"\u003cp\u003eThe transition to apply when the wrapped element is disappearing.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV06layoutD00A2UI06LayoutD0Ovp":{"name":"layoutTransition","abstract":"\u003cp\u003eThe transition to apply when the wrapped element\u0026rsquo;s layout is changing.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV14wrappedElement0A2UI0G0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe element to which transitions are being applied.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV8wrappingAC0A2UI7Element_p_tcfc":{"name":"init(wrapping:)","abstract":"\u003cp\u003eCreate a transition container wrapping an element.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV09appearingD0012disappearingD006layoutD013transitioningAC0A2UI010VisibilityD0VSg_AkH06LayoutD0OAH7Element_ptcfc":{"name":"init(appearingTransition:disappearingTransition:layoutTransition:transitioning:)","abstract":"\u003cp\u003eCreate a transition container wrapping an element.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"TransitionContainer"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV4textSSvp":{"name":"text","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV11placeholderSSvp":{"name":"placeholder","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV8onChangeySScSgvp":{"name":"onChange","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV6secureSbvp":{"name":"secure","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV9isEnabledSbvp":{"name":"isEnabled","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV13textAlignmentSo06NSTextG0Vvp":{"name":"textAlignment","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV4fontSo6UIFontCvp":{"name":"font","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV9textColorSo7UIColorCvp":{"name":"textColor","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV15clearButtonModeSo06UITexte4ViewH0Vvp":{"name":"clearButtonMode","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV12keyboardTypeSo010UIKeyboardG0Vvp":{"name":"keyboardType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV18keyboardAppearanceSo010UIKeyboardG0Vvp":{"name":"keyboardAppearance","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV22autocapitalizationTypeSo024UITextAutocapitalizationG0Vvp":{"name":"autocapitalizationType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV18autocorrectionTypeSo020UITextAutocorrectionG0Vvp":{"name":"autocorrectionType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV17spellCheckingTypeSo011UITextSpellgH0Vvp":{"name":"spellCheckingType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV15textContentTypeSo06UITextgH0aSgvp":{"name":"textContentType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV8onReturnyycSgvp":{"name":"onReturn","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV13returnKeyTypeSo08UIReturngH0Vvp":{"name":"returnKeyType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV29enablesReturnKeyAutomaticallySbvp":{"name":"enablesReturnKeyAutomatically","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV12focusBinding0A2UI05FocusG0VSgvp":{"name":"focusBinding","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV19accessibilityTraitsShyAA20AccessibilityElementV5TraitOGSgvp":{"name":"accessibilityTraits","abstract":"\u003cp\u003eA set of accessibility traits that should be applied to the field, these will be merged with any existing traits.","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV4text9configureACSS_yACzXEtcfc":{"name":"init(text:configure:)","parent_name":"TextField"},"Structs/TextField.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"TextField"},"Structs/TextField.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV7focused4when6equalsAC0A2UI10FocusStateVyxSgG_xtSHRzlF":{"name":"focused(when:equals:)","abstract":"\u003cp\u003eModifies this text field by binding its focus state to the given state value.\u003c/p\u003e","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV7focused4whenAC0A2UI10FocusStateVySbG_tF":{"name":"focused(when:)","abstract":"\u003cp\u003eModifies this text field by binding its focus state to the given Boolean state value.\u003c/p\u003e","parent_name":"TextField"},"Structs/Tappable.html#/s:25BlueprintUICommonControls8TappableV14wrappedElement0A2UI0F0_pvp":{"name":"wrappedElement","parent_name":"Tappable"},"Structs/Tappable.html#/s:25BlueprintUICommonControls8TappableV5onTapyycvp":{"name":"onTap","parent_name":"Tappable"},"Structs/Tappable.html#/s:25BlueprintUICommonControls8TappableV5onTap8wrappingACyyc_0A2UI7Element_ptcfc":{"name":"init(onTap:wrapping:)","parent_name":"Tappable"},"Structs/Tappable.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Tappable"},"Structs/Tappable.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Tappable"},"Structs/Spacer.html#/s:11BlueprintUI6SpacerV4sizeSo6CGSizeVvp":{"name":"size","abstract":"\u003cp\u003eThe size that this spacer will take in a layout.\u003c/p\u003e","parent_name":"Spacer"},"Structs/Spacer.html#/s:11BlueprintUI6SpacerV4sizeACSo6CGSizeV_tcfc":{"name":"init(size:)","abstract":"\u003cp\u003eInitializes a new spacer with the given size.\u003c/p\u003e","parent_name":"Spacer"},"Structs/Spacer.html#/s:11BlueprintUI6SpacerV5width6heightAC14CoreFoundation7CGFloatV_AHtcfc":{"name":"init(width:height:)","abstract":"\u003cp\u003eInitializes a new spacer with the given width and height.\u003c/p\u003e","parent_name":"Spacer"},"Structs/Spacer.html#/s:11BlueprintUI6SpacerVyAC14CoreFoundation7CGFloatVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a new spacer with the given value for the width and height.\u003c/p\u003e","parent_name":"Spacer"},"Structs/Spacer.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Spacer"},"Structs/Spacer.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Spacer"},"Structs/SegmentedControl/Item/Width.html#/s:25BlueprintUICommonControls16SegmentedControlV4ItemV5WidthO9automaticyA2GmF":{"name":"automatic","parent_name":"Width"},"Structs/SegmentedControl/Item/Width.html#/s:25BlueprintUICommonControls16SegmentedControlV4ItemV5WidthO8specificyAG14CoreFoundation7CGFloatVcAGmF":{"name":"specific(_:)","parent_name":"Width"},"Structs/SegmentedControl/Item.html#/s:25BlueprintUICommonControls16SegmentedControlV4ItemV5titleSSvp":{"name":"title","parent_name":"Item"},"Structs/SegmentedControl/Item.html#/s:25BlueprintUICommonControls16SegmentedControlV4ItemV5widthAE5WidthOvp":{"name":"width","parent_name":"Item"},"Structs/SegmentedControl/Item.html#/s:25BlueprintUICommonControls16SegmentedControlV4ItemV8onSelectyycvp":{"name":"onSelect","parent_name":"Item"},"Structs/SegmentedControl/Item/Width.html":{"name":"Width","parent_name":"Item"},"Structs/SegmentedControl/Selection.html#/s:25BlueprintUICommonControls16SegmentedControlV9SelectionO4noneyA2EmF":{"name":"none","parent_name":"Selection"},"Structs/SegmentedControl/Selection.html#/s:25BlueprintUICommonControls16SegmentedControlV9SelectionO5indexyAESicAEmF":{"name":"index(_:)","parent_name":"Selection"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV5itemsSayAC4ItemVGvp":{"name":"items","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV9selectionAC9SelectionOvp":{"name":"selection","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV4fontSo6UIFontCvp":{"name":"font","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV13roundingScale14CoreFoundation7CGFloatVvp":{"name":"roundingScale","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV5items9configureACSayAC4ItemVG_yACzXEtcfc":{"name":"init(items:configure:)","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV9selection4font11itemBuilderA2C9SelectionO_So6UIFontCSayAC4ItemVGyXEtcfc":{"name":"init(selection:font:itemBuilder:)","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV10appendItem5title5width8onSelectySS_AC0G0V5WidthOyyctF":{"name":"appendItem(title:width:onSelect:)","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:11BlueprintUI10MeasurableP7measure2inSo6CGSizeVAA14SizeConstraintV_tF":{"name":"measure(in:)","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"SegmentedControl"},"Structs/SegmentedControl/Selection.html":{"name":"Selection","parent_name":"SegmentedControl"},"Structs/SegmentedControl/Item.html":{"name":"Item","parent_name":"SegmentedControl"},"Structs/ScrollView/ContentOffset/ScrollingContext.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV16ScrollingContextV11contentSizeSo6CGSizeVvp":{"name":"contentSize","parent_name":"ScrollingContext"},"Structs/ScrollView/ContentOffset/ScrollingContext.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV16ScrollingContextV06scrollE6BoundsSo6CGRectVvp":{"name":"scrollViewBounds","parent_name":"ScrollingContext"},"Structs/ScrollView/ContentOffset/ScrollingContext.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV16ScrollingContextV13contentInsetsSo06UIEdgeK0Vvp":{"name":"contentInsets","parent_name":"ScrollingContext"},"Structs/ScrollView/ContentOffset/ScrollingContext.html":{"name":"ScrollingContext","parent_name":"ContentOffset"},"Structs/ScrollView/ContentOffset.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV8Providera":{"name":"Provider","parent_name":"ContentOffset"},"Structs/ScrollView/ContentOffset.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV3topAEvpZ":{"name":"top","parent_name":"ContentOffset"},"Structs/ScrollView/ContentOffset.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV6bottomAEvpZ":{"name":"bottom","parent_name":"ContentOffset"},"Structs/ScrollView/ContentOffset.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV8providerAESo7CGPointVAE16ScrollingContextVc_tcfc":{"name":"init(provider:)","parent_name":"ContentOffset"},"Structs/ScrollView/ScrollTrigger.html#/s:25BlueprintUICommonControls10ScrollViewV0D7TriggerCAEycfc":{"name":"init()","parent_name":"ScrollTrigger"},"Structs/ScrollView/ScrollTrigger.html#/s:25BlueprintUICommonControls10ScrollViewV0D7TriggerC6scroll2to8animatedyAC13ContentOffsetV_SbtF":{"name":"scroll(to:animated:)","parent_name":"ScrollTrigger"},"Structs/ScrollView/PullToRefreshBehavior.html#/s:25BlueprintUICommonControls10ScrollViewV21PullToRefreshBehaviorO8disabledyA2EmF":{"name":"disabled","parent_name":"PullToRefreshBehavior"},"Structs/ScrollView/PullToRefreshBehavior.html#/s:25BlueprintUICommonControls10ScrollViewV21PullToRefreshBehaviorO7enabledyAEyyc_tcAEmF":{"name":"enabled(action:)","parent_name":"PullToRefreshBehavior"},"Structs/ScrollView/PullToRefreshBehavior.html#/s:25BlueprintUICommonControls10ScrollViewV21PullToRefreshBehaviorO10refreshingyA2EmF":{"name":"refreshing","parent_name":"PullToRefreshBehavior"},"Structs/ScrollView/ContentSize.html#/s:25BlueprintUICommonControls10ScrollViewV11ContentSizeO12fittingWidthyA2EmF":{"name":"fittingWidth","abstract":"\u003cp\u003eThe content will fill the height of the scroller, width will be dynamic\u003c/p\u003e","parent_name":"ContentSize"},"Structs/ScrollView/ContentSize.html#/s:25BlueprintUICommonControls10ScrollViewV11ContentSizeO13fittingHeightyA2EmF":{"name":"fittingHeight","abstract":"\u003cp\u003eThe content will fill the width of the scroller, height will be dynamic\u003c/p\u003e","parent_name":"ContentSize"},"Structs/ScrollView/ContentSize.html#/s:25BlueprintUICommonControls10ScrollViewV11ContentSizeO07fittingF0yA2EmF":{"name":"fittingContent","abstract":"\u003cp\u003eThe content size will be the minimum required to fit the content.\u003c/p\u003e","parent_name":"ContentSize"},"Structs/ScrollView/ContentSize.html#/s:25BlueprintUICommonControls10ScrollViewV11ContentSizeO6customyAESo6CGSizeVcAEmF":{"name":"custom(_:)","abstract":"\u003cp\u003eManually provided content size.\u003c/p\u003e","parent_name":"ContentSize"},"Structs/ScrollView/KeyboardAdjustmentMode.html#/s:25BlueprintUICommonControls10ScrollViewV22KeyboardAdjustmentModeO4noneyA2EmF":{"name":"none","parent_name":"KeyboardAdjustmentMode"},"Structs/ScrollView/KeyboardAdjustmentMode.html#/s:25BlueprintUICommonControls10ScrollViewV22KeyboardAdjustmentModeO18adjustsWhenVisibleyA2EmF":{"name":"adjustsWhenVisible","parent_name":"KeyboardAdjustmentMode"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV14wrappedElement0A2UI0G0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe content to be scrolled.\u003c/p\u003e","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV11contentSizeAC07ContentG0Ovp":{"name":"contentSize","abstract":"\u003cp\u003eDetermines the sizing behavior of the content within the scroll view.\u003c/p\u003e","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV20alwaysBounceVerticalSbvp":{"name":"alwaysBounceVertical","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV22alwaysBounceHorizontalSbvp":{"name":"alwaysBounceHorizontal","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV12contentInsetSo12UIEdgeInsetsVvp":{"name":"contentInset","abstract":"\u003cp\u003eHow much the content of the \u003ccode\u003eScrollView\u003c/code\u003e should be inset.\u003c/p\u003e","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV16centersUnderflowSbvp":{"name":"centersUnderflow","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV015showsHorizontalD9IndicatorSbvp":{"name":"showsHorizontalScrollIndicator","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV013showsVerticalD9IndicatorSbvp":{"name":"showsVerticalScrollIndicator","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV21pullToRefreshBehaviorAC04PullghI0Ovp":{"name":"pullToRefreshBehavior","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV19keyboardDismissModeSo08UIScrolle8KeyboardgH0Vvp":{"name":"keyboardDismissMode","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV30contentInsetAdjustmentBehaviorSo08UIScrolle7ContentghI0Vvp":{"name":"contentInsetAdjustmentBehavior","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV22keyboardAdjustmentModeAC08KeyboardgH0Ovp":{"name":"keyboardAdjustmentMode","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV20delaysContentTouchesSbvp":{"name":"delaysContentTouches","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV20contentOffsetTriggerAC0dH0CSgvp":{"name":"contentOffsetTrigger","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV_8wrapping9configureA2C11ContentSizeO_0A2UI7Element_pyACzXEtcfc":{"name":"init(_:wrapping:configure:)","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"ScrollView"},"Structs/ScrollView/KeyboardAdjustmentMode.html":{"name":"KeyboardAdjustmentMode","parent_name":"ScrollView"},"Structs/ScrollView/ContentSize.html":{"name":"ContentSize","parent_name":"ScrollView"},"Structs/ScrollView/PullToRefreshBehavior.html":{"name":"PullToRefreshBehavior","parent_name":"ScrollView"},"Structs/ScrollView/ScrollTrigger.html":{"name":"ScrollTrigger","parent_name":"ScrollView"},"Structs/ScrollView/ContentOffset.html":{"name":"ContentOffset","parent_name":"ScrollView"},"Structs/Rule/Thickness.html#/s:25BlueprintUICommonControls4RuleV9ThicknessO8hairlineyA2EmF":{"name":"hairline","abstract":"\u003cp\u003eIndicates that the rule should be exactly 1 screen pixel thick,","parent_name":"Thickness"},"Structs/Rule/Thickness.html#/s:25BlueprintUICommonControls4RuleV9ThicknessO6pointsyAE14CoreFoundation7CGFloatVcAEmF":{"name":"points(_:)","abstract":"\u003cp\u003eAn exact thickness in points.\u003c/p\u003e","parent_name":"Thickness"},"Structs/Rule/Orientation.html#/s:25BlueprintUICommonControls4RuleV11OrientationO10horizontalyA2EmF":{"name":"horizontal","abstract":"\u003cp\u003eIndicates that the rule is parallel to the x axis.\u003c/p\u003e","parent_name":"Orientation"},"Structs/Rule/Orientation.html#/s:25BlueprintUICommonControls4RuleV11OrientationO8verticalyA2EmF":{"name":"vertical","abstract":"\u003cp\u003eIndicates that the rule is parallel to the y axis.\u003c/p\u003e","parent_name":"Orientation"},"Structs/Rule/Orientation.html":{"name":"Orientation","abstract":"\u003cp\u003eRepresents whether the rule is parallel to the x or y axis.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule/Thickness.html":{"name":"Thickness","abstract":"\u003cp\u003eRepresents the thickness of a rule in the direction perpendicular to its orientation.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule.html#/s:25BlueprintUICommonControls4RuleV11orientationAC11OrientationOvp":{"name":"orientation","abstract":"\u003cp\u003eWhether this rule is horizontal or vertical.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule.html#/s:25BlueprintUICommonControls4RuleV9thicknessAC9ThicknessOvp":{"name":"thickness","abstract":"\u003cp\u003eThe thickness of this rule in the direction perpendicular to its orientation.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule.html#/s:25BlueprintUICommonControls4RuleV5colorSo7UIColorCvp":{"name":"color","abstract":"\u003cp\u003eThe color that the rule should be drawn.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule.html#/s:25BlueprintUICommonControls4RuleV11orientation5color9thicknessA2C11OrientationO_So7UIColorCAC9ThicknessOtcfc":{"name":"init(orientation:color:thickness:)","abstract":"\u003cp\u003eInitializes a Rule with the given properties.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule.html#/s:11BlueprintUI12ProxyElementP21elementRepresentationAA0D0_pvp":{"name":"elementRepresentation","parent_name":"Rule"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eChildren will be stretched to fit the vertical size of the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO5alignyAeA08VerticalD0V_tcAEmF":{"name":"align(to:)","abstract":"\u003cp\u003eUsing the specified alignment, children will be aligned relatively to each other, and","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO3topAEvpZ":{"name":"top","abstract":"\u003cp\u003eChildren will be aligned to the top edge of the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO6centerAEvpZ":{"name":"center","abstract":"\u003cp\u003eChildren will be vertically centered in the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO6bottomAEvpZ":{"name":"bottom","abstract":"\u003cp\u003eChildren will be aligned to the bottom edge of the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO7leadingAEvpZ":{"name":"leading","abstract":"\u003cp\u003eChildren will be aligned to the top edge of the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO8trailingAEvpZ":{"name":"trailing","abstract":"\u003cp\u003eChildren will be aligned to the bottom edge of the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html":{"name":"RowAlignment","abstract":"\u003cp\u003eDescribes how the row\u0026rsquo;s children will be vertically aligned.\u003c/p\u003e","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV8childrenSayAA7Element_p7element_AA11StackLayoutV6TraitsV6traitss11AnyHashableVSg3keytGvp":{"name":"children","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV6layoutAA11StackLayoutVvp":{"name":"layout","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowVACycfc":{"name":"init()","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV9alignment9underflow8overflow14minimumSpacing8elementsA2C0C9AlignmentO_AA11StackLayoutV21UnderflowDistributionOAL08OverflowN0O14CoreFoundation7CGFloatVSayAL5ChildVGyXEtcfc":{"name":"init(alignment:underflow:overflow:minimumSpacing:elements:)","abstract":"\u003cp\u003eInitializer using result builder to declaratively build up a stack.\u003c/p\u003e","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV19horizontalUnderflowAA11StackLayoutV0E12DistributionOvp":{"name":"horizontalUnderflow","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV18horizontalOverflowAA11StackLayoutV0E12DistributionOvp":{"name":"horizontalOverflow","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV17verticalAlignmentAC0cE0Ovp":{"name":"verticalAlignment","abstract":"\u003cp\u003eSpecifies how children will be aligned vertically.\u003c/p\u003e","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV24minimumHorizontalSpacing14CoreFoundation7CGFloatVvp":{"name":"minimumHorizontalSpacing","parent_name":"Row"},"Structs/Overlay/Child.html#/s:11BlueprintUI7OverlayV5ChildV7elementAA7Element_pvp":{"name":"element","abstract":"\u003cp\u003eThe child element\u003c/p\u003e","parent_name":"Child"},"Structs/Overlay/Child.html#/s:11BlueprintUI7OverlayV5ChildV3keys11AnyHashableVSgvp":{"name":"key","abstract":"\u003cp\u003eAn optional key to disambiguate between view updates\u003c/p\u003e","parent_name":"Child"},"Structs/Overlay/Child.html#/s:11BlueprintUI7OverlayV5ChildV7element3keyAeA7Element_p_s11AnyHashableVSgtcfc":{"name":"init(element:key:)","abstract":"\u003cp\u003eCreate a new child.\u003c/p\u003e","parent_name":"Child"},"Structs/Overlay/Child.html#/s:11BlueprintUI7OverlayV5ChildVyAeA7Element_pcfc":{"name":"init(_:)","parent_name":"Child"},"Structs/Overlay.html#/s:11BlueprintUI7OverlayV8childrenSayAC5ChildVGvp":{"name":"children","abstract":"\u003cp\u003eAll elements displayed in the overlay.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7OverlayV8elements9configureACSayAA7Element_pG_yACzXEtcfc":{"name":"init(elements:configure:)","abstract":"\u003cp\u003eCreates a new overlay with the provided elements.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7OverlayV8elementsACSayAC5ChildVGyXE_tcfc":{"name":"init(elements:)","abstract":"\u003cp\u003eCreates a new overlay using a result builder.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7OverlayV3addyyAA7Element_pF":{"name":"add(_:)","abstract":"\u003cp\u003eAdds the provided element to the overlay.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7OverlayV3add3key5childys11AnyHashableVSg_AA7Element_ptF":{"name":"add(key:child:)","abstract":"\u003cp\u003eAdds the provided element to the overlay, above other children.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Overlay"},"Structs/Overlay/Child.html":{"name":"Child","abstract":"\u003cp\u003eThe child of an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Overlay.html\"\u003eOverlay\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Label/LineHeight/Alignment.html#/s:25BlueprintUICommonControls5LabelV10LineHeightO9AlignmentO3topyA2GmF":{"name":"top","abstract":"\u003cp\u003eAlign text to the top of the available line height, with extra space added at the bottom.","parent_name":"Alignment"},"Structs/Label/LineHeight/Alignment.html#/s:25BlueprintUICommonControls5LabelV10LineHeightO9AlignmentO6centeryA2GmF":{"name":"center","abstract":"\u003cp\u003eCenter text within the available line height. This makes line height behave like half-leading,","parent_name":"Alignment"},"Structs/Label/LineHeight/Alignment.html#/s:25BlueprintUICommonControls5LabelV10LineHeightO9AlignmentO6bottomyA2GmF":{"name":"bottom","abstract":"\u003cp\u003eAlign text to the bottom of the available line height, with extra space added at the top.","parent_name":"Alignment"},"Structs/Label/LineHeight/Alignment.html":{"name":"Alignment","parent_name":"LineHeight"},"Structs/Label/LineHeight.html#/s:25BlueprintUICommonControls5LabelV10LineHeightO4fontyA2EmF":{"name":"font","abstract":"\u003cp\u003eUse the default line height of the label\u0026rsquo;s font.\u003c/p\u003e","parent_name":"LineHeight"},"Structs/Label/LineHeight.html#/s:25BlueprintUICommonControls5LabelV10LineHeightO6customyAE14CoreFoundation7CGFloatV_AE9AlignmentOtcAEmF":{"name":"custom(lineHeight:alignment:)","abstract":"\u003cp\u003eUse a custom line height and alignment.\u003c/p\u003e","parent_name":"LineHeight"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV4textSSvp":{"name":"text","abstract":"\u003cp\u003eThe text to be displayed.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV4fontSo6UIFontCvp":{"name":"font","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV5colorSo7UIColorCvp":{"name":"color","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV9alignmentSo15NSTextAlignmentVvp":{"name":"alignment","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV13numberOfLinesSivp":{"name":"numberOfLines","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV13lineBreakModeSo06NSLinefG0Vvp":{"name":"lineBreakMode","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV10lineHeightAC04LineF0Ovp":{"name":"lineHeight","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV25adjustsFontSizeToFitWidthSbvp":{"name":"adjustsFontSizeToFitWidth","abstract":"\u003cp\u003eA Boolean value that determines whether the label reduces the text’s font","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV18minimumScaleFactor14CoreFoundation7CGFloatVvp":{"name":"minimumScaleFactor","abstract":"\u003cp\u003eThe minimum scale factor for the label’s text.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV36allowsDefaultTighteningForTruncationSbvp":{"name":"allowsDefaultTighteningForTruncation","abstract":"\u003cp\u003eA Boolean value that determines whether the label tightens text before truncating.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV6shadowAA10TextShadowVSgvp":{"name":"shadow","abstract":"\u003cp\u003eA shadow to display behind the label\u0026rsquo;s text. Defaults to no shadow.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV22isAccessibilityElementSbvp":{"name":"isAccessibilityElement","abstract":"\u003cp\u003eDetermines if the label should be included when navigating the UI via accessibility.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV17accessibilityHintSSSgvp":{"name":"accessibilityHint","abstract":"\u003cp\u003eA localized string that describes the result of performing an action on the element, when the result is non-obvious.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV19accessibilityTraitsShyAA20AccessibilityElementV5TraitOGSgvp":{"name":"accessibilityTraits","abstract":"\u003cp\u003eA set of accessibility traits that should be applied to the label, these will be merged with any existing traits.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV26accessibilityCustomActionsSayAA20AccessibilityElementV0F6ActionVGvp":{"name":"accessibilityCustomActions","abstract":"\u003cp\u003eAn array containing one or more \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AccessibilityElement/CustomAction.html\"\u003eAccessibilityElement.CustomAction\u003c/a\u003e\u003c/code\u003es, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV4text9configureACSS_yACzXEtcfc":{"name":"init(text:configure:)","parent_name":"Label"},"Structs/Label.html#/s:11BlueprintUI12ProxyElementP21elementRepresentationAA0D0_pvp":{"name":"elementRepresentation","parent_name":"Label"},"Structs/Label/LineHeight.html":{"name":"LineHeight","parent_name":"Label"},"Structs/Inset.html#/s:11BlueprintUI5InsetV14wrappedElementAA0E0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe wrapped element to be inset.\u003c/p\u003e","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV3top14CoreFoundation7CGFloatVvp":{"name":"top","abstract":"\u003cp\u003eThe amount to inset the content element.\u003c/p\u003e","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV6bottom14CoreFoundation7CGFloatVvp":{"name":"bottom","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV4left14CoreFoundation7CGFloatVvp":{"name":"left","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV5right14CoreFoundation7CGFloatVvp":{"name":"right","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV3top6bottom4left5right8wrappingAC14CoreFoundation7CGFloatV_A3kA7Element_ptcfc":{"name":"init(top:bottom:left:right:wrapping:)","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV07uniformC08wrappingAC14CoreFoundation7CGFloatV_AA7Element_ptcfc":{"name":"init(uniformInset:wrapping:)","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV6insets8wrappingACSo12UIEdgeInsetsV_AA7Element_ptcfc":{"name":"init(insets:wrapping:)","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV10sideInsets8wrappingAC14CoreFoundation7CGFloatV_AA7Element_ptcfc":{"name":"init(sideInsets:wrapping:)","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV8vertical8wrappingAC14CoreFoundation7CGFloatV_AA7Element_ptcfc":{"name":"init(vertical:wrapping:)","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Inset"},"Structs/Image/ContentMode.html#/s:25BlueprintUICommonControls5ImageV11ContentModeO6centeryA2EmF":{"name":"center","abstract":"\u003cp\u003eThe image is not scaled, and is simply centered within the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Image.html\"\u003eImage\u003c/a\u003e\u003c/code\u003e","parent_name":"ContentMode"},"Structs/Image/ContentMode.html#/s:25BlueprintUICommonControls5ImageV11ContentModeO7stretchyA2EmF":{"name":"stretch","abstract":"\u003cp\u003eThe image is stretched to fill the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Image.html\"\u003eImage\u003c/a\u003e\u003c/code\u003e element, causing the image","parent_name":"ContentMode"},"Structs/Image/ContentMode.html#/s:25BlueprintUICommonControls5ImageV11ContentModeO9aspectFityA2EmF":{"name":"aspectFit","abstract":"\u003cp\u003eThe image is scaled to touch the edges of the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Image.html\"\u003eImage\u003c/a\u003e\u003c/code\u003e element while","parent_name":"ContentMode"},"Structs/Image/ContentMode.html#/s:25BlueprintUICommonControls5ImageV11ContentModeO10aspectFillyA2EmF":{"name":"aspectFill","abstract":"\u003cp\u003eThe image is scaled to fill the entire \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Image.html\"\u003eImage\u003c/a\u003e\u003c/code\u003e element. If the aspect","parent_name":"ContentMode"},"Structs/Image.html#/s:25BlueprintUICommonControls5ImageV5imageSo7UIImageCSgvp":{"name":"image","abstract":"\u003cp\u003eThe image to be displayed\u003c/p\u003e","parent_name":"Image"},"Structs/Image.html#/s:25BlueprintUICommonControls5ImageV9tintColorSo7UIColorCSgvp":{"name":"tintColor","abstract":"\u003cp\u003eThe tint color.\u003c/p\u003e","parent_name":"Image"},"Structs/Image.html#/s:25BlueprintUICommonControls5ImageV11contentModeAC07ContentF0Ovp":{"name":"contentMode","abstract":"\u003cp\u003eThe content mode determines the layout of the image when its size does","parent_name":"Image"},"Structs/Image.html#/s:25BlueprintUICommonControls5ImageV29blockAccessibilityDescriptionSbvp":{"name":"blockAccessibilityDescription","abstract":"\u003cp\u003eiOS 14 added support for Image Descriptions using VoiceOver. This is not always appropriate.","parent_name":"Image"},"Structs/Image.html#/s:25BlueprintUICommonControls5ImageV5image11contentMode9tintColor29blockAccessibilityDescriptionACSo7UIImageCSg_AC07ContentG0OSo7UIColorCSgSbtcfc":{"name":"init(image:contentMode:tintColor:blockAccessibilityDescription:)","abstract":"\u003cp\u003eInitializes an image element with the given \u003ccode\u003eUIImage\u003c/code\u003e instance.\u003c/p\u003e","parent_name":"Image"},"Structs/Image.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Image"},"Structs/Image.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Image"},"Structs/Image/ContentMode.html":{"name":"ContentMode","abstract":"\u003cp\u003eThe content mode determines the layout of the image when its size does","parent_name":"Image"},"Structs/GeometryReader.html#/s:11BlueprintUI14GeometryReaderV21elementRepresentationAcA7Element_pAA0C5ProxyVc_tcfc":{"name":"init(elementRepresentation:)","parent_name":"GeometryReader"},"Structs/GeometryReader.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"GeometryReader"},"Structs/GeometryReader.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"GeometryReader"},"Structs/EqualStack/Child.html#/s:11BlueprintUI10EqualStackV5ChildV7elementAA7Element_pvp":{"name":"element","parent_name":"Child"},"Structs/EqualStack/Child.html#/s:11BlueprintUI10EqualStackV5ChildVyAeA7Element_pcfc":{"name":"init(_:)","parent_name":"Child"},"Structs/EqualStack/Direction.html#/s:11BlueprintUI10EqualStackV9DirectionO8verticalyA2EmF":{"name":"vertical","parent_name":"Direction"},"Structs/EqualStack/Direction.html#/s:11BlueprintUI10EqualStackV9DirectionO10horizontalyA2EmF":{"name":"horizontal","parent_name":"Direction"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV9directionAC9DirectionOvp":{"name":"direction","abstract":"\u003cp\u003eThe direction in which this element will stack its children.\u003c/p\u003e","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV7spacing14CoreFoundation7CGFloatVvp":{"name":"spacing","abstract":"\u003cp\u003eThe amount of space between children in this element. Defaults to 0.\u003c/p\u003e","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV8childrenSayAA7Element_pGvp":{"name":"children","abstract":"\u003cp\u003eThe child elements to be laid out. Defaults to an empty array.\u003c/p\u003e","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV9direction9configureA2C9DirectionO_yACzXEtcfc":{"name":"init(direction:configure:)","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV9direction7spacing8elementsA2C9DirectionO_14CoreFoundation7CGFloatVSayAC5ChildVGyXEtcfc":{"name":"init(direction:spacing:elements:)","abstract":"\u003cp\u003eInitializer using result builder to declaritively build up a stack.\u003c/p\u003e","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV3add5childyAA7Element_p_tF":{"name":"add(child:)","parent_name":"EqualStack"},"Structs/EqualStack/Direction.html":{"name":"Direction","parent_name":"EqualStack"},"Structs/EqualStack/Child.html":{"name":"Child","parent_name":"EqualStack"},"Structs/Empty.html#/s:11BlueprintUI5EmptyVACycfc":{"name":"init()","parent_name":"Empty"},"Structs/Empty.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Empty"},"Structs/Empty.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Empty"},"Structs/ConstrainedSize/Constraint.html#/s:11BlueprintUI15ConstrainedSizeV10ConstraintO13unconstrainedyA2EmF":{"name":"unconstrained","abstract":"\u003cp\u003eThere is no constraint for this axis – the natural size of the element will be used.\u003c/p\u003e","parent_name":"Constraint"},"Structs/ConstrainedSize/Constraint.html#/s:11BlueprintUI15ConstrainedSizeV10ConstraintO6atMostyAE14CoreFoundation7CGFloatVcAEmF":{"name":"atMost(_:)","abstract":"\u003cp\u003eThe measured size for this axis will be \u003cstrong\u003eno greater\u003c/strong\u003e than the value provided.\u003c/p\u003e","parent_name":"Constraint"},"Structs/ConstrainedSize/Constraint.html#/s:11BlueprintUI15ConstrainedSizeV10ConstraintO7atLeastyAE14CoreFoundation7CGFloatVcAEmF":{"name":"atLeast(_:)","abstract":"\u003cp\u003eThe measured size for this axis will be \u003cstrong\u003eno less\u003c/strong\u003e than the value provided.\u003c/p\u003e","parent_name":"Constraint"},"Structs/ConstrainedSize/Constraint.html#/s:11BlueprintUI15ConstrainedSizeV10ConstraintO6withinyAESNy14CoreFoundation7CGFloatVGcAEmF":{"name":"within(_:)","abstract":"\u003cp\u003eThe measured size for this axis will be \u003cstrong\u003ewithin\u003c/strong\u003e the range provided.","parent_name":"Constraint"},"Structs/ConstrainedSize/Constraint.html#/s:11BlueprintUI15ConstrainedSizeV10ConstraintO8absoluteyAE14CoreFoundation7CGFloatVcAEmF":{"name":"absolute(_:)","abstract":"\u003cp\u003eThe measured size for this axis will be \u003cstrong\u003eexactly\u003c/strong\u003e the value provided.\u003c/p\u003e","parent_name":"Constraint"},"Structs/ConstrainedSize.html#/s:11BlueprintUI15ConstrainedSizeV7wrappedAA7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe element whose measurement will be constrained by the \u003ccode\u003eConstrainedSize\u003c/code\u003e.\u003c/p\u003e","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize.html#/s:11BlueprintUI15ConstrainedSizeV5widthAC10ConstraintOvp":{"name":"width","abstract":"\u003cp\u003eThe constraint to place on the width of the element.\u003c/p\u003e","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize.html#/s:11BlueprintUI15ConstrainedSizeV6heightAC10ConstraintOvp":{"name":"height","abstract":"\u003cp\u003eThe constraint to place on the height of the element.\u003c/p\u003e","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize.html#/s:11BlueprintUI15ConstrainedSizeV5width6height8wrappingA2C10ConstraintO_AhA7Element_ptcfc":{"name":"init(width:height:wrapping:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eConstrainedSize\u003c/code\u003e with the provided constraint options.\u003c/p\u003e","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize/Constraint.html":{"name":"Constraint","abstract":"\u003cp\u003eThe available ways to constrain the measurement of a given axis within a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/ConstrainedSize.html\"\u003eConstrainedSize\u003c/a\u003e\u003c/code\u003e element.\u003c/p\u003e","parent_name":"ConstrainedSize"},"Structs/ConstrainedAspectRatio/ContentMode.html#/s:11BlueprintUI22ConstrainedAspectRatioV11ContentModeO10fillParentyA2EmF":{"name":"fillParent","abstract":"\u003cp\u003eThe content will be sized to fill its parent while","parent_name":"ContentMode"},"Structs/ConstrainedAspectRatio/ContentMode.html#/s:11BlueprintUI22ConstrainedAspectRatioV11ContentModeO9fitParentyA2EmF":{"name":"fitParent","abstract":"\u003cp\u003eThe content will be sized to fit within its parent while maintaining the specified","parent_name":"ContentMode"},"Structs/ConstrainedAspectRatio/ContentMode.html#/s:11BlueprintUI22ConstrainedAspectRatioV11ContentModeO03fitF0yA2EmF":{"name":"fitContent","abstract":"\u003cp\u003eThe content will grow in whichever dimension is needed to maintain the aspect ratio,","parent_name":"ContentMode"},"Structs/ConstrainedAspectRatio/ContentMode.html#/s:11BlueprintUI22ConstrainedAspectRatioV11ContentModeO06shrinkF0yA2EmF":{"name":"shrinkContent","abstract":"\u003cp\u003eThe content will shrink in whichever dimension is needed to maintain the aspect ratio,","parent_name":"ContentMode"},"Structs/ConstrainedAspectRatio/ContentMode.html":{"name":"ContentMode","abstract":"\u003cp\u003eRepresents how the content should size itself relative to its parent.\u003c/p\u003e","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI22ConstrainedAspectRatioV14wrappedElementAA0G0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe element being constrained.\u003c/p\u003e","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI22ConstrainedAspectRatioV06aspectE0AA0dE0Vvp":{"name":"aspectRatio","abstract":"\u003cp\u003eThe target aspect ratio.\u003c/p\u003e","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI22ConstrainedAspectRatioV11contentModeAC07ContentG0Ovp":{"name":"contentMode","abstract":"\u003cp\u003eWhether the aspect ratio should be reached by expanding the content element\u0026rsquo;s size to fill its parent","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI22ConstrainedAspectRatioV06aspectE011contentMode8wrappingAcA0dE0V_AC07ContentH0OAA7Element_ptcfc":{"name":"init(aspectRatio:contentMode:wrapping:)","abstract":"\u003cp\u003eInitializes with the given properties.\u003c/p\u003e","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"ConstrainedAspectRatio"},"Structs/Column/ColumnAlignment.html#/s:11BlueprintUI6ColumnV0C9AlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eChildren will be stretched to fit the horizontal size of the column.\u003c/p\u003e","parent_name":"ColumnAlignment"},"Structs/Column/ColumnAlignment.html#/s:11BlueprintUI6ColumnV0C9AlignmentO5alignyAeA010HorizontalD0V_tcAEmF":{"name":"align(to:)","abstract":"\u003cp\u003eUsing the specified alignment, children will be aligned relatively to each other, and","parent_name":"ColumnAlignment"},"Structs/Column/ColumnAlignment.html#/s:11BlueprintUI6ColumnV0C9AlignmentO7leadingAEvpZ":{"name":"leading","abstract":"\u003cp\u003eChildren will be aligned to the leading edge of the column.\u003c/p\u003e","parent_name":"ColumnAlignment"},"Structs/Column/ColumnAlignment.html#/s:11BlueprintUI6ColumnV0C9AlignmentO6centerAEvpZ":{"name":"center","abstract":"\u003cp\u003eChildren will be horizontally centered in the column.\u003c/p\u003e","parent_name":"ColumnAlignment"},"Structs/Column/ColumnAlignment.html#/s:11BlueprintUI6ColumnV0C9AlignmentO8trailingAEvpZ":{"name":"trailing","abstract":"\u003cp\u003eChildren will be aligned to the trailing edge of the column.\u003c/p\u003e","parent_name":"ColumnAlignment"},"Structs/Column/ColumnAlignment.html":{"name":"ColumnAlignment","abstract":"\u003cp\u003eDescribes how the column\u0026rsquo;s children will be horizontally aligned.\u003c/p\u003e","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV8childrenSayAA7Element_p7element_AA11StackLayoutV6TraitsV6traitss11AnyHashableVSg3keytGvp":{"name":"children","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV6layoutAA11StackLayoutVvp":{"name":"layout","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnVACycfc":{"name":"init()","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV9alignment9underflow8overflow14minimumSpacing8elementsA2C0C9AlignmentO_AA11StackLayoutV21UnderflowDistributionOAL08OverflowN0O14CoreFoundation7CGFloatVSayAL5ChildVGyXEtcfc":{"name":"init(alignment:underflow:overflow:minimumSpacing:elements:)","abstract":"\u003cp\u003eCreates a Column, using result builder syntax. Columns display a list of items in a vertical","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV17verticalUnderflowAA11StackLayoutV0E12DistributionOvp":{"name":"verticalUnderflow","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV16verticalOverflowAA11StackLayoutV0E12DistributionOvp":{"name":"verticalOverflow","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV19horizontalAlignmentAC0cE0Ovp":{"name":"horizontalAlignment","abstract":"\u003cp\u003eSpecifies how children will be aligned horizontally.\u003c/p\u003e","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV22minimumVerticalSpacing14CoreFoundation7CGFloatVvp":{"name":"minimumVerticalSpacing","parent_name":"Column"},"Structs/Centered.html#/s:11BlueprintUI8CenteredV7wrappedAA7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe content element to be centered.\u003c/p\u003e","parent_name":"Centered"},"Structs/Centered.html#/s:11BlueprintUI8CenteredVyAcA7Element_pcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a \u003ccode\u003eCentered\u003c/code\u003e element with the given content element.\u003c/p\u003e","parent_name":"Centered"},"Structs/Centered.html#/s:11BlueprintUI12ProxyElementP21elementRepresentationAA0D0_pvp":{"name":"elementRepresentation","parent_name":"Centered"},"Structs/Button.html#/s:25BlueprintUICommonControls6ButtonV14wrappedElement0A2UI0F0_pvp":{"name":"wrappedElement","parent_name":"Button"},"Structs/Button.html#/s:25BlueprintUICommonControls6ButtonV9isEnabledSbvp":{"name":"isEnabled","parent_name":"Button"},"Structs/Button.html#/s:25BlueprintUICommonControls6ButtonV5onTapyycvp":{"name":"onTap","parent_name":"Button"},"Structs/Button.html#/s:25BlueprintUICommonControls6ButtonV19minimumTappableSizeSo6CGSizeVvp":{"name":"minimumTappableSize","parent_name":"Button"},"Structs/Button.html#/s:25BlueprintUICommonControls6ButtonV9isEnabled5onTap8wrappingACSb_yyc0A2UI7Element_ptcfc":{"name":"init(isEnabled:onTap:wrapping:)","parent_name":"Button"},"Structs/Button.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Button"},"Structs/Button.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Button"},"Structs/Box/ShadowStyle.html#/s:25BlueprintUICommonControls3BoxV11ShadowStyleO4noneyA2EmF":{"name":"none","parent_name":"ShadowStyle"},"Structs/Box/ShadowStyle.html#/s:25BlueprintUICommonControls3BoxV11ShadowStyleO6simpleyAE14CoreFoundation7CGFloatV_AISo6CGSizeVSo7UIColorCtcAEmF":{"name":"simple(radius:opacity:offset:color:)","parent_name":"ShadowStyle"},"Structs/Box/BorderStyle.html#/s:25BlueprintUICommonControls3BoxV11BorderStyleO4noneyA2EmF":{"name":"none","parent_name":"BorderStyle"},"Structs/Box/BorderStyle.html#/s:25BlueprintUICommonControls3BoxV11BorderStyleO5solidyAESo7UIColorC_14CoreFoundation7CGFloatVtcAEmF":{"name":"solid(color:width:)","parent_name":"BorderStyle"},"Structs/Box/CornerCurve.html#/s:25BlueprintUICommonControls3BoxV11CornerCurveO8circularyA2EmF":{"name":"circular","abstract":"\u003cp\u003eProvides a standard-style corner radius as you would see in design tools like Figma.\u003c/p\u003e","parent_name":"CornerCurve"},"Structs/Box/CornerCurve.html#/s:25BlueprintUICommonControls3BoxV11CornerCurveO10continuousyA2EmF":{"name":"continuous","abstract":"\u003cp\u003eProvides an iOS icon-style corner radius.\u003c/p\u003e","parent_name":"CornerCurve"},"Structs/Box/CornerStyle/Corners.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:s9OptionSetP8rawValuex03RawD0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV7topLeftAGvpZ":{"name":"topLeft","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV8topRightAGvpZ":{"name":"topRight","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV10bottomLeftAGvpZ":{"name":"bottomLeft","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV11bottomRightAGvpZ":{"name":"bottomRight","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV3allAGvpZ":{"name":"all","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV3topAGvpZ":{"name":"top","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV4leftAGvpZ":{"name":"left","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV6bottomAGvpZ":{"name":"bottom","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV5rightAGvpZ":{"name":"right","parent_name":"Corners"},"Structs/Box/CornerStyle.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO6squareyA2EmF":{"name":"square","parent_name":"CornerStyle"},"Structs/Box/CornerStyle.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7capsuleyA2EmF":{"name":"capsule","parent_name":"CornerStyle"},"Structs/Box/CornerStyle.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7roundedyAE14CoreFoundation7CGFloatV_AE7CornersVtcAEmF":{"name":"rounded(radius:corners:)","parent_name":"CornerStyle"},"Structs/Box/CornerStyle/Corners.html":{"name":"Corners","parent_name":"CornerStyle"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV15backgroundColorSo7UIColorCvp":{"name":"backgroundColor","abstract":"\u003cp\u003eThe background color to show in the box.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV11cornerStyleAC06CornerF0Ovp":{"name":"cornerStyle","abstract":"\u003cp\u003eThe corner style to apply, eg rounded, capsule, or normal, square corners.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV11cornerCurveAC06CornerF0Ovp":{"name":"cornerCurve","abstract":"\u003cp\u003eHow to style the curves when \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Box.html#/s:25BlueprintUICommonControls3BoxV11cornerStyleAC06CornerF0Ovp\"\u003ecornerStyle\u003c/a\u003e\u003c/code\u003e is non-square.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV11borderStyleAC06BorderF0Ovp":{"name":"borderStyle","abstract":"\u003cp\u003eThe border to apply around the edges of the box.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV11shadowStyleAC06ShadowF0Ovp":{"name":"shadowStyle","abstract":"\u003cp\u003eThe shadow style to apply to the outside of the box.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV12clipsContentSbvp":{"name":"clipsContent","abstract":"\u003cp\u003eIf content placed within the box should be clipped.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV14wrappedElement0A2UI0F0_pSgvp":{"name":"wrappedElement","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV15backgroundColor11cornerStyle0G5Curve06borderH006shadowH012clipsContent8wrappingACSo7UIColorC_AC06CornerH0OAC0pI0OAC06BorderH0OAC06ShadowH0OSb0A2UI7Element_pSgtcfc":{"name":"init(backgroundColor:cornerStyle:cornerCurve:borderStyle:shadowStyle:clipsContent:wrapping:)","parent_name":"Box"},"Structs/Box.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Box"},"Structs/Box.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Box"},"Structs/Box/CornerStyle.html":{"name":"CornerStyle","parent_name":"Box"},"Structs/Box/CornerCurve.html":{"name":"CornerCurve","abstract":"\u003cp\u003eSpecifies the curve style when showing rounded corners on a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Box.html\"\u003eBox\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"Box"},"Structs/Box/BorderStyle.html":{"name":"BorderStyle","parent_name":"Box"},"Structs/Box/ShadowStyle.html":{"name":"ShadowStyle","parent_name":"Box"},"Structs/AttributedLabel/LinkDetectionType.html#/s:25BlueprintUICommonControls15AttributedLabelV17LinkDetectionTypeO4dateyA2EmF":{"name":"date","abstract":"\u003cp\u003eDetect date strings. Tapping a date opens the calendar to that date.\u003c/p\u003e","parent_name":"LinkDetectionType"},"Structs/AttributedLabel/LinkDetectionType.html#/s:25BlueprintUICommonControls15AttributedLabelV17LinkDetectionTypeO7addressyA2EmF":{"name":"address","abstract":"\u003cp\u003eDetect addresses. Tapping the address opens Maps with that address.\u003c/p\u003e","parent_name":"LinkDetectionType"},"Structs/AttributedLabel/LinkDetectionType.html#/s:25BlueprintUICommonControls15AttributedLabelV17LinkDetectionTypeO4linkyA2EmF":{"name":"link","abstract":"\u003cp\u003eDetect URLs. Tapping the link opens the URL.\u003c/p\u003e","parent_name":"LinkDetectionType"},"Structs/AttributedLabel/LinkDetectionType.html#/s:25BlueprintUICommonControls15AttributedLabelV17LinkDetectionTypeO11phoneNumberyA2EmF":{"name":"phoneNumber","abstract":"\u003cp\u003eDetect phone numbers. Tapping the phone number prompts the user to call it.\u003c/p\u003e","parent_name":"LinkDetectionType"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV14attributedTextSo18NSAttributedStringCvp":{"name":"attributedText","abstract":"\u003cp\u003eThe attributed text to render in the label.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV13numberOfLinesSivp":{"name":"numberOfLines","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV6shadowAA10TextShadowVSgvp":{"name":"shadow","abstract":"\u003cp\u003eA shadow to display behind the label\u0026rsquo;s text. Defaults to no shadow.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV14textRectOffsetSo8UIOffsetVvp":{"name":"textRectOffset","abstract":"\u003cp\u003eAn offset that will be applied to the rect used by \u003ccode\u003edrawText(in:)\u003c/code\u003e.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV22isAccessibilityElementSbvp":{"name":"isAccessibilityElement","abstract":"\u003cp\u003eDetermines if the label should be included when navigating the UI via accessibility.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV25adjustsFontSizeToFitWidthSbvp":{"name":"adjustsFontSizeToFitWidth","abstract":"\u003cp\u003eA Boolean value that determines whether the label reduces the text’s font","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV18minimumScaleFactor14CoreFoundation7CGFloatVvp":{"name":"minimumScaleFactor","abstract":"\u003cp\u003eThe minimum scale factor for the label’s text.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV36allowsDefaultTighteningForTruncationSbvp":{"name":"allowsDefaultTighteningForTruncation","abstract":"\u003cp\u003eA Boolean value that determines whether the label tightens text before truncating.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV19accessibilityTraitsShyAA20AccessibilityElementV5TraitOGSgvp":{"name":"accessibilityTraits","abstract":"\u003cp\u003eA set of accessibility traits that should be applied to the label, these will be merged with any existing traits.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV17accessibilityHintSSSgvp":{"name":"accessibilityHint","abstract":"\u003cp\u003eA localized string that describes the result of performing an action on the element, when the result is non-obvious.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV26accessibilityCustomActionsSayAA20AccessibilityElementV0G6ActionVGvp":{"name":"accessibilityCustomActions","abstract":"\u003cp\u003eAn array containing one or more \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AccessibilityElement/CustomAction.html\"\u003eAccessibilityElement.CustomAction\u003c/a\u003e\u003c/code\u003es, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV18linkDetectionTypesShyAC04LinkG4TypeOGvp":{"name":"linkDetectionTypes","abstract":"\u003cp\u003eA set of data types to detect and automatically link in the label.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV14linkAttributesSDySo21NSAttributedStringKeyas11AnyHashableVGvp":{"name":"linkAttributes","abstract":"\u003cp\u003eA set of attributes to apply to links in the string.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV20activeLinkAttributesSDySo21NSAttributedStringKeyas11AnyHashableVGvp":{"name":"activeLinkAttributes","abstract":"\u003cp\u003eA set of attributes to apply to links when they are touched.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV14attributedText9configureACSo18NSAttributedStringC_yACzXEtcfc":{"name":"init(attributedText:configure:)","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AttributedLabel"},"Structs/AttributedLabel/LinkDetectionType.html":{"name":"LinkDetectionType","abstract":"\u003cp\u003eTypes of data that can be detected and automatically turned into links.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/Aligned/HorizontalAlignment.html#/s:11BlueprintUI7AlignedV19HorizontalAlignmentO7leadingyA2EmF":{"name":"leading","abstract":"\u003cp\u003eAligns the content to the leading edge of the containing element.","parent_name":"HorizontalAlignment"},"Structs/Aligned/HorizontalAlignment.html#/s:11BlueprintUI7AlignedV19HorizontalAlignmentO6centeryA2EmF":{"name":"center","abstract":"\u003cp\u003eCenters the content horizontally.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/Aligned/HorizontalAlignment.html#/s:11BlueprintUI7AlignedV19HorizontalAlignmentO8trailingyA2EmF":{"name":"trailing","abstract":"\u003cp\u003eAligns the content to the trailing edge of the containing element.","parent_name":"HorizontalAlignment"},"Structs/Aligned/HorizontalAlignment.html#/s:11BlueprintUI7AlignedV19HorizontalAlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eThe content fills the full horizontal width of the containing element.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/Aligned/VerticalAlignment.html#/s:11BlueprintUI7AlignedV17VerticalAlignmentO3topyA2EmF":{"name":"top","abstract":"\u003cp\u003eAligns the content to the top edge of the containing element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/Aligned/VerticalAlignment.html#/s:11BlueprintUI7AlignedV17VerticalAlignmentO6centeryA2EmF":{"name":"center","abstract":"\u003cp\u003eCenters the content vertically.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/Aligned/VerticalAlignment.html#/s:11BlueprintUI7AlignedV17VerticalAlignmentO6bottomyA2EmF":{"name":"bottom","abstract":"\u003cp\u003eAligns the content to the bottom edge of the containing element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/Aligned/VerticalAlignment.html#/s:11BlueprintUI7AlignedV17VerticalAlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eThe content fills the full vertical height of the containing element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/Aligned/VerticalAlignment.html":{"name":"VerticalAlignment","abstract":"\u003cp\u003eThe possible vertical alignment values.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned/HorizontalAlignment.html":{"name":"HorizontalAlignment","abstract":"\u003cp\u003eThe possible horizontal alignment values.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7AlignedV14wrappedElementAA0E0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe content element to be aligned.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7AlignedV17verticalAlignmentAC08VerticalE0Ovp":{"name":"verticalAlignment","abstract":"\u003cp\u003eThe vertical alignment.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7AlignedV19horizontalAlignmentAC010HorizontalE0Ovp":{"name":"horizontalAlignment","abstract":"\u003cp\u003eThe horizontal alignment.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7AlignedV10vertically12horizontally8wrappingA2C17VerticalAlignmentO_AC010HorizontalH0OAA7Element_ptcfc":{"name":"init(vertically:horizontally:wrapping:)","abstract":"\u003cp\u003eInitializes an \u003ccode\u003eAligned\u003c/code\u003e with the given content element and alignments.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Aligned"},"Structs/EnvironmentReader.html#/s:11BlueprintUI17EnvironmentReaderV21elementRepresentationAcA7Element_pAA0C0Vc_tcfc":{"name":"init(elementRepresentation:)","parent_name":"EnvironmentReader"},"Structs/EnvironmentReader.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"EnvironmentReader"},"Structs/EnvironmentReader.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"EnvironmentReader"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI18AdaptedEnvironmentV7Adaptera":{"name":"Adapter","abstract":"\u003cp\u003eTakes in a mutable \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Environment.html\"\u003eEnvironment\u003c/a\u003e\u003c/code\u003e which can be mutated to add or override values.\u003c/p\u003e","parent_name":"AdaptedEnvironment"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI18AdaptedEnvironmentV2by8wrappingACyAA0D0Vzc_AA7Element_ptcfc":{"name":"init(by:wrapping:)","abstract":"\u003cp\u003eWraps an element with an environment that is modified using the given","parent_name":"AdaptedEnvironment"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI18AdaptedEnvironmentV3key5value8wrappingACxm_5ValueQzAA7Element_ptcAA0D3KeyRzlufc":{"name":"init(key:value:wrapping:)","abstract":"\u003cp\u003eWraps an element with an environment that is modified for a single key and value.\u003c/p\u003e","parent_name":"AdaptedEnvironment"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI18AdaptedEnvironmentV7keyPath5value8wrappingACs011WritableKeyF0CyAA0D0VxG_xAA7Element_ptclufc":{"name":"init(keyPath:value:wrapping:)","abstract":"\u003cp\u003eWraps an element with an environment that is modified for a single value.\u003c/p\u003e","parent_name":"AdaptedEnvironment"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AdaptedEnvironment"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AdaptedEnvironment"},"Structs/AccessibilityElement/CustomContent/Importance.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV10ImportanceO7defaultyA2GmF":{"name":"default","abstract":"\u003cp\u003eBy default custom content is available through the rotor.\u003c/p\u003e","parent_name":"Importance"},"Structs/AccessibilityElement/CustomContent/Importance.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV10ImportanceO4highyA2GmF":{"name":"high","abstract":"\u003cp\u003eIn addtion to being available through the rotor, high importance content will announced in the main VoiceOver utterance.","parent_name":"Importance"},"Structs/AccessibilityElement/CustomContent/Importance.html":{"name":"Importance","abstract":"\u003cp\u003eThe importance of the content.\u003c/p\u003e","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomContent.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV5labelSSvp":{"name":"label","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomContent.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV5valueSSSgvp":{"name":"value","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomContent.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV10importanceAE10ImportanceOvp":{"name":"importance","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomContent.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV5label5value10importanceAESS_SSSgAE10ImportanceOtcfc":{"name":"init(label:value:importance:)","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomContent.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV02axfG0So08AXCustomG0Cvp":{"name":"axCustomContent","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomAction.html#/s:25BlueprintUICommonControls20AccessibilityElementV12CustomActionV12OnActivationa":{"name":"OnActivation","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:25BlueprintUICommonControls20AccessibilityElementV12CustomActionV4nameSSvp":{"name":"name","abstract":"\u003cp\u003eA localized name that discribes the action.\u003c/p\u003e","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:25BlueprintUICommonControls20AccessibilityElementV12CustomActionV5imageSo7UIImageCSgvp":{"name":"image","abstract":"\u003cp\u003eAn image representing the action to be shown with some assistive technologies such as Switch Control.\u003c/p\u003e","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:25BlueprintUICommonControls20AccessibilityElementV12CustomActionV12onActivationSbycvp":{"name":"onActivation","abstract":"\u003cp\u003eA Callback for when the action is activated. This should return a \u003ccode\u003ebool\u003c/code\u003e indicating success or failure of the action.\u003c/p\u003e","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:25BlueprintUICommonControls20AccessibilityElementV12CustomActionV4name5image12onActivationAESS_So7UIImageCSgSbyctcfc":{"name":"init(name:image:onActivation:)","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"CustomAction"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO15IncrementActiona":{"name":"IncrementAction","abstract":"\u003cp\u003eUsed in conjunction with UIAccessibilityTrait.adjustable, these will be called to allow accessible adjustment of a value, for example in a slider or stepper control.","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO15DecrementActiona":{"name":"DecrementAction","abstract":"\u003cp\u003eUsed in conjunction with UIAccessibilityTrait.adjustable, these will be called to allow accessible adjustment of a value, for example in a slider or stepper control.","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO6buttonyA2EmF":{"name":"button","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO4linkyA2EmF":{"name":"link","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO6headeryA2EmF":{"name":"header","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO11searchFieldyA2EmF":{"name":"searchField","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO5imageyA2EmF":{"name":"image","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO8selectedyA2EmF":{"name":"selected","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO10playsSoundyA2EmF":{"name":"playsSound","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO11keyboardKeyyA2EmF":{"name":"keyboardKey","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO10staticTextyA2EmF":{"name":"staticText","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO07summaryE0yA2EmF":{"name":"summaryElement","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO10notEnabledyA2EmF":{"name":"notEnabled","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO17updatesFrequentlyyA2EmF":{"name":"updatesFrequently","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO18startsMediaSessionyA2EmF":{"name":"startsMediaSession","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO10adjustableyAEyyc_yyctcAEmF":{"name":"adjustable(_:_:)","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO23allowsDirectInteractionyA2EmF":{"name":"allowsDirectInteraction","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO14causesPageTurnyA2EmF":{"name":"causesPageTurn","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO6tabBaryA2EmF":{"name":"tabBar","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Trait"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV5labelSSSgvp":{"name":"label","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV5valueSSSgvp":{"name":"value","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV4hintSSSgvp":{"name":"hint","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV10identifierSSSgvp":{"name":"identifier","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV6traitsShyAC5TraitOGvp":{"name":"traits","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV22accessibilityFrameSizeSo6CGSizeVSgvp":{"name":"accessibilityFrameSize","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV29accessibilityFrameCornerStyleAA3BoxV0hI0Ovp":{"name":"accessibilityFrameCornerStyle","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV07wrappedE00A2UI0E0_pvp":{"name":"wrappedElement","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV21accessibilityActivateSbycSgvp":{"name":"accessibilityActivate","abstract":"\u003cp\u003eUsed to provide custom behaviour when activated by voiceover. This will override the default behavior of issuing a tap event at the accessibility activation point.","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV13customActionsSayAC12CustomActionVGvp":{"name":"customActions","abstract":"\u003cp\u003eAn array containing one or more \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AccessibilityElement/CustomAction.html\"\u003eCustomAction\u003c/a\u003e\u003c/code\u003es, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.\u003c/p\u003e","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV13customContentSayAC06CustomG0VGvp":{"name":"customContent","abstract":"\u003cp\u003eAn array containing one or more \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AccessibilityElement/CustomContent.html\"\u003eCustomContent\u003c/a\u003e\u003c/code\u003es, defining additional content associated with the element. Assistive technologies, such as VoiceOver, will announce your custom content to the user at appropriate times.\u003c/p\u003e","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV5label5value6traits4hint10identifier22accessibilityFrameSize0kL11CornerStyle13customActions0P7Content8wrapping9configureACSSSg_AOShyAC5TraitOGA2OSo6CGSizeVSgAA3BoxV0nO0OSayAC12CustomActionVGSayAC0xR0VG0A2UI0E0_pyACzXEtcfc":{"name":"init(label:value:traits:hint:identifier:accessibilityFrameSize:accessibilityFrameCornerStyle:customActions:customContent:wrapping:configure:)","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement/Trait.html":{"name":"Trait","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement/CustomAction.html":{"name":"CustomAction","abstract":"\u003cp\u003eUsed to provide additional functionality to assistive technologies beyond your accessible UI.\u003c/p\u003e","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement/CustomContent.html":{"name":"CustomContent","parent_name":"AccessibilityElement"},"Structs/AccessibilityContainer.html#/s:25BlueprintUICommonControls22AccessibilityContainerV10identifierSSSgvp":{"name":"identifier","abstract":"\u003cp\u003eAn optional \u003ccode\u003eaccessibilityIdentifier\u003c/code\u003e to give the container. Defaults to \u003ccode\u003enil\u003c/code\u003e.\u003c/p\u003e","parent_name":"AccessibilityContainer"},"Structs/AccessibilityContainer.html#/s:25BlueprintUICommonControls22AccessibilityContainerV7wrapped0A2UI7Element_pvp":{"name":"wrapped","parent_name":"AccessibilityContainer"},"Structs/AccessibilityContainer.html#/s:25BlueprintUICommonControls22AccessibilityContainerV10identifier8wrappingACSSSg_0A2UI7Element_ptcfc":{"name":"init(identifier:wrapping:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eAccessibilityContainer\u003c/code\u003e wrapping the provided element.\u003c/p\u003e","parent_name":"AccessibilityContainer"},"Structs/AccessibilityContainer.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AccessibilityContainer"},"Structs/AccessibilityContainer.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AccessibilityContainer"},"Structs/AccessibilityBlocker.html#/s:25BlueprintUICommonControls20AccessibilityBlockerV7wrapped0A2UI7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe element whose accessibility information will be blocked.\u003c/p\u003e","parent_name":"AccessibilityBlocker"},"Structs/AccessibilityBlocker.html#/s:25BlueprintUICommonControls20AccessibilityBlockerV10isBlockingSbvp":{"name":"isBlocking","abstract":"\u003cp\u003eIf the \u003ccode\u003eAccessibilityBlocker\u003c/code\u003e is currently blocking accessibility.\u003c/p\u003e","parent_name":"AccessibilityBlocker"},"Structs/AccessibilityBlocker.html#/s:25BlueprintUICommonControls20AccessibilityBlockerV10isBlocking8wrappingACSb_0A2UI7Element_ptcfc":{"name":"init(isBlocking:wrapping:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eAccessibilityBlocker\u003c/code\u003e wrapping the provided element.\u003c/p\u003e","parent_name":"AccessibilityBlocker"},"Structs/AccessibilityBlocker.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AccessibilityBlocker"},"Structs/AccessibilityBlocker.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AccessibilityBlocker"},"Structs/AccessibilityBlocker.html":{"name":"AccessibilityBlocker","abstract":"\u003cp\u003eBlocks all accessibility on the element, so that it is"},"Structs/AccessibilityContainer.html":{"name":"AccessibilityContainer","abstract":"\u003cp\u003eActs as an accessibility container for any accessible subviews.\u003c/p\u003e"},"Structs/AccessibilityElement.html":{"name":"AccessibilityElement"},"Structs/AdaptedEnvironment.html":{"name":"AdaptedEnvironment","abstract":"\u003cp\u003eWraps an element tree with a modified environment.\u003c/p\u003e"},"Structs/EnvironmentReader.html":{"name":"EnvironmentReader","abstract":"\u003cp\u003eAn element that dynamically builds its content based on the environment.\u003c/p\u003e"},"Structs/Aligned.html":{"name":"Aligned","abstract":"\u003cp\u003eAligns a content element within itself. The vertical and horizontal alignment may be set independently.\u003c/p\u003e"},"Structs/AttributedLabel.html":{"name":"AttributedLabel"},"Structs/Box.html":{"name":"Box","abstract":"\u003cp\u003eA simple element that wraps a child element and adds visual styling including"},"Structs/Button.html":{"name":"Button","abstract":"\u003cp\u003eAn element that wraps a child element in a button that mimics a UIButton with the .system style. That is, when"},"Structs/Centered.html":{"name":"Centered","abstract":"\u003cp\u003eCenters a content element within itself.\u003c/p\u003e"},"Structs/Column.html":{"name":"Column","abstract":"\u003cp\u003eDisplays a list of items in a linear vertical layout.\u003c/p\u003e"},"Structs/ConstrainedAspectRatio.html":{"name":"ConstrainedAspectRatio","abstract":"\u003cp\u003eConstrains the size of the content element to an aspect ratio.\u003c/p\u003e"},"Structs/ConstrainedSize.html":{"name":"ConstrainedSize","abstract":"\u003cp\u003eConstrains the measured size of the contained element in the ranges specified by the \u003ccode\u003ewidth\u003c/code\u003e and \u003ccode\u003eheight\u003c/code\u003e properties.\u003c/p\u003e"},"Structs/Empty.html":{"name":"Empty","abstract":"\u003cp\u003eAn empty \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Element.html\"\u003eElement\u003c/a\u003e\u003c/code\u003e which has no size and draws no content.\u003c/p\u003e"},"Structs/EqualStack.html":{"name":"EqualStack","abstract":"\u003cp\u003eAn element that sizes its children equally, stacking them in the primary axis according to"},"Structs/GeometryReader.html":{"name":"GeometryReader","abstract":"\u003cp\u003eAn element that dynamically builds its content based on the available space.\u003c/p\u003e"},"Structs/Image.html":{"name":"Image","abstract":"\u003cp\u003eDisplays an image within an element hierarchy.\u003c/p\u003e"},"Structs/Inset.html":{"name":"Inset","abstract":"\u003cp\u003eInsets a content element within a layout.\u003c/p\u003e"},"Structs/Label.html":{"name":"Label","abstract":"\u003cp\u003eDisplays text content.\u003c/p\u003e"},"Structs/Overlay.html":{"name":"Overlay","abstract":"\u003cp\u003eStretches all of its child elements to fill the layout area, stacked on top of each other.\u003c/p\u003e"},"Structs/Row.html":{"name":"Row","abstract":"\u003cp\u003eDisplays a list of items in a linear horizontal layout.\u003c/p\u003e"},"Structs/Rule.html":{"name":"Rule","abstract":"\u003cp\u003eA solid line, parallel to the x or y axis, with a fixed thickness but unconstrained in length,"},"Structs/ScrollView.html":{"name":"ScrollView","abstract":"\u003cp\u003eWraps a content element and makes it scrollable.\u003c/p\u003e"},"Structs/SegmentedControl.html":{"name":"SegmentedControl","abstract":"\u003cp\u003eAllows users to pick from an array of options.\u003c/p\u003e"},"Structs/Spacer.html":{"name":"Spacer","abstract":"\u003cp\u003eAn element that does not display anything (it has neither children or a view).\u003c/p\u003e"},"Structs/Tappable.html":{"name":"Tappable","abstract":"\u003cp\u003eWraps a content element and calls the provided closure when tapped.\u003c/p\u003e"},"Structs/TextField.html":{"name":"TextField","abstract":"\u003cp\u003eDisplays a text field.\u003c/p\u003e"},"Structs/TransitionContainer.html":{"name":"TransitionContainer","abstract":"\u003cp\u003eWraps a content element and adds transitions when the element appears,"},"Structs/ElementPreview/PreviewType.html#/s:11BlueprintUI14ElementPreviewV0D4TypeO6deviceyAE05SwiftB00D6DeviceVcAEmF":{"name":"device(_:)","abstract":"\u003cp\u003eThe preview will be inside the provided device (eg, iPhone X).\u003c/p\u003e","parent_name":"PreviewType"},"Structs/ElementPreview/PreviewType.html#/s:11BlueprintUI14ElementPreviewV0D4TypeO5fixedyAE14CoreFoundation7CGFloatV_AItcAEmF":{"name":"fixed(width:height:)","abstract":"\u003cp\u003eThe preview will be the provided size\u003c/p\u003e","parent_name":"PreviewType"},"Structs/ElementPreview/PreviewType.html#/s:11BlueprintUI14ElementPreviewV0D4TypeO8thatFitsyAE14CoreFoundation7CGFloatV_tcAEmF":{"name":"thatFits(padding:)","abstract":"\u003cp\u003eThe preview will be as large as needed to preview the content.\u003c/p\u003e","parent_name":"PreviewType"},"Structs/ElementPreview/PreviewType.html#/s:11BlueprintUI14ElementPreviewV0D4TypeO10identifiers11AnyHashableVvp":{"name":"identifier","parent_name":"PreviewType"},"Structs/ElementPreview/PreviewType.html#/s:11BlueprintUI14ElementPreviewV0D4TypeO11previewView4with3for05SwiftB003AnyG0VSS_AA0C0_ptF":{"name":"previewView(with:for:)","parent_name":"PreviewType"},"Structs/ElementPreview.html#/s:11BlueprintUI14ElementPreviewV0C8Providera":{"name":"ElementProvider","abstract":"\u003cp\u003eA provider which returns a new element.\u003c/p\u003e","parent_name":"ElementPreview"},"Structs/ElementPreview.html#/s:11BlueprintUI14ElementPreviewV13commonDevices5named4withACSS_AA0C0_pyctFZ":{"name":"commonDevices(named:with:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eElementPreview\u003c/code\u003e with several common devices that your users may use.\u003c/p\u003e","parent_name":"ElementPreview"},"Structs/ElementPreview.html#/s:11BlueprintUI14ElementPreviewV5named4withAeCSS_AC0D4TypeOAA0C0_pyctcfc":{"name":"init(named:with:with:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eElementPreview\u003c/code\u003e with the provided preview type.","parent_name":"ElementPreview"},"Structs/ElementPreview.html#/s:11BlueprintUI14ElementPreviewV5named4withAeCSS_SayAC0D4TypeOGAA0C0_pyctcfc":{"name":"init(named:with:with:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eElementPreview\u003c/code\u003e with the provided preview types.\u003c/p\u003e","parent_name":"ElementPreview"},"Structs/ElementPreview.html#/s:7SwiftUI4ViewP4body4BodyQzvp":{"name":"body","parent_name":"ElementPreview"},"Structs/ElementPreview/PreviewType.html":{"name":"PreviewType","abstract":"\u003cp\u003eThe preview type to use to display an element in an Xcode preview.\u003c/p\u003e","parent_name":"ElementPreview"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC11environmentAA11EnvironmentVvp":{"name":"environment","abstract":"\u003cp\u003eA base environment used when laying out and rendering the element tree.\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC046automaticallyInheritsEnvironmentFromContainingA5ViewsSbvp":{"name":"automaticallyInheritsEnvironmentFromContainingBlueprintViews","abstract":"\u003cp\u003eIf \u003ccode\u003etrue\u003c/code\u003e, then Blueprint will automatically inherit the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Environment.html\"\u003eEnvironment\u003c/a\u003e\u003c/code\u003e from the nearest","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC7elementAA7Element_pSgvp":{"name":"element","abstract":"\u003cp\u003eThe root element that is displayed within the view.\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(py)bounds":{"name":"bounds","abstract":"\u003cp\u003eWe need to invalidateIntrinsicContentSize when \u003ccode\u003ebound.size\u003c/code\u003e changes for Auto Layout to work correctly.\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC10layoutModeAA06LayoutE0OSgvp":{"name":"layoutMode","abstract":"\u003cp\u003eAn optional explicit layout mode for this view. If \u003ccode\u003enil\u003c/code\u003e, this view will inherit the layout","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC4nameSSSgvp":{"name":"name","abstract":"\u003cp\u003eAn optional name to help identify this view\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC15metricsDelegateAA0ac7MetricsE0_pSgvp":{"name":"metricsDelegate","abstract":"\u003cp\u003eProvides performance metrics about the duration of layouts, updates, etc.\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC7element11environmentAcA7Element_pSg_AA11EnvironmentVtcfc":{"name":"init(element:environment:)","abstract":"\u003cp\u003eInstantiates a view with the given element\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)initWithFrame:":{"name":"init(frame:)","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)sizeThatFits:":{"name":"sizeThatFits(_:)","abstract":"\u003cp\u003eMeasures the size needed to display the view within the given constraining size,","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC12sizeThatFitsySo6CGSizeVAA14SizeConstraintVF":{"name":"sizeThatFits(_:)","abstract":"\u003cp\u003eMeasures the size needed to display the view within the given \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SizeConstraint.html\"\u003eSizeConstraint\u003c/a\u003e\u003c/code\u003e.","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)systemLayoutSizeFittingSize:":{"name":"systemLayoutSizeFitting(_:)","abstract":"\u003cp\u003eMeasures the size needed to display the view within then given constraining size,","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority:":{"name":"systemLayoutSizeFitting(_:withHorizontalFittingPriority:verticalFittingPriority:)","abstract":"\u003cp\u003eMeasures the size needed to display the view within then given constraining size,","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(py)intrinsicContentSize":{"name":"intrinsicContentSize","abstract":"\u003cp\u003eFor us, this is the same as \u003ccode\u003esizeThatFits\u003c/code\u003e, since blueprint does not","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(py)semanticContentAttribute":{"name":"semanticContentAttribute","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)safeAreaInsetsDidChange":{"name":"safeAreaInsetsDidChange()","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)layoutSubviews":{"name":"layoutSubviews()","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)didMoveToWindow":{"name":"didMoveToWindow()","parent_name":"BlueprintView"},"Classes/BlueprintView.html":{"name":"BlueprintView","abstract":"\u003cp\u003eA view that is responsible for displaying an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Element.html\"\u003eElement\u003c/a\u003e\u003c/code\u003e hierarchy.\u003c/p\u003e"},"Structs/ElementPreview.html":{"name":"ElementPreview","abstract":"\u003cp\u003eA SwiftUI view which wraps a Blueprint element, which can be used to preview Blueprint elements"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV5alpha14CoreFoundation7CGFloatVvp":{"name":"alpha","abstract":"\u003cp\u003eThe alpha of the view in the hidden state (initial for appearing, final for disappearing).\u003c/p\u003e","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV9transformSo13CATransform3DVvp":{"name":"transform","abstract":"\u003cp\u003eThe transform of the view in the hidden state (initial for appearing, final for disappearing).\u003c/p\u003e","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV10attributesAA19AnimationAttributesVvp":{"name":"attributes","abstract":"\u003cp\u003eThe animation attributes that will be used to drive the transition.\u003c/p\u003e","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV5alpha9transform10attributesAC14CoreFoundation7CGFloatV_So13CATransform3DVAA19AnimationAttributesVtcfc":{"name":"init(alpha:transform:attributes:)","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV5scaleACvpZ":{"name":"scale","abstract":"\u003cp\u003eReturns a \u003ccode\u003eVisibilityTransition\u003c/code\u003e that scales in and out.\u003c/p\u003e","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV4fadeACvpZ":{"name":"fade","abstract":"\u003cp\u003eReturns a \u003ccode\u003eVisibilityTransition\u003c/code\u003e that fades in and out.\u003c/p\u003e","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV12scaleAndFadeACvpZ":{"name":"scaleAndFade","abstract":"\u003cp\u003eReturns a \u003ccode\u003eVisibilityTransition\u003c/code\u003e that simultaneously scales and fades in and out.\u003c/p\u003e","parent_name":"VisibilityTransition"},"Enums/LayoutTransition.html#/s:11BlueprintUI16LayoutTransitionO4noneyA2CmF":{"name":"none","abstract":"\u003cp\u003eThe view will never animate layout changes.\u003c/p\u003e","parent_name":"LayoutTransition"},"Enums/LayoutTransition.html#/s:11BlueprintUI16LayoutTransitionO8specificyAcA19AnimationAttributesVcACmF":{"name":"specific(_:)","abstract":"\u003cp\u003eLayout changes will always animate with the given attributes.\u003c/p\u003e","parent_name":"LayoutTransition"},"Enums/LayoutTransition.html#/s:11BlueprintUI16LayoutTransitionO9inheritedyA2CmF":{"name":"inherited","abstract":"\u003cp\u003eThe view will only animate layout changes if an inherited transition exists.\u003c/p\u003e","parent_name":"LayoutTransition"},"Enums/LayoutTransition.html#/s:11BlueprintUI16LayoutTransitionO21inheritedWithFallbackyAcA19AnimationAttributesVcACmF":{"name":"inheritedWithFallback(_:)","abstract":"\u003cp\u003eThe view will animate along with an inherited transition (if present) or the specified fallback attributes.\u003c/p\u003e","parent_name":"LayoutTransition"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV6Updatea":{"name":"Update","abstract":"\u003cp\u003eA closure that is applied to the native view instance during an update cycle.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV7builderxycvp":{"name":"builder","abstract":"\u003cp\u003eA closure that is responsible for instantiating an instance of the native view.","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV7updatesSayyxcGvp":{"name":"updates","abstract":"\u003cp\u003eAn array of update closures.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV07contentC0ySo6UIViewCxcvp":{"name":"contentView","abstract":"\u003cp\u003eA closure that takes a native view instance as the single argument, and","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV16layoutTransitionAA06LayoutG0Ovp":{"name":"layoutTransition","abstract":"\u003cp\u003eThe transition to use during layout changes.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV19appearingTransitionAA010VisibilityG0VSgvp":{"name":"appearingTransition","abstract":"\u003cp\u003eThe transition to use when this view appears.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV22disappearingTransitionAA010VisibilityG0VSgvp":{"name":"disappearingTransition","abstract":"\u003cp\u003eThe transition to use when this view disappears.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV8onAppearyycSgvp":{"name":"onAppear","abstract":"\u003cp\u003eA hook to call when the element appears.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV11onDisappearyycSgvp":{"name":"onDisappear","abstract":"\u003cp\u003eA hook to call when the element disappears.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV21frameRoundingBehaviorAC05FramegH0Ovp":{"name":"frameRoundingBehavior","abstract":"\u003cp\u003eThe prioritization method to use when snapping the native view\u0026rsquo;s frame to pixel","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationVAEy_xGycfc":{"name":"init()","abstract":"\u003cp\u003eInitializes a default configuration object.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV5applyyyyxcF":{"name":"apply(_:)","abstract":"\u003cp\u003eAdds the given update closure to the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV7updatesSayyxcGvp\"\u003eupdates\u003c/a\u003e\u003c/code\u003e array.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationVyqd__Sgs24ReferenceWritableKeyPathCyxqd__Gcluip":{"name":"subscript(_:)","abstract":"\u003cp\u003eSubscript for values that are not optional. We must represent these values as optional so that we can","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationVyqd__Sgs24ReferenceWritableKeyPathCyxAFGcluip":{"name":"subscript(_:)","abstract":"\u003cp\u003eSubscript for values that are optional.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/FrameRoundingBehavior.html#/s:11BlueprintUI15ViewDescriptionV21FrameRoundingBehaviorO15prioritizeEdgesyA2EmF":{"name":"prioritizeEdges","abstract":"\u003cp\u003ePrioritize preserving frame edge positions\u003c/p\u003e","parent_name":"FrameRoundingBehavior"},"Structs/ViewDescription/FrameRoundingBehavior.html#/s:11BlueprintUI15ViewDescriptionV21FrameRoundingBehaviorO14prioritizeSizeyA2EmF":{"name":"prioritizeSize","abstract":"\u003cp\u003ePrioritize preserving frame sizes\u003c/p\u003e","parent_name":"FrameRoundingBehavior"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionVyACxmcSo6UIViewCRbzlufc":{"name":"init(_:)","abstract":"\u003cp\u003eGenerates a view description for the given view class.\u003c/p\u003e","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV_11configuringACxm_yAC13ConfigurationVy_xGzXEtcSo6UIViewCRbzlufc":{"name":"init(_:configuring:)","abstract":"\u003cp\u003eGenerates a view description for the given view class.\u003c/p\u003e","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV8viewTypeSo6UIViewCmvp":{"name":"viewType","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV5buildSo6UIViewCyF":{"name":"build()","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV5apply2toySo6UIViewC_tF":{"name":"apply(to:)","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV07contentC02inSo6UIViewCAG_tF":{"name":"contentView(in:)","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV16layoutTransitionAA06LayoutF0Ovp":{"name":"layoutTransition","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV19appearingTransitionAA010VisibilityF0VSgvp":{"name":"appearingTransition","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV22disappearingTransitionAA010VisibilityF0VSgvp":{"name":"disappearingTransition","parent_name":"ViewDescription"},"Structs/ViewDescription/FrameRoundingBehavior.html":{"name":"FrameRoundingBehavior","abstract":"\u003cp\u003eThe available prioritization options for rounding frames to pixel boundaries.\u003c/p\u003e","parent_name":"ViewDescription"},"Structs/ViewDescription/Configuration.html":{"name":"Configuration","abstract":"\u003cp\u003eRepresents the configuration of a specific UIView type.\u003c/p\u003e","parent_name":"ViewDescription"},"Structs/ElementContent/Builder.html#/s:11BlueprintUI14ElementContentV7BuilderV6layoutxvp":{"name":"layout","abstract":"\u003cp\u003eThe layout object that is ultimately responsible for measuring","parent_name":"Builder"},"Structs/ElementContent/Builder.html#/s:11BlueprintUI14ElementContentV7BuilderV3add6traits3key7elementy6TraitsQz_s11AnyHashableVSgAA0C0_ptF":{"name":"add(traits:key:element:)","abstract":"\u003cp\u003eAdds the given child element.\u003c/p\u003e","parent_name":"Builder"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV7measure2in11environmentSo6CGSizeVAA14SizeConstraintV_AA11EnvironmentVtF":{"name":"measure(in:environment:)","abstract":"\u003cp\u003eMeasures the required size of this element\u0026rsquo;s content.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV10childCountSivp":{"name":"childCount","parent_name":"ElementContent"},"Structs/ElementContent/Builder.html":{"name":"Builder","abstract":"\u003cp\u003eUsed to construct elements that have layout and children.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV6layout9configureACx_yAC7BuilderVy_xGzXEtcAA6LayoutRzlufc":{"name":"init(layout:configure:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with the given layout and children.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV5child3key6layoutAcA0C0_p_s11AnyHashableVSgxtcAA17SingleChildLayoutRzlufc":{"name":"init(child:key:layout:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with the given element and layout.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV5childAcA0C0_p_tcfc":{"name":"init(child:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with the given element.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV5buildAcA0C0_pAA14SizeConstraintV_AA11EnvironmentVtc_tcfc":{"name":"init(build:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e that will lazily create its storage during a layout and measurement pass,","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV10measurableAcA10Measurable_p_tcfc":{"name":"init(measurable:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with no children that delegates to the provided \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Measurable.html\"\u003eMeasurable\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV15measureFunctionACSo6CGSizeVAA14SizeConstraintVc_tcfc":{"name":"init(measureFunction:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with no children that delegates to the provided measure function.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV15measureFunctionACSo6CGSizeVAA14SizeConstraintV_AA11EnvironmentVtc_tcfc":{"name":"init(measureFunction:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with no children that delegates to the provided measure function.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV13intrinsicSizeACSo6CGSizeV_tcfc":{"name":"init(intrinsicSize:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with no children that uses the provided intrinsic size for measuring.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV5child11environmentAcA0C0_p_yAA11EnvironmentVzctcfc":{"name":"init(child:environment:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with the given child element, measurement caching key, and environment adapter,","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV5child3key5valueAcA0C0_p_xm5ValueQztcAA14EnvironmentKeyRzlufc":{"name":"init(child:key:value:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with the given child element, measurement caching key, and environment key + value.","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV9measuringAcA0C0_p_tcfc":{"name":"init(measuring:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eElementContent\u003c/code\u003e which uses the provided element to measure its","parent_name":"ElementContent"},"Protocols/ProxyElement.html#/s:11BlueprintUI12ProxyElementP21elementRepresentationAA0D0_pvp":{"name":"elementRepresentation","abstract":"\u003cp\u003eReturns an element that represents the entire content of this element.\u003c/p\u003e","parent_name":"ProxyElement"},"Protocols/ProxyElement.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"ProxyElement"},"Protocols/ProxyElement.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"ProxyElement"},"Protocols/Element.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","abstract":"\u003cp\u003eReturns the content of this element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","abstract":"\u003cp\u003eReturns an (optional) description of the view that should back this element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE18adaptedEnvironment3key5valueAaB_pqd__m_5ValueQyd__tAA0E3KeyRd__lF":{"name":"adaptedEnvironment(key:value:)","abstract":"\u003cp\u003eWraps this element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AdaptedEnvironment.html\"\u003eAdaptedEnvironment\u003c/a\u003e\u003c/code\u003e with the given environment key and value.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE18adaptedEnvironment7keyPath5valueAaB_ps011WritableKeyG0CyAA0E0Vqd__G_qd__tlF":{"name":"adaptedEnvironment(keyPath:value:)","abstract":"\u003cp\u003eWraps this element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AdaptedEnvironment.html\"\u003eAdaptedEnvironment\u003c/a\u003e\u003c/code\u003e with the given keypath and value.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE18adaptedEnvironment2byAaB_pyAA0E0Vzc_tF":{"name":"adaptedEnvironment(by:)","abstract":"\u003cp\u003eWraps this element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AdaptedEnvironment.html\"\u003eAdaptedEnvironment\u003c/a\u003e\u003c/code\u003e with the given configuration block.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE7aligned10vertically12horizontallyAA7AlignedVAH17VerticalAlignmentO_AH010HorizontalI0OtF":{"name":"aligned(vertically:horizontally:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Aligned.html\"\u003eAligned\u003c/a\u003e\u003c/code\u003e element with the provided parameters.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE8centeredAA8CenteredVyF":{"name":"centered()","abstract":"\u003cp\u003eWraps the element in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Centered.html\"\u003eCentered\u003c/a\u003e\u003c/code\u003e element to center it within its parent.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE2if_4thenAaB_pSb_AaB_pxXEtF":{"name":"if(_:then:)","abstract":"\u003cp\u003eReturns a new element from the provided \u003ccode\u003emodify\u003c/code\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE2if_4then4elseAaB_pSb_AaB_pxXEAaB_pxXEtF":{"name":"if(_:then:else:)","abstract":"\u003cp\u003eReturns a new element from the provided \u003ccode\u003ethen\u003c/code\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE2if3let4thenAaB_pqd__Sg_AaB_pqd___xtXEtlF":{"name":"if(let:then:)","abstract":"\u003cp\u003eReturns a new element from the provided \u003ccode\u003emodify\u003c/code\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE2if3let4then4elseAaB_pqd__Sg_AaB_pqd___xtXEAaB_pxXEtlF":{"name":"if(let:then:else:)","abstract":"\u003cp\u003eReturns a new element from the provided \u003ccode\u003ethen\u003c/code\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE3mapyAaB_pAaB_pxXEF":{"name":"map(_:)","abstract":"\u003cp\u003eCreates and returns a new element by passing the","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE6modifyyAaB_pyxzXEF":{"name":"modify(_:)","abstract":"\u003cp\u003eCreates and returns a new element by passing the","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE13constrainedTo11aspectRatio11contentModeAA017ConstrainedAspectG0VAA0kG0V_AH07ContentI0OtF":{"name":"constrainedTo(aspectRatio:contentMode:)","abstract":"\u003cp\u003eConstrains the element to the provided aspect ratio.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE13constrainedTo5width6heightAA15ConstrainedSizeVAH10ConstraintO_AJtF":{"name":"constrainedTo(width:height:)","abstract":"\u003cp\u003eConstrains the measured size of the element to the provided width and height.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE13constrainedTo5width6heightAA15ConstrainedSizeV14CoreFoundation7CGFloatV_AKtF":{"name":"constrainedTo(width:height:)","abstract":"\u003cp\u003eConstrains the measured size of the element to the provided width and height.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE13constrainedTo4sizeAA15ConstrainedSizeVSo6CGSizeV_tF":{"name":"constrainedTo(size:)","abstract":"\u003cp\u003eConstrains the measured size of the element to the provided size.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE11constrained2toAA15ConstrainedSizeVAA0G10ConstraintV_tF":{"name":"constrained(to:)","abstract":"\u003cp\u003eConstrains the measured size of the element to the provided \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SizeConstraint.html\"\u003eSizeConstraint\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE8decorate8layering8position4withAaB_pAA8DecorateV8LayeringO_AI8PositionVAaB_pyXEtF":{"name":"decorate(layering:position:with:)","abstract":"\u003cp\u003ePlaces a decoration element behind or in front of the given \u003ccode\u003ewrapped\u003c/code\u003e element,","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE9flowChild3keyAA4FlowV0E0Vs11AnyHashableVSg_tF":{"name":"flowChild(key:)","abstract":"\u003cp\u003eWraps the element in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Flow/Child.html\"\u003eFlow.Child\u003c/a\u003e\u003c/code\u003e to allow customizing the item in the flow layout.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE12gridRowChild3key5widthAA04GridE0V0F0Vs11AnyHashableVSg_AH5WidthOtF":{"name":"gridRowChild(key:width:)","abstract":"\u003cp\u003eWraps an element with a \u003ccode\u003eGridRowChild\u003c/code\u003e in order to provide meta information that a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/GridRow.html\"\u003eGridRow\u003c/a\u003e\u003c/code\u003e can aply to its layout.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE6hiddenyAA6HiddenVSbF":{"name":"hidden(_:)","abstract":"\u003cp\u003eConditionally hide the wrapped element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE5inset3top6bottom4left5rightAA5InsetV14CoreFoundation7CGFloatV_A3MtF":{"name":"inset(top:bottom:left:right:)","abstract":"\u003cp\u003eInsets the element by the given amount on each side.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE5inset2byAA5InsetVSo12UIEdgeInsetsV_tF":{"name":"inset(by:)","abstract":"\u003cp\u003eInsets the element by the given amount on each side.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE5inset7uniformAA5InsetV14CoreFoundation7CGFloatV_tF":{"name":"inset(uniform:)","abstract":"\u003cp\u003eInsets the element by the given amount on each side.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE5inset10horizontal8verticalAA5InsetV14CoreFoundation7CGFloatV_AKtF":{"name":"inset(horizontal:vertical:)","abstract":"\u003cp\u003eInsets the element by the given amount on each side.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE5keyedyAA5KeyedVs11AnyHashableVF":{"name":"keyed(_:)","abstract":"\u003cp\u003e\u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Keyed.html\"\u003eKeyed\u003c/a\u003e\u003c/code\u003e allows providing a \u003ccode\u003eHashable\u003c/code\u003e value which is used","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE8onAppearyAA17LifecycleObserverVyycF":{"name":"onAppear(_:)","abstract":"\u003cp\u003eAdds a hook that will be called when this element appears.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE11onDisappearyAA17LifecycleObserverVyycF":{"name":"onDisappear(_:)","abstract":"\u003cp\u003eAdds a hook that will be called when this element disappears.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE7opacityyAA7OpacityV14CoreFoundation7CGFloatVF":{"name":"opacity(_:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Opacity.html\"\u003eOpacity\u003c/a\u003e\u003c/code\u003e element with the provided opacity.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE12overlayChild3keyAA7OverlayV0E0Vs11AnyHashableVSg_tF":{"name":"overlayChild(key:)","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE16stackLayoutChild8priority14alignmentGuide3keyAA05StackE0V0F0VAK8PriorityO_14CoreFoundation7CGFloatVAA0C10DimensionsVcSgs11AnyHashableVSgtF":{"name":"stackLayoutChild(priority:alignmentGuide:key:)","abstract":"\u003cp\u003eWraps an element with a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/StackLayout/Child.html\"\u003eStackLayout.Child\u003c/a\u003e\u003c/code\u003e in order to customize \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/StackLayout/Traits.html\"\u003eStackLayout.Traits\u003c/a\u003e\u003c/code\u003e and the key.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE16stackLayoutChild8priorityAA05StackE0V0F0VAI8PriorityO_tF":{"name":"stackLayoutChild(priority:)","abstract":"\u003cp\u003eWraps an element with a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/StackLayout/Child.html\"\u003eStackLayout.Child\u003c/a\u003e\u003c/code\u003e in order to customize the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/StackLayout/Child/Priority.html\"\u003eStackLayout.Child.Priority\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE18tintAdjustmentModeyAA04TinteF0VSo06UIViewgeF0VF":{"name":"tintAdjustmentMode(_:)","abstract":"\u003cp\u003eConditionally modifies the tint adjustment mode of its wrapped element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE11transformedyAA11TransformedVSo13CATransform3DVF":{"name":"transformed(_:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Transformed.html\"\u003eTransformed\u003c/a\u003e\u003c/code\u003e element with the provided 3D transform.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE11transformedyAA11TransformedVSo17CGAffineTransformVF":{"name":"transformed(_:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Transformed.html\"\u003eTransformed\u003c/a\u003e\u003c/code\u003e element with the provided 2D transform.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE10translated10translateX0E1Y0E1ZAA11TransformedV14CoreFoundation7CGFloatV_A2LtF":{"name":"translated(translateX:translateY:translateZ:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Transformed.html\"\u003eTransformed\u003c/a\u003e\u003c/code\u003e element that translates the receiver in 3D space.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE7rotated2byAA11TransformedV10Foundation11MeasurementVySo11NSUnitAngleCG_tF":{"name":"rotated(by:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Transformed.html\"\u003eTransformed\u003c/a\u003e\u003c/code\u003e element that rotates the receiver in 2D space.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE6scaled6scaleX0E1YAA11TransformedV14CoreFoundation7CGFloatV_AKtF":{"name":"scaled(scaleX:scaleY:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Transformed.html\"\u003eTransformed\u003c/a\u003e\u003c/code\u003e element that scales the receiver in 2D space.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE22userInteractionEnabledyAA04UsereF0VSbF":{"name":"userInteractionEnabled(_:)","abstract":"\u003cp\u003eConditionally enable user interaction of the wrapped element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE18blockAccessibility10isBlockingAD0G7BlockerVSb_tF":{"name":"blockAccessibility(isBlocking:)","abstract":"\u003cp\u003eBlocks all accessibility on the element, so that it is","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE22accessibilityContainer10identifierAaB_pSSSg_tF":{"name":"accessibilityContainer(identifier:)","abstract":"\u003cp\u003eActs as an accessibility container for any subviews","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE013accessibilityC05label5value6traits4hint10identifier0F9FrameSize0fL11CornerStyle13customActions0P7ContentAD013AccessibilityC0VSSSg_AQShyAP5TraitOGA2QSo6CGSizeVSgAD3BoxV0nO0OSayAP12CustomActionVGSayAP0wR0VGtF":{"name":"accessibilityElement(label:value:traits:hint:identifier:accessibilityFrameSize:accessibilityFrameCornerStyle:customActions:customContent:)","abstract":"\u003cp\u003eWraps the receiver in an accessibility element with the provided values.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE13accessibility5label5value4hint10identifier6traits0F9FrameSizeAD013AccessibilityC0VSSSg_A3NShyAM5TraitOGSo6CGSizeVSgtF":{"name":"accessibility(label:value:hint:identifier:traits:accessibilityFrameSize:)","abstract":"\u003cp\u003eWraps the receiver in an accessibility element with the provided values.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE18accessibilityFocus2onAaB_pAD013AccessibilityG0V7TriggerC_tF":{"name":"accessibilityFocus(on:)","abstract":"\u003cp\u003eEnables VoiceOver focus to jump to the wrapped element via the trigger.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE12onLinkTappedyAaB_py10Foundation3URLVcF":{"name":"onLinkTapped(_:)","abstract":"\u003cp\u003eHandle links opened in any \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AttributedLabel.html\"\u003eAttributedLabel\u003c/a\u003e\u003c/code\u003e within this element using the provided closure.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE3box10background7corners11cornerCurve7borders6shadow12clipsContentAD3BoxVSo7UIColorC_AM11CornerStyleOAM0qJ0OAM06BorderR0OAM06ShadowR0OSbtF":{"name":"box(background:corners:cornerCurve:borders:shadow:clipsContent:)","abstract":"\u003cp\u003eWraps the element in a box to provide basic styling.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE11editingMenu4show4withAD07EditingG0VAI7GestureO_SayAD0jG4ItemVGyXEtF":{"name":"editingMenu(show:with:)","abstract":"\u003cp\u003eAllows showing the system\u0026rsquo;s \u003ccode\u003eUIMenuController\u003c/code\u003e editing menu upon long press of the wrapped element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE10scrollable_9configureAD10ScrollViewVAH11ContentSizeO_yAHzXEtF":{"name":"scrollable(_:configure:)","abstract":"\u003cp\u003eWraps the element in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/ScrollView.html\"\u003eScrollView\u003c/a\u003e\u003c/code\u003e to allow it to be scrolled","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE8tappable5onTapAD8TappableVyyc_tF":{"name":"tappable(onTap:)","abstract":"\u003cp\u003eWraps the element and calls the provided closure when tapped.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE10transition8onAppear0G9Disappear0G6LayoutAD19TransitionContainerVAA010VisibilityK0VSg_AmA0jK0OtF":{"name":"transition(onAppear:onDisappear:onLayout:)","abstract":"\u003cp\u003eWraps the element in a transition container to provide an animated transition.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE10transitionyAD19TransitionContainerVAA010VisibilityG0VF":{"name":"transition(_:)","abstract":"\u003cp\u003eWraps the element in a transition container to provide an animated transition when its visibility changes.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html":{"name":"Element","abstract":"\u003cp\u003eConforming types represent a rectangular content area in a two-dimensional"},"Protocols/ProxyElement.html":{"name":"ProxyElement","abstract":"\u003cp\u003eCustom elements commonly use another element to actually display content. For example, a profile element might"},"Structs/ElementContent.html":{"name":"ElementContent","abstract":"\u003cp\u003eRepresents the content of an element.\u003c/p\u003e"},"Structs/ViewDescription.html":{"name":"ViewDescription","abstract":"\u003cp\u003eContains a \u003cem\u003edescription\u003c/em\u003e of a UIView instance. A description includes"},"Enums/LayoutTransition.html":{"name":"LayoutTransition","abstract":"\u003cp\u003eThe transition used when layout attributes change for a view during an"},"Structs/VisibilityTransition.html":{"name":"VisibilityTransition","abstract":"\u003cp\u003eThe transition used when a view is inserted or removed during an update cycle.\u003c/p\u003e"},"Creating%20Custom%20Elements.html":{"name":"Creating Custom Elements"},"Displaying%20Elements.html":{"name":"Displaying Elements"},"Common%20Elements.html":{"name":"Common Elements"},"Environment.html":{"name":"Environment"},"Classes.html":{"name":"Classes","abstract":"\u003cp\u003eThe following classes are available globally.\u003c/p\u003e"},"Enums.html":{"name":"Enumerations","abstract":"\u003cp\u003eThe following enumerations are available globally.\u003c/p\u003e"},"Extensions.html":{"name":"Extensions","abstract":"\u003cp\u003eThe following extensions are available globally.\u003c/p\u003e"},"Protocols.html":{"name":"Protocols","abstract":"\u003cp\u003eThe following protocols are available globally.\u003c/p\u003e"},"Structs.html":{"name":"Structures","abstract":"\u003cp\u003eThe following structures are available globally.\u003c/p\u003e"},"Typealiases.html":{"name":"Type Aliases","abstract":"\u003cp\u003eThe following type aliases are available globally.\u003c/p\u003e"}} \ No newline at end of file diff --git a/docsets/Blueprint.docset/Contents/Resources/docSet.dsidx b/docsets/Blueprint.docset/Contents/Resources/docSet.dsidx new file mode 100644 index 000000000..9ba41a769 Binary files /dev/null and b/docsets/Blueprint.docset/Contents/Resources/docSet.dsidx differ diff --git a/docsets/Blueprint.tgz b/docsets/Blueprint.tgz new file mode 100644 index 000000000..ae01b7e00 Binary files /dev/null and b/docsets/Blueprint.tgz differ diff --git a/img/carat.png b/img/carat.png new file mode 100755 index 000000000..29d2f7fd4 Binary files /dev/null and b/img/carat.png differ diff --git a/img/dash.png b/img/dash.png new file mode 100755 index 000000000..6f694c7a0 Binary files /dev/null and b/img/dash.png differ diff --git a/img/gh.png b/img/gh.png new file mode 100755 index 000000000..628da97c7 Binary files /dev/null and b/img/gh.png differ diff --git a/img/spinner.gif b/img/spinner.gif new file mode 100644 index 000000000..e3038d0a4 Binary files /dev/null and b/img/spinner.gif differ diff --git a/index.html b/index.html new file mode 100644 index 000000000..8d8e1c4c8 --- /dev/null +++ b/index.html @@ -0,0 +1,753 @@ + + + + Blueprint Reference + + + + + + + + + + + + + + + +
+

+ + Blueprint + + (100% documented) +

+ +
+
+ +
+
+ +

+ + GitHub + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+ +

Build Status

+

Blueprint

+

Declarative UI construction for iOS, written in Swift

+ +

Blueprint greatly simplifies the task of building and updating views as application state changes.

+ +

We still consider Blueprint experimental (and subject to major breaking API changes), but it has been used within Square’s production iOS apps.

+
let rootElement = Label(text: "Hello from Blueprint!")
+let view = BlueprintView(element: rootElement)
+
+ +

Generated documentation is available at square.github.io/Blueprint

+

Getting Started

+

Swift Package Manager

+ +

SwiftPM compatible

+ +

If you are developing your own package, be sure that Blueprint is included in dependencies +in Package.swift:

+
dependencies: [
+    .package(url: "git@github.com:square/Blueprint.git", from: "0.3.0")
+]
+
+ +

In Xcode 11+, add Blueprint directly as a dependency to your project with +File > Swift Packages > Add Package Dependency.... Provide the git URL when prompted: git@github.com:square/Blueprint.git.

+

Cocoapods

+ +

CocoaPods compatible

+ +

If you use CocoaPods to manage your dependencies, simply add BlueprintUI and BlueprintUICommonControls to your +Podfile:

+
pod 'BlueprintUI'
+pod 'BlueprintUICommonControls'
+
+ +
+
What does this library do?
+ +

Blueprint provides an architecture that allows you to:

+ +
    +
  • Declaratively define a UI hierarchy as pure values (Swift structs and enums).
  • +
  • Display that hierarchy within your application.
  • +
  • Update that hierarchy as application state changes (including animated transitions).
  • +
+
When should I use it?
+ +

Use Blueprint any time you want to display a view hierarchy, but don’t want to manage view lifecycle (hint: managing view lifecycle is a large portion of most conventional UIKit code). There are times when you want to manage view lifecycle (complex animations and transitions are a good example), and for these cases you may want to stick with a conventional approach.

+
How does it interact with UIKit?
+ +

Blueprint is not a replacement for UIKit! From the beginning, Blueprint has been designed as a compliment to all of the powerful tools that come with the platform. You can use Blueprint to manage the display of a single view controller, or of a single view representing a small part of the screen. Likewise, it’s straightforward to host standard views and controls within a blueprint hierarchy, always leaving you with an escape hatch.

+ +
+

Documentation

+

Getting Started

+ +
    +
  1. Hello, World

  2. +
  3. The Element Hierarchy

  4. +
  5. Building Custom Elements

  6. +
  7. Layout

  8. +
+

Reference

+ +
    +
  1. Element

  2. +
  3. BlueprintView

  4. +
  5. ViewDescription

  6. +
  7. Transitions

  8. +
+

Tutorials

+ +

Tutorial setup instructions

+ +
    +
  1. Using Blueprint in a View Controller

  2. +
  3. Building a receipt layout with Blueprint

  4. +
+ +
+

Adding Blueprint to an existing project

+ +

Two modules are provided:

+ +
    +
  • BlueprintUI contains the core architecture and layout types.
  • +
  • BlueprintUICommonControls includes elements representing some common UIKit views and controls.
  • +
+ +

Blueprint is available via CocoaPods. Add it to your Podfile to integrate:

+
target MyTarget do
+    pod 'BlueprintUI'
+    pod 'BlueprintUICommonControls'
+end
+
+ +
+ +

Release instructions

+ +
+ +

Copyright 2019 Square, Inc.

+ +

Licensed under the Apache License, Version 2.0 (the “License”); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

+ +

http://www.apache.org/licenses/LICENSE-2.0

+ +

Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an “AS IS” BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

+ +
+
+ + +
+
+ + + diff --git a/js/jazzy.js b/js/jazzy.js new file mode 100755 index 000000000..198441660 --- /dev/null +++ b/js/jazzy.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/js/jazzy.search.js b/js/jazzy.search.js new file mode 100644 index 000000000..359cdbb8b --- /dev/null +++ b/js/jazzy.search.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/js/jquery.min.js b/js/jquery.min.js new file mode 100644 index 000000000..7f37b5d99 --- /dev/null +++ b/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/js/typeahead.jquery.js b/js/typeahead.jquery.js new file mode 100644 index 000000000..3a2d2ab03 --- /dev/null +++ b/js/typeahead.jquery.js @@ -0,0 +1,1694 @@ +/*! + * typeahead.js 1.3.1 + * https://github.com/corejavascript/typeahead.js + * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT + */ + + +(function(root, factory) { + if (typeof define === "function" && define.amd) { + define([ "jquery" ], function(a0) { + return factory(a0); + }); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +})(this, function($) { + var _ = function() { + "use strict"; + return { + isMsie: function() { + return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; + }, + isBlankString: function(str) { + return !str || /^\s*$/.test(str); + }, + escapeRegExChars: function(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + }, + isString: function(obj) { + return typeof obj === "string"; + }, + isNumber: function(obj) { + return typeof obj === "number"; + }, + isArray: $.isArray, + isFunction: $.isFunction, + isObject: $.isPlainObject, + isUndefined: function(obj) { + return typeof obj === "undefined"; + }, + isElement: function(obj) { + return !!(obj && obj.nodeType === 1); + }, + isJQuery: function(obj) { + return obj instanceof $; + }, + toStr: function toStr(s) { + return _.isUndefined(s) || s === null ? "" : s + ""; + }, + bind: $.proxy, + each: function(collection, cb) { + $.each(collection, reverseArgs); + function reverseArgs(index, value) { + return cb(value, index); + } + }, + map: $.map, + filter: $.grep, + every: function(obj, test) { + var result = true; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (!(result = test.call(null, val, key, obj))) { + return false; + } + }); + return !!result; + }, + some: function(obj, test) { + var result = false; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (result = test.call(null, val, key, obj)) { + return false; + } + }); + return !!result; + }, + mixin: $.extend, + identity: function(x) { + return x; + }, + clone: function(obj) { + return $.extend(true, {}, obj); + }, + getIdGenerator: function() { + var counter = 0; + return function() { + return counter++; + }; + }, + templatify: function templatify(obj) { + return $.isFunction(obj) ? obj : template; + function template() { + return String(obj); + } + }, + defer: function(fn) { + setTimeout(fn, 0); + }, + debounce: function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments, later, callNow; + later = function() { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + throttle: function(func, wait) { + var context, args, timeout, result, previous, later; + previous = 0; + later = function() { + previous = new Date(); + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date(), remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }, + stringify: function(val) { + return _.isString(val) ? val : JSON.stringify(val); + }, + guid: function() { + function _p8(s) { + var p = (Math.random().toString(16) + "000000000").substr(2, 8); + return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; + } + return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); + }, + noop: function() {} + }; + }(); + var WWW = function() { + "use strict"; + var defaultClassNames = { + wrapper: "twitter-typeahead", + input: "tt-input", + hint: "tt-hint", + menu: "tt-menu", + dataset: "tt-dataset", + suggestion: "tt-suggestion", + selectable: "tt-selectable", + empty: "tt-empty", + open: "tt-open", + cursor: "tt-cursor", + highlight: "tt-highlight" + }; + return build; + function build(o) { + var www, classes; + classes = _.mixin({}, defaultClassNames, o); + www = { + css: buildCss(), + classes: classes, + html: buildHtml(classes), + selectors: buildSelectors(classes) + }; + return { + css: www.css, + html: www.html, + classes: www.classes, + selectors: www.selectors, + mixin: function(o) { + _.mixin(o, www); + } + }; + } + function buildHtml(c) { + return { + wrapper: '', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + var id; + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$menu = $(o.menu); + id = this.$input.attr("id") || _.guid(); + this.$menu.attr("id", id + "_listbox"); + this.$hint.attr({ + "aria-hidden": true + }); + this.$input.attr({ + "aria-owns": id + "_listbox", + role: "combobox", + "aria-autocomplete": "list", + "aria-expanded": false + }); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + }, + setAriaExpanded: function setAriaExpanded(value) { + this.$input.attr("aria-expanded", value); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate + }; + function userSuggestionTemplate(context) { + var template = templates.suggestion; + return $(template(context)).attr("id", _.guid()); + } + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if (this.autoselect) { + if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.input.setAriaExpanded(true); + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.input.setAriaExpanded(false); + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + if (typeof data.val === "string") { + this.input.setInputValue(data.val); + } + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input, + menu: $menu + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/search.json b/search.json new file mode 100644 index 000000000..bd22c5142 --- /dev/null +++ b/search.json @@ -0,0 +1 @@ +{"Typealiases.html#/s:11BlueprintUI14ElementBuildera":{"name":"ElementBuilder","abstract":"\u003cp\u003eResult builder for working with elements that conform to \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/ElementBuilderChild.html\"\u003eElementBuilderChild\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Typealiases.html#/s:11BlueprintUI17LayoutSubelementsa":{"name":"LayoutSubelements","abstract":"\u003cp\u003eA collection of proxy values that represent the child elements of a layout.\u003c/p\u003e"},"Typealiases.html#/s:11BlueprintUI17LifecycleCallbacka":{"name":"LifecycleCallback","abstract":"\u003cp\u003eThis is the type used by all lifecycle callback hooks.\u003c/p\u003e"},"Structs/TextShadow.html#/s:25BlueprintUICommonControls10TextShadowV6radius14CoreFoundation7CGFloatVvp":{"name":"radius","abstract":"\u003cp\u003eThe blur radius of the shadow.\u003c/p\u003e","parent_name":"TextShadow"},"Structs/TextShadow.html#/s:25BlueprintUICommonControls10TextShadowV7opacity14CoreFoundation7CGFloatVvp":{"name":"opacity","abstract":"\u003cp\u003eThe opacity of the shadow.\u003c/p\u003e","parent_name":"TextShadow"},"Structs/TextShadow.html#/s:25BlueprintUICommonControls10TextShadowV6offsetSo8UIOffsetVvp":{"name":"offset","abstract":"\u003cp\u003eThe offset of the shadow.\u003c/p\u003e","parent_name":"TextShadow"},"Structs/TextShadow.html#/s:25BlueprintUICommonControls10TextShadowV5colorSo7UIColorCvp":{"name":"color","abstract":"\u003cp\u003eThe color of the shadow.\u003c/p\u003e","parent_name":"TextShadow"},"Structs/TextShadow.html#/s:25BlueprintUICommonControls10TextShadowV6radius7opacity6offset5colorAC14CoreFoundation7CGFloatV_AJSo8UIOffsetVSo7UIColorCtcfc":{"name":"init(radius:opacity:offset:color:)","parent_name":"TextShadow"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO3cutyA2GmF":{"name":"cut","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO4copyyA2GmF":{"name":"copy","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO5pasteyA2GmF":{"name":"paste","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO6deleteyA2GmF":{"name":"delete","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO6selectyA2GmF":{"name":"select","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO9selectAllyA2GmF":{"name":"selectAll","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO14toggleBoldfaceyA2GmF":{"name":"toggleBoldface","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO13toggleItalicsyA2GmF":{"name":"toggleItalics","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO15toggleUnderlineyA2GmF":{"name":"toggleUnderline","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO12increaseSizeyA2GmF":{"name":"increaseSize","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO12decreaseSizeyA2GmF":{"name":"decreaseSize","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO12printContentyA2GmF":{"name":"printContent","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO10pasteAndGoyA2GmF":{"name":"pasteAndGo","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO18pasteAndMatchStyleyA2GmF":{"name":"pasteAndMatchStyle","parent_name":"System"},"Structs/EditingMenuItem/Kind/System.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6SystemO14pasteAndSearchyA2GmF":{"name":"pasteAndSearch","parent_name":"System"},"Structs/EditingMenuItem/Kind.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6systemyA2E6SystemOcAEmF":{"name":"system(_:)","abstract":"\u003cp\u003eA standard system item.\u003c/p\u003e","parent_name":"Kind"},"Structs/EditingMenuItem/Kind.html#/s:25BlueprintUICommonControls15EditingMenuItemV4KindO6customyAESScAEmF":{"name":"custom(_:)","abstract":"\u003cp\u003eA custom item with a custom title.\u003c/p\u003e","parent_name":"Kind"},"Structs/EditingMenuItem/Kind/System.html":{"name":"System","abstract":"\u003cp\u003eThe system menu item kinds supported by an editing menu.\u003c/p\u003e","parent_name":"Kind"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV4kindAC4KindOvp":{"name":"kind","abstract":"\u003cp\u003eThe type of menu item.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV8onSelectyycvp":{"name":"onSelect","abstract":"\u003cp\u003eA callback, invoked when the user selects the menu item.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV5title8onSelectACSS_yyctcfc":{"name":"init(title:onSelect:)","abstract":"\u003cp\u003eCreates a new menu item of the given kind.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV_8onSelectA2C4KindO6SystemO_yyctcfc":{"name":"init(_:onSelect:)","abstract":"\u003cp\u003eCreates a new menu item of the given kind.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV7copying_2toACSS_So12UIPasteboardCSgtFZ":{"name":"copying(_:to:)","abstract":"\u003cp\u003eA \u003ccode\u003e.copy\u003c/code\u003e type item, which will copy the given string to the provided pasteboard.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV7copying_2toACSo7UIImageC_So12UIPasteboardCSgtFZ":{"name":"copying(_:to:)","abstract":"\u003cp\u003eA \u003ccode\u003e.copy\u003c/code\u003e type item, which will copy the given image to the provided pasteboard.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem.html#/s:25BlueprintUICommonControls15EditingMenuItemV7copying_2toAC10Foundation3URLV_So12UIPasteboardCSgtFZ":{"name":"copying(_:to:)","abstract":"\u003cp\u003eA \u003ccode\u003e.copy\u003c/code\u003e type item, which will copy the given url to the provided pasteboard.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenuItem/Kind.html":{"name":"Kind","abstract":"\u003cp\u003eThe menu item types you may place into a menu.\u003c/p\u003e","parent_name":"EditingMenuItem"},"Structs/EditingMenu/MenuTrigger.html#/s:25BlueprintUICommonControls11EditingMenuV0E7TriggerC4showyyF":{"name":"show()","abstract":"\u003cp\u003eCall this method to show the menu.\u003c/p\u003e","parent_name":"MenuTrigger"},"Structs/EditingMenu/Gesture.html#/s:25BlueprintUICommonControls11EditingMenuV7GestureO5onTapyA2EmF":{"name":"onTap","abstract":"\u003cp\u003eThe menu will be shown when the element is tapped.\u003c/p\u003e","parent_name":"Gesture"},"Structs/EditingMenu/Gesture.html#/s:25BlueprintUICommonControls11EditingMenuV7GestureO11onLongPressyA2EmF":{"name":"onLongPress","abstract":"\u003cp\u003eThe menu will be shown when the element is long pressed.\u003c/p\u003e","parent_name":"Gesture"},"Structs/EditingMenu.html#/s:25BlueprintUICommonControls11EditingMenuV7wrapped0A2UI7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe wrapped element to display.\u003c/p\u003e","parent_name":"EditingMenu"},"Structs/EditingMenu.html#/s:25BlueprintUICommonControls11EditingMenuV5itemsSayAA0dE4ItemVGvp":{"name":"items","abstract":"\u003cp\u003eThe editing items to show in the editing menu.\u003c/p\u003e","parent_name":"EditingMenu"},"Structs/EditingMenu.html#/s:25BlueprintUICommonControls11EditingMenuV4show8wrapping4withA2C7GestureO_0A2UI7Element_pSayAA0dE4ItemVGyXEtcfc":{"name":"init(show:wrapping:with:)","abstract":"\u003cp\u003eCreates a new editing menu, wrapping the provided element, and displaying the provided items.\u003c/p\u003e","parent_name":"EditingMenu"},"Structs/EditingMenu.html#/s:25BlueprintUICommonControls11EditingMenuV8wrapping5itemsAC0A2UI7Element_pAC0E7TriggerCXE_SayAA0dE4ItemVGyXEtcfc":{"name":"init(wrapping:items:)","abstract":"\u003cp\u003eCreates a new editing menu, wrapping the provided element, and displaying the provided items.\u003c/p\u003e","parent_name":"EditingMenu"},"Structs/EditingMenu.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"EditingMenu"},"Structs/EditingMenu.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"EditingMenu"},"Structs/EditingMenu/Gesture.html":{"name":"Gesture","abstract":"\u003cp\u003eThe gesture to use to show the menu.\u003c/p\u003e","parent_name":"EditingMenu"},"Structs/EditingMenu/MenuTrigger.html":{"name":"MenuTrigger","abstract":"\u003cp\u003eA trigger that you can use to show the menu based on the result of some other","parent_name":"EditingMenu"},"Structs/URLHandlerEnvironmentKey.html#/s:11BlueprintUI14EnvironmentKeyP12defaultValue0F0QzvpZ":{"name":"defaultValue","parent_name":"URLHandlerEnvironmentKey"},"Structs/AccessibilityFocus/Trigger.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7TriggerC16notificationTypeSo28UIAccessibilityNotificationsavp":{"name":"notificationType","abstract":"\u003cp\u003eThe type of accessibility notification that will be triggered.\u003c/p\u003e","parent_name":"Trigger"},"Structs/AccessibilityFocus/Trigger.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7TriggerC10identifiers11AnyHashableVSgvp":{"name":"identifier","abstract":"\u003cp\u003eAn optional identifier for the trigger.\u003c/p\u003e","parent_name":"Trigger"},"Structs/AccessibilityFocus/Trigger.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7TriggerC16notificationType10identifierAESo28UIAccessibilityNotificationsa_s11AnyHashableVSgtcfc":{"name":"init(notificationType:identifier:)","abstract":"\u003cp\u003eCreates a new trigger for the purpose of changing accessibility focus.\u003c/p\u003e","parent_name":"Trigger"},"Structs/AccessibilityFocus/Trigger.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7TriggerC5focusyyF":{"name":"focus()","abstract":"\u003cp\u003eManually fire the trigger\u003c/p\u003e","parent_name":"Trigger"},"Structs/AccessibilityFocus.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7wrapped0A2UI7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe element that will have the focus.\u003c/p\u003e","parent_name":"AccessibilityFocus"},"Structs/AccessibilityFocus.html#/s:25BlueprintUICommonControls18AccessibilityFocusV7triggerAC7TriggerCvp":{"name":"trigger","abstract":"\u003cp\u003eA object that can be held on to by the caller to manually trigger a focus.\u003c/p\u003e","parent_name":"AccessibilityFocus"},"Structs/AccessibilityFocus.html#/s:25BlueprintUICommonControls18AccessibilityFocusV8wrapping7triggerAC0A2UI7Element_p_AC7TriggerCtcfc":{"name":"init(wrapping:trigger:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eAccessibilityFocus\u003c/code\u003e wrapping the provided element.\u003c/p\u003e","parent_name":"AccessibilityFocus"},"Structs/AccessibilityFocus.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AccessibilityFocus"},"Structs/AccessibilityFocus.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AccessibilityFocus"},"Structs/AccessibilityFocus/Trigger.html":{"name":"Trigger","abstract":"\u003cp\u003eA trigger that can be used to manually fire an accessibility focus.\u003c/p\u003e","parent_name":"AccessibilityFocus"},"Structs/AnimationAttributes.html#/s:11BlueprintUI19AnimationAttributesV8durationSdvp":{"name":"duration","abstract":"\u003cp\u003eThe duration of the animation.\u003c/p\u003e","parent_name":"AnimationAttributes"},"Structs/AnimationAttributes.html#/s:11BlueprintUI19AnimationAttributesV5curveSo06UIViewC5CurveVvp":{"name":"curve","abstract":"\u003cp\u003eThe timing curve of the animation.\u003c/p\u003e","parent_name":"AnimationAttributes"},"Structs/AnimationAttributes.html#/s:11BlueprintUI19AnimationAttributesV20allowUserInteractionSbvp":{"name":"allowUserInteraction","abstract":"\u003cp\u003eWhether the view supports user interaction during the animation.\u003c/p\u003e","parent_name":"AnimationAttributes"},"Structs/AnimationAttributes.html#/s:11BlueprintUI19AnimationAttributesV7defaultACvpZ":{"name":"default","parent_name":"AnimationAttributes"},"Structs/AnimationAttributes.html#/s:11BlueprintUI19AnimationAttributesV8duration5curve20allowUserInteractionACSd_So06UIViewC5CurveVSbtcfc":{"name":"init(duration:curve:allowUserInteraction:)","parent_name":"AnimationAttributes"},"Structs/SizeConstraint/UnconstrainedInfiniteAxis.html#/s:11BlueprintUI14SizeConstraintV25UnconstrainedInfiniteAxisV12wrappedValueAC0G0Ovp":{"name":"wrappedValue","parent_name":"UnconstrainedInfiniteAxis"},"Structs/SizeConstraint/UnconstrainedInfiniteAxis.html#/s:11BlueprintUI14SizeConstraintV25UnconstrainedInfiniteAxisV12wrappedValueAeC0G0O_tcfc":{"name":"init(wrappedValue:)","parent_name":"UnconstrainedInfiniteAxis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO6atMostyAE14CoreFoundation7CGFloatVcAEmF":{"name":"atMost(_:)","abstract":"\u003cp\u003eThe measurement should treat the associated value as the largest","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO13unconstrainedyA2EmF":{"name":"unconstrained","abstract":"\u003cp\u003eThe measurement is unconstrained in the given dimension.\u003c/p\u003e","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO7maximum14CoreFoundation7CGFloatVvp":{"name":"maximum","abstract":"\u003cp\u003eThe maximum magnitude in the given dimension.\u003c/p\u003e","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO7minimum14CoreFoundation7CGFloatVvp":{"name":"minimum","abstract":"\u003cp\u003eThe minimum magnitude in the given dimension.\u003c/p\u003e","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO16constrainedValue14CoreFoundation7CGFloatVSgvp":{"name":"constrainedValue","abstract":"\u003cp\u003eThe constraint value in this dimension, or \u003ccode\u003enil\u003c/code\u003e if this dimension is unconstrained.\u003c/p\u003e","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO1poiyA2E_14CoreFoundation7CGFloatVtFZ":{"name":"+(_:_:)","abstract":"\u003cp\u003eAdds a scalar value to an Axis. If the Axis is unconstrained the","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO1soiyA2E_14CoreFoundation7CGFloatVtFZ":{"name":"-(_:_:)","abstract":"\u003cp\u003eSubtracts a scalar value from an Axis. If the Axis is unconstrained","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO1doiyA2E_14CoreFoundation7CGFloatVtFZ":{"name":"/(_:_:)","abstract":"\u003cp\u003eDivides an Axis by a scalar value. If the Axis is unconstrained the","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO1moiyA2E_14CoreFoundation7CGFloatVtFZ":{"name":"*(_:_:)","abstract":"\u003cp\u003eMultiplies an Axis by a scalar value. If the Axis is unconstrained","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO17isGreaterThanZeroSbvp":{"name":"isGreaterThanZero","abstract":"\u003cp\u003eIf the \u003ccode\u003eAxis\u003c/code\u003e is greater than zero.\u003c/p\u003e","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO2peoiyyAEz_14CoreFoundation7CGFloatVtFZ":{"name":"+=(_:_:)","abstract":"\u003cp\u003eAdds a scalar value to an Axis. If the Axis is unconstrained the","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO2seoiyyAEz_14CoreFoundation7CGFloatVtFZ":{"name":"-=(_:_:)","abstract":"\u003cp\u003eSubtracts a scalar value from an Axis. If the Axis is unconstrained","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO2deoiyyAEz_14CoreFoundation7CGFloatVtFZ":{"name":"/=(_:_:)","abstract":"\u003cp\u003eDivides an Axis by a scalar value. If the Axis is unconstrained the","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:11BlueprintUI14SizeConstraintV4AxisO2meoiyyAEz_14CoreFoundation7CGFloatVtFZ":{"name":"*=(_:_:)","abstract":"\u003cp\u003eMultiplies an Axis by a scalar value. If the Axis is unconstrained","parent_name":"Axis"},"Structs/SizeConstraint/Axis.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"Axis"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV5widthAC4AxisOvp":{"name":"width","abstract":"\u003cp\u003eThe width constraint.\u003c/p\u003e","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV6heightAC4AxisOvp":{"name":"height","abstract":"\u003cp\u003eThe height constraint.\u003c/p\u003e","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV5width6heightA2C4AxisO_AGtcfc":{"name":"init(width:height:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV13unconstrainedACvpZ":{"name":"unconstrained","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintVyACSo6CGSizeVcfc":{"name":"init(_:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV5widthAC14CoreFoundation7CGFloatV_tcfc":{"name":"init(width:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV6heightAC14CoreFoundation7CGFloatV_tcfc":{"name":"init(height:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV7minimumSo6CGSizeVvp":{"name":"minimum","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV7maximumSo6CGSizeVvp":{"name":"maximum","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV5inset5width6heightAC14CoreFoundation7CGFloatV_AItF":{"name":"inset(width:height:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint.html#/s:11BlueprintUI14SizeConstraintV5inset2byACSo12UIEdgeInsetsV_tF":{"name":"inset(by:)","parent_name":"SizeConstraint"},"Structs/SizeConstraint/Axis.html":{"name":"Axis","abstract":"\u003cp\u003eRepresents a size constraint for a single axis.\u003c/p\u003e","parent_name":"SizeConstraint"},"Structs/SizeConstraint/UnconstrainedInfiniteAxis.html":{"name":"UnconstrainedInfiniteAxis","abstract":"\u003cp\u003eThis property wrapper checks the value of \u003ccode\u003eatMost\u003c/code\u003e cases, and turns it into an","parent_name":"SizeConstraint"},"Structs/UserInteractionEnabled.html#/s:11BlueprintUI22UserInteractionEnabledV02isE0Sbvp":{"name":"isEnabled","parent_name":"UserInteractionEnabled"},"Structs/UserInteractionEnabled.html#/s:11BlueprintUI22UserInteractionEnabledV14wrappedElementAA0G0_pvp":{"name":"wrappedElement","parent_name":"UserInteractionEnabled"},"Structs/UserInteractionEnabled.html#/s:11BlueprintUI22UserInteractionEnabledV_8wrappingACSb_AA7Element_ptcfc":{"name":"init(_:wrapping:)","parent_name":"UserInteractionEnabled"},"Structs/UserInteractionEnabled.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"UserInteractionEnabled"},"Structs/UserInteractionEnabled.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"UserInteractionEnabled"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV1x14CoreFoundation7CGFloatVvp":{"name":"x","abstract":"\u003cp\u003eThe normalized distance from the origin to the point in the horizontal direction.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV1y14CoreFoundation7CGFloatVvp":{"name":"y","abstract":"\u003cp\u003eThe normalized distance from the origin to the point in the vertical direction.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV1x1yAC14CoreFoundation7CGFloatV_AHtcfc":{"name":"init(x:y:)","abstract":"\u003cp\u003eCreates a unit point with the specified horizontal and vertical offsets.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV4zeroACvpZ":{"name":"zero","abstract":"\u003cp\u003eThe origin of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV6centerACvpZ":{"name":"center","abstract":"\u003cp\u003eA point that’s centered in an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV7leadingACvpZ":{"name":"leading","abstract":"\u003cp\u003eA point that’s centered vertically on the leading edge of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV8trailingACvpZ":{"name":"trailing","abstract":"\u003cp\u003eA point that’s centered vertically on the trailing edge of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV3topACvpZ":{"name":"top","abstract":"\u003cp\u003eA point that’s centered horizontally on the top edge of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV6bottomACvpZ":{"name":"bottom","abstract":"\u003cp\u003eA point that’s centered horizontally on the bottom edge of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV10topLeadingACvpZ":{"name":"topLeading","abstract":"\u003cp\u003eA point that’s in the top leading corner of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV11topTrailingACvpZ":{"name":"topTrailing","abstract":"\u003cp\u003eA point that’s in the top trailing corner of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV13bottomLeadingACvpZ":{"name":"bottomLeading","abstract":"\u003cp\u003eA point that’s in the bottom leading corner of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/UnitPoint.html#/s:11BlueprintUI9UnitPointV14bottomTrailingACvpZ":{"name":"bottomTrailing","abstract":"\u003cp\u003eA point that’s in the bottom trailing corner of an element.\u003c/p\u003e","parent_name":"UnitPoint"},"Structs/Transformed.html#/s:11BlueprintUI11TransformedV14wrappedElementAA0E0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe content element whose transform is being affected.\u003c/p\u003e","parent_name":"Transformed"},"Structs/Transformed.html#/s:11BlueprintUI11TransformedV9transformSo13CATransform3DVvp":{"name":"transform","abstract":"\u003cp\u003eThe transform of the wrapped element.\u003c/p\u003e","parent_name":"Transformed"},"Structs/Transformed.html#/s:11BlueprintUI11TransformedV9transform8wrappingACSo13CATransform3DV_AA7Element_ptcfc":{"name":"init(transform:wrapping:)","abstract":"\u003cp\u003eInitializes a \u003ccode\u003eTransformed\u003c/code\u003e with the given content element and 3D transform.\u003c/p\u003e","parent_name":"Transformed"},"Structs/Transformed.html#/s:11BlueprintUI11TransformedV9transform8wrappingACSo17CGAffineTransformV_AA7Element_ptcfc":{"name":"init(transform:wrapping:)","abstract":"\u003cp\u003eInitializes a \u003ccode\u003eTransformed\u003c/code\u003e with the given content element and DD transform.\u003c/p\u003e","parent_name":"Transformed"},"Structs/Transformed.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Transformed"},"Structs/Transformed.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Transformed"},"Structs/TintAdjustmentMode.html#/s:11BlueprintUI18TintAdjustmentModeV04tintdE0So06UIViewcdE0Vvp":{"name":"tintAdjustmentMode","parent_name":"TintAdjustmentMode"},"Structs/TintAdjustmentMode.html#/s:11BlueprintUI18TintAdjustmentModeV14wrappedElementAA0G0_pvp":{"name":"wrappedElement","parent_name":"TintAdjustmentMode"},"Structs/TintAdjustmentMode.html#/s:11BlueprintUI18TintAdjustmentModeV_8wrappingACSo06UIViewcdE0V_AA7Element_ptcfc":{"name":"init(_:wrapping:)","parent_name":"TintAdjustmentMode"},"Structs/TintAdjustmentMode.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"TintAdjustmentMode"},"Structs/TintAdjustmentMode.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"TintAdjustmentMode"},"Structs/StackLayout/Child/Priority.html#/s:11BlueprintUI11StackLayoutV5ChildV8PriorityO5fixedyA2GmF":{"name":"fixed","abstract":"\u003cp\u003eThe element has a fixed size, with a grow and shrink priority of 0.","parent_name":"Priority"},"Structs/StackLayout/Child/Priority.html#/s:11BlueprintUI11StackLayoutV5ChildV8PriorityO8flexibleyA2GmF":{"name":"flexible","abstract":"\u003cp\u003eThe element has a flexible size, with a grow and shrink priority of 1.","parent_name":"Priority"},"Structs/StackLayout/Child/Priority.html#/s:11BlueprintUI11StackLayoutV5ChildV8PriorityO5growsyA2GmF":{"name":"grows","abstract":"\u003cp\u003eThe element has a flexible size, it will grow if the stack underflows,","parent_name":"Priority"},"Structs/StackLayout/Child/Priority.html#/s:11BlueprintUI11StackLayoutV5ChildV8PriorityO7shrinksyA2GmF":{"name":"shrinks","abstract":"\u003cp\u003eThe element has a flexible size, it will shrink if the stack overflows,","parent_name":"Priority"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildV7elementAA7Element_pvp":{"name":"element","parent_name":"Child"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildV6traitsAC6TraitsVvp":{"name":"traits","parent_name":"Child"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildV3keys11AnyHashableVSgvp":{"name":"key","parent_name":"Child"},"Structs/StackLayout/Child/Priority.html":{"name":"Priority","parent_name":"Child"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildV7element6traits3keyAeA7Element_p_AC6TraitsVs11AnyHashableVSgtcfc":{"name":"init(element:traits:key:)","parent_name":"Child"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildV7element8priority14alignmentGuide3keyAeA7Element_p_AE8PriorityO14CoreFoundation7CGFloatVAA0K10DimensionsVcSgs11AnyHashableVSgtcfc":{"name":"init(element:priority:alignmentGuide:key:)","parent_name":"Child"},"Structs/StackLayout/Child.html#/s:11BlueprintUI11StackLayoutV5ChildVyAeA7Element_pcfc":{"name":"init(_:)","parent_name":"Child"},"Structs/StackLayout/Alignment.html#/s:11BlueprintUI11StackLayoutV9AlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eChildren will be stretched to the size of the stack.\u003c/p\u003e","parent_name":"Alignment"},"Structs/StackLayout/Alignment.html#/s:11BlueprintUI11StackLayoutV9AlignmentO5alignyAeA0E2ID_pXp_tcAEmF":{"name":"align(to:)","abstract":"\u003cp\u003eChildren will be aligned relatively to each other, and then all the contents will be","parent_name":"Alignment"},"Structs/StackLayout/OverflowDistribution.html#/s:11BlueprintUI11StackLayoutV20OverflowDistributionO22condenseProportionallyyA2EmF":{"name":"condenseProportionally","abstract":"\u003cp\u003eEach child will shrink proportionally to its measured size.\u003c/p\u003e","parent_name":"OverflowDistribution"},"Structs/StackLayout/OverflowDistribution.html#/s:11BlueprintUI11StackLayoutV20OverflowDistributionO17condenseUniformlyyA2EmF":{"name":"condenseUniformly","abstract":"\u003cp\u003eEach child will shrink by the same amount.\u003c/p\u003e","parent_name":"OverflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO11spaceEvenlyyA2EmF":{"name":"spaceEvenly","abstract":"\u003cp\u003eAdditional space will be evenly divided into the spacing between items.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO18growProportionallyyA2EmF":{"name":"growProportionally","abstract":"\u003cp\u003eAdditional space will be divided proportionally by the measured size of each child.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO13growUniformlyyA2EmF":{"name":"growUniformly","abstract":"\u003cp\u003eAdditional space will be distributed uniformly between children.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO14justifyToStartyA2EmF":{"name":"justifyToStart","abstract":"\u003cp\u003eAdditional space will appear after all children.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO15justifyToCenteryA2EmF":{"name":"justifyToCenter","abstract":"\u003cp\u003eAdditional space will be distributed on either side of all children.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/UnderflowDistribution.html#/s:11BlueprintUI11StackLayoutV21UnderflowDistributionO12justifyToEndyA2EmF":{"name":"justifyToEnd","abstract":"\u003cp\u003eAdditional space will be appear before all children.\u003c/p\u003e","parent_name":"UnderflowDistribution"},"Structs/StackLayout/Axis.html#/s:11BlueprintUI11StackLayoutV4AxisO10horizontalyA2EmF":{"name":"horizontal","parent_name":"Axis"},"Structs/StackLayout/Axis.html#/s:11BlueprintUI11StackLayoutV4AxisO8verticalyA2EmF":{"name":"vertical","parent_name":"Axis"},"Structs/StackLayout/Traits.html#/s:11BlueprintUI11StackLayoutV6TraitsV12growPriority14CoreFoundation7CGFloatVvp":{"name":"growPriority","abstract":"\u003cp\u003eControls the amount of extra space distributed to this child during underflow.\u003c/p\u003e","parent_name":"Traits"},"Structs/StackLayout/Traits.html#/s:11BlueprintUI11StackLayoutV6TraitsV14shrinkPriority14CoreFoundation7CGFloatVvp":{"name":"shrinkPriority","abstract":"\u003cp\u003eControls the amount of space allowed for this child during overflow.\u003c/p\u003e","parent_name":"Traits"},"Structs/StackLayout/Traits.html#/s:11BlueprintUI11StackLayoutV6TraitsV14alignmentGuideAC09AlignmentG0VSgvp":{"name":"alignmentGuide","abstract":"\u003cp\u003eAllows for custom alignment of a child along the cross axis.\u003c/p\u003e","parent_name":"Traits"},"Structs/StackLayout/Traits.html#/s:11BlueprintUI11StackLayoutV6TraitsV12growPriority06shrinkG014alignmentGuideAE14CoreFoundation7CGFloatV_AkC09AlignmentJ0VSgtcfc":{"name":"init(growPriority:shrinkPriority:alignmentGuide:)","abstract":"\u003cp\u003eCreates a new set of traits with default values.\u003c/p\u003e","parent_name":"Traits"},"Structs/StackLayout/AlignmentGuide.html#/s:11BlueprintUI11StackLayoutV14AlignmentGuideV12computeValuey14CoreFoundation7CGFloatVAA17ElementDimensionsVcvp":{"name":"computeValue","abstract":"\u003cp\u003eReturns a value along the stack\u0026rsquo;s cross axis, in the element\u0026rsquo;s own coordinate space,","parent_name":"AlignmentGuide"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV13defaultTraitsAC0F0VvpZ":{"name":"defaultTraits","abstract":"\u003cp\u003eThe default traits for a child contained within a stack layout\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout/AlignmentGuide.html":{"name":"AlignmentGuide","abstract":"\u003cp\u003eDetermines how a stack child will be aligned on the cross axis relative to other children.\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout/Traits.html":{"name":"Traits","abstract":"\u003cp\u003eContains traits that affect the layout of individual children in the stack.\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV4axisAC4AxisOvp":{"name":"axis","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV9underflowAC21UnderflowDistributionOvp":{"name":"underflow","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV8overflowAC20OverflowDistributionOvp":{"name":"overflow","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV9alignmentAC9AlignmentOvp":{"name":"alignment","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV14minimumSpacing14CoreFoundation7CGFloatVvp":{"name":"minimumSpacing","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI11StackLayoutV4axis9alignmentA2C4AxisO_AC9AlignmentOtcfc":{"name":"init(axis:alignment:)","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI12LegacyLayoutP7measure2in5itemsSo6CGSizeVAA14SizeConstraintV_Say6TraitsQz6traits_AA10Measurable_p7contenttGtF":{"name":"measure(in:items:)","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI12LegacyLayoutP6layout4size5itemsSayAA0D10AttributesVGSo6CGSizeV_Say6TraitsQz6traits_AA10Measurable_p7contenttGtF":{"name":"layout(size:items:)","parent_name":"StackLayout"},"Structs/StackLayout/Axis.html":{"name":"Axis","abstract":"\u003cp\u003eThe direction of the stack.\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout/UnderflowDistribution.html":{"name":"UnderflowDistribution","abstract":"\u003cp\u003eDetermines the on-axis layout when there is extra free space available.\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout/OverflowDistribution.html":{"name":"OverflowDistribution","abstract":"\u003cp\u003eDetermines the on-axis layout when there is not enough space to fit all children as measured.\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout/Alignment.html":{"name":"Alignment","abstract":"\u003cp\u003eDetermines the cross-axis layout (height for a horizontal stack, width for a vertical stack).\u003c/p\u003e","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP12sizeThatFits8proposal11subelements11environment5cacheSo6CGSizeVAA14SizeConstraintV_SayAA0D10SubelementVGAA11EnvironmentV5CacheQzztF":{"name":"sizeThatFits(proposal:subelements:environment:cache:)","parent_name":"StackLayout"},"Structs/StackLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP16placeSubelements2in11subelements11environment5cacheySo6CGSizeV_SayAA0D10SubelementVGAA11EnvironmentV5CacheQzztF":{"name":"placeSubelements(in:subelements:environment:cache:)","parent_name":"StackLayout"},"Structs/StackLayout/Child.html":{"name":"Child","parent_name":"StackLayout"},"Structs/Opacity.html#/s:11BlueprintUI7OpacityV14wrappedElementAA0E0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe content element whose opacity is being affected.\u003c/p\u003e","parent_name":"Opacity"},"Structs/Opacity.html#/s:11BlueprintUI7OpacityV7opacity14CoreFoundation7CGFloatVvp":{"name":"opacity","abstract":"\u003cp\u003eThe opacity of the wrapped element.\u003c/p\u003e","parent_name":"Opacity"},"Structs/Opacity.html#/s:11BlueprintUI7OpacityV7opacity8wrappingAC14CoreFoundation7CGFloatV_AA7Element_ptcfc":{"name":"init(opacity:wrapping:)","abstract":"\u003cp\u003eInitializes an \u003ccode\u003eOpacity\u003c/code\u003e with the given content element and opacity.\u003c/p\u003e","parent_name":"Opacity"},"Structs/Opacity.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Opacity"},"Structs/Opacity.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Opacity"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV7wrappedAA7Element_pvp":{"name":"wrapped","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV8onAppearyycSgvp":{"name":"onAppear","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV11onDisappearyycSgvp":{"name":"onDisappear","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV8onAppear0E9Disappear8wrappingACyycSg_AgA7Element_ptcfc":{"name":"init(onAppear:onDisappear:wrapping:)","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV8onAppearyACyycF":{"name":"onAppear(_:)","abstract":"\u003cp\u003eAdds a hook that will be called when this element appears.\u003c/p\u003e","parent_name":"LifecycleObserver"},"Structs/LifecycleObserver.html#/s:11BlueprintUI17LifecycleObserverV11onDisappearyACyycF":{"name":"onDisappear(_:)","abstract":"\u003cp\u003eAdds a hook that will be called when this element disappears.\u003c/p\u003e","parent_name":"LifecycleObserver"},"Structs/LayoutWriter/Child.html#/s:11BlueprintUI12LayoutWriterV5ChildV5frameSo6CGRectVvp":{"name":"frame","abstract":"\u003cp\u003eThe frame of the element in the coordinate space of the custom layout.\u003c/p\u003e","parent_name":"Child"},"Structs/LayoutWriter/Child.html#/s:11BlueprintUI12LayoutWriterV5ChildV3keys11AnyHashableVSgvp":{"name":"key","abstract":"\u003cp\u003eThe key to use to disambiguate this element.\u003c/p\u003e","parent_name":"Child"},"Structs/LayoutWriter/Child.html#/s:11BlueprintUI12LayoutWriterV5ChildV7elementAA7Element_pvp":{"name":"element","abstract":"\u003cp\u003eThe element to be displayed.\u003c/p\u003e","parent_name":"Child"},"Structs/LayoutWriter/Child.html#/s:11BlueprintUI12LayoutWriterV5ChildV5frame3key7elementAESo6CGRectV_s11AnyHashableVSgAA7Element_ptcfc":{"name":"init(frame:key:element:)","abstract":"\u003cp\u003eCreates a new child element.\u003c/p\u003e","parent_name":"Child"},"Structs/LayoutWriter/Sizing.html#/s:11BlueprintUI12LayoutWriterV6SizingO15unionOfChildrenyA2EmF":{"name":"unionOfChildren","abstract":"\u003cp\u003eEnsures that the final size of element is large enough to fit all children, starting from (0,0).\u003c/p\u003e","parent_name":"Sizing"},"Structs/LayoutWriter/Sizing.html#/s:11BlueprintUI12LayoutWriterV6SizingO5fixedyAESo6CGSizeVcAEmF":{"name":"fixed(_:)","abstract":"\u003cp\u003eFixes the layout size to the provided size. Children are positioned within this size, starting at (0,0)","parent_name":"Sizing"},"Structs/LayoutWriter/Context/LayoutPhase.html#/s:11BlueprintUI12LayoutWriterV7ContextV0C5PhaseO11measurementyA2GmF":{"name":"measurement","abstract":"\u003cp\u003eThe element is being measured.\u003c/p\u003e","parent_name":"LayoutPhase"},"Structs/LayoutWriter/Context/LayoutPhase.html#/s:11BlueprintUI12LayoutWriterV7ContextV0C5PhaseO6layoutyAGSo6CGSizeVcAGmF":{"name":"layout(_:)","abstract":"\u003cp\u003eThe element is being laid out with a known size.\u003c/p\u003e","parent_name":"LayoutPhase"},"Structs/LayoutWriter/Context/LayoutPhase.html#/s:11BlueprintUI12LayoutWriterV7ContextV0C5PhaseO9onMeasure_0gC0xxyXE_xSo6CGSizeVXEtlF":{"name":"onMeasure(_:onLayout:)","abstract":"\u003cp\u003eReturns the provided value based on if a measurement or layout is occurring.\u003c/p\u003e","parent_name":"LayoutPhase"},"Structs/LayoutWriter/Context.html#/s:11BlueprintUI12LayoutWriterV7ContextV4sizeAA14SizeConstraintVvp":{"name":"size","abstract":"\u003cp\u003eThe size constraint the layout is occurring in.\u003c/p\u003e","parent_name":"Context"},"Structs/LayoutWriter/Context.html#/s:11BlueprintUI12LayoutWriterV7ContextV5phaseAE0C5PhaseOvp":{"name":"phase","abstract":"\u003cp\u003eThe phase of the layout current occurring – measurement or layout.\u003c/p\u003e","parent_name":"Context"},"Structs/LayoutWriter/Context/LayoutPhase.html":{"name":"LayoutPhase","abstract":"\u003cp\u003eThe current phase of the layout event: \u003ccode\u003e.measurement\u003c/code\u003e or \u003ccode\u003e.layout\u003c/code\u003e.\u003c/p\u003e","parent_name":"Context"},"Structs/LayoutWriter/Builder.html#/s:11BlueprintUI12LayoutWriterV7BuilderV6sizingAC6SizingOvp":{"name":"sizing","abstract":"\u003cp\u003eHow the size of the layout should be calculated. Defaults to \u003ccode\u003e.unionOfChildren\u003c/code\u003e,","parent_name":"Builder"},"Structs/LayoutWriter/Builder.html#/s:11BlueprintUI12LayoutWriterV7BuilderV8childrenSayAC5ChildVGvp":{"name":"children","abstract":"\u003cp\u003eThe children of the custom layout, which specifies the child element and its frame.\u003c/p\u003e","parent_name":"Builder"},"Structs/LayoutWriter/Builder.html#/s:11BlueprintUI12LayoutWriterV7BuilderV3add4with3key5childySo6CGRectV_s11AnyHashableVSgAA7Element_ptF":{"name":"add(with:key:child:)","abstract":"\u003cp\u003eAdds a new child element to the layout with the provided frame and optional key.\u003c/p\u003e","parent_name":"Builder"},"Structs/LayoutWriter/Builder.html#/s:11BlueprintUI12LayoutWriterV7BuilderV3addyyAC5ChildVF":{"name":"add(_:)","abstract":"\u003cp\u003eAdds a new child element to the layout.\u003c/p\u003e","parent_name":"Builder"},"Structs/LayoutWriter/Builder.html#/s:11BlueprintUI12LayoutWriterV7BuilderV10modifyEach5usingyyAC5ChildVzXE_tF":{"name":"modifyEach(using:)","abstract":"\u003cp\u003eEnumerates each of the children, allowing you to modify them in place,","parent_name":"Builder"},"Structs/LayoutWriter.html#/s:11BlueprintUI12LayoutWriterVyACyAC7ContextV_AC7BuilderVztccfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreates a new instance of the LayoutWriter with the custom layout provided by the builder.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter.html#/s:11BlueprintUI12LayoutWriterV5Builda":{"name":"Build","abstract":"\u003cp\u003eThe builder type passed to the \u003ccode\u003eLayoutWriter\u003c/code\u003e initializer.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter.html#/s:11BlueprintUI12LayoutWriterV5buildyyAC7ContextV_AC7BuilderVztcvp":{"name":"build","abstract":"\u003cp\u003eThe builder used to create the custom layout.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"LayoutWriter"},"Structs/LayoutWriter.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"LayoutWriter"},"Structs/LayoutWriter/Builder.html":{"name":"Builder","abstract":"\u003cp\u003eThe builder is the primary surface area you interact with when using a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/LayoutWriter.html\"\u003eLayoutWriter\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter/Context.html":{"name":"Context","abstract":"\u003cp\u003eProvides the relevant information about the context in which the layout is occurring.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter/Sizing.html":{"name":"Sizing","abstract":"\u003cp\u003eControls the sizing calculation of the custom layout.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutWriter/Child.html":{"name":"Child","abstract":"\u003cp\u003eA child of the custom layout, providing its frame and element.\u003c/p\u003e","parent_name":"LayoutWriter"},"Structs/LayoutSubelement/Attributes.html#/s:11BlueprintUI16LayoutSubelementV10AttributesV9transformSo13CATransform3DVvp":{"name":"transform","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.layer.transform\u003c/code\u003e.\u003c/p\u003e","parent_name":"Attributes"},"Structs/LayoutSubelement/Attributes.html#/s:11BlueprintUI16LayoutSubelementV10AttributesV5alpha14CoreFoundation7CGFloatVvp":{"name":"alpha","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.alpha\u003c/code\u003e.\u003c/p\u003e","parent_name":"Attributes"},"Structs/LayoutSubelement/Attributes.html#/s:11BlueprintUI16LayoutSubelementV10AttributesV24isUserInteractionEnabledSbvp":{"name":"isUserInteractionEnabled","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.isUserInteractionEnabled\u003c/code\u003e.\u003c/p\u003e","parent_name":"Attributes"},"Structs/LayoutSubelement/Attributes.html#/s:11BlueprintUI16LayoutSubelementV10AttributesV8isHiddenSbvp":{"name":"isHidden","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.isHidden\u003c/code\u003e.\u003c/p\u003e","parent_name":"Attributes"},"Structs/LayoutSubelement/Attributes.html#/s:11BlueprintUI16LayoutSubelementV10AttributesV18tintAdjustmentModeSo010UIViewTintgH0Vvp":{"name":"tintAdjustmentMode","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.tintAdjustmentMode\u003c/code\u003e.\u003c/p\u003e","parent_name":"Attributes"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV10attributesAC10AttributesVvp":{"name":"attributes","abstract":"\u003cp\u003eOptional attributes to apply to this subelement, such as opacity and transforms.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV5place2at6anchor4sizeySo7CGPointV_AA9UnitPointVSo6CGSizeVtF":{"name":"place(at:anchor:size:)","abstract":"\u003cp\u003eAssigns a position and size to a subelement.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV5place2in6anchorySo6CGRectV_AA9UnitPointVtF":{"name":"place(in:anchor:)","abstract":"\u003cp\u003eAssigns a position and size to a subelement.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV5place7fillingySo6CGSizeV_tF":{"name":"place(filling:)","abstract":"\u003cp\u003eAssigns a position and size to a subelement.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV12sizeThatFitsySo6CGSizeVAA14SizeConstraintVF":{"name":"sizeThatFits(_:)","abstract":"\u003cp\u003eAsks the subelement for its size.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement.html#/s:11BlueprintUI16LayoutSubelementV6traits03forC4Type6TraitsQzxm_tAA0C0RzlF":{"name":"traits(forLayoutType:)","abstract":"\u003cp\u003eGets the layout traits of the subelement.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutSubelement/Attributes.html":{"name":"Attributes","abstract":"\u003cp\u003eOptional additional attributes that can be applied to a subelement.\u003c/p\u003e","parent_name":"LayoutSubelement"},"Structs/LayoutOptions.html#/s:11BlueprintUI13LayoutOptionsV7defaultACvpZ":{"name":"default","abstract":"\u003cp\u003eThe default configuration.\u003c/p\u003e","parent_name":"LayoutOptions"},"Structs/LayoutOptions.html#/s:11BlueprintUI13LayoutOptionsV19hintRangeBoundariesSbvp":{"name":"hintRangeBoundaries","abstract":"\u003cp\u003eEnables aggressive cache hinting along the boundaries of the range between constraints and","parent_name":"LayoutOptions"},"Structs/LayoutOptions.html#/s:11BlueprintUI13LayoutOptionsV23searchUnconstrainedKeysSbvp":{"name":"searchUnconstrainedKeys","abstract":"\u003cp\u003eAllows cache misses on finite constraints to deduce a range-based match by searching for a","parent_name":"LayoutOptions"},"Structs/LayoutOptions.html#/s:11BlueprintUI13LayoutOptionsV19hintRangeBoundaries23searchUnconstrainedKeysACSb_Sbtcfc":{"name":"init(hintRangeBoundaries:searchUnconstrainedKeys:)","parent_name":"LayoutOptions"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV6centerSo7CGPointVvp":{"name":"center","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.center\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV6boundsSo6CGRectVvp":{"name":"bounds","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.bounds\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV9transformSo13CATransform3DVvp":{"name":"transform","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.layer.transform\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV5alpha14CoreFoundation7CGFloatVvp":{"name":"alpha","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.alpha\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV24isUserInteractionEnabledSbvp":{"name":"isUserInteractionEnabled","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.isUserInteractionEnabled\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV8isHiddenSbvp":{"name":"isHidden","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.isHidden\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV18tintAdjustmentModeSo010UIViewTintfG0Vvp":{"name":"tintAdjustmentMode","abstract":"\u003cp\u003eCorresponds to \u003ccode\u003eUIView.tintAdjustmentMode\u003c/code\u003e.\u003c/p\u003e","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesVACycfc":{"name":"init()","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV5frameACSo6CGRectV_tcfc":{"name":"init(frame:)","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV4sizeACSo6CGSizeV_tcfc":{"name":"init(size:)","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV6center6boundsACSo7CGPointV_So6CGRectVtcfc":{"name":"init(center:bounds:)","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV5frameSo6CGRectVvp":{"name":"frame","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:11BlueprintUI16LayoutAttributesV6withinyA2CF":{"name":"within(_:)","abstract":"\u003cp\u003eConcatenates layout attributes, moving the receiver from the local","parent_name":"LayoutAttributes"},"Structs/LayoutAttributes.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"LayoutAttributes"},"Structs/Keyed.html#/s:11BlueprintUI5KeyedV3keys11AnyHashableVSgvp":{"name":"key","abstract":"\u003cp\u003eThe key used to differentiate the element.\u003c/p\u003e","parent_name":"Keyed"},"Structs/Keyed.html#/s:11BlueprintUI5KeyedV7wrappedAA7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe wrapped element.\u003c/p\u003e","parent_name":"Keyed"},"Structs/Keyed.html#/s:11BlueprintUI5KeyedV3key8wrappingACs11AnyHashableVSg_AA7Element_ptcfc":{"name":"init(key:wrapping:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eKeyed\u003c/code\u003e element with the provided key and wrapped element.\u003c/p\u003e","parent_name":"Keyed"},"Structs/Keyed.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Keyed"},"Structs/Keyed.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Keyed"},"Structs/Hidden.html#/s:11BlueprintUI6HiddenV02isC0Sbvp":{"name":"isHidden","parent_name":"Hidden"},"Structs/Hidden.html#/s:11BlueprintUI6HiddenV14wrappedElementAA0E0_pvp":{"name":"wrappedElement","parent_name":"Hidden"},"Structs/Hidden.html#/s:11BlueprintUI6HiddenV_8wrappingACSb_AA7Element_ptcfc":{"name":"init(_:wrapping:)","parent_name":"Hidden"},"Structs/Hidden.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Hidden"},"Structs/Hidden.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Hidden"},"Structs/GridRow/Width.html#/s:11BlueprintUI7GridRowV5WidthO8absoluteyAE14CoreFoundation7CGFloatVcAEmF":{"name":"absolute(_:)","abstract":"\u003cp\u003eAssign the child a fixed width equal to the payload.\u003c/p\u003e","parent_name":"Width"},"Structs/GridRow/Width.html#/s:11BlueprintUI7GridRowV5WidthO12proportionalyAE14CoreFoundation7CGFloatVcAEmF":{"name":"proportional(_:)","abstract":"\u003cp\u003eAssign the child a proportional width of the available layout width. Note that proportional children","parent_name":"Width"},"Structs/GridRow/Child.html#/s:11BlueprintUI7GridRowV5ChildV7elementAA7Element_pvp":{"name":"element","abstract":"\u003cp\u003eThe element displayed in the \u003ccode\u003eGrid\u003c/code\u003e.\u003c/p\u003e","parent_name":"Child"},"Structs/GridRow/Child.html#/s:11BlueprintUI7GridRowV5ChildV3keys11AnyHashableVSgvp":{"name":"key","abstract":"\u003cp\u003eA unique identifier for the child.\u003c/p\u003e","parent_name":"Child"},"Structs/GridRow/Child.html#/s:11BlueprintUI7GridRowV5ChildV5widthAC5WidthOvp":{"name":"width","parent_name":"Child"},"Structs/GridRow/Child.html#/s:11BlueprintUI7GridRowV5ChildV5width3key7elementAeC5WidthO_s11AnyHashableVSgAA7Element_ptcfc":{"name":"init(width:key:element:)","parent_name":"Child"},"Structs/GridRow/Child.html#/s:11BlueprintUI7GridRowV5ChildVyAeA7Element_pcfc":{"name":"init(_:)","parent_name":"Child"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV17verticalAlignmentAA0D0V0dF0Ovp":{"name":"verticalAlignment","abstract":"\u003cp\u003eHow children are aligned vertically. By default, \u003ccode\u003e.fill\u003c/code\u003e.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV7spacing14CoreFoundation7CGFloatVvp":{"name":"spacing","abstract":"\u003cp\u003eThe space between children. By default, 0.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV8childrenSayAC5ChildVGvp":{"name":"children","abstract":"\u003cp\u003eThe child elements to be laid out. By default, an empty array.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV9configureACyACzXE_tcfc":{"name":"init(configure:)","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV17verticalAlignment7spacing_AcA0D0V0dF0O_14CoreFoundation7CGFloatVSayAC5ChildVGyXEtcfc":{"name":"init(verticalAlignment:spacing:_:)","abstract":"\u003cp\u003eInitializer using result builder to declaritively build up a grid row.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7GridRowV3add5width3key5childyAC5WidthO_s11AnyHashableVSgAA7Element_ptF":{"name":"add(width:key:child:)","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"GridRow"},"Structs/GridRow.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"GridRow"},"Structs/GridRow/Child.html":{"name":"Child","abstract":"\u003cp\u003eA child of a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/GridRow.html\"\u003eGridRow\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GridRow/Width.html":{"name":"Width","abstract":"\u003cp\u003eThe sizing and content of a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/GridRow.html\"\u003eGridRow\u003c/a\u003e\u003c/code\u003e child.\u003c/p\u003e","parent_name":"GridRow"},"Structs/GeometryProxy.html#/s:11BlueprintUI13GeometryProxyV10constraintAA14SizeConstraintVvp":{"name":"constraint","abstract":"\u003cp\u003eThe size constraint of the element being laid out.\u003c/p\u003e","parent_name":"GeometryProxy"},"Structs/GeometryProxy.html#/s:11BlueprintUI13GeometryProxyV7measure7element2inSo6CGSizeVAA7Element_p_AA14SizeConstraintVSgtF":{"name":"measure(element:in:)","abstract":"\u003cp\u003eMeasure the given element, constrained to the same size as the \u003ccode\u003eGeometryProxy\u003c/code\u003e itself (unless a constraint is explicitly provided).\u003c/p\u003e","parent_name":"GeometryProxy"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildV3keys11AnyHashableVSgvp":{"name":"key","abstract":"\u003cp\u003eThe key used to optionally unique the child item.\u003c/p\u003e","parent_name":"Child"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildV6traitsAE6TraitsVvp":{"name":"traits","abstract":"\u003cp\u003eThe traits of a child item.\u003c/p\u003e","parent_name":"Child"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildV7elementAA7Element_pvp":{"name":"element","abstract":"\u003cp\u003eThe element representing the child item.\u003c/p\u003e","parent_name":"Child"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildVyAeA7Element_pcfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreates a new child item with the given element.\u003c/p\u003e","parent_name":"Child"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildV_3keyAeA7Element_p_s11AnyHashableVSgtcfc":{"name":"init(_:key:)","abstract":"\u003cp\u003eCreates a new child item with the given element.\u003c/p\u003e","parent_name":"Child"},"Structs/Flow/Child.html#/s:11BlueprintUI4FlowV5ChildV6TraitsV":{"name":"Traits","parent_name":"Child"},"Structs/Flow/ItemAlignment.html#/s:11BlueprintUI4FlowV13ItemAlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eShorter items are stretched to fill the height of the tallest item.\u003c/p\u003e","parent_name":"ItemAlignment"},"Structs/Flow/ItemAlignment.html#/s:11BlueprintUI4FlowV13ItemAlignmentO3topyA2EmF":{"name":"top","abstract":"\u003cp\u003eShorter items are aligned to the top of the row.\u003c/p\u003e","parent_name":"ItemAlignment"},"Structs/Flow/ItemAlignment.html#/s:11BlueprintUI4FlowV13ItemAlignmentO6centeryA2EmF":{"name":"center","abstract":"\u003cp\u003eShorter items are vertically aligned within the row.\u003c/p\u003e","parent_name":"ItemAlignment"},"Structs/Flow/ItemAlignment.html#/s:11BlueprintUI4FlowV13ItemAlignmentO6bottomyA2EmF":{"name":"bottom","abstract":"\u003cp\u003eShorter items are aligned to the bottom of the row.\u003c/p\u003e","parent_name":"ItemAlignment"},"Structs/Flow/LineAlignment.html#/s:11BlueprintUI4FlowV13LineAlignmentO7leadingyA2EmF":{"name":"leading","abstract":"\u003cp\u003eItems are aligned with the leading edge.\u003c/p\u003e","parent_name":"LineAlignment"},"Structs/Flow/LineAlignment.html#/s:11BlueprintUI4FlowV13LineAlignmentO6centeryA2EmF":{"name":"center","abstract":"\u003cp\u003eItems are centered within the remaining space.\u003c/p\u003e","parent_name":"LineAlignment"},"Structs/Flow/LineAlignment.html#/s:11BlueprintUI4FlowV13LineAlignmentO8trailingyA2EmF":{"name":"trailing","abstract":"\u003cp\u003eItems are aligned with the trailing edge.\u003c/p\u003e","parent_name":"LineAlignment"},"Structs/Flow.html#/s:11BlueprintUI4FlowV13lineAlignmentAC04LineE0Ovp":{"name":"lineAlignment","abstract":"\u003cp\u003eHow to align each row when there is extra horizontal space.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI4FlowV11lineSpacing14CoreFoundation7CGFloatVvp":{"name":"lineSpacing","abstract":"\u003cp\u003eSpace between lines in the layout.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI4FlowV13itemAlignmentAC04ItemE0Ovp":{"name":"itemAlignment","abstract":"\u003cp\u003eHow to align items in a line when there is extra vertical space.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI4FlowV11itemSpacing14CoreFoundation7CGFloatVvp":{"name":"itemSpacing","abstract":"\u003cp\u003eSpace between items within a line.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI4FlowV8childrenSayAC5ChildVGvp":{"name":"children","abstract":"\u003cp\u003eThe child elements of the flow layout to be laid out.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI4FlowV13lineAlignment0D7Spacing04itemE00gF0_A2C04LineE0O_14CoreFoundation7CGFloatVAC04ItemE0OALSayAC5ChildVGyXEtcfc":{"name":"init(lineAlignment:lineSpacing:itemAlignment:itemSpacing:_:)","abstract":"\u003cp\u003eCreates a new flow layout with the provided parameters.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Flow"},"Structs/Flow.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Flow"},"Structs/Flow/LineAlignment.html":{"name":"LineAlignment","abstract":"\u003cp\u003eHow to horizontally align the line when there is extra space.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow/ItemAlignment.html":{"name":"ItemAlignment","abstract":"\u003cp\u003eHow to vertically align items which there is extra space.\u003c/p\u003e","parent_name":"Flow"},"Structs/Flow/Child.html":{"name":"Child","abstract":"\u003cp\u003eA child placed within the flow layout.\u003c/p\u003e","parent_name":"Flow"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsV5width14CoreFoundation7CGFloatVvp":{"name":"width","abstract":"\u003cp\u003eThe element\u0026rsquo;s width\u003c/p\u003e","parent_name":"ElementDimensions"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsV6height14CoreFoundation7CGFloatVvp":{"name":"height","abstract":"\u003cp\u003eThe element\u0026rsquo;s height\u003c/p\u003e","parent_name":"ElementDimensions"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsVy14CoreFoundation7CGFloatVAA19HorizontalAlignmentVcip":{"name":"subscript(_:)","abstract":"\u003cp\u003eAccesses the value of the given guide, or the default value of the alignment if this","parent_name":"ElementDimensions"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsVy14CoreFoundation7CGFloatVAA17VerticalAlignmentVcip":{"name":"subscript(_:)","abstract":"\u003cp\u003eAccesses the value of the given guide, or the default value of the alignment if this","parent_name":"ElementDimensions"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsV8explicit14CoreFoundation7CGFloatVSgAA19HorizontalAlignmentV_tcip":{"name":"subscript(explicit:)","abstract":"\u003cp\u003eReturns the explicit value of the given alignment guide in this view, or","parent_name":"ElementDimensions"},"Structs/ElementDimensions.html#/s:11BlueprintUI17ElementDimensionsV8explicit14CoreFoundation7CGFloatVSgAA17VerticalAlignmentV_tcip":{"name":"subscript(explicit:)","abstract":"\u003cp\u003eReturns the explicit value of the given alignment guide in this view, or","parent_name":"ElementDimensions"},"Structs/Decorate/Position/PositionContext.html#/s:11BlueprintUI8DecorateV8PositionV0D7ContextV14decorationSizeSo6CGSizeVvp":{"name":"decorationSize","abstract":"\u003cp\u003eThe size of the decoration being positioned within the decorated content\u0026rsquo;s bounds.\u003c/p\u003e","parent_name":"PositionContext"},"Structs/Decorate/Position/PositionContext.html#/s:11BlueprintUI8DecorateV8PositionV0D7ContextV11contentSizeSo6CGSizeVvp":{"name":"contentSize","abstract":"\u003cp\u003eThe size of the content element within the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Decorate.html\"\u003eDecorate\u003c/a\u003e\u003c/code\u003e element.\u003c/p\u003e","parent_name":"PositionContext"},"Structs/Decorate/Position/PositionContext.html#/s:11BlueprintUI8DecorateV8PositionV0D7ContextV11environmentAA11EnvironmentVvp":{"name":"environment","abstract":"\u003cp\u003eThe environment the element is being rendered in.\u003c/p\u003e","parent_name":"PositionContext"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV5insetyAESo12UIEdgeInsetsVFZ":{"name":"inset(_:)","abstract":"\u003cp\u003eInsets the decoration element on each edge by the amount specified by","parent_name":"Position"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV5insetyAE14CoreFoundation7CGFloatVFZ":{"name":"inset(_:)","abstract":"\u003cp\u003eProvides a \u003ccode\u003e.inset\u003c/code\u003e position where the decoration is inset by the","parent_name":"Position"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV5inset10horizontal8verticalAE14CoreFoundation7CGFloatV_AKtFZ":{"name":"inset(horizontal:vertical:)","abstract":"\u003cp\u003eProvides a \u003ccode\u003e.inset\u003c/code\u003e position where the decoration is inset by the","parent_name":"Position"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV7aligned2to15horizontalGuide08verticalH0AeA9AlignmentV_14CoreFoundation7CGFloatVAA17ElementDimensionsVcSgAQtFZ":{"name":"aligned(to:horizontalGuide:verticalGuide:)","abstract":"\u003cp\u003eAligns the decoration according the given alignment option, optionally adjusting it with","parent_name":"Position"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV6corneryAeC6CornerO_So8UIOffsetVtFZ":{"name":"corner(_:_:)","abstract":"\u003cp\u003eThe decoration element is positioned in the given corner of the","parent_name":"Position"},"Structs/Decorate/Position.html#/s:11BlueprintUI8DecorateV8PositionV6customyAESo6CGRectVAE0D7ContextVcFZ":{"name":"custom(_:)","abstract":"\u003cp\u003eAllows you to provide custom positioning for the decoration, based on the passed context.\u003c/p\u003e","parent_name":"Position"},"Structs/Decorate/Position/PositionContext.html":{"name":"PositionContext","abstract":"\u003cp\u003eInformation provided to \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Decorate/Position.html\"\u003ePosition\u003c/a\u003e\u003c/code\u003e closures.\u003c/p\u003e","parent_name":"Position"},"Structs/Decorate/Corner.html#/s:11BlueprintUI8DecorateV6CornerO7topLeftyA2EmF":{"name":"topLeft","parent_name":"Corner"},"Structs/Decorate/Corner.html#/s:11BlueprintUI8DecorateV6CornerO8topRightyA2EmF":{"name":"topRight","parent_name":"Corner"},"Structs/Decorate/Corner.html#/s:11BlueprintUI8DecorateV6CornerO11bottomRightyA2EmF":{"name":"bottomRight","parent_name":"Corner"},"Structs/Decorate/Corner.html#/s:11BlueprintUI8DecorateV6CornerO10bottomLeftyA2EmF":{"name":"bottomLeft","parent_name":"Corner"},"Structs/Decorate/Layering.html#/s:11BlueprintUI8DecorateV8LayeringO5aboveyA2EmF":{"name":"above","abstract":"\u003cp\u003eThe decoration is displayed above the content element.\u003c/p\u003e","parent_name":"Layering"},"Structs/Decorate/Layering.html#/s:11BlueprintUI8DecorateV8LayeringO5belowyA2EmF":{"name":"below","abstract":"\u003cp\u003eThe decoration is displayed below the content element.\u003c/p\u003e","parent_name":"Layering"},"Structs/Decorate.html#/s:11BlueprintUI8DecorateV7wrappedAA7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe element which provides the sizing and measurement.","parent_name":"Decorate"},"Structs/Decorate.html#/s:11BlueprintUI8DecorateV10decorationAA7Element_pvp":{"name":"decoration","abstract":"\u003cp\u003eThe element which is used to draw the decoration.","parent_name":"Decorate"},"Structs/Decorate.html#/s:11BlueprintUI8DecorateV8layeringAC8LayeringOvp":{"name":"layering","abstract":"\u003cp\u003eWhere the decoration should be positioned in the z-axis: Above or below the wrapped element.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Decorate.html#/s:11BlueprintUI8DecorateV8positionAC8PositionVvp":{"name":"position","abstract":"\u003cp\u003eHow the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Decorate.html#/s:11BlueprintUI8DecorateV10decorationAA7Element_pvp\"\u003edecoration\u003c/a\u003e\u003c/code\u003e should be positioned in respect to the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Decorate.html#/s:11BlueprintUI8DecorateV7wrappedAA7Element_pvp\"\u003ewrapped\u003c/a\u003e\u003c/code\u003e element.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Decorate.html#/s:11BlueprintUI8DecorateV8layering8position8wrapping10decorationA2C8LayeringO_AC8PositionVAA7Element_pAaL_ptcfc":{"name":"init(layering:position:wrapping:decoration:)","abstract":"\u003cp\u003eCreates a new instance with the provided overflow, background, and wrapped element.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Decorate.html#/s:11BlueprintUI12ProxyElementP21elementRepresentationAA0D0_pvp":{"name":"elementRepresentation","parent_name":"Decorate"},"Structs/Decorate/Layering.html":{"name":"Layering","abstract":"\u003cp\u003eIf the decoration should be positioned above or below the content element.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Decorate/Corner.html":{"name":"Corner","abstract":"\u003cp\u003eWhat corner the decoration element should be positioned in.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Decorate/Position.html":{"name":"Position","abstract":"\u003cp\u003eHow to position the decoration element relative to the content element.\u003c/p\u003e","parent_name":"Decorate"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV8Childrena":{"name":"Children","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV10buildBlockySayxGAEd_tFZ":{"name":"buildBlock(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV13buildOptionalySayxGAESgFZ":{"name":"buildOptional(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV11buildEither5firstSayxGAF_tFZ":{"name":"buildEither(first:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV11buildEither6secondSayxGAF_tFZ":{"name":"buildEither(second:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV15buildExpressionySayxGxFZ":{"name":"buildExpression(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV15buildExpressionySayxGxSgFZ":{"name":"buildExpression(_:)","abstract":"\u003cp\u003eThis function is disfavored in case a builder wants to offer additional \u003ccode\u003ebuildExpression\u003c/code\u003e functions to support","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV10buildArrayySayxGSayAEGFZ":{"name":"buildArray(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV10buildArrayySayxGAEFZ":{"name":"buildArray(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV24buildLimitedAvailabilityySayxGAEFZ":{"name":"buildLimitedAvailability(_:)","parent_name":"Builder"},"Structs/Builder.html#/s:11BlueprintUI7BuilderV15buildExpressionySayxGAEFZ":{"name":"buildExpression(_:)","abstract":"\u003cp\u003eAllow for an array of \u003ccode\u003eChild\u003c/code\u003e to be flattened into the overall result.\u003c/p\u003e","parent_name":"Builder"},"Structs/AspectRatio.html#/s:11BlueprintUI11AspectRatioV6squareACvpZ":{"name":"square","abstract":"\u003cp\u003eA 1:1 aspect ratio.\u003c/p\u003e","parent_name":"AspectRatio"},"Structs/AspectRatio.html#/s:11BlueprintUI11AspectRatioV5ratio14CoreFoundation7CGFloatVvp":{"name":"ratio","abstract":"\u003cp\u003eThe width:height ratio value.\u003c/p\u003e","parent_name":"AspectRatio"},"Structs/AspectRatio.html#/s:11BlueprintUI11AspectRatioV5width6heightAC14CoreFoundation7CGFloatV_AHtcfc":{"name":"init(width:height:)","abstract":"\u003cp\u003eInitializes with a width \u0026amp; height ratio.\u003c/p\u003e","parent_name":"AspectRatio"},"Structs/AspectRatio.html#/s:11BlueprintUI11AspectRatioV5ratioAC14CoreFoundation7CGFloatV_tcfc":{"name":"init(ratio:)","abstract":"\u003cp\u003eInitializes with a specific ratio.\u003c/p\u003e","parent_name":"AspectRatio"},"Structs/VerticalAlignment.html#/s:11BlueprintUI17VerticalAlignmentVyAcA0D2ID_pXpcfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreates an instance with the given ID.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/VerticalAlignment.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"VerticalAlignment"},"Structs/VerticalAlignment.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"VerticalAlignment"},"Structs/VerticalAlignment.html#/s:11BlueprintUI17VerticalAlignmentV3topACvpZ":{"name":"top","abstract":"\u003cp\u003eA guide marking the top edge of the element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/VerticalAlignment.html#/s:11BlueprintUI17VerticalAlignmentV6centerACvpZ":{"name":"center","abstract":"\u003cp\u003eA guide marking the vertical center of the element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/VerticalAlignment.html#/s:11BlueprintUI17VerticalAlignmentV6bottomACvpZ":{"name":"bottom","abstract":"\u003cp\u003eA guide marking the bottom edge of the element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/HorizontalAlignment.html#/s:11BlueprintUI19HorizontalAlignmentVyAcA0D2ID_pXpcfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreates an instance with the given ID.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/HorizontalAlignment.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"HorizontalAlignment"},"Structs/HorizontalAlignment.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"HorizontalAlignment"},"Structs/HorizontalAlignment.html#/s:11BlueprintUI19HorizontalAlignmentV7leadingACvpZ":{"name":"leading","abstract":"\u003cp\u003eA guide marking the leading edge of the element.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/HorizontalAlignment.html#/s:11BlueprintUI19HorizontalAlignmentV6centerACvpZ":{"name":"center","abstract":"\u003cp\u003eA guide marking the horizontal center of the element.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/HorizontalAlignment.html#/s:11BlueprintUI19HorizontalAlignmentV8trailingACvpZ":{"name":"trailing","abstract":"\u003cp\u003eA guide marking the trailing edge of the element.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV6centerACvpZ":{"name":"center","abstract":"\u003cp\u003eA guide marking the center of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV7leadingACvpZ":{"name":"leading","abstract":"\u003cp\u003eA guide marking the leading edge of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV8trailingACvpZ":{"name":"trailing","abstract":"\u003cp\u003eA guide marking the trailing edge of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV3topACvpZ":{"name":"top","abstract":"\u003cp\u003eA guide marking the top edge of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV6bottomACvpZ":{"name":"bottom","abstract":"\u003cp\u003eA guide marking the bottom edge of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV10topLeadingACvpZ":{"name":"topLeading","abstract":"\u003cp\u003eA guide marking the top and leading edges of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV11topTrailingACvpZ":{"name":"topTrailing","abstract":"\u003cp\u003eA guide marking the top and trailing edges of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV13bottomLeadingACvpZ":{"name":"bottomLeading","abstract":"\u003cp\u003eA guide marking the bottom and leading edges of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV14bottomTrailingACvpZ":{"name":"bottomTrailing","abstract":"\u003cp\u003eA guide marking the bottom and trailing edges of the element.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV10horizontalAA010HorizontalC0Vvp":{"name":"horizontal","abstract":"\u003cp\u003eThe alignment on the horizontal axis.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV8verticalAA08VerticalC0Vvp":{"name":"vertical","abstract":"\u003cp\u003eThe alignment on the vertical axis.\u003c/p\u003e","parent_name":"Alignment"},"Structs/Alignment.html#/s:11BlueprintUI9AlignmentV10horizontal8verticalAcA010HorizontalC0V_AA08VerticalC0Vtcfc":{"name":"init(horizontal:vertical:)","abstract":"\u003cp\u003eCreates an instance with the given horizontal and vertical alignments.\u003c/p\u003e","parent_name":"Alignment"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateVACySbGycSbRszrlufc":{"name":"init()","abstract":"\u003cp\u003eCreates a focus state that binds to a Boolean.\u003c/p\u003e","parent_name":"FocusState"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateVACyqd__SgGycADRszSHRd__lufc":{"name":"init()","abstract":"\u003cp\u003eCreates a focus state that binds to an optional type.\u003c/p\u003e","parent_name":"FocusState"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateV12wrappedValuexvp":{"name":"wrappedValue","abstract":"\u003cp\u003eThe current state value, taking into account whatever bindings might be","parent_name":"FocusState"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateV14projectedValueACyxGvp":{"name":"projectedValue","abstract":"\u003cp\u003eA projection of the focus state that can be bound to focusable elements.\u003c/p\u003e","parent_name":"FocusState"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateV7binding3forAA0C7BindingVqd___tqd__SgRszSHRd__lF":{"name":"binding(for:)","abstract":"\u003cp\u003eGets a focus binding associated with the \u003ccode\u003eFocusState\u003c/code\u003e being a specific value.\u003c/p\u003e","parent_name":"FocusState"},"Structs/FocusState.html#/s:11BlueprintUI10FocusStateV7bindingAA0C7BindingVySbRszrlF":{"name":"binding()","abstract":"\u003cp\u003eGets a focus binding associated with the \u003ccode\u003eFocusState\u003c/code\u003e value being \u003ccode\u003etrue\u003c/code\u003e.\u003c/p\u003e","parent_name":"FocusState"},"Structs/FocusBinding.html#/s:11BlueprintUI12FocusBindingV7triggerAA0C7TriggerCvp":{"name":"trigger","abstract":"\u003cp\u003eA trigger, which is responsible for piping focus changes from a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/FocusState.html\"\u003eFocusState\u003c/a\u003e\u003c/code\u003e into a backing","parent_name":"FocusBinding"},"Structs/FocusBinding.html#/s:11BlueprintUI12FocusBindingV02onC0yycvp":{"name":"onFocus","abstract":"\u003cp\u003eA callback to be called by a backing view when it is focused, to pipe changes from a backing","parent_name":"FocusBinding"},"Structs/FocusBinding.html#/s:11BlueprintUI12FocusBindingV6onBluryycvp":{"name":"onBlur","abstract":"\u003cp\u003eA callback to be called by a backing view when it loses focus, to pipe changes from a","parent_name":"FocusBinding"},"Structs/FocusBinding.html#/s:11BlueprintUI12FocusBindingV02onC00E4BlurACyyc_yyctcfc":{"name":"init(onFocus:onBlur:)","abstract":"\u003cp\u003eCreates a new binding\u003c/p\u003e","parent_name":"FocusBinding"},"Structs/UIViewElementContext.html#/s:11BlueprintUI20UIViewElementContextV11isMeasuringSbvp":{"name":"isMeasuring","abstract":"\u003cp\u003eThis bool indicates whether the view being updated is the static measuring instance. You may","parent_name":"UIViewElementContext"},"Structs/UIViewElementContext.html#/s:11BlueprintUI20UIViewElementContextV11environmentAA11EnvironmentVvp":{"name":"environment","abstract":"\u003cp\u003eThe environment the element is rendered in.\u003c/p\u003e","parent_name":"UIViewElementContext"},"Structs/ViewDescriptionContext.html#/s:11BlueprintUI22ViewDescriptionContextV6boundsSo6CGRectVvp":{"name":"bounds","abstract":"\u003cp\u003eThe bounds of this element after layout is complete.\u003c/p\u003e","parent_name":"ViewDescriptionContext"},"Structs/ViewDescriptionContext.html#/s:11BlueprintUI22ViewDescriptionContextV13subtreeExtentSo6CGRectVSgvp":{"name":"subtreeExtent","abstract":"\u003cp\u003eA rectangle in the local coordinate space that contains any children.","parent_name":"ViewDescriptionContext"},"Structs/ViewDescriptionContext.html#/s:11BlueprintUI22ViewDescriptionContextV11environmentAA11EnvironmentVvp":{"name":"environment","abstract":"\u003cp\u003eThe environment the element is rendered in.\u003c/p\u003e","parent_name":"ViewDescriptionContext"},"Structs/ViewDescriptionContext.html#/s:11BlueprintUI22ViewDescriptionContextV6bounds13subtreeExtent11environmentACSo6CGRectV_AHSgAA11EnvironmentVtcfc":{"name":"init(bounds:subtreeExtent:environment:)","parent_name":"ViewDescriptionContext"},"Structs/BlueprintViewRenderMetrics.html#/s:11BlueprintUI0A17ViewRenderMetricsV10layoutModeAA06LayoutG0Ovp":{"name":"layoutMode","abstract":"\u003cp\u003eThe layout mode used to render the view.\u003c/p\u003e","parent_name":"BlueprintViewRenderMetrics"},"Structs/BlueprintViewRenderMetrics.html#/s:11BlueprintUI0A17ViewRenderMetricsV14startTimestampSdvp":{"name":"startTimestamp","abstract":"\u003cp\u003eThe mach time in seconds at which the view render started (from \u003ccode\u003eCACurrentMediaTime()\u003c/code\u003e).\u003c/p\u003e","parent_name":"BlueprintViewRenderMetrics"},"Structs/BlueprintViewRenderMetrics.html#/s:11BlueprintUI0A17ViewRenderMetricsV13totalDurationSdvp":{"name":"totalDuration","abstract":"\u003cp\u003eThe total time it took to apply a new element.\u003c/p\u003e","parent_name":"BlueprintViewRenderMetrics"},"Structs/BlueprintViewRenderMetrics.html#/s:11BlueprintUI0A17ViewRenderMetricsV14layoutDurationSdvp":{"name":"layoutDuration","abstract":"\u003cp\u003eThe time it took to lay out and measure the new element.\u003c/p\u003e","parent_name":"BlueprintViewRenderMetrics"},"Structs/BlueprintViewRenderMetrics.html#/s:11BlueprintUI0A17ViewRenderMetricsV18viewUpdateDurationSdvp":{"name":"viewUpdateDuration","abstract":"\u003cp\u003eThe time it took to update the on-screen views for the element.\u003c/p\u003e","parent_name":"BlueprintViewRenderMetrics"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV5emptyACvpZ":{"name":"empty","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerVy5ValueQzSgxmcAA010AttributedC3KeyRzluip":{"name":"subscript(_:)","abstract":"\u003cp\u003eGet or set for the given \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/AttributedTextKey.html\"\u003eAttributedTextKey\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV4fontSo6UIFontCSgvp":{"name":"font","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV5colorSo7UIColorCSgvp":{"name":"color","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV8tracking14CoreFoundation7CGFloatVSgvp":{"name":"tracking","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV14underlineStyleSo011NSUnderlineG0VSgvp":{"name":"underlineStyle","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV14underlineColorSo7UIColorCSgvp":{"name":"underlineColor","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV14paragraphStyleSo011NSParagraphG0CSgvp":{"name":"paragraphStyle","parent_name":"TextAttributeContainer"},"Structs/TextAttributeContainer.html#/s:11BlueprintUI22TextAttributeContainerV4link10Foundation3URLVSgvp":{"name":"link","parent_name":"TextAttributeContainer"},"Structs/AttributedText/Run.html#/s:11BlueprintUI14AttributedTextV3RunV5rangeSnySS5IndexVGvp":{"name":"range","abstract":"\u003cp\u003eThe range of the run of attributes.\u003c/p\u003e","parent_name":"Run"},"Structs/AttributedText/Run.html#/s:11BlueprintUI14AttributedTextV3RunV10attributesAA0D18AttributeContainerVvp":{"name":"attributes","abstract":"\u003cp\u003eThe attributes that apply to this run.\u003c/p\u003e","parent_name":"Run"},"Structs/AttributedText/Run.html#/s:11BlueprintUI14AttributedTextV3RunV13dynamicMemberxs7KeyPathCyAA0D18AttributeContainerVxG_tcluip":{"name":"subscript(dynamicMember:)","abstract":"\u003cp\u003eDynamic member getter for the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/TextAttributeContainer.html\"\u003eTextAttributeContainer\u003c/a\u003e\u003c/code\u003e of this run.\u003c/p\u003e","parent_name":"Run"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV6stringSSvp":{"name":"string","abstract":"\u003cp\u003eThe wrapped string, with no attributes.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV16attributedStringSo012NSAttributedF0Cvp":{"name":"attributedString","abstract":"\u003cp\u003eAn \u003ccode\u003eNSAttributedString\u003c/code\u003e representation of the attributed text.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV4runsSayAC3RunVGvp":{"name":"runs","abstract":"\u003cp\u003eAn iterable view into segments of the attributed string, each of which indicates where a run of identical","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextVyACSScfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreate some \u003ccode\u003eAttributedText\u003c/code\u003e from a plain string.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextVyACSo18NSAttributedStringCcfc":{"name":"init(_:)","abstract":"\u003cp\u003eCreate some \u003ccode\u003eAttributedText\u003c/code\u003e from an attributed string. The attributes are preserved.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV5range2ofSnySS5IndexVGSgx_tSyRzlF":{"name":"range(of:)","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV13dynamicMemberxs15WritableKeyPathCyAA0D18AttributeContainerVxG_tcluip":{"name":"subscript(dynamicMember:)","abstract":"\u003cp\u003eDynamic member getter or setter for any attributes defined on \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/TextAttributeContainer.html\"\u003eTextAttributeContainer\u003c/a\u003e\u003c/code\u003e.","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextVyAA0D18AttributeContainerVxcSXRzSS5IndexV5BoundRtzluip":{"name":"subscript(_:)","abstract":"\u003cp\u003eGet or set a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/TextAttributeContainer.html\"\u003eTextAttributeContainer\u003c/a\u003e\u003c/code\u003e for the provided range of text. This allows you to set attributes","parent_name":"AttributedText"},"Structs/AttributedText.html#/s:11BlueprintUI14AttributedTextV1poiyA2C_ACtFZ":{"name":"+(_:_:)","abstract":"\u003cp\u003eConcatenate two pieces of \u003ccode\u003eAttributedText\u003c/code\u003e together.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText/Run.html":{"name":"Run","abstract":"\u003cp\u003eA Run represents a range of identical attributes in the attributed text.\u003c/p\u003e","parent_name":"AttributedText"},"Structs/AttributedText.html":{"name":"AttributedText","abstract":"\u003cp\u003e\u003ccode\u003eAttributedText\u003c/code\u003e allows you to apply strongly-typed attributes to strings (much like the \u003ccode\u003eAttributedString\u003c/code\u003e type"},"Structs/TextAttributeContainer.html":{"name":"TextAttributeContainer"},"Structs/BlueprintViewRenderMetrics.html":{"name":"BlueprintViewRenderMetrics"},"Structs/ViewDescriptionContext.html":{"name":"ViewDescriptionContext","abstract":"\u003cp\u003eThe context passing to the \u003ccode\u003ebackingViewDescription\u003c/code\u003e of an Element.\u003c/p\u003e"},"Structs/UIViewElementContext.html":{"name":"UIViewElementContext","abstract":"\u003cp\u003eContext object passed into \u003ccode\u003eupdateUIView\u003c/code\u003e.\u003c/p\u003e"},"Structs/FocusBinding.html":{"name":"FocusBinding","abstract":"\u003cp\u003eA two-way binding between a focusable element\u0026rsquo;s backing view and a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/FocusState.html\"\u003eFocusState\u003c/a\u003e\u003c/code\u003e-wrapped"},"Structs/FocusState.html":{"name":"FocusState","abstract":"\u003cp\u003eA property wrapper type that can read and write a value that represents the placement of focus.\u003c/p\u003e"},"Structs/Alignment.html":{"name":"Alignment","abstract":"\u003cp\u003eAn alignment in both axes.\u003c/p\u003e"},"Structs/HorizontalAlignment.html":{"name":"HorizontalAlignment","abstract":"\u003cp\u003eAn alignment position along the horizontal axis.\u003c/p\u003e"},"Structs/VerticalAlignment.html":{"name":"VerticalAlignment","abstract":"\u003cp\u003eAn alignment position along the vertical axis.\u003c/p\u003e"},"Structs/AspectRatio.html":{"name":"AspectRatio","abstract":"\u003cp\u003eRepresents an a proportional relationship between width and height.\u003c/p\u003e"},"Structs/Builder.html":{"name":"Builder","abstract":"\u003cp\u003eGeneric result builder for converting blocks of \u003ccode\u003eChild...\u003c/code\u003e into \u003ccode\u003e[Child]\u003c/code\u003e.\u003c/p\u003e"},"Structs/Decorate.html":{"name":"Decorate","abstract":"\u003cp\u003ePlaces a decoration element behind or in front of the given \u003ccode\u003ewrapped\u003c/code\u003e element,"},"Structs/ElementDimensions.html":{"name":"ElementDimensions","abstract":"\u003cp\u003eAn element’s size and its alignment guides in its own coordinate space.\u003c/p\u003e"},"Structs/Flow.html":{"name":"Flow","abstract":"\u003cp\u003eElement which lays out children horizontally, wrapping to another row when there is not enough space.\u003c/p\u003e"},"Structs/GeometryProxy.html":{"name":"GeometryProxy","abstract":"\u003cp\u003eContains information about the current layout being measured by GeometryReader\u003c/p\u003e"},"Structs/GridRow.html":{"name":"GridRow","abstract":"\u003cp\u003eLike \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Row.html\"\u003eRow\u003c/a\u003e\u003c/code\u003e, \u003ccode\u003eGridRow\u003c/code\u003e displays a list of items in a linear horizontal layout. Unlike \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Row.html\"\u003eRow\u003c/a\u003e\u003c/code\u003e, \u003ccode\u003eGridRow\u003c/code\u003e provides"},"Structs/Hidden.html":{"name":"Hidden","abstract":"\u003cp\u003e\u003ccode\u003eHidden\u003c/code\u003e conditionally hides its wrapped element.\u003c/p\u003e"},"Structs/Keyed.html":{"name":"Keyed","abstract":"\u003cp\u003e\u003ccode\u003eKeyed\u003c/code\u003e allows providing a \u003ccode\u003eHashable\u003c/code\u003e value which is used"},"Structs/LayoutAttributes.html":{"name":"LayoutAttributes","abstract":"\u003cp\u003eContains layout-related metrics for an element.\u003c/p\u003e"},"Structs/LayoutOptions.html":{"name":"LayoutOptions","abstract":"\u003cp\u003eConfiguration options for \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbEnums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO11caffeinatedACvpZ\"\u003ecaffeinated\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Structs/LayoutSubelement.html":{"name":"LayoutSubelement","abstract":"\u003cp\u003eA proxy that represents one child element of a layout.\u003c/p\u003e"},"Structs/LayoutWriter.html":{"name":"LayoutWriter","abstract":"\u003cp\u003eA parent element which allows arbitrary, custom layout and positioning of its children.\u003c/p\u003e"},"Structs/LifecycleObserver.html":{"name":"LifecycleObserver","abstract":"\u003cp\u003eAllows element lifecycle callbacks to be inserted anywhere into the element tree.\u003c/p\u003e"},"Structs/Opacity.html":{"name":"Opacity","abstract":"\u003cp\u003eChanges the opacity of the wrapped element.\u003c/p\u003e"},"Structs/StackLayout.html":{"name":"StackLayout","abstract":"\u003cp\u003eA layout implementation that linearly lays out an array of children along either the horizontal or vertical axis.\u003c/p\u003e"},"Structs/TintAdjustmentMode.html":{"name":"TintAdjustmentMode","abstract":"\u003cp\u003e\u003ccode\u003eTintAdjustmentMode\u003c/code\u003e conditionally modifies the tint adjustment mode of its wrapped element.\u003c/p\u003e"},"Structs/Transformed.html":{"name":"Transformed","abstract":"\u003cp\u003eChanges the transform of the wrapped element.\u003c/p\u003e"},"Structs/UnitPoint.html":{"name":"UnitPoint","abstract":"\u003cp\u003eA normalized point in an element\u0026rsquo;s coordinate space.\u003c/p\u003e"},"Structs/UserInteractionEnabled.html":{"name":"UserInteractionEnabled","abstract":"\u003cp\u003e\u003ccode\u003eUserInteractionEnabled\u003c/code\u003e conditionally enables user interaction of its wrapped element.\u003c/p\u003e"},"Structs/SizeConstraint.html":{"name":"SizeConstraint","abstract":"\u003cp\u003eDefines the maximum size for a measurement.\u003c/p\u003e"},"Structs/AnimationAttributes.html":{"name":"AnimationAttributes","abstract":"\u003cp\u003eUIView animation configuration values.\u003c/p\u003e"},"Structs/AccessibilityFocus.html":{"name":"AccessibilityFocus","abstract":"\u003cp\u003eEnables VoiceOver focus to jump to the wrapped element via a trigger that can be manually fired.\u003c/p\u003e"},"Structs/URLHandlerEnvironmentKey.html":{"name":"URLHandlerEnvironmentKey"},"Structs/EditingMenu.html":{"name":"EditingMenu","abstract":"\u003cp\u003eAllows showing the system\u0026rsquo;s \u003ccode\u003eUIMenuController\u003c/code\u003e editing menu.\u003c/p\u003e"},"Structs/EditingMenuItem.html":{"name":"EditingMenuItem","abstract":"\u003cp\u003eA single item in an editing menu.\u003c/p\u003e"},"Structs/TextShadow.html":{"name":"TextShadow","abstract":"\u003cp\u003eDescribes a shadow that can be applied to text elements, like \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Label.html\"\u003eLabel\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Protocols/URLHandler.html#/s:25BlueprintUICommonControls10URLHandlerP5onTap3urly10Foundation3URLV_tF":{"name":"onTap(url:)","parent_name":"URLHandler"},"Protocols/NativeView.html#/s:11BlueprintUI10NativeViewPAASo6UIViewCRbzrlE8describeyAA0D11DescriptionVyAH13ConfigurationVy_xGzXEFZ":{"name":"describe(_:)","abstract":"\u003cp\u003eGenerates a view description for the receiving class.","parent_name":"NativeView"},"Protocols/Measurable.html#/s:11BlueprintUI10MeasurableP7measure2inSo6CGSizeVAA14SizeConstraintV_tF":{"name":"measure(in:)","abstract":"\u003cp\u003eMeasures the required size of the receiver.\u003c/p\u003e","parent_name":"Measurable"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementPxycfc":{"name":"init()","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementP6layoutAA0C6LayoutVvp":{"name":"layout","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementP8childrenSayAA0D0_p7element_AA0C6LayoutV6TraitsV6traitss11AnyHashableVSg3keytGvp":{"name":"children","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementPAAEyxyxzXEcfc":{"name":"init(_:)","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementPAAE3add12growPriority06shrinkG014alignmentGuide3key5childy14CoreFoundation7CGFloatV_A2lA0D10DimensionsVcSgs11AnyHashableVSgAA0D0_ptF":{"name":"add(growPriority:shrinkPriority:alignmentGuide:key:child:)","abstract":"\u003cp\u003eAdds a given child element to the stack.\u003c/p\u003e","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementPAAE8addFixed14alignmentGuide3key5childy14CoreFoundation7CGFloatVAA0D10DimensionsVcSg_s11AnyHashableVSgAA0D0_ptF":{"name":"addFixed(alignmentGuide:key:child:)","abstract":"\u003cp\u003eConvenience method for adding a child with a grow and shrink priority of 0.0.\u003c/p\u003e","parent_name":"StackElement"},"Protocols/StackElement.html#/s:11BlueprintUI12StackElementPAAE11addFlexible14alignmentGuide3key5childy14CoreFoundation7CGFloatVAA0D10DimensionsVcSg_s11AnyHashableVSgAA0D0_ptF":{"name":"addFlexible(alignmentGuide:key:child:)","abstract":"\u003cp\u003eConvenience method for adding a child with a grow and shrink priority of 1.0.\u003c/p\u003e","parent_name":"StackElement"},"Protocols/CaffeinatedSingleChildLayout.html#/s:11BlueprintUI28CaffeinatedSingleChildLayoutP10Subelementa":{"name":"Subelement","parent_name":"CaffeinatedSingleChildLayout"},"Protocols/CaffeinatedSingleChildLayout.html#/s:11BlueprintUI28CaffeinatedSingleChildLayoutP5CacheQa":{"name":"Cache","abstract":"\u003cp\u003eCached values associated with the layout instance.\u003c/p\u003e","parent_name":"CaffeinatedSingleChildLayout"},"Protocols/CaffeinatedSingleChildLayout.html#/s:11BlueprintUI28CaffeinatedSingleChildLayoutP12sizeThatFits8proposal10subelement11environment5cacheSo6CGSizeVAA14SizeConstraintV_AA0F10SubelementVAA11EnvironmentV5CacheQzztF":{"name":"sizeThatFits(proposal:subelement:environment:cache:)","abstract":"\u003cp\u003eReturns the size of the element, given a proposed size constraint and the container\u0026rsquo;s","parent_name":"CaffeinatedSingleChildLayout"},"Protocols/CaffeinatedSingleChildLayout.html#/s:11BlueprintUI28CaffeinatedSingleChildLayoutP15placeSubelement2in10subelement11environment5cacheySo6CGSizeV_AA0fH0VAA11EnvironmentV5CacheQzztF":{"name":"placeSubelement(in:subelement:environment:cache:)","abstract":"\u003cp\u003eAssigns a position to the layout’s subelement.\u003c/p\u003e","parent_name":"CaffeinatedSingleChildLayout"},"Protocols/CaffeinatedSingleChildLayout.html#/s:11BlueprintUI28CaffeinatedSingleChildLayoutP9makeCache10subelement11environment0H0QzAA0F10SubelementV_AA11EnvironmentVtF":{"name":"makeCache(subelement:environment:)","abstract":"\u003cp\u003eCreates and initializes a cache for a layout instance.\u003c/p\u003e","parent_name":"CaffeinatedSingleChildLayout"},"Protocols/LegacySingleChildLayout.html#/s:11BlueprintUI23LegacySingleChildLayoutP7measure2in5childSo6CGSizeVAA14SizeConstraintV_AA10Measurable_ptF":{"name":"measure(in:child:)","abstract":"\u003cp\u003eComputes the size that this layout requires\u003c/p\u003e","parent_name":"LegacySingleChildLayout"},"Protocols/LegacySingleChildLayout.html#/s:11BlueprintUI23LegacySingleChildLayoutP6layout4size5childAA0F10AttributesVSo6CGSizeV_AA10Measurable_ptF":{"name":"layout(size:child:)","abstract":"\u003cp\u003eGenerates layout attributes for the child.\u003c/p\u003e","parent_name":"LegacySingleChildLayout"},"Protocols/CaffeinatedLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP11Subelementsa":{"name":"Subelements","parent_name":"CaffeinatedLayout"},"Protocols/CaffeinatedLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP5CacheQa":{"name":"Cache","abstract":"\u003cp\u003eCached values associated with the layout instance.\u003c/p\u003e","parent_name":"CaffeinatedLayout"},"Protocols/CaffeinatedLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP12sizeThatFits8proposal11subelements11environment5cacheSo6CGSizeVAA14SizeConstraintV_SayAA0D10SubelementVGAA11EnvironmentV5CacheQzztF":{"name":"sizeThatFits(proposal:subelements:environment:cache:)","abstract":"\u003cp\u003eReturns the size of the composite element, given a proposed size constraint and the","parent_name":"CaffeinatedLayout"},"Protocols/CaffeinatedLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP16placeSubelements2in11subelements11environment5cacheySo6CGSizeV_SayAA0D10SubelementVGAA11EnvironmentV5CacheQzztF":{"name":"placeSubelements(in:subelements:environment:cache:)","abstract":"\u003cp\u003eAssigns positions to each of the layout’s subelements.\u003c/p\u003e","parent_name":"CaffeinatedLayout"},"Protocols/CaffeinatedLayout.html#/s:11BlueprintUI17CaffeinatedLayoutP9makeCache11subelements11environment0F0QzSayAA0D10SubelementVG_AA11EnvironmentVtF":{"name":"makeCache(subelements:environment:)","abstract":"\u003cp\u003eCreates and initializes a cache for a layout instance.\u003c/p\u003e","parent_name":"CaffeinatedLayout"},"Protocols/LegacyLayout.html#/s:11BlueprintUI12LegacyLayoutP6TraitsQa":{"name":"Traits","abstract":"\u003cp\u003ePer-item metadata that is used during the measuring and layout pass.\u003c/p\u003e","parent_name":"LegacyLayout"},"Protocols/LegacyLayout.html#/s:11BlueprintUI12LegacyLayoutP7measure2in5itemsSo6CGSizeVAA14SizeConstraintV_Say6TraitsQz6traits_AA10Measurable_p7contenttGtF":{"name":"measure(in:items:)","abstract":"\u003cp\u003eComputes the size that this layout requires in a layout, given an array of children and","parent_name":"LegacyLayout"},"Protocols/LegacyLayout.html#/s:11BlueprintUI12LegacyLayoutP6layout4size5itemsSayAA0D10AttributesVGSo6CGSizeV_Say6TraitsQz6traits_AA10Measurable_p7contenttGtF":{"name":"layout(size:items:)","abstract":"\u003cp\u003eGenerates layout attributes for the given items.\u003c/p\u003e","parent_name":"LegacyLayout"},"Protocols/LegacyLayout.html#/s:11BlueprintUI12LegacyLayoutP13defaultTraits0F0QzvpZ":{"name":"defaultTraits","abstract":"\u003cp\u003eReturns a default traits object.\u003c/p\u003e","parent_name":"LegacyLayout"},"Protocols/ElementBuilderChild.html#/s:11BlueprintUI19ElementBuilderChildPyxAA0C0_pcfc":{"name":"init(_:)","parent_name":"ElementBuilderChild"},"Protocols/AlignmentID.html#/s:11BlueprintUI11AlignmentIDP12defaultValue2in14CoreFoundation7CGFloatVAA17ElementDimensionsV_tFZ":{"name":"defaultValue(in:)","abstract":"\u003cp\u003eReturns the value of the corresponding guide, in \u003ccode\u003econtext\u003c/code\u003e, when not","parent_name":"AlignmentID"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementP0C4TypeQa":{"name":"UIViewType","abstract":"\u003cp\u003eThe type of the view associated with the element.\u003c/p\u003e","parent_name":"UIViewElement"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementP04makeC00C4TypeQzyF":{"name":"makeUIView()","abstract":"\u003cp\u003eCreate and return a new instance of the provided view type.\u003c/p\u003e","parent_name":"UIViewElement"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementP06updateC0_4withy0C4TypeQz_AA0cD7ContextVtF":{"name":"updateUIView(_:with:)","abstract":"\u003cp\u003eUpdate the view instance with the content from the element. The context provides additional","parent_name":"UIViewElement"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementP4size_8thatFitsSo6CGSizeVAG_0C4TypeQztF":{"name":"size(_:thatFits:)","abstract":"\u003cp\u003eReturns the sizing measurement for the element for the provided","parent_name":"UIViewElement"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementPAAE7contentAA0D7ContentVvp":{"name":"content","abstract":"\u003cp\u003eDefer to the reused measurement view to provide the size of the element.\u003c/p\u003e","parent_name":"UIViewElement"},"Protocols/UIViewElement.html#/s:11BlueprintUI13UIViewElementPAAE22backingViewDescription4withAA0fG0VSgAA0fG7ContextV_tF":{"name":"backingViewDescription(with:)","abstract":"\u003cp\u003eProvide the view for the element.\u003c/p\u003e","parent_name":"UIViewElement"},"Protocols/BlueprintViewMetricsDelegate.html#/s:11BlueprintUI0A19ViewMetricsDelegateP09blueprintC0_19completedRenderWithyAA0aC0C_AA0achD0VtF":{"name":"blueprintView(_:completedRenderWith:)","parent_name":"BlueprintViewMetricsDelegate"},"Protocols/AttributedTextKey.html#/s:11BlueprintUI17AttributedTextKeyP5ValueQa":{"name":"Value","parent_name":"AttributedTextKey"},"Protocols/AttributedTextKey.html#/s:11BlueprintUI17AttributedTextKeyP4nameSo018NSAttributedStringE0avpZ":{"name":"name","parent_name":"AttributedTextKey"},"Protocols/AttributedTextKey.html":{"name":"AttributedTextKey","abstract":"\u003cp\u003eDefine \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AttributedText.html\"\u003eAttributedText\u003c/a\u003e\u003c/code\u003e keys using this protocol. Keys must have an attribute name"},"Protocols/BlueprintViewMetricsDelegate.html":{"name":"BlueprintViewMetricsDelegate","abstract":"\u003cp\u003eProvides performance information for blueprint layouts and updates.\u003c/p\u003e"},"Protocols/UIViewElement.html":{"name":"UIViewElement","abstract":"\u003cp\u003eAn element type which makes it easier to wrap an existing \u003ccode\u003eUIView\u003c/code\u003e instance that"},"Protocols/AlignmentID.html":{"name":"AlignmentID","abstract":"\u003cp\u003eTypes used to identify alignment guides.\u003c/p\u003e"},"Protocols/ElementBuilderChild.html":{"name":"ElementBuilderChild","abstract":"\u003cp\u003eDefines a way for an\u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Element.html\"\u003eElement\u003c/a\u003e\u003c/code\u003e to be implicitly converted into the conforming type (the child of a container)."},"Protocols.html#/s:11BlueprintUI6LayoutP":{"name":"Layout","abstract":"\u003cp\u003eA type that defines the geometry of a collection of elements.\u003c/p\u003e"},"Protocols/LegacyLayout.html":{"name":"LegacyLayout"},"Protocols/CaffeinatedLayout.html":{"name":"CaffeinatedLayout"},"Protocols.html#/s:11BlueprintUI17SingleChildLayoutP":{"name":"SingleChildLayout","abstract":"\u003cp\u003eA type that defines the geometry of a single element.\u003c/p\u003e"},"Protocols/LegacySingleChildLayout.html":{"name":"LegacySingleChildLayout"},"Protocols/CaffeinatedSingleChildLayout.html":{"name":"CaffeinatedSingleChildLayout"},"Protocols/StackElement.html":{"name":"StackElement","abstract":"\u003cp\u003eConforming types (Row and Column) act as StackLayout powered containers.\u003c/p\u003e"},"Protocols/Measurable.html":{"name":"Measurable","abstract":"\u003cp\u003eConforming types can calculate the size that they require within a layout.\u003c/p\u003e"},"Protocols/NativeView.html":{"name":"NativeView","abstract":"\u003cp\u003eMarker protocol used by generic extensions to native views (e.g. \u003ccode\u003eUIView\u003c/code\u003e).\u003c/p\u003e"},"Protocols/URLHandler.html":{"name":"URLHandler","abstract":"\u003cp\u003eConform to this protocol to handle links tapped in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AttributedLabel.html\"\u003eAttributedLabel\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Extensions/UIOffset.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"UIOffset"},"Extensions/AXCustomContent.html#/s:So15AXCustomContentC25BlueprintUICommonControlsEyAbC20AccessibilityElementV06CustomB0Vcfc":{"name":"init(_:)","parent_name":"AXCustomContent"},"Extensions/AXCustomContent.html#/s:So15AXCustomContentC25BlueprintUICommonControlsE5label5value10importanceABSS_SSSgSo0aB10ImportanceVtcfc":{"name":"init(label:value:importance:)","parent_name":"AXCustomContent"},"Extensions/UIAccessibilityTraits.html#/s:So21UIAccessibilityTraitsa25BlueprintUICommonControlsE4withABShyAC20AccessibilityElementV5TraitOG_tcfc":{"name":"init(with:)","parent_name":"UIAccessibilityTraits"},"Extensions/ElementBuilder.html#/s:11BlueprintUI7BuilderVA2A07ElementC5ChildRzlE15buildExpressionySayxGAA0D0_pFZ":{"name":"buildExpression(_:)","abstract":"\u003cp\u003eAllow an Element to be implicitly converted into \u003ccode\u003eChild\u003c/code\u003e.\u003c/p\u003e","parent_name":"ElementBuilder"},"Extensions/ElementBuilder.html#/s:11BlueprintUI7BuilderVA2A07ElementC5ChildRzlE15buildExpressionySayxGAA0D0_pSgFZ":{"name":"buildExpression(_:)","abstract":"\u003cp\u003eAllow an Optional Element to be unwrapped and implicitly converted into \u003ccode\u003eChild\u003c/code\u003e.\u003c/p\u003e","parent_name":"ElementBuilder"},"Extensions/ElementBuilder.html#/s:11BlueprintUI7BuilderVA2A07ElementC5ChildRzlE15buildExpressionySayxGSayAA0D0_pGFZ":{"name":"buildExpression(_:)","abstract":"\u003cp\u003eAllow Elements to be implicitly converted into \u003ccode\u003eChild\u003c/code\u003e.\u003c/p\u003e","parent_name":"ElementBuilder"},"Extensions/ElementBuilder.html#/s:11BlueprintUI7BuilderVA2A7OverlayV5ChildVRszlE15buildExpressionySayAGGAA5KeyedVFZ":{"name":"buildExpression(_:)","parent_name":"ElementBuilder"},"Extensions/ElementBuilder.html#/s:11BlueprintUI7BuilderVA2A11StackLayoutV5ChildVRszlE15buildExpressionySayAGGAA5KeyedVFZ":{"name":"buildExpression(_:)","parent_name":"ElementBuilder"},"Extensions/FloatingPoint.html#/s:SF11BlueprintUIE17replacingInfinity4withxx_tF":{"name":"replacingInfinity(with:)","abstract":"\u003cp\u003eReturns \u003ccode\u003ereplacement\u003c/code\u003e if \u003ccode\u003eself.isInfinite\u003c/code\u003e is \u003ccode\u003etrue\u003c/code\u003e, or \u003ccode\u003eself\u003c/code\u003e if \u003ccode\u003eself\u003c/code\u003e is finite.\u003c/p\u003e","parent_name":"FloatingPoint"},"Extensions/FloatingPoint.html#/s:SF11BlueprintUIE5round_2byys25FloatingPointRoundingRuleO_xtF":{"name":"round(_:by:)","abstract":"\u003cp\u003eRounds this value to the specified scale, where the scale is the number of rounding stops per integer.\u003c/p\u003e","parent_name":"FloatingPoint"},"Extensions/FloatingPoint.html#/s:SF11BlueprintUIE7rounded_2byxs25FloatingPointRoundingRuleO_xtF":{"name":"rounded(_:by:)","abstract":"\u003cp\u003eReturns this value rounded to the specified scale, where the scale is the number of rounding stops per integer.\u003c/p\u003e","parent_name":"FloatingPoint"},"Extensions/CGSize.html#/s:So6CGSizeV11BlueprintUIE8infinityABvpZ":{"name":"infinity","abstract":"\u003cp\u003eA size with \u003ccode\u003einfinity\u003c/code\u003e in both dimensions.\u003c/p\u003e","parent_name":"CGSize"},"Extensions/CGSize.html#/s:So6CGSizeV11BlueprintUIE17replacingInfinity4withA2B_tF":{"name":"replacingInfinity(with:)","abstract":"\u003cp\u003eReturns a size with infinite dimensions replaced by the values from the given replacement.\u003c/p\u003e","parent_name":"CGSize"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E7iPhone7ACvpZ":{"name":"iPhone7","abstract":"\u003cp\u003eiPhone 7\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E11iPhone7PlusACvpZ":{"name":"iPhone7Plus","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E7iPhone8ACvpZ":{"name":"iPhone8","abstract":"\u003cp\u003eiPhone 8\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E11iPhone8PlusACvpZ":{"name":"iPhone8Plus","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E10iPhoneSE_1ACvpZ":{"name":"iPhoneSE_1","abstract":"\u003cp\u003eiPhone SE\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E10iPhoneSE_2ACvpZ":{"name":"iPhoneSE_2","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E7iPhoneXACvpZ":{"name":"iPhoneX","abstract":"\u003cp\u003eiPhone X\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E8iPhoneXsACvpZ":{"name":"iPhoneXs","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E11iPhoneXsMaxACvpZ":{"name":"iPhoneXsMax","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E8iPhoneXrACvpZ":{"name":"iPhoneXr","abstract":"\u003cp\u003eiPhone Xr\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E10iPadMini_4ACvpZ":{"name":"iPadMini_4","abstract":"\u003cp\u003eiPad Mini\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E10iPadMini_5ACvpZ":{"name":"iPadMini_5","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E9iPadAir_2ACvpZ":{"name":"iPadAir_2","abstract":"\u003cp\u003eiPad Air\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E9iPadAir_3ACvpZ":{"name":"iPadAir_3","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E6iPad_5ACvpZ":{"name":"iPad_5","abstract":"\u003cp\u003eiPad\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E6iPad_6ACvpZ":{"name":"iPad_6","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E11iPadPro_9_7ACvpZ":{"name":"iPadPro_9_7","abstract":"\u003cp\u003eiPad Pro\u003c/p\u003e","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E12iPadPro_10_5ACvpZ":{"name":"iPadPro_10_5","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E12iPadPro_11_1ACvpZ":{"name":"iPadPro_11_1","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E12iPadPro_11_2ACvpZ":{"name":"iPadPro_11_2","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E14iPadPro_12_9_1ACvpZ":{"name":"iPadPro_12_9_1","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E14iPadPro_12_9_2ACvpZ":{"name":"iPadPro_12_9_2","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html#/s:7SwiftUI13PreviewDeviceV09BlueprintB0E14iPadPro_12_9_3ACvpZ":{"name":"iPadPro_12_9_3","parent_name":"PreviewDevice"},"Extensions/PreviewDevice.html":{"name":"PreviewDevice","abstract":"\u003cp\u003eThe available devices to be used for previewing elements in an Xcode preview.\u003c/p\u003e"},"Extensions/CGSize.html":{"name":"CGSize"},"Extensions/FloatingPoint.html":{"name":"FloatingPoint"},"Extensions/ElementBuilder.html":{"name":"ElementBuilder"},"Extensions.html#/c:objc(cs)UIView":{"name":"UIView"},"Extensions/UIAccessibilityTraits.html":{"name":"UIAccessibilityTraits"},"Extensions/AXCustomContent.html":{"name":"AXCustomContent"},"Extensions/UIOffset.html":{"name":"UIOffset"},"Enums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO7defaultACvpZ":{"name":"default","parent_name":"LayoutMode"},"Enums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO6legacyyA2CmF":{"name":"legacy","abstract":"\u003cp\u003eThe \u0026ldquo;standard\u0026rdquo; layout system.\u003c/p\u003e","parent_name":"LayoutMode"},"Enums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO11caffeinatedyAcA0C7OptionsV_tcACmF":{"name":"caffeinated(options:)","abstract":"\u003cp\u003eA newer layout system with some optimizations made possible by ensuring elements adhere","parent_name":"LayoutMode"},"Enums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO11caffeinatedACvpZ":{"name":"caffeinated","abstract":"\u003cp\u003eA newer layout system with some optimizations made possible by ensuring elements adhere","parent_name":"LayoutMode"},"Enums/LayoutMode.html#/s:11BlueprintUI10LayoutModeO4nameSSvp":{"name":"name","abstract":"\u003cp\u003eThe name of the layout mode.\u003c/p\u003e","parent_name":"LayoutMode"},"Enums/LayoutMode.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"LayoutMode"},"Enums/BlueprintLogging/Config.html#/s:11BlueprintUI0A7LoggingO6ConfigV21recordElementMeasuresSbvp":{"name":"recordElementMeasures","abstract":"\u003cp\u003eWhen \u003ccode\u003etrue\u003c/code\u003e, timing data will be logged when measuring each \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Element.html\"\u003eElement\u003c/a\u003e\u003c/code\u003e\u003c/p\u003e","parent_name":"Config"},"Enums/BlueprintLogging/Config.html#/s:11BlueprintUI0A7LoggingO6ConfigV21recordElementMeasuresAESb_tcfc":{"name":"init(recordElementMeasures:)","parent_name":"Config"},"Enums/BlueprintLogging/Config.html#/s:11BlueprintUI0A7LoggingO6ConfigV4liteAEvpZ":{"name":"lite","abstract":"\u003cp\u003eLogging configuration that will not record measurement data for all \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Element.html\"\u003eElement\u003c/a\u003e\u003c/code\u003es.","parent_name":"Config"},"Enums/BlueprintLogging/Config.html#/s:11BlueprintUI0A7LoggingO6ConfigV7verboseAEvpZ":{"name":"verbose","abstract":"\u003cp\u003eLogging configuration that includes measurement data.","parent_name":"Config"},"Enums/BlueprintLogging/Config.html":{"name":"Config","abstract":"\u003cp\u003eConfiguration for logging options\u003c/p\u003e","parent_name":"BlueprintLogging"},"Enums/BlueprintLogging.html#/s:11BlueprintUI0A7LoggingO6configAC6ConfigVvpZ":{"name":"config","abstract":"\u003cp\u003eLogging configuration\u003c/p\u003e","parent_name":"BlueprintLogging"},"Enums/BlueprintLogging.html#/s:11BlueprintUI0A7LoggingO9isEnabledSbvpZ":{"name":"isEnabled","abstract":"\u003cp\u003eIf enabled, Blueprint will emit signpost logs. You can view these logs in Instruments to","parent_name":"BlueprintLogging"},"Enums/LinkKey.html#/s:11BlueprintUI7LinkKeyO5Valuea":{"name":"Value","parent_name":"LinkKey"},"Enums/LinkKey.html#/s:11BlueprintUI7LinkKeyO4nameSo018NSAttributedStringD0avpZ":{"name":"name","parent_name":"LinkKey"},"Enums/ParagraphStyleKey.html#/s:11BlueprintUI17ParagraphStyleKeyO5Valuea":{"name":"Value","parent_name":"ParagraphStyleKey"},"Enums/ParagraphStyleKey.html#/s:11BlueprintUI17ParagraphStyleKeyO4nameSo018NSAttributedStringE0avpZ":{"name":"name","parent_name":"ParagraphStyleKey"},"Enums/UnderlineColorKey.html#/s:11BlueprintUI17UnderlineColorKeyO5Valuea":{"name":"Value","parent_name":"UnderlineColorKey"},"Enums/UnderlineColorKey.html#/s:11BlueprintUI17UnderlineColorKeyO4nameSo018NSAttributedStringE0avpZ":{"name":"name","parent_name":"UnderlineColorKey"},"Enums/UnderlineStyleKey.html#/s:11BlueprintUI17UnderlineStyleKeyO5Valuea":{"name":"Value","parent_name":"UnderlineStyleKey"},"Enums/UnderlineStyleKey.html#/s:11BlueprintUI17UnderlineStyleKeyO4nameSo018NSAttributedStringE0avpZ":{"name":"name","parent_name":"UnderlineStyleKey"},"Enums/TrackingKey.html#/s:11BlueprintUI11TrackingKeyO5Valuea":{"name":"Value","parent_name":"TrackingKey"},"Enums/TrackingKey.html#/s:11BlueprintUI11TrackingKeyO4nameSo018NSAttributedStringD0avpZ":{"name":"name","parent_name":"TrackingKey"},"Enums/ColorKey.html#/s:11BlueprintUI8ColorKeyO5Valuea":{"name":"Value","parent_name":"ColorKey"},"Enums/ColorKey.html#/s:11BlueprintUI8ColorKeyO4nameSo018NSAttributedStringD0avpZ":{"name":"name","parent_name":"ColorKey"},"Enums/FontKey.html#/s:11BlueprintUI7FontKeyO5Valuea":{"name":"Value","parent_name":"FontKey"},"Enums/FontKey.html#/s:11BlueprintUI7FontKeyO4nameSo018NSAttributedStringD0avpZ":{"name":"name","parent_name":"FontKey"},"Enums/FontKey.html":{"name":"FontKey"},"Enums/ColorKey.html":{"name":"ColorKey"},"Enums/TrackingKey.html":{"name":"TrackingKey"},"Enums/UnderlineStyleKey.html":{"name":"UnderlineStyleKey"},"Enums/UnderlineColorKey.html":{"name":"UnderlineColorKey"},"Enums/ParagraphStyleKey.html":{"name":"ParagraphStyleKey"},"Enums/LinkKey.html":{"name":"LinkKey"},"Enums/BlueprintLogging.html":{"name":"BlueprintLogging","abstract":"\u003cp\u003eNamespace for logging config.\u003c/p\u003e"},"Enums/LayoutMode.html":{"name":"LayoutMode","abstract":"\u003cp\u003eControls the layout system that Blueprint uses to lay out elements.\u003c/p\u003e"},"Classes/FocusTrigger.html#/s:11BlueprintUI12FocusTriggerCACycfc":{"name":"init()","abstract":"\u003cp\u003eCreate a new trigger, not yet bound to any view.\u003c/p\u003e","parent_name":"FocusTrigger"},"Classes/FocusTrigger.html#/s:11BlueprintUI12FocusTriggerC11focusActionyycSgvp":{"name":"focusAction","abstract":"\u003cp\u003eThe action to be invoked on focus, which will be set by a backing view.\u003c/p\u003e","parent_name":"FocusTrigger"},"Classes/FocusTrigger.html#/s:11BlueprintUI12FocusTriggerC10blurActionyycSgvp":{"name":"blurAction","abstract":"\u003cp\u003eThe action to be invoked on blur, which will be set by a backing view.\u003c/p\u003e","parent_name":"FocusTrigger"},"Classes/FocusTrigger.html#/s:11BlueprintUI12FocusTriggerC5focusyyF":{"name":"focus()","abstract":"\u003cp\u003eFocuses the backing view bound to this trigger.\u003c/p\u003e","parent_name":"FocusTrigger"},"Classes/FocusTrigger.html#/s:11BlueprintUI12FocusTriggerC4bluryyF":{"name":"blur()","abstract":"\u003cp\u003eBlurs (removes focus from) the backing view bound to this trigger.\u003c/p\u003e","parent_name":"FocusTrigger"},"Classes/FocusTrigger.html":{"name":"FocusTrigger","abstract":"\u003cp\u003eA trigger for focus and blur actions.\u003c/p\u003e"},"Protocols/EnvironmentKey.html#/s:11BlueprintUI14EnvironmentKeyP5ValueQa":{"name":"Value","abstract":"\u003cp\u003eThe type of value stored by this key.\u003c/p\u003e","parent_name":"EnvironmentKey"},"Protocols/EnvironmentKey.html#/s:11BlueprintUI14EnvironmentKeyP12defaultValue0F0QzvpZ":{"name":"defaultValue","abstract":"\u003cp\u003eThe default value that will be vended by an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Environment.html\"\u003eEnvironment\u003c/a\u003e\u003c/code\u003e for this key if no other value","parent_name":"EnvironmentKey"},"Structs/Environment/LayoutDirection.html#/s:11BlueprintUI11EnvironmentV15LayoutDirectionO11leftToRightyA2EmF":{"name":"leftToRight","parent_name":"LayoutDirection"},"Structs/Environment/LayoutDirection.html#/s:11BlueprintUI11EnvironmentV15LayoutDirectionO11rightToLeftyA2EmF":{"name":"rightToLeft","parent_name":"LayoutDirection"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV5emptyACvpZ":{"name":"empty","abstract":"\u003cp\u003eA default \u0026ldquo;empty\u0026rdquo; environment, with no values overridden.","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentVy5ValueQzxmcAA0C3KeyRzluip":{"name":"subscript(_:)","abstract":"\u003cp\u003eGets or sets an environment value by its key.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV22linkAccessibilityLabelSSSgvp":{"name":"linkAccessibilityLabel","abstract":"\u003cp\u003eThe localised accessibility label elements should use when handling links.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV8calendar10Foundation8CalendarVvp":{"name":"calendar","abstract":"\u003cp\u003eThe current calendar that elements should use when handling dates.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV12displayScale14CoreFoundation7CGFloatVvp":{"name":"displayScale","abstract":"\u003cp\u003eThe display scale of this environment.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment/LayoutDirection.html":{"name":"LayoutDirection","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV15layoutDirectionAC06LayoutE0Ovp":{"name":"layoutDirection","abstract":"\u003cp\u003eThe layout direction associated with the current environment.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV6locale10Foundation6LocaleVvp":{"name":"locale","abstract":"\u003cp\u003eThe current locale that elements should use.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV14safeAreaInsetsSo06UIEdgeF0Vvp":{"name":"safeAreaInsets","abstract":"\u003cp\u003eThe insets representing the safe area for content.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV8timeZone10Foundation04TimeE0Vvp":{"name":"timeZone","abstract":"\u003cp\u003eThe current time zone that elements should use when handling dates.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV10windowSizeSo6CGSizeVSgvp":{"name":"windowSize","abstract":"\u003cp\u003eThe size of the window that contains the hosting \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbClasses/BlueprintView.html\"\u003eBlueprintView\u003c/a\u003e\u003c/code\u003e.","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV10layoutModeAA06LayoutE0Ovp":{"name":"layoutMode","abstract":"\u003cp\u003eThis mode will be inherited by descendant BlueprintViews that do not have an explicit","parent_name":"Environment"},"Structs/Environment.html#/s:11BlueprintUI11EnvironmentV0A16UICommonControlsE10urlHandlerAD10URLHandler_pvp":{"name":"urlHandler","abstract":"\u003cp\u003eThe link handler to use to open links tapped in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AttributedLabel.html\"\u003eAttributedLabel\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"Environment"},"Structs/Environment.html":{"name":"Environment","abstract":"\u003cp\u003eEnvironment is a container for values to be passed down an element tree.\u003c/p\u003e"},"Protocols/EnvironmentKey.html":{"name":"EnvironmentKey","abstract":"\u003cp\u003eTypes conforming to this protocol can be used as keys in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Environment.html\"\u003eEnvironment\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV09appearingD00A2UI010VisibilityD0VSgvp":{"name":"appearingTransition","abstract":"\u003cp\u003eThe transition to apply when the wrapped element is appearing.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV012disappearingD00A2UI010VisibilityD0VSgvp":{"name":"disappearingTransition","abstract":"\u003cp\u003eThe transition to apply when the wrapped element is disappearing.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV06layoutD00A2UI06LayoutD0Ovp":{"name":"layoutTransition","abstract":"\u003cp\u003eThe transition to apply when the wrapped element\u0026rsquo;s layout is changing.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV14wrappedElement0A2UI0G0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe element to which transitions are being applied.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV8wrappingAC0A2UI7Element_p_tcfc":{"name":"init(wrapping:)","abstract":"\u003cp\u003eCreate a transition container wrapping an element.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:25BlueprintUICommonControls19TransitionContainerV09appearingD0012disappearingD006layoutD013transitioningAC0A2UI010VisibilityD0VSg_AkH06LayoutD0OAH7Element_ptcfc":{"name":"init(appearingTransition:disappearingTransition:layoutTransition:transitioning:)","abstract":"\u003cp\u003eCreate a transition container wrapping an element.\u003c/p\u003e","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"TransitionContainer"},"Structs/TransitionContainer.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"TransitionContainer"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV4textSSvp":{"name":"text","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV11placeholderSSvp":{"name":"placeholder","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV8onChangeySScSgvp":{"name":"onChange","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV6secureSbvp":{"name":"secure","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV9isEnabledSbvp":{"name":"isEnabled","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV13textAlignmentSo06NSTextG0Vvp":{"name":"textAlignment","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV4fontSo6UIFontCvp":{"name":"font","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV9textColorSo7UIColorCvp":{"name":"textColor","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV15clearButtonModeSo06UITexte4ViewH0Vvp":{"name":"clearButtonMode","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV12keyboardTypeSo010UIKeyboardG0Vvp":{"name":"keyboardType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV18keyboardAppearanceSo010UIKeyboardG0Vvp":{"name":"keyboardAppearance","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV22autocapitalizationTypeSo024UITextAutocapitalizationG0Vvp":{"name":"autocapitalizationType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV18autocorrectionTypeSo020UITextAutocorrectionG0Vvp":{"name":"autocorrectionType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV17spellCheckingTypeSo011UITextSpellgH0Vvp":{"name":"spellCheckingType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV15textContentTypeSo06UITextgH0aSgvp":{"name":"textContentType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV8onReturnyycSgvp":{"name":"onReturn","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV13returnKeyTypeSo08UIReturngH0Vvp":{"name":"returnKeyType","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV29enablesReturnKeyAutomaticallySbvp":{"name":"enablesReturnKeyAutomatically","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV12focusBinding0A2UI05FocusG0VSgvp":{"name":"focusBinding","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV19accessibilityTraitsShyAA20AccessibilityElementV5TraitOGSgvp":{"name":"accessibilityTraits","abstract":"\u003cp\u003eA set of accessibility traits that should be applied to the field, these will be merged with any existing traits.","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV4text9configureACSS_yACzXEtcfc":{"name":"init(text:configure:)","parent_name":"TextField"},"Structs/TextField.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"TextField"},"Structs/TextField.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV7focused4when6equalsAC0A2UI10FocusStateVyxSgG_xtSHRzlF":{"name":"focused(when:equals:)","abstract":"\u003cp\u003eModifies this text field by binding its focus state to the given state value.\u003c/p\u003e","parent_name":"TextField"},"Structs/TextField.html#/s:25BlueprintUICommonControls9TextFieldV7focused4whenAC0A2UI10FocusStateVySbG_tF":{"name":"focused(when:)","abstract":"\u003cp\u003eModifies this text field by binding its focus state to the given Boolean state value.\u003c/p\u003e","parent_name":"TextField"},"Structs/Tappable.html#/s:25BlueprintUICommonControls8TappableV14wrappedElement0A2UI0F0_pvp":{"name":"wrappedElement","parent_name":"Tappable"},"Structs/Tappable.html#/s:25BlueprintUICommonControls8TappableV5onTapyycvp":{"name":"onTap","parent_name":"Tappable"},"Structs/Tappable.html#/s:25BlueprintUICommonControls8TappableV5onTap8wrappingACyyc_0A2UI7Element_ptcfc":{"name":"init(onTap:wrapping:)","parent_name":"Tappable"},"Structs/Tappable.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Tappable"},"Structs/Tappable.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Tappable"},"Structs/Spacer.html#/s:11BlueprintUI6SpacerV4sizeSo6CGSizeVvp":{"name":"size","abstract":"\u003cp\u003eThe size that this spacer will take in a layout.\u003c/p\u003e","parent_name":"Spacer"},"Structs/Spacer.html#/s:11BlueprintUI6SpacerV4sizeACSo6CGSizeV_tcfc":{"name":"init(size:)","abstract":"\u003cp\u003eInitializes a new spacer with the given size.\u003c/p\u003e","parent_name":"Spacer"},"Structs/Spacer.html#/s:11BlueprintUI6SpacerV5width6heightAC14CoreFoundation7CGFloatV_AHtcfc":{"name":"init(width:height:)","abstract":"\u003cp\u003eInitializes a new spacer with the given width and height.\u003c/p\u003e","parent_name":"Spacer"},"Structs/Spacer.html#/s:11BlueprintUI6SpacerVyAC14CoreFoundation7CGFloatVcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a new spacer with the given value for the width and height.\u003c/p\u003e","parent_name":"Spacer"},"Structs/Spacer.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Spacer"},"Structs/Spacer.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Spacer"},"Structs/SegmentedControl/Item/Width.html#/s:25BlueprintUICommonControls16SegmentedControlV4ItemV5WidthO9automaticyA2GmF":{"name":"automatic","parent_name":"Width"},"Structs/SegmentedControl/Item/Width.html#/s:25BlueprintUICommonControls16SegmentedControlV4ItemV5WidthO8specificyAG14CoreFoundation7CGFloatVcAGmF":{"name":"specific(_:)","parent_name":"Width"},"Structs/SegmentedControl/Item.html#/s:25BlueprintUICommonControls16SegmentedControlV4ItemV5titleSSvp":{"name":"title","parent_name":"Item"},"Structs/SegmentedControl/Item.html#/s:25BlueprintUICommonControls16SegmentedControlV4ItemV5widthAE5WidthOvp":{"name":"width","parent_name":"Item"},"Structs/SegmentedControl/Item.html#/s:25BlueprintUICommonControls16SegmentedControlV4ItemV8onSelectyycvp":{"name":"onSelect","parent_name":"Item"},"Structs/SegmentedControl/Item/Width.html":{"name":"Width","parent_name":"Item"},"Structs/SegmentedControl/Selection.html#/s:25BlueprintUICommonControls16SegmentedControlV9SelectionO4noneyA2EmF":{"name":"none","parent_name":"Selection"},"Structs/SegmentedControl/Selection.html#/s:25BlueprintUICommonControls16SegmentedControlV9SelectionO5indexyAESicAEmF":{"name":"index(_:)","parent_name":"Selection"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV5itemsSayAC4ItemVGvp":{"name":"items","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV9selectionAC9SelectionOvp":{"name":"selection","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV4fontSo6UIFontCvp":{"name":"font","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV13roundingScale14CoreFoundation7CGFloatVvp":{"name":"roundingScale","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV5items9configureACSayAC4ItemVG_yACzXEtcfc":{"name":"init(items:configure:)","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV9selection4font11itemBuilderA2C9SelectionO_So6UIFontCSayAC4ItemVGyXEtcfc":{"name":"init(selection:font:itemBuilder:)","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:25BlueprintUICommonControls16SegmentedControlV10appendItem5title5width8onSelectySS_AC0G0V5WidthOyyctF":{"name":"appendItem(title:width:onSelect:)","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:11BlueprintUI10MeasurableP7measure2inSo6CGSizeVAA14SizeConstraintV_tF":{"name":"measure(in:)","parent_name":"SegmentedControl"},"Structs/SegmentedControl.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"SegmentedControl"},"Structs/SegmentedControl/Selection.html":{"name":"Selection","parent_name":"SegmentedControl"},"Structs/SegmentedControl/Item.html":{"name":"Item","parent_name":"SegmentedControl"},"Structs/ScrollView/ContentOffset/ScrollingContext.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV16ScrollingContextV11contentSizeSo6CGSizeVvp":{"name":"contentSize","parent_name":"ScrollingContext"},"Structs/ScrollView/ContentOffset/ScrollingContext.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV16ScrollingContextV06scrollE6BoundsSo6CGRectVvp":{"name":"scrollViewBounds","parent_name":"ScrollingContext"},"Structs/ScrollView/ContentOffset/ScrollingContext.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV16ScrollingContextV13contentInsetsSo06UIEdgeK0Vvp":{"name":"contentInsets","parent_name":"ScrollingContext"},"Structs/ScrollView/ContentOffset/ScrollingContext.html":{"name":"ScrollingContext","parent_name":"ContentOffset"},"Structs/ScrollView/ContentOffset.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV8Providera":{"name":"Provider","parent_name":"ContentOffset"},"Structs/ScrollView/ContentOffset.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV3topAEvpZ":{"name":"top","parent_name":"ContentOffset"},"Structs/ScrollView/ContentOffset.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV6bottomAEvpZ":{"name":"bottom","parent_name":"ContentOffset"},"Structs/ScrollView/ContentOffset.html#/s:25BlueprintUICommonControls10ScrollViewV13ContentOffsetV8providerAESo7CGPointVAE16ScrollingContextVc_tcfc":{"name":"init(provider:)","parent_name":"ContentOffset"},"Structs/ScrollView/ScrollTrigger.html#/s:25BlueprintUICommonControls10ScrollViewV0D7TriggerCAEycfc":{"name":"init()","parent_name":"ScrollTrigger"},"Structs/ScrollView/ScrollTrigger.html#/s:25BlueprintUICommonControls10ScrollViewV0D7TriggerC6scroll2to8animatedyAC13ContentOffsetV_SbtF":{"name":"scroll(to:animated:)","parent_name":"ScrollTrigger"},"Structs/ScrollView/PullToRefreshBehavior.html#/s:25BlueprintUICommonControls10ScrollViewV21PullToRefreshBehaviorO8disabledyA2EmF":{"name":"disabled","parent_name":"PullToRefreshBehavior"},"Structs/ScrollView/PullToRefreshBehavior.html#/s:25BlueprintUICommonControls10ScrollViewV21PullToRefreshBehaviorO7enabledyAEyyc_tcAEmF":{"name":"enabled(action:)","parent_name":"PullToRefreshBehavior"},"Structs/ScrollView/PullToRefreshBehavior.html#/s:25BlueprintUICommonControls10ScrollViewV21PullToRefreshBehaviorO10refreshingyA2EmF":{"name":"refreshing","parent_name":"PullToRefreshBehavior"},"Structs/ScrollView/ContentSize.html#/s:25BlueprintUICommonControls10ScrollViewV11ContentSizeO12fittingWidthyA2EmF":{"name":"fittingWidth","abstract":"\u003cp\u003eThe content will fill the height of the scroller, width will be dynamic\u003c/p\u003e","parent_name":"ContentSize"},"Structs/ScrollView/ContentSize.html#/s:25BlueprintUICommonControls10ScrollViewV11ContentSizeO13fittingHeightyA2EmF":{"name":"fittingHeight","abstract":"\u003cp\u003eThe content will fill the width of the scroller, height will be dynamic\u003c/p\u003e","parent_name":"ContentSize"},"Structs/ScrollView/ContentSize.html#/s:25BlueprintUICommonControls10ScrollViewV11ContentSizeO07fittingF0yA2EmF":{"name":"fittingContent","abstract":"\u003cp\u003eThe content size will be the minimum required to fit the content.\u003c/p\u003e","parent_name":"ContentSize"},"Structs/ScrollView/ContentSize.html#/s:25BlueprintUICommonControls10ScrollViewV11ContentSizeO6customyAESo6CGSizeVcAEmF":{"name":"custom(_:)","abstract":"\u003cp\u003eManually provided content size.\u003c/p\u003e","parent_name":"ContentSize"},"Structs/ScrollView/KeyboardAdjustmentMode.html#/s:25BlueprintUICommonControls10ScrollViewV22KeyboardAdjustmentModeO4noneyA2EmF":{"name":"none","parent_name":"KeyboardAdjustmentMode"},"Structs/ScrollView/KeyboardAdjustmentMode.html#/s:25BlueprintUICommonControls10ScrollViewV22KeyboardAdjustmentModeO18adjustsWhenVisibleyA2EmF":{"name":"adjustsWhenVisible","parent_name":"KeyboardAdjustmentMode"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV14wrappedElement0A2UI0G0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe content to be scrolled.\u003c/p\u003e","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV11contentSizeAC07ContentG0Ovp":{"name":"contentSize","abstract":"\u003cp\u003eDetermines the sizing behavior of the content within the scroll view.\u003c/p\u003e","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV20alwaysBounceVerticalSbvp":{"name":"alwaysBounceVertical","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV22alwaysBounceHorizontalSbvp":{"name":"alwaysBounceHorizontal","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV12contentInsetSo12UIEdgeInsetsVvp":{"name":"contentInset","abstract":"\u003cp\u003eHow much the content of the \u003ccode\u003eScrollView\u003c/code\u003e should be inset.\u003c/p\u003e","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV16centersUnderflowSbvp":{"name":"centersUnderflow","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV015showsHorizontalD9IndicatorSbvp":{"name":"showsHorizontalScrollIndicator","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV013showsVerticalD9IndicatorSbvp":{"name":"showsVerticalScrollIndicator","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV21pullToRefreshBehaviorAC04PullghI0Ovp":{"name":"pullToRefreshBehavior","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV19keyboardDismissModeSo08UIScrolle8KeyboardgH0Vvp":{"name":"keyboardDismissMode","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV30contentInsetAdjustmentBehaviorSo08UIScrolle7ContentghI0Vvp":{"name":"contentInsetAdjustmentBehavior","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV22keyboardAdjustmentModeAC08KeyboardgH0Ovp":{"name":"keyboardAdjustmentMode","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV20delaysContentTouchesSbvp":{"name":"delaysContentTouches","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV20contentOffsetTriggerAC0dH0CSgvp":{"name":"contentOffsetTrigger","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:25BlueprintUICommonControls10ScrollViewV_8wrapping9configureA2C11ContentSizeO_0A2UI7Element_pyACzXEtcfc":{"name":"init(_:wrapping:configure:)","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"ScrollView"},"Structs/ScrollView.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"ScrollView"},"Structs/ScrollView/KeyboardAdjustmentMode.html":{"name":"KeyboardAdjustmentMode","parent_name":"ScrollView"},"Structs/ScrollView/ContentSize.html":{"name":"ContentSize","parent_name":"ScrollView"},"Structs/ScrollView/PullToRefreshBehavior.html":{"name":"PullToRefreshBehavior","parent_name":"ScrollView"},"Structs/ScrollView/ScrollTrigger.html":{"name":"ScrollTrigger","parent_name":"ScrollView"},"Structs/ScrollView/ContentOffset.html":{"name":"ContentOffset","parent_name":"ScrollView"},"Structs/Rule/Thickness.html#/s:25BlueprintUICommonControls4RuleV9ThicknessO8hairlineyA2EmF":{"name":"hairline","abstract":"\u003cp\u003eIndicates that the rule should be exactly 1 screen pixel thick,","parent_name":"Thickness"},"Structs/Rule/Thickness.html#/s:25BlueprintUICommonControls4RuleV9ThicknessO6pointsyAE14CoreFoundation7CGFloatVcAEmF":{"name":"points(_:)","abstract":"\u003cp\u003eAn exact thickness in points.\u003c/p\u003e","parent_name":"Thickness"},"Structs/Rule/Orientation.html#/s:25BlueprintUICommonControls4RuleV11OrientationO10horizontalyA2EmF":{"name":"horizontal","abstract":"\u003cp\u003eIndicates that the rule is parallel to the x axis.\u003c/p\u003e","parent_name":"Orientation"},"Structs/Rule/Orientation.html#/s:25BlueprintUICommonControls4RuleV11OrientationO8verticalyA2EmF":{"name":"vertical","abstract":"\u003cp\u003eIndicates that the rule is parallel to the y axis.\u003c/p\u003e","parent_name":"Orientation"},"Structs/Rule/Orientation.html":{"name":"Orientation","abstract":"\u003cp\u003eRepresents whether the rule is parallel to the x or y axis.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule/Thickness.html":{"name":"Thickness","abstract":"\u003cp\u003eRepresents the thickness of a rule in the direction perpendicular to its orientation.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule.html#/s:25BlueprintUICommonControls4RuleV11orientationAC11OrientationOvp":{"name":"orientation","abstract":"\u003cp\u003eWhether this rule is horizontal or vertical.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule.html#/s:25BlueprintUICommonControls4RuleV9thicknessAC9ThicknessOvp":{"name":"thickness","abstract":"\u003cp\u003eThe thickness of this rule in the direction perpendicular to its orientation.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule.html#/s:25BlueprintUICommonControls4RuleV5colorSo7UIColorCvp":{"name":"color","abstract":"\u003cp\u003eThe color that the rule should be drawn.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule.html#/s:25BlueprintUICommonControls4RuleV11orientation5color9thicknessA2C11OrientationO_So7UIColorCAC9ThicknessOtcfc":{"name":"init(orientation:color:thickness:)","abstract":"\u003cp\u003eInitializes a Rule with the given properties.\u003c/p\u003e","parent_name":"Rule"},"Structs/Rule.html#/s:11BlueprintUI12ProxyElementP21elementRepresentationAA0D0_pvp":{"name":"elementRepresentation","parent_name":"Rule"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eChildren will be stretched to fit the vertical size of the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO5alignyAeA08VerticalD0V_tcAEmF":{"name":"align(to:)","abstract":"\u003cp\u003eUsing the specified alignment, children will be aligned relatively to each other, and","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO3topAEvpZ":{"name":"top","abstract":"\u003cp\u003eChildren will be aligned to the top edge of the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO6centerAEvpZ":{"name":"center","abstract":"\u003cp\u003eChildren will be vertically centered in the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO6bottomAEvpZ":{"name":"bottom","abstract":"\u003cp\u003eChildren will be aligned to the bottom edge of the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO7leadingAEvpZ":{"name":"leading","abstract":"\u003cp\u003eChildren will be aligned to the top edge of the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html#/s:11BlueprintUI3RowV0C9AlignmentO8trailingAEvpZ":{"name":"trailing","abstract":"\u003cp\u003eChildren will be aligned to the bottom edge of the row.\u003c/p\u003e","parent_name":"RowAlignment"},"Structs/Row/RowAlignment.html":{"name":"RowAlignment","abstract":"\u003cp\u003eDescribes how the row\u0026rsquo;s children will be vertically aligned.\u003c/p\u003e","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV8childrenSayAA7Element_p7element_AA11StackLayoutV6TraitsV6traitss11AnyHashableVSg3keytGvp":{"name":"children","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV6layoutAA11StackLayoutVvp":{"name":"layout","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowVACycfc":{"name":"init()","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV9alignment9underflow8overflow14minimumSpacing8elementsA2C0C9AlignmentO_AA11StackLayoutV21UnderflowDistributionOAL08OverflowN0O14CoreFoundation7CGFloatVSayAL5ChildVGyXEtcfc":{"name":"init(alignment:underflow:overflow:minimumSpacing:elements:)","abstract":"\u003cp\u003eInitializer using result builder to declaratively build up a stack.\u003c/p\u003e","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV19horizontalUnderflowAA11StackLayoutV0E12DistributionOvp":{"name":"horizontalUnderflow","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV18horizontalOverflowAA11StackLayoutV0E12DistributionOvp":{"name":"horizontalOverflow","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV17verticalAlignmentAC0cE0Ovp":{"name":"verticalAlignment","abstract":"\u003cp\u003eSpecifies how children will be aligned vertically.\u003c/p\u003e","parent_name":"Row"},"Structs/Row.html#/s:11BlueprintUI3RowV24minimumHorizontalSpacing14CoreFoundation7CGFloatVvp":{"name":"minimumHorizontalSpacing","parent_name":"Row"},"Structs/Overlay/Child.html#/s:11BlueprintUI7OverlayV5ChildV7elementAA7Element_pvp":{"name":"element","abstract":"\u003cp\u003eThe child element\u003c/p\u003e","parent_name":"Child"},"Structs/Overlay/Child.html#/s:11BlueprintUI7OverlayV5ChildV3keys11AnyHashableVSgvp":{"name":"key","abstract":"\u003cp\u003eAn optional key to disambiguate between view updates\u003c/p\u003e","parent_name":"Child"},"Structs/Overlay/Child.html#/s:11BlueprintUI7OverlayV5ChildV7element3keyAeA7Element_p_s11AnyHashableVSgtcfc":{"name":"init(element:key:)","abstract":"\u003cp\u003eCreate a new child.\u003c/p\u003e","parent_name":"Child"},"Structs/Overlay/Child.html#/s:11BlueprintUI7OverlayV5ChildVyAeA7Element_pcfc":{"name":"init(_:)","parent_name":"Child"},"Structs/Overlay.html#/s:11BlueprintUI7OverlayV8childrenSayAC5ChildVGvp":{"name":"children","abstract":"\u003cp\u003eAll elements displayed in the overlay.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7OverlayV8elements9configureACSayAA7Element_pG_yACzXEtcfc":{"name":"init(elements:configure:)","abstract":"\u003cp\u003eCreates a new overlay with the provided elements.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7OverlayV8elementsACSayAC5ChildVGyXE_tcfc":{"name":"init(elements:)","abstract":"\u003cp\u003eCreates a new overlay using a result builder.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7OverlayV3addyyAA7Element_pF":{"name":"add(_:)","abstract":"\u003cp\u003eAdds the provided element to the overlay.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7OverlayV3add3key5childys11AnyHashableVSg_AA7Element_ptF":{"name":"add(key:child:)","abstract":"\u003cp\u003eAdds the provided element to the overlay, above other children.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Overlay"},"Structs/Overlay.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Overlay"},"Structs/Overlay/Child.html":{"name":"Child","abstract":"\u003cp\u003eThe child of an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Overlay.html\"\u003eOverlay\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"Overlay"},"Structs/Label/LineHeight/Alignment.html#/s:25BlueprintUICommonControls5LabelV10LineHeightO9AlignmentO3topyA2GmF":{"name":"top","abstract":"\u003cp\u003eAlign text to the top of the available line height, with extra space added at the bottom.","parent_name":"Alignment"},"Structs/Label/LineHeight/Alignment.html#/s:25BlueprintUICommonControls5LabelV10LineHeightO9AlignmentO6centeryA2GmF":{"name":"center","abstract":"\u003cp\u003eCenter text within the available line height. This makes line height behave like half-leading,","parent_name":"Alignment"},"Structs/Label/LineHeight/Alignment.html#/s:25BlueprintUICommonControls5LabelV10LineHeightO9AlignmentO6bottomyA2GmF":{"name":"bottom","abstract":"\u003cp\u003eAlign text to the bottom of the available line height, with extra space added at the top.","parent_name":"Alignment"},"Structs/Label/LineHeight/Alignment.html":{"name":"Alignment","parent_name":"LineHeight"},"Structs/Label/LineHeight.html#/s:25BlueprintUICommonControls5LabelV10LineHeightO4fontyA2EmF":{"name":"font","abstract":"\u003cp\u003eUse the default line height of the label\u0026rsquo;s font.\u003c/p\u003e","parent_name":"LineHeight"},"Structs/Label/LineHeight.html#/s:25BlueprintUICommonControls5LabelV10LineHeightO6customyAE14CoreFoundation7CGFloatV_AE9AlignmentOtcAEmF":{"name":"custom(lineHeight:alignment:)","abstract":"\u003cp\u003eUse a custom line height and alignment.\u003c/p\u003e","parent_name":"LineHeight"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV4textSSvp":{"name":"text","abstract":"\u003cp\u003eThe text to be displayed.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV4fontSo6UIFontCvp":{"name":"font","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV5colorSo7UIColorCvp":{"name":"color","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV9alignmentSo15NSTextAlignmentVvp":{"name":"alignment","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV13numberOfLinesSivp":{"name":"numberOfLines","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV13lineBreakModeSo06NSLinefG0Vvp":{"name":"lineBreakMode","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV10lineHeightAC04LineF0Ovp":{"name":"lineHeight","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV25adjustsFontSizeToFitWidthSbvp":{"name":"adjustsFontSizeToFitWidth","abstract":"\u003cp\u003eA Boolean value that determines whether the label reduces the text’s font","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV18minimumScaleFactor14CoreFoundation7CGFloatVvp":{"name":"minimumScaleFactor","abstract":"\u003cp\u003eThe minimum scale factor for the label’s text.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV36allowsDefaultTighteningForTruncationSbvp":{"name":"allowsDefaultTighteningForTruncation","abstract":"\u003cp\u003eA Boolean value that determines whether the label tightens text before truncating.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV6shadowAA10TextShadowVSgvp":{"name":"shadow","abstract":"\u003cp\u003eA shadow to display behind the label\u0026rsquo;s text. Defaults to no shadow.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV22isAccessibilityElementSbvp":{"name":"isAccessibilityElement","abstract":"\u003cp\u003eDetermines if the label should be included when navigating the UI via accessibility.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV17accessibilityHintSSSgvp":{"name":"accessibilityHint","abstract":"\u003cp\u003eA localized string that describes the result of performing an action on the element, when the result is non-obvious.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV19accessibilityTraitsShyAA20AccessibilityElementV5TraitOGSgvp":{"name":"accessibilityTraits","abstract":"\u003cp\u003eA set of accessibility traits that should be applied to the label, these will be merged with any existing traits.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV26accessibilityCustomActionsSayAA20AccessibilityElementV0F6ActionVGvp":{"name":"accessibilityCustomActions","abstract":"\u003cp\u003eAn array containing one or more \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AccessibilityElement/CustomAction.html\"\u003eAccessibilityElement.CustomAction\u003c/a\u003e\u003c/code\u003es, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.\u003c/p\u003e","parent_name":"Label"},"Structs/Label.html#/s:25BlueprintUICommonControls5LabelV4text9configureACSS_yACzXEtcfc":{"name":"init(text:configure:)","parent_name":"Label"},"Structs/Label.html#/s:11BlueprintUI12ProxyElementP21elementRepresentationAA0D0_pvp":{"name":"elementRepresentation","parent_name":"Label"},"Structs/Label/LineHeight.html":{"name":"LineHeight","parent_name":"Label"},"Structs/Inset.html#/s:11BlueprintUI5InsetV14wrappedElementAA0E0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe wrapped element to be inset.\u003c/p\u003e","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV3top14CoreFoundation7CGFloatVvp":{"name":"top","abstract":"\u003cp\u003eThe amount to inset the content element.\u003c/p\u003e","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV6bottom14CoreFoundation7CGFloatVvp":{"name":"bottom","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV4left14CoreFoundation7CGFloatVvp":{"name":"left","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV5right14CoreFoundation7CGFloatVvp":{"name":"right","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV3top6bottom4left5right8wrappingAC14CoreFoundation7CGFloatV_A3kA7Element_ptcfc":{"name":"init(top:bottom:left:right:wrapping:)","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV07uniformC08wrappingAC14CoreFoundation7CGFloatV_AA7Element_ptcfc":{"name":"init(uniformInset:wrapping:)","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV6insets8wrappingACSo12UIEdgeInsetsV_AA7Element_ptcfc":{"name":"init(insets:wrapping:)","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV10sideInsets8wrappingAC14CoreFoundation7CGFloatV_AA7Element_ptcfc":{"name":"init(sideInsets:wrapping:)","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI5InsetV8vertical8wrappingAC14CoreFoundation7CGFloatV_AA7Element_ptcfc":{"name":"init(vertical:wrapping:)","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Inset"},"Structs/Inset.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Inset"},"Structs/Image/ContentMode.html#/s:25BlueprintUICommonControls5ImageV11ContentModeO6centeryA2EmF":{"name":"center","abstract":"\u003cp\u003eThe image is not scaled, and is simply centered within the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Image.html\"\u003eImage\u003c/a\u003e\u003c/code\u003e","parent_name":"ContentMode"},"Structs/Image/ContentMode.html#/s:25BlueprintUICommonControls5ImageV11ContentModeO7stretchyA2EmF":{"name":"stretch","abstract":"\u003cp\u003eThe image is stretched to fill the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Image.html\"\u003eImage\u003c/a\u003e\u003c/code\u003e element, causing the image","parent_name":"ContentMode"},"Structs/Image/ContentMode.html#/s:25BlueprintUICommonControls5ImageV11ContentModeO9aspectFityA2EmF":{"name":"aspectFit","abstract":"\u003cp\u003eThe image is scaled to touch the edges of the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Image.html\"\u003eImage\u003c/a\u003e\u003c/code\u003e element while","parent_name":"ContentMode"},"Structs/Image/ContentMode.html#/s:25BlueprintUICommonControls5ImageV11ContentModeO10aspectFillyA2EmF":{"name":"aspectFill","abstract":"\u003cp\u003eThe image is scaled to fill the entire \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Image.html\"\u003eImage\u003c/a\u003e\u003c/code\u003e element. If the aspect","parent_name":"ContentMode"},"Structs/Image.html#/s:25BlueprintUICommonControls5ImageV5imageSo7UIImageCSgvp":{"name":"image","abstract":"\u003cp\u003eThe image to be displayed\u003c/p\u003e","parent_name":"Image"},"Structs/Image.html#/s:25BlueprintUICommonControls5ImageV9tintColorSo7UIColorCSgvp":{"name":"tintColor","abstract":"\u003cp\u003eThe tint color.\u003c/p\u003e","parent_name":"Image"},"Structs/Image.html#/s:25BlueprintUICommonControls5ImageV11contentModeAC07ContentF0Ovp":{"name":"contentMode","abstract":"\u003cp\u003eThe content mode determines the layout of the image when its size does","parent_name":"Image"},"Structs/Image.html#/s:25BlueprintUICommonControls5ImageV29blockAccessibilityDescriptionSbvp":{"name":"blockAccessibilityDescription","abstract":"\u003cp\u003eiOS 14 added support for Image Descriptions using VoiceOver. This is not always appropriate.","parent_name":"Image"},"Structs/Image.html#/s:25BlueprintUICommonControls5ImageV5image11contentMode9tintColor29blockAccessibilityDescriptionACSo7UIImageCSg_AC07ContentG0OSo7UIColorCSgSbtcfc":{"name":"init(image:contentMode:tintColor:blockAccessibilityDescription:)","abstract":"\u003cp\u003eInitializes an image element with the given \u003ccode\u003eUIImage\u003c/code\u003e instance.\u003c/p\u003e","parent_name":"Image"},"Structs/Image.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Image"},"Structs/Image.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Image"},"Structs/Image/ContentMode.html":{"name":"ContentMode","abstract":"\u003cp\u003eThe content mode determines the layout of the image when its size does","parent_name":"Image"},"Structs/GeometryReader.html#/s:11BlueprintUI14GeometryReaderV21elementRepresentationAcA7Element_pAA0C5ProxyVc_tcfc":{"name":"init(elementRepresentation:)","parent_name":"GeometryReader"},"Structs/GeometryReader.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"GeometryReader"},"Structs/GeometryReader.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"GeometryReader"},"Structs/EqualStack/Child.html#/s:11BlueprintUI10EqualStackV5ChildV7elementAA7Element_pvp":{"name":"element","parent_name":"Child"},"Structs/EqualStack/Child.html#/s:11BlueprintUI10EqualStackV5ChildVyAeA7Element_pcfc":{"name":"init(_:)","parent_name":"Child"},"Structs/EqualStack/Direction.html#/s:11BlueprintUI10EqualStackV9DirectionO8verticalyA2EmF":{"name":"vertical","parent_name":"Direction"},"Structs/EqualStack/Direction.html#/s:11BlueprintUI10EqualStackV9DirectionO10horizontalyA2EmF":{"name":"horizontal","parent_name":"Direction"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV9directionAC9DirectionOvp":{"name":"direction","abstract":"\u003cp\u003eThe direction in which this element will stack its children.\u003c/p\u003e","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV7spacing14CoreFoundation7CGFloatVvp":{"name":"spacing","abstract":"\u003cp\u003eThe amount of space between children in this element. Defaults to 0.\u003c/p\u003e","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV8childrenSayAA7Element_pGvp":{"name":"children","abstract":"\u003cp\u003eThe child elements to be laid out. Defaults to an empty array.\u003c/p\u003e","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV9direction9configureA2C9DirectionO_yACzXEtcfc":{"name":"init(direction:configure:)","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV9direction7spacing8elementsA2C9DirectionO_14CoreFoundation7CGFloatVSayAC5ChildVGyXEtcfc":{"name":"init(direction:spacing:elements:)","abstract":"\u003cp\u003eInitializer using result builder to declaritively build up a stack.\u003c/p\u003e","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"EqualStack"},"Structs/EqualStack.html#/s:11BlueprintUI10EqualStackV3add5childyAA7Element_p_tF":{"name":"add(child:)","parent_name":"EqualStack"},"Structs/EqualStack/Direction.html":{"name":"Direction","parent_name":"EqualStack"},"Structs/EqualStack/Child.html":{"name":"Child","parent_name":"EqualStack"},"Structs/Empty.html#/s:11BlueprintUI5EmptyVACycfc":{"name":"init()","parent_name":"Empty"},"Structs/Empty.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Empty"},"Structs/Empty.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Empty"},"Structs/ConstrainedSize/Constraint.html#/s:11BlueprintUI15ConstrainedSizeV10ConstraintO13unconstrainedyA2EmF":{"name":"unconstrained","abstract":"\u003cp\u003eThere is no constraint for this axis – the natural size of the element will be used.\u003c/p\u003e","parent_name":"Constraint"},"Structs/ConstrainedSize/Constraint.html#/s:11BlueprintUI15ConstrainedSizeV10ConstraintO6atMostyAE14CoreFoundation7CGFloatVcAEmF":{"name":"atMost(_:)","abstract":"\u003cp\u003eThe measured size for this axis will be \u003cstrong\u003eno greater\u003c/strong\u003e than the value provided.\u003c/p\u003e","parent_name":"Constraint"},"Structs/ConstrainedSize/Constraint.html#/s:11BlueprintUI15ConstrainedSizeV10ConstraintO7atLeastyAE14CoreFoundation7CGFloatVcAEmF":{"name":"atLeast(_:)","abstract":"\u003cp\u003eThe measured size for this axis will be \u003cstrong\u003eno less\u003c/strong\u003e than the value provided.\u003c/p\u003e","parent_name":"Constraint"},"Structs/ConstrainedSize/Constraint.html#/s:11BlueprintUI15ConstrainedSizeV10ConstraintO6withinyAESNy14CoreFoundation7CGFloatVGcAEmF":{"name":"within(_:)","abstract":"\u003cp\u003eThe measured size for this axis will be \u003cstrong\u003ewithin\u003c/strong\u003e the range provided.","parent_name":"Constraint"},"Structs/ConstrainedSize/Constraint.html#/s:11BlueprintUI15ConstrainedSizeV10ConstraintO8absoluteyAE14CoreFoundation7CGFloatVcAEmF":{"name":"absolute(_:)","abstract":"\u003cp\u003eThe measured size for this axis will be \u003cstrong\u003eexactly\u003c/strong\u003e the value provided.\u003c/p\u003e","parent_name":"Constraint"},"Structs/ConstrainedSize.html#/s:11BlueprintUI15ConstrainedSizeV7wrappedAA7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe element whose measurement will be constrained by the \u003ccode\u003eConstrainedSize\u003c/code\u003e.\u003c/p\u003e","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize.html#/s:11BlueprintUI15ConstrainedSizeV5widthAC10ConstraintOvp":{"name":"width","abstract":"\u003cp\u003eThe constraint to place on the width of the element.\u003c/p\u003e","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize.html#/s:11BlueprintUI15ConstrainedSizeV6heightAC10ConstraintOvp":{"name":"height","abstract":"\u003cp\u003eThe constraint to place on the height of the element.\u003c/p\u003e","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize.html#/s:11BlueprintUI15ConstrainedSizeV5width6height8wrappingA2C10ConstraintO_AhA7Element_ptcfc":{"name":"init(width:height:wrapping:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eConstrainedSize\u003c/code\u003e with the provided constraint options.\u003c/p\u003e","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"ConstrainedSize"},"Structs/ConstrainedSize/Constraint.html":{"name":"Constraint","abstract":"\u003cp\u003eThe available ways to constrain the measurement of a given axis within a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/ConstrainedSize.html\"\u003eConstrainedSize\u003c/a\u003e\u003c/code\u003e element.\u003c/p\u003e","parent_name":"ConstrainedSize"},"Structs/ConstrainedAspectRatio/ContentMode.html#/s:11BlueprintUI22ConstrainedAspectRatioV11ContentModeO10fillParentyA2EmF":{"name":"fillParent","abstract":"\u003cp\u003eThe content will be sized to fill its parent while","parent_name":"ContentMode"},"Structs/ConstrainedAspectRatio/ContentMode.html#/s:11BlueprintUI22ConstrainedAspectRatioV11ContentModeO9fitParentyA2EmF":{"name":"fitParent","abstract":"\u003cp\u003eThe content will be sized to fit within its parent while maintaining the specified","parent_name":"ContentMode"},"Structs/ConstrainedAspectRatio/ContentMode.html#/s:11BlueprintUI22ConstrainedAspectRatioV11ContentModeO03fitF0yA2EmF":{"name":"fitContent","abstract":"\u003cp\u003eThe content will grow in whichever dimension is needed to maintain the aspect ratio,","parent_name":"ContentMode"},"Structs/ConstrainedAspectRatio/ContentMode.html#/s:11BlueprintUI22ConstrainedAspectRatioV11ContentModeO06shrinkF0yA2EmF":{"name":"shrinkContent","abstract":"\u003cp\u003eThe content will shrink in whichever dimension is needed to maintain the aspect ratio,","parent_name":"ContentMode"},"Structs/ConstrainedAspectRatio/ContentMode.html":{"name":"ContentMode","abstract":"\u003cp\u003eRepresents how the content should size itself relative to its parent.\u003c/p\u003e","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI22ConstrainedAspectRatioV14wrappedElementAA0G0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe element being constrained.\u003c/p\u003e","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI22ConstrainedAspectRatioV06aspectE0AA0dE0Vvp":{"name":"aspectRatio","abstract":"\u003cp\u003eThe target aspect ratio.\u003c/p\u003e","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI22ConstrainedAspectRatioV11contentModeAC07ContentG0Ovp":{"name":"contentMode","abstract":"\u003cp\u003eWhether the aspect ratio should be reached by expanding the content element\u0026rsquo;s size to fill its parent","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI22ConstrainedAspectRatioV06aspectE011contentMode8wrappingAcA0dE0V_AC07ContentH0OAA7Element_ptcfc":{"name":"init(aspectRatio:contentMode:wrapping:)","abstract":"\u003cp\u003eInitializes with the given properties.\u003c/p\u003e","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"ConstrainedAspectRatio"},"Structs/ConstrainedAspectRatio.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"ConstrainedAspectRatio"},"Structs/Column/ColumnAlignment.html#/s:11BlueprintUI6ColumnV0C9AlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eChildren will be stretched to fit the horizontal size of the column.\u003c/p\u003e","parent_name":"ColumnAlignment"},"Structs/Column/ColumnAlignment.html#/s:11BlueprintUI6ColumnV0C9AlignmentO5alignyAeA010HorizontalD0V_tcAEmF":{"name":"align(to:)","abstract":"\u003cp\u003eUsing the specified alignment, children will be aligned relatively to each other, and","parent_name":"ColumnAlignment"},"Structs/Column/ColumnAlignment.html#/s:11BlueprintUI6ColumnV0C9AlignmentO7leadingAEvpZ":{"name":"leading","abstract":"\u003cp\u003eChildren will be aligned to the leading edge of the column.\u003c/p\u003e","parent_name":"ColumnAlignment"},"Structs/Column/ColumnAlignment.html#/s:11BlueprintUI6ColumnV0C9AlignmentO6centerAEvpZ":{"name":"center","abstract":"\u003cp\u003eChildren will be horizontally centered in the column.\u003c/p\u003e","parent_name":"ColumnAlignment"},"Structs/Column/ColumnAlignment.html#/s:11BlueprintUI6ColumnV0C9AlignmentO8trailingAEvpZ":{"name":"trailing","abstract":"\u003cp\u003eChildren will be aligned to the trailing edge of the column.\u003c/p\u003e","parent_name":"ColumnAlignment"},"Structs/Column/ColumnAlignment.html":{"name":"ColumnAlignment","abstract":"\u003cp\u003eDescribes how the column\u0026rsquo;s children will be horizontally aligned.\u003c/p\u003e","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV8childrenSayAA7Element_p7element_AA11StackLayoutV6TraitsV6traitss11AnyHashableVSg3keytGvp":{"name":"children","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV6layoutAA11StackLayoutVvp":{"name":"layout","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnVACycfc":{"name":"init()","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV9alignment9underflow8overflow14minimumSpacing8elementsA2C0C9AlignmentO_AA11StackLayoutV21UnderflowDistributionOAL08OverflowN0O14CoreFoundation7CGFloatVSayAL5ChildVGyXEtcfc":{"name":"init(alignment:underflow:overflow:minimumSpacing:elements:)","abstract":"\u003cp\u003eCreates a Column, using result builder syntax. Columns display a list of items in a vertical","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV17verticalUnderflowAA11StackLayoutV0E12DistributionOvp":{"name":"verticalUnderflow","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV16verticalOverflowAA11StackLayoutV0E12DistributionOvp":{"name":"verticalOverflow","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV19horizontalAlignmentAC0cE0Ovp":{"name":"horizontalAlignment","abstract":"\u003cp\u003eSpecifies how children will be aligned horizontally.\u003c/p\u003e","parent_name":"Column"},"Structs/Column.html#/s:11BlueprintUI6ColumnV22minimumVerticalSpacing14CoreFoundation7CGFloatVvp":{"name":"minimumVerticalSpacing","parent_name":"Column"},"Structs/Centered.html#/s:11BlueprintUI8CenteredV7wrappedAA7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe content element to be centered.\u003c/p\u003e","parent_name":"Centered"},"Structs/Centered.html#/s:11BlueprintUI8CenteredVyAcA7Element_pcfc":{"name":"init(_:)","abstract":"\u003cp\u003eInitializes a \u003ccode\u003eCentered\u003c/code\u003e element with the given content element.\u003c/p\u003e","parent_name":"Centered"},"Structs/Centered.html#/s:11BlueprintUI12ProxyElementP21elementRepresentationAA0D0_pvp":{"name":"elementRepresentation","parent_name":"Centered"},"Structs/Button.html#/s:25BlueprintUICommonControls6ButtonV14wrappedElement0A2UI0F0_pvp":{"name":"wrappedElement","parent_name":"Button"},"Structs/Button.html#/s:25BlueprintUICommonControls6ButtonV9isEnabledSbvp":{"name":"isEnabled","parent_name":"Button"},"Structs/Button.html#/s:25BlueprintUICommonControls6ButtonV5onTapyycvp":{"name":"onTap","parent_name":"Button"},"Structs/Button.html#/s:25BlueprintUICommonControls6ButtonV19minimumTappableSizeSo6CGSizeVvp":{"name":"minimumTappableSize","parent_name":"Button"},"Structs/Button.html#/s:25BlueprintUICommonControls6ButtonV9isEnabled5onTap8wrappingACSb_yyc0A2UI7Element_ptcfc":{"name":"init(isEnabled:onTap:wrapping:)","parent_name":"Button"},"Structs/Button.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Button"},"Structs/Button.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Button"},"Structs/Box/ShadowStyle.html#/s:25BlueprintUICommonControls3BoxV11ShadowStyleO4noneyA2EmF":{"name":"none","parent_name":"ShadowStyle"},"Structs/Box/ShadowStyle.html#/s:25BlueprintUICommonControls3BoxV11ShadowStyleO6simpleyAE14CoreFoundation7CGFloatV_AISo6CGSizeVSo7UIColorCtcAEmF":{"name":"simple(radius:opacity:offset:color:)","parent_name":"ShadowStyle"},"Structs/Box/BorderStyle.html#/s:25BlueprintUICommonControls3BoxV11BorderStyleO4noneyA2EmF":{"name":"none","parent_name":"BorderStyle"},"Structs/Box/BorderStyle.html#/s:25BlueprintUICommonControls3BoxV11BorderStyleO5solidyAESo7UIColorC_14CoreFoundation7CGFloatVtcAEmF":{"name":"solid(color:width:)","parent_name":"BorderStyle"},"Structs/Box/CornerCurve.html#/s:25BlueprintUICommonControls3BoxV11CornerCurveO8circularyA2EmF":{"name":"circular","abstract":"\u003cp\u003eProvides a standard-style corner radius as you would see in design tools like Figma.\u003c/p\u003e","parent_name":"CornerCurve"},"Structs/Box/CornerCurve.html#/s:25BlueprintUICommonControls3BoxV11CornerCurveO10continuousyA2EmF":{"name":"continuous","abstract":"\u003cp\u003eProvides an iOS icon-style corner radius.\u003c/p\u003e","parent_name":"CornerCurve"},"Structs/Box/CornerStyle/Corners.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:s9OptionSetP8rawValuex03RawD0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV7topLeftAGvpZ":{"name":"topLeft","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV8topRightAGvpZ":{"name":"topRight","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV10bottomLeftAGvpZ":{"name":"bottomLeft","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV11bottomRightAGvpZ":{"name":"bottomRight","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV3allAGvpZ":{"name":"all","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV3topAGvpZ":{"name":"top","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV4leftAGvpZ":{"name":"left","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV6bottomAGvpZ":{"name":"bottom","parent_name":"Corners"},"Structs/Box/CornerStyle/Corners.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7CornersV5rightAGvpZ":{"name":"right","parent_name":"Corners"},"Structs/Box/CornerStyle.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO6squareyA2EmF":{"name":"square","parent_name":"CornerStyle"},"Structs/Box/CornerStyle.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7capsuleyA2EmF":{"name":"capsule","parent_name":"CornerStyle"},"Structs/Box/CornerStyle.html#/s:25BlueprintUICommonControls3BoxV11CornerStyleO7roundedyAE14CoreFoundation7CGFloatV_AE7CornersVtcAEmF":{"name":"rounded(radius:corners:)","parent_name":"CornerStyle"},"Structs/Box/CornerStyle/Corners.html":{"name":"Corners","parent_name":"CornerStyle"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV15backgroundColorSo7UIColorCvp":{"name":"backgroundColor","abstract":"\u003cp\u003eThe background color to show in the box.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV11cornerStyleAC06CornerF0Ovp":{"name":"cornerStyle","abstract":"\u003cp\u003eThe corner style to apply, eg rounded, capsule, or normal, square corners.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV11cornerCurveAC06CornerF0Ovp":{"name":"cornerCurve","abstract":"\u003cp\u003eHow to style the curves when \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Box.html#/s:25BlueprintUICommonControls3BoxV11cornerStyleAC06CornerF0Ovp\"\u003ecornerStyle\u003c/a\u003e\u003c/code\u003e is non-square.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV11borderStyleAC06BorderF0Ovp":{"name":"borderStyle","abstract":"\u003cp\u003eThe border to apply around the edges of the box.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV11shadowStyleAC06ShadowF0Ovp":{"name":"shadowStyle","abstract":"\u003cp\u003eThe shadow style to apply to the outside of the box.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV12clipsContentSbvp":{"name":"clipsContent","abstract":"\u003cp\u003eIf content placed within the box should be clipped.\u003c/p\u003e","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV14wrappedElement0A2UI0F0_pSgvp":{"name":"wrappedElement","parent_name":"Box"},"Structs/Box.html#/s:25BlueprintUICommonControls3BoxV15backgroundColor11cornerStyle0G5Curve06borderH006shadowH012clipsContent8wrappingACSo7UIColorC_AC06CornerH0OAC0pI0OAC06BorderH0OAC06ShadowH0OSb0A2UI7Element_pSgtcfc":{"name":"init(backgroundColor:cornerStyle:cornerCurve:borderStyle:shadowStyle:clipsContent:wrapping:)","parent_name":"Box"},"Structs/Box.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Box"},"Structs/Box.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Box"},"Structs/Box/CornerStyle.html":{"name":"CornerStyle","parent_name":"Box"},"Structs/Box/CornerCurve.html":{"name":"CornerCurve","abstract":"\u003cp\u003eSpecifies the curve style when showing rounded corners on a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Box.html\"\u003eBox\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"Box"},"Structs/Box/BorderStyle.html":{"name":"BorderStyle","parent_name":"Box"},"Structs/Box/ShadowStyle.html":{"name":"ShadowStyle","parent_name":"Box"},"Structs/AttributedLabel/LinkDetectionType.html#/s:25BlueprintUICommonControls15AttributedLabelV17LinkDetectionTypeO4dateyA2EmF":{"name":"date","abstract":"\u003cp\u003eDetect date strings. Tapping a date opens the calendar to that date.\u003c/p\u003e","parent_name":"LinkDetectionType"},"Structs/AttributedLabel/LinkDetectionType.html#/s:25BlueprintUICommonControls15AttributedLabelV17LinkDetectionTypeO7addressyA2EmF":{"name":"address","abstract":"\u003cp\u003eDetect addresses. Tapping the address opens Maps with that address.\u003c/p\u003e","parent_name":"LinkDetectionType"},"Structs/AttributedLabel/LinkDetectionType.html#/s:25BlueprintUICommonControls15AttributedLabelV17LinkDetectionTypeO4linkyA2EmF":{"name":"link","abstract":"\u003cp\u003eDetect URLs. Tapping the link opens the URL.\u003c/p\u003e","parent_name":"LinkDetectionType"},"Structs/AttributedLabel/LinkDetectionType.html#/s:25BlueprintUICommonControls15AttributedLabelV17LinkDetectionTypeO11phoneNumberyA2EmF":{"name":"phoneNumber","abstract":"\u003cp\u003eDetect phone numbers. Tapping the phone number prompts the user to call it.\u003c/p\u003e","parent_name":"LinkDetectionType"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV14attributedTextSo18NSAttributedStringCvp":{"name":"attributedText","abstract":"\u003cp\u003eThe attributed text to render in the label.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV13numberOfLinesSivp":{"name":"numberOfLines","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV6shadowAA10TextShadowVSgvp":{"name":"shadow","abstract":"\u003cp\u003eA shadow to display behind the label\u0026rsquo;s text. Defaults to no shadow.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV14textRectOffsetSo8UIOffsetVvp":{"name":"textRectOffset","abstract":"\u003cp\u003eAn offset that will be applied to the rect used by \u003ccode\u003edrawText(in:)\u003c/code\u003e.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV22isAccessibilityElementSbvp":{"name":"isAccessibilityElement","abstract":"\u003cp\u003eDetermines if the label should be included when navigating the UI via accessibility.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV25adjustsFontSizeToFitWidthSbvp":{"name":"adjustsFontSizeToFitWidth","abstract":"\u003cp\u003eA Boolean value that determines whether the label reduces the text’s font","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV18minimumScaleFactor14CoreFoundation7CGFloatVvp":{"name":"minimumScaleFactor","abstract":"\u003cp\u003eThe minimum scale factor for the label’s text.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV36allowsDefaultTighteningForTruncationSbvp":{"name":"allowsDefaultTighteningForTruncation","abstract":"\u003cp\u003eA Boolean value that determines whether the label tightens text before truncating.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV19accessibilityTraitsShyAA20AccessibilityElementV5TraitOGSgvp":{"name":"accessibilityTraits","abstract":"\u003cp\u003eA set of accessibility traits that should be applied to the label, these will be merged with any existing traits.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV17accessibilityHintSSSgvp":{"name":"accessibilityHint","abstract":"\u003cp\u003eA localized string that describes the result of performing an action on the element, when the result is non-obvious.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV26accessibilityCustomActionsSayAA20AccessibilityElementV0G6ActionVGvp":{"name":"accessibilityCustomActions","abstract":"\u003cp\u003eAn array containing one or more \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AccessibilityElement/CustomAction.html\"\u003eAccessibilityElement.CustomAction\u003c/a\u003e\u003c/code\u003es, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV18linkDetectionTypesShyAC04LinkG4TypeOGvp":{"name":"linkDetectionTypes","abstract":"\u003cp\u003eA set of data types to detect and automatically link in the label.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV14linkAttributesSDySo21NSAttributedStringKeyas11AnyHashableVGvp":{"name":"linkAttributes","abstract":"\u003cp\u003eA set of attributes to apply to links in the string.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV20activeLinkAttributesSDySo21NSAttributedStringKeyas11AnyHashableVGvp":{"name":"activeLinkAttributes","abstract":"\u003cp\u003eA set of attributes to apply to links when they are touched.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:25BlueprintUICommonControls15AttributedLabelV14attributedText9configureACSo18NSAttributedStringC_yACzXEtcfc":{"name":"init(attributedText:configure:)","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AttributedLabel"},"Structs/AttributedLabel.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AttributedLabel"},"Structs/AttributedLabel/LinkDetectionType.html":{"name":"LinkDetectionType","abstract":"\u003cp\u003eTypes of data that can be detected and automatically turned into links.\u003c/p\u003e","parent_name":"AttributedLabel"},"Structs/Aligned/HorizontalAlignment.html#/s:11BlueprintUI7AlignedV19HorizontalAlignmentO7leadingyA2EmF":{"name":"leading","abstract":"\u003cp\u003eAligns the content to the leading edge of the containing element.","parent_name":"HorizontalAlignment"},"Structs/Aligned/HorizontalAlignment.html#/s:11BlueprintUI7AlignedV19HorizontalAlignmentO6centeryA2EmF":{"name":"center","abstract":"\u003cp\u003eCenters the content horizontally.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/Aligned/HorizontalAlignment.html#/s:11BlueprintUI7AlignedV19HorizontalAlignmentO8trailingyA2EmF":{"name":"trailing","abstract":"\u003cp\u003eAligns the content to the trailing edge of the containing element.","parent_name":"HorizontalAlignment"},"Structs/Aligned/HorizontalAlignment.html#/s:11BlueprintUI7AlignedV19HorizontalAlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eThe content fills the full horizontal width of the containing element.\u003c/p\u003e","parent_name":"HorizontalAlignment"},"Structs/Aligned/VerticalAlignment.html#/s:11BlueprintUI7AlignedV17VerticalAlignmentO3topyA2EmF":{"name":"top","abstract":"\u003cp\u003eAligns the content to the top edge of the containing element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/Aligned/VerticalAlignment.html#/s:11BlueprintUI7AlignedV17VerticalAlignmentO6centeryA2EmF":{"name":"center","abstract":"\u003cp\u003eCenters the content vertically.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/Aligned/VerticalAlignment.html#/s:11BlueprintUI7AlignedV17VerticalAlignmentO6bottomyA2EmF":{"name":"bottom","abstract":"\u003cp\u003eAligns the content to the bottom edge of the containing element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/Aligned/VerticalAlignment.html#/s:11BlueprintUI7AlignedV17VerticalAlignmentO4fillyA2EmF":{"name":"fill","abstract":"\u003cp\u003eThe content fills the full vertical height of the containing element.\u003c/p\u003e","parent_name":"VerticalAlignment"},"Structs/Aligned/VerticalAlignment.html":{"name":"VerticalAlignment","abstract":"\u003cp\u003eThe possible vertical alignment values.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned/HorizontalAlignment.html":{"name":"HorizontalAlignment","abstract":"\u003cp\u003eThe possible horizontal alignment values.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7AlignedV14wrappedElementAA0E0_pvp":{"name":"wrappedElement","abstract":"\u003cp\u003eThe content element to be aligned.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7AlignedV17verticalAlignmentAC08VerticalE0Ovp":{"name":"verticalAlignment","abstract":"\u003cp\u003eThe vertical alignment.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7AlignedV19horizontalAlignmentAC010HorizontalE0Ovp":{"name":"horizontalAlignment","abstract":"\u003cp\u003eThe horizontal alignment.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7AlignedV10vertically12horizontally8wrappingA2C17VerticalAlignmentO_AC010HorizontalH0OAA7Element_ptcfc":{"name":"init(vertically:horizontally:wrapping:)","abstract":"\u003cp\u003eInitializes an \u003ccode\u003eAligned\u003c/code\u003e with the given content element and alignments.\u003c/p\u003e","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"Aligned"},"Structs/Aligned.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"Aligned"},"Structs/EnvironmentReader.html#/s:11BlueprintUI17EnvironmentReaderV21elementRepresentationAcA7Element_pAA0C0Vc_tcfc":{"name":"init(elementRepresentation:)","parent_name":"EnvironmentReader"},"Structs/EnvironmentReader.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"EnvironmentReader"},"Structs/EnvironmentReader.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"EnvironmentReader"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI18AdaptedEnvironmentV7Adaptera":{"name":"Adapter","abstract":"\u003cp\u003eTakes in a mutable \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Environment.html\"\u003eEnvironment\u003c/a\u003e\u003c/code\u003e which can be mutated to add or override values.\u003c/p\u003e","parent_name":"AdaptedEnvironment"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI18AdaptedEnvironmentV2by8wrappingACyAA0D0Vzc_AA7Element_ptcfc":{"name":"init(by:wrapping:)","abstract":"\u003cp\u003eWraps an element with an environment that is modified using the given","parent_name":"AdaptedEnvironment"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI18AdaptedEnvironmentV3key5value8wrappingACxm_5ValueQzAA7Element_ptcAA0D3KeyRzlufc":{"name":"init(key:value:wrapping:)","abstract":"\u003cp\u003eWraps an element with an environment that is modified for a single key and value.\u003c/p\u003e","parent_name":"AdaptedEnvironment"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI18AdaptedEnvironmentV7keyPath5value8wrappingACs011WritableKeyF0CyAA0D0VxG_xAA7Element_ptclufc":{"name":"init(keyPath:value:wrapping:)","abstract":"\u003cp\u003eWraps an element with an environment that is modified for a single value.\u003c/p\u003e","parent_name":"AdaptedEnvironment"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AdaptedEnvironment"},"Structs/AdaptedEnvironment.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AdaptedEnvironment"},"Structs/AccessibilityElement/CustomContent/Importance.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV10ImportanceO7defaultyA2GmF":{"name":"default","abstract":"\u003cp\u003eBy default custom content is available through the rotor.\u003c/p\u003e","parent_name":"Importance"},"Structs/AccessibilityElement/CustomContent/Importance.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV10ImportanceO4highyA2GmF":{"name":"high","abstract":"\u003cp\u003eIn addtion to being available through the rotor, high importance content will announced in the main VoiceOver utterance.","parent_name":"Importance"},"Structs/AccessibilityElement/CustomContent/Importance.html":{"name":"Importance","abstract":"\u003cp\u003eThe importance of the content.\u003c/p\u003e","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomContent.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV5labelSSvp":{"name":"label","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomContent.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV5valueSSSgvp":{"name":"value","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomContent.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV10importanceAE10ImportanceOvp":{"name":"importance","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomContent.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV5label5value10importanceAESS_SSSgAE10ImportanceOtcfc":{"name":"init(label:value:importance:)","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomContent.html#/s:25BlueprintUICommonControls20AccessibilityElementV13CustomContentV02axfG0So08AXCustomG0Cvp":{"name":"axCustomContent","parent_name":"CustomContent"},"Structs/AccessibilityElement/CustomAction.html#/s:25BlueprintUICommonControls20AccessibilityElementV12CustomActionV12OnActivationa":{"name":"OnActivation","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:25BlueprintUICommonControls20AccessibilityElementV12CustomActionV4nameSSvp":{"name":"name","abstract":"\u003cp\u003eA localized name that discribes the action.\u003c/p\u003e","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:25BlueprintUICommonControls20AccessibilityElementV12CustomActionV5imageSo7UIImageCSgvp":{"name":"image","abstract":"\u003cp\u003eAn image representing the action to be shown with some assistive technologies such as Switch Control.\u003c/p\u003e","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:25BlueprintUICommonControls20AccessibilityElementV12CustomActionV12onActivationSbycvp":{"name":"onActivation","abstract":"\u003cp\u003eA Callback for when the action is activated. This should return a \u003ccode\u003ebool\u003c/code\u003e indicating success or failure of the action.\u003c/p\u003e","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:25BlueprintUICommonControls20AccessibilityElementV12CustomActionV4name5image12onActivationAESS_So7UIImageCSgSbyctcfc":{"name":"init(name:image:onActivation:)","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"CustomAction"},"Structs/AccessibilityElement/CustomAction.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"CustomAction"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO15IncrementActiona":{"name":"IncrementAction","abstract":"\u003cp\u003eUsed in conjunction with UIAccessibilityTrait.adjustable, these will be called to allow accessible adjustment of a value, for example in a slider or stepper control.","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO15DecrementActiona":{"name":"DecrementAction","abstract":"\u003cp\u003eUsed in conjunction with UIAccessibilityTrait.adjustable, these will be called to allow accessible adjustment of a value, for example in a slider or stepper control.","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO6buttonyA2EmF":{"name":"button","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO4linkyA2EmF":{"name":"link","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO6headeryA2EmF":{"name":"header","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO11searchFieldyA2EmF":{"name":"searchField","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO5imageyA2EmF":{"name":"image","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO8selectedyA2EmF":{"name":"selected","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO10playsSoundyA2EmF":{"name":"playsSound","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO11keyboardKeyyA2EmF":{"name":"keyboardKey","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO10staticTextyA2EmF":{"name":"staticText","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO07summaryE0yA2EmF":{"name":"summaryElement","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO10notEnabledyA2EmF":{"name":"notEnabled","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO17updatesFrequentlyyA2EmF":{"name":"updatesFrequently","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO18startsMediaSessionyA2EmF":{"name":"startsMediaSession","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO10adjustableyAEyyc_yyctcAEmF":{"name":"adjustable(_:_:)","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO23allowsDirectInteractionyA2EmF":{"name":"allowsDirectInteraction","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO14causesPageTurnyA2EmF":{"name":"causesPageTurn","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:25BlueprintUICommonControls20AccessibilityElementV5TraitO6tabBaryA2EmF":{"name":"tabBar","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Trait"},"Structs/AccessibilityElement/Trait.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Trait"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV5labelSSSgvp":{"name":"label","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV5valueSSSgvp":{"name":"value","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV4hintSSSgvp":{"name":"hint","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV10identifierSSSgvp":{"name":"identifier","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV6traitsShyAC5TraitOGvp":{"name":"traits","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV22accessibilityFrameSizeSo6CGSizeVSgvp":{"name":"accessibilityFrameSize","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV29accessibilityFrameCornerStyleAA3BoxV0hI0Ovp":{"name":"accessibilityFrameCornerStyle","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV07wrappedE00A2UI0E0_pvp":{"name":"wrappedElement","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV21accessibilityActivateSbycSgvp":{"name":"accessibilityActivate","abstract":"\u003cp\u003eUsed to provide custom behaviour when activated by voiceover. This will override the default behavior of issuing a tap event at the accessibility activation point.","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV13customActionsSayAC12CustomActionVGvp":{"name":"customActions","abstract":"\u003cp\u003eAn array containing one or more \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AccessibilityElement/CustomAction.html\"\u003eCustomAction\u003c/a\u003e\u003c/code\u003es, defining additional supported actions. Assistive technologies, such as VoiceOver, will display your custom actions to the user at appropriate times.\u003c/p\u003e","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV13customContentSayAC06CustomG0VGvp":{"name":"customContent","abstract":"\u003cp\u003eAn array containing one or more \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AccessibilityElement/CustomContent.html\"\u003eCustomContent\u003c/a\u003e\u003c/code\u003es, defining additional content associated with the element. Assistive technologies, such as VoiceOver, will announce your custom content to the user at appropriate times.\u003c/p\u003e","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:25BlueprintUICommonControls20AccessibilityElementV5label5value6traits4hint10identifier22accessibilityFrameSize0kL11CornerStyle13customActions0P7Content8wrapping9configureACSSSg_AOShyAC5TraitOGA2OSo6CGSizeVSgAA3BoxV0nO0OSayAC12CustomActionVGSayAC0xR0VG0A2UI0E0_pyACzXEtcfc":{"name":"init(label:value:traits:hint:identifier:accessibilityFrameSize:accessibilityFrameCornerStyle:customActions:customContent:wrapping:configure:)","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement/Trait.html":{"name":"Trait","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement/CustomAction.html":{"name":"CustomAction","abstract":"\u003cp\u003eUsed to provide additional functionality to assistive technologies beyond your accessible UI.\u003c/p\u003e","parent_name":"AccessibilityElement"},"Structs/AccessibilityElement/CustomContent.html":{"name":"CustomContent","parent_name":"AccessibilityElement"},"Structs/AccessibilityContainer.html#/s:25BlueprintUICommonControls22AccessibilityContainerV10identifierSSSgvp":{"name":"identifier","abstract":"\u003cp\u003eAn optional \u003ccode\u003eaccessibilityIdentifier\u003c/code\u003e to give the container. Defaults to \u003ccode\u003enil\u003c/code\u003e.\u003c/p\u003e","parent_name":"AccessibilityContainer"},"Structs/AccessibilityContainer.html#/s:25BlueprintUICommonControls22AccessibilityContainerV7wrapped0A2UI7Element_pvp":{"name":"wrapped","parent_name":"AccessibilityContainer"},"Structs/AccessibilityContainer.html#/s:25BlueprintUICommonControls22AccessibilityContainerV10identifier8wrappingACSSSg_0A2UI7Element_ptcfc":{"name":"init(identifier:wrapping:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eAccessibilityContainer\u003c/code\u003e wrapping the provided element.\u003c/p\u003e","parent_name":"AccessibilityContainer"},"Structs/AccessibilityContainer.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AccessibilityContainer"},"Structs/AccessibilityContainer.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AccessibilityContainer"},"Structs/AccessibilityBlocker.html#/s:25BlueprintUICommonControls20AccessibilityBlockerV7wrapped0A2UI7Element_pvp":{"name":"wrapped","abstract":"\u003cp\u003eThe element whose accessibility information will be blocked.\u003c/p\u003e","parent_name":"AccessibilityBlocker"},"Structs/AccessibilityBlocker.html#/s:25BlueprintUICommonControls20AccessibilityBlockerV10isBlockingSbvp":{"name":"isBlocking","abstract":"\u003cp\u003eIf the \u003ccode\u003eAccessibilityBlocker\u003c/code\u003e is currently blocking accessibility.\u003c/p\u003e","parent_name":"AccessibilityBlocker"},"Structs/AccessibilityBlocker.html#/s:25BlueprintUICommonControls20AccessibilityBlockerV10isBlocking8wrappingACSb_0A2UI7Element_ptcfc":{"name":"init(isBlocking:wrapping:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eAccessibilityBlocker\u003c/code\u003e wrapping the provided element.\u003c/p\u003e","parent_name":"AccessibilityBlocker"},"Structs/AccessibilityBlocker.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"AccessibilityBlocker"},"Structs/AccessibilityBlocker.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"AccessibilityBlocker"},"Structs/AccessibilityBlocker.html":{"name":"AccessibilityBlocker","abstract":"\u003cp\u003eBlocks all accessibility on the element, so that it is"},"Structs/AccessibilityContainer.html":{"name":"AccessibilityContainer","abstract":"\u003cp\u003eActs as an accessibility container for any accessible subviews.\u003c/p\u003e"},"Structs/AccessibilityElement.html":{"name":"AccessibilityElement"},"Structs/AdaptedEnvironment.html":{"name":"AdaptedEnvironment","abstract":"\u003cp\u003eWraps an element tree with a modified environment.\u003c/p\u003e"},"Structs/EnvironmentReader.html":{"name":"EnvironmentReader","abstract":"\u003cp\u003eAn element that dynamically builds its content based on the environment.\u003c/p\u003e"},"Structs/Aligned.html":{"name":"Aligned","abstract":"\u003cp\u003eAligns a content element within itself. The vertical and horizontal alignment may be set independently.\u003c/p\u003e"},"Structs/AttributedLabel.html":{"name":"AttributedLabel"},"Structs/Box.html":{"name":"Box","abstract":"\u003cp\u003eA simple element that wraps a child element and adds visual styling including"},"Structs/Button.html":{"name":"Button","abstract":"\u003cp\u003eAn element that wraps a child element in a button that mimics a UIButton with the .system style. That is, when"},"Structs/Centered.html":{"name":"Centered","abstract":"\u003cp\u003eCenters a content element within itself.\u003c/p\u003e"},"Structs/Column.html":{"name":"Column","abstract":"\u003cp\u003eDisplays a list of items in a linear vertical layout.\u003c/p\u003e"},"Structs/ConstrainedAspectRatio.html":{"name":"ConstrainedAspectRatio","abstract":"\u003cp\u003eConstrains the size of the content element to an aspect ratio.\u003c/p\u003e"},"Structs/ConstrainedSize.html":{"name":"ConstrainedSize","abstract":"\u003cp\u003eConstrains the measured size of the contained element in the ranges specified by the \u003ccode\u003ewidth\u003c/code\u003e and \u003ccode\u003eheight\u003c/code\u003e properties.\u003c/p\u003e"},"Structs/Empty.html":{"name":"Empty","abstract":"\u003cp\u003eAn empty \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Element.html\"\u003eElement\u003c/a\u003e\u003c/code\u003e which has no size and draws no content.\u003c/p\u003e"},"Structs/EqualStack.html":{"name":"EqualStack","abstract":"\u003cp\u003eAn element that sizes its children equally, stacking them in the primary axis according to"},"Structs/GeometryReader.html":{"name":"GeometryReader","abstract":"\u003cp\u003eAn element that dynamically builds its content based on the available space.\u003c/p\u003e"},"Structs/Image.html":{"name":"Image","abstract":"\u003cp\u003eDisplays an image within an element hierarchy.\u003c/p\u003e"},"Structs/Inset.html":{"name":"Inset","abstract":"\u003cp\u003eInsets a content element within a layout.\u003c/p\u003e"},"Structs/Label.html":{"name":"Label","abstract":"\u003cp\u003eDisplays text content.\u003c/p\u003e"},"Structs/Overlay.html":{"name":"Overlay","abstract":"\u003cp\u003eStretches all of its child elements to fill the layout area, stacked on top of each other.\u003c/p\u003e"},"Structs/Row.html":{"name":"Row","abstract":"\u003cp\u003eDisplays a list of items in a linear horizontal layout.\u003c/p\u003e"},"Structs/Rule.html":{"name":"Rule","abstract":"\u003cp\u003eA solid line, parallel to the x or y axis, with a fixed thickness but unconstrained in length,"},"Structs/ScrollView.html":{"name":"ScrollView","abstract":"\u003cp\u003eWraps a content element and makes it scrollable.\u003c/p\u003e"},"Structs/SegmentedControl.html":{"name":"SegmentedControl","abstract":"\u003cp\u003eAllows users to pick from an array of options.\u003c/p\u003e"},"Structs/Spacer.html":{"name":"Spacer","abstract":"\u003cp\u003eAn element that does not display anything (it has neither children or a view).\u003c/p\u003e"},"Structs/Tappable.html":{"name":"Tappable","abstract":"\u003cp\u003eWraps a content element and calls the provided closure when tapped.\u003c/p\u003e"},"Structs/TextField.html":{"name":"TextField","abstract":"\u003cp\u003eDisplays a text field.\u003c/p\u003e"},"Structs/TransitionContainer.html":{"name":"TransitionContainer","abstract":"\u003cp\u003eWraps a content element and adds transitions when the element appears,"},"Structs/ElementPreview/PreviewType.html#/s:11BlueprintUI14ElementPreviewV0D4TypeO6deviceyAE05SwiftB00D6DeviceVcAEmF":{"name":"device(_:)","abstract":"\u003cp\u003eThe preview will be inside the provided device (eg, iPhone X).\u003c/p\u003e","parent_name":"PreviewType"},"Structs/ElementPreview/PreviewType.html#/s:11BlueprintUI14ElementPreviewV0D4TypeO5fixedyAE14CoreFoundation7CGFloatV_AItcAEmF":{"name":"fixed(width:height:)","abstract":"\u003cp\u003eThe preview will be the provided size\u003c/p\u003e","parent_name":"PreviewType"},"Structs/ElementPreview/PreviewType.html#/s:11BlueprintUI14ElementPreviewV0D4TypeO8thatFitsyAE14CoreFoundation7CGFloatV_tcAEmF":{"name":"thatFits(padding:)","abstract":"\u003cp\u003eThe preview will be as large as needed to preview the content.\u003c/p\u003e","parent_name":"PreviewType"},"Structs/ElementPreview/PreviewType.html#/s:11BlueprintUI14ElementPreviewV0D4TypeO10identifiers11AnyHashableVvp":{"name":"identifier","parent_name":"PreviewType"},"Structs/ElementPreview/PreviewType.html#/s:11BlueprintUI14ElementPreviewV0D4TypeO11previewView4with3for05SwiftB003AnyG0VSS_AA0C0_ptF":{"name":"previewView(with:for:)","parent_name":"PreviewType"},"Structs/ElementPreview.html#/s:11BlueprintUI14ElementPreviewV0C8Providera":{"name":"ElementProvider","abstract":"\u003cp\u003eA provider which returns a new element.\u003c/p\u003e","parent_name":"ElementPreview"},"Structs/ElementPreview.html#/s:11BlueprintUI14ElementPreviewV13commonDevices5named4withACSS_AA0C0_pyctFZ":{"name":"commonDevices(named:with:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eElementPreview\u003c/code\u003e with several common devices that your users may use.\u003c/p\u003e","parent_name":"ElementPreview"},"Structs/ElementPreview.html#/s:11BlueprintUI14ElementPreviewV5named4withAeCSS_AC0D4TypeOAA0C0_pyctcfc":{"name":"init(named:with:with:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eElementPreview\u003c/code\u003e with the provided preview type.","parent_name":"ElementPreview"},"Structs/ElementPreview.html#/s:11BlueprintUI14ElementPreviewV5named4withAeCSS_SayAC0D4TypeOGAA0C0_pyctcfc":{"name":"init(named:with:with:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eElementPreview\u003c/code\u003e with the provided preview types.\u003c/p\u003e","parent_name":"ElementPreview"},"Structs/ElementPreview.html#/s:7SwiftUI4ViewP4body4BodyQzvp":{"name":"body","parent_name":"ElementPreview"},"Structs/ElementPreview/PreviewType.html":{"name":"PreviewType","abstract":"\u003cp\u003eThe preview type to use to display an element in an Xcode preview.\u003c/p\u003e","parent_name":"ElementPreview"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC11environmentAA11EnvironmentVvp":{"name":"environment","abstract":"\u003cp\u003eA base environment used when laying out and rendering the element tree.\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC046automaticallyInheritsEnvironmentFromContainingA5ViewsSbvp":{"name":"automaticallyInheritsEnvironmentFromContainingBlueprintViews","abstract":"\u003cp\u003eIf \u003ccode\u003etrue\u003c/code\u003e, then Blueprint will automatically inherit the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Environment.html\"\u003eEnvironment\u003c/a\u003e\u003c/code\u003e from the nearest","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC7elementAA7Element_pSgvp":{"name":"element","abstract":"\u003cp\u003eThe root element that is displayed within the view.\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(py)bounds":{"name":"bounds","abstract":"\u003cp\u003eWe need to invalidateIntrinsicContentSize when \u003ccode\u003ebound.size\u003c/code\u003e changes for Auto Layout to work correctly.\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC10layoutModeAA06LayoutE0OSgvp":{"name":"layoutMode","abstract":"\u003cp\u003eAn optional explicit layout mode for this view. If \u003ccode\u003enil\u003c/code\u003e, this view will inherit the layout","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC4nameSSSgvp":{"name":"name","abstract":"\u003cp\u003eAn optional name to help identify this view\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC15metricsDelegateAA0ac7MetricsE0_pSgvp":{"name":"metricsDelegate","abstract":"\u003cp\u003eProvides performance metrics about the duration of layouts, updates, etc.\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC7element11environmentAcA7Element_pSg_AA11EnvironmentVtcfc":{"name":"init(element:environment:)","abstract":"\u003cp\u003eInstantiates a view with the given element\u003c/p\u003e","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)initWithFrame:":{"name":"init(frame:)","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)sizeThatFits:":{"name":"sizeThatFits(_:)","abstract":"\u003cp\u003eMeasures the size needed to display the view within the given constraining size,","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/s:11BlueprintUI0A4ViewC12sizeThatFitsySo6CGSizeVAA14SizeConstraintVF":{"name":"sizeThatFits(_:)","abstract":"\u003cp\u003eMeasures the size needed to display the view within the given \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SizeConstraint.html\"\u003eSizeConstraint\u003c/a\u003e\u003c/code\u003e.","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)systemLayoutSizeFittingSize:":{"name":"systemLayoutSizeFitting(_:)","abstract":"\u003cp\u003eMeasures the size needed to display the view within then given constraining size,","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority:":{"name":"systemLayoutSizeFitting(_:withHorizontalFittingPriority:verticalFittingPriority:)","abstract":"\u003cp\u003eMeasures the size needed to display the view within then given constraining size,","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(py)intrinsicContentSize":{"name":"intrinsicContentSize","abstract":"\u003cp\u003eFor us, this is the same as \u003ccode\u003esizeThatFits\u003c/code\u003e, since blueprint does not","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(py)semanticContentAttribute":{"name":"semanticContentAttribute","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)safeAreaInsetsDidChange":{"name":"safeAreaInsetsDidChange()","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)layoutSubviews":{"name":"layoutSubviews()","parent_name":"BlueprintView"},"Classes/BlueprintView.html#/c:@M@BlueprintUI@objc(cs)BlueprintView(im)didMoveToWindow":{"name":"didMoveToWindow()","parent_name":"BlueprintView"},"Classes/BlueprintView.html":{"name":"BlueprintView","abstract":"\u003cp\u003eA view that is responsible for displaying an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Element.html\"\u003eElement\u003c/a\u003e\u003c/code\u003e hierarchy.\u003c/p\u003e"},"Structs/ElementPreview.html":{"name":"ElementPreview","abstract":"\u003cp\u003eA SwiftUI view which wraps a Blueprint element, which can be used to preview Blueprint elements"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV5alpha14CoreFoundation7CGFloatVvp":{"name":"alpha","abstract":"\u003cp\u003eThe alpha of the view in the hidden state (initial for appearing, final for disappearing).\u003c/p\u003e","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV9transformSo13CATransform3DVvp":{"name":"transform","abstract":"\u003cp\u003eThe transform of the view in the hidden state (initial for appearing, final for disappearing).\u003c/p\u003e","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV10attributesAA19AnimationAttributesVvp":{"name":"attributes","abstract":"\u003cp\u003eThe animation attributes that will be used to drive the transition.\u003c/p\u003e","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV5alpha9transform10attributesAC14CoreFoundation7CGFloatV_So13CATransform3DVAA19AnimationAttributesVtcfc":{"name":"init(alpha:transform:attributes:)","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV5scaleACvpZ":{"name":"scale","abstract":"\u003cp\u003eReturns a \u003ccode\u003eVisibilityTransition\u003c/code\u003e that scales in and out.\u003c/p\u003e","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV4fadeACvpZ":{"name":"fade","abstract":"\u003cp\u003eReturns a \u003ccode\u003eVisibilityTransition\u003c/code\u003e that fades in and out.\u003c/p\u003e","parent_name":"VisibilityTransition"},"Structs/VisibilityTransition.html#/s:11BlueprintUI20VisibilityTransitionV12scaleAndFadeACvpZ":{"name":"scaleAndFade","abstract":"\u003cp\u003eReturns a \u003ccode\u003eVisibilityTransition\u003c/code\u003e that simultaneously scales and fades in and out.\u003c/p\u003e","parent_name":"VisibilityTransition"},"Enums/LayoutTransition.html#/s:11BlueprintUI16LayoutTransitionO4noneyA2CmF":{"name":"none","abstract":"\u003cp\u003eThe view will never animate layout changes.\u003c/p\u003e","parent_name":"LayoutTransition"},"Enums/LayoutTransition.html#/s:11BlueprintUI16LayoutTransitionO8specificyAcA19AnimationAttributesVcACmF":{"name":"specific(_:)","abstract":"\u003cp\u003eLayout changes will always animate with the given attributes.\u003c/p\u003e","parent_name":"LayoutTransition"},"Enums/LayoutTransition.html#/s:11BlueprintUI16LayoutTransitionO9inheritedyA2CmF":{"name":"inherited","abstract":"\u003cp\u003eThe view will only animate layout changes if an inherited transition exists.\u003c/p\u003e","parent_name":"LayoutTransition"},"Enums/LayoutTransition.html#/s:11BlueprintUI16LayoutTransitionO21inheritedWithFallbackyAcA19AnimationAttributesVcACmF":{"name":"inheritedWithFallback(_:)","abstract":"\u003cp\u003eThe view will animate along with an inherited transition (if present) or the specified fallback attributes.\u003c/p\u003e","parent_name":"LayoutTransition"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV6Updatea":{"name":"Update","abstract":"\u003cp\u003eA closure that is applied to the native view instance during an update cycle.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV7builderxycvp":{"name":"builder","abstract":"\u003cp\u003eA closure that is responsible for instantiating an instance of the native view.","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV7updatesSayyxcGvp":{"name":"updates","abstract":"\u003cp\u003eAn array of update closures.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV07contentC0ySo6UIViewCxcvp":{"name":"contentView","abstract":"\u003cp\u003eA closure that takes a native view instance as the single argument, and","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV16layoutTransitionAA06LayoutG0Ovp":{"name":"layoutTransition","abstract":"\u003cp\u003eThe transition to use during layout changes.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV19appearingTransitionAA010VisibilityG0VSgvp":{"name":"appearingTransition","abstract":"\u003cp\u003eThe transition to use when this view appears.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV22disappearingTransitionAA010VisibilityG0VSgvp":{"name":"disappearingTransition","abstract":"\u003cp\u003eThe transition to use when this view disappears.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV8onAppearyycSgvp":{"name":"onAppear","abstract":"\u003cp\u003eA hook to call when the element appears.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV11onDisappearyycSgvp":{"name":"onDisappear","abstract":"\u003cp\u003eA hook to call when the element disappears.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV21frameRoundingBehaviorAC05FramegH0Ovp":{"name":"frameRoundingBehavior","abstract":"\u003cp\u003eThe prioritization method to use when snapping the native view\u0026rsquo;s frame to pixel","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationVAEy_xGycfc":{"name":"init()","abstract":"\u003cp\u003eInitializes a default configuration object.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV5applyyyyxcF":{"name":"apply(_:)","abstract":"\u003cp\u003eAdds the given update closure to the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationV7updatesSayyxcGvp\"\u003eupdates\u003c/a\u003e\u003c/code\u003e array.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationVyqd__Sgs24ReferenceWritableKeyPathCyxqd__Gcluip":{"name":"subscript(_:)","abstract":"\u003cp\u003eSubscript for values that are not optional. We must represent these values as optional so that we can","parent_name":"Configuration"},"Structs/ViewDescription/Configuration.html#/s:11BlueprintUI15ViewDescriptionV13ConfigurationVyqd__Sgs24ReferenceWritableKeyPathCyxAFGcluip":{"name":"subscript(_:)","abstract":"\u003cp\u003eSubscript for values that are optional.\u003c/p\u003e","parent_name":"Configuration"},"Structs/ViewDescription/FrameRoundingBehavior.html#/s:11BlueprintUI15ViewDescriptionV21FrameRoundingBehaviorO15prioritizeEdgesyA2EmF":{"name":"prioritizeEdges","abstract":"\u003cp\u003ePrioritize preserving frame edge positions\u003c/p\u003e","parent_name":"FrameRoundingBehavior"},"Structs/ViewDescription/FrameRoundingBehavior.html#/s:11BlueprintUI15ViewDescriptionV21FrameRoundingBehaviorO14prioritizeSizeyA2EmF":{"name":"prioritizeSize","abstract":"\u003cp\u003ePrioritize preserving frame sizes\u003c/p\u003e","parent_name":"FrameRoundingBehavior"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionVyACxmcSo6UIViewCRbzlufc":{"name":"init(_:)","abstract":"\u003cp\u003eGenerates a view description for the given view class.\u003c/p\u003e","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV_11configuringACxm_yAC13ConfigurationVy_xGzXEtcSo6UIViewCRbzlufc":{"name":"init(_:configuring:)","abstract":"\u003cp\u003eGenerates a view description for the given view class.\u003c/p\u003e","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV8viewTypeSo6UIViewCmvp":{"name":"viewType","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV5buildSo6UIViewCyF":{"name":"build()","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV5apply2toySo6UIViewC_tF":{"name":"apply(to:)","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV07contentC02inSo6UIViewCAG_tF":{"name":"contentView(in:)","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV16layoutTransitionAA06LayoutF0Ovp":{"name":"layoutTransition","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV19appearingTransitionAA010VisibilityF0VSgvp":{"name":"appearingTransition","parent_name":"ViewDescription"},"Structs/ViewDescription.html#/s:11BlueprintUI15ViewDescriptionV22disappearingTransitionAA010VisibilityF0VSgvp":{"name":"disappearingTransition","parent_name":"ViewDescription"},"Structs/ViewDescription/FrameRoundingBehavior.html":{"name":"FrameRoundingBehavior","abstract":"\u003cp\u003eThe available prioritization options for rounding frames to pixel boundaries.\u003c/p\u003e","parent_name":"ViewDescription"},"Structs/ViewDescription/Configuration.html":{"name":"Configuration","abstract":"\u003cp\u003eRepresents the configuration of a specific UIView type.\u003c/p\u003e","parent_name":"ViewDescription"},"Structs/ElementContent/Builder.html#/s:11BlueprintUI14ElementContentV7BuilderV6layoutxvp":{"name":"layout","abstract":"\u003cp\u003eThe layout object that is ultimately responsible for measuring","parent_name":"Builder"},"Structs/ElementContent/Builder.html#/s:11BlueprintUI14ElementContentV7BuilderV3add6traits3key7elementy6TraitsQz_s11AnyHashableVSgAA0C0_ptF":{"name":"add(traits:key:element:)","abstract":"\u003cp\u003eAdds the given child element.\u003c/p\u003e","parent_name":"Builder"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV7measure2in11environmentSo6CGSizeVAA14SizeConstraintV_AA11EnvironmentVtF":{"name":"measure(in:environment:)","abstract":"\u003cp\u003eMeasures the required size of this element\u0026rsquo;s content.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV10childCountSivp":{"name":"childCount","parent_name":"ElementContent"},"Structs/ElementContent/Builder.html":{"name":"Builder","abstract":"\u003cp\u003eUsed to construct elements that have layout and children.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV6layout9configureACx_yAC7BuilderVy_xGzXEtcAA6LayoutRzlufc":{"name":"init(layout:configure:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with the given layout and children.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV5child3key6layoutAcA0C0_p_s11AnyHashableVSgxtcAA17SingleChildLayoutRzlufc":{"name":"init(child:key:layout:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with the given element and layout.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV5childAcA0C0_p_tcfc":{"name":"init(child:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with the given element.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV5buildAcA0C0_pAA14SizeConstraintV_AA11EnvironmentVtc_tcfc":{"name":"init(build:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e that will lazily create its storage during a layout and measurement pass,","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV10measurableAcA10Measurable_p_tcfc":{"name":"init(measurable:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with no children that delegates to the provided \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/Measurable.html\"\u003eMeasurable\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV15measureFunctionACSo6CGSizeVAA14SizeConstraintVc_tcfc":{"name":"init(measureFunction:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with no children that delegates to the provided measure function.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV15measureFunctionACSo6CGSizeVAA14SizeConstraintV_AA11EnvironmentVtc_tcfc":{"name":"init(measureFunction:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with no children that delegates to the provided measure function.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV13intrinsicSizeACSo6CGSizeV_tcfc":{"name":"init(intrinsicSize:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with no children that uses the provided intrinsic size for measuring.\u003c/p\u003e","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV5child11environmentAcA0C0_p_yAA11EnvironmentVzctcfc":{"name":"init(child:environment:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with the given child element, measurement caching key, and environment adapter,","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV5child3key5valueAcA0C0_p_xm5ValueQztcAA14EnvironmentKeyRzlufc":{"name":"init(child:key:value:)","abstract":"\u003cp\u003eInitializes a new \u003ccode\u003eElementContent\u003c/code\u003e with the given child element, measurement caching key, and environment key + value.","parent_name":"ElementContent"},"Structs/ElementContent.html#/s:11BlueprintUI14ElementContentV9measuringAcA0C0_p_tcfc":{"name":"init(measuring:)","abstract":"\u003cp\u003eCreates a new \u003ccode\u003eElementContent\u003c/code\u003e which uses the provided element to measure its","parent_name":"ElementContent"},"Protocols/ProxyElement.html#/s:11BlueprintUI12ProxyElementP21elementRepresentationAA0D0_pvp":{"name":"elementRepresentation","abstract":"\u003cp\u003eReturns an element that represents the entire content of this element.\u003c/p\u003e","parent_name":"ProxyElement"},"Protocols/ProxyElement.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","parent_name":"ProxyElement"},"Protocols/ProxyElement.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","parent_name":"ProxyElement"},"Protocols/Element.html#/s:11BlueprintUI7ElementP7contentAA0C7ContentVvp":{"name":"content","abstract":"\u003cp\u003eReturns the content of this element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP22backingViewDescription4withAA0eF0VSgAA0eF7ContextV_tF":{"name":"backingViewDescription(with:)","abstract":"\u003cp\u003eReturns an (optional) description of the view that should back this element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE18adaptedEnvironment3key5valueAaB_pqd__m_5ValueQyd__tAA0E3KeyRd__lF":{"name":"adaptedEnvironment(key:value:)","abstract":"\u003cp\u003eWraps this element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AdaptedEnvironment.html\"\u003eAdaptedEnvironment\u003c/a\u003e\u003c/code\u003e with the given environment key and value.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE18adaptedEnvironment7keyPath5valueAaB_ps011WritableKeyG0CyAA0E0Vqd__G_qd__tlF":{"name":"adaptedEnvironment(keyPath:value:)","abstract":"\u003cp\u003eWraps this element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AdaptedEnvironment.html\"\u003eAdaptedEnvironment\u003c/a\u003e\u003c/code\u003e with the given keypath and value.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE18adaptedEnvironment2byAaB_pyAA0E0Vzc_tF":{"name":"adaptedEnvironment(by:)","abstract":"\u003cp\u003eWraps this element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AdaptedEnvironment.html\"\u003eAdaptedEnvironment\u003c/a\u003e\u003c/code\u003e with the given configuration block.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE7aligned10vertically12horizontallyAA7AlignedVAH17VerticalAlignmentO_AH010HorizontalI0OtF":{"name":"aligned(vertically:horizontally:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Aligned.html\"\u003eAligned\u003c/a\u003e\u003c/code\u003e element with the provided parameters.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE8centeredAA8CenteredVyF":{"name":"centered()","abstract":"\u003cp\u003eWraps the element in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Centered.html\"\u003eCentered\u003c/a\u003e\u003c/code\u003e element to center it within its parent.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE2if_4thenAaB_pSb_AaB_pxXEtF":{"name":"if(_:then:)","abstract":"\u003cp\u003eReturns a new element from the provided \u003ccode\u003emodify\u003c/code\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE2if_4then4elseAaB_pSb_AaB_pxXEAaB_pxXEtF":{"name":"if(_:then:else:)","abstract":"\u003cp\u003eReturns a new element from the provided \u003ccode\u003ethen\u003c/code\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE2if3let4thenAaB_pqd__Sg_AaB_pqd___xtXEtlF":{"name":"if(let:then:)","abstract":"\u003cp\u003eReturns a new element from the provided \u003ccode\u003emodify\u003c/code\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE2if3let4then4elseAaB_pqd__Sg_AaB_pqd___xtXEAaB_pxXEtlF":{"name":"if(let:then:else:)","abstract":"\u003cp\u003eReturns a new element from the provided \u003ccode\u003ethen\u003c/code\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE3mapyAaB_pAaB_pxXEF":{"name":"map(_:)","abstract":"\u003cp\u003eCreates and returns a new element by passing the","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE6modifyyAaB_pyxzXEF":{"name":"modify(_:)","abstract":"\u003cp\u003eCreates and returns a new element by passing the","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE13constrainedTo11aspectRatio11contentModeAA017ConstrainedAspectG0VAA0kG0V_AH07ContentI0OtF":{"name":"constrainedTo(aspectRatio:contentMode:)","abstract":"\u003cp\u003eConstrains the element to the provided aspect ratio.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE13constrainedTo5width6heightAA15ConstrainedSizeVAH10ConstraintO_AJtF":{"name":"constrainedTo(width:height:)","abstract":"\u003cp\u003eConstrains the measured size of the element to the provided width and height.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE13constrainedTo5width6heightAA15ConstrainedSizeV14CoreFoundation7CGFloatV_AKtF":{"name":"constrainedTo(width:height:)","abstract":"\u003cp\u003eConstrains the measured size of the element to the provided width and height.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE13constrainedTo4sizeAA15ConstrainedSizeVSo6CGSizeV_tF":{"name":"constrainedTo(size:)","abstract":"\u003cp\u003eConstrains the measured size of the element to the provided size.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE11constrained2toAA15ConstrainedSizeVAA0G10ConstraintV_tF":{"name":"constrained(to:)","abstract":"\u003cp\u003eConstrains the measured size of the element to the provided \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SizeConstraint.html\"\u003eSizeConstraint\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE8decorate8layering8position4withAaB_pAA8DecorateV8LayeringO_AI8PositionVAaB_pyXEtF":{"name":"decorate(layering:position:with:)","abstract":"\u003cp\u003ePlaces a decoration element behind or in front of the given \u003ccode\u003ewrapped\u003c/code\u003e element,","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE9flowChild3keyAA4FlowV0E0Vs11AnyHashableVSg_tF":{"name":"flowChild(key:)","abstract":"\u003cp\u003eWraps the element in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Flow/Child.html\"\u003eFlow.Child\u003c/a\u003e\u003c/code\u003e to allow customizing the item in the flow layout.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE12gridRowChild3key5widthAA04GridE0V0F0Vs11AnyHashableVSg_AH5WidthOtF":{"name":"gridRowChild(key:width:)","abstract":"\u003cp\u003eWraps an element with a \u003ccode\u003eGridRowChild\u003c/code\u003e in order to provide meta information that a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/GridRow.html\"\u003eGridRow\u003c/a\u003e\u003c/code\u003e can aply to its layout.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE6hiddenyAA6HiddenVSbF":{"name":"hidden(_:)","abstract":"\u003cp\u003eConditionally hide the wrapped element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE5inset3top6bottom4left5rightAA5InsetV14CoreFoundation7CGFloatV_A3MtF":{"name":"inset(top:bottom:left:right:)","abstract":"\u003cp\u003eInsets the element by the given amount on each side.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE5inset2byAA5InsetVSo12UIEdgeInsetsV_tF":{"name":"inset(by:)","abstract":"\u003cp\u003eInsets the element by the given amount on each side.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE5inset7uniformAA5InsetV14CoreFoundation7CGFloatV_tF":{"name":"inset(uniform:)","abstract":"\u003cp\u003eInsets the element by the given amount on each side.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE5inset10horizontal8verticalAA5InsetV14CoreFoundation7CGFloatV_AKtF":{"name":"inset(horizontal:vertical:)","abstract":"\u003cp\u003eInsets the element by the given amount on each side.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE5keyedyAA5KeyedVs11AnyHashableVF":{"name":"keyed(_:)","abstract":"\u003cp\u003e\u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Keyed.html\"\u003eKeyed\u003c/a\u003e\u003c/code\u003e allows providing a \u003ccode\u003eHashable\u003c/code\u003e value which is used","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE8onAppearyAA17LifecycleObserverVyycF":{"name":"onAppear(_:)","abstract":"\u003cp\u003eAdds a hook that will be called when this element appears.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE11onDisappearyAA17LifecycleObserverVyycF":{"name":"onDisappear(_:)","abstract":"\u003cp\u003eAdds a hook that will be called when this element disappears.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE7opacityyAA7OpacityV14CoreFoundation7CGFloatVF":{"name":"opacity(_:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Opacity.html\"\u003eOpacity\u003c/a\u003e\u003c/code\u003e element with the provided opacity.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE12overlayChild3keyAA7OverlayV0E0Vs11AnyHashableVSg_tF":{"name":"overlayChild(key:)","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE16stackLayoutChild8priority14alignmentGuide3keyAA05StackE0V0F0VAK8PriorityO_14CoreFoundation7CGFloatVAA0C10DimensionsVcSgs11AnyHashableVSgtF":{"name":"stackLayoutChild(priority:alignmentGuide:key:)","abstract":"\u003cp\u003eWraps an element with a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/StackLayout/Child.html\"\u003eStackLayout.Child\u003c/a\u003e\u003c/code\u003e in order to customize \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/StackLayout/Traits.html\"\u003eStackLayout.Traits\u003c/a\u003e\u003c/code\u003e and the key.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE16stackLayoutChild8priorityAA05StackE0V0F0VAI8PriorityO_tF":{"name":"stackLayoutChild(priority:)","abstract":"\u003cp\u003eWraps an element with a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/StackLayout/Child.html\"\u003eStackLayout.Child\u003c/a\u003e\u003c/code\u003e in order to customize the \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/StackLayout/Child/Priority.html\"\u003eStackLayout.Child.Priority\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE18tintAdjustmentModeyAA04TinteF0VSo06UIViewgeF0VF":{"name":"tintAdjustmentMode(_:)","abstract":"\u003cp\u003eConditionally modifies the tint adjustment mode of its wrapped element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE11transformedyAA11TransformedVSo13CATransform3DVF":{"name":"transformed(_:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Transformed.html\"\u003eTransformed\u003c/a\u003e\u003c/code\u003e element with the provided 3D transform.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE11transformedyAA11TransformedVSo17CGAffineTransformVF":{"name":"transformed(_:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Transformed.html\"\u003eTransformed\u003c/a\u003e\u003c/code\u003e element with the provided 2D transform.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE10translated10translateX0E1Y0E1ZAA11TransformedV14CoreFoundation7CGFloatV_A2LtF":{"name":"translated(translateX:translateY:translateZ:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Transformed.html\"\u003eTransformed\u003c/a\u003e\u003c/code\u003e element that translates the receiver in 3D space.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE7rotated2byAA11TransformedV10Foundation11MeasurementVySo11NSUnitAngleCG_tF":{"name":"rotated(by:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Transformed.html\"\u003eTransformed\u003c/a\u003e\u003c/code\u003e element that rotates the receiver in 2D space.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE6scaled6scaleX0E1YAA11TransformedV14CoreFoundation7CGFloatV_AKtF":{"name":"scaled(scaleX:scaleY:)","abstract":"\u003cp\u003eWraps the element in an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/Transformed.html\"\u003eTransformed\u003c/a\u003e\u003c/code\u003e element that scales the receiver in 2D space.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementPAAE22userInteractionEnabledyAA04UsereF0VSbF":{"name":"userInteractionEnabled(_:)","abstract":"\u003cp\u003eConditionally enable user interaction of the wrapped element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE18blockAccessibility10isBlockingAD0G7BlockerVSb_tF":{"name":"blockAccessibility(isBlocking:)","abstract":"\u003cp\u003eBlocks all accessibility on the element, so that it is","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE22accessibilityContainer10identifierAaB_pSSSg_tF":{"name":"accessibilityContainer(identifier:)","abstract":"\u003cp\u003eActs as an accessibility container for any subviews","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE013accessibilityC05label5value6traits4hint10identifier0F9FrameSize0fL11CornerStyle13customActions0P7ContentAD013AccessibilityC0VSSSg_AQShyAP5TraitOGA2QSo6CGSizeVSgAD3BoxV0nO0OSayAP12CustomActionVGSayAP0wR0VGtF":{"name":"accessibilityElement(label:value:traits:hint:identifier:accessibilityFrameSize:accessibilityFrameCornerStyle:customActions:customContent:)","abstract":"\u003cp\u003eWraps the receiver in an accessibility element with the provided values.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE13accessibility5label5value4hint10identifier6traits0F9FrameSizeAD013AccessibilityC0VSSSg_A3NShyAM5TraitOGSo6CGSizeVSgtF":{"name":"accessibility(label:value:hint:identifier:traits:accessibilityFrameSize:)","abstract":"\u003cp\u003eWraps the receiver in an accessibility element with the provided values.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE18accessibilityFocus2onAaB_pAD013AccessibilityG0V7TriggerC_tF":{"name":"accessibilityFocus(on:)","abstract":"\u003cp\u003eEnables VoiceOver focus to jump to the wrapped element via the trigger.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE12onLinkTappedyAaB_py10Foundation3URLVcF":{"name":"onLinkTapped(_:)","abstract":"\u003cp\u003eHandle links opened in any \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AttributedLabel.html\"\u003eAttributedLabel\u003c/a\u003e\u003c/code\u003e within this element using the provided closure.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE3box10background7corners11cornerCurve7borders6shadow12clipsContentAD3BoxVSo7UIColorC_AM11CornerStyleOAM0qJ0OAM06BorderR0OAM06ShadowR0OSbtF":{"name":"box(background:corners:cornerCurve:borders:shadow:clipsContent:)","abstract":"\u003cp\u003eWraps the element in a box to provide basic styling.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE11editingMenu4show4withAD07EditingG0VAI7GestureO_SayAD0jG4ItemVGyXEtF":{"name":"editingMenu(show:with:)","abstract":"\u003cp\u003eAllows showing the system\u0026rsquo;s \u003ccode\u003eUIMenuController\u003c/code\u003e editing menu upon long press of the wrapped element.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE10scrollable_9configureAD10ScrollViewVAH11ContentSizeO_yAHzXEtF":{"name":"scrollable(_:configure:)","abstract":"\u003cp\u003eWraps the element in a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/ScrollView.html\"\u003eScrollView\u003c/a\u003e\u003c/code\u003e to allow it to be scrolled","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE8tappable5onTapAD8TappableVyyc_tF":{"name":"tappable(onTap:)","abstract":"\u003cp\u003eWraps the element and calls the provided closure when tapped.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE10transition8onAppear0G9Disappear0G6LayoutAD19TransitionContainerVAA010VisibilityK0VSg_AmA0jK0OtF":{"name":"transition(onAppear:onDisappear:onLayout:)","abstract":"\u003cp\u003eWraps the element in a transition container to provide an animated transition.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html#/s:11BlueprintUI7ElementP0A16UICommonControlsE10transitionyAD19TransitionContainerVAA010VisibilityG0VF":{"name":"transition(_:)","abstract":"\u003cp\u003eWraps the element in a transition container to provide an animated transition when its visibility changes.\u003c/p\u003e","parent_name":"Element"},"Protocols/Element.html":{"name":"Element","abstract":"\u003cp\u003eConforming types represent a rectangular content area in a two-dimensional"},"Protocols/ProxyElement.html":{"name":"ProxyElement","abstract":"\u003cp\u003eCustom elements commonly use another element to actually display content. For example, a profile element might"},"Structs/ElementContent.html":{"name":"ElementContent","abstract":"\u003cp\u003eRepresents the content of an element.\u003c/p\u003e"},"Structs/ViewDescription.html":{"name":"ViewDescription","abstract":"\u003cp\u003eContains a \u003cem\u003edescription\u003c/em\u003e of a UIView instance. A description includes"},"Enums/LayoutTransition.html":{"name":"LayoutTransition","abstract":"\u003cp\u003eThe transition used when layout attributes change for a view during an"},"Structs/VisibilityTransition.html":{"name":"VisibilityTransition","abstract":"\u003cp\u003eThe transition used when a view is inserted or removed during an update cycle.\u003c/p\u003e"},"Creating%20Custom%20Elements.html":{"name":"Creating Custom Elements"},"Displaying%20Elements.html":{"name":"Displaying Elements"},"Common%20Elements.html":{"name":"Common Elements"},"Environment.html":{"name":"Environment"},"Classes.html":{"name":"Classes","abstract":"\u003cp\u003eThe following classes are available globally.\u003c/p\u003e"},"Enums.html":{"name":"Enumerations","abstract":"\u003cp\u003eThe following enumerations are available globally.\u003c/p\u003e"},"Extensions.html":{"name":"Extensions","abstract":"\u003cp\u003eThe following extensions are available globally.\u003c/p\u003e"},"Protocols.html":{"name":"Protocols","abstract":"\u003cp\u003eThe following protocols are available globally.\u003c/p\u003e"},"Structs.html":{"name":"Structures","abstract":"\u003cp\u003eThe following structures are available globally.\u003c/p\u003e"},"Typealiases.html":{"name":"Type Aliases","abstract":"\u003cp\u003eThe following type aliases are available globally.\u003c/p\u003e"}} \ No newline at end of file diff --git a/undocumented.json b/undocumented.json new file mode 100644 index 000000000..872bd0f41 --- /dev/null +++ b/undocumented.json @@ -0,0 +1,6 @@ +{ + "warnings": [ + + ], + "source_directory": "/Users/runner/work/Blueprint/Blueprint" +} \ No newline at end of file