using Biskilog_Accounting.Client ;
using Biskilog_Accounting.Client.Repos ;
using Biskilog_Accounting.ServiceRepo ;
using Biskilog_Accounting.Shared.CustomModels ;
using Biskilog_Accounting.Shared.Interfaces ;
using Biskilog_Accounting.Shared.ServiceRepo ;
using BlazorDateRangePicker ;
using Blazored.LocalStorage ;
using Blazored.SessionStorage ;
using Microsoft.AspNetCore.Components.Web ;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting ;
using Microsoft.Fast.Components.FluentUI ;
using Radzen ;
var builder = WebAssemblyHostBuilder . CreateDefault ( args ) ;
builder . RootComponents . Add < App > ( "#app" ) ;
builder . RootComponents . Add < HeadOutlet > ( "head::after" ) ;
builder . Services . AddHttpClient ( "Biskilog_Accounting.ServerAPI" , client = > client . BaseAddress = new Uri ( builder . HostEnvironment . BaseAddress ) ) ;
// Supply HttpClient instances that include access tokens when making requests to the server project
builder . Services . AddScoped ( sp = > sp . GetRequiredService < IHttpClientFactory > ( ) . CreateClient ( "Biskilog_Accounting.ServerAPI" ) ) ;
builder . Services . AddBlazoredLocalStorageAsSingleton ( ) ;
builder . Services . AddBlazoredSessionStorageAsSingleton ( ) ;
builder . Services . AddScoped < ISearchService , SearchService > ( ) ;
builder . Services . AddScoped < DialogService > ( ) ;
builder . Services . AddScoped < ContextMenuService > ( ) ;
builder . Services . AddScoped < ICalculator , CalculatorService > ( ) ;
builder . Services . AddScoped < ITokenService , TokenService > ( ) ;
builder . Services . AddScoped < IProduct , ProductRepository > ( ) ;
builder . Services . AddScoped < ISalesInterface , SalesRepository > ( ) ;
builder . Services . AddScoped < IMainInterface , MainInterfaceService > ( ) ;
builder . Services . AddScoped < ICompanyInfo , MainInterfaceService > ( ) ;
builder . Services . AddScoped < IUser , MainInterfaceService > ( ) ;
builder . Services . AddScoped < ICustomer , MainInterfaceService > ( ) ;
builder . Services . AddFluentUIComponents ( options = >
{
options . HostingModel = BlazorHostingModel . WebAssembly ;
options . IconConfiguration = ConfigurationGenerator . GetIconConfiguration ( ) ;
options . EmojiConfiguration = ConfigurationGenerator . GetEmojiConfiguration ( ) ;
} ) ;
builder . Services . AddDateRangePicker ( config = >
{
config . Attributes = new Dictionary < string , object >
{
{ "class" , "form-control form-control-sm" }
} ;
} ) ;
await builder . Build ( ) . RunAsync ( ) ;