Scripts/New-UDResizeWindow.ps1

<#
.SYNOPSIS
    Sample control for UniversalDashboard.
.DESCRIPTION
    Sample control function for UniversalDashboard. This function must have an ID and return a hash table.
.PARAMETER Id
    An id for the component default value will be generated by new-guid.
.EXAMPLE
    PS C:\> <example usage>
    Explanation of what the example does
.INPUTS
    Inputs (if any)
.OUTPUTS
    Output (if any)
.NOTES
    General notes
#>

function New-UDResizeWindow {
    param(
        [Parameter()]
        [string]$Id = (New-Guid).ToString(),
        [Parameter()]
        [int]$X = 0,
        [Parameter()]
        [int]$Y = 0,
        [Parameter()]
        [int]$Width = 600,
        [Parameter()]
        [int]$Height = 600,
        [Parameter()]
        [scriptblock]$Content,
        [Parameter()]
        [array]$ResizeHandles = @('sw', 'se', 'nw', 'ne', 'w', 'e', 'n', 's'),
        [Parameter()]
        [string]$ButtonMaximize = "Restore",
        [Parameter()]
        [string]$ButtonMinimize = "Minimize",
        [Parameter()]
        [string]$ButtonExit = "Exit"
    )

    @{
        # The AssetID of the main JS File
        assetId       = $AssetId
        # Tell UD this is a plugin
        isPlugin      = $true
        # This ID must be the same as the one used in the JavaScript to register the control with UD
        type          = "UD-ResizeWindow"
        # An ID is mandatory
        id            = $Id

        # This is where you can put any other properties. They are passed to the React control's props
        # The keys are case-sensitive in JS.
        x             = $X
        y             = $Y
        width         = $Width
        height        = $Height
        resizeHandles = [array]$ResizeHandles
        buttonMax     = $ButtonMaximize
        buttonMin     = $ButtonMinimize
        buttonExit    = $ButtonExit
        content       = $Content.Invoke()
    }
}