{"version":3,"file":"793.f218d067e1f33c24.js","mappings":"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","names":["RelationKind","Prequel","Sequel","SpinOff","Adaptation","SideStory","Character","Contains","Other","AlternativeSetting","AlternativeVersion","Doujinshi","Parent","Edition","RelationKinds","text","value","TypeaheadSettings","constructor","this","debounce","multiple","id","showLocked","minCharacters","unique","addIfNonExisting","firstValueFrom","source","config","hasConfig","Promise","resolve","reject","subscriber","SafeSubscriber","next","unsubscribe","error","complete","defaultValue","EmptyError","subscribe","i0","t_r1","item_r13","name","ctx_r9","libraryNames","libraryId","item_r15","ctx_r11","opt_r17","$event","relation_r5","_r19","$implicit","ctx_r18","updateSeries","EditSeriesRelationComponent_ng_container_0_div_8_ng_template_3_Template","EditSeriesRelationComponent_ng_container_0_div_8_ng_template_5_Template","EditSeriesRelationComponent_ng_container_0_div_8_option_11_Template","idx_r6","index","ctx_r20","removeRelation","typeaheadSettings","ctx_r3","focusTypeahead","formControl","relationOptions","EditSeriesRelationComponent_ng_container_0_div_6_Template","EditSeriesRelationComponent_ng_container_0_div_8_Template","_r23","ctx_r22","addNewRelation","ctx_r0","relations","length","EditSeriesRelationComponent","seriesService","utilityService","imageService","libraryService","searchService","cdRef","save","EventEmitter","saveApi","ReplaySubject","destroyRef","inject","DestroyRef","ngOnInit","_this","getRelatedForSeries","series","_ref","_asyncToGenerator","setupRelationRows","prequels","sequels","sideStories","spinOffs","adaptations","others","characters","alternativeSettings","alternativeVersions","doujinshis","contains","parent","editions","detectChanges","_x","apply","arguments","getLibraryNames","names","markForCheck","pipe","takeUntilDestroyed","saveState","kind","_this2","map","_ref2","item","indx","settings","createSeriesTypeahead","form","FormControl","disable","_x2","_x3","forEach","_ref3","p","push","_x4","_this3","undefined","setTimeout","emit","splice","event","relation","seriesId","relationship","seriesSettings","fetchFn","searchFilter","search","group","items","compareFn","filter","s","options","m","selectionCompareFn","a","b","results","savedData","of","parseInt","updateRelationships","t","i1","i2","i3","i4","i5","core","Xpm","selectors","inputs","outputs","standalone","features","decls","vars","consts","template","rf","ctx","EditSeriesRelationComponent_ng_container_0_Template","TypeaheadComponent","CommonModule","i6","ReactiveFormsModule","i7","TranslocoModule","i8","RelationshipPipe","changeDetection","EditSeriesModalComponent_ng_container_0_div_1_ng_template_12_ng_container_6_div_1_Template","errors_r16","required","EditSeriesModalComponent_ng_container_0_div_1_ng_template_12_ng_container_14_div_1_Template","errors_r19","ctx_r15","metadata","summaryLocked","_r3","_c0","EditSeriesModalComponent_ng_container_0_div_1_ng_template_12_ng_container_6_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_12_ng_container_14_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_12_div_22_Template","tmp_1_0","ctx_r6","editSeriesForm","get","invalid","touched","tmp_2_0","errors","sortNameLocked","tmp_5_0","_c1","tmp_8_0","localizedNameLocked","_c2","title","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_ng_container_17_p_1_Template","errors_r48","pattern","item_r60","isoCode","opt_r62","opt_r63","_r65","ctx_r64","updateCollections","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_ng_template_6_Template","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_ng_template_8_Template","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_ng_container_17_Template","ctx_r66","updateGenres","ctx_r67","genresLocked","ctx_r68","ctx_r69","ctx_r70","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_ng_template_24_Template","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_ng_template_26_Template","ctx_r71","updateTags","ctx_r72","tagsLocked","ctx_r73","ctx_r74","ctx_r75","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_ng_template_34_Template","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_ng_template_36_Template","ctx_r76","updateLanguage","ctx_r77","languageLocked","ctx_r78","ctx_r79","ctx_r80","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_ng_template_44_Template","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_ng_template_46_Template","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_option_55_Template","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_option_63_Template","ctx_r24","collectionTagSettings","releaseYearLocked","_c3","tmp_7_0","genreSettings","tagsSettings","languageSettings","ageRatingLocked","_c4","ageRatings","publicationStatusLocked","_c5","publicationStatuses","EditSeriesModalComponent_ng_container_0_div_1_li_13_ng_template_3_Template","ctx_r7","tabs","TabID","Metadata","_r164","ctx_r163","updatePerson","PersonRole","Writer","ctx_r165","writersLocked","ctx_r166","ctx_r167","ctx_r168","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_5_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_7_Template","ctx_r169","CoverArtist","ctx_r170","coverArtistsLocked","ctx_r171","ctx_r172","ctx_r173","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_14_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_16_Template","ctx_r174","Publisher","ctx_r175","publishersLocked","ctx_r176","ctx_r177","ctx_r178","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_23_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_25_Template","ctx_r179","Penciller","ctx_r180","pencillersLocked","ctx_r181","ctx_r182","ctx_r183","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_32_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_34_Template","ctx_r184","Letterer","ctx_r185","letterersLocked","ctx_r186","ctx_r187","ctx_r188","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_41_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_43_Template","ctx_r189","Inker","ctx_r190","inkersLocked","ctx_r191","ctx_r192","ctx_r193","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_50_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_52_Template","ctx_r194","Editor","ctx_r195","editorsLocked","ctx_r196","ctx_r197","ctx_r198","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_59_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_61_Template","ctx_r199","Colorist","ctx_r200","coloristsLocked","ctx_r201","ctx_r202","ctx_r203","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_68_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_70_Template","ctx_r204","ctx_r205","charactersLocked","ctx_r206","ctx_r207","ctx_r208","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_77_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_79_Template","ctx_r209","Translator","ctx_r210","translatorsLocked","ctx_r211","ctx_r212","ctx_r213","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_86_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_ng_template_88_Template","ctx_r8","getPersonsSettings","_r220","ctx_r219","addWebLink","i_r218","ctx_r221","removeWebLink","EditSeriesModalComponent_ng_container_0_div_1_li_18_ng_template_3_div_2_Template","ctx_r215","WebLinks","EditSeriesModalComponent_ng_container_0_div_1_li_18_ng_template_3_Template","_r226","ctx_r225","imageUrls","ctx_r227","updateSelectedIndex","ctx_r228","updateSelectedImage","ctx_r229","handleReset","ctx_r10","coverImageLocked","saveNestedComponents","ctx_r231","libraryName","ctx_r232","maxCount","totalCount","publicationStatus","pages","size","file_r242","filePath","chapter","ctx_r241","mangaFormatToText","format","_r245","_r240","toggle","volume_r239","ctx_r246","volumeCollapsed","EditSeriesModalComponent_ng_container_0_div_1_ng_template_30_ul_33_li_1_li_24_Template","ctx_r238","getVolumeCoverImage","createdUtc","_c6","lastModifiedUtc","volumeFiles","sort","EditSeriesModalComponent_ng_container_0_div_1_ng_template_30_ul_33_li_1_Template","ctx_r234","seriesVolumes","EditSeriesModalComponent_ng_container_0_div_1_ng_template_30_div_3_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_30_div_29_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_30_div_32_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_30_ul_33_Template","ctx_r12","created","latestReadDate","lastChapterAdded","lastFolderScanned","folderPath","isLoadingVolumes","_r250","ctx_r249","close","ctx_r251","active","EditSeriesModalComponent_ng_container_0_div_1_ng_template_12_Template","EditSeriesModalComponent_ng_container_0_div_1_li_13_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_17_Template","EditSeriesModalComponent_ng_container_0_div_1_li_18_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_22_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_26_Template","EditSeriesModalComponent_ng_container_0_div_1_ng_template_30_Template","ctx_r252","ctx_r253","_c7","ctx_r2","getActiveBreakpoint","Breakpoint","Mobile","General","People","CoverImage","Related","Info","_r5","valid","restoredCtx","_r258","item_r255","field_r256","field","ctx_r257","unlock","EditSeriesModalComponent_ng_container_0_div_1_Template","EditSeriesModalComponent_ng_container_0_ng_template_2_Template","EditSeriesModalComponent","webLinks","split","role","peopleSettings","modal","fb","collectionService","uploadService","metadataService","collectionTags","tags","genres","validLanguages","selectedCover","coverImageReset","getSeriesCoverImage","initSeries","Object","assign","summary","Validators","localizedName","sortName","rating","userRating","coverImageIndex","ageRating","language","releaseYear","minLength","maxLength","getAllAgeRatings","ratings","getAllPublicationStatus","statuses","getAllValidLanguages","getMetadata","setupTypeaheads","patchValue","link","addControl","valueChanges","val","nameLocked","getVolumes","volumes","chapters","c","getChapterCoverImage","v","vol","sortChapters","files","f","number","flat","reduce","sum1","volume","sum2","sum3","file","bytes","forkJoin","setupCollectionTagsSettings","setupTagSettings","setupGenreTypeahead","setupPersonTypeahead","setupLanguageTypeahead","fetchCollectionTags","addTransformFn","promoted","coverImage","compareFnForAdd","filterMatches","getAllTags","getAllGenres","updateFromPreset","presetField","personSettings","createBlankPersonSettings","fetch","people","persetIds","person","includes","l","find","writers","colorists","coverArtists","editors","inkers","letterers","pencillers","publishers","translators","fetchPeople","getAllPeople","success","coverImageUpdate","formatChapterNumber","model","selectedIndex","keys","controls","key","startsWith","replace","join","apis","updateMetadata","dirty","updateSeriesCoverImage","tokens","tokenToRemove","removeControl","emitEvent","persons","url","i9","EditSeriesModalComponent_ng_container_0_Template","NgbNav","NgbNavContent","NgbNavItem","NgbNavLink","i10","CoverImageChooserComponent","SentenceCasePipe","MangaFormatPipe","DefaultDatePipe","TimeAgoPipe","TagBadgeComponent","PublicationStatusPipe","NgbTooltip","BytesPipe","ImageComponent","NgbCollapse","NgbNavOutlet","DefaultValuePipe","i11","TranslocoDatePipe","styles","transform","replacementString","Infinity","Number","isNaN","_angular_core__WEBPACK_IMPORTED_MODULE_0__","Yjl","pure","PublicationStatus","OnGoing","Hiatus","Completed","Cancelled","Ended","translocoService","translate","TranslocoService","_angular_core__WEBPACK_IMPORTED_MODULE_1__","changeDetectorRef","ngZone","timer","removeTimer","d","Date","seconds","Math","round","abs","getTime","timeToUpdate","getSecondsUntilUpdate","runOutsideAngular","window","run","minutes","hours","days","months","years","ngOnDestroy","clearTimeout","min","hr","day","TagBadgeCursor","Selectable","Clickable","NotAllowed","selectionMode","fillStyle","ngContentSelectors","_r9","toggleLock","_r16","option_r11","ctx_r14","toggleSelection","TypeaheadComponent_ng_container_0_app_tag_badge_5_i_2_Template","badgeTemplate","i_r12","disabled","ctx_r4","ctx_r5","clearSelections","stopPropagation","TypeaheadComponent_ng_container_0_ng_container_8_button_1_Template","selected_r20","_r31","ctx_r30","focusedIndex","updateHighlight","ctx_r32","addNewItem","typeaheadControl","ctx_r27","option_r34","_r37","ctx_r36","handleOptionClick","index_r35","ctx_r38","showAddItem","ctx_r28","optionTemplate","ctx_r29","TypeaheadComponent_ng_container_0_ng_container_10_div_1_li_3_Template","TypeaheadComponent_ng_container_0_ng_container_10_div_1_li_4_Template","TypeaheadComponent_ng_container_0_ng_container_10_div_1_li_5_Template","ctx_r25","hasFocus","options_r24","trackByIdentityFn","TypeaheadComponent_ng_container_0_ng_container_10_div_1_Template","TypeaheadComponent_ng_container_0_ng_container_3_Template","_r42","ctx_r41","onInputFocus","TypeaheadComponent_ng_container_0_app_tag_badge_5_Template","TypeaheadComponent_ng_container_0_input_6_Template","TypeaheadComponent_ng_container_0_div_7_Template","TypeaheadComponent_ng_container_0_ng_container_8_Template","TypeaheadComponent_ng_container_0_ng_container_10_Template","typeaheadForm","locked","optionSelection","selected","isLoadingOptions","selectedData","filteredOptions","SelectionModel","selectedState","selectedOptions","propAccessor","_propAccessor","_data","data","lookupMethod","shallowEqual","dataItem","isSelected","hasSomeSelected","selectedCount","unselected","peek","renderer2","document","reset","newItemAdded","onUnlock","lockedChange","resetToEmpty","init","focus","console","hasOwnProperty","FormGroup","typeahead","tap","inputElem","nativeElement","setStyle","trim","auditTime","switchMap","filterSelected","updateShowAddItem","shareReplay","handleDocumentClick","target","classList","handleKeyPress","KEY_CODES","DOWN_ARROW","RIGHT_ARROW","querySelectorAll","UP_ARROW","LEFT_ARROW","max","ENTER","take","opts","preventDefault","click","BACKSPACE","DELETE","removeSelectedOption","pop","ESC_KEY","opt","resetField","untoggleAll","newItem","openDropdown","setValue","body","RendererStyleFlags2","Important","removeClass","addClass","inputText","matches","DOCUMENT","_angular_core__WEBPACK_IMPORTED_MODULE_2__","contentQueries","dirIndex","TypeaheadComponent_ng_container_0_Template","TranslocoDirective","animation","trigger","state","style","height","transition","overflow","animate","ANIMATION_SPEED"],"sourceRoot":"webpack:///","sources":["./src/app/_models/series-detail/relation-kind.ts","./src/app/typeahead/_models/typeahead-settings.ts","./node_modules/rxjs/dist/esm/internal/firstValueFrom.js","./src/app/cards/edit-series-relation/edit-series-relation.component.html","./src/app/cards/edit-series-relation/edit-series-relation.component.ts","./src/app/cards/_modals/edit-series-modal/edit-series-modal.component.html","./src/app/cards/_modals/edit-series-modal/edit-series-modal.component.ts","./src/app/pipe/default-value.pipe.ts","./src/app/_models/metadata/publication-status.ts","./src/app/pipe/publication-status.pipe.ts","./src/app/pipe/relationship.pipe.ts","./src/app/pipe/time-ago.pipe.ts","./src/app/shared/tag-badge/tag-badge.component.ts","./src/app/shared/tag-badge/tag-badge.component.html","./src/app/typeahead/_components/typeahead.component.html","./src/app/typeahead/_components/typeahead.component.ts"],"sourcesContent":["export enum RelationKind {\n Prequel = 1,\n Sequel = 2,\n SpinOff = 3,\n Adaptation = 4,\n SideStory = 5,\n Character = 6,\n Contains = 7,\n Other = 8,\n AlternativeSetting = 9,\n AlternativeVersion = 10,\n Doujinshi = 11,\n /**\n * This is UI only. Backend will generate Parent series for everything but Prequel/Sequel\n */\n Parent = 12,\n Edition = 13\n}\n\nexport const RelationKinds = [\n {text: 'Prequel', value: RelationKind.Prequel},\n {text: 'Sequel', value: RelationKind.Sequel},\n {text: 'Spin Off', value: RelationKind.SpinOff},\n {text: 'Adaptation', value: RelationKind.Adaptation},\n {text: 'Alternative Setting', value: RelationKind.AlternativeSetting},\n {text: 'Alternative Version', value: RelationKind.AlternativeVersion},\n {text: 'Side Story', value: RelationKind.SideStory},\n {text: 'Character', value: RelationKind.Character},\n {text: 'Contains', value: RelationKind.Contains},\n {text: 'Edition', value: RelationKind.Edition},\n {text: 'Doujinshi', value: RelationKind.Doujinshi},\n {text: 'Other', value: RelationKind.Other},\n];\n","import { Observable } from 'rxjs';\nimport { FormControl } from '@angular/forms';\n\nexport type SelectionCompareFn = (a: T, b: T) => boolean;\n\nexport class TypeaheadSettings {\n /**\n * How many ms between typing actions before pipeline to load data is triggered\n */\n debounce: number = 200;\n /**\n * Multiple options can be selected from dropdown. Will be rendered as tag badges.\n */\n multiple: boolean = false;\n /**\n * Id of the input element, for linking label elements (accessibility)\n */\n id: string = '';\n /**\n * Show a locked icon next to input and provide functionality around locking/unlocking a field\n */\n showLocked: boolean = false;\n /**\n * Data to preload the typeahead with on first load\n */\n /**\n * Data to preload the typeahead with on first load\n */\n savedData!: T[] | T;\n /**\n * Function to compare the elements. Should return all elements that fit the matching criteria. \n * This is only used with non-Observable based fetchFn, but must be defined for all uses of typeahead.\n */\n compareFn!: ((optionList: T[], filter: string) => T[]);\n /**\n * Must be defined when addIfNonExisting is true. Used to ensure no duplicates exist when adding.\n */\n compareFnForAdd!: ((optionList: T[], filter: string) => T[]);\n /**\n * Function which is used for comparing objects when keeping track of state. \n * Useful over shallow equal when you have image urls that have random numbers on them.\n */ \n selectionCompareFn?: SelectionCompareFn;\n /**\n * Function to fetch the data from the server. If data is mainatined in memory, wrap in an observable.\n */\n fetchFn!: (filter: string) => Observable;\n /**\n * Minimum number of characters needed to type to trigger the fetch pipeline\n */\n minCharacters: number = 1;\n /**\n * Optional form Control to tie model to. \n */\n formControl?: FormControl;\n /**\n * If true, typeahead will remove already selected items from fetchFn results. Only appies when multiple=true\n */\n unique: boolean = true;\n /**\n * If true, will fire an event for newItemAdded and will prompt the user to add form model to the list of selected items\n */\n addIfNonExisting: boolean = false;\n /**\n * Required for addIfNonExisting to transform the text from model into the item\n */\n addTransformFn!: (text: string) => T;\n /**\n * An optional, but recommended trackby identity function to help Angular render the list better\n */\n trackByIdentityFn!: (index: number, value: T) => T;\n}","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n const hasConfig = typeof config === 'object';\n return new Promise((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: () => {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n","\n
\n\n

\n {{t('description-part-1')}} {{t('description-part-2')}}\n

\n\n
0\">\n \n \n
\n\n
\n
\n
\n \n \n {{item.name}} ({{libraryNames[item.libraryId]}})\n \n \n {{item.name}} ({{libraryNames[item.libraryId]}})\n \n \n
\n
\n \n
\n \n
\n
\n\n
\n \n
\n
\n\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport { map, Observable, of, firstValueFrom, ReplaySubject } from 'rxjs';\nimport { UtilityService } from 'src/app/shared/_services/utility.service';\nimport { TypeaheadSettings } from 'src/app/typeahead/_models/typeahead-settings';\nimport { SearchResult } from 'src/app/_models/search/search-result';\nimport { Series } from 'src/app/_models/series';\nimport { RelationKind, RelationKinds } from 'src/app/_models/series-detail/relation-kind';\nimport { ImageService } from 'src/app/_services/image.service';\nimport { LibraryService } from 'src/app/_services/library.service';\nimport { SearchService } from 'src/app/_services/search.service';\nimport { SeriesService } from 'src/app/_services/series.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {TypeaheadComponent} from \"../../typeahead/_components/typeahead.component\";\nimport {CommonModule} from \"@angular/common\";\nimport {TranslocoModule} from \"@ngneat/transloco\";\nimport {RelationshipPipe} from \"../../pipe/relationship.pipe\";\n\ninterface RelationControl {\n series: {id: number, name: string} | undefined; // Will add type as well\n typeaheadSettings: TypeaheadSettings;\n formControl: FormControl;\n}\n\n@Component({\n selector: 'app-edit-series-relation',\n standalone: true,\n imports: [\n TypeaheadComponent,\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n RelationshipPipe,\n ],\n templateUrl: './edit-series-relation.component.html',\n styleUrls: ['./edit-series-relation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditSeriesRelationComponent implements OnInit {\n\n @Input({required: true}) series!: Series;\n /**\n * This will tell the component to save based on its internal state\n */\n @Input() save: EventEmitter = new EventEmitter();\n\n @Output() saveApi = new ReplaySubject(1);\n\n relationOptions = RelationKinds;\n relations: Array = [];\n libraryNames: {[key:number]: string} = {};\n\n focusTypeahead = new EventEmitter();\n private readonly destroyRef = inject(DestroyRef);\n\n get RelationKind() {\n return RelationKind;\n }\n\n\n constructor(private seriesService: SeriesService, private utilityService: UtilityService,\n public imageService: ImageService, private libraryService: LibraryService, private searchService: SearchService,\n private readonly cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.seriesService.getRelatedForSeries(this.series.id).subscribe(async relations => {\n this.setupRelationRows(relations.prequels, RelationKind.Prequel);\n this.setupRelationRows(relations.sequels, RelationKind.Sequel);\n this.setupRelationRows(relations.sideStories, RelationKind.SideStory);\n this.setupRelationRows(relations.spinOffs, RelationKind.SpinOff);\n this.setupRelationRows(relations.adaptations, RelationKind.Adaptation);\n this.setupRelationRows(relations.others, RelationKind.Other);\n this.setupRelationRows(relations.characters, RelationKind.Character);\n this.setupRelationRows(relations.alternativeSettings, RelationKind.AlternativeSetting);\n this.setupRelationRows(relations.alternativeVersions, RelationKind.AlternativeVersion);\n this.setupRelationRows(relations.doujinshis, RelationKind.Doujinshi);\n this.setupRelationRows(relations.contains, RelationKind.Contains);\n this.setupRelationRows(relations.parent, RelationKind.Parent);\n this.setupRelationRows(relations.editions, RelationKind.Edition);\n this.cdRef.detectChanges();\n });\n\n this.libraryService.getLibraryNames().subscribe(names => {\n this.libraryNames = names;\n this.cdRef.markForCheck();\n });\n\n this.save.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.saveState());\n }\n\n setupRelationRows(relations: Array, kind: RelationKind) {\n relations.map(async (item, indx) => {\n const settings = await firstValueFrom(this.createSeriesTypeahead(item, kind, indx));\n const form = new FormControl(kind, []);\n if (kind === RelationKind.Parent) {\n form.disable();\n }\n return {series: item, typeaheadSettings: settings, formControl: form};\n }).forEach(async p => {\n this.relations.push(await p);\n this.cdRef.markForCheck();\n });\n }\n\n async addNewRelation() {\n this.relations.push({series: undefined, formControl: new FormControl(RelationKind.Adaptation, []), typeaheadSettings: await firstValueFrom(this.createSeriesTypeahead(undefined, RelationKind.Adaptation, this.relations.length))});\n this.cdRef.markForCheck();\n\n // Focus on the new typeahead\n setTimeout(() => {\n this.focusTypeahead.emit(`relation--${this.relations.length - 1}`);\n }, 10);\n }\n\n removeRelation(index: number) {\n this.relations.splice(index, 1);\n this.cdRef.markForCheck();\n }\n\n\n updateSeries(event: Array, relation: RelationControl) {\n if (event[0] === undefined) {\n relation.series = undefined;\n this.cdRef.markForCheck();\n return;\n }\n relation.series = {id: event[0].seriesId, name: event[0].name};\n this.cdRef.markForCheck();\n }\n\n createSeriesTypeahead(series: Series | undefined, relationship: RelationKind, index: number): Observable> {\n const seriesSettings = new TypeaheadSettings();\n seriesSettings.minCharacters = 0;\n seriesSettings.multiple = false;\n seriesSettings.id = 'relation--' + index;\n seriesSettings.unique = true;\n seriesSettings.addIfNonExisting = false;\n seriesSettings.fetchFn = (searchFilter: string) => this.searchService.search(searchFilter).pipe(\n map(group => group.series),\n map(items => seriesSettings.compareFn(items, searchFilter)),\n map(series => series.filter(s => s.seriesId !== this.series.id)),\n );\n\n seriesSettings.compareFn = (options: SearchResult[], filter: string) => {\n return options.filter(m => this.utilityService.filter(m.name, filter));\n }\n\n seriesSettings.selectionCompareFn = (a: SearchResult, b: SearchResult) => {\n return a.seriesId == b.seriesId;\n }\n\n if (series !== undefined) {\n return this.searchService.search(series.name).pipe(\n map(group => group.series), map(results => {\n seriesSettings.savedData = results.filter(s => s.seriesId === series.id);\n return seriesSettings;\n }));\n }\n\n return of(seriesSettings);\n }\n\n saveState() {\n const adaptations = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.Adaptation && item.series !== undefined).map(item => item.series!.id);\n const characters = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.Character && item.series !== undefined).map(item => item.series!.id);\n const contains = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.Contains && item.series !== undefined).map(item => item.series!.id);\n const others = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.Other && item.series !== undefined).map(item => item.series!.id);\n const prequels = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.Prequel && item.series !== undefined).map(item => item.series!.id);\n const sequels = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.Sequel && item.series !== undefined).map(item => item.series!.id);\n const sideStories = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.SideStory && item.series !== undefined).map(item => item.series!.id);\n const spinOffs = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.SpinOff && item.series !== undefined).map(item => item.series!.id);\n const alternativeSettings = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.AlternativeSetting && item.series !== undefined).map(item => item.series!.id);\n const alternativeVersions = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.AlternativeVersion && item.series !== undefined).map(item => item.series!.id);\n const doujinshis = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.Doujinshi && item.series !== undefined).map(item => item.series!.id);\n const editions = this.relations.filter(item => (parseInt(item.formControl.value, 10) as RelationKind) === RelationKind.Edition && item.series !== undefined).map(item => item.series!.id);\n\n // NOTE: We can actually emit this onto an observable and in main parent, use mergeMap into the forkJoin\n this.seriesService.updateRelationships(this.series.id, adaptations, characters, contains, others, prequels, sequels, sideStories, spinOffs, alternativeSettings, alternativeVersions, doujinshis, editions).subscribe(() => {});\n\n }\n\n}\n","\n
\n
\n

\n {{t('title', {seriesName: this.series.name})}}

\n \n
\n
\n
\n
    \n\n
  • \n {{t(tabs[TabID.General])}}\n \n
    \n
    \n \n
    \n \n \n
    \n {{t('required-field')}}\n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n \n
    \n \n \n \n
    \n {{t('required-field')}}\n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n\n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n\n
    \n
  • \n\n
  • \n {{t(tabs[TabID.Metadata])}}\n \n\n
    \n
    \n
    \n \n \n \n {{item.title}}\n \n \n {{item.title}}\n \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n \n

    \n This must be a valid year greater than 1000 and 4 characters long\n

    \n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n \n {{item.title}}\n \n \n {{item.title}}\n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n \n {{item.title}}\n \n \n {{item.title}}\n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n \n {{item.title}}\n \n \n {{item.title}} ({{item.isoCode}})\n \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
  • \n\n
  • \n {{t(tabs[TabID.People])}}\n \n
    \n
    \n \n \n \n {{item.name}}\n \n \n {{item.name}}\n \n \n
    \n
    \n
    \n
    \n \n \n \n {{item.name}}\n \n \n {{item.name}}\n \n \n
    \n
    \n\n\n
    \n
    \n \n \n \n {{item.name}}\n \n \n {{item.name}}\n \n \n
    \n
    \n
    \n
    \n \n \n \n {{item.name}}\n \n \n {{item.name}}\n \n \n
    \n
    \n\n\n
    \n
    \n \n \n \n {{item.name}}\n \n \n {{item.name}}\n \n \n
    \n
    \n
    \n
    \n \n \n \n {{item.name}}\n \n \n {{item.name}}\n \n \n
    \n
    \n\n\n\n
    \n
    \n \n \n \n {{item.name}}\n \n \n {{item.name}}\n \n \n
    \n
    \n
    \n
    \n \n \n \n {{item.name}}\n \n \n {{item.name}}\n \n \n
    \n
    \n\n\n\n
    \n
    \n \n \n \n {{item.name}}\n \n \n {{item.name}}\n \n \n
    \n
    \n
    \n
    \n \n \n \n {{item.name}}\n \n \n {{item.name}}\n \n \n
    \n
    \n\n
    \n
  • \n\n
  • \n {{t(tabs[TabID.WebLinks])}}\n \n

    {{t('web-link-description')}}

    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
  • \n\n
  • \n {{t(tabs[TabID.CoverImage])}}\n \n

    \n {{t('cover-image-description')}}\n

    \n \n
    \n
  • \n
  • \n {{t(tabs[TabID.Related])}}\n \n \n \n
  • \n
  • \n {{t(tabs[TabID.Info])}}\n \n

    {{t('info-title')}}

    \n
    \n
    {{t('library-title')}} {{libraryName | sentenceCase}}
    \n
    {{t('format-title')}} {{series.format | mangaFormat}}
    \n
    \n
    \n
    {{t('created-title')}} {{series.created | date:'shortDate'}}
    \n
    {{t('last-read-title')}} {{series.latestReadDate | defaultDate | timeAgo}}
    \n
    {{t('last-added-title')}} {{series.lastChapterAdded | defaultDate | timeAgo}}
    \n
    {{t('last-scanned-title')}} {{series.lastFolderScanned | defaultDate | timeAgo}}
    \n
    \n\n
    \n
    {{t('folder-path-title')}} {{series.folderPath | defaultValue}}
    \n
    \n
    \n
    \n {{t('max-items-title')}} {{metadata.maxCount}}\n \n
    \n
    \n {{t('total-items-title')}} {{metadata.totalCount}}\n \n
    \n
    {{t('publication-status-title')}} {{metadata.publicationStatus | publicationStatus}}
    \n
    {{t('total-pages-title')}} {{series.pages}}
    \n
    {{t('size-title')}} {{size | bytes}}
    \n
    \n

    Volumes

    \n
    \n {{t('loading')}}\n
    \n
      \n
    • \n \n
      \n
      {{t('volume-num')}} {{volume.name}}
      \n
      \n
      \n
      \n {{t('added-title')}} {{volume.createdUtc | translocoDate: {dateStyle: 'short' } | defaultDate}}\n
      \n
      \n {{t('last-modified-title')}} {{volume.lastModifiedUtc | translocoDate: {dateStyle: 'short' } | defaultDate}}\n
      \n
      \n
      \n
      \n \n
      \n
      \n {{t('pages-title')}} {{volume.pages}}\n
      \n
      \n\n
      \n
        \n
      • \n {{file.filePath}}\n
        \n
        \n {{t('chapter-title')}} {{file.chapter}}\n
        \n
        \n {{t('pages-title')}} {{file.pages}}\n
        \n
        \n {{t('format-title')}} {{utilityService.mangaFormatToText(file.format)}}\n
        \n
        \n
      • \n
      \n
      \n
      \n
      \n
    • \n
    \n
    \n
  • \n
\n
\n\n
\n
\n
\n \n \n
\n
\n\n\n \n \n \n {{t('field-locked-alt')}}\n \n \n\n\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit\n} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {\n NgbActiveModal, NgbCollapse,\n NgbNav,\n NgbNavContent,\n NgbNavItem,\n NgbNavLink,\n NgbNavOutlet,\n NgbTooltip\n} from '@ng-bootstrap/ng-bootstrap';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Breakpoint, UtilityService } from 'src/app/shared/_services/utility.service';\nimport { TypeaheadSettings } from 'src/app/typeahead/_models/typeahead-settings';\nimport { Chapter } from 'src/app/_models/chapter';\nimport { CollectionTag } from 'src/app/_models/collection-tag';\nimport { Genre } from 'src/app/_models/metadata/genre';\nimport { AgeRatingDto } from 'src/app/_models/metadata/age-rating-dto';\nimport { Language } from 'src/app/_models/metadata/language';\nimport { PublicationStatusDto } from 'src/app/_models/metadata/publication-status-dto';\nimport { Person, PersonRole } from 'src/app/_models/metadata/person';\nimport { Series } from 'src/app/_models/series';\nimport { SeriesMetadata } from 'src/app/_models/metadata/series-metadata';\nimport { Tag } from 'src/app/_models/tag';\nimport { CollectionTagService } from 'src/app/_services/collection-tag.service';\nimport { ImageService } from 'src/app/_services/image.service';\nimport { LibraryService } from 'src/app/_services/library.service';\nimport { MetadataService } from 'src/app/_services/metadata.service';\nimport { SeriesService } from 'src/app/_services/series.service';\nimport { UploadService } from 'src/app/_services/upload.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {CommonModule} from \"@angular/common\";\nimport {TypeaheadComponent} from \"../../../typeahead/_components/typeahead.component\";\nimport {CoverImageChooserComponent} from \"../../cover-image-chooser/cover-image-chooser.component\";\nimport {EditSeriesRelationComponent} from \"../../edit-series-relation/edit-series-relation.component\";\nimport {SentenceCasePipe} from \"../../../pipe/sentence-case.pipe\";\nimport {MangaFormatPipe} from \"../../../pipe/manga-format.pipe\";\nimport {DefaultDatePipe} from \"../../../pipe/default-date.pipe\";\nimport {TimeAgoPipe} from \"../../../pipe/time-ago.pipe\";\nimport {TagBadgeComponent} from \"../../../shared/tag-badge/tag-badge.component\";\nimport {PublicationStatusPipe} from \"../../../pipe/publication-status.pipe\";\nimport {BytesPipe} from \"../../../pipe/bytes.pipe\";\nimport {ImageComponent} from \"../../../shared/image/image.component\";\nimport {DefaultValuePipe} from \"../../../pipe/default-value.pipe\";\nimport {TranslocoModule} from \"@ngneat/transloco\";\nimport {TranslocoDatePipe} from \"@ngneat/transloco-locale\";\nimport {Volume} from \"../../../_models/volume\";\n\nenum TabID {\n General = 0,\n Metadata = 1,\n People = 2,\n WebLinks = 3,\n CoverImage = 4,\n Related = 5,\n Info = 6,\n}\n\n@Component({\n selector: 'app-edit-series-modal',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n NgbNav,\n NgbNavContent,\n NgbNavItem,\n NgbNavLink,\n CommonModule,\n TypeaheadComponent,\n CoverImageChooserComponent,\n EditSeriesRelationComponent,\n SentenceCasePipe,\n MangaFormatPipe,\n DefaultDatePipe,\n TimeAgoPipe,\n TagBadgeComponent,\n PublicationStatusPipe,\n NgbTooltip,\n BytesPipe,\n ImageComponent,\n NgbCollapse,\n NgbNavOutlet,\n DefaultValuePipe,\n TranslocoModule,\n TranslocoDatePipe,\n\n ],\n templateUrl: './edit-series-modal.component.html',\n styleUrls: ['./edit-series-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditSeriesModalComponent implements OnInit {\n\n @Input({required: true}) series!: Series;\n seriesVolumes: any[] = [];\n isLoadingVolumes = false;\n /**\n * A copy of the series from init. This is used to compare values for name fields to see if lock was modified\n */\n initSeries!: Series;\n\n volumeCollapsed: any = {};\n tabs = ['general-tab', 'metadata-tab', 'people-tab', 'web-links-tab', 'cover-image-tab', 'related-tab', 'info-tab'];\n active = this.tabs[0];\n editSeriesForm!: FormGroup;\n libraryName: string | undefined = undefined;\n size: number = 0;\n private readonly destroyRef = inject(DestroyRef);\n\n // Typeaheads\n tagsSettings: TypeaheadSettings = new TypeaheadSettings();\n languageSettings: TypeaheadSettings = new TypeaheadSettings();\n peopleSettings: {[PersonRole: string]: TypeaheadSettings} = {};\n collectionTagSettings: TypeaheadSettings = new TypeaheadSettings();\n genreSettings: TypeaheadSettings = new TypeaheadSettings();\n\n collectionTags: CollectionTag[] = [];\n tags: Tag[] = [];\n genres: Genre[] = [];\n ageRatings: Array = [];\n publicationStatuses: Array = [];\n validLanguages: Array = [];\n\n metadata!: SeriesMetadata;\n imageUrls: Array = [];\n /**\n * Selected Cover for uploading\n */\n selectedCover: string = '';\n coverImageReset = false;\n\n saveNestedComponents: EventEmitter = new EventEmitter();\n\n get Breakpoint(): typeof Breakpoint {\n return Breakpoint;\n }\n\n get PersonRole() {\n return PersonRole;\n }\n\n get TabID(): typeof TabID {\n return TabID;\n }\n\n get WebLinks() {\n return this.metadata?.webLinks.split(',') || [''];\n }\n\n getPersonsSettings(role: PersonRole) {\n return this.peopleSettings[role];\n }\n\n constructor(public modal: NgbActiveModal,\n private seriesService: SeriesService,\n public utilityService: UtilityService,\n private fb: FormBuilder,\n public imageService: ImageService,\n private libraryService: LibraryService,\n private collectionService: CollectionTagService,\n private uploadService: UploadService,\n private metadataService: MetadataService,\n private readonly cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.imageUrls.push(this.imageService.getSeriesCoverImage(this.series.id));\n\n this.libraryService.getLibraryNames().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(names => {\n this.libraryName = names[this.series.libraryId];\n });\n\n this.initSeries = Object.assign({}, this.series);\n\n this.editSeriesForm = this.fb.group({\n id: new FormControl(this.series.id, []),\n summary: new FormControl('', []),\n name: new FormControl(this.series.name, [Validators.required]),\n localizedName: new FormControl(this.series.localizedName, []),\n sortName: new FormControl(this.series.sortName, [Validators.required]),\n rating: new FormControl(this.series.userRating, []),\n\n coverImageIndex: new FormControl(0, []),\n coverImageLocked: new FormControl(this.series.coverImageLocked, []),\n\n ageRating: new FormControl('', []),\n publicationStatus: new FormControl('', []),\n language: new FormControl('', []),\n releaseYear: new FormControl('', [Validators.minLength(4), Validators.maxLength(4), Validators.pattern(/([1-9]\\d{3})|[0]{1}/)]),\n });\n this.cdRef.markForCheck();\n\n\n this.metadataService.getAllAgeRatings().subscribe(ratings => {\n this.ageRatings = ratings;\n this.cdRef.markForCheck();\n });\n\n this.metadataService.getAllPublicationStatus().subscribe(statuses => {\n this.publicationStatuses = statuses;\n this.cdRef.markForCheck();\n });\n\n this.metadataService.getAllValidLanguages().subscribe(validLanguages => {\n this.validLanguages = validLanguages;\n this.cdRef.markForCheck();\n });\n\n this.seriesService.getMetadata(this.series.id).subscribe(metadata => {\n if (metadata) {\n this.metadata = metadata;\n\n this.setupTypeaheads();\n this.editSeriesForm.get('summary')?.patchValue(this.metadata.summary);\n this.editSeriesForm.get('ageRating')?.patchValue(this.metadata.ageRating);\n this.editSeriesForm.get('publicationStatus')?.patchValue(this.metadata.publicationStatus);\n this.editSeriesForm.get('language')?.patchValue(this.metadata.language);\n this.editSeriesForm.get('releaseYear')?.patchValue(this.metadata.releaseYear);\n\n this.WebLinks.forEach((link, index) => {\n this.editSeriesForm.addControl('link' + index, new FormControl(link, []));\n });\n\n this.cdRef.markForCheck();\n\n this.editSeriesForm.get('name')?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(val => {\n this.series.nameLocked = true;\n this.cdRef.markForCheck();\n });\n\n this.editSeriesForm.get('sortName')?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(val => {\n this.series.sortNameLocked = true;\n this.cdRef.markForCheck();\n });\n\n this.editSeriesForm.get('localizedName')?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(val => {\n this.series.localizedNameLocked = true;\n this.cdRef.markForCheck();\n });\n\n this.editSeriesForm.get('summary')?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(val => {\n this.metadata.summaryLocked = true;\n this.metadata.summary = val;\n this.cdRef.markForCheck();\n });\n\n\n this.editSeriesForm.get('ageRating')?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(val => {\n this.metadata.ageRating = parseInt(val + '', 10);\n this.metadata.ageRatingLocked = true;\n this.cdRef.markForCheck();\n });\n\n this.editSeriesForm.get('publicationStatus')?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(val => {\n this.metadata.publicationStatus = parseInt(val + '', 10);\n this.metadata.publicationStatusLocked = true;\n this.cdRef.markForCheck();\n });\n\n this.editSeriesForm.get('releaseYear')?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(val => {\n this.metadata.releaseYear = parseInt(val + '', 10);\n this.metadata.releaseYearLocked = true;\n this.cdRef.markForCheck();\n });\n }\n });\n\n this.isLoadingVolumes = true;\n this.cdRef.markForCheck();\n this.seriesService.getVolumes(this.series.id).subscribe(volumes => {\n this.seriesVolumes = volumes;\n this.isLoadingVolumes = false;\n\n if (this.seriesVolumes.length === 1) {\n this.imageUrls.push(...this.seriesVolumes[0].chapters.map((c: Chapter) => this.imageService.getChapterCoverImage(c.id)));\n } else {\n this.imageUrls.push(...this.seriesVolumes.map(v => this.imageService.getVolumeCoverImage(v.id)));\n }\n\n volumes.forEach(v => {\n this.volumeCollapsed[v.name] = true;\n });\n this.seriesVolumes.forEach(vol => {\n vol.volumeFiles = vol.chapters?.sort(this.utilityService.sortChapters).map((c: Chapter) => c.files.map((f: any) => {\n f.chapter = c.number;\n return f;\n })).flat();\n });\n\n if (volumes.length > 0) {\n this.size = volumes.reduce((sum1, volume) => {\n return sum1 + volume.chapters.reduce((sum2, chapter) => {\n return sum2 + chapter.files.reduce((sum3, file) => {\n return sum3 + file.bytes;\n }, 0);\n }, 0);\n }, 0);\n }\n this.cdRef.markForCheck();\n });\n }\n\n\n setupTypeaheads() {\n forkJoin([\n this.setupCollectionTagsSettings(),\n this.setupTagSettings(),\n this.setupGenreTypeahead(),\n this.setupPersonTypeahead(),\n this.setupLanguageTypeahead()\n ]).subscribe(results => {\n this.collectionTags = this.metadata.collectionTags;\n this.cdRef.markForCheck();\n });\n }\n\n setupCollectionTagsSettings() {\n this.collectionTagSettings.minCharacters = 0;\n this.collectionTagSettings.multiple = true;\n this.collectionTagSettings.id = 'collections';\n this.collectionTagSettings.unique = true;\n this.collectionTagSettings.addIfNonExisting = true;\n this.collectionTagSettings.fetchFn = (filter: string) => this.fetchCollectionTags(filter).pipe(map(items => this.collectionTagSettings.compareFn(items, filter)));\n this.collectionTagSettings.addTransformFn = ((title: string) => {\n return {id: 0, title: title, promoted: false, coverImage: '', summary: '', coverImageLocked: false };\n });\n this.collectionTagSettings.compareFn = (options: CollectionTag[], filter: string) => {\n return options.filter(m => this.utilityService.filter(m.title, filter));\n }\n this.collectionTagSettings.compareFnForAdd = (options: CollectionTag[], filter: string) => {\n return options.filter(m => this.utilityService.filterMatches(m.title, filter));\n }\n this.collectionTagSettings.selectionCompareFn = (a: CollectionTag, b: CollectionTag) => {\n return a.title === b.title;\n }\n\n if (this.metadata.collectionTags) {\n this.collectionTagSettings.savedData = this.metadata.collectionTags;\n }\n\n return of(true);\n }\n\n setupTagSettings() {\n this.tagsSettings.minCharacters = 0;\n this.tagsSettings.multiple = true;\n this.tagsSettings.id = 'tags';\n this.tagsSettings.unique = true;\n this.tagsSettings.showLocked = true;\n this.tagsSettings.addIfNonExisting = true;\n\n\n this.tagsSettings.compareFn = (options: Tag[], filter: string) => {\n return options.filter(m => this.utilityService.filter(m.title, filter));\n }\n this.tagsSettings.fetchFn = (filter: string) => this.metadataService.getAllTags()\n .pipe(map(items => this.tagsSettings.compareFn(items, filter)));\n\n this.tagsSettings.addTransformFn = ((title: string) => {\n return {id: 0, title: title };\n });\n this.tagsSettings.selectionCompareFn = (a: Tag, b: Tag) => {\n return a.id == b.id;\n }\n this.tagsSettings.compareFnForAdd = (options: Tag[], filter: string) => {\n return options.filter(m => this.utilityService.filterMatches(m.title, filter));\n }\n\n if (this.metadata.tags) {\n this.tagsSettings.savedData = this.metadata.tags;\n }\n return of(true);\n }\n\n setupGenreTypeahead() {\n this.genreSettings.minCharacters = 0;\n this.genreSettings.multiple = true;\n this.genreSettings.id = 'genres';\n this.genreSettings.unique = true;\n this.genreSettings.showLocked = true;\n this.genreSettings.addIfNonExisting = true;\n this.genreSettings.fetchFn = (filter: string) => {\n return this.metadataService.getAllGenres()\n .pipe(map(items => this.genreSettings.compareFn(items, filter)));\n };\n this.genreSettings.compareFn = (options: Genre[], filter: string) => {\n return options.filter(m => this.utilityService.filter(m.title, filter));\n }\n this.genreSettings.compareFnForAdd = (options: Genre[], filter: string) => {\n return options.filter(m => this.utilityService.filterMatches(m.title, filter));\n }\n this.genreSettings.selectionCompareFn = (a: Genre, b: Genre) => {\n return a.title == b.title;\n }\n\n this.genreSettings.addTransformFn = ((title: string) => {\n return {id: 0, title: title };\n });\n\n if (this.metadata.genres) {\n this.genreSettings.savedData = this.metadata.genres;\n }\n return of(true);\n }\n\n updateFromPreset(id: string, presetField: Array | undefined, role: PersonRole) {\n const personSettings = this.createBlankPersonSettings(id, role)\n if (presetField && presetField.length > 0) {\n const fetch = personSettings.fetchFn as ((filter: string) => Observable);\n return fetch('').pipe(map(people => {\n const persetIds = presetField.map(p => p.id);\n personSettings.savedData = people.filter(person => persetIds.includes(person.id));\n this.peopleSettings[role] = personSettings;\n this.updatePerson(personSettings.savedData as Person[], role);\n return true;\n }));\n } else {\n this.peopleSettings[role] = personSettings;\n return of(true);\n }\n }\n\n setupLanguageTypeahead() {\n this.languageSettings.minCharacters = 0;\n this.languageSettings.multiple = false;\n this.languageSettings.id = 'language';\n this.languageSettings.unique = true;\n this.languageSettings.showLocked = true;\n this.languageSettings.addIfNonExisting = false;\n this.languageSettings.compareFn = (options: Language[], filter: string) => {\n return options.filter(m => this.utilityService.filter(m.title, filter));\n }\n this.languageSettings.compareFnForAdd = (options: Language[], filter: string) => {\n return options.filter(m => this.utilityService.filterMatches(m.title, filter));\n }\n this.languageSettings.fetchFn = (filter: string) => of(this.validLanguages)\n .pipe(map(items => this.languageSettings.compareFn(items, filter)));\n\n this.languageSettings.selectionCompareFn = (a: Language, b: Language) => {\n return a.isoCode == b.isoCode;\n }\n\n if (this.metadata.language === undefined || this.metadata.language === null || this.metadata.language === '') {\n this.metadata.language = 'en';\n }\n\n const l = this.validLanguages.find(l => l.isoCode === this.metadata.language);\n if (l !== undefined) {\n this.languageSettings.savedData = l;\n }\n return of(true);\n }\n\n setupPersonTypeahead() {\n this.peopleSettings = {};\n\n return forkJoin([\n this.updateFromPreset('writer', this.metadata.writers, PersonRole.Writer),\n this.updateFromPreset('character', this.metadata.characters, PersonRole.Character),\n this.updateFromPreset('colorist', this.metadata.colorists, PersonRole.Colorist),\n this.updateFromPreset('cover-artist', this.metadata.coverArtists, PersonRole.CoverArtist),\n this.updateFromPreset('editor', this.metadata.editors, PersonRole.Editor),\n this.updateFromPreset('inker', this.metadata.inkers, PersonRole.Inker),\n this.updateFromPreset('letterer', this.metadata.letterers, PersonRole.Letterer),\n this.updateFromPreset('penciller', this.metadata.pencillers, PersonRole.Penciller),\n this.updateFromPreset('publisher', this.metadata.publishers, PersonRole.Publisher),\n this.updateFromPreset('translator', this.metadata.translators, PersonRole.Translator)\n ]).pipe(map(results => {\n return of(true);\n }));\n }\n\n fetchPeople(role: PersonRole, filter: string) {\n return this.metadataService.getAllPeople().pipe(map(people => {\n return people.filter(p => p.role == role && this.utilityService.filter(p.name, filter));\n }));\n }\n\n createBlankPersonSettings(id: string, role: PersonRole) {\n var personSettings = new TypeaheadSettings();\n personSettings.minCharacters = 0;\n personSettings.multiple = true;\n personSettings.showLocked = true;\n personSettings.unique = true;\n personSettings.addIfNonExisting = true;\n personSettings.id = id;\n personSettings.compareFn = (options: Person[], filter: string) => {\n return options.filter(m => this.utilityService.filter(m.name, filter));\n }\n personSettings.compareFnForAdd = (options: Person[], filter: string) => {\n return options.filter(m => this.utilityService.filterMatches(m.name, filter));\n }\n\n personSettings.selectionCompareFn = (a: Person, b: Person) => {\n return a.name == b.name && a.role == b.role;\n }\n personSettings.fetchFn = (filter: string) => {\n return this.fetchPeople(role, filter).pipe(map(items => personSettings.compareFn(items, filter)));\n };\n\n personSettings.addTransformFn = ((title: string) => {\n return {id: 0, name: title, role: role };\n });\n\n return personSettings;\n }\n\n close() {\n this.modal.close({success: false, series: undefined, coverImageUpdate: this.coverImageReset});\n }\n\n fetchCollectionTags(filter: string = '') {\n return this.collectionService.search(filter);\n }\n\n formatChapterNumber(chapter: Chapter) {\n if (chapter.number === '0') {\n return '1';\n }\n return chapter.number;\n }\n\n save() {\n const model = this.editSeriesForm.value;\n const selectedIndex = this.editSeriesForm.get('coverImageIndex')?.value || 0;\n this.metadata.webLinks = Object.keys(this.editSeriesForm.controls)\n .filter(key => key.startsWith('link'))\n .map(key => this.editSeriesForm.get(key)?.value.replace(',', '%2C'))\n .filter(v => v !== null && v !== '')\n .join(',');\n\n\n\n const apis = [\n this.seriesService.updateMetadata(this.metadata, this.collectionTags)\n ];\n\n // We only need to call updateSeries if we changed name, sort name, or localized name or reset a cover image\n const nameFieldsDirty = this.editSeriesForm.get('name')?.dirty || this.editSeriesForm.get('sortName')?.dirty || this.editSeriesForm.get('localizedName')?.dirty;\n const nameFieldLockChanged = this.series.nameLocked !== this.initSeries.nameLocked || this.series.sortNameLocked !== this.initSeries.sortNameLocked || this.series.localizedNameLocked !== this.initSeries.localizedNameLocked;\n if (nameFieldsDirty || nameFieldLockChanged || this.coverImageReset) {\n model.nameLocked = this.series.nameLocked;\n model.sortNameLocked = this.series.sortNameLocked;\n model.localizedNameLocked = this.series.localizedNameLocked;\n model.language = this.metadata.language;\n apis.push(this.seriesService.updateSeries(model));\n }\n\n\n if (selectedIndex > 0 && this.selectedCover !== '') {\n apis.push(this.uploadService.updateSeriesCoverImage(model.id, this.selectedCover));\n }\n\n this.saveNestedComponents.emit();\n\n forkJoin(apis).subscribe(results => {\n this.modal.close({success: true, series: model, coverImageUpdate: selectedIndex > 0 || this.coverImageReset});\n });\n }\n\n addWebLink() {\n this.metadata.webLinks += ',';\n this.editSeriesForm.addControl('link' + (this.WebLinks.length - 1), new FormControl('', []));\n this.cdRef.markForCheck();\n }\n\n removeWebLink(index: number) {\n const tokens = this.metadata.webLinks.split(',');\n const tokenToRemove = tokens[index];\n\n this.metadata.webLinks = tokens.filter(t => t != tokenToRemove).join(',');\n this.editSeriesForm.removeControl('link' + index, {emitEvent: true});\n this.cdRef.markForCheck();\n }\n\n updateCollections(tags: CollectionTag[]) {\n this.collectionTags = tags;\n this.cdRef.markForCheck();\n }\n\n updateTags(tags: Tag[]) {\n this.tags = tags;\n this.metadata.tags = tags;\n this.cdRef.markForCheck();\n }\n\n updateGenres(genres: Genre[]) {\n this.genres = genres;\n this.metadata.genres = genres;\n this.cdRef.markForCheck();\n }\n\n updateLanguage(language: Array) {\n if (language.length === 0) {\n this.metadata.language = '';\n return;\n }\n this.metadata.language = language[0].isoCode;\n this.cdRef.markForCheck();\n }\n\n updatePerson(persons: Person[], role: PersonRole) {\n switch (role) {\n case PersonRole.CoverArtist:\n this.metadata.coverArtists = persons;\n break;\n case PersonRole.Character:\n this.metadata.characters = persons;\n break;\n case PersonRole.Colorist:\n this.metadata.colorists = persons;\n break;\n case PersonRole.Editor:\n this.metadata.editors = persons;\n break;\n case PersonRole.Inker:\n this.metadata.inkers = persons;\n break;\n case PersonRole.Letterer:\n this.metadata.letterers = persons;\n break;\n case PersonRole.Penciller:\n this.metadata.pencillers = persons;\n break;\n case PersonRole.Publisher:\n this.metadata.publishers = persons;\n break;\n case PersonRole.Writer:\n this.metadata.writers = persons;\n break;\n case PersonRole.Translator:\n this.metadata.translators = persons;\n }\n this.cdRef.markForCheck();\n }\n\n updateSelectedIndex(index: number) {\n this.editSeriesForm.patchValue({\n coverImageIndex: index\n });\n this.cdRef.markForCheck();\n }\n\n updateSelectedImage(url: string) {\n this.selectedCover = url;\n this.cdRef.markForCheck();\n }\n\n handleReset() {\n this.coverImageReset = true;\n this.editSeriesForm.patchValue({\n coverImageLocked: false\n });\n this.cdRef.markForCheck();\n }\n\n unlock(b: any, field: string) {\n if (b) {\n b[field] = !b[field];\n }\n this.cdRef.markForCheck();\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'defaultValue',\n pure: true,\n standalone: true\n})\nexport class DefaultValuePipe implements PipeTransform {\n\n transform(value: any, replacementString = '—'): string {\n if (value === null || value === undefined || value === '' || value === Infinity || Number.isNaN(value)) return replacementString;\n return value;\n }\n\n}\n","export enum PublicationStatus {\n OnGoing = 0,\n Hiatus = 1,\n Completed = 2,\n Cancelled = 3,\n Ended = 4\n}","import {Pipe, PipeTransform} from '@angular/core';\nimport { PublicationStatus } from '../_models/metadata/publication-status';\nimport {TranslocoService} from \"@ngneat/transloco\";\n\n@Pipe({\n name: 'publicationStatus',\n standalone: true\n})\nexport class PublicationStatusPipe implements PipeTransform {\n constructor(private translocoService: TranslocoService) {}\n\n transform(value: PublicationStatus): string {\n switch (value) {\n case PublicationStatus.OnGoing:\n return this.translocoService.translate('publication-status-pipe.ongoing');\n case PublicationStatus.Hiatus:\n return this.translocoService.translate('publication-status-pipe.hiatus');\n case PublicationStatus.Completed:\n return this.translocoService.translate('publication-status-pipe.completed');\n case PublicationStatus.Cancelled:\n return this.translocoService.translate('publication-status-pipe.cancelled');\n case PublicationStatus.Ended:\n return this.translocoService.translate('publication-status-pipe.ended');\n default:\n return '';\n }\n }\n\n}\n","import {inject, Pipe, PipeTransform} from '@angular/core';\nimport { RelationKind } from '../_models/series-detail/relation-kind';\nimport {TranslocoService} from \"@ngneat/transloco\";\n\n@Pipe({\n name: 'relationship',\n standalone: true\n})\nexport class RelationshipPipe implements PipeTransform {\n\n translocoService = inject(TranslocoService);\n\n transform(relationship: RelationKind | undefined): string {\n if (relationship === undefined) return '';\n switch (relationship) {\n case RelationKind.Adaptation:\n return this.translocoService.translate('relationship-pipe.adaptation');\n case RelationKind.AlternativeSetting:\n return this.translocoService.translate('relationship-pipe.alternative-setting');\n case RelationKind.AlternativeVersion:\n return this.translocoService.translate('relationship-pipe.alternative-version');\n case RelationKind.Character:\n return this.translocoService.translate('relationship-pipe.character');\n case RelationKind.Contains:\n return this.translocoService.translate('relationship-pipe.contains');\n case RelationKind.Doujinshi:\n return this.translocoService.translate('relationship-pipe.doujinshi');\n case RelationKind.Other:\n return this.translocoService.translate('relationship-pipe.other');\n case RelationKind.Prequel:\n return this.translocoService.translate('relationship-pipe.prequel');\n case RelationKind.Sequel:\n return this.translocoService.translate('relationship-pipe.sequel');\n case RelationKind.SideStory:\n return this.translocoService.translate('relationship-pipe.side-story');\n case RelationKind.SpinOff:\n return this.translocoService.translate('relationship-pipe.spin-off');\n case RelationKind.Parent:\n return this.translocoService.translate('relationship-pipe.parent');\n case RelationKind.Edition:\n return this.translocoService.translate('relationship-pipe.edition');\n default:\n return '';\n }\n }\n\n}\n","import {ChangeDetectorRef, NgZone, OnDestroy, Pipe, PipeTransform} from '@angular/core';\nimport {TranslocoService} from \"@ngneat/transloco\";\n\n/**\n * MIT License\n\nCopyright (c) 2016 Andrew Poyntz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nThis code was taken from https://github.com/AndrewPoyntz/time-ago-pipe/blob/master/time-ago.pipe.ts\nand modified\n */\n\n@Pipe({\n name: 'timeAgo',\n pure: false,\n standalone: true\n})\nexport class TimeAgoPipe implements PipeTransform, OnDestroy {\n\n\tprivate timer: number | null = null;\n\tconstructor(private readonly changeDetectorRef: ChangeDetectorRef, private ngZone: NgZone,\n private translocoService: TranslocoService) {}\n\n\ttransform(value: string) {\n\n if (value === '' || value === null || value === undefined || value.split('T')[0] === '0001-01-01') {\n return this.translocoService.translate('time-ago-pipe.never');\n }\n\n\t\tthis.removeTimer();\n\t\tconst d = new Date(value);\n\t\tconst now = new Date();\n\t\tconst seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000));\n\t\tconst timeToUpdate = (Number.isNaN(seconds)) ? 1000 : this.getSecondsUntilUpdate(seconds) * 1000;\n\n \tthis.timer = this.ngZone.runOutsideAngular(() => {\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\treturn window.setTimeout(() => {\n\t\t\t\t\tthis.ngZone.run(() => this.changeDetectorRef.markForCheck());\n\t\t\t\t}, timeToUpdate);\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\n\t\tconst minutes = Math.round(Math.abs(seconds / 60));\n\t\tconst hours = Math.round(Math.abs(minutes / 60));\n\t\tconst days = Math.round(Math.abs(hours / 24));\n\t\tconst months = Math.round(Math.abs(days/30.416));\n\t\tconst years = Math.round(Math.abs(days/365));\n\n\t\tif (Number.isNaN(seconds)){\n\t\t\treturn '';\n\t\t}\n\n\t\tif (seconds <= 45) {\n\t\t\t\treturn this.translocoService.translate('time-ago-pipe.just-now');\n }\n\t\tif (seconds <= 90) {\n return this.translocoService.translate('time-ago-pipe.min-ago');\n }\n\t\tif (minutes <= 45) {\n return this.translocoService.translate('time-ago-pipe.mins-ago', {value: minutes});\n }\n\t\tif (minutes <= 90) {\n return this.translocoService.translate('time-ago-pipe.hour-ago');\n }\n\t\tif (hours <= 22) {\n return this.translocoService.translate('time-ago-pipe.hours-ago', {value: hours});\n }\n\t\tif (hours <= 36) {\n return this.translocoService.translate('time-ago-pipe.day-ago');\n }\n\t\tif (days <= 25) {\n return this.translocoService.translate('time-ago-pipe.days-ago', {value: days});\n }\n\t\tif (days <= 45) {\n return this.translocoService.translate('time-ago-pipe.month-ago');\n }\n\t\tif (days <= 345) {\n return this.translocoService.translate('time-ago-pipe.months-ago', {value: months});\n }\n\t\tif (days <= 545) {\n return this.translocoService.translate('time-ago-pipe.year-ago');\n }\n return this.translocoService.translate('time-ago-pipe.years-ago', {value: years});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.removeTimer();\n\t}\n\n\tprivate removeTimer() {\n\t\tif (this.timer) {\n\t\t\twindow.clearTimeout(this.timer);\n\t\t\tthis.timer = null;\n\t\t}\n\t}\n\n\tprivate getSecondsUntilUpdate(seconds:number) {\n\t\tconst min = 60;\n\t\tconst hr = min * 60;\n\t\tconst day = hr * 24;\n\t\tif (seconds < min) { // less than 1 min, update every 2 secs\n\t\t\treturn 2;\n\t\t} else if (seconds < hr) { // less than an hour, update every 30 secs\n\t\t\treturn 30;\n\t\t} else if (seconds < day) { // less then a day, update every 5 mins\n\t\t\treturn 300;\n\t\t} else { // update every hour\n\t\t\treturn 3600;\n\t\t}\n\t}\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport {CommonModule} from \"@angular/common\";\n\n/**\n * What type of cursor to apply to the tag badge\n */\nexport enum TagBadgeCursor {\n /**\n * Allows the user to select text\n * cursor: default\n */\n Selectable,\n /**\n * Informs the user they can click and interact with badge\n * cursor: pointer\n */\n Clickable,\n /**\n * Informs the user they cannot click or interact with badge\n * cursor: not-allowed\n */\n NotAllowed,\n}\n\n@Component({\n selector: 'app-tag-badge',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tag-badge.component.html',\n styleUrls: ['./tag-badge.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TagBadgeComponent {\n\n @Input() selectionMode: TagBadgeCursor = TagBadgeCursor.Selectable;\n @Input() fillStyle: 'filled' | 'outline' = 'outline';\n\n get TagBadgeCursor() {\n return TagBadgeCursor;\n }\n}\n","
\n \n
","\n
\n
\n \n \n {{t('locked-field')}}\n \n \n
\n \n \n \n \n \n
\n {{t('loading')}}\n
\n \n \n \n
\n
\n\n \n
\n
    \n
  • \n {{t('add-item', {item: typeaheadControl.value})}}\n
  • \n
  • \n \n
  • \n
  • \n {{t('no-data')}}{{this.settings.addIfNonExisting ? t('add-custom-item') : ''}}\n
  • \n
\n
\n
\n
\n\n
\n","import { trigger, state, style, transition, animate } from '@angular/animations';\nimport {CommonModule, DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild, DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Inject,\n Input,\n OnInit,\n Output,\n Renderer2,\n RendererStyleFlags2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport {FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { auditTime, filter, map, shareReplay, switchMap, take, tap } from 'rxjs/operators';\nimport { KEY_CODES } from 'src/app/shared/_services/utility.service';\nimport { SelectionCompareFn, TypeaheadSettings } from '../_models/typeahead-settings';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {TagBadgeComponent} from \"../../shared/tag-badge/tag-badge.component\";\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n\n/**\n * SelectionModel is used for keeping track of multiple selections. Simple interface with ability to toggle.\n * @param selectedState Optional state to set selectedOptions to. If not passed, defaults to false.\n * @param selectedOptions Optional data elements to inform the SelectionModel of. If not passed, as toggle() occur, items are tracked.\n * @param propAccessor Optional string that points to a unique field within the T type. Used for quickly looking up.\n */\nexport class SelectionModel {\n _data!: Array<{value: T, selected: boolean}>;\n _propAccessor: string = '';\n\n constructor(selectedState: boolean = false, selectedOptions: Array = [], propAccessor: string = '') {\n this._data = [];\n\n if (propAccessor != undefined || propAccessor !== '') {\n this._propAccessor = propAccessor;\n }\n\n selectedOptions.forEach(d => {\n this._data.push({value: d, selected: selectedState});\n });\n }\n\n /**\n * Will toggle if the data item is selected or not. If data option is not tracked, will add it and set state to true.\n * @param data Item to toggle\n * @param selectedState Force the state\n * @param compareFn An optional function to use for the lookup, else will use shallowEqual implementation\n */\n toggle(data: T, selectedState?: boolean, compareFn?: SelectionCompareFn) {\n let lookupMethod = this.shallowEqual;\n if (compareFn != undefined || compareFn != null) {\n lookupMethod = compareFn;\n }\n\n const dataItem = this._data.filter(d => lookupMethod(d.value, data));\n if (dataItem.length > 0) {\n if (selectedState != undefined) {\n dataItem[0].selected = selectedState;\n } else {\n dataItem[0].selected = !dataItem[0].selected;\n }\n } else {\n this._data.push({value: data, selected: (selectedState === undefined ? true : selectedState)});\n }\n }\n\n\n /**\n * Is the passed item selected\n * @param data item to check against\n * @param compareFn optional method to use to perform comparisons\n * @returns boolean\n */\n isSelected(data: T, compareFn?: SelectionCompareFn): boolean {\n let lookupMethod = this.shallowEqual;\n if (compareFn != undefined || compareFn != null) {\n lookupMethod = compareFn;\n }\n\n const dataItem = this._data.filter(d => lookupMethod(d.value, data));\n\n if (dataItem.length > 0) {\n return dataItem[0].selected;\n }\n return false;\n }\n\n /**\n *\n * @returns If some of the items are selected, but not all\n */\n hasSomeSelected(): boolean {\n const selectedCount = this._data.filter(d => d.selected).length;\n return (selectedCount !== this._data.length && selectedCount !== 0)\n }\n\n /**\n *\n * @returns All Selected items\n */\n selected(): Array {\n return this._data.filter(d => d.selected).map(d => d.value);\n }\n\n /**\n *\n * @returns All Non-Selected items\n */\n unselected(): Array {\n return this._data.filter(d => !d.selected).map(d => d.value);\n }\n\n /**\n *\n * @returns Last element added/tracked or undefined if nothing is tracked\n */\n peek(): T | undefined {\n if (this._data.length > 0) {\n return this._data[this._data.length - 1].value;\n }\n\n return undefined;\n }\n\n shallowEqual(a: T, b: T) {\n\n for (let key in a) {\n if (!(key in b) || a[key] !== b[key]) {\n return false;\n }\n }\n for (let key in b) {\n if (!(key in a)) {\n return false;\n }\n }\n return true;\n }\n}\n\nconst ANIMATION_SPEED = 200;\n\n@Component({\n selector: 'app-typeahead',\n standalone: true,\n imports: [CommonModule, TagBadgeComponent, ReactiveFormsModule, TranslocoDirective],\n templateUrl: './typeahead.component.html',\n styleUrls: ['./typeahead.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('slideFromTop', [\n state('in', style({ height: '0px'})),\n transition('void => *', [\n style({ height: '100%', overflow: 'auto' }),\n animate(ANIMATION_SPEED)\n ]),\n transition('* => void', [\n animate(ANIMATION_SPEED, style({ height: '0px' })),\n ])\n ])\n ]\n})\nexport class TypeaheadComponent implements OnInit {\n /**\n * Settings for the typeahead\n */\n @Input({required: true}) settings!: TypeaheadSettings;\n /**\n * When true, will reset field to no selections. When false, will reset to saved data\n */\n @Input() reset: ReplaySubject = new ReplaySubject(1);\n /**\n * When a field is locked, we render custom css to indicate to the user. Does not affect functionality.\n */\n @Input() locked: boolean = false;\n /**\n * If disabled, a user will not be able to interact with the typeahead\n */\n @Input() disabled: boolean = false;\n /**\n * When triggered, will focus the input if the passed string matches the id\n */\n @Input() focus: EventEmitter | undefined;\n @Output() selectedData = new EventEmitter();\n @Output() newItemAdded = new EventEmitter();\n @Output() onUnlock = new EventEmitter();\n @Output() lockedChange = new EventEmitter();\n private readonly destroyRef = inject(DestroyRef);\n\n\n @ViewChild('input') inputElem!: ElementRef;\n @ContentChild('optionItem') optionTemplate!: TemplateRef;\n @ContentChild('badgeItem') badgeTemplate!: TemplateRef;\n\n optionSelection!: SelectionModel;\n\n hasFocus = false; // Whether input has active focus\n focusedIndex: number = 0;\n showAddItem: boolean = false;\n filteredOptions!: Observable;\n isLoadingOptions: boolean = false;\n typeaheadControl!: FormControl;\n typeaheadForm!: FormGroup;\n\n constructor(private renderer2: Renderer2, @Inject(DOCUMENT) private document: Document, private readonly cdRef: ChangeDetectorRef) { }\n\n ngOnInit() {\n this.reset.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((resetToEmpty: boolean) => {\n this.clearSelections(resetToEmpty);\n this.init();\n });\n\n if (this.focus) {\n this.focus.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((id: string) => {\n if (this.settings.id !== id) return;\n this.onInputFocus();\n });\n }\n\n this.init();\n }\n\n init() {\n if (this.settings.compareFn === undefined && this.settings.multiple) {\n console.error('A compare function must be defined');\n return;\n }\n\n if (this.settings.trackByIdentityFn === undefined) {\n this.settings.trackByIdentityFn = (index, value) => value;\n }\n\n if (this.settings.hasOwnProperty('formControl') && this.settings.formControl) {\n this.typeaheadControl = this.settings.formControl;\n } else {\n this.typeaheadControl = new FormControl('');\n }\n this.typeaheadForm = new FormGroup({\n 'typeahead': this.typeaheadControl\n });\n\n this.filteredOptions = this.typeaheadForm.get('typeahead')!.valueChanges\n .pipe(\n // Adjust input box to grow\n tap((val: string) => {\n if (this.inputElem != null && this.inputElem.nativeElement != null) {\n this.renderer2.setStyle(this.inputElem.nativeElement, 'width', 15 * (val.trim().length + 1) + 'px');\n this.focusedIndex = 0;\n }\n }),\n map((val: string) => val.trim()),\n auditTime(this.settings.debounce),\n //distinctUntilChanged(), // ?!: BUG Doesn't trigger the search to run when filtered array changes\n filter((val: string) => {\n // If minimum filter characters not met, do not filter\n if (this.settings.minCharacters === 0) return true;\n\n if (!val || val.length < this.settings.minCharacters) {\n return false;\n }\n\n return true;\n }),\n\n switchMap((val: string) => {\n this.isLoadingOptions = true;\n return this.settings.fetchFn(val.trim()).pipe(takeUntilDestroyed(this.destroyRef), map((items: any[]) => items.filter(item => this.filterSelected(item))));\n }),\n tap((filteredOptions: any[]) => {\n this.isLoadingOptions = false;\n this.focusedIndex = 0;\n this.cdRef.markForCheck();\n setTimeout(() => {\n this.updateShowAddItem(filteredOptions);\n this.updateHighlight();\n }, 10);\n setTimeout(() => this.updateHighlight(), 20);\n\n }),\n shareReplay(),\n takeUntilDestroyed(this.destroyRef)\n );\n\n\n if (this.settings.savedData) {\n if (this.settings.multiple) {\n this.optionSelection = new SelectionModel(true, this.settings.savedData);\n }\n else {\n const isArray = this.settings.savedData.hasOwnProperty('length');\n if (isArray) {\n this.optionSelection = new SelectionModel(true, this.settings.savedData);\n } else {\n this.optionSelection = new SelectionModel(true, [this.settings.savedData]);\n }\n }\n } else {\n this.optionSelection = new SelectionModel();\n }\n }\n\n\n @HostListener('body:click', ['$event'])\n handleDocumentClick(event: any) {\n // Don't close the typeahead when we select an item from it\n if (event.target && (event.target as HTMLElement).classList.contains('list-group-item')) {\n return;\n }\n this.hasFocus = false;\n }\n\n @HostListener('window:keydown', ['$event'])\n handleKeyPress(event: KeyboardEvent) {\n if (!this.hasFocus) { return; }\n if (this.disabled) return;\n\n switch(event.key) {\n case KEY_CODES.DOWN_ARROW:\n case KEY_CODES.RIGHT_ARROW:\n {\n this.focusedIndex = Math.min(this.focusedIndex + 1, this.document.querySelectorAll('.list-group-item').length - 1);\n this.updateHighlight();\n break;\n }\n case KEY_CODES.UP_ARROW:\n case KEY_CODES.LEFT_ARROW:\n {\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\n this.updateHighlight();\n break;\n }\n case KEY_CODES.ENTER:\n {\n this.document.querySelectorAll('.list-group-item').forEach((item, index) => {\n if (item.classList.contains('active')) {\n this.filteredOptions.pipe(take(1)).subscribe((opts: any[]) => {\n // This isn't giving back the filtered array, but everything\n event.preventDefault();\n event.stopPropagation();\n\n (item as HTMLElement).click();\n this.focusedIndex = 0;\n });\n }\n });\n break;\n }\n case KEY_CODES.BACKSPACE:\n case KEY_CODES.DELETE:\n {\n if (this.typeaheadControl.value !== null && this.typeaheadControl.value !== undefined && this.typeaheadControl.value.trim() !== '') {\n break;\n }\n const selected = this.optionSelection.selected();\n if (selected.length > 0) {\n this.removeSelectedOption(selected.pop());\n }\n break;\n }\n case KEY_CODES.ESC_KEY:\n this.hasFocus = false;\n event.stopPropagation();\n break;\n default:\n break;\n }\n }\n\n toggleSelection(opt: any): void {\n this.optionSelection.toggle(opt, undefined, this.settings.selectionCompareFn);\n this.selectedData.emit(this.optionSelection.selected());\n }\n\n removeSelectedOption(opt: any) {\n this.optionSelection.toggle(opt, undefined, this.settings.selectionCompareFn);\n this.selectedData.emit(this.optionSelection.selected());\n this.resetField();\n }\n\n clearSelections(untoggleAll: boolean = false) {\n if (this.optionSelection) {\n if (!untoggleAll && this.settings.savedData) {\n const isArray = this.settings.savedData.hasOwnProperty('length');\n if (isArray) {\n this.optionSelection = new SelectionModel(true, this.settings.savedData); // NOTE: Library-detail will break the 'x' button due to how savedData is being set to avoid state reset\n } else {\n this.optionSelection = new SelectionModel(true, [this.settings.savedData]);\n }\n this.cdRef.markForCheck();\n } else {\n this.optionSelection.selected().forEach(item => this.optionSelection.toggle(item, false));\n this.cdRef.markForCheck();\n }\n\n this.selectedData.emit(this.optionSelection.selected());\n this.resetField();\n }\n }\n\n handleOptionClick(opt: any) {\n if (this.disabled) return;\n if (!this.settings.multiple && this.optionSelection.selected().length > 0) {\n return;\n }\n\n this.toggleSelection(opt);\n\n this.resetField();\n this.onInputFocus();\n }\n\n addNewItem(title: string) {\n if (this.settings.addTransformFn == undefined || !this.settings.addIfNonExisting) {\n return;\n }\n const newItem = this.settings.addTransformFn(title);\n this.newItemAdded.emit(newItem);\n this.toggleSelection(newItem);\n\n this.resetField();\n this.onInputFocus();\n }\n\n /**\n *\n * @param item\n * @returns True if the item is NOT selected already\n */\n filterSelected(item: any) {\n if (this.settings.unique && this.settings.multiple) {\n return !this.optionSelection.isSelected(item, this.settings.selectionCompareFn);\n }\n\n return true;\n }\n\n openDropdown() {\n setTimeout(() => {\n this.typeaheadControl.setValue(this.typeaheadControl.value);\n this.hasFocus = true;\n });\n }\n\n onInputFocus(event?: any) {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (this.disabled) return;\n\n if (!this.settings.multiple && this.optionSelection.selected().length > 0) {\n return;\n }\n\n if (this.inputElem) {\n // hack: To prevent multiple typeaheads from being open at once, click document then trigger the focus\n this.document.body.click();\n\n this.inputElem.nativeElement.focus();\n this.hasFocus = true;\n }\n\n\n this.openDropdown();\n }\n\n\n resetField() {\n if (this.inputElem && this.inputElem.nativeElement) {\n this.renderer2.setStyle(this.inputElem.nativeElement, 'width', 4, RendererStyleFlags2.Important);\n }\n this.typeaheadControl.setValue('');\n this.focusedIndex = 0;\n }\n\n // Updates the highlight to focus on the selected item\n updateHighlight() {\n this.document.querySelectorAll('.list-group-item').forEach((item, index) => {\n if (index === this.focusedIndex && !item.classList.contains('no-hover')) {\n // apply active class\n this.renderer2.addClass(item, 'active');\n } else {\n // remove active class\n this.renderer2.removeClass(item, 'active');\n }\n });\n }\n\n updateShowAddItem(options: any[]) {\n // ?! BUG This will still technicially allow you to add the same thing as a previously added item. (Code will just toggle it though)\n this.showAddItem = false;\n this.cdRef.markForCheck();\n if (!this.settings.addIfNonExisting) return;\n\n const inputText = this.typeaheadControl.value.trim();\n if (inputText.length < Math.max(this.settings.minCharacters, 1)) return;\n if (!this.typeaheadControl.dirty) return; // Do we need this?\n\n // Check if this new option will interfere with any existing ones not shown\n\n if (typeof this.settings.compareFnForAdd == 'function') {\n const willDuplicateExist = this.settings.compareFnForAdd(this.optionSelection.selected(), inputText);\n if (willDuplicateExist.length > 0) {\n return;\n }\n }\n\n if (typeof this.settings.compareFn == 'function') {\n // The problem here is that compareFn can report that duplicate will exist as it does contains not match\n const matches = this.settings.compareFn(options, inputText);\n if (matches.length > 0 && matches.includes(this.settings.addTransformFn(inputText))) {\n return;\n }\n }\n\n this.showAddItem = true;\n\n if (this.showAddItem) {\n this.hasFocus = true;\n }\n this.cdRef.markForCheck();\n }\n\n toggleLock(event: any) {\n if (this.disabled) return;\n this.locked = !this.locked;\n this.lockedChange.emit(this.locked);\n\n if (!this.locked) {\n this.onUnlock.emit();\n }\n }\n\n}\n"],"x_google_ignoreList":[2]}