PSWriteOffice.psm1

# PSWriteOffice bootstrapper
# Auto-generated by PowerForge. Do not edit.

# Get library name, from the PSM1 file name
$LibraryName = 'PSWriteOffice'
$Library = "$LibraryName.dll"
$Class = "$LibraryName.Initialize"

$LibRoot = [IO.Path]::Combine($PSScriptRoot, 'Lib')
$AssemblyFolders = Get-ChildItem -LiteralPath $LibRoot -Directory -ErrorAction SilentlyContinue

$Default = $false
$Core = $false
$Standard = $false
foreach ($A in $AssemblyFolders.Name) {
    if ($A -eq 'Default') {
        $Default = $true
    }
    elseif ($A -eq 'Core') {
        $Core = $true
    }
    elseif ($A -eq 'Standard') {
        $Standard = $true
    }
}
if ($Standard -and $Core -and $Default) {
    $FrameworkNet = 'Default'
    $Framework = 'Standard'
}
elseif ($Standard -and $Core) {
    $Framework = 'Standard'
    $FrameworkNet = 'Standard'
}
elseif ($Core -and $Default) {
    $Framework = 'Core'
    $FrameworkNet = 'Default'
}
elseif ($Standard -and $Default) {
    $Framework = 'Standard'
    $FrameworkNet = 'Default'
}
elseif ($Standard) {
    $Framework = 'Standard'
    $FrameworkNet = 'Standard'
}
elseif ($Core) {
    $Framework = 'Core'
    $FrameworkNet = ''
}
elseif ($Default) {
    $Framework = 'Default'
    $FrameworkNet = 'Default'
}
else {
    Write-Error -Message 'No assemblies found'
    return
}

if ($PSEdition -eq 'Core') {
    $LibFolder = $Framework
}
else {
    $LibFolder = $FrameworkNet
}

try {
    $ImportModule = Get-Command -Name Import-Module -Module Microsoft.PowerShell.Core
    $ModuleAssemblyPath = [IO.Path]::Combine($PSScriptRoot, 'Lib', $LibFolder, $Library)

    if ($PSEdition -eq 'Core') {
        $LoaderAssemblyPath = [IO.Path]::Combine($PSScriptRoot, 'Lib', $LibFolder, 'PSWriteOffice.ModuleLoadContext.dll')
        if (-not ('PSWriteOffice.ModuleLoadContext.ModuleAssemblyLoadContext' -as [type])) {
            Add-Type -Path $LoaderAssemblyPath -ErrorAction Stop
        }

        $ModuleAssembly = [PSWriteOffice.ModuleLoadContext.ModuleAssemblyLoadContext]::LoadModule($ModuleAssemblyPath, 'PSWriteOffice')
        $InnerModule = & $ImportModule -Assembly $ModuleAssembly -Force -PassThru -ErrorAction Stop

        if ($InnerModule) {
            # Import-Module -Assembly loads the inner binary module into its own module object. PowerShell has no
            # public API to copy those exported cmdlets back to the script-module wrapper, so this uses the same
            # private PSModuleInfo hook used by community ALC loaders. This runs on first load and reloads so the
            # outer script module always re-exports cmdlets from the ALC-loaded binary module.
            $AddExportedCmdlet = [System.Management.Automation.PSModuleInfo].GetMethod(
                'AddExportedCmdlet',
                [System.Reflection.BindingFlags]'Instance, NonPublic'
            )
            if ($null -ne $AddExportedCmdlet) {
                foreach ($Cmd in $InnerModule.ExportedCmdlets.Values) {
                    $AddExportedCmdlet.Invoke($ExecutionContext.SessionState.Module, @(, $Cmd)) | Out-Null
                }
                $AddExportedAlias = [System.Management.Automation.PSModuleInfo].GetMethod(
                    'AddExportedAlias',
                    [System.Reflection.BindingFlags]'Instance, NonPublic'
                )
                if ($null -ne $AddExportedAlias) {
                    foreach ($Alias in $InnerModule.ExportedAliases.Values) {
                        $AliasTarget = if ([string]::IsNullOrWhiteSpace($Alias.Definition)) {
                            $Alias.ResolvedCommandName 
                        }
                        else {
                            $Alias.Definition 
                        }
                        try {
                            # The alias must exist in this module scope before the private export table can reference it.
                            Set-Alias -Name $Alias.Name -Value $AliasTarget -Scope Local -Force -ErrorAction Stop
                            $ExportedAlias = $ExecutionContext.SessionState.InvokeCommand.GetCommand($Alias.Name, [System.Management.Automation.CommandTypes]::Alias)
                            if ($null -ne $ExportedAlias) {
                                $AddExportedAlias.Invoke($ExecutionContext.SessionState.Module, @(, $ExportedAlias)) | Out-Null
                            }
                            else {
                                Write-Warning -Message "Alias '$($Alias.Name)' from $LibraryName was created but could not be resolved for export."
                            }
                        }
                        catch {
                            Write-Warning -Message "Alias '$($Alias.Name)' from $LibraryName could not be re-exported: $($_.Exception.Message)"
                        }
                    }
                }
                else {
                    Write-Warning -Message "AddExportedAlias is not available on this PowerShell version. Aliases from $LibraryName will not be re-exported to the module scope."
                }
            }
            else {
                Write-Warning -Message "AddExportedCmdlet is not available on this PowerShell version. Falling back to direct Import-Module; cmdlets from $LibraryName will load from the default context."
                & $ImportModule $ModuleAssemblyPath -ErrorAction Stop
            }
        }
    }
    elseif (-not ($Class -as [type])) {
        & $ImportModule $ModuleAssemblyPath -ErrorAction Stop
    }
    else {
        $Type = "$Class" -as [Type]
        & $ImportModule -Force -Assembly ($Type.Assembly)
    }
}
catch {
    if ($ErrorActionPreference -eq 'Stop') {
        throw
    }
    else {
        Write-Warning -Message "Importing module $Library failed. Fix errors before continuing. Error: $($_.Exception.Message)"
    }
}

if ($PSEdition -ne 'Core') {
    # Core loads dependencies through the module-scoped AssemblyLoadContext above. Dot-sourcing the libraries script
    # there would load dependency DLLs into the default context and undo the isolation this template exists to provide.
    $LibrariesScript = [IO.Path]::Combine($PSScriptRoot, 'PSWriteOffice.Libraries.ps1')
    if (Test-Path -LiteralPath $LibrariesScript) {
        . $LibrariesScript
    }
}


$FunctionsToExport = @()
$CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContent', 'Add-OfficeWordText', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Close-OfficeExcel', 'Close-OfficeWord', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficePowerPointSlide', 'Find-OfficeWord', 'Get-OfficeCsv', 'Get-OfficeCsvData', 'Get-OfficeExcel', 'Get-OfficeExcelData', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelRange', 'Get-OfficeExcelTable', 'Get-OfficeExcelUsedRange', 'Get-OfficeMarkdown', 'Get-OfficePowerPoint', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordField', 'Get-OfficeWordHyperlink', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordRun', 'Get-OfficeWordSection', 'Get-OfficeWordTable', 'Get-OfficeWordTableOfContent', 'Import-OfficePowerPointSlide', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeWordMailMerge', 'New-OfficeExcel', 'New-OfficeMarkdown', 'New-OfficePowerPoint', 'New-OfficeWord', 'Protect-OfficeExcelSheet', 'Protect-OfficeWordDocument', 'Remove-OfficeExcelComment', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContent', 'Rename-OfficePowerPointSection', 'Save-OfficeExcel', 'Save-OfficePowerPoint', 'Save-OfficeWord', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelColumn', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelRow', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordTableOfContent', 'Unprotect-OfficeExcelSheet', 'Update-OfficePowerPointText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContent', 'Update-OfficeWordText')
$AliasesToExport = @('ConvertFrom-WordHtml', 'ConvertFrom-WordMarkdown', 'ConvertTo-MarkdownHtml', 'ConvertTo-WordHtml', 'ConvertTo-WordMarkdown', 'ExcelAutoFilter', 'ExcelAutoFilterClear', 'ExcelAutoFit', 'ExcelCell', 'ExcelChart', 'ExcelColumn', 'ExcelComment', 'ExcelCommentRemove', 'ExcelConditionalColorScale', 'ExcelConditionalDataBar', 'ExcelConditionalIconSet', 'ExcelConditionalRule', 'ExcelFormula', 'ExcelFreeze', 'ExcelGridlines', 'ExcelHeaderFooter', 'ExcelHyperlink', 'ExcelHyperlinkHost', 'ExcelHyperlinkSmart', 'ExcelImage', 'ExcelImageFromUrl', 'ExcelInternalLinks', 'ExcelInternalLinksByHeader', 'ExcelMargins', 'ExcelNamedRange', 'ExcelOrientation', 'ExcelPageSetup', 'ExcelPivotTable', 'ExcelPivotTables', 'ExcelProtect', 'ExcelRow', 'ExcelSheet', 'ExcelSheetVisibility', 'ExcelSort', 'ExcelSparkline', 'ExcelTable', 'ExcelTableOfContents', 'ExcelUnprotect', 'ExcelUrlLinks', 'ExcelUrlLinksByHeader', 'ExcelValidationCustomFormula', 'ExcelValidationDate', 'ExcelValidationDecimal', 'ExcelValidationList', 'ExcelValidationTextLength', 'ExcelValidationTime', 'ExcelValidationWholeNumber', 'MarkdownCallout', 'MarkdownCode', 'MarkdownDefinitionList', 'MarkdownDetails', 'MarkdownFrontMatter', 'MarkdownHeading', 'MarkdownHorizontalRule', 'MarkdownHr', 'MarkdownImage', 'MarkdownList', 'MarkdownParagraph', 'MarkdownQuote', 'MarkdownTable', 'MarkdownTableOfContents', 'MarkdownTaskList', 'MarkdownToc', 'PptBackground', 'PptBullets', 'PptChart', 'PptImage', 'PptLayoutBox', 'PptLayoutPlaceholderBounds', 'PptLayoutPlaceholderMargins', 'PptLayoutPlaceholders', 'PptLayoutPlaceholderTextStyle', 'PptNotes', 'PptPlaceholderText', 'PptShape', 'PptSlide', 'PptSlideLayout', 'PptSlideSize', 'PptTable', 'PptTextBox', 'PptTheme', 'PptThemeColor', 'PptThemeFonts', 'PptThemeName', 'PptTitle', 'PptTransition', 'Replace-OfficePowerPointText', 'Replace-OfficeWordText', 'WordBold', 'WordBookmark', 'WordChart', 'WordCheckBox', 'WordCheckBoxes', 'WordComboBox', 'WordComboBoxes', 'WordContentControl', 'WordContentControls', 'WordDatePicker', 'WordDatePickers', 'WordDropDownList', 'WordDropDownLists', 'WordField', 'WordFooter', 'WordHeader', 'WordHyperlink', 'WordImage', 'WordItalic', 'WordList', 'WordListItem', 'WordPageNumber', 'WordParagraph', 'WordPictureControl', 'WordPictureControls', 'WordRepeatingSection', 'WordRepeatingSections', 'WordSection', 'WordTable', 'WordTableCell', 'WordTableCondition', 'WordTableOfContent', 'WordTableOfContents', 'WordText', 'WordWatermark')
Export-ModuleMember -Function $FunctionsToExport -Alias $AliasesToExport -Cmdlet $CmdletsToExport