<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net7.0</TargetFramework>
        <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
        <ApplicationManifest>app.manifest</ApplicationManifest>
        <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
        <RootNamespace>Issie_Avalonia</RootNamespace>
        <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
    </PropertyGroup>


    <ItemGroup>
        <!-- Common definitions -->
        <Compile Include="src\Common\EEExtensions.fs" />
        <Compile Include="src\Common\Optics.fs" />
        <!--<Compile Include="Common\ElectronAPI.fs" />-->
        <!--<Compile Include="Common\HashMap.fs" />-->
        <Compile Include="src\Common\CommonTypes.fs" />
        <Compile Include="src\Common\DrawHelpers.fs" />
        <Compile Include="src\Common\Helpers.fs" />
        <Compile Include="src\Common\TimeHelpers.fs" />
        <Compile Include="src\Common\WidthInferer.fs" />
        <Compile Include="src\Common\JSHelpers.fs" />
        <Compile Include="src\Common\AvaloniaHelpers.fs" />
        <!--<Compile Include="src\Common\WidthInferer.fs" />-->

        <!-- simulator -->
        <Compile Include="src\Simulator\SimulatorTypes.fs" />
        <Compile Include="src\Simulator\TruthTableTypes.fs" />
        <Compile Include="src\Simulator\NumberHelpers.fs" />
        <Compile Include="src\Simulator\SynchronousUtils.fs" />
        <Compile Include="src\Simulator\Extractor.fs" />
        <Compile Include="src\Simulator\CanvasStateAnalyser.fs" />
        <Compile Include="src\Simulator\SimulationGraphAnalyser.fs" />
        <Compile Include="src\Simulator\Fast\FastCreate.fs" />
        <Compile Include="src\Simulator\Fast\FastReduce.fs" />
        <Compile Include="src\Simulator\Fast\FastRun.fs" />
        <Compile Include="src\Simulator\Builder.fs" />
        <Compile Include="src\Simulator\Verilog.fs" />
        <Compile Include="src\Simulator\Runner.fs" />
        <Compile Include="src\Simulator\DependencyMerger.fs" />
        <Compile Include="src\Simulator\Simulator.fs" />

        <!-- Verilog Component -->
        <Compile Include="src\VerilogComponent\VerilogTypes.fs" />
<!--        <Compile Include="VerilogComponent\VerilogAST.fs" />
        <Compile Include="VerilogComponent\NearleyBindings.fs" />
        <Compile Include="VerilogComponent\ErrorCheckHelpers.fs" />
        <Compile Include="VerilogComponent\ErrorCheckProcedural.fs" />
        <Compile Include="VerilogComponent\ErrorCheck.fs" />
        <Compile Include="VerilogComponent\SheetCreator.fs" />
        <Compile Include="VerilogComponent\CodeEditorHelpers.fs" />-->

        <!-- JS and File interface -->
        <Compile Include="src\Interface\FileIO.fs"/>
        
        <Compile Include="src\Model\DrawModelType.fs" />
        <Compile Include="src\Model\ModelType.fs" />

        <!-- Draw Block -->
        <Compile Include="src\DrawBlock\BlockHelpers.fs" />
        <Compile Include="src\DrawBlock\SymbolHelpers.fs" />
        <!--<Compile Include="src\DrawBlock\PopupHelpers.fs" />-->
        <Compile Include="src\DrawBlock\Symbol.fs" />
        <Compile Include="src\DrawBlock\SymbolView.fs" />
        <Compile Include="src\DrawBlock\SymbolPortHelpers.fs" />
        <Compile Include="src\DrawBlock\SymbolResizeHelpers.fs" />
        <Compile Include="src\DrawBlock\SymbolReplaceHelpers.fs" />
        <Compile Include="src\DrawBlock\SymbolUpdate.fs" />
        <Compile Include="src\DrawBlock\BusWire.fs" />
        <Compile Include="src\DrawBlock\BusWireUpdateHelpers.fs" />
        <Compile Include="src\DrawBlock\BusWireRoutingHelpers.fs" />
        <Compile Include="src\DrawBlock\BusWireRoute.fs" />
        <Compile Include="src\DrawBlock\BusWireSeparate.fs" />
        <Compile Include="src\DrawBlock\BusWireUpdate.fs" />
        <Compile Include="src\DrawBlock\RotateScale.fs" />
        <Compile Include="src\DrawBlock\Sheet.fs" />
        <Compile Include="src\DrawBlock\SheetSnap.fs" />
        <Compile Include="src\DrawBlock\SheetDisplay.fs" />
        <Compile Include="src\DrawBlock\SheetUpdateHelpers.fs" />
        <Compile Include="src\DrawBlock\SheetUpdate.fs" />

        <Compile Include="src\UI\ModelHelpers.fs" />
        <Compile Include="src\UI\Styles.fs"/>
        <Compile Include="src\UI\UIPopups.fs" />
        <Compile Include="src\UI\MenuHelpers.fs" />
        <Compile Include="src\UI\MiscMenuView.fs" />
        <Compile Include="src\UI\TopMenuView.fs"/>
        <Compile Include="src\UI\CatalogueView.fs"/>
        <Compile Include="src\UI\MemoryEditorView.fs" />
        <Compile Include="src\UI\SimulationView.fs" />
        <Compile Include="src\VerilogComponent\VerilogTypes.fs" />
        <Compile Include="src\UI\ContextMenus.fs" />
        <Compile Include="src\UI\MainView.fs"/>
        <Compile Include="src\UI\UpdateHelpers.fs" />
        <Compile Include="src\UI\Update.fs"/>
        <Compile Include="src\UI\WaveSim\WaveSim.fs" />

        <Compile Include="Program.fs"/>

    </ItemGroup>

    <ItemGroup>
        <PackageReference Include="Avalonia" Version="11.0.2"/>
        <PackageReference Include="Avalonia.Desktop" Version="11.0.0"/>
        <PackageReference Include="Avalonia.FuncUI" Version="1.0.0"/>
        <PackageReference Include="Avalonia.FuncUI.Elmish" Version="1.0.0"/>
        <PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.0"/>
        <PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.2"/>
        <PackageReference Include="Avalonia.Diagnostics" Version="11.0.0"/>
        <PackageReference Include="Elmish" Version="4.0.0"/>
        <PackageReference Include="Thoth.Json" Version="7.0.0"/>
        <PackageReference Include="Thoth.Json.Net" Version="11.0.0"/>
        <PackageReference Include="Fable.Core" Version="3.7.1"/>
        <PackageReference Include="Fable.SimpleJson" Version="3.24.0"/>
    </ItemGroup>

    <ItemGroup>
        <None Include="demos\**">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Include="static\**">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
    </ItemGroup>

    <ItemGroup>
      <Folder Include="demos\1fulladder\" />
    </ItemGroup>


</Project>
