Files
paperless-ngx/src-ui/src/main.ts
T

423 lines
9.4 KiB
TypeScript
Raw Normal View History

2025-01-01 22:26:53 -08:00
import {
importProvidersFrom,
inject,
provideAppInitializer,
2026-01-09 20:08:50 -08:00
provideZoneChangeDetection,
2025-01-01 22:26:53 -08:00
} from '@angular/core'
2020-10-27 01:10:18 +01:00
2025-01-01 22:26:53 -08:00
import { DragDropModule } from '@angular/cdk/drag-drop'
import { DatePipe, registerLocaleData } from '@angular/common'
import {
provideHttpClient,
2026-01-13 08:24:42 -08:00
withFetch,
2026-01-28 16:18:48 +01:00
withInterceptors,
2025-01-01 22:26:53 -08:00
withInterceptorsFromDi,
} from '@angular/common/http'
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import { BrowserModule, bootstrapApplication } from '@angular/platform-browser'
import {
NgbDateAdapter,
NgbDateParserFormatter,
NgbModule,
} from '@ng-bootstrap/ng-bootstrap'
import { NgSelectModule } from '@ng-select/ng-select'
import {
NgxBootstrapIconsModule,
airplane,
archive,
arrowClockwise,
arrowCounterclockwise,
arrowDown,
2025-01-09 22:05:02 -08:00
arrowDownUp,
2025-01-01 22:26:53 -08:00
arrowLeft,
arrowRepeat,
arrowRight,
arrowRightShort,
arrowUpRight,
asterisk,
bell,
2025-01-01 22:26:53 -08:00
bodyText,
boxArrowUp,
boxArrowUpRight,
boxes,
braces,
calendar,
calendarEvent,
calendarEventFill,
cardChecklist,
cardHeading,
caretDown,
caretUp,
chatLeftText,
2026-01-13 08:24:42 -08:00
chatSquareDots,
2025-01-01 22:26:53 -08:00
check,
check2All,
checkAll,
2025-09-22 11:17:42 -07:00
checkCircle,
2025-01-01 22:26:53 -08:00
checkCircleFill,
checkLg,
chevronDoubleLeft,
chevronDoubleRight,
2025-09-17 14:41:39 -07:00
chevronRight,
2026-02-26 08:46:54 -08:00
circle,
2025-01-01 22:26:53 -08:00
clipboard,
clipboardCheck,
clipboardCheckFill,
clipboardFill,
2025-09-22 11:17:42 -07:00
clockHistory,
2025-01-01 22:26:53 -08:00
dash,
dashCircle,
diagram3,
dice5,
doorOpen,
download,
envelope,
envelopeAt,
envelopeAtFill,
exclamationCircleFill,
exclamationTriangle,
exclamationTriangleFill,
eye,
fileEarmark,
fileEarmarkCheck,
2026-02-26 08:46:54 -08:00
fileEarmarkDiff,
2025-01-01 22:26:53 -08:00
fileEarmarkFill,
fileEarmarkLock,
fileEarmarkMinus,
2026-02-26 08:46:54 -08:00
fileEarmarkPlus,
2025-01-01 22:26:53 -08:00
fileEarmarkRichtext,
fileText,
files,
filter,
folder,
folderFill,
funnel,
gear,
google,
grid,
gripVertical,
hash,
hddStack,
house,
infoCircle,
journals,
link,
2025-09-17 14:41:39 -07:00
listNested,
2025-01-01 22:26:53 -08:00
listTask,
listUl,
microsoft,
nodePlus,
pencil,
people,
peopleFill,
person,
personCircle,
personFill,
personFillLock,
personLock,
personSquare,
playFill,
2025-01-01 22:26:53 -08:00
plus,
plusCircle,
2025-09-11 19:59:11 +02:00
printer,
2025-01-01 22:26:53 -08:00
questionCircle,
scissors,
search,
2025-02-21 08:44:03 -08:00
send,
2025-01-01 22:26:53 -08:00
slashCircle,
sliders2Vertical,
sortAlphaDown,
sortAlphaUpAlt,
stack,
2026-01-13 08:24:42 -08:00
stars,
2025-01-01 22:26:53 -08:00
tag,
tagFill,
tags,
textIndentLeft,
textLeft,
threeDots,
threeDotsVertical,
trash,
uiRadios,
2026-01-08 13:36:11 -08:00
unlock,
2025-01-01 22:26:53 -08:00
upcScan,
windowStack,
x,
xCircle,
xLg,
} from 'ngx-bootstrap-icons'
import { ColorSliderModule } from 'ngx-color/slider'
import { CookieService } from 'ngx-cookie-service'
import { AppRoutingModule } from './app/app-routing.module'
import { AppComponent } from './app/app.component'
import { DirtyDocGuard } from './app/guards/dirty-doc.guard'
import { DirtySavedViewGuard } from './app/guards/dirty-saved-view.guard'
import { PermissionsGuard } from './app/guards/permissions.guard'
2026-01-28 16:18:48 +01:00
import { withApiVersionInterceptor } from './app/interceptors/api-version.interceptor'
2026-03-21 02:12:19 -07:00
import { withAuthExpiryInterceptor } from './app/interceptors/auth-expiry.interceptor'
2026-01-28 16:18:48 +01:00
import { withCsrfInterceptor } from './app/interceptors/csrf.interceptor'
2025-01-01 22:26:53 -08:00
import { DocumentTitlePipe } from './app/pipes/document-title.pipe'
import { FilterPipe } from './app/pipes/filter.pipe'
import { UsernamePipe } from './app/pipes/username.pipe'
import { SettingsService } from './app/services/settings.service'
import { LocalizedDateParserFormatter } from './app/utils/ngb-date-parser-formatter'
import { ISODateAdapter } from './app/utils/ngb-iso-date-adapter'
2020-10-27 01:10:18 +01:00
2025-01-01 22:26:53 -08:00
import localeAf from '@angular/common/locales/af'
import localeAr from '@angular/common/locales/ar'
import localeBe from '@angular/common/locales/be'
import localeBg from '@angular/common/locales/bg'
import localeCa from '@angular/common/locales/ca'
import localeCs from '@angular/common/locales/cs'
import localeDa from '@angular/common/locales/da'
import localeDe from '@angular/common/locales/de'
import localeEl from '@angular/common/locales/el'
import localeEnGb from '@angular/common/locales/en-GB'
import localeEs from '@angular/common/locales/es'
2025-06-14 19:14:51 -07:00
import localeFa from '@angular/common/locales/fa'
2025-01-01 22:26:53 -08:00
import localeFi from '@angular/common/locales/fi'
import localeFr from '@angular/common/locales/fr'
import localeHu from '@angular/common/locales/hu'
2025-12-23 21:26:53 -08:00
import localeId from '@angular/common/locales/id'
2025-01-01 22:26:53 -08:00
import localeIt from '@angular/common/locales/it'
import localeJa from '@angular/common/locales/ja'
import localeKo from '@angular/common/locales/ko'
import localeLb from '@angular/common/locales/lb'
import localeNl from '@angular/common/locales/nl'
import localeNo from '@angular/common/locales/no'
import localePl from '@angular/common/locales/pl'
import localePt from '@angular/common/locales/pt'
import localeRo from '@angular/common/locales/ro'
import localeRu from '@angular/common/locales/ru'
import localeSk from '@angular/common/locales/sk'
import localeSl from '@angular/common/locales/sl'
import localeSr from '@angular/common/locales/sr'
import localeSv from '@angular/common/locales/sv'
import localeTr from '@angular/common/locales/tr'
import localeUk from '@angular/common/locales/uk'
import localeVi from '@angular/common/locales/vi'
2025-01-01 22:26:53 -08:00
import localeZh from '@angular/common/locales/zh'
import localeZhHant from '@angular/common/locales/zh-Hant'
import { provideUiTour } from 'ngx-ui-tour-ng-bootstrap'
import { CorrespondentNamePipe } from './app/pipes/correspondent-name.pipe'
import { DocumentTypeNamePipe } from './app/pipes/document-type-name.pipe'
import { StoragePathNamePipe } from './app/pipes/storage-path-name.pipe'
2025-01-01 22:26:53 -08:00
registerLocaleData(localeAf)
registerLocaleData(localeAr)
registerLocaleData(localeBe)
registerLocaleData(localeBg)
registerLocaleData(localeCa)
registerLocaleData(localeCs)
registerLocaleData(localeDa)
registerLocaleData(localeDe)
registerLocaleData(localeEl)
registerLocaleData(localeEnGb)
registerLocaleData(localeEs)
2025-06-14 19:14:51 -07:00
registerLocaleData(localeFa)
2025-01-01 22:26:53 -08:00
registerLocaleData(localeFi)
registerLocaleData(localeFr)
registerLocaleData(localeHu)
2025-12-23 21:26:53 -08:00
registerLocaleData(localeId)
2025-01-01 22:26:53 -08:00
registerLocaleData(localeIt)
registerLocaleData(localeJa)
registerLocaleData(localeKo)
registerLocaleData(localeLb)
registerLocaleData(localeNl)
registerLocaleData(localeNo)
registerLocaleData(localePl)
registerLocaleData(localePt, 'pt-BR')
registerLocaleData(localePt, 'pt-PT')
registerLocaleData(localeRo)
registerLocaleData(localeRu)
registerLocaleData(localeSk)
registerLocaleData(localeSl)
registerLocaleData(localeSr)
registerLocaleData(localeSv)
registerLocaleData(localeTr)
registerLocaleData(localeVi)
2025-01-01 22:26:53 -08:00
registerLocaleData(localeUk)
registerLocaleData(localeZh)
registerLocaleData(localeZhHant)
2025-01-01 22:26:53 -08:00
function initializeApp() {
const settings = inject(SettingsService)
return settings.initializeSettings()
2025-01-01 22:26:53 -08:00
}
2025-01-01 22:26:53 -08:00
const icons = {
airplane,
archive,
arrowClockwise,
arrowCounterclockwise,
arrowDown,
2025-01-09 22:05:02 -08:00
arrowDownUp,
2025-01-01 22:26:53 -08:00
arrowLeft,
arrowRepeat,
arrowRight,
arrowRightShort,
arrowUpRight,
asterisk,
bell,
2025-01-01 22:26:53 -08:00
braces,
bodyText,
boxArrowUp,
boxArrowUpRight,
boxes,
calendar,
calendarEvent,
calendarEventFill,
cardChecklist,
cardHeading,
caretDown,
caretUp,
chatLeftText,
2026-01-13 08:24:42 -08:00
chatSquareDots,
2025-01-01 22:26:53 -08:00
check,
check2All,
checkAll,
2025-09-22 11:17:42 -07:00
checkCircle,
2025-01-01 22:26:53 -08:00
checkCircleFill,
checkLg,
chevronDoubleLeft,
chevronDoubleRight,
2025-09-17 14:41:39 -07:00
chevronRight,
2026-02-26 08:46:54 -08:00
circle,
2025-01-01 22:26:53 -08:00
clipboard,
clipboardCheck,
clipboardCheckFill,
clipboardFill,
2025-09-22 11:17:42 -07:00
clockHistory,
2025-01-01 22:26:53 -08:00
dash,
dashCircle,
diagram3,
dice5,
doorOpen,
download,
envelope,
envelopeAt,
envelopeAtFill,
exclamationCircleFill,
exclamationTriangle,
exclamationTriangleFill,
eye,
fileEarmark,
fileEarmarkCheck,
2026-02-26 08:46:54 -08:00
fileEarmarkDiff,
2025-01-01 22:26:53 -08:00
fileEarmarkFill,
fileEarmarkLock,
fileEarmarkMinus,
2026-02-26 08:46:54 -08:00
fileEarmarkPlus,
2025-01-01 22:26:53 -08:00
fileEarmarkRichtext,
files,
fileText,
filter,
folder,
folderFill,
funnel,
gear,
google,
grid,
gripVertical,
hash,
hddStack,
house,
infoCircle,
journals,
link,
2025-09-17 14:41:39 -07:00
listNested,
2025-01-01 22:26:53 -08:00
listTask,
listUl,
microsoft,
nodePlus,
pencil,
people,
peopleFill,
person,
personCircle,
personFill,
personFillLock,
personLock,
personSquare,
playFill,
2025-01-01 22:26:53 -08:00
plus,
plusCircle,
2025-09-11 19:59:11 +02:00
printer,
2025-01-01 22:26:53 -08:00
questionCircle,
scissors,
search,
2025-02-21 08:44:03 -08:00
send,
2025-01-01 22:26:53 -08:00
slashCircle,
sliders2Vertical,
sortAlphaDown,
sortAlphaUpAlt,
stack,
2026-01-13 08:24:42 -08:00
stars,
2025-01-01 22:26:53 -08:00
tagFill,
tag,
tags,
textIndentLeft,
textLeft,
threeDots,
threeDotsVertical,
trash,
uiRadios,
2026-01-08 13:36:11 -08:00
unlock,
2025-01-01 22:26:53 -08:00
upcScan,
windowStack,
x,
xCircle,
xLg,
}
bootstrapApplication(AppComponent, {
providers: [
2026-01-09 20:08:50 -08:00
provideZoneChangeDetection(),
2025-01-01 22:26:53 -08:00
importProvidersFrom(
BrowserModule,
AppRoutingModule,
NgbModule,
FormsModule,
ReactiveFormsModule,
NgSelectModule,
ColorSliderModule,
DragDropModule,
NgxBootstrapIconsModule.pick(icons)
),
provideAppInitializer(initializeApp),
2025-01-01 22:26:53 -08:00
DatePipe,
CookieService,
FilterPipe,
DocumentTitlePipe,
{ provide: NgbDateAdapter, useClass: ISODateAdapter },
{ provide: NgbDateParserFormatter, useClass: LocalizedDateParserFormatter },
PermissionsGuard,
DirtyDocGuard,
DirtySavedViewGuard,
UsernamePipe,
CorrespondentNamePipe,
DocumentTypeNamePipe,
StoragePathNamePipe,
2026-01-28 16:18:48 +01:00
provideHttpClient(
withInterceptorsFromDi(),
2026-03-21 02:12:19 -07:00
withInterceptors([
withCsrfInterceptor,
withApiVersionInterceptor,
withAuthExpiryInterceptor,
]),
2026-01-28 16:18:48 +01:00
withFetch()
),
provideUiTour({
enableBackdrop: true,
backdropConfig: {
offset: 10,
},
prevBtnTitle: $localize`Prev`,
nextBtnTitle: $localize`Next`,
endBtnTitle: $localize`End`,
isOptional: true,
useLegacyTitle: true,
}),
2025-01-01 22:26:53 -08:00
],
}).catch((err) => console.error(err))