@witchcraft/layout
    Preparing search index...
    • Returns the "visual" edges that can be dragged (so will not return edges for collapsed frames without some area).

      Visual edges are a combination of all edges shared by frames that must be moved together.

      For example, if we have two frames A and B, they share the center edge, and the function would return this single edge (unless includeWindowEdges is true).

      ┌──┰──┐
      ABreturns
      └──┸──┘

      Or in this example, we would get two edges:

      • The one shared by A, B, and C, because no frame edge sharing this edge can without also moving the other frames touching the edge.
      • The one shared by A and B.
      ┌──┰──┐
      AC │ ┃
      ┝━━┫ │ returns ━━ ┃
      B ┃ │ ┃
      └──┸──┘

      And here, we get four edges, because all four can be moved on their own (moving the edge would only affect the two frames sharing that edge).

      ┌──┰──┐
      AC │ ┃
      ┝━━╋━━┥ returns ━━ ━━
      BD │ ┃
      └──┸──┘

      Type Parameters

      • T extends boolean = false

      Parameters

      • frames: LayoutFrame[]
      • __namedParameters: { includeWindowEdges?: boolean; separateByDir?: T } = {}
        • OptionalincludeWindowEdges?: boolean

          Whether to include edges along the window edges.

          false
          
        • OptionalseparateByDir?: T

          Whether the result is separated into horizontal/vertical edges or not.

          false
          

      Returns T extends true
          ? Record<
              "horizontal"
              | "vertical",
              {
                  endX: number;
                  endY: number;
                  error?:
                      | KnownError<
                          LayoutError,
                          | {}
                          | { id: string
                          | undefined }
                          | { id: string | undefined }
                          | { size: { height: number; width: number } }
                          | Record<string, never>
                          | { frame: LayoutFrame }
                          | {
                              frame: LayoutFrame;
                              minSize: { height: number; width: number };
                              nearbyFrames: LayoutFrame[];
                          }
                          | { frame: LayoutFrame }
                          | { frame: LayoutFrame; minSize: number; newSize: number }
                          | { frame: LayoutFrame; framesRequiredToBeDeleted: LayoutFrame[] }
                          | { frame: LayoutFrame }
                          | {
                              hoveredFrameId: string;
                              movingFrameId: string;
                              zoneSide: "left" | "right" | "top" | "bottom" | "center";
                          }
                          | {
                              hoveredFrameId: string;
                              movingFrameId: string;
                              zoneSide: "left"
                              | "right"
                              | "top"
                              | "bottom"
                              | "center";
                          }
                          | {
                              hoveredFrameId: string;
                              movingFrameId: string;
                              zoneSide: "left"
                              | "right"
                              | "top"
                              | "bottom"
                              | "center";
                          }
                          | { frame: LayoutFrame }
                          | { frameSizeNeeded: number; minFrameSize: number }
                          | { max: number; min: number; wanted: number }
                          | { problemEdgeCoordinates: number[] }
                          | { id: string; side: "left" | "right" | "top" | "bottom" }
                          | { frame: string }
                          | { frame: LayoutFrame }
                          | { frame: LayoutFrame }
                          | { frame: LayoutFrame }
                          | { frame: LayoutFrame },
                      >
                      | { code: string; message: string };
                  startX: number;
                  startY: number;
              }[],
          >
          : {
              endX: number;
              endY: number;
              error?: | KnownError<
                  LayoutError,
                  | {}
                  | { id: string
                  | undefined }
                  | { id: string | undefined }
                  | { size: { height: number; width: number } }
                  | Record<string, never>
                  | { frame: LayoutFrame }
                  | {
                      frame: LayoutFrame;
                      minSize: { height: number; width: number };
                      nearbyFrames: LayoutFrame[];
                  }
                  | { frame: LayoutFrame }
                  | { frame: LayoutFrame; minSize: number; newSize: number }
                  | { frame: LayoutFrame; framesRequiredToBeDeleted: LayoutFrame[] }
                  | { frame: LayoutFrame }
                  | {
                      hoveredFrameId: string;
                      movingFrameId: string;
                      zoneSide: "left" | "right" | "top" | "bottom" | "center";
                  }
                  | {
                      hoveredFrameId: string;
                      movingFrameId: string;
                      zoneSide: "left"
                      | "right"
                      | "top"
                      | "bottom"
                      | "center";
                  }
                  | {
                      hoveredFrameId: string;
                      movingFrameId: string;
                      zoneSide: "left"
                      | "right"
                      | "top"
                      | "bottom"
                      | "center";
                  }
                  | { frame: LayoutFrame }
                  | { frameSizeNeeded: number; minFrameSize: number }
                  | { max: number; min: number; wanted: number }
                  | { problemEdgeCoordinates: number[] }
                  | { id: string; side: "left" | "right" | "top" | "bottom" }
                  | { frame: string }
                  | { frame: LayoutFrame }
                  | { frame: LayoutFrame }
                  | { frame: LayoutFrame }
                  | { frame: LayoutFrame },
              >
              | { code: string; message: string };
              startX: number;
              startY: number;
          }[]