{"version":3,"file":"929.782e49ba8588197b.js","mappings":"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A,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI1sE,KAAM,OACNkqG,YAAY,EACZr1D,MAAOq+C,EAAUE,QACjB1mB,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAE1F,CACI1sE,KAAM,QACNkqG,YAAY,EACZr1D,MAAOq+C,EAAU5f,OACjB5G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI1sE,KAAM,MACNkqG,YAAY,EACZr1D,MAAOq+C,EAAU5f,OACjB5G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI1sE,KAAM,OACNkqG,YAAY,EACZr1D,MAAOq+C,EAAU5f,OACjB5G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI1sE,KAAM,QACNkqG,YAAY,EACZr1D,MAAOq+C,EAAUE,QACjB1mB,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI1sE,KAAM,QACNkqG,YAAY,EACZr1D,MAAOq+C,EAAUE,QACjB1mB,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI1sE,KAAM,SACNkqG,YAAY,EACZr1D,MAAOq+C,EAAUE,QACjB1mB,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI1sE,KAAM,UACNkqG,YAAY,EACZr1D,MAAOq+C,EAAUE,QACjB1mB,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI1sE,KAAM,QACNkqG,YAAY,EACZr1D,MAAOq+C,EAAUE,QACjB1mB,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI1sE,KAAM,SACNkqG,YAAY,EACZr1D,MAAOq+C,EAAUE,QACjB1mB,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CA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","names":["AgeRating","NotApplicable","Unknown","RatingPending","EarlyChildhood","Everyone","G","Everyone10Plus","PG","KidsToAdults","Teen","Mature15Plus","Mature17Plus","Mature","R18Plus","AdultsOnly","X18Plus","PageLayoutMode","Cards","List","PageSplitOption","SplitLeftToRight","SplitRightToLeft","NoSplit","FitSplit","readingDirections","text","value","ReadingDirection","LeftToRight","RightToLeft","bookWritingStyles","WritingStyle","Horizontal","Vertical","scalingOptions","ScalingOption","Automatic","FitToHeight","FitToWidth","Original","pageSplitOptions","readingModes","ReaderMode","LeftRight","UpDown","Webtoon","layoutModes","LayoutMode","Single","Double","DoubleReversed","bookLayoutModes","BookPageLayoutMode","Default","Column1","Column2","pageLayoutModes","ScrobbleProvider","Kavita","AniList","Mal","GoogleBooks","ScrobblingService","constructor","httpClient","utilityService","this","baseUrl","environment","apiUrl","hasTokenExpired","provider","get","TextResonse","pipe","map","r","updateAniListToken","token","post","getAniListToken","getScrobbleErrors","getScrobbleEvents","filter","pageNum","undefined","itemsPerPage","params","HttpParams","addPaginationIfExists","observe","response","createPaginatedResult","PaginatedResult","clearScrobbleErrors","getHolds","libraryAllowsScrobbling","seriesId","res","hasHold","addHold","removeHold","delete","t","i0","i1","i2","_angular_core__WEBPACK_IMPORTED_MODULE_6__","Yz7","factory","ɵfac","providedIn","DayOfWeek","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","StatisticsService","translocoService","inject","TranslocoService","publicationStatusPipe","PublicationStatusPipe","mangaFormatPipe","MangaFormatPipe","getUserStatistics","userId","libraryIds","url","length","join","getServerStatistics","getYearRange","spreads","spread","name","count","getTopYears","getPagesPerYear","getWordsPerYear","getTopUsers","days","getReadingHistory","getPublicationStatus","transform","getMangaFormat","getTotalSize","getFileBreakdown","getReadCountByDay","getDayBreakdown","_angular_core__WEBPACK_IMPORTED_MODULE_4__","compare","v1","v2","rotate","asc","desc","SortableHeader","sortable","direction","sort","EventEmitter","emit","column","_angular_core__WEBPACK_IMPORTED_MODULE_0__","lG2","selectors","hostVars","hostBindings","rf","ctx","DoubleNoCover","AgeRatingPipe","of","translate","hasOwnProperty","title","_angular_core__WEBPACK_IMPORTED_MODULE_1__","Yjl","pure","standalone","specialCases","CompactNumberPipe","key","localStorage","getItem","AccountService","localeKey","replace","endsWith","transformValue","split","locale","formatter","Intl","NumberFormat","notation","maximumSignificantDigits","formatterForDoublePrecision","includes","format","TimeDurationPipe","hours","toFixed","ctx_r0","label","IconAndTitleComponent","clickable","fontClasses","click","handleClick","event","Xpm","inputs","outputs","features","ngContentSelectors","_c1","decls","vars","consts","template","$event","IconAndTitleComponent_div_1_Template","_c0","CommonModule","styles","changeDetection","_r5","ctx_r4","tmp_b_0","listForm","setValue","t_r1","_r12","item_r7","$implicit","ctx_r10","GenericListModalComponent_ng_container_0_li_9_button_2_Template","ctx_r3","clicked","_r16","ctx_r15","close","GenericListModalComponent_ng_container_0_div_7_Template","GenericListModalComponent_ng_container_0_li_9_Template","ctx_r17","items","filterList","GenericListModalComponent","modal","FormGroup","filterQuery","FormControl","listItem","toLowerCase","indexOf","item","GenericListModalComponent_ng_container_0_Template","ReactiveFormsModule","NgIf","NgFor","FilterPipe","TranslocoDirective","DayOfWeekPipe","core","dayBreakdown$","showLegend","DayBreakdownComponent","statService","view","formControl","destroyRef","DestroyRef","ngOnInit","dayOfWeekPipe","data","d","takeUntilDestroyed","DayBreakdownComponent_ng_container_0_Template","BarChartModule","AsyncPipe","item_r8","id","username","ReadingActivityComponent_ng_container_0_div_9_option_5_Template","tmp_0_0","ctx_r2","formGroup","invalid","touched","users$","item_r9","data_r11","ReadingActivityComponent_ng_container_0_ng_container_17_ngx_charts_line_chart_1_Template","ReadingActivityComponent_ng_container_0_div_9_Template","ReadingActivityComponent_ng_container_0_option_15_Template","ReadingActivityComponent_ng_container_0_ng_container_17_Template","ReadingActivityComponent_ng_container_0_ng_template_19_Template","isAdmin","individualUserMode","tmp_4_0","timePeriods","data$","options","month","day","ReadingActivityComponent","memberService","users","TimePeriods","valueChanges","switchMap","_","gList","reduce","formats","entry","formatTranslated","series","push","Date","toLocaleDateString","Object","keys","shareReplay","subscribe","getMembers","emitValue","disable","ReadingActivityComponent_ng_container_0_Template","i3","LineChartModule","i4","_r1","url_r9","StatListComponent_ng_container_0_li_6_ng_container_1_app_image_1_Template","item_r6","ctx_r8","_r14","ctx_r13","doClick","StatListComponent_ng_container_0_li_6_ng_container_1_Template","StatListComponent_ng_container_0_li_6_span_3_Template","ctx_r5","image","StatListComponent_ng_container_0_i_4_Template","StatListComponent_ng_container_0_li_6_Template","description","data_r3","StatListComponent","_angular_core__WEBPACK_IMPORTED_MODULE_2__","StatListComponent_ng_container_0_Template","StatListComponent_ng_template_2_Template","NgbTooltip","NgClass","ImageComponent","item_r4","user_r6","comicsTime","mangaTime","booksTime","TopReadersComponent_ng_container_0_option_11_Template","TopReadersComponent_ng_container_0_div_14_Template","tmp_3_0","getDay","TopReadersComponent","statsService","cdRef","emitEvent","TopReadersComponent_ng_container_0_Template","PendingCopy","_document","textarea","_textarea","createElement","style","position","top","opacity","left","setAttribute","readOnly","fullscreenElement","body","appendChild","copy","successful","currentFocus","activeElement","select","setSelectionRange","execCommand","focus","destroy","remove","Clipboard","document","pendingCopy","beginCopy","DOCUMENT","ɵprov","_r3","tooltipText","_r11","show","refresh","_r8","ApiKeyComponent_ng_container_0_span_4_Template","ApiKeyComponent_ng_container_0_ng_template_5_Template","_r17","ctx_r16","selectAll","ApiKeyComponent_ng_container_0_button_10_Template","ctx_r18","ApiKeyComponent_ng_container_0_button_15_Template","ApiKeyComponent_ng_container_0_ng_template_16_Template","InputType","hideData","showRefresh","ApiKeyComponent","confirmService","accountService","toastr","clipboard","val","currentUser$","user","apiKey","markForCheck","_this","_asyncToGenerator","inputElem","nativeElement","_this2","confirm","resetApiKey","newKey","success","viewQuery","ApiKeyComponent_ng_container_0_Template","RestrictionSelectorComponent_ng_container_0_ng_container_1_ng_container_1_ng_container_5_Template","opt_r10","RestrictionSelectorComponent_ng_container_0_ng_container_1_ng_container_1_Template","RestrictionSelectorComponent_ng_container_0_ng_container_1_option_10_Template","RestrictionSelectorComponent_ng_container_0_ng_container_1_ng_template_17_Template","showContext","restrictionForm","ageRatings","RestrictionSelectorComponent_ng_container_0_ng_container_1_Template","RestrictionSelectorComponent","metadataService","selected","ageRating","member","ageRestriction","ageRestrictionIncludeUnknowns","includeUnknowns","reset","e","parseInt","enable","getAllAgeRatings","ratings","ngOnChanges","RestrictionSelectorComponent_ng_container_0_Template","TitleCasePipe","TranslocoModule","NgTemplateOutlet","hold_r3","libraryId","seriesName","UserHoldsComponent_ng_container_0_li_7_Template","holds$","UserHoldsComponent","ChangeDetectorRef","scrobblingService","UserHoldsComponent_ng_container_0_Template","ScrobbleEventType","ChapterRead","AddWantToRead","RemoveWantToRead","ScoreUpdated","Review","ScrobbleEventTypePipe","ScrobbleEventSortField","None","Created","LastModified","Type","Series","IsProcessed","_r6","pagination","currentPage","ctx_r7","onPageChange","totalItems","volumeNumber","chapterNumber","rating","UserScrobbleHistoryComponent_ng_container_0_tr_31_ng_container_17_Template","UserScrobbleHistoryComponent_ng_container_0_tr_31_ng_container_18_Template","UserScrobbleHistoryComponent_ng_container_0_tr_31_ng_container_19_Template","UserScrobbleHistoryComponent_ng_container_0_tr_31_i_21_Template","UserScrobbleHistoryComponent_ng_container_0_tr_31_i_22_Template","createdUtc","_c2","lastModifiedUtc","scrobbleEventType","idx_r10","isProcessed","UserScrobbleHistoryComponent_ng_container_0_ngb_pagination_13_Template","_r23","ctx_r22","updateSort","ctx_r24","ctx_r25","UserScrobbleHistoryComponent_ng_container_0_tr_30_Template","UserScrobbleHistoryComponent_ng_container_0_tr_31_Template","events","UserScrobbleHistoryComponent","scrobbleService","loadPage","debounceTime","query","prevPage","sortEvent","page","pageSize","isDescending","field","mapSortColumnField","take","result","UserScrobbleHistoryComponent_ng_container_0_Template","NgbPagination","DefaultValuePipe","TranslocoLocaleModule","openPageByYearList","stopPropagation","openWordByYearList","totalPagesRead","totalWordsRead","timeSpentReading","avgHoursPerWeekSpentReading","chaptersRead","lastActive","UserStatsInfoCardsComponent","modalService","numberPipe","yearCounts","ref","open","scrollable","componentInstance","UserStatsInfoCardsComponent_ng_container_0_Template","DecimalPipe","TimeAgoPipe","userStats_r4","UserStatsComponent_ng_container_0_div_1_ng_container_2_Template","userStats$","isAdmin$","percentageRead$","UserStatsComponent_ng_container_0_div_1_Template","UserStatsComponent","libraryService","u","hasAdminRole","getMember","me","readSeries$","PercentPipe","getLibraryNames","names","percentReadPerLibrary","l","parseFloat","a","b","UserStatsComponent_ng_container_0_Template","i5","DevicePlatform","Custom","PocketBook","Kindle","Kobo","devicePlatforms","DevicePlatformPipe","EditDeviceComponent_ng_container_0_ng_container_8_p_1_Template","errors_r8","required","EditDeviceComponent_ng_container_0_ng_container_18_p_1_Template","EditDeviceComponent_ng_container_0_ng_container_18_p_2_Template","errors_r12","email","platform_r17","EditDeviceComponent_ng_container_0_ng_container_24_p_1_Template","errors_r18","EditDeviceComponent_ng_container_0_ng_container_8_Template","EditDeviceComponent_ng_container_0_ng_template_13_Template","EditDeviceComponent_ng_container_0_ng_container_18_Template","EditDeviceComponent_ng_container_0_option_23_Template","EditDeviceComponent_ng_container_0_ng_container_24_Template","_r22","ctx_r21","addDevice","settingsForm","tmp_2_0","errors","tmp_7_0","tmp_8_0","tmp_10_0","tmp_12_0","dirty","EditDeviceComponent","deviceService","deviceAdded","deviceUpdated","addControl","device","Validators","emailAddress","platform","changes","markAsPristine","createDevice","updateDevice","EditDeviceComponent_ng_container_0_Template","device_r6","deleteDevice","ctx_r9","editDevice","_r2","toggle","addDeviceIsCollapsed","ctx_r14","loadDevices","ManageDevicesComponent_ng_container_0_p_18_Template","ManageDevicesComponent_ng_container_0_ng_container_19_Template","devices","ManageDevicesComponent","onDestroy","Subject","ngOnDestroy","next","complete","getDevices","index","splice","ManageDevicesComponent_ng_container_0_Template","NgbCollapse","SentenceCasePipe","SiteThemeProviderPipe","ThemeProvider","System","User","scan","_r13","theme_r9","ctx_r11","updateDefault","isDefault","ThemeManagerComponent_ng_container_0_ng_container_11_button_9_Template","applyTheme","currentTheme","ThemeManagerComponent_ng_container_0_div_6_Template","ThemeManagerComponent_ng_container_0_p_7_Template","ThemeManagerComponent_ng_container_0_ng_container_11_Template","themeService","themes$","ThemeManagerComponent","translocService","currentTheme$","distinctUntilChanged","theme","pref","assign","preferences","updatePreferences","updatedPref","setTheme","setDefault","info","ThemeManagerComponent_ng_container_0_Template","ColorPickerComponent_div_2_Template","ctx_r1","cpUsePosition","cpArrowPosition","arrowTop","ColorPickerComponent_div_3_Template","_r19","onColorChange","ctx_r20","onDragStart","onDragEnd","hueSliderColor","slider","v","s","ColorPickerComponent__svg_svg_8_Template","ColorPickerComponent_button_9_Template","onAddPresetColor","selectedColor","cpAddColorButtonClass","cpPresetColors","cpMaxPresetColorsLength","cpAddColorButtonText","ColorPickerComponent_div_11_Template","ColorPickerComponent_div_21_input_6_Template","_r27","ctx_r26","onAcceptColor","ctx_r28","onAlphaInput","cmykText","ColorPickerComponent_div_21_div_16_Template","ColorPickerComponent_div_21_Template","_r30","ctx_r29","ctx_r31","onCyanInput","ctx_r32","ctx_r33","onMagentaInput","ctx_r34","ctx_r35","onYellowInput","ctx_r36","ctx_r37","onBlackInput","c","m","y","k","cpAlphaChannel","ColorPickerComponent_div_22_input_5_Template","_r41","ctx_r40","ctx_r42","ctx_r38","hslaText","ColorPickerComponent_div_22_div_13_Template","ColorPickerComponent_div_22_Template","_r44","ctx_r43","ctx_r45","onHueInput","ctx_r46","ctx_r47","onSaturationInput","ctx_r48","ctx_r49","onLightnessInput","h","ColorPickerComponent_div_23_input_5_Template","_r53","ctx_r52","ctx_r54","ctx_r50","rgbaText","ColorPickerComponent_div_23_div_13_Template","ColorPickerComponent_div_23_Template","_r56","ctx_r55","ctx_r57","onRedInput","ctx_r58","ctx_r59","onGreenInput","ctx_r60","ctx_r61","onBlueInput","g","ColorPickerComponent_div_24_input_3_Template","_r65","ctx_r64","ctx_r66","ctx_r62","hexAlpha","ColorPickerComponent_div_24_div_7_Template","ColorPickerComponent_div_24_Template","_r68","ctx_r67","onHexInput","ctx_r69","ctx_r70","ctx_r12","hexText","ColorPickerComponent_div_25_input_3_Template","_r73","ctx_r72","ctx_r74","ctx_r71","ColorPickerComponent_div_25_Template","_r76","ctx_r75","ctx_r77","onValueInput","ColorPickerComponent_div_26_Template","_r79","ctx_r78","onFormatToggle","ctx_r80","ColorPickerComponent_div_27_div_4_div_1_span_1_Template","_r88","color_r84","ctx_r86","onRemovePresetColor","ctx_r85","cpRemoveColorButtonClass","ColorPickerComponent_div_27_div_4_div_1_Template","_r90","ctx_r89","setColorFromString","ctx_r83","cpAddColorButton","ColorPickerComponent_div_27_div_4_Template","ctx_r81","cpPresetColorsClass","ColorPickerComponent_div_27_div_5_Template","ctx_r82","cpPresetEmptyMessageClass","cpPresetEmptyMessage","ColorPickerComponent_div_27_Template","cpPresetLabel","ColorPickerComponent_div_28_button_1_Template","_r94","ctx_r93","onCancelColor","ctx_r91","cpCancelButtonClass","cpCancelButtonText","ColorPickerComponent_div_28_button_2_Template","_r96","ctx_r95","ctx_r92","cpOKButtonClass","cpOKButtonText","ColorPickerComponent_div_28_Template","cpCancelButton","cpOKButton","ColorPickerComponent_div_29_ng_container_1_Template","ColorPickerComponent_div_29_Template","cpExtraTemplate","ColorFormats","HEX","RGBA","HSLA","CMYK","Rgba","Hsva","Hsla","Cmyk","TextDirective","newValue","inputChange","target","rg","numeric","ɵdir","type","SliderDirective","elRef","dragEnd","dragStart","listenerMove","move","listenerStop","stop","mouseDown","start","touchStart","preventDefault","setCursor","addEventListener","removeEventListener","getX","getBoundingClientRect","pageX","touches","window","pageXOffset","getY","pageY","pageYOffset","width","offsetWidth","height","offsetHeight","x","Math","max","min","rgX","rgY","SliderPosition","SliderDimension","ColorPickerService","active","setActive","cpDialogDisplay","closeDialog","hsva2hsla","hsva","abs","hsla2hsva","hsla","hsvaToRgba","i","floor","f","p","q","cmykToRgb","cmyk","rgbaToCmyk","rgba","rgbaToHsva","rgbaToHex","allowHex8","hex","toString","substr","round","normalizeCMYK","denormalizeCMYK","denormalizeRGBA","stringToHsva","colorString","stringParsers","re","parse","execResult","isNaN","parser","match","exec","color","outputFormat","alphaChannel","SUPPORTS_TOUCH","ColorPickerComponent","ngZone","platformId","service","isIE10","dialogArrowSize","dialogArrowOffset","dialogInputFields","useRootViewContainer","eyeDropperSupported","isPlatformBrowser","defaultView","handleEsc","handleEnter","sliderDimMax","hueSlider","cpWidth","alphaSlider","cpCmykEnabled","cpOutputFormat","listenerMouseDown","onMouseDown","listenerResize","onResize","openDialog","initialColor","ngAfterViewInit","updateColorPicker","detectChanges","directiveElementRef","setInitialColor","openColorPicker","closeColorPicker","setupDialog","instance","elementRef","cpHeight","cpFallbackColor","cpColorMode","cpDisableInput","cpIgnoredElements","cpSaveClickOutside","cpCloseClickOutside","cpUseRootViewContainer","cpPosition","cpPositionOffset","cpPositionRelativeToArrow","cpEyeDropper","cpTriggerElement","setColorMode","detectIE","ua","navigator","userAgent","msie","substring","directiveInstance","fallbackColor","setPresetConfig","mode","toUpperCase","update","sliderH","setDialogPosition","sliderDragEnd","outputColor","sliderDragStart","isDescendant","run","colorSelected","cmykChanged","cmykColor","colorChanged","colorCanceled","onEyeDropper","EyeDropper","then","eyeDropperResult","sRGBHex","change","availableFormats","nextFormat","sliderChanged","onHueChange","onValueChange","onAlphaChange","validHex","valid","test","inputChanged","input","concat","presetColorsChanged","hidden","setTimeout","stateChanged","runOutsideAngular","destroyed","cmykInput","hue","lastOutput","alphaSliderColor","alpha","parentNode","transformNode","node","dialogHeight","dialogElement","tagName","getComputedStyle","getPropertyValue","boxDirective","createDialogBox","HTMLUnknownElement","boxParent","usePosition","dialogBounds","windowInnerHeight","innerHeight","windowInnerWidth","innerWidth","elRefClientRect","calculateAutoPositioning","elBounds","triggerElBounds","usePositionX","usePositionY","bottom","right","collisionTop","collisionBottom","documentElement","clientHeight","collisionLeft","collisionRight","clientWidth","prev","parent","child","element","offset","PLATFORM_ID","ɵcmp","_t","first","dependencies","encapsulation","ColorPickerDirective","injector","cfr","appRef","vcRef","_service","dialogCreated","ignoreChanges","viewAttachedToAppRef","cpToggle","cpDisabled","cpInputChange","cpToggleChange","cpSliderChange","cpSliderDragEnd","cpSliderDragStart","colorPickerOpen","colorPickerClose","colorPickerCancel","colorPickerSelect","colorPickerChange","cpCmykColorChange","cpPresetColorsChange","inputFocus","handleFocus","handleInput","cmpRef","detachView","hostView","dialog","currentValue","colorPicker","changeDetectorRef","appInstance","componentTypes","Injector","NULL","viewContainerRef","compFactory","resolveComponentFactory","create","attachView","rootNodes","providers","createComponent","state","ignore","ignored","exportAs","ColorPickerModule","ɵmod","ɵinj","imports","AnilistKeyComponent_ng_container_0_ng_container_11_ng_template_4_ng_container_0_i_3_Template","tokenExpired","AnilistKeyComponent_ng_container_0_ng_container_11_ng_template_4_ng_container_0_Template","AnilistKeyComponent_ng_container_0_ng_container_11_ng_template_4_ng_template_1_Template","ctx_r6","_r9","AnilistKeyComponent_ng_container_0_ng_container_11_ng_container_3_Template","AnilistKeyComponent_ng_container_0_ng_container_11_ng_template_4_Template","hasValidLicense","toggleViewMode","AnilistKeyComponent_ng_container_0_ng_container_11_Template","isViewMode","saveForm","AnilistKeyComponent","hasExpired","resetForm","AnilistKeyComponent_ng_container_0_Template","NgOptimizedImage","_r7","ChangeAgeRestrictionComponent_ng_container_0_ng_container_11_ng_container_5_Template","updateRestrictionSelection","ChangeAgeRestrictionComponent_ng_container_0_button_9_Template","ChangeAgeRestrictionComponent_ng_container_0_ng_container_11_Template","ChangeAgeRestrictionComponent_ng_container_0_ng_container_14_Template","hasChangeAgeRestrictionAbility","ChangeAgeRestrictionComponent","originalRestriction","hasChangeAgeRestrictionRole","restriction","selectedRestriction","updateAgeRestriction","err","ChangeAgeRestrictionComponent_ng_container_0_Template","error_r15","ChangePasswordComponent_ng_container_0_div_15_div_1_Template","resetPasswordErrors","ChangePasswordComponent_ng_container_0_div_21_div_1_Template","passwordChangeForm","ChangePasswordComponent_ng_container_0_div_26_div_1_Template","password","ChangePasswordComponent_ng_container_0_div_31_div_1_Template","ChangePasswordComponent_ng_container_0_div_31_div_2_Template","passwordsMatch","confirmPassword","ChangePasswordComponent_ng_container_0_button_9_Template","ChangePasswordComponent_ng_container_0_ng_container_11_Template","_r26","ChangePasswordComponent_ng_container_0_div_15_Template","ChangePasswordComponent_ng_container_0_div_21_Template","ChangePasswordComponent_ng_container_0_div_26_Template","ChangePasswordComponent_ng_container_0_div_31_Template","ctx_r27","resetPasswordForm","savePasswordForm","ChangePasswordComponent_ng_container_0_ng_template_37_Template","hasChangePasswordAbility","tmp_13_0","ChangePasswordComponent","observableHandles","hasChangePasswordRole","values","forEach","o","unsubscribe","model","resetPassword","oldPassword","ChangePasswordComponent_ng_container_0_Template","error_r13","ChangeEmailComponent_ng_container_0_div_16_div_1_Template","ChangeEmailComponent_ng_container_0_div_22_div_1_Template","form","ChangeEmailComponent_ng_container_0_div_27_div_1_Template","emailLink","makeLink","ChangeEmailComponent_ng_container_0_ng_container_8_Template","_r21","ChangeEmailComponent_ng_container_0_ng_container_12_Template","ChangeEmailComponent_ng_container_0_div_16_Template","ChangeEmailComponent_ng_container_0_div_22_Template","ChangeEmailComponent_ng_container_0_div_27_Template","ctx_r23","ChangeEmailComponent_ng_container_0_ng_container_33_Template","ChangeEmailComponent_ng_container_0_ng_template_34_Template","emailConfirmed","tmp_11_0","ChangeEmailComponent","isEmailConfirmed","confirmed","updateEmail","updateEmailResponse","emailSent","hadNoExistingEmail","ChangeEmailComponent_ng_container_0_Template","LocalizationService","getLocales","opt_r35","opt_r37","isoCode","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_9_ng_template_5_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_9_option_10_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_9_ng_template_15_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_9_option_20_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_9_ng_template_28_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_9_ng_template_39_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_9_ng_template_50_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_9_ng_template_61_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_9_ng_template_72_Template","save","_r18","pageLayoutModesTranslated","locales","_r24","_r28","_r32","opt_r59","opt_r61","opt_r63","opt_r64","opt_r69","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_div_38_ng_template_4_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_div_38_option_9_Template","layoutModesTranslated","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_ng_template_5_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_option_10_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_ng_template_15_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_option_20_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_ng_template_26_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_option_31_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_option_36_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_div_38_Template","_r72","handleBackgroundColorChange","ctx_r73","backgroundColor","_r47","readingDirectionsTranslated","_r50","scalingOptionsTranslated","pageSplitOptionsTranslated","readingModesTranslated","opt_r103","opt_r105","opt_r107","opt_r109","opt_r111","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_ng_template_9_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_ng_template_21_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_ng_template_30_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_option_35_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_ng_template_40_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_option_45_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_ng_template_51_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_option_56_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_ng_template_61_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_option_66_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_ng_template_72_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_option_77_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_ng_template_90_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_ng_template_102_Template","_r115","ctx_r114","ctx_r116","_r77","_r81","_r84","fontFamilies","_r87","bookWritingStylesTranslated","bookLayoutModesTranslated","_r93","bookColorThemesTranslated","tmp_29_0","tmp_33_0","_r98","tmp_37_0","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_9_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_16_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_ng_template_23_Template","AccordionPanelID","GlobalSettings","isExpanded","ImageReader","BookReader","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_form_3_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_2_div_1_Template","opdsEnabled","makeUrl","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_0_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_1_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_2_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_3_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_4_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_5_Template","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_ng_container_6_Template","tab_r4","fragment","FragmentID","Account","Preferences","Clients","Theme","Devices","Stats","Scrobbling","UserPreferencesComponent_ng_container_0_li_7_ng_template_3_Template","_r126","ctx_r125","UserPreferencesComponent_ng_container_0_li_7_Template","tabs","UserPreferencesComponent","bookService","titleService","route","settingsService","router","localizationService","translatePrefOptions","bookColorThemes","translationKey","opdsUrl","trasnlocoService","getFontFamilies","getOpdsUrl","frag","tab","getOpdsEnabled","setTitle","forkJoin","getPreferences","results","bookReaderFontFamily","readingDirection","scalingOption","pageSplitOption","autoCloseMenu","showScreenHints","readerMode","layoutMode","emulateBook","swipeToPaginate","bookReaderFontSize","bookReaderLineSpacing","bookReaderMargin","bookReaderReadingDirection","bookReaderWritingStyle","bookReaderTapToPaginate","bookReaderLayoutMode","bookReaderThemeName","bookReaderImmersiveMode","globalPageLayoutMode","blurUnreadSummaries","promptForDownloadSize","noTransitions","collapseSeriesRelationships","shareReviews","navigateByUrl","modelSettings","updatedPrefs","markAsDirty","markAsTouched","i6","i7","UserPreferencesComponent_ng_container_0_Template","SideNavCompanionBarComponent","NgbNav","NgbNavItem","NgbNavItemRole","NgbNavLink","RouterLink","NgbNavContent","i8","NgbAccordionDirective","NgbAccordionItem","NgbAccordionHeader","NgbAccordionButton","NgbAccordionCollapse","NgbAccordionBody","i9","NgbNavOutlet","routes","path","component","pathMatch","runGuardsAndResolvers","canActivate","AuthGuard","children","UserSettingsRoutingModule","oAB","cJS","RouterModule","forChild","UserSettingsModule","NgbNavModule","NgbTooltipModule","NgbCollapseModule","LoadingComponent","copyBuffer","cur","Buffer","from","buffer","slice","byteOffset","module","exports","rfdc","opts","circles","rfdcCircles","refs","refsNew","proto","cloneProto","Array","isArray","cloneArray","Map","Set","o2","ArrayBuffer","isView","pop","clone","call","fn","a2","none","selector","querySelector","empty","selectorAll","querySelectorAll","matcher","matches","childMatcher","find","prototype","childFirst","firstElementChild","sparse","EnterNode","datum","ownerDocument","namespaceURI","_next","_parent","__data__","bindIndex","group","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","has","set","arraylike","ascending","NaN","insertBefore","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","apply","arguments","attrFunctionNS","src_window","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","propertyRemove","propertyConstant","propertyFunction","classArray","string","trim","classList","ClassList","_node","_names","getAttribute","classedAdd","list","n","add","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","createElementNS","creatorFixed","creator","constantNull","removeChild","selection_cloneShallow","cloneNode","selection_cloneDeep","onRemove","typename","on","__on","j","listener","onAdd","contextListener","dispatchEvent","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","contains","root","Selection","groups","parents","_groups","_parents","selection","selection_select","subgroups","subnode","subgroup","arrayAll","array","selectChild","childFind","selectChildren","childrenFilter","selection_filter","bind","src_constant","constant","enterGroup","updateGroup","previous","_enter","_exit","onenter","onupdate","onexit","append","merge","order","context","groups0","groups1","m0","merges","group0","group1","selection_selection","compareDocumentPosition","compareNode","sortgroups","sortgroup","callback","nodes","size","selection_empty","each","attr","getAttributeNS","selection_style","property","classed","selection_text","html","selection_raise","selection_lower","insert","before","selection_remove","deep","selection_datum","typenames","parseTypenames","dispatch","Symbol","iterator","src_selection","src_select","noop","Error","Dispatch","T","types","that","args","src_dispatch","nonpassivecapture","capture","passive","noevent","stopImmediatePropagation","src_define","extend","definition","Color","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgbConvert","rgb_formatHex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","basis","t1","v0","v3","t2","t3","define","channels","displayable","formatHex8","color_formatHex8","formatHsl","color_formatHsl","pow","darker","clamp","rgb_formatHex8","hsl","d3_interpolate_src_constant","nogamma","linear","rgbGamma","gamma","exponential","end","colorRgb","rgbSpline","spline","colors","genericArray","nb","na","date","setTime","src_number","object","src_basis","basisClosed","reA","reB","source","am","bm","bs","bi","lastIndex","number","one","zero","src_numberArray","isNumberArray","DataView","numberArray","valueOf","pointer","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","clientLeft","clientTop","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","nap","t0","Infinity","sleep","poke","clearTimeout","clearInterval","setInterval","src_timeout","elapsed","TypeError","emptyOn","emptyTween","CREATED","STARTING","STARTED","ENDING","ENDED","schedule","timing","schedules","__transition","self","tween","tick","duration","ease","init","interrupt","svgNode","degrees","PI","identity","translateX","translateY","skewX","scaleX","scaleY","decompose","sqrt","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","scale","interpolateTransformCss","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","interpolateTransformSvg","parseSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","transition_interpolate","interpolateNumber","interpolateRgb","interpolateString","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","transition_select","transition_selectAll","inherit","transition_filter","transition_merge","transition_selection","transition_transition","id0","id1","transition_on","onFunction","on0","on1","sit","every","transition_attr","transition_attrTween","transition_style","styleTween","styleNull","styleMaybeRemove","listener0","transition_styleTween","styleInterpolate","transition_text","textTween","transition_textTween","textInterpolate","transition_remove","removeFunction","easeConstant","easeVarying","transition_easeVarying","Promise","resolve","reject","cancel","defaultTiming","cubicInOut","selection_interrupt","selection_transition","d3_brush_src_constant","BrushEvent","defineProperties","enumerable","configurable","src_noevent","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","brush_max","number1","number2","X","handles","output","xy","Y","cursors","overlay","w","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultFilter","ctrlKey","button","defaultExtent","hasAttribute","viewBox","defaultTouchable","maxTouchPoints","__brush","descending","bisector","compare1","compare2","delta","lo","hi","mid","center","e10","e5","e2","tickSpec","step","power","log10","error","factor","inc","tickIncrement","tickStep","reverse","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","timeInterval","floori","offseti","ceil","d0","d1","range","isFinite","millisecond","second","getMilliseconds","getUTCSeconds","timeMinute","getSeconds","getMinutes","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","getHours","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","unixDay","setUTCHours","setUTCDate","getUTCDate","timeWeekday","timeSunday","utcWeekday","getUTCDay","utcSunday","timeMonth","setMonth","getMonth","getFullYear","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","year","week","hour","minute","tickIntervals","tickInterval","ticks","utcTicks","utcTickInterval","timeTicks","timeTickInterval","newInterval","utcMonday","utcThursday","src_utcDay","weekday","sunday","monday","thursday","src_day","src_year","src_utcYear","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","pads","numberRe","percentRe","requoteRe","pad","fill","sign","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","timeThursday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","timeMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","z","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","utcDay","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","defaultLocale","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formatShortWeekday","A","formatWeekday","formatShortMonth","B","formatMonth","I","formatPeriod","formatQuarter","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCPeriod","formatUTCQuarter","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseSpecifier","parsePeriod","parseLocaleDate","parseLocaleTime","newFormat","specifier","charCodeAt","charAt","newParse","utcFormat","utcParse","bisectRight","bisect","unit","normalize","constants","bimap","domain","r0","r1","polymap","unknown","continuous","transformer","untransform","piecewise","interpolateValue","rescale","clamper","invert","rangeRound","interpolateRound","initRange","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","tickFormat","nice","x0","x1","timeWeek","timeSecond","prefixExponent","formatSpecifier","FormatSpecifier","align","symbol","comma","precision","formatDecimalParts","toExponential","coefficient","exponent","formatRounded","formatTypes","%","formatDecimal","toLocaleString","toPrecision","formatPrefixAuto","src_identity","formatPrefix","prefixes","linearish","precisionPrefix","precisionRound","precisionFixed","prestep","maxIter","src_locale","grouping","thousands","formatGroup","Number","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","String","percent","minus","nan","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","out","padding","InternMap","entries","keyof","super","_intern","_key","intern_get","intern_set","intern_delete","implicit","ordinal","band","bandwidth","ordinalRange","paddingInner","paddingOuter","sequence","pointish","quantileSorted","valueof","value0","quantile","thresholds","threshold","invertExtent","quantiles","d3_shape_src_array","d3_shape_src_constant","Linear","_context","curve_linear","areaStart","_line","areaEnd","lineStart","_point","lineEnd","closePath","lineTo","moveTo","pi","tau","epsilon","tauEpsilon","strings","Path","digits","_x0","_y0","_x1","_y1","_append","appendRound","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","withPath","shape","RangeError","src_line","defined","curve","curveLinear","line","defined0","pointX","pointY","src_area","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","cornerRadius","padRadius","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","intersect","x3","y3","x32","y32","ax","ay","bx","by","kc","lc","centroid","src_descending","d3_shape_src_identity","TooltipContentComponent_span_4_ng_template_1_Template","TooltipContentComponent_span_4_Template","TooltipContentComponent_span_5_Template","LegendComponent_header_1_Template","LegendComponent_li_4_Template","_r4","labelClick","activate","deactivate","entry_r2","formattedLabel","isActive","ChartComponent_ngx_charts_scale_legend_3_Template","legendOptions","LegendPosition","Below","legendWidth","ChartComponent_ngx_charts_legend_4_Template","legendLabelClick","legendLabelActivate","legendLabelDeactivate","activeEntries","_c3","_c4","_c5","XAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_container_4_Template","XAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_template_5__svg_ng_container_0__svg_tspan_1_Template","tickLine_r14","XAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_template_5__svg_ng_container_0_Template","tickLines_r12","ngIf","XAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_template_5_Template","tick_r3","tickChunks","XAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_template_7_Template","tickFormatted_r5","tickTrim","XAxisTicksComponent__svg_g_2__svg_ng_container_1_Template","textAnchor","textTransform","isWrapTicksSupported","XAxisTicksComponent__svg_g_2_Template","tickTransform","XAxisTicksComponent__svg_g_3__svg_g_1_Template","ctx_r19","gridLineTransform","gridLineHeight","XAxisTicksComponent__svg_g_3_Template","tick_r18","showGridLines","_c6","XAxisComponent__svg_g_1_Template","emitTicksHeight","trimTicks","rotateTicks","maxTickLength","tickFormatting","tickArguments","tickStroke","xScale","xOrient","dims","wrapTicks","XAxisComponent__svg_g_2_Template","labelText","labelOffset","orientation","Bottom","_c7","YAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_container_4_Template","YAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_template_5__svg_ng_container_0__svg_ng_container_1__svg_tspan_1_Template","tickLine_r17","i_r18","tickSpacing","YAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_template_5__svg_ng_container_0__svg_ng_container_1_Template","tickLines_r14","YAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_template_5__svg_ng_container_0_Template","YAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_template_5_Template","tick_r5","YAxisTicksComponent__svg_g_2__svg_ng_container_1__svg_ng_template_7_Template","tickFormatted_r7","YAxisTicksComponent__svg_g_2__svg_ng_container_1_Template","YAxisTicksComponent__svg_g_2_Template","YAxisTicksComponent__svg_path_3_Template","referenceAreaPath","YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_1_Template","gridLineWidth","YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_2_Template","YAxisTicksComponent__svg_g_4__svg_g_1_Template","orient","Orientation","Left","Right","YAxisTicksComponent__svg_g_4_Template","tick_r22","YAxisTicksComponent__svg_g_5__svg_g_1__svg_g_2_Template","refLine_r26","YAxisTicksComponent__svg_g_5__svg_g_1_Template","showRefLabels","YAxisTicksComponent__svg_g_5_Template","showRefLines","_c8","YAxisComponent__svg_g_1_Template","emitTicksWidth","yScale","yOrient","referenceLines","YAxisComponent__svg_g_2_Template","_c9","SvgLinearGradientComponent__svg_stop_1_Template","stop_r1","_c10","_c11","CircleSeriesComponent__svg_g_0__svg_rect_3_Template","circle","radius","gradientFill","CircleSeriesComponent__svg_g_0__svg_rect_4_Template","_c12","CircleSeriesComponent__svg_g_0_Template","onClick","activateCircle","deactivateCircle","barOrientation","gradientId","gradientStops","isSSR","barVisible","classNames","tooltipDisabled","placementTypes","Top","styleTypes","tooltip","tooltipTemplate","getTooltipText","_c15","SvgRadialGradientComponent__svg_stop_1_Template","_c16","AreaComponent__svg_defs_0_Template","_c17","_c18","_c19","TooltipArea__svg_ng_template_2__xhtml_div_1_Template","tooltipItem_r5","getToolTipText","TooltipArea__svg_ng_template_2_Template","model_r3","_c20","AdvancedLegendComponent_div_1_Template","roundedTotal","valueFormatting","AdvancedLegendComponent_div_2_Template","defaultValueFormatting","AdvancedLegendComponent_div_7_div_2_Template","legendItem_r3","AdvancedLegendComponent_div_7_div_3_Template","AdvancedLegendComponent_div_7_div_6_Template","percentage","AdvancedLegendComponent_div_7_div_7_Template","AdvancedLegendComponent_div_7_Template","animations","displayLabel","_c22","_c23","_c24","_c25","_c26","BarComponent__svg_defs_0_Template","_c27","_c29","SeriesVerticalComponent__svg_g_0__svg_g_1_Template","bar_r4","roundEdges","gradient","ariaLabel","tooltipPlacement","tooltipType","noBarWhenZero","SeriesVerticalComponent__svg_g_0_Template","bars","trackBy","SeriesVerticalComponent__svg_g_1__svg_g_1_Template","bar_r10","SeriesVerticalComponent__svg_g_1_Template","SeriesVerticalComponent__svg_g_2__svg_g_1_Template","i_r17","dataLabelHeightChanged","b_r16","total","dataLabelFormatting","SeriesVerticalComponent__svg_g_2_Template","barsForDataLabels","trackDataLabelBy","BarVerticalComponent__svg_g_2_Template","updateXAxisHeight","showXAxisLabel","xAxisLabel","trimXAxisTicks","rotateXAxisTicks","maxXAxisTickLength","xAxisTickFormatting","xAxisTicks","dataLabelMaxHeight","negative","BarVerticalComponent__svg_g_3_Template","updateYAxisWidth","showYAxisLabel","yAxisLabel","trimYAxisTicks","maxYAxisTickLength","yAxisTickFormatting","yAxisTicks","_c36","LineComponent__svg_g_0_Template","initialPath","stroke","LineComponent__svg_g_1_Template","_c37","LineSeriesComponent__svg_g_2_Template","LineSeriesComponent__svg_g_5_Template","isInactive","outerPath","hasGradient","gradientUrl","getColor","rangeFillOpacity","LineChartComponent__svg_g_5_Template","LineChartComponent__svg_g_6_Template","LineChartComponent__svg_g_8__svg_g_1_Template","series_r11","scaleType","hasRange","LineChartComponent__svg_g_8_Template","LineChartComponent__svg_g_9__svg_g_1_Template","series_r13","LineChartComponent__svg_g_9_Template","LineChartComponent__svg_g_10__svg_g_2_Template","onActivate","onDeactivate","series_r15","hoveredVertical","LineChartComponent__svg_g_10_Template","hideCircles","updateHoveredVertical","xSet","seriesTooltipTemplate","LineChartComponent__svg_g_11__svg_g_1_Template","series_r24","timelineXScale","timelineYScale","LineChartComponent__svg_g_11_Template","updateDomain","timelineWidth","timelineHeight","scheme","customColors","legend","timelineTransform","_c38","_c40","PieArcComponent__svg_defs_1_Template","radialGradientId","startOpacity","_c41","PieSeriesComponent__svg_g_0__svg_g_1_Template","arc_r1","trimLabels","maxLabelLength","explodeSlices","PieSeriesComponent__svg_g_0_Template","dblclick","labelVisible","getTooltipTitle","throttle","func","wait","later","leading","remaining","trailing","throttleable","descriptor","defineProperty","PlacementTypes","Center","verticalPosition","elDimensions","popoverDimensions","alignment","horizontalPosition","PositionHelper","static","caretDimensions","popoverPosition","placement","spacing","flip","elmDim","hostDim","calculateVerticalCaret","calculateHorizontalCaret","calculateVerticalAlignment","calculateHorizontalAlignment","shouldFlip","TooltipContentComponent","renderer","cssClasses","clz","cssClass","nativeElm","host","checkFlip","positionContent","showCaret","positionCaret","addClass","setStyle","caretElm","determinePlacement","onWindowResize","__decorate","InjectionRegisteryService","injectionService","defaults","components","getByType","bindings","createByType","assignDefaults","injectComponent","register","compsByType","componentType","idx","destroyAll","destroyByType","comps","appendComponent","InjectionService","applicationRef","componentFactoryResolver","container","globalRootViewContainer","getRootViewContainer","_container","setRootViewContainer","getComponentRootNode","isViewContainerRef","location","getRootViewContainerNode","projectComponentBindings","bindingKeys","getOwnPropertyNames","bindingName","eventKeys","eventName","componentClass","appendLocation","portalHost","DomPortalOutlet","portal","ComponentPortal","componentRef","attach","TooltipService","LegendType","ScaleLegend","Legend","ScaleType","Time","Ordinal","Quantile","ScaleLegendComponent","horizontal","gradientValues","gradientString","splits","pairs","valueRange","formatLabel","escapeLabel","LegendEntryComponent","trimmedLabel","onMouseEnter","onMouseLeave","LegendComponent","cd","labelActivate","labelDeactivate","legendEntries","getLegendEntries","findIndex","ChartComponent","legendColumns","legendType","getLegendType","chartWidth","VisibilityObserver","zone","visible","isVisible","runCheck","onVisibilityChange","check","isDate","BaseChartComponent","chartElement","schemeType","isPlatformServer","bindWindowResizeEvent","visibilityObserver","unbindEvents","cloneData","getContainerDims","hostElem","formatDates","resizeSubscription","subscription","fromEvent","seriesItem","seriesItemCopy","extra","JSON","stringify","AxisLabelComponent","textHeight","margin","strokeWidth","attrs","trimLabel","reduceTicks","maxTicks","reduced","modulus","getTickLines","maxLength","maxLines","labelString","totalLines","lines","last","startIndex","TextAnchor","Start","Middle","End","XAxisTicksComponent","dimensionsChanged","verticalSpacing","rotateLabels","innerTickSize","outerTickSize","tickPadding","maxTicksLength","maxAllowedLength","approxHeight","maxPossibleLengthForTickIfWrapped","updateDims","ticksElement","getTicks","angle","getRotationAngle","adjustedScale","tickLength","wordWidth","baseWidth","maxBaseWidth","labelHeight","longestTick","earlier","current","getMaxPossibleLengthForTick","requiredHeight","getMaxTicks","maxScaleTicks","tickValues","tickWidth","longestLabel","maxCharacters","averageCharacterWidth","truncatedText","maxAllowedLines","possibleStringLength","XAxisComponent","xAxisOffset","xAxisClassName","xAxisTickCount","newLabelOffset","ticksComponent","showLabel","roundedRect","tl","tr","bl","br","retval","YAxisTicksComponent","referenceLineLength","getApproximateAxisWidth","positionMiddle","chunksLength","availableFreeSpace","setReferencelines","refMin","refMax","tickHeight","preferredWidth","YAxisComponent","yAxisOffset","yAxisClassName","yAxisTickCount","AxesModule","StyleTypes","popover","ShowTypes","all","mouseover","TooltipDirective","tooltipService","tooltipCssClass","tooltipAppendToBody","tooltipSpacing","tooltipShowCaret","tooltipAlignment","tooltipCloseOnClickOutside","tooltipCloseOnMouseLeave","tooltipHideTimeout","tooltipShowTimeout","tooltipShowEvent","tooltipImmediateExit","hide","listensForFocus","listensForHover","hideTooltip","onFocus","showTooltip","onBlur","onMouseClick","immediate","createBoundOptions","addHideListeners","mouseEnterContentEvent","listen","mouseLeaveContentEvent","documentClickEvent","destroyFn","tooltipTitle","tooltipContext","TooltipModule","cache","random","BarOrientation","SvgLinearGradientComponent","stops","CircleComponent","circleOpacity","pointerEvents","SeriesType","Standard","Stacked","CircleSeriesComponent","getActiveCircle","indexActiveDataPoint","visibleValue","mapDataPointToCircle","tooltipLabel","getGradientStops","getTooltipMinMaxText","animation","trigger","animate","SvgRadialGradientComponent","endOpacity","stopsInput","stopsDefault","AreaComponent","animationsLoaded","loadAnimation","getGradient","updatePathEl","areaPath","startingPath","easeOutExpo","countFrom","countTo","countDecimals","countDuration","startVal","endVal","countDown","decimals","dec","startTime","runCount","timestamp","frameVal","progress","finished","CountUpDirective","countPrefix","countSuffix","countChange","countFinish","_countDecimals","_countTo","_countFrom","decimalChecker","cancelAnimationFrame","animationReq","global","MouseEvent","createMouseEvent","TooltipArea","anchorOpacity","anchorPos","anchorValues","showPercentage","hover","getValues","xVal","groupName","mouseMove","xPos","closestIndex","findClosestPointIndex","closestPoint","lastAnchorPos","ev","tooltipAnchor","minIndex","maxIndex","minDiff","MAX_VALUE","currentIndex","currentElement","curDiff","tooltipItem","_r0","Timeline","onDomainChange","initialized","addBrush","getDims","offsetY","xDomain","getXDomain","getXScale","brush","updateBrush","filterId","scaleTime","scaleLinear","scalePoint","brushX","dim","touchending","extent","touchable","listeners","handleSize","initialize","handle","redraw","started","touchmoved","touchended","emitter","clean","Emitter","w0","w1","n0","n1","e0","e1","s0","s1","moving","lockX","lockY","metaKey","altKey","signX","signY","N","E","shifting","shiftKey","points","identifier","point0","beforestart","pts","moved","ended","keydowned","keyCode","keyupped","nodrag","__noselect","MozUserSelect","dragDisable","changedTouches","nopropagation","yesdrag","noclick","dragEnable","selection0","selection1","clear","starting","keyModifiers","newDomain","autoScale","AdvancedLegendComponent","legendItems","labelFormatting","percentageFormatting","getTotal","sum","getLegendItems","origialLabel","ChartCommonModule","calculateViewDimensions","margins","showXAxis","showYAxis","xAxisHeight","yAxisWidth","showXLabel","showYLabel","legendPosition","columns","xOffset","chartHeight","colorSets","selectable","ColorHelper","cs","colorDomain","generateColorScheme","colorScale","scaleQuantile","scaleOrdinal","valueScale","formattedValue","found","mapping","getLinearGradientStops","colorValueScale","scaleBand","endColor","startColor","currentVal","originalOffset","BarComponent","hideBar","checkToHideBar","getStartingPath","getPath","getStartOpacity","getRadius","edges","BarChartType","Normalized","D0Types","positive","BarLabelComponent","horizontalPadding","verticalPadding","getSize","formatedValue","barX","barWidth","barY","barHeight","SeriesVerticalComponent","showDataLabel","updateTooltipSettings","yScaleMin","d0Type","getLabel","bar","offset0","offset1","updateDataLabels","section","totalPositive","totalNegative","dataItem","barLabel","BarVerticalComponent","legendTitle","barPadding","roundDomains","xAxis","yAxis","getYScale","setColors","getLegendOptions","yDomain","getYDomain","some","yScaleMax","onDataLabelMaxHeightChanged","fromLegend","ɵBarVerticalComponent_BaseFactory","contentQueries","dirIndex","LineComponent","strokeDasharray","strokeDashoffset","LineSeriesComponent","updateGradients","sortData","lineGen","getLineGenerator","areaGen","getAreaGenerator","getRangeGenerator","sortLinear","sortByTime","aDate","getTime","bDate","sortByDomain","bVal","aIdx","bIdx","areaGradientStops","LineChartComponent","timelinePadding","timeline","filteredDomain","seriesDomain","getSeriesDomain","updateTimeline","clipPathId","clipPath","timelineXDomain","getUniqueXDomainValues","valueSet","getScaleType","checkDateType","xScaleMin","xScaleMax","deactivateAll","ɵLineChartComponent_BaseFactory","PieLabelComponent","labelTrim","labelTrimSize","setTransforms","styleTransform","textX","textY","attrTransform","textTransition","isIE","startRadius","innerPos","pos","midAngle","PieArcComponent","getPointerEvents","calc","calculateArc","updateAnimation","_current","copyOfD","interpolater","_timeout","onDblClick","nativeEvent","PieSeriesComponent","arcData","src_pie","sortValues","pie","arcs","pa","calculateLabelPositions","defaultTooltipText","outerArc","pieData","labelPositions","minDistance","myArc","showLabels","AdvancedPieChartComponent","getDomain","yOffset","ɵAdvancedPieChartComponent_BaseFactory","nameFormatting","PieChartModule"],"sourceRoot":"webpack:///","sources":["./src/app/_models/metadata/age-rating.ts","./src/app/_models/page-layout-mode.ts","./src/app/_models/preferences/page-split-option.ts","./src/app/_models/preferences/preferences.ts","./src/app/_models/preferences/reader-mode.ts","./src/app/_models/preferences/scaling-option.ts","./src/app/_services/scrobbling.service.ts","./src/app/_services/statistics.service.ts","./src/app/_single-module/table/_directives/sortable-header.directive.ts","./src/app/manga-reader/_models/layout-mode.ts","./src/app/pipe/age-rating.pipe.ts","./src/app/pipe/compact-number.pipe.ts","./src/app/pipe/time-duration.pipe.ts","./src/app/shared/icon-and-title/icon-and-title.component.html","./src/app/shared/icon-and-title/icon-and-title.component.ts","./src/app/statistics/_components/_modals/generic-list-modal/generic-list-modal.component.html","./src/app/statistics/_components/_modals/generic-list-modal/generic-list-modal.component.ts","./src/app/statistics/_pipes/day-of-week.pipe.ts","./src/app/statistics/_components/day-breakdown/day-breakdown.component.html","./src/app/statistics/_components/day-breakdown/day-breakdown.component.ts","./src/app/statistics/_components/reading-activity/reading-activity.component.html","./src/app/statistics/_components/reading-activity/reading-activity.component.ts","./src/app/statistics/_components/stat-list/stat-list.component.html","./src/app/statistics/_components/stat-list/stat-list.component.ts","./src/app/statistics/_components/top-readers/top-readers.component.html","./src/app/statistics/_components/top-readers/top-readers.component.ts","./node_modules/@angular/cdk/fesm2022/clipboard.mjs","./src/app/user-settings/api-key/api-key.component.html","./src/app/user-settings/api-key/api-key.component.ts","./src/app/user-settings/restriction-selector/restriction-selector.component.html","./src/app/user-settings/restriction-selector/restriction-selector.component.ts","./src/app/user-settings/user-holds/user-holds.component.html","./src/app/user-settings/user-holds/user-holds.component.ts","./src/app/_models/scrobbling/scrobble-event.ts","./src/app/_single-module/scrobble-event-type.pipe.ts","./src/app/_models/scrobbling/scrobble-event-filter.ts","./src/app/_single-module/user-scrobble-history/user-scrobble-history.component.html","./src/app/_single-module/user-scrobble-history/user-scrobble-history.component.ts","./src/app/statistics/_components/user-stats-info-cards/user-stats-info-cards.component.html","./src/app/statistics/_components/user-stats-info-cards/user-stats-info-cards.component.ts","./src/app/statistics/_components/user-stats/user-stats.component.html","./src/app/statistics/_components/user-stats/user-stats.component.ts","./src/app/_models/device/device-platform.ts","./src/app/user-settings/_pipes/device-platform.pipe.ts","./src/app/user-settings/edit-device/edit-device.component.html","./src/app/user-settings/edit-device/edit-device.component.ts","./src/app/user-settings/manage-devices/manage-devices.component.html","./src/app/user-settings/manage-devices/manage-devices.component.ts","./src/app/user-settings/_pipes/site-theme-provider.pipe.ts","./src/app/user-settings/theme-manager/theme-manager.component.html","./src/app/user-settings/theme-manager/theme-manager.component.ts","./node_modules/ngx-color-picker/fesm2020/ngx-color-picker.mjs","./src/app/user-settings/anilist-key/anilist-key.component.html","./src/app/user-settings/anilist-key/anilist-key.component.ts","./src/app/user-settings/change-age-restriction/change-age-restriction.component.html","./src/app/user-settings/change-age-restriction/change-age-restriction.component.ts","./src/app/user-settings/change-password/change-password.component.html","./src/app/user-settings/change-password/change-password.component.ts","./src/app/user-settings/change-email/change-email.component.html","./src/app/user-settings/change-email/change-email.component.ts","./src/app/_services/localization.service.ts","./src/app/user-settings/user-preferences/user-preferences.component.html","./src/app/user-settings/user-preferences/user-preferences.component.ts","./src/app/user-settings/user-settings-routing.module.ts","./src/app/user-settings/user-settings.module.ts","./node_modules/rfdc/index.js","./node_modules/d3-selection/src/selector.js","./node_modules/d3-selection/src/selectorAll.js","./node_modules/d3-selection/src/matcher.js","./node_modules/d3-selection/src/selection/selectChild.js","./node_modules/d3-selection/src/selection/selectChildren.js","./node_modules/d3-selection/src/selection/sparse.js","./node_modules/d3-selection/src/selection/enter.js","./node_modules/d3-selection/src/selection/data.js","./node_modules/d3-selection/src/selection/sort.js","./node_modules/d3-selection/src/namespaces.js","./node_modules/d3-selection/src/namespace.js","./node_modules/d3-selection/src/selection/attr.js","./node_modules/d3-selection/src/window.js","./node_modules/d3-selection/src/selection/style.js","./node_modules/d3-selection/src/selection/property.js","./node_modules/d3-selection/src/selection/classed.js","./node_modules/d3-selection/src/selection/text.js","./node_modules/d3-selection/src/selection/html.js","./node_modules/d3-selection/src/selection/raise.js","./node_modules/d3-selection/src/selection/lower.js","./node_modules/d3-selection/src/creator.js","./node_modules/d3-selection/src/selection/insert.js","./node_modules/d3-selection/src/selection/remove.js","./node_modules/d3-selection/src/selection/clone.js","./node_modules/d3-selection/src/selection/on.js","./node_modules/d3-selection/src/selection/dispatch.js","./node_modules/d3-selection/src/selection/index.js","./node_modules/d3-selection/src/selection/select.js","./node_modules/d3-selection/src/selection/selectAll.js","./node_modules/d3-selection/src/array.js","./node_modules/d3-selection/src/selection/filter.js","./node_modules/d3-selection/src/constant.js","./node_modules/d3-selection/src/selection/exit.js","./node_modules/d3-selection/src/selection/join.js","./node_modules/d3-selection/src/selection/merge.js","./node_modules/d3-selection/src/selection/order.js","./node_modules/d3-selection/src/selection/call.js","./node_modules/d3-selection/src/selection/nodes.js","./node_modules/d3-selection/src/selection/node.js","./node_modules/d3-selection/src/selection/size.js","./node_modules/d3-selection/src/selection/empty.js","./node_modules/d3-selection/src/selection/each.js","./node_modules/d3-selection/src/selection/append.js","./node_modules/d3-selection/src/selection/datum.js","./node_modules/d3-selection/src/selection/iterator.js","./node_modules/d3-selection/src/select.js","./node_modules/d3-dispatch/src/dispatch.js","./node_modules/d3-drag/src/noevent.js","./node_modules/d3-color/src/define.js","./node_modules/d3-color/src/color.js","./node_modules/d3-interpolate/src/basis.js","./node_modules/d3-interpolate/src/constant.js","./node_modules/d3-interpolate/src/color.js","./node_modules/d3-interpolate/src/rgb.js","./node_modules/d3-interpolate/src/array.js","./node_modules/d3-interpolate/src/date.js","./node_modules/d3-interpolate/src/number.js","./node_modules/d3-interpolate/src/object.js","./node_modules/d3-interpolate/src/basisClosed.js","./node_modules/d3-interpolate/src/string.js","./node_modules/d3-interpolate/src/numberArray.js","./node_modules/d3-interpolate/src/value.js","./node_modules/d3-selection/src/pointer.js","./node_modules/d3-selection/src/sourceEvent.js","./node_modules/d3-timer/src/timer.js","./node_modules/d3-timer/src/timeout.js","./node_modules/d3-transition/src/transition/schedule.js","./node_modules/d3-transition/src/interrupt.js","./node_modules/d3-interpolate/src/transform/decompose.js","./node_modules/d3-interpolate/src/transform/parse.js","./node_modules/d3-interpolate/src/transform/index.js","./node_modules/d3-transition/src/transition/tween.js","./node_modules/d3-transition/src/transition/interpolate.js","./node_modules/d3-transition/src/transition/attr.js","./node_modules/d3-transition/src/transition/attrTween.js","./node_modules/d3-transition/src/transition/delay.js","./node_modules/d3-transition/src/transition/duration.js","./node_modules/d3-transition/src/transition/selection.js","./node_modules/d3-transition/src/transition/style.js","./node_modules/d3-transition/src/transition/index.js","./node_modules/d3-transition/src/transition/select.js","./node_modules/d3-transition/src/transition/selectAll.js","./node_modules/d3-transition/src/transition/filter.js","./node_modules/d3-transition/src/transition/merge.js","./node_modules/d3-transition/src/transition/transition.js","./node_modules/d3-transition/src/transition/on.js","./node_modules/d3-transition/src/transition/styleTween.js","./node_modules/d3-transition/src/transition/text.js","./node_modules/d3-transition/src/transition/textTween.js","./node_modules/d3-transition/src/transition/remove.js","./node_modules/d3-transition/src/transition/ease.js","./node_modules/d3-transition/src/transition/easeVarying.js","./node_modules/d3-transition/src/transition/end.js","./node_modules/d3-transition/src/selection/transition.js","./node_modules/d3-ease/src/cubic.js","./node_modules/d3-transition/src/selection/index.js","./node_modules/d3-transition/src/selection/interrupt.js","./node_modules/d3-brush/src/constant.js","./node_modules/d3-brush/src/event.js","./node_modules/d3-brush/src/noevent.js","./node_modules/d3-brush/src/brush.js","./node_modules/d3-array/src/ascending.js","./node_modules/d3-array/src/descending.js","./node_modules/d3-array/src/bisector.js","./node_modules/d3-array/src/ticks.js","./node_modules/d3-time/src/duration.js","./node_modules/d3-time/src/interval.js","./node_modules/d3-time/src/millisecond.js","./node_modules/d3-time/src/second.js","./node_modules/d3-time/src/minute.js","./node_modules/d3-time/src/hour.js","./node_modules/d3-time/src/day.js","./node_modules/d3-time/src/week.js","./node_modules/d3-time/src/month.js","./node_modules/d3-time/src/year.js","./node_modules/d3-time/src/ticks.js","./node_modules/d3-time-format/node_modules/d3-time/src/interval.js","./node_modules/d3-time-format/node_modules/d3-time/src/duration.js","./node_modules/d3-time-format/node_modules/d3-time/src/utcWeek.js","./node_modules/d3-time-format/node_modules/d3-time/src/utcDay.js","./node_modules/d3-time-format/node_modules/d3-time/src/week.js","./node_modules/d3-time-format/node_modules/d3-time/src/day.js","./node_modules/d3-time-format/node_modules/d3-time/src/year.js","./node_modules/d3-time-format/node_modules/d3-time/src/utcYear.js","./node_modules/d3-time-format/src/locale.js","./node_modules/d3-time-format/src/defaultLocale.js","./node_modules/d3-array/src/number.js","./node_modules/d3-array/src/bisect.js","./node_modules/d3-interpolate/src/round.js","./node_modules/d3-scale/src/number.js","./node_modules/d3-scale/src/continuous.js","./node_modules/d3-scale/src/constant.js","./node_modules/d3-scale/src/init.js","./node_modules/d3-scale/src/time.js","./node_modules/d3-scale/src/nice.js","./node_modules/d3-format/src/formatSpecifier.js","./node_modules/d3-format/src/formatPrefixAuto.js","./node_modules/d3-format/src/formatDecimal.js","./node_modules/d3-format/src/exponent.js","./node_modules/d3-format/src/formatRounded.js","./node_modules/d3-format/src/formatTypes.js","./node_modules/d3-format/src/identity.js","./node_modules/d3-format/src/locale.js","./node_modules/d3-format/src/defaultLocale.js","./node_modules/d3-scale/src/linear.js","./node_modules/d3-scale/src/tickFormat.js","./node_modules/d3-format/src/precisionPrefix.js","./node_modules/d3-format/src/precisionRound.js","./node_modules/d3-format/src/precisionFixed.js","./node_modules/d3-array/src/range.js","./node_modules/d3-format/src/formatGroup.js","./node_modules/d3-format/src/formatNumerals.js","./node_modules/d3-format/src/formatTrim.js","./node_modules/internmap/src/index.js","./node_modules/d3-scale/src/ordinal.js","./node_modules/d3-scale/src/band.js","./node_modules/d3-array/src/quantile.js","./node_modules/d3-scale/src/quantile.js","./node_modules/d3-shape/src/array.js","./node_modules/d3-shape/src/constant.js","./node_modules/d3-shape/src/curve/linear.js","./node_modules/d3-path/src/path.js","./node_modules/d3-shape/src/path.js","./node_modules/d3-shape/src/point.js","./node_modules/d3-shape/src/line.js","./node_modules/d3-shape/src/area.js","./node_modules/d3-shape/src/math.js","./node_modules/d3-shape/src/arc.js","./node_modules/d3-shape/src/descending.js","./node_modules/d3-shape/src/identity.js","./node_modules/@swimlane/ngx-charts/fesm2020/swimlane-ngx-charts.mjs","./node_modules/d3-drag/src/nodrag.js","./node_modules/d3-shape/src/pie.js","./node_modules/d3-array/src/max.js"],"sourcesContent":["export enum AgeRating {\n /**\n * This is not a valid state for Series/Chapters, but used for Restricted Profiles\n */\n NotApplicable = -1,\n Unknown = 0,\n RatingPending = 1,\n EarlyChildhood = 2,\n Everyone = 3,\n G = 4,\n Everyone10Plus = 5,\n PG = 6,\n KidsToAdults = 7,\n Teen = 8,\n Mature15Plus = 9,\n Mature17Plus = 10,\n Mature = 11,\n R18Plus = 12,\n AdultsOnly = 13,\n X18Plus = 14\n}","export enum PageLayoutMode {\n /**\n * Use Cards for laying out data\n */\n Cards = 0,\n /**\n * Use list style for laying out items\n */\n List = 1\n}","export enum PageSplitOption {\n /**\n * Renders the left side of the image then the right side\n */\n SplitLeftToRight = 0,\n /**\n * Renders the right side of the image then the left side\n */\n SplitRightToLeft = 1,\n /**\n * Don't split and show the image in original size\n */\n NoSplit = 2,\n /**\n * Don't split and scale the image to fit screen space\n */\n FitSplit = 3\n}\n","\nimport { LayoutMode } from 'src/app/manga-reader/_models/layout-mode';\nimport { BookPageLayoutMode } from '../readers/book-page-layout-mode';\nimport { PageLayoutMode } from '../page-layout-mode';\nimport { PageSplitOption } from './page-split-option';\nimport { ReaderMode } from './reader-mode';\nimport { ReadingDirection } from './reading-direction';\nimport { ScalingOption } from './scaling-option';\nimport { SiteTheme } from './site-theme';\nimport {WritingStyle} from \"./writing-style\";\n\nexport interface Preferences {\n // Manga Reader\n readingDirection: ReadingDirection;\n scalingOption: ScalingOption;\n pageSplitOption: PageSplitOption;\n readerMode: ReaderMode;\n autoCloseMenu: boolean;\n layoutMode: LayoutMode;\n backgroundColor: string;\n showScreenHints: boolean;\n emulateBook: boolean;\n swipeToPaginate: boolean;\n\n // Book Reader\n bookReaderMargin: number;\n bookReaderLineSpacing: number;\n bookReaderFontSize: number;\n bookReaderFontFamily: string;\n bookReaderTapToPaginate: boolean;\n bookReaderReadingDirection: ReadingDirection;\n bookReaderWritingStyle: WritingStyle;\n bookReaderThemeName: string;\n bookReaderLayoutMode: BookPageLayoutMode;\n bookReaderImmersiveMode: boolean;\n\n // Global\n theme: SiteTheme;\n globalPageLayoutMode: PageLayoutMode;\n blurUnreadSummaries: boolean;\n promptForDownloadSize: boolean;\n noTransitions: boolean;\n collapseSeriesRelationships: boolean;\n shareReviews: boolean;\n locale: string;\n}\n\nexport const readingDirections = [{text: 'left-to-right', value: ReadingDirection.LeftToRight}, {text: 'right-to-left', value: ReadingDirection.RightToLeft}];\nexport const bookWritingStyles = [{text: 'horizontal', value: WritingStyle.Horizontal}, {text: 'vertical', value: WritingStyle.Vertical}];\nexport const scalingOptions = [{text: 'automatic', value: ScalingOption.Automatic}, {text: 'fit-to-height', value: ScalingOption.FitToHeight}, {text: 'fit-to-width', value: ScalingOption.FitToWidth}, {text: 'original', value: ScalingOption.Original}];\nexport const pageSplitOptions = [{text: 'fit-to-screen', value: PageSplitOption.FitSplit}, {text: 'right-to-left', value: PageSplitOption.SplitRightToLeft}, {text: 'left-to-right', value: PageSplitOption.SplitLeftToRight}, {text: 'no-split', value: PageSplitOption.NoSplit}];\nexport const readingModes = [{text: 'left-to-right', value: ReaderMode.LeftRight}, {text: 'up-to-down', value: ReaderMode.UpDown}, {text: 'webtoon', value: ReaderMode.Webtoon}];\nexport const layoutModes = [{text: 'single', value: LayoutMode.Single}, {text: 'double', value: LayoutMode.Double}, {text: 'double-manga', value: LayoutMode.DoubleReversed}]; // , {text: 'Double (No Cover)', value: LayoutMode.DoubleNoCover}\nexport const bookLayoutModes = [{text: 'scroll', value: BookPageLayoutMode.Default}, {text: '1-column', value: BookPageLayoutMode.Column1}, {text: '2-column', value: BookPageLayoutMode.Column2}];\nexport const pageLayoutModes = [{text: 'cards', value: PageLayoutMode.Cards}, {text: 'list', value: PageLayoutMode.List}];\n","/**\n * The pagination method used by the reader\n */\nexport enum ReaderMode {\n /**\n * Manga default left/right to page\n */\n LeftRight = 0,\n /**\n * Manga up and down to page\n */\n UpDown = 1,\n /**\n * Webtoon reading (scroll) with optional areas to tap\n */\n Webtoon = 2\n}","/**\n * How the image should scale to the screen size\n */\nexport enum ScalingOption {\n /**\n * Fit the image into the height of screen\n */\n FitToHeight = 0,\n /**\n * Fit the image into the width of screen\n */\n FitToWidth = 1,\n /**\n * Apply no logic and render the image as is\n */\n Original = 2,\n /**\n * Ask the reader to attempt to choose the best ScalingOption for the user\n */\n Automatic = 3\n}\n","import {HttpClient, HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\nimport { TextResonse } from '../_types/text-response';\nimport {ScrobbleError} from \"../_models/scrobbling/scrobble-error\";\nimport {ScrobbleEvent} from \"../_models/scrobbling/scrobble-event\";\nimport {ScrobbleHold} from \"../_models/scrobbling/scrobble-hold\";\nimport {PaginatedResult} from \"../_models/pagination\";\nimport {ScrobbleEventFilter} from \"../_models/scrobbling/scrobble-event-filter\";\nimport {UtilityService} from \"../shared/_services/utility.service\";\n\nexport enum ScrobbleProvider {\n Kavita = 0,\n AniList= 1,\n Mal = 2,\n GoogleBooks = 3\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScrobblingService {\n\n baseUrl = environment.apiUrl;\n\n\n constructor(private httpClient: HttpClient, private utilityService: UtilityService) {}\n\n hasTokenExpired(provider: ScrobbleProvider) {\n return this.httpClient.get(this.baseUrl + 'scrobbling/token-expired?provider=' + provider, TextResonse)\n .pipe(map(r => r === \"true\"));\n }\n\n updateAniListToken(token: string) {\n return this.httpClient.post(this.baseUrl + 'scrobbling/update-anilist-token', {token});\n }\n\n getAniListToken() {\n return this.httpClient.get(this.baseUrl + 'scrobbling/anilist-token', TextResonse);\n }\n\n getScrobbleErrors() {\n return this.httpClient.get>(this.baseUrl + 'scrobbling/scrobble-errors');\n }\n\n getScrobbleEvents(filter: ScrobbleEventFilter, pageNum: number | undefined = undefined, itemsPerPage: number | undefined = undefined) {\n let params = new HttpParams();\n params = this.utilityService.addPaginationIfExists(params, pageNum, itemsPerPage);\n return this.httpClient.post>(this.baseUrl + 'scrobbling/scrobble-events', filter, {observe: 'response', params}).pipe(\n map((response: any) => {\n return this.utilityService.createPaginatedResult(response, new PaginatedResult());\n })\n );\n }\n\n clearScrobbleErrors() {\n return this.httpClient.post(this.baseUrl + 'scrobbling/clear-errors', {});\n }\n\n getHolds() {\n return this.httpClient.get>(this.baseUrl + 'scrobbling/holds');\n }\n\n libraryAllowsScrobbling(seriesId: number) {\n return this.httpClient.get(this.baseUrl + 'scrobbling/library-allows-scrobbling?seriesId=' + seriesId, TextResonse)\n .pipe(map(res => res === \"true\"));\n }\n\n hasHold(seriesId: number) {\n return this.httpClient.get(this.baseUrl + 'scrobbling/has-hold?seriesId=' + seriesId, TextResonse)\n .pipe(map(res => res === \"true\"));\n }\n\n addHold(seriesId: number) {\n return this.httpClient.post(this.baseUrl + 'scrobbling/add-hold?seriesId=' + seriesId, TextResonse);\n }\n\n removeHold(seriesId: number) {\n return this.httpClient.delete(this.baseUrl + 'scrobbling/remove-hold?seriesId=' + seriesId, TextResonse);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport {inject, Injectable} from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { UserReadStatistics } from '../statistics/_models/user-read-statistics';\nimport { PublicationStatusPipe } from '../pipe/publication-status.pipe';\nimport { map } from 'rxjs';\nimport { MangaFormatPipe } from '../pipe/manga-format.pipe';\nimport { FileExtensionBreakdown } from '../statistics/_models/file-breakdown';\nimport { TopUserRead } from '../statistics/_models/top-reads';\nimport { ReadHistoryEvent } from '../statistics/_models/read-history-event';\nimport { ServerStatistics } from '../statistics/_models/server-statistics';\nimport { StatCount } from '../statistics/_models/stat-count';\nimport { PublicationStatus } from '../_models/metadata/publication-status';\nimport { MangaFormat } from '../_models/manga-format';\nimport { TextResonse } from '../_types/text-response';\nimport {TranslocoService} from \"@ngneat/transloco\";\n\nexport enum DayOfWeek\n{\n Sunday = 0,\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StatisticsService {\n\n baseUrl = environment.apiUrl;\n translocoService = inject(TranslocoService);\n publicationStatusPipe = new PublicationStatusPipe(this.translocoService);\n mangaFormatPipe = new MangaFormatPipe(this.translocoService);\n\n constructor(private httpClient: HttpClient) { }\n\n getUserStatistics(userId: number, libraryIds: Array = []) {\n // TODO: Convert to httpParams object\n let url = 'stats/user/' + userId + '/read';\n if (libraryIds.length > 0) url += '?libraryIds=' + libraryIds.join(',');\n\n return this.httpClient.get(this.baseUrl + url);\n }\n\n getServerStatistics() {\n return this.httpClient.get(this.baseUrl + 'stats/server/stats');\n }\n\n getYearRange() {\n return this.httpClient.get[]>(this.baseUrl + 'stats/server/count/year').pipe(\n map(spreads => spreads.map(spread => {\n return {name: spread.value + '', value: spread.count};\n })));\n }\n\n getTopYears() {\n return this.httpClient.get[]>(this.baseUrl + 'stats/server/top/years').pipe(\n map(spreads => spreads.map(spread => {\n return {name: spread.value + '', value: spread.count};\n })));\n }\n\n getPagesPerYear(userId = 0) {\n return this.httpClient.get[]>(this.baseUrl + 'stats/pages-per-year?userId=' + userId).pipe(\n map(spreads => spreads.map(spread => {\n return {name: spread.value + '', value: spread.count};\n })));\n }\n\n getWordsPerYear(userId = 0) {\n return this.httpClient.get[]>(this.baseUrl + 'stats/words-per-year?userId=' + userId).pipe(\n map(spreads => spreads.map(spread => {\n return {name: spread.value + '', value: spread.count};\n })));\n }\n\n getTopUsers(days: number = 0) {\n return this.httpClient.get(this.baseUrl + 'stats/server/top/users?days=' + days);\n }\n\n getReadingHistory(userId: number) {\n return this.httpClient.get(this.baseUrl + 'stats/user/reading-history?userId=' + userId);\n }\n\n getPublicationStatus() {\n return this.httpClient.get[]>(this.baseUrl + 'stats/server/count/publication-status').pipe(\n map(spreads => spreads.map(spread => {\n return {name: this.publicationStatusPipe.transform(spread.value), value: spread.count};\n })));\n }\n\n getMangaFormat() {\n return this.httpClient.get[]>(this.baseUrl + 'stats/server/count/manga-format').pipe(\n map(spreads => spreads.map(spread => {\n return {name: this.mangaFormatPipe.transform(spread.value), value: spread.count};\n })));\n }\n\n getTotalSize() {\n return this.httpClient.get(this.baseUrl + 'stats/server/file-size', TextResonse);\n }\n\n getFileBreakdown() {\n return this.httpClient.get(this.baseUrl + 'stats/server/file-breakdown');\n }\n\n getReadCountByDay(userId: number = 0, days: number = 0) {\n return this.httpClient.get>(this.baseUrl + 'stats/reading-count-by-day?userId=' + userId + '&days=' + days);\n }\n\n getDayBreakdown( userId = 0) {\n return this.httpClient.get>>(this.baseUrl + 'stats/day-breakdown?userId=' + userId);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nexport const compare = (v1: string | number, v2: string | number) => (v1 < v2 ? -1 : v1 > v2 ? 1 : 0);\nexport type SortColumn = keyof T | '';\nexport type SortDirection = 'asc' | 'desc' | '';\nconst rotate: { [key: string]: SortDirection } = { asc: 'desc', desc: 'asc', '': 'asc' };\n\nexport interface SortEvent {\n\tcolumn: SortColumn;\n\tdirection: SortDirection;\n}\n\n@Directive({\n selector: 'th[sortable]',\n host: {\n '[class.asc]': 'direction === \"asc\"',\n '[class.desc]': 'direction === \"desc\"',\n '(click)': 'rotate()',\n },\n standalone: true,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class SortableHeader {\n\t@Input() sortable: SortColumn = '';\n\t@Input() direction: SortDirection = '';\n\t@Output() sort = new EventEmitter>();\n\n\trotate() {\n\t\tthis.direction = rotate[this.direction];\n\t\tthis.sort.emit({ column: this.sortable, direction: this.direction });\n\t}\n}","/**\n * How to layout pages for reading\n */\nexport enum LayoutMode {\n /**\n * Renders a single page on the renderer. Cover images will follow splitting logic.\n */\n Single = 1,\n /**\n * Renders 2 pages side by side on the renderer. Cover images will not split and take up both panes.\n */\n Double = 2, \n /**\n * Renders 2 pages side by side on the renderer. Cover images will not split and take up both panes. This version reverses the order and is used for Manga only\n */\n DoubleReversed = 3,\n /**\n * Renders 2 pages side by side on the renderer. Cover images will split.\n */\n DoubleNoCover = 4,\n\n}","import {inject, Pipe, PipeTransform} from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AgeRating } from '../_models/metadata/age-rating';\nimport { AgeRatingDto } from '../_models/metadata/age-rating-dto';\nimport {TranslocoService} from \"@ngneat/transloco\";\n\n@Pipe({\n name: 'ageRating',\n standalone: true\n})\nexport class AgeRatingPipe implements PipeTransform {\n\n translocoService = inject(TranslocoService);\n\n transform(value: AgeRating | AgeRatingDto | undefined): Observable {\n if (value === undefined || value === null) return of(this.translocoService.translate('age-rating-pipe.unknown') as string);\n\n if (value.hasOwnProperty('title')) {\n return of((value as AgeRatingDto).title);\n }\n\n switch (value) {\n case AgeRating.Unknown:\n return this.translocoService.translate('age-rating-pipe.unknown');\n case AgeRating.EarlyChildhood:\n return this.translocoService.translate('age-rating-pipe.early-childhood');\n case AgeRating.AdultsOnly:\n return this.translocoService.translate('age-rating-pipe.adults-only');\n case AgeRating.Everyone:\n return this.translocoService.translate('age-rating-pipe.everyone');\n case AgeRating.Everyone10Plus:\n return this.translocoService.translate('age-rating-pipe.everyone-10-plus');\n case AgeRating.G:\n return this.translocoService.translate('age-rating-pipe.g');\n case AgeRating.KidsToAdults:\n return this.translocoService.translate('age-rating-pipe.kids-to-adults');\n case AgeRating.Mature:\n return this.translocoService.translate('age-rating-pipe.mature');\n case AgeRating.Mature15Plus:\n return this.translocoService.translate('age-rating-pipe.ma15-plus');\n case AgeRating.Mature17Plus:\n return this.translocoService.translate('age-rating-pipe.mature-17-plus');\n case AgeRating.RatingPending:\n return this.translocoService.translate('age-rating-pipe.rating-pending');\n case AgeRating.Teen:\n return this.translocoService.translate('age-rating-pipe.teen');\n case AgeRating.X18Plus:\n return this.translocoService.translate('age-rating-pipe.x18-plus');\n case AgeRating.NotApplicable:\n return this.translocoService.translate('age-rating-pipe.not-applicable');\n case AgeRating.PG:\n return this.translocoService.translate('age-rating-pipe.pg');\n case AgeRating.R18Plus:\n return this.translocoService.translate('age-rating-pipe.r18-plus');\n }\n\n return of(this.translocoService.translate('age-rating-pipe.unknown') as string);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {AccountService} from \"../_services/account.service\";\n\nconst specialCases = [4, 7, 10, 13];\n\n@Pipe({\n name: 'compactNumber',\n standalone: true\n})\nexport class CompactNumberPipe implements PipeTransform {\n\n constructor() {}\n\n transform(value: number): string {\n // Weblate allows some non-standard languages, like 'zh_Hans', which should be just 'zh'. So we handle that here\n const key = localStorage.getItem(AccountService.localeKey)?.replace('_', '-');\n if (key?.endsWith('Hans')) {\n return this.transformValue(key?.split('-')[0] || 'en', value);\n }\n return this.transformValue(key || 'en', value);\n }\n\n private transformValue(locale: string, value: number) {\n const formatter = new Intl.NumberFormat(locale, {\n //@ts-ignore\n notation: 'compact', // https://github.com/microsoft/TypeScript/issues/36533\n maximumSignificantDigits: 3\n });\n\n const formatterForDoublePrecision = new Intl.NumberFormat(locale, {\n //@ts-ignore\n notation: 'compact', // https://github.com/microsoft/TypeScript/issues/36533\n maximumSignificantDigits: 2\n });\n\n if (value < 1000) return value + '';\n if (specialCases.includes((value + '').length)) { // from 4, every 3 will have a case where we need to override\n return formatterForDoublePrecision.format(value);\n }\n\n return formatter.format(value);\n }\n\n\n\n}\n","import {inject, Pipe, PipeTransform} from '@angular/core';\nimport {TranslocoService} from \"@ngneat/transloco\";\n\n/**\n * Converts hours -> days, months, years, etc\n */\n@Pipe({\n name: 'timeDuration',\n standalone: true\n})\nexport class TimeDurationPipe implements PipeTransform {\n\n translocoService = inject(TranslocoService);\n\n transform(hours: number): string {\n if (hours === 0)\n return this.translocoService.translate('time-duration-pipe.hours', {value: hours});\n if (hours < 1) {\n return this.translocoService.translate('time-duration-pipe.minutes', {value: (hours * 60).toFixed(1)});\n } else if (hours < 24) {\n return this.translocoService.translate('time-duration-pipe.hours', {value: hours.toFixed(1)});\n } else if (hours < 720) {\n return this.translocoService.translate('time-duration-pipe.days', {value: (hours / 24).toFixed(1)});\n } else if (hours < 8760) {\n return this.translocoService.translate('time-duration-pipe.months', {value: (hours / 720).toFixed(1)});\n } else {\n return this.translocoService.translate('time-duration-pipe.years', {value: (hours / 8760).toFixed(1)});\n }\n }\n\n}\n","
\n
0\">\n {{label}}\n
\n \n\n
\n \n
\n
\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport {CommonModule} from \"@angular/common\";\n\n@Component({\n selector: 'app-icon-and-title',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon-and-title.component.html',\n styleUrls: ['./icon-and-title.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconAndTitleComponent {\n /**\n * If the component is clickable and should emit click events\n */\n @Input() clickable: boolean = true;\n @Input() title: string = '';\n @Input() label: string = '';\n /**\n * Font classes used to display font\n */\n @Input() fontClasses: string = '';\n\n @Output() click: EventEmitter = new EventEmitter();\n\n constructor() { }\n\n handleClick(event: MouseEvent) {\n if (this.clickable) this.click.emit(event);\n }\n}\n","\n
\n

{{title}}

\n \n
\n
\n
\n
= 5\">\n \n
\n \n \n
\n
\n
\n
  • \n {{item}}\n \n
  • \n
    \n
    \n
    \n
    \n \n
    \n\n
    \n","import { Component, Input } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { FilterPipe } from '../../../../pipe/filter.pipe';\nimport { NgIf, NgFor } from '@angular/common';\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-generic-list-modal',\n templateUrl: './generic-list-modal.component.html',\n styleUrls: ['./generic-list-modal.component.scss'],\n standalone: true,\n imports: [ReactiveFormsModule, NgIf, NgFor, FilterPipe, TranslocoDirective]\n})\nexport class GenericListModalComponent {\n @Input() items: Array = [];\n @Input() title: string = '';\n @Input() clicked: ((item: string) => void) | undefined = undefined;\n\n listForm: FormGroup = new FormGroup({\n 'filterQuery': new FormControl('', [])\n });\n\n filterList = (listItem: string) => {\n return listItem.toLowerCase().indexOf((this.listForm.value.filterQuery || '').toLowerCase()) >= 0;\n }\n\n constructor(private modal: NgbActiveModal) {}\n\n close() {\n this.modal.close();\n }\n\n handleClick(item: string) {\n if (this.clicked) {\n this.clicked(item);\n }\n }\n}\n","import {inject, Pipe, PipeTransform} from '@angular/core';\nimport { DayOfWeek } from 'src/app/_services/statistics.service';\nimport {TranslocoService} from \"@ngneat/transloco\";\n\n@Pipe({\n name: 'dayOfWeek',\n standalone: true\n})\nexport class DayOfWeekPipe implements PipeTransform {\n\n translocoService = inject(TranslocoService);\n\n transform(value: DayOfWeek): string {\n switch(value) {\n case DayOfWeek.Monday:\n return this.translocoService.translate('day-of-week-pipe.monday');\n case DayOfWeek.Tuesday:\n return this.translocoService.translate('day-of-week-pipe.tuesday');\n case DayOfWeek.Wednesday:\n return this.translocoService.translate('day-of-week-pipe.wednesday');\n case DayOfWeek.Thursday:\n return this.translocoService.translate('day-of-week-pipe.thursday');\n case DayOfWeek.Friday:\n return this.translocoService.translate('day-of-week-pipe.friday');\n case DayOfWeek.Saturday:\n return this.translocoService.translate('day-of-week-pipe.saturday');\n case DayOfWeek.Sunday:\n return this.translocoService.translate('day-of-week-pipe.sunday');\n\n }\n }\n\n}\n","\n
    \n
    \n

    {{t('title')}}

    \n
    \n\n \n \n
    \n
    \n","import {ChangeDetectionStrategy, Component, DestroyRef, inject, Input, OnInit} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport { BarChartModule } from '@swimlane/ngx-charts';\nimport {map, Observable} from 'rxjs';\nimport {DayOfWeek, StatisticsService} from 'src/app/_services/statistics.service';\nimport {PieDataItem} from '../../_models/pie-data-item';\nimport {StatCount} from '../../_models/stat-count';\nimport {DayOfWeekPipe} from '../../_pipes/day-of-week.pipe';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { AsyncPipe } from '@angular/common';\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-day-breakdown',\n templateUrl: './day-breakdown.component.html',\n styleUrls: ['./day-breakdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [BarChartModule, AsyncPipe, TranslocoDirective]\n})\nexport class DayBreakdownComponent implements OnInit {\n\n @Input() userId = 0;\n view: [number, number] = [0,0];\n showLegend: boolean = true;\n\n formControl: FormControl = new FormControl(true, []);\n dayBreakdown$!: Observable>;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private statService: StatisticsService) {}\n\n ngOnInit() {\n const dayOfWeekPipe = new DayOfWeekPipe();\n this.dayBreakdown$ = this.statService.getDayBreakdown(this.userId).pipe(\n map((data: Array>) => {\n return data.map(d => {\n return {name: dayOfWeekPipe.transform(d.value), value: d.count};\n })\n }),\n takeUntilDestroyed(this.destroyRef)\n );\n }\n\n}\n","\n \n
    \n
    \n
    \n

    {{t('title')}}

    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n 0; else noData\"\n class=\"dark\"\n [legend]=\"true\"\n [legendTitle]=\"t('legend-label')\"\n [showXAxisLabel]=\"true\"\n [showYAxisLabel]=\"true\"\n [xAxis]=\"true\"\n [yAxis]=\"true\"\n [showGridLines]=\"false\"\n [showRefLines]=\"true\"\n [roundDomains]=\"true\"\n [autoScale]=\"true\"\n [xAxisLabel]=\"t('x-axis-label')\"\n [yAxisLabel]=\"t('y-axis-label')\"\n [timeline]=\"false\"\n [results]=\"data\"\n >\n \n \n
    \n \n {{t('no-data')}}\n \n
    \n
    \n
    \n","import {ChangeDetectionStrategy, Component, DestroyRef, inject, Input, OnInit} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { filter, map, Observable, of, shareReplay, switchMap } from 'rxjs';\nimport { MangaFormatPipe } from 'src/app/pipe/manga-format.pipe';\nimport { Member } from 'src/app/_models/auth/member';\nimport { MemberService } from 'src/app/_services/member.service';\nimport { StatisticsService } from 'src/app/_services/statistics.service';\nimport { PieDataItem } from '../../_models/pie-data-item';\nimport { TimePeriods } from '../top-readers/top-readers.component';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { LineChartModule } from '@swimlane/ngx-charts';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\nimport {TranslocoDirective, TranslocoService} from \"@ngneat/transloco\";\n\nconst options: Intl.DateTimeFormatOptions = { month: \"short\", day: \"numeric\" };\n\n@Component({\n selector: 'app-reading-activity',\n templateUrl: './reading-activity.component.html',\n styleUrls: ['./reading-activity.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ReactiveFormsModule, NgIf, NgFor, LineChartModule, AsyncPipe, TranslocoDirective]\n})\nexport class ReadingActivityComponent implements OnInit {\n /**\n * Only show for one user\n */\n @Input() userId: number = 0;\n @Input() isAdmin: boolean = true;\n @Input() individualUserMode: boolean = false;\n\n view: [number, number] = [0, 400];\n formGroup: FormGroup = new FormGroup({\n 'users': new FormControl(-1, []),\n 'days': new FormControl(TimePeriods[0].value, []),\n });\n users$: Observable | undefined;\n data$: Observable>;\n timePeriods = TimePeriods;\n private readonly destroyRef = inject(DestroyRef);\n private readonly translocoService = inject(TranslocoService);\n mangaFormatPipe = new MangaFormatPipe(this.translocoService);\n\n constructor(private statService: StatisticsService, private memberService: MemberService) {\n this.data$ = this.formGroup.valueChanges.pipe(\n switchMap(_ => this.statService.getReadCountByDay(this.formGroup.get('users')!.value, this.formGroup.get('days')!.value)),\n map(data => {\n const gList = data.reduce((formats, entry) => {\n const formatTranslated = this.mangaFormatPipe.transform(entry.format);\n if (!formats[formatTranslated]) {\n formats[formatTranslated] = {\n name: formatTranslated,\n value: 0,\n series: []\n };\n }\n formats[formatTranslated].series.push({name: new Date(entry.value).toLocaleDateString(\"en-US\", options), value: entry.count});\n\n return formats;\n }, {});\n return Object.keys(gList).map(format => {\n return {name: format, value: 0, series: gList[format].series}\n });\n }),\n takeUntilDestroyed(this.destroyRef),\n shareReplay(),\n );\n\n this.data$.subscribe();\n }\n\n ngOnInit(): void {\n this.users$ = (this.isAdmin ? this.memberService.getMembers() : of([])).pipe(filter(_ => this.isAdmin), takeUntilDestroyed(this.destroyRef), shareReplay());\n this.formGroup.get('users')?.setValue(this.userId, {emitValue: true});\n\n if (!this.isAdmin) {\n this.formGroup.get('users')?.disable();\n }\n }\n}\n\n","\n
    \n
    \n {{title}}\n 0\">\n
    \n
      \n
    • \n \n 0\" width=\"32px\" maxHeight=\"32px\" class=\"img-top me-1\" [imageUrl]=\"url\">\n \n {{item.name}} = 0\">{{item.value | compactNumber}} {{label}}\n
    • \n
    \n
    \n
    \n\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PieDataItem } from '../../_models/pie-data-item';\nimport { CompactNumberPipe } from '../../../pipe/compact-number.pipe';\nimport { ImageComponent } from '../../../shared/image/image.component';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common';\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-stat-list',\n templateUrl: './stat-list.component.html',\n styleUrls: ['./stat-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgbTooltip, NgFor, NgClass, ImageComponent, AsyncPipe, CompactNumberPipe, TranslocoDirective]\n})\nexport class StatListComponent {\n\n /**\n * Title of list\n */\n @Input() title: string = ''\n /**\n * Optional label to render after value\n */\n @Input() label: string = ''\n /**\n * Optional data to put in tooltip\n */\n @Input() description: string = '';\n @Input({required: true}) data$!: Observable;\n @Input() image: ((data: PieDataItem) => string) | undefined = undefined;\n /**\n * Optional callback handler when an item is clicked\n */\n @Input() handleClick: ((data: PieDataItem) => void) | undefined = undefined;\n\n doClick(item: PieDataItem) {\n if (!this.handleClick) return;\n this.handleClick(item);\n }\n\n}\n","\n
    \n
    \n

    {{t('title')}}

    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n\n\n \n
    \n
    \n
    \n {{user.username}}\n
    \n
      \n
    • {{t('comics-label', {value: user.comicsTime})}}
    • \n
    • {{t('manga-label', {value: user.mangaTime})}}
    • \n
    • {{t('books-label', {value: user.booksTime})}}
    • \n
    \n
    \n
    \n
    \n\n\n\n\n
    \n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n OnInit\n} from '@angular/core';\nimport { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Observable, switchMap, shareReplay } from 'rxjs';\nimport { StatisticsService } from 'src/app/_services/statistics.service';\nimport { TopUserRead } from '../../_models/top-reads';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { NgFor, AsyncPipe } from '@angular/common';\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\nexport const TimePeriods: Array<{title: string, value: number}> =\n [{title: 'this-week', value: new Date().getDay() || 1},\n {title: 'last-7-days', value: 7},\n {title: 'last-30-days', value: 30},\n {title: 'last-90-days', value: 90},\n {title: 'last-year', value: 365},\n {title: 'all-time', value: 0}];\n\n@Component({\n selector: 'app-top-readers',\n templateUrl: './top-readers.component.html',\n styleUrls: ['./top-readers.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ReactiveFormsModule, NgFor, AsyncPipe, TranslocoDirective]\n})\nexport class TopReadersComponent implements OnInit {\n\n formGroup: FormGroup;\n timePeriods = TimePeriods;\n\n users$: Observable;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private statsService: StatisticsService, private readonly cdRef: ChangeDetectorRef) {\n this.formGroup = new FormGroup({\n 'days': new FormControl(this.timePeriods[0].value, []),\n });\n\n this.users$ = this.formGroup.valueChanges.pipe(\n switchMap(_ => this.statsService.getTopUsers(this.formGroup.get('days')?.value as number)),\n takeUntilDestroyed(this.destroyRef),\n shareReplay(),\n );\n }\n\n ngOnInit(): void {\n // Needed so that other pipes work\n this.users$.subscribe();\n this.formGroup.get('days')?.setValue(this.timePeriods[0].value, {emitEvent: true});\n }\n\n}\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, InjectionToken, EventEmitter, Directive, Optional, Input, Output, NgModule } from '@angular/core';\n\n/**\n * A pending copy-to-clipboard operation.\n *\n * The implementation of copying text to the clipboard modifies the DOM and\n * forces a re-layout. This re-layout can take too long if the string is large,\n * causing the execCommand('copy') to happen too long after the user clicked.\n * This results in the browser refusing to copy. This object lets the\n * re-layout happen in a separate tick from copying by providing a copy function\n * that can be called later.\n *\n * Destroy must be called when no longer in use, regardless of whether `copy` is\n * called.\n */\nclass PendingCopy {\n constructor(text, _document) {\n this._document = _document;\n const textarea = (this._textarea = this._document.createElement('textarea'));\n const styles = textarea.style;\n // Hide the element for display and accessibility. Set a fixed position so the page layout\n // isn't affected. We use `fixed` with `top: 0`, because focus is moved into the textarea\n // for a split second and if it's off-screen, some browsers will attempt to scroll it into view.\n styles.position = 'fixed';\n styles.top = styles.opacity = '0';\n styles.left = '-999em';\n textarea.setAttribute('aria-hidden', 'true');\n textarea.value = text;\n // Making the textarea `readonly` prevents the screen from jumping on iOS Safari (see #25169).\n textarea.readOnly = true;\n // The element needs to be inserted into the fullscreen container, if the page\n // is in fullscreen mode, otherwise the browser won't execute the copy command.\n (this._document.fullscreenElement || this._document.body).appendChild(textarea);\n }\n /** Finishes copying the text. */\n copy() {\n const textarea = this._textarea;\n let successful = false;\n try {\n // Older browsers could throw if copy is not supported.\n if (textarea) {\n const currentFocus = this._document.activeElement;\n textarea.select();\n textarea.setSelectionRange(0, textarea.value.length);\n successful = this._document.execCommand('copy');\n if (currentFocus) {\n currentFocus.focus();\n }\n }\n }\n catch {\n // Discard error.\n // Initial setting of {@code successful} will represent failure here.\n }\n return successful;\n }\n /** Cleans up DOM changes used to perform the copy operation. */\n destroy() {\n const textarea = this._textarea;\n if (textarea) {\n textarea.remove();\n this._textarea = undefined;\n }\n }\n}\n\n/**\n * A service for copying text to the clipboard.\n */\nclass Clipboard {\n constructor(document) {\n this._document = document;\n }\n /**\n * Copies the provided text into the user's clipboard.\n *\n * @param text The string to copy.\n * @returns Whether the operation was successful.\n */\n copy(text) {\n const pendingCopy = this.beginCopy(text);\n const successful = pendingCopy.copy();\n pendingCopy.destroy();\n return successful;\n }\n /**\n * Prepares a string to be copied later. This is useful for large strings\n * which take too long to successfully render and be copied in the same tick.\n *\n * The caller must call `destroy` on the returned `PendingCopy`.\n *\n * @param text The string to copy.\n * @returns the pending copy operation.\n */\n beginCopy(text) {\n return new PendingCopy(text, this._document);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Clipboard, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Clipboard, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Clipboard, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/** Injection token that can be used to provide the default options to `CdkCopyToClipboard`. */\nconst CDK_COPY_TO_CLIPBOARD_CONFIG = new InjectionToken('CDK_COPY_TO_CLIPBOARD_CONFIG');\n/**\n * Provides behavior for a button that when clicked copies content into user's\n * clipboard.\n */\nclass CdkCopyToClipboard {\n constructor(_clipboard, _ngZone, config) {\n this._clipboard = _clipboard;\n this._ngZone = _ngZone;\n /** Content to be copied. */\n this.text = '';\n /**\n * How many times to attempt to copy the text. This may be necessary for longer text, because\n * the browser needs time to fill an intermediate textarea element and copy the content.\n */\n this.attempts = 1;\n /**\n * Emits when some text is copied to the clipboard. The\n * emitted value indicates whether copying was successful.\n */\n this.copied = new EventEmitter();\n /** Copies that are currently being attempted. */\n this._pending = new Set();\n if (config && config.attempts != null) {\n this.attempts = config.attempts;\n }\n }\n /** Copies the current text to the clipboard. */\n copy(attempts = this.attempts) {\n if (attempts > 1) {\n let remainingAttempts = attempts;\n const pending = this._clipboard.beginCopy(this.text);\n this._pending.add(pending);\n const attempt = () => {\n const successful = pending.copy();\n if (!successful && --remainingAttempts && !this._destroyed) {\n // We use 1 for the timeout since it's more predictable when flushing in unit tests.\n this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));\n }\n else {\n this._currentTimeout = null;\n this._pending.delete(pending);\n pending.destroy();\n this.copied.emit(successful);\n }\n };\n attempt();\n }\n else {\n this.copied.emit(this._clipboard.copy(this.text));\n }\n }\n ngOnDestroy() {\n if (this._currentTimeout) {\n clearTimeout(this._currentTimeout);\n }\n this._pending.forEach(copy => copy.destroy());\n this._pending.clear();\n this._destroyed = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkCopyToClipboard, deps: [{ token: Clipboard }, { token: i0.NgZone }, { token: CDK_COPY_TO_CLIPBOARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkCopyToClipboard, selector: \"[cdkCopyToClipboard]\", inputs: { text: [\"cdkCopyToClipboard\", \"text\"], attempts: [\"cdkCopyToClipboardAttempts\", \"attempts\"] }, outputs: { copied: \"cdkCopyToClipboardCopied\" }, host: { listeners: { \"click\": \"copy()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkCopyToClipboard, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkCopyToClipboard]',\n host: {\n '(click)': 'copy()',\n },\n }]\n }], ctorParameters: function () { return [{ type: Clipboard }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_COPY_TO_CLIPBOARD_CONFIG]\n }] }]; }, propDecorators: { text: [{\n type: Input,\n args: ['cdkCopyToClipboard']\n }], attempts: [{\n type: Input,\n args: ['cdkCopyToClipboardAttempts']\n }], copied: [{\n type: Output,\n args: ['cdkCopyToClipboardCopied']\n }] } });\n\nclass ClipboardModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ClipboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: ClipboardModule, declarations: [CdkCopyToClipboard], exports: [CdkCopyToClipboard] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ClipboardModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ClipboardModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CdkCopyToClipboard],\n exports: [CdkCopyToClipboard],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_COPY_TO_CLIPBOARD_CONFIG, CdkCopyToClipboard, Clipboard, ClipboardModule, PendingCopy };\n","\n
    \n 0\"> \n {{tooltipText}}\n
    \n \n \n \n \n \n {{t('regen-warning')}}\n \n
    \n
    \n
    \n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, DestroyRef,\n ElementRef, inject,\n Input,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport {ToastrService} from 'ngx-toastr';\nimport {ConfirmService} from 'src/app/shared/confirm.service';\nimport {AccountService} from 'src/app/_services/account.service';\nimport {Clipboard} from '@angular/cdk/clipboard';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport { NgIf } from '@angular/common';\nimport {translate, TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-api-key',\n templateUrl: './api-key.component.html',\n styleUrls: ['./api-key.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgbTooltip, TranslocoDirective]\n})\nexport class ApiKeyComponent implements OnInit {\n\n @Input() title: string = 'API Key';\n @Input() showRefresh: boolean = true;\n @Input() transform: (val: string) => string = (val: string) => val;\n @Input() tooltipText: string = '';\n @Input() hideData = true;\n @ViewChild('apiKey') inputElem!: ElementRef;\n key: string = '';\n private readonly destroyRef = inject(DestroyRef);\n\n get InputType() {\n return this.hideData ? 'password' : 'text';\n }\n\n constructor(private confirmService: ConfirmService, private accountService: AccountService, private toastr: ToastrService, private clipboard: Clipboard,\n private readonly cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(user => {\n let key = '';\n if (user) {\n key = user.apiKey;\n } else {\n key = translate('api-key.no-key');\n }\n\n if (this.transform != undefined) {\n this.key = this.transform(key);\n this.cdRef.markForCheck();\n }\n });\n }\n\n async copy() {\n this.inputElem.nativeElement.select();\n this.clipboard.copy(this.inputElem.nativeElement.value);\n this.inputElem.nativeElement.setSelectionRange(0, 0);\n this.cdRef.markForCheck();\n }\n\n async refresh() {\n if (!await this.confirmService.confirm(translate('api-key.confirm-reset'))) {\n return;\n }\n this.accountService.resetApiKey().subscribe(newKey => {\n this.key = newKey;\n this.cdRef.markForCheck();\n this.toastr.success(translate('api-key.key-reset'));\n });\n }\n\n selectAll() {\n if (this.inputElem) {\n this.inputElem.nativeElement.setSelectionRange(0, this.key.length);\n this.cdRef.markForCheck();\n }\n }\n\n show() {\n this.inputElem.nativeElement.setAttribute('type', 'text');\n this.cdRef.markForCheck();\n }\n\n}\n","\n \n \n

    {{t('title')}}

    \n

    {{t('description')}}\n {{t('not-applicable-for-admins')}}\n

    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n\n
    \n
    \n \n \n
    \n\n {{t('include-unknowns-tooltip')}}\n \n \n \n
    \n\n\n
    \n
    \n
    \n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { AgeRestriction } from 'src/app/_models/metadata/age-restriction';\nimport { Member } from 'src/app/_models/auth/member';\nimport { AgeRating } from 'src/app/_models/metadata/age-rating';\nimport { AgeRatingDto } from 'src/app/_models/metadata/age-rating-dto';\nimport { User } from 'src/app/_models/user';\nimport { MetadataService } from 'src/app/_services/metadata.service';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport {NgIf, NgFor, TitleCasePipe, NgTemplateOutlet} from '@angular/common';\nimport {TranslocoModule} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-restriction-selector',\n templateUrl: './restriction-selector.component.html',\n styleUrls: ['./restriction-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, ReactiveFormsModule, NgFor, NgbTooltip, TitleCasePipe, TranslocoModule, NgTemplateOutlet]\n})\nexport class RestrictionSelectorComponent implements OnInit, OnChanges {\n\n @Input() member: Member | undefined | User;\n @Input() isAdmin: boolean = false;\n /**\n * Show labels and description around the form\n */\n @Input() showContext: boolean = true;\n @Input() reset: EventEmitter | undefined;\n @Output() selected: EventEmitter = new EventEmitter();\n\n\n ageRatings: Array = [];\n restrictionForm: FormGroup | undefined;\n\n constructor(private metadataService: MetadataService, private readonly cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n\n this.restrictionForm = new FormGroup({\n 'ageRating': new FormControl(this.member?.ageRestriction.ageRating || AgeRating.NotApplicable || AgeRating.NotApplicable, []),\n 'ageRestrictionIncludeUnknowns': new FormControl(this.member?.ageRestriction.includeUnknowns || false, []),\n\n });\n\n if (this.isAdmin) {\n this.restrictionForm.get('ageRating')?.disable();\n this.restrictionForm.get('ageRestrictionIncludeUnknowns')?.disable();\n }\n\n if (this.reset) {\n this.reset.subscribe(e => {\n this.restrictionForm?.get('ageRating')?.setValue(e.ageRating);\n this.restrictionForm?.get('ageRestrictionIncludeUnknowns')?.setValue(e.includeUnknowns);\n this.cdRef.markForCheck();\n });\n }\n\n this.restrictionForm.get('ageRating')?.valueChanges.subscribe(e => {\n this.selected.emit({\n ageRating: parseInt(e, 10),\n includeUnknowns: this.restrictionForm?.get('ageRestrictionIncludeUnknowns')?.value\n });\n if (parseInt(e, 10) === AgeRating.NotApplicable) {\n this.restrictionForm!.get('ageRestrictionIncludeUnknowns')?.disable();\n } else {\n this.restrictionForm!.get('ageRestrictionIncludeUnknowns')?.enable();\n }\n });\n\n this.restrictionForm.get('ageRestrictionIncludeUnknowns')?.valueChanges.subscribe(e => {\n this.selected.emit({\n ageRating: parseInt(this.restrictionForm?.get('ageRating')?.value, 10),\n includeUnknowns: e\n });\n });\n\n this.metadataService.getAllAgeRatings().subscribe(ratings => {\n this.ageRatings = ratings;\n this.cdRef.markForCheck();\n });\n\n\n }\n\n ngOnChanges() {\n if (!this.member) return;\n this.restrictionForm?.get('ageRating')?.setValue(this.member?.ageRestriction.ageRating || AgeRating.NotApplicable);\n this.restrictionForm?.get('ageRestrictionIncludeUnknowns')?.setValue(this.member?.ageRestriction.includeUnknowns);\n this.cdRef.markForCheck();\n }\n\n}\n","\n
    {{t('title')}}
    \n

    {{t('description')}}

    \n\n
    \n \n
    \n\n
    \n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ScrobblingService} from \"../../_services/scrobbling.service\";\nimport {shareReplay} from \"rxjs/operators\";\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {ScrobbleEventTypePipe} from \"../../_single-module/scrobble-event-type.pipe\";\n\nimport {\n NgbAccordionBody,\n NgbAccordionCollapse,\n NgbAccordionDirective, NgbAccordionHeader,\n NgbAccordionItem\n} from \"@ng-bootstrap/ng-bootstrap\";\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-user-holds',\n standalone: true,\n imports: [CommonModule, ScrobbleEventTypePipe, NgbAccordionDirective, NgbAccordionCollapse, NgbAccordionBody, NgbAccordionItem, NgbAccordionHeader, TranslocoDirective],\n templateUrl: './user-holds.component.html',\n styleUrls: ['./user-holds.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UserHoldsComponent {\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly scrobblingService = inject(ScrobblingService);\n private readonly destroyRef = inject(DestroyRef);\n holds$ = this.scrobblingService.getHolds().pipe(takeUntilDestroyed(this.destroyRef), shareReplay());\n\n constructor() {}\n}\n","export enum ScrobbleEventType {\n ChapterRead = 0,\n AddWantToRead = 1,\n RemoveWantToRead = 2,\n ScoreUpdated = 3,\n Review = 4\n}\n\nexport interface ScrobbleEvent {\n seriesName: string;\n seriesId: number;\n libraryId: number;\n isProcessed: string;\n scrobbleEventType: ScrobbleEventType;\n rating: number | null;\n processedDateUtc: string;\n lastModifiedUtc: string;\n createdUtc: string;\n volumeNumber: number | null;\n chapterNumber: number | null;\n}\n","import {inject, Pipe, PipeTransform} from '@angular/core';\nimport {ScrobbleEventType} from \"../_models/scrobbling/scrobble-event\";\nimport {TranslocoService} from \"@ngneat/transloco\";\n\n@Pipe({\n name: 'scrobbleEventType',\n standalone: true\n})\nexport class ScrobbleEventTypePipe implements PipeTransform {\n\n translocoService = inject(TranslocoService);\n\n transform(value: ScrobbleEventType): string {\n switch (value) {\n case ScrobbleEventType.ChapterRead:\n return this.translocoService.translate('scrobble-event-type-pipe.chapter-read');\n case ScrobbleEventType.ScoreUpdated:\n return this.translocoService.translate('scrobble-event-type-pipe.score-updated');\n case ScrobbleEventType.AddWantToRead:\n return this.translocoService.translate('scrobble-event-type-pipe.want-to-read-add');\n case ScrobbleEventType.RemoveWantToRead:\n return this.translocoService.translate('scrobble-event-type-pipe.want-to-read-remove');\n case ScrobbleEventType.Review:\n return this.translocoService.translate('scrobble-event-type-pipe.review');\n }\n }\n\n}\n","export enum ScrobbleEventSortField {\n None = 0,\n Created = 1,\n LastModified = 2,\n Type= 3,\n Series = 4,\n IsProcessed = 5\n}\n\nexport interface ScrobbleEventFilter {\n field: ScrobbleEventSortField;\n isDescending: boolean;\n query?: string;\n}\n","\n
    {{t('title')}}
    \n

    {{t('description')}}

    \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 \n \n \n \n \n \n
    \n {{t('created-header')}}\n \n {{t('last-modified-header')}}\n \n {{t('type-header')}}\n \n {{t('series-header')}}\n \n {{t('data-header')}}\n \n {{t('is-processed-header')}}\n
    {{t('no-data')}}/td>\n
    \n {{item.createdUtc | translocoDate: {dateStyle: 'short', timeStyle: 'medium', } | defaultValue }}\n \n {{item.lastModifiedUtc | translocoDate: {dateStyle: 'short', timeStyle: 'medium' } | defaultValue }}\n \n {{item.scrobbleEventType | scrobbleEventType}}\n \n {{item.seriesName}}\n \n \n \n {{t('volume-and-chapter-num', {v: item.volumeNumber, n: item.chapterNumber})}}\n \n \n {{t('rating', {r: item.rating})}}\n \n \n {{t('not-applicable')}}\n \n \n \n \n \n \n {{item.isProcessed ? t('processed') : t('not-processed')}}\n \n
    \n
    \n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, OnInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {ScrobblingService} from \"../../_services/scrobbling.service\";\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {ScrobbleEvent, ScrobbleEventType} from \"../../_models/scrobbling/scrobble-event\";\nimport {ScrobbleEventTypePipe} from \"../scrobble-event-type.pipe\";\nimport {NgbPagination} from \"@ng-bootstrap/ng-bootstrap\";\nimport {ScrobbleEventSortField} from \"../../_models/scrobbling/scrobble-event-filter\";\nimport {debounceTime, take} from \"rxjs/operators\";\nimport {PaginatedResult, Pagination} from \"../../_models/pagination\";\nimport {SortableHeader, SortEvent} from \"../table/_directives/sortable-header.directive\";\nimport {FormControl, FormGroup, ReactiveFormsModule} from \"@angular/forms\";\nimport {TranslocoModule} from \"@ngneat/transloco\";\nimport {DefaultValuePipe} from \"../../pipe/default-value.pipe\";\nimport {TranslocoLocaleModule} from \"@ngneat/transloco-locale\";\n\n@Component({\n selector: 'app-user-scrobble-history',\n standalone: true,\n imports: [CommonModule, ScrobbleEventTypePipe, NgbPagination, ReactiveFormsModule, SortableHeader, TranslocoModule, DefaultValuePipe, TranslocoLocaleModule],\n templateUrl: './user-scrobble-history.component.html',\n styleUrls: ['./user-scrobble-history.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UserScrobbleHistoryComponent implements OnInit {\n\n private readonly scrobbleService = inject(ScrobblingService);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n pagination: Pagination | undefined;\n events: Array = [];\n formGroup: FormGroup = new FormGroup({\n 'filter': new FormControl('', [])\n });\n\n get ScrobbleEventType() { return ScrobbleEventType; }\n\n ngOnInit() {\n this.loadPage({column: 'createdUtc', direction: 'desc'});\n\n this.formGroup.get('filter')?.valueChanges.pipe(debounceTime(200), takeUntilDestroyed(this.destroyRef)).subscribe(query => {\n this.loadPage();\n })\n }\n\n onPageChange(pageNum: number) {\n let prevPage = 0;\n if (this.pagination) {\n prevPage = this.pagination.currentPage;\n this.pagination.currentPage = pageNum;\n }\n if (prevPage !== pageNum) {\n this.loadPage();\n }\n\n }\n\n updateSort(sortEvent: SortEvent) {\n this.loadPage(sortEvent);\n }\n\n loadPage(sortEvent?: SortEvent) {\n if (sortEvent && this.pagination) {\n this.pagination.currentPage = 1;\n this.cdRef.markForCheck();\n }\n const page = this.pagination?.currentPage || 0;\n const pageSize = this.pagination?.itemsPerPage || 0;\n const isDescending = sortEvent?.direction === 'desc';\n const field = this.mapSortColumnField(sortEvent?.column);\n const query = this.formGroup.get('filter')?.value;\n\n this.scrobbleService.getScrobbleEvents({query, field, isDescending}, page, pageSize)\n .pipe(take(1))\n .subscribe((result: PaginatedResult) => {\n this.events = result.result;\n this.pagination = result.pagination;\n this.cdRef.markForCheck();\n });\n }\n\n private mapSortColumnField(column: string | undefined) {\n switch (column) {\n case 'createdUtc': return ScrobbleEventSortField.Created;\n case 'isProcessed': return ScrobbleEventSortField.IsProcessed;\n case 'lastModifiedUtc': return ScrobbleEventSortField.LastModified;\n case 'seriesName': return ScrobbleEventSortField.Series;\n }\n return ScrobbleEventSortField.None;\n }\n\n\n}\n","\n
    \n \n
    \n \n {{totalPagesRead | compactNumber}}\n \n
    \n
    \n
    \n\n \n
    \n \n {{totalWordsRead | compactNumber}}\n \n
    \n
    \n
    \n\n \n
    \n \n {{timeSpentReading | timeDuration}}\n \n
    \n
    \n
    \n\n \n
    \n \n {{avgHoursPerWeekSpentReading | timeDuration}}\n \n
    \n
    \n
    \n\n \n
    \n \n {{t('chapters', {value: (chaptersRead | compactNumber)})}}\n \n
    \n
    \n
    \n\n \n
    \n \n {{lastActive | timeAgo}}\n \n
    \n
    \n
    \n
    \n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { StatisticsService } from 'src/app/_services/statistics.service';\nimport { GenericListModalComponent } from '../_modals/generic-list-modal/generic-list-modal.component';\nimport { TimeAgoPipe } from '../../../pipe/time-ago.pipe';\nimport { TimeDurationPipe } from '../../../pipe/time-duration.pipe';\nimport { DecimalPipe } from '@angular/common';\nimport { IconAndTitleComponent } from '../../../shared/icon-and-title/icon-and-title.component';\nimport {AccountService} from \"../../../_services/account.service\";\nimport {CompactNumberPipe} from \"../../../pipe/compact-number.pipe\";\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-user-stats-info-cards',\n templateUrl: './user-stats-info-cards.component.html',\n styleUrls: ['./user-stats-info-cards.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [IconAndTitleComponent, DecimalPipe, CompactNumberPipe, TimeDurationPipe, TimeAgoPipe, TranslocoDirective]\n})\nexport class UserStatsInfoCardsComponent {\n\n @Input() totalPagesRead: number = 0;\n @Input() totalWordsRead: number = 0;\n @Input() timeSpentReading: number = 0;\n @Input() chaptersRead: number = 0;\n @Input() lastActive: string = '';\n @Input() avgHoursPerWeekSpentReading: number = 0;\n\n constructor(private statsService: StatisticsService, private modalService: NgbModal, private accountService: AccountService) { }\n\n openPageByYearList() {\n const numberPipe = new CompactNumberPipe();\n this.statsService.getPagesPerYear().subscribe(yearCounts => {\n const ref = this.modalService.open(GenericListModalComponent, { scrollable: true });\n ref.componentInstance.items = yearCounts.map(t => `${t.name}: ${numberPipe.transform(t.value)} pages`);\n ref.componentInstance.title = 'Pages Read By Year';\n });\n }\n\n openWordByYearList() {\n const numberPipe = new CompactNumberPipe();\n this.statsService.getWordsPerYear().subscribe(yearCounts => {\n const ref = this.modalService.open(GenericListModalComponent, { scrollable: true });\n ref.componentInstance.items = yearCounts.map(t => `${t.name}: ${numberPipe.transform(t.value)} words`);\n ref.componentInstance.title = 'Words Read By Year';\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","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, OnInit} from '@angular/core';\nimport {map, Observable, shareReplay} from 'rxjs';\nimport {UserReadStatistics} from 'src/app/statistics/_models/user-read-statistics';\nimport {StatisticsService} from 'src/app/_services/statistics.service';\nimport {ReadHistoryEvent} from '../../_models/read-history-event';\nimport {MemberService} from 'src/app/_services/member.service';\nimport {AccountService} from 'src/app/_services/account.service';\nimport {PieDataItem} from '../../_models/pie-data-item';\nimport {LibraryService} from 'src/app/_services/library.service';\nimport {AsyncPipe, NgIf, PercentPipe} from '@angular/common';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {StatListComponent} from '../stat-list/stat-list.component';\nimport {ReadingActivityComponent} from '../reading-activity/reading-activity.component';\nimport {UserStatsInfoCardsComponent} from '../user-stats-info-cards/user-stats-info-cards.component';\nimport {TranslocoModule} from \"@ngneat/transloco\";\nimport {DayBreakdownComponent} from \"../day-breakdown/day-breakdown.component\";\n\n@Component({\n selector: 'app-user-stats',\n templateUrl: './user-stats.component.html',\n styleUrls: ['./user-stats.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n UserStatsInfoCardsComponent,\n ReadingActivityComponent,\n StatListComponent,\n AsyncPipe,\n TranslocoModule,\n DayBreakdownComponent,\n ],\n})\nexport class UserStatsComponent implements OnInit {\n\n userId: number | undefined = undefined;\n userStats$!: Observable;\n readSeries$!: Observable;\n isAdmin$: Observable;\n percentageRead$!: Observable;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private readonly cdRef: ChangeDetectorRef, private statService: StatisticsService,\n private accountService: AccountService, private memberService: MemberService,\n private libraryService: LibraryService) {\n this.isAdmin$ = this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef), map(u => {\n if (!u) return false;\n return this.accountService.hasAdminRole(u);\n }));\n\n }\n\n ngOnInit(): void {\n this.memberService.getMember().subscribe(me => {\n this.userId = me.id;\n this.cdRef.markForCheck();\n\n this.userStats$ = this.statService.getUserStatistics(this.userId).pipe(takeUntilDestroyed(this.destroyRef), shareReplay());\n this.readSeries$ = this.statService.getReadingHistory(this.userId).pipe(\n takeUntilDestroyed(this.destroyRef),\n );\n\n const pipe = new PercentPipe('en-US');\n this.libraryService.getLibraryNames().subscribe(names => {\n this.percentageRead$ = this.userStats$.pipe(takeUntilDestroyed(this.destroyRef), map(d => d.percentReadPerLibrary.map(l => {\n return {name: names[l.count], value: parseFloat((pipe.transform(l.value, '1.1-1') || '0').replace('%', ''))};\n }).sort((a: PieDataItem, b: PieDataItem) => b.value - a.value)));\n })\n\n });\n }\n\n}\n","export enum DevicePlatform {\n Custom = 0,\n PocketBook = 1,\n Kindle = 2,\n Kobo = 3\n}\n\nexport const devicePlatforms = [DevicePlatform.Custom, DevicePlatform.Kindle, DevicePlatform.Kobo, DevicePlatform.PocketBook];","import {inject, Pipe, PipeTransform} from '@angular/core';\nimport { DevicePlatform } from 'src/app/_models/device/device-platform';\nimport {TranslocoService} from \"@ngneat/transloco\";\n\n@Pipe({\n name: 'devicePlatform',\n standalone: true\n})\nexport class DevicePlatformPipe implements PipeTransform {\n\n translocoService = inject(TranslocoService);\n\n transform(value: DevicePlatform): string {\n switch(value) {\n case DevicePlatform.Kindle: return 'Kindle';\n case DevicePlatform.Kobo: return 'Kobo';\n case DevicePlatform.PocketBook: return 'PocketBook';\n case DevicePlatform.Custom: return this.translocoService.translate('device-platform-pipe.custom');\n default: return value + '';\n }\n }\n\n}\n","\n
    \n
    \n
    \n
    \n \n \n \n

    \n {{t('required-field')}}\n

    \n
    \n
    \n\n
    \n \n {{t('email-tooltip')}}\n \n \n \n\n \n \n

    \n {{t('valid-email')}}\n

    \n

    \n {{t('required-field')}}\n

    \n
    \n
    \n\n
    \n \n \n \n

    \n {{t('required-field')}}\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 OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { FormControl, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms';\nimport { ToastrService } from 'ngx-toastr';\nimport { Device } from 'src/app/_models/device/device';\nimport { DevicePlatform, devicePlatforms } from 'src/app/_models/device/device-platform';\nimport { DeviceService } from 'src/app/_services/device.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { DevicePlatformPipe } from '../_pipes/device-platform.pipe';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport {NgIf, NgFor, NgTemplateOutlet} from '@angular/common';\nimport {translate, TranslocoModule} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-edit-device',\n templateUrl: './edit-device.component.html',\n styleUrls: ['./edit-device.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ReactiveFormsModule, NgIf, NgbTooltip, NgFor, DevicePlatformPipe, TranslocoModule, NgTemplateOutlet]\n})\nexport class EditDeviceComponent implements OnInit, OnChanges {\n\n @Input() device: Device | undefined;\n\n @Output() deviceAdded: EventEmitter = new EventEmitter();\n @Output() deviceUpdated: EventEmitter = new EventEmitter();\n private readonly destroyRef = inject(DestroyRef);\n\n settingsForm: FormGroup = new FormGroup({});\n devicePlatforms = devicePlatforms;\n\n\n constructor(public deviceService: DeviceService, private toastr: ToastrService,\n private readonly cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n\n this.settingsForm.addControl('name', new FormControl(this.device?.name || '', [Validators.required]));\n this.settingsForm.addControl('email', new FormControl(this.device?.emailAddress || '', [Validators.required, Validators.email]));\n this.settingsForm.addControl('platform', new FormControl(this.device?.platform || DevicePlatform.Custom, [Validators.required]));\n\n // If user has filled in email and the platform hasn't been explicitly updated, try to update it for them\n this.settingsForm.get('email')?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(email => {\n if (this.settingsForm.get('platform')?.dirty) return;\n if (email === null || email === undefined || email === '') return;\n if (email.endsWith('@kindle.com')) this.settingsForm.get('platform')?.setValue(DevicePlatform.Kindle);\n else if (email.endsWith('@pbsync.com')) this.settingsForm.get('platform')?.setValue(DevicePlatform.PocketBook);\n else this.settingsForm.get('platform')?.setValue(DevicePlatform.Custom);\n this.cdRef.markForCheck();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.device) {\n this.settingsForm.get('name')?.setValue(this.device.name);\n this.settingsForm.get('email')?.setValue(this.device.emailAddress);\n this.settingsForm.get('platform')?.setValue(this.device.platform);\n this.cdRef.markForCheck();\n this.settingsForm.markAsPristine();\n }\n }\n\n addDevice() {\n if (this.device !== undefined) {\n this.deviceService.updateDevice(this.device.id, this.settingsForm.value.name, parseInt(this.settingsForm.value.platform, 10), this.settingsForm.value.email).subscribe(() => {\n this.settingsForm.reset();\n this.toastr.success(translate('toasts.device-updated'));\n this.cdRef.markForCheck();\n this.deviceUpdated.emit();\n })\n return;\n }\n\n this.deviceService.createDevice(this.settingsForm.value.name, parseInt(this.settingsForm.value.platform, 10), this.settingsForm.value.email).subscribe(() => {\n this.settingsForm.reset();\n this.toastr.success(translate('toasts.device-created'));\n this.cdRef.markForCheck();\n this.deviceAdded.emit();\n });\n }\n\n}\n","\n
    \n
    \n

    {{t('title')}}

    \n
    \n \n
    \n
    \n\n

    \n {{t('description')}}\n

    \n\n
    \n \n
    \n\n
    \n

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

    \n

    \n {{t('no-devices')}}\n

    \n \n
    \n
    \n
    {{device.name | sentenceCase}}
    \n {{t('platform-label')}}
    {{device.platform | devicePlatform}}
    \n {{t('email-label')}}
    {{device.emailAddress}}
    \n\n \n \n
    \n
    \n
    \n
    \n
    \n\n\n
    \n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { Device } from 'src/app/_models/device/device';\nimport { DeviceService } from 'src/app/_services/device.service';\nimport { DevicePlatformPipe } from '../_pipes/device-platform.pipe';\nimport { SentenceCasePipe } from '../../pipe/sentence-case.pipe';\nimport { NgIf, NgFor } from '@angular/common';\nimport { EditDeviceComponent } from '../edit-device/edit-device.component';\nimport { NgbCollapse } from '@ng-bootstrap/ng-bootstrap';\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-manage-devices',\n templateUrl: './manage-devices.component.html',\n styleUrls: ['./manage-devices.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgbCollapse, EditDeviceComponent, NgIf, NgFor, SentenceCasePipe, DevicePlatformPipe, TranslocoDirective]\n})\nexport class ManageDevicesComponent implements OnInit, OnDestroy {\n\n devices: Array = [];\n addDeviceIsCollapsed: boolean = true;\n device: Device | undefined;\n\n\n private readonly onDestroy = new Subject();\n\n constructor(public deviceService: DeviceService, private toastr: ToastrService,\n private readonly cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.loadDevices();\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n loadDevices() {\n this.addDeviceIsCollapsed = true;\n this.device = undefined;\n this.cdRef.markForCheck();\n this.deviceService.getDevices().subscribe(devices => {\n this.devices = devices;\n this.cdRef.markForCheck();\n });\n }\n\n deleteDevice(device: Device) {\n this.deviceService.deleteDevice(device.id).subscribe(() => {\n const index = this.devices.indexOf(device);\n this.devices.splice(index, 1);\n this.cdRef.markForCheck();\n });\n }\n\n editDevice(device: Device) {\n this.device = device;\n this.addDeviceIsCollapsed = false;\n this.cdRef.markForCheck();\n }\n}\n","import {inject, Pipe, PipeTransform} from '@angular/core';\nimport { ThemeProvider } from 'src/app/_models/preferences/site-theme';\nimport {TranslocoService} from \"@ngneat/transloco\";\n\n\n@Pipe({\n name: 'siteThemeProvider',\n standalone: true\n})\nexport class SiteThemeProviderPipe implements PipeTransform {\n\n translocoService = inject(TranslocoService);\n\n transform(provider: ThemeProvider | undefined | null): string {\n if (provider === null || provider === undefined) return '';\n switch(provider) {\n case ThemeProvider.System:\n return this.translocoService.translate('site-theme-provider-pipe.system');\n case ThemeProvider.User:\n return this.translocoService.translate('site-theme-provider-pipe.user');\n default:\n return '';\n }\n }\n\n}\n","\n
    \n
    \n

    {{t('title')}}

    \n
    \n \n
    \n
    \n\n

    \n {{t('looking-for-theme')}}{{t('looking-for-theme-continued')}}\n

    \n\n
    \n

    {{t('site-themes')}}

    \n \n
    \n
    \n
    {{theme.name | sentenceCase}}
    \n
    {{theme.provider | siteThemeProvider}}
    \n \n \n
    \n
    \n
    \n
    \n
    \n\n\n
    \n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n} from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { distinctUntilChanged, take } from 'rxjs';\nimport { ThemeService } from 'src/app/_services/theme.service';\nimport { SiteTheme } from 'src/app/_models/preferences/site-theme';\nimport { User } from 'src/app/_models/user';\nimport { AccountService } from 'src/app/_services/account.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { SiteThemeProviderPipe } from '../_pipes/site-theme-provider.pipe';\nimport { SentenceCasePipe } from '../../pipe/sentence-case.pipe';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\nimport {TranslocoDirective, TranslocoService} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-theme-manager',\n templateUrl: './theme-manager.component.html',\n styleUrls: ['./theme-manager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgFor, AsyncPipe, SentenceCasePipe, SiteThemeProviderPipe, TranslocoDirective]\n})\nexport class ThemeManagerComponent {\n\n currentTheme: SiteTheme | undefined;\n isAdmin: boolean = false;\n user: User | undefined;\n private readonly destroyRef = inject(DestroyRef);\n private readonly translocService = inject(TranslocoService);\n\n\n constructor(public themeService: ThemeService, private accountService: AccountService,\n private toastr: ToastrService, private readonly cdRef: ChangeDetectorRef) {\n\n themeService.currentTheme$.pipe(takeUntilDestroyed(this.destroyRef), distinctUntilChanged()).subscribe(theme => {\n this.currentTheme = theme;\n this.cdRef.markForCheck();\n });\n\n accountService.currentUser$.pipe(take(1)).subscribe(user => {\n if (user) {\n this.user = user;\n this.isAdmin = accountService.hasAdminRole(user);\n this.cdRef.markForCheck();\n }\n });\n }\n\n applyTheme(theme: SiteTheme) {\n\n if (this.user) {\n const pref = Object.assign({}, this.user.preferences);\n pref.theme = theme;\n this.accountService.updatePreferences(pref).subscribe(updatedPref => {\n if (this.user) {\n this.user.preferences = updatedPref;\n }\n this.themeService.setTheme(theme.name);\n this.cdRef.markForCheck();\n });\n }\n\n }\n\n updateDefault(theme: SiteTheme) {\n this.themeService.setDefault(theme.id).subscribe(() => {\n this.toastr.success(this.translocService.translate('theme-manager.updated-toastr', {name: theme.name}));\n });\n }\n\n scan() {\n this.themeService.scan().subscribe(() => {\n this.toastr.info(this.translocService.translate('theme-manager.scan-queued'));\n });\n }\n}\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Input, Output, HostListener, Injectable, PLATFORM_ID, Component, ViewEncapsulation, Inject, ViewChild, Injector, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\n\nvar ColorFormats;\n(function (ColorFormats) {\n ColorFormats[ColorFormats[\"HEX\"] = 0] = \"HEX\";\n ColorFormats[ColorFormats[\"RGBA\"] = 1] = \"RGBA\";\n ColorFormats[ColorFormats[\"HSLA\"] = 2] = \"HSLA\";\n ColorFormats[ColorFormats[\"CMYK\"] = 3] = \"CMYK\";\n})(ColorFormats || (ColorFormats = {}));\nclass Rgba {\n constructor(r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n}\nclass Hsva {\n constructor(h, s, v, a) {\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n}\nclass Hsla {\n constructor(h, s, l, a) {\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n}\nclass Cmyk {\n constructor(c, m, y, k, a = 1) {\n this.c = c;\n this.m = m;\n this.y = y;\n this.k = k;\n this.a = a;\n }\n}\n\nfunction calculateAutoPositioning(elBounds, triggerElBounds) {\n // Defaults\n let usePositionX = 'right';\n let usePositionY = 'bottom';\n // Calculate collisions\n const { height, width } = elBounds;\n const { top, left } = triggerElBounds;\n const bottom = top + triggerElBounds.height;\n const right = left + triggerElBounds.width;\n const collisionTop = top - height < 0;\n const collisionBottom = bottom + height > (window.innerHeight || document.documentElement.clientHeight);\n const collisionLeft = left - width < 0;\n const collisionRight = right + width > (window.innerWidth || document.documentElement.clientWidth);\n const collisionAll = collisionTop && collisionBottom && collisionLeft && collisionRight;\n // Generate X & Y position values\n if (collisionBottom) {\n usePositionY = 'top';\n }\n if (collisionTop) {\n usePositionY = 'bottom';\n }\n if (collisionLeft) {\n usePositionX = 'right';\n }\n if (collisionRight) {\n usePositionX = 'left';\n }\n // Choose the largest gap available\n if (collisionAll) {\n const postions = ['left', 'right', 'top', 'bottom'];\n return postions.reduce((prev, next) => elBounds[prev] > elBounds[next] ? prev : next);\n }\n if ((collisionLeft && collisionRight)) {\n if (collisionTop) {\n return 'bottom';\n }\n if (collisionBottom) {\n return 'top';\n }\n return top > bottom ? 'top' : 'bottom';\n }\n if ((collisionTop && collisionBottom)) {\n if (collisionLeft) {\n return 'right';\n }\n if (collisionRight) {\n return 'left';\n }\n return left > right ? 'left' : 'right';\n }\n return `${usePositionY}-${usePositionX}`;\n}\nfunction detectIE() {\n let ua = '';\n if (typeof navigator !== 'undefined') {\n ua = navigator.userAgent.toLowerCase();\n }\n const msie = ua.indexOf('msie ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n // Other browser\n return false;\n}\nclass TextDirective {\n constructor() {\n this.newValue = new EventEmitter();\n }\n inputChange(event) {\n const value = event.target.value;\n if (this.rg === undefined) {\n this.newValue.emit(value);\n }\n else {\n const numeric = parseFloat(value);\n this.newValue.emit({ v: numeric, rg: this.rg });\n }\n }\n}\nTextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: TextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nTextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.2.0\", type: TextDirective, selector: \"[text]\", inputs: { rg: \"rg\", text: \"text\" }, outputs: { newValue: \"newValue\" }, host: { listeners: { \"input\": \"inputChange($event)\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: TextDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[text]'\n }]\n }], propDecorators: { rg: [{\n type: Input\n }], text: [{\n type: Input\n }], newValue: [{\n type: Output\n }], inputChange: [{\n type: HostListener,\n args: ['input', ['$event']]\n }] } });\nclass SliderDirective {\n constructor(elRef) {\n this.elRef = elRef;\n this.dragEnd = new EventEmitter();\n this.dragStart = new EventEmitter();\n this.newValue = new EventEmitter();\n this.listenerMove = (event) => this.move(event);\n this.listenerStop = () => this.stop();\n }\n mouseDown(event) {\n this.start(event);\n }\n touchStart(event) {\n this.start(event);\n }\n move(event) {\n event.preventDefault();\n this.setCursor(event);\n }\n start(event) {\n this.setCursor(event);\n event.stopPropagation();\n document.addEventListener('mouseup', this.listenerStop);\n document.addEventListener('touchend', this.listenerStop);\n document.addEventListener('mousemove', this.listenerMove);\n document.addEventListener('touchmove', this.listenerMove);\n this.dragStart.emit();\n }\n stop() {\n document.removeEventListener('mouseup', this.listenerStop);\n document.removeEventListener('touchend', this.listenerStop);\n document.removeEventListener('mousemove', this.listenerMove);\n document.removeEventListener('touchmove', this.listenerMove);\n this.dragEnd.emit();\n }\n getX(event) {\n const position = this.elRef.nativeElement.getBoundingClientRect();\n const pageX = (event.pageX !== undefined) ? event.pageX : event.touches[0].pageX;\n return pageX - position.left - window.pageXOffset;\n }\n getY(event) {\n const position = this.elRef.nativeElement.getBoundingClientRect();\n const pageY = (event.pageY !== undefined) ? event.pageY : event.touches[0].pageY;\n return pageY - position.top - window.pageYOffset;\n }\n setCursor(event) {\n const width = this.elRef.nativeElement.offsetWidth;\n const height = this.elRef.nativeElement.offsetHeight;\n const x = Math.max(0, Math.min(this.getX(event), width));\n const y = Math.max(0, Math.min(this.getY(event), height));\n if (this.rgX !== undefined && this.rgY !== undefined) {\n this.newValue.emit({ s: x / width, v: (1 - y / height), rgX: this.rgX, rgY: this.rgY });\n }\n else if (this.rgX === undefined && this.rgY !== undefined) {\n this.newValue.emit({ v: y / height, rgY: this.rgY });\n }\n else if (this.rgX !== undefined && this.rgY === undefined) {\n this.newValue.emit({ v: x / width, rgX: this.rgX });\n }\n }\n}\nSliderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: SliderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nSliderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.2.0\", type: SliderDirective, selector: \"[slider]\", inputs: { rgX: \"rgX\", rgY: \"rgY\", slider: \"slider\" }, outputs: { dragEnd: \"dragEnd\", dragStart: \"dragStart\", newValue: \"newValue\" }, host: { listeners: { \"mousedown\": \"mouseDown($event)\", \"touchstart\": \"touchStart($event)\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: SliderDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[slider]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { rgX: [{\n type: Input\n }], rgY: [{\n type: Input\n }], slider: [{\n type: Input\n }], dragEnd: [{\n type: Output\n }], dragStart: [{\n type: Output\n }], newValue: [{\n type: Output\n }], mouseDown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], touchStart: [{\n type: HostListener,\n args: ['touchstart', ['$event']]\n }] } });\nclass SliderPosition {\n constructor(h, s, v, a) {\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n}\nclass SliderDimension {\n constructor(h, s, v, a) {\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n}\n\nclass ColorPickerService {\n constructor() {\n this.active = null;\n }\n setActive(active) {\n if (this.active && this.active !== active && this.active.cpDialogDisplay !== 'inline') {\n this.active.closeDialog();\n }\n this.active = active;\n }\n hsva2hsla(hsva) {\n const h = hsva.h, s = hsva.s, v = hsva.v, a = hsva.a;\n if (v === 0) {\n return new Hsla(h, 0, 0, a);\n }\n else if (s === 0 && v === 1) {\n return new Hsla(h, 1, 1, a);\n }\n else {\n const l = v * (2 - s) / 2;\n return new Hsla(h, v * s / (1 - Math.abs(2 * l - 1)), l, a);\n }\n }\n hsla2hsva(hsla) {\n const h = Math.min(hsla.h, 1), s = Math.min(hsla.s, 1);\n const l = Math.min(hsla.l, 1), a = Math.min(hsla.a, 1);\n if (l === 0) {\n return new Hsva(h, 0, 0, a);\n }\n else {\n const v = l + s * (1 - Math.abs(2 * l - 1)) / 2;\n return new Hsva(h, 2 * (v - l) / v, v, a);\n }\n }\n hsvaToRgba(hsva) {\n let r, g, b;\n const h = hsva.h, s = hsva.s, v = hsva.v, a = hsva.a;\n const i = Math.floor(h * 6);\n const f = h * 6 - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n r = v, g = t, b = p;\n break;\n case 1:\n r = q, g = v, b = p;\n break;\n case 2:\n r = p, g = v, b = t;\n break;\n case 3:\n r = p, g = q, b = v;\n break;\n case 4:\n r = t, g = p, b = v;\n break;\n case 5:\n r = v, g = p, b = q;\n break;\n default:\n r = 0, g = 0, b = 0;\n }\n return new Rgba(r, g, b, a);\n }\n cmykToRgb(cmyk) {\n const r = (1 - cmyk.c) * (1 - cmyk.k);\n const g = (1 - cmyk.m) * (1 - cmyk.k);\n const b = (1 - cmyk.y) * (1 - cmyk.k);\n return new Rgba(r, g, b, cmyk.a);\n }\n rgbaToCmyk(rgba) {\n const k = 1 - Math.max(rgba.r, rgba.g, rgba.b);\n if (k === 1) {\n return new Cmyk(0, 0, 0, 1, rgba.a);\n }\n else {\n const c = (1 - rgba.r - k) / (1 - k);\n const m = (1 - rgba.g - k) / (1 - k);\n const y = (1 - rgba.b - k) / (1 - k);\n return new Cmyk(c, m, y, k, rgba.a);\n }\n }\n rgbaToHsva(rgba) {\n let h, s;\n const r = Math.min(rgba.r, 1), g = Math.min(rgba.g, 1);\n const b = Math.min(rgba.b, 1), a = Math.min(rgba.a, 1);\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n const v = max, d = max - min;\n s = (max === 0) ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n h = 0;\n }\n h /= 6;\n }\n return new Hsva(h, s, v, a);\n }\n rgbaToHex(rgba, allowHex8) {\n /* eslint-disable no-bitwise */\n let hex = '#' + ((1 << 24) | (rgba.r << 16) | (rgba.g << 8) | rgba.b).toString(16).substr(1);\n if (allowHex8) {\n hex += ((1 << 8) | Math.round(rgba.a * 255)).toString(16).substr(1);\n }\n /* eslint-enable no-bitwise */\n return hex;\n }\n normalizeCMYK(cmyk) {\n return new Cmyk(cmyk.c / 100, cmyk.m / 100, cmyk.y / 100, cmyk.k / 100, cmyk.a);\n }\n denormalizeCMYK(cmyk) {\n return new Cmyk(Math.floor(cmyk.c * 100), Math.floor(cmyk.m * 100), Math.floor(cmyk.y * 100), Math.floor(cmyk.k * 100), cmyk.a);\n }\n denormalizeRGBA(rgba) {\n return new Rgba(Math.round(rgba.r * 255), Math.round(rgba.g * 255), Math.round(rgba.b * 255), rgba.a);\n }\n stringToHsva(colorString = '', allowHex8 = false) {\n let hsva = null;\n colorString = (colorString || '').toLowerCase();\n const stringParsers = [\n {\n re: /(rgb)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[2], 10) / 255, parseInt(execResult[3], 10) / 255, parseInt(execResult[4], 10) / 255, isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\n }\n }, {\n re: /(hsl)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function (execResult) {\n return new Hsla(parseInt(execResult[2], 10) / 360, parseInt(execResult[3], 10) / 100, parseInt(execResult[4], 10) / 100, isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\n }\n }\n ];\n if (allowHex8) {\n stringParsers.push({\n re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})?$/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[1], 16) / 255, parseInt(execResult[2], 16) / 255, parseInt(execResult[3], 16) / 255, parseInt(execResult[4] || 'FF', 16) / 255);\n }\n });\n }\n else {\n stringParsers.push({\n re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[1], 16) / 255, parseInt(execResult[2], 16) / 255, parseInt(execResult[3], 16) / 255, 1);\n }\n });\n }\n stringParsers.push({\n re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[1] + execResult[1], 16) / 255, parseInt(execResult[2] + execResult[2], 16) / 255, parseInt(execResult[3] + execResult[3], 16) / 255, 1);\n }\n });\n for (const key in stringParsers) {\n if (stringParsers.hasOwnProperty(key)) {\n const parser = stringParsers[key];\n const match = parser.re.exec(colorString), color = match && parser.parse(match);\n if (color) {\n if (color instanceof Rgba) {\n hsva = this.rgbaToHsva(color);\n }\n else if (color instanceof Hsla) {\n hsva = this.hsla2hsva(color);\n }\n return hsva;\n }\n }\n }\n return hsva;\n }\n outputFormat(hsva, outputFormat, alphaChannel) {\n if (outputFormat === 'auto') {\n outputFormat = hsva.a < 1 ? 'rgba' : 'hex';\n }\n switch (outputFormat) {\n case 'hsla':\n const hsla = this.hsva2hsla(hsva);\n const hslaText = new Hsla(Math.round((hsla.h) * 360), Math.round(hsla.s * 100), Math.round(hsla.l * 100), Math.round(hsla.a * 100) / 100);\n if (hsva.a < 1 || alphaChannel === 'always') {\n return 'hsla(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%,' +\n hslaText.a + ')';\n }\n else {\n return 'hsl(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%)';\n }\n case 'rgba':\n const rgba = this.denormalizeRGBA(this.hsvaToRgba(hsva));\n if (hsva.a < 1 || alphaChannel === 'always') {\n return 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' +\n Math.round(rgba.a * 100) / 100 + ')';\n }\n else {\n return 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')';\n }\n default:\n const allowHex8 = (alphaChannel === 'always' || alphaChannel === 'forced');\n return this.rgbaToHex(this.denormalizeRGBA(this.hsvaToRgba(hsva)), allowHex8);\n }\n }\n}\nColorPickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColorPickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerService, decorators: [{\n type: Injectable\n }] });\n\n// Do not store that on the class instance since the condition will be run\n// every time the class is created.\nconst SUPPORTS_TOUCH = typeof window !== 'undefined' && 'ontouchstart' in window;\nclass ColorPickerComponent {\n constructor(ngZone, elRef, cdRef, document, platformId, service) {\n this.ngZone = ngZone;\n this.elRef = elRef;\n this.cdRef = cdRef;\n this.document = document;\n this.platformId = platformId;\n this.service = service;\n this.isIE10 = false;\n this.dialogArrowSize = 10;\n this.dialogArrowOffset = 15;\n this.dialogInputFields = [\n ColorFormats.HEX,\n ColorFormats.RGBA,\n ColorFormats.HSLA,\n ColorFormats.CMYK\n ];\n this.useRootViewContainer = false;\n this.eyeDropperSupported = isPlatformBrowser(this.platformId) && 'EyeDropper' in this.document.defaultView;\n }\n handleEsc(event) {\n if (this.show && this.cpDialogDisplay === 'popup') {\n this.onCancelColor(event);\n }\n }\n handleEnter(event) {\n if (this.show && this.cpDialogDisplay === 'popup') {\n this.onAcceptColor(event);\n }\n }\n ngOnInit() {\n this.slider = new SliderPosition(0, 0, 0, 0);\n const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140;\n const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140;\n this.sliderDimMax = new SliderDimension(hueWidth, this.cpWidth, 130, alphaWidth);\n if (this.cpCmykEnabled) {\n this.format = ColorFormats.CMYK;\n }\n else if (this.cpOutputFormat === 'rgba') {\n this.format = ColorFormats.RGBA;\n }\n else if (this.cpOutputFormat === 'hsla') {\n this.format = ColorFormats.HSLA;\n }\n else {\n this.format = ColorFormats.HEX;\n }\n this.listenerMouseDown = (event) => { this.onMouseDown(event); };\n this.listenerResize = () => { this.onResize(); };\n this.openDialog(this.initialColor, false);\n }\n ngOnDestroy() {\n this.closeDialog();\n }\n ngAfterViewInit() {\n if (this.cpWidth !== 230 || this.cpDialogDisplay === 'inline') {\n const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140;\n const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140;\n this.sliderDimMax = new SliderDimension(hueWidth, this.cpWidth, 130, alphaWidth);\n this.updateColorPicker(false);\n this.cdRef.detectChanges();\n }\n }\n openDialog(color, emit = true) {\n this.service.setActive(this);\n if (!this.width) {\n this.cpWidth = this.directiveElementRef.nativeElement.offsetWidth;\n }\n if (!this.height) {\n this.height = 320;\n }\n this.setInitialColor(color);\n this.setColorFromString(color, emit);\n this.openColorPicker();\n }\n closeDialog() {\n this.closeColorPicker();\n }\n setupDialog(instance, elementRef, color, cpWidth, cpHeight, cpDialogDisplay, cpFallbackColor, cpColorMode, cpCmykEnabled, cpAlphaChannel, cpOutputFormat, cpDisableInput, cpIgnoredElements, cpSaveClickOutside, cpCloseClickOutside, cpUseRootViewContainer, cpPosition, cpPositionOffset, cpPositionRelativeToArrow, cpPresetLabel, cpPresetColors, cpPresetColorsClass, cpMaxPresetColorsLength, cpPresetEmptyMessage, cpPresetEmptyMessageClass, cpOKButton, cpOKButtonClass, cpOKButtonText, cpCancelButton, cpCancelButtonClass, cpCancelButtonText, cpAddColorButton, cpAddColorButtonClass, cpAddColorButtonText, cpRemoveColorButtonClass, cpEyeDropper, cpTriggerElement, cpExtraTemplate) {\n this.setInitialColor(color);\n this.setColorMode(cpColorMode);\n this.isIE10 = (detectIE() === 10);\n this.directiveInstance = instance;\n this.directiveElementRef = elementRef;\n this.cpDisableInput = cpDisableInput;\n this.cpCmykEnabled = cpCmykEnabled;\n this.cpAlphaChannel = cpAlphaChannel;\n this.cpOutputFormat = cpOutputFormat;\n this.cpDialogDisplay = cpDialogDisplay;\n this.cpIgnoredElements = cpIgnoredElements;\n this.cpSaveClickOutside = cpSaveClickOutside;\n this.cpCloseClickOutside = cpCloseClickOutside;\n this.useRootViewContainer = cpUseRootViewContainer;\n this.width = this.cpWidth = parseInt(cpWidth, 10);\n this.height = this.cpHeight = parseInt(cpHeight, 10);\n this.cpPosition = cpPosition;\n this.cpPositionOffset = parseInt(cpPositionOffset, 10);\n this.cpOKButton = cpOKButton;\n this.cpOKButtonText = cpOKButtonText;\n this.cpOKButtonClass = cpOKButtonClass;\n this.cpCancelButton = cpCancelButton;\n this.cpCancelButtonText = cpCancelButtonText;\n this.cpCancelButtonClass = cpCancelButtonClass;\n this.cpEyeDropper = cpEyeDropper;\n this.fallbackColor = cpFallbackColor || '#fff';\n this.setPresetConfig(cpPresetLabel, cpPresetColors);\n this.cpPresetColorsClass = cpPresetColorsClass;\n this.cpMaxPresetColorsLength = cpMaxPresetColorsLength;\n this.cpPresetEmptyMessage = cpPresetEmptyMessage;\n this.cpPresetEmptyMessageClass = cpPresetEmptyMessageClass;\n this.cpAddColorButton = cpAddColorButton;\n this.cpAddColorButtonText = cpAddColorButtonText;\n this.cpAddColorButtonClass = cpAddColorButtonClass;\n this.cpRemoveColorButtonClass = cpRemoveColorButtonClass;\n this.cpTriggerElement = cpTriggerElement;\n this.cpExtraTemplate = cpExtraTemplate;\n if (!cpPositionRelativeToArrow) {\n this.dialogArrowOffset = 0;\n }\n if (cpDialogDisplay === 'inline') {\n this.dialogArrowSize = 0;\n this.dialogArrowOffset = 0;\n }\n if (cpOutputFormat === 'hex' &&\n cpAlphaChannel !== 'always' && cpAlphaChannel !== 'forced') {\n this.cpAlphaChannel = 'disabled';\n }\n }\n setColorMode(mode) {\n switch (mode.toString().toUpperCase()) {\n case '1':\n case 'C':\n case 'COLOR':\n this.cpColorMode = 1;\n break;\n case '2':\n case 'G':\n case 'GRAYSCALE':\n this.cpColorMode = 2;\n break;\n case '3':\n case 'P':\n case 'PRESETS':\n this.cpColorMode = 3;\n break;\n default:\n this.cpColorMode = 1;\n }\n }\n setInitialColor(color) {\n this.initialColor = color;\n }\n setPresetConfig(cpPresetLabel, cpPresetColors) {\n this.cpPresetLabel = cpPresetLabel;\n this.cpPresetColors = cpPresetColors;\n }\n setColorFromString(value, emit = true, update = true) {\n let hsva;\n if (this.cpAlphaChannel === 'always' || this.cpAlphaChannel === 'forced') {\n hsva = this.service.stringToHsva(value, true);\n if (!hsva && !this.hsva) {\n hsva = this.service.stringToHsva(value, false);\n }\n }\n else {\n hsva = this.service.stringToHsva(value, false);\n }\n if (!hsva && !this.hsva) {\n hsva = this.service.stringToHsva(this.fallbackColor, false);\n }\n if (hsva) {\n this.hsva = hsva;\n this.sliderH = this.hsva.h;\n if (this.cpOutputFormat === 'hex' && this.cpAlphaChannel === 'disabled') {\n this.hsva.a = 1;\n }\n this.updateColorPicker(emit, update);\n }\n }\n onResize() {\n if (this.position === 'fixed') {\n this.setDialogPosition();\n }\n else if (this.cpDialogDisplay !== 'inline') {\n this.closeColorPicker();\n }\n }\n onDragEnd(slider) {\n this.directiveInstance.sliderDragEnd({ slider: slider, color: this.outputColor });\n }\n onDragStart(slider) {\n this.directiveInstance.sliderDragStart({ slider: slider, color: this.outputColor });\n }\n onMouseDown(event) {\n if (this.show &&\n !this.isIE10 &&\n this.cpDialogDisplay === 'popup' &&\n event.target !== this.directiveElementRef.nativeElement &&\n !this.isDescendant(this.elRef.nativeElement, event.target) &&\n !this.isDescendant(this.directiveElementRef.nativeElement, event.target) &&\n this.cpIgnoredElements.filter((item) => item === event.target).length === 0) {\n this.ngZone.run(() => {\n if (this.cpSaveClickOutside) {\n this.directiveInstance.colorSelected(this.outputColor);\n }\n else {\n this.hsva = null;\n this.setColorFromString(this.initialColor, false);\n if (this.cpCmykEnabled) {\n this.directiveInstance.cmykChanged(this.cmykColor);\n }\n this.directiveInstance.colorChanged(this.initialColor);\n this.directiveInstance.colorCanceled();\n }\n if (this.cpCloseClickOutside) {\n this.closeColorPicker();\n }\n });\n }\n }\n onAcceptColor(event) {\n event.stopPropagation();\n if (this.outputColor) {\n this.directiveInstance.colorSelected(this.outputColor);\n }\n if (this.cpDialogDisplay === 'popup') {\n this.closeColorPicker();\n }\n }\n onCancelColor(event) {\n this.hsva = null;\n event.stopPropagation();\n this.directiveInstance.colorCanceled();\n this.setColorFromString(this.initialColor, true);\n if (this.cpDialogDisplay === 'popup') {\n if (this.cpCmykEnabled) {\n this.directiveInstance.cmykChanged(this.cmykColor);\n }\n this.directiveInstance.colorChanged(this.initialColor, true);\n this.closeColorPicker();\n }\n }\n onEyeDropper() {\n if (!this.eyeDropperSupported)\n return;\n const eyeDropper = new window.EyeDropper();\n eyeDropper.open().then((eyeDropperResult) => {\n this.setColorFromString(eyeDropperResult.sRGBHex, true);\n });\n }\n onFormatToggle(change) {\n const availableFormats = this.dialogInputFields.length -\n (this.cpCmykEnabled ? 0 : 1);\n const nextFormat = (((this.dialogInputFields.indexOf(this.format) + change) %\n availableFormats) + availableFormats) % availableFormats;\n this.format = this.dialogInputFields[nextFormat];\n }\n onColorChange(value) {\n this.hsva.s = value.s / value.rgX;\n this.hsva.v = value.v / value.rgY;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'lightness',\n value: this.hsva.v,\n color: this.outputColor\n });\n this.directiveInstance.sliderChanged({\n slider: 'saturation',\n value: this.hsva.s,\n color: this.outputColor\n });\n }\n onHueChange(value) {\n this.hsva.h = value.v / value.rgX;\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'hue',\n value: this.hsva.h,\n color: this.outputColor\n });\n }\n onValueChange(value) {\n this.hsva.v = value.v / value.rgX;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'value',\n value: this.hsva.v,\n color: this.outputColor\n });\n }\n onAlphaChange(value) {\n this.hsva.a = value.v / value.rgX;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'alpha',\n value: this.hsva.a,\n color: this.outputColor\n });\n }\n onHexInput(value) {\n if (value === null) {\n this.updateColorPicker();\n }\n else {\n if (value && value[0] !== '#') {\n value = '#' + value;\n }\n let validHex = /^#([a-f0-9]{3}|[a-f0-9]{6})$/gi;\n if (this.cpAlphaChannel === 'always') {\n validHex = /^#([a-f0-9]{3}|[a-f0-9]{6}|[a-f0-9]{8})$/gi;\n }\n const valid = validHex.test(value);\n if (valid) {\n if (value.length < 5) {\n value = '#' + value.substring(1)\n .split('')\n .map(c => c + c)\n .join('');\n }\n if (this.cpAlphaChannel === 'forced') {\n value += Math.round(this.hsva.a * 255).toString(16);\n }\n this.setColorFromString(value, true, false);\n }\n this.directiveInstance.inputChanged({\n input: 'hex',\n valid: valid,\n value: value,\n color: this.outputColor\n });\n }\n }\n onRedInput(value) {\n const rgba = this.service.hsvaToRgba(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n rgba.r = value.v / value.rg;\n this.hsva = this.service.rgbaToHsva(rgba);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'red',\n valid: valid,\n value: rgba.r,\n color: this.outputColor\n });\n }\n onBlueInput(value) {\n const rgba = this.service.hsvaToRgba(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n rgba.b = value.v / value.rg;\n this.hsva = this.service.rgbaToHsva(rgba);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'blue',\n valid: valid,\n value: rgba.b,\n color: this.outputColor\n });\n }\n onGreenInput(value) {\n const rgba = this.service.hsvaToRgba(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n rgba.g = value.v / value.rg;\n this.hsva = this.service.rgbaToHsva(rgba);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'green',\n valid: valid,\n value: rgba.g,\n color: this.outputColor\n });\n }\n onHueInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.hsva.h = value.v / value.rg;\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'hue',\n valid: valid,\n value: this.hsva.h,\n color: this.outputColor\n });\n }\n onValueInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.hsva.v = value.v / value.rg;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'value',\n valid: valid,\n value: this.hsva.v,\n color: this.outputColor\n });\n }\n onAlphaInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.hsva.a = value.v / value.rg;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'alpha',\n valid: valid,\n value: this.hsva.a,\n color: this.outputColor\n });\n }\n onLightnessInput(value) {\n const hsla = this.service.hsva2hsla(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n hsla.l = value.v / value.rg;\n this.hsva = this.service.hsla2hsva(hsla);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'lightness',\n valid: valid,\n value: hsla.l,\n color: this.outputColor\n });\n }\n onSaturationInput(value) {\n const hsla = this.service.hsva2hsla(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n hsla.s = value.v / value.rg;\n this.hsva = this.service.hsla2hsva(hsla);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'saturation',\n valid: valid,\n value: hsla.s,\n color: this.outputColor\n });\n }\n onCyanInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.c = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'cyan',\n valid: true,\n value: this.cmyk.c,\n color: this.outputColor\n });\n }\n onMagentaInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.m = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'magenta',\n valid: true,\n value: this.cmyk.m,\n color: this.outputColor\n });\n }\n onYellowInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.y = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'yellow',\n valid: true,\n value: this.cmyk.y,\n color: this.outputColor\n });\n }\n onBlackInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.k = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'black',\n valid: true,\n value: this.cmyk.k,\n color: this.outputColor\n });\n }\n onAddPresetColor(event, value) {\n event.stopPropagation();\n if (!this.cpPresetColors.filter((color) => (color === value)).length) {\n this.cpPresetColors = this.cpPresetColors.concat(value);\n this.directiveInstance.presetColorsChanged(this.cpPresetColors);\n }\n }\n onRemovePresetColor(event, value) {\n event.stopPropagation();\n this.cpPresetColors = this.cpPresetColors.filter((color) => (color !== value));\n this.directiveInstance.presetColorsChanged(this.cpPresetColors);\n }\n // Private helper functions for the color picker dialog status\n openColorPicker() {\n if (!this.show) {\n this.show = true;\n this.hidden = true;\n setTimeout(() => {\n this.hidden = false;\n this.setDialogPosition();\n this.cdRef.detectChanges();\n }, 0);\n this.directiveInstance.stateChanged(true);\n if (!this.isIE10) {\n // The change detection should be run on `mousedown` event only when the condition\n // is met within the `onMouseDown` method.\n this.ngZone.runOutsideAngular(() => {\n // There's no sense to add both event listeners on touch devices since the `touchstart`\n // event is handled earlier than `mousedown`, so we'll get 2 change detections and the\n // second one will be unnecessary.\n if (SUPPORTS_TOUCH) {\n document.addEventListener('touchstart', this.listenerMouseDown);\n }\n else {\n document.addEventListener('mousedown', this.listenerMouseDown);\n }\n });\n }\n window.addEventListener('resize', this.listenerResize);\n }\n }\n closeColorPicker() {\n if (this.show) {\n this.show = false;\n this.directiveInstance.stateChanged(false);\n if (!this.isIE10) {\n if (SUPPORTS_TOUCH) {\n document.removeEventListener('touchstart', this.listenerMouseDown);\n }\n else {\n document.removeEventListener('mousedown', this.listenerMouseDown);\n }\n }\n window.removeEventListener('resize', this.listenerResize);\n if (!this.cdRef['destroyed']) {\n this.cdRef.detectChanges();\n }\n }\n }\n updateColorPicker(emit = true, update = true, cmykInput = false) {\n if (this.sliderDimMax) {\n if (this.cpColorMode === 2) {\n this.hsva.s = 0;\n }\n let hue, hsla, rgba;\n const lastOutput = this.outputColor;\n hsla = this.service.hsva2hsla(this.hsva);\n if (!this.cpCmykEnabled) {\n rgba = this.service.denormalizeRGBA(this.service.hsvaToRgba(this.hsva));\n }\n else {\n if (!cmykInput) {\n rgba = this.service.hsvaToRgba(this.hsva);\n this.cmyk = this.service.denormalizeCMYK(this.service.rgbaToCmyk(rgba));\n }\n else {\n rgba = this.service.cmykToRgb(this.service.normalizeCMYK(this.cmyk));\n this.hsva = this.service.rgbaToHsva(rgba);\n }\n rgba = this.service.denormalizeRGBA(rgba);\n this.sliderH = this.hsva.h;\n }\n hue = this.service.denormalizeRGBA(this.service.hsvaToRgba(new Hsva(this.sliderH || this.hsva.h, 1, 1, 1)));\n if (update) {\n this.hslaText = new Hsla(Math.round((hsla.h) * 360), Math.round(hsla.s * 100), Math.round(hsla.l * 100), Math.round(hsla.a * 100) / 100);\n this.rgbaText = new Rgba(rgba.r, rgba.g, rgba.b, Math.round(rgba.a * 100) / 100);\n if (this.cpCmykEnabled) {\n this.cmykText = new Cmyk(this.cmyk.c, this.cmyk.m, this.cmyk.y, this.cmyk.k, Math.round(this.cmyk.a * 100) / 100);\n }\n const allowHex8 = this.cpAlphaChannel === 'always';\n this.hexText = this.service.rgbaToHex(rgba, allowHex8);\n this.hexAlpha = this.rgbaText.a;\n }\n if (this.cpOutputFormat === 'auto') {\n if (this.format !== ColorFormats.RGBA && this.format !== ColorFormats.CMYK && this.format !== ColorFormats.HSLA) {\n if (this.hsva.a < 1) {\n this.format = this.hsva.a < 1 ? ColorFormats.RGBA : ColorFormats.HEX;\n }\n }\n }\n this.hueSliderColor = 'rgb(' + hue.r + ',' + hue.g + ',' + hue.b + ')';\n this.alphaSliderColor = 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')';\n this.outputColor = this.service.outputFormat(this.hsva, this.cpOutputFormat, this.cpAlphaChannel);\n this.selectedColor = this.service.outputFormat(this.hsva, 'rgba', null);\n if (this.format !== ColorFormats.CMYK) {\n this.cmykColor = '';\n }\n else {\n if (this.cpAlphaChannel === 'always' || this.cpAlphaChannel === 'enabled' ||\n this.cpAlphaChannel === 'forced') {\n const alpha = Math.round(this.cmyk.a * 100) / 100;\n this.cmykColor = `cmyka(${this.cmyk.c},${this.cmyk.m},${this.cmyk.y},${this.cmyk.k},${alpha})`;\n }\n else {\n this.cmykColor = `cmyk(${this.cmyk.c},${this.cmyk.m},${this.cmyk.y},${this.cmyk.k})`;\n }\n }\n this.slider = new SliderPosition((this.sliderH || this.hsva.h) * this.sliderDimMax.h - 8, this.hsva.s * this.sliderDimMax.s - 8, (1 - this.hsva.v) * this.sliderDimMax.v - 8, this.hsva.a * this.sliderDimMax.a - 8);\n if (emit && lastOutput !== this.outputColor) {\n if (this.cpCmykEnabled) {\n this.directiveInstance.cmykChanged(this.cmykColor);\n }\n this.directiveInstance.colorChanged(this.outputColor);\n }\n }\n }\n // Private helper functions for the color picker dialog positioning\n setDialogPosition() {\n if (this.cpDialogDisplay === 'inline') {\n this.position = 'relative';\n }\n else {\n let position = 'static', transform = '', style;\n let parentNode = null, transformNode = null;\n let node = this.directiveElementRef.nativeElement.parentNode;\n const dialogHeight = this.dialogElement.nativeElement.offsetHeight;\n while (node !== null && node.tagName !== 'HTML') {\n style = window.getComputedStyle(node);\n position = style.getPropertyValue('position');\n transform = style.getPropertyValue('transform');\n if (position !== 'static' && parentNode === null) {\n parentNode = node;\n }\n if (transform && transform !== 'none' && transformNode === null) {\n transformNode = node;\n }\n if (position === 'fixed') {\n parentNode = transformNode;\n break;\n }\n node = node.parentNode;\n }\n const boxDirective = this.createDialogBox(this.directiveElementRef.nativeElement, (position !== 'fixed'));\n if (this.useRootViewContainer || (position === 'fixed' &&\n (!parentNode || parentNode instanceof HTMLUnknownElement))) {\n this.top = boxDirective.top;\n this.left = boxDirective.left;\n }\n else {\n if (parentNode === null) {\n parentNode = node;\n }\n const boxParent = this.createDialogBox(parentNode, (position !== 'fixed'));\n this.top = boxDirective.top - boxParent.top;\n this.left = boxDirective.left - boxParent.left;\n }\n if (position === 'fixed') {\n this.position = 'fixed';\n }\n let usePosition = this.cpPosition;\n if (this.cpPosition === 'auto') {\n const dialogBounds = this.dialogElement.nativeElement.getBoundingClientRect();\n const windowInnerHeight = window.innerHeight;\n const windowInnerWidth = window.innerWidth;\n const elRefClientRect = this.elRef.nativeElement.getBoundingClientRect();\n const bottom = this.top + dialogBounds.height;\n if (bottom > windowInnerHeight) {\n this.top = windowInnerHeight - dialogBounds.height;\n this.cpArrowPosition = elRefClientRect.x / 2 - 20;\n }\n const right = this.left + dialogBounds.width;\n if (right > windowInnerWidth) {\n this.left = windowInnerWidth - dialogBounds.width;\n this.cpArrowPosition = elRefClientRect.x / 2 - 20;\n }\n const triggerBounds = this.cpTriggerElement.nativeElement.getBoundingClientRect();\n usePosition = calculateAutoPositioning(dialogBounds, triggerBounds);\n }\n if (usePosition === 'top') {\n this.arrowTop = dialogHeight - 1;\n this.top -= dialogHeight + this.dialogArrowSize;\n this.left += this.cpPositionOffset / 100 * boxDirective.width - this.dialogArrowOffset;\n }\n else if (usePosition === 'bottom') {\n this.top += boxDirective.height + this.dialogArrowSize;\n this.left += this.cpPositionOffset / 100 * boxDirective.width - this.dialogArrowOffset;\n }\n else if (usePosition === 'top-left' || usePosition === 'left-top') {\n this.top -= dialogHeight - boxDirective.height + boxDirective.height * this.cpPositionOffset / 100;\n this.left -= this.cpWidth + this.dialogArrowSize - 2 - this.dialogArrowOffset;\n }\n else if (usePosition === 'top-right' || usePosition === 'right-top') {\n this.top -= dialogHeight - boxDirective.height + boxDirective.height * this.cpPositionOffset / 100;\n this.left += boxDirective.width + this.dialogArrowSize - 2 - this.dialogArrowOffset;\n }\n else if (usePosition === 'left' || usePosition === 'bottom-left' || usePosition === 'left-bottom') {\n this.top += boxDirective.height * this.cpPositionOffset / 100 - this.dialogArrowOffset;\n this.left -= this.cpWidth + this.dialogArrowSize - 2;\n }\n else { // usePosition === 'right' || usePosition === 'bottom-right' || usePosition === 'right-bottom'\n this.top += boxDirective.height * this.cpPositionOffset / 100 - this.dialogArrowOffset;\n this.left += boxDirective.width + this.dialogArrowSize - 2;\n }\n this.cpUsePosition = usePosition;\n }\n }\n // Private helper functions for the color picker dialog positioning and opening\n isDescendant(parent, child) {\n let node = child.parentNode;\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n createDialogBox(element, offset) {\n const { top, left } = element.getBoundingClientRect();\n return {\n top: top + (offset ? window.pageYOffset : 0),\n left: left + (offset ? window.pageXOffset : 0),\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n}\nColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: ColorPickerService }], target: i0.ɵɵFactoryTarget.Component });\nColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.0\", type: ColorPickerComponent, selector: \"color-picker\", host: { listeners: { \"document:keyup.esc\": \"handleEsc($event)\", \"document:keyup.enter\": \"handleEnter($event)\" } }, viewQueries: [{ propertyName: \"dialogElement\", first: true, predicate: [\"dialogPopup\"], descendants: true, static: true }, { propertyName: \"hueSlider\", first: true, predicate: [\"hueSlider\"], descendants: true, static: true }, { propertyName: \"alphaSlider\", first: true, predicate: [\"alphaSlider\"], descendants: true, static: true }], ngImport: i0, template: \"
    \\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
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n \\n \\n \\n \\n
    \\n\\n
    \\n
    C
    M
    Y
    K
    A
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n \\n \\n \\n
    \\n\\n
    \\n
    H
    S
    L
    A
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n \\n \\n \\n
    \\n\\n
    \\n
    R
    G
    B
    A
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n \\n
    \\n\\n
    \\n
    Hex
    \\n
    A
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n \\n
    \\n\\n
    \\n
    V
    A
    \\n
    \\n
    \\n\\n
    \\n \\n \\n
    \\n\\n
    \\n
    \\n\\n
    {{cpPresetLabel}}
    \\n\\n
    \\n
    \\n \\n
    \\n
    \\n\\n
    {{cpPresetEmptyMessage}}
    \\n
    \\n\\n
    \\n \\n\\n \\n
    \\n\\n
    \\n \\n
    \\n
    \\n\", styles: [\".color-picker{position:absolute;z-index:1000;width:230px;height:auto;border:#777 solid 1px;cursor:default;-webkit-user-select:none;user-select:none;background-color:#fff}.color-picker *{box-sizing:border-box;margin:0;font-size:11px}.color-picker input{width:0;height:26px;min-width:0;font-size:13px;text-align:center;color:#000}.color-picker input:invalid,.color-picker input:-moz-ui-invalid,.color-picker input:-moz-submit-invalid{box-shadow:none}.color-picker input::-webkit-inner-spin-button,.color-picker input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.color-picker .arrow{position:absolute;z-index:999999;width:0;height:0;border-style:solid}.color-picker .arrow.arrow-top{left:8px;border-width:10px 5px;border-color:#777 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .arrow.arrow-bottom{top:-20px;left:8px;border-width:10px 5px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #777 rgba(0,0,0,0)}.color-picker .arrow.arrow-top-left,.color-picker .arrow.arrow-left-top{right:-21px;bottom:8px;border-width:5px 10px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #777}.color-picker .arrow.arrow-top-right,.color-picker .arrow.arrow-right-top{bottom:8px;left:-20px;border-width:5px 10px;border-color:rgba(0,0,0,0) #777 rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .arrow.arrow-left,.color-picker .arrow.arrow-left-bottom,.color-picker .arrow.arrow-bottom-left{top:8px;right:-21px;border-width:5px 10px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #777}.color-picker .arrow.arrow-right,.color-picker .arrow.arrow-right-bottom,.color-picker .arrow.arrow-bottom-right{top:8px;left:-20px;border-width:5px 10px;border-color:rgba(0,0,0,0) #777 rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .cursor{position:relative;width:16px;height:16px;border:#222 solid 2px;border-radius:50%;cursor:default}.color-picker .box{display:flex;padding:4px 8px}.color-picker .left{position:relative;padding:16px 8px}.color-picker .right{flex:1 1 auto;padding:12px 8px}.color-picker .button-area{padding:0 16px 16px;text-align:right}.color-picker .button-area button{margin-left:8px}.color-picker .preset-area{padding:4px 15px}.color-picker .preset-area .preset-label{overflow:hidden;width:100%;padding:4px;font-size:11px;white-space:nowrap;text-align:left;text-overflow:ellipsis;color:#555}.color-picker .preset-area .preset-color{position:relative;display:inline-block;width:18px;height:18px;margin:4px 6px 8px;border:#a9a9a9 solid 1px;border-radius:25%;cursor:pointer}.color-picker .preset-area .preset-empty-message{min-height:18px;margin-top:4px;margin-bottom:8px;font-style:italic;text-align:center}.color-picker .hex-text{width:100%;padding:4px 8px;font-size:11px}.color-picker .hex-text .box{padding:0 24px 8px 8px}.color-picker .hex-text .box div{float:left;flex:1 1 auto;text-align:center;color:#555;clear:left}.color-picker .hex-text .box input{flex:1 1 auto;padding:1px;border:#a9a9a9 solid 1px}.color-picker .hex-alpha .box div:first-child,.color-picker .hex-alpha .box input:first-child{flex-grow:3;margin-right:8px}.color-picker .cmyk-text,.color-picker .hsla-text,.color-picker .rgba-text,.color-picker .value-text{width:100%;padding:4px 8px;font-size:11px}.color-picker .cmyk-text .box,.color-picker .hsla-text .box,.color-picker .rgba-text .box{padding:0 24px 8px 8px}.color-picker .value-text .box{padding:0 8px 8px}.color-picker .cmyk-text .box div,.color-picker .hsla-text .box div,.color-picker .rgba-text .box div,.color-picker .value-text .box div{flex:1 1 auto;margin-right:8px;text-align:center;color:#555}.color-picker .cmyk-text .box div:last-child,.color-picker .hsla-text .box div:last-child,.color-picker .rgba-text .box div:last-child,.color-picker .value-text .box div:last-child{margin-right:0}.color-picker .cmyk-text .box input,.color-picker .hsla-text .box input,.color-picker .rgba-text .box input,.color-picker .value-text .box input{float:left;flex:1;padding:1px;margin:0 8px 0 0;border:#a9a9a9 solid 1px}.color-picker .cmyk-text .box input:last-child,.color-picker .hsla-text .box input:last-child,.color-picker .rgba-text .box input:last-child,.color-picker .value-text .box input:last-child{margin-right:0}.color-picker .hue-alpha{align-items:center;margin-bottom:3px}.color-picker .hue{direction:ltr;width:100%;height:16px;margin-bottom:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC)}.color-picker .value{direction:rtl;width:100%;height:16px;margin-bottom:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAACTklEQVR42u3SYUcrABhA4U2SkmRJMmWSJklKJiWZZpKUJJskKUmaTFImKZOUzMySpGRmliRNJilJSpKSJEtmSpIpmWmSdO736/6D+x7OP3gUCoWCv1cqlSQlJZGcnExKSgqpqamkpaWRnp5ORkYGmZmZqFQqsrKyyM7OJicnh9zcXNRqNXl5eeTn56PRaCgoKKCwsJCioiK0Wi3FxcWUlJRQWlpKWVkZ5eXlVFRUUFlZiU6no6qqiurqampqaqitraWurg69Xk99fT0GgwGj0UhDQwONjY00NTXR3NxMS0sLra2ttLW10d7ejslkwmw209HRQWdnJ11dXXR3d9PT00Nvby99fX309/czMDDA4OAgFouFoaEhrFYrw8PDjIyMMDo6ytjYGDabjfHxcSYmJpicnGRqagq73c709DQzMzPMzs4yNzfH/Pw8DocDp9OJy+XC7XazsLDA4uIiS0tLLC8vs7KywurqKmtra3g8HrxeLz6fD7/fz/r6OhsbG2xubrK1tcX29jaBQICdnR2CwSC7u7vs7e2xv7/PwcEBh4eHHB0dcXx8zMnJCaenp5ydnXF+fs7FxQWXl5dcXV1xfX3Nzc0Nt7e33N3dEQqFuL+/5+HhgXA4TCQS4fHxkaenJ56fn3l5eeH19ZVoNMrb2xvv7+98fHwQi8WIx+N8fn6SSCT4+vri+/ubn58ffn9/+VcKgSWwBJbAElgCS2AJLIElsASWwBJYAktgCSyBJbAElsASWAJLYAksgSWwBJbAElgCS2AJLIElsP4/WH8AmJ5Z6jHS4h8AAAAASUVORK5CYII=)}.color-picker .alpha{direction:ltr;width:100%;height:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwYQlZMa3gAAAWVJREFUaN7tmEGO6jAQRCsOArHgBpyAJYGjcGocxAm4A2IHpmoWE0eBH+ezmFlNvU06shJ3W6VEelWMUQAIIF9f6qZpimsA1LYtS2uF51/u27YVAFZVRUkEoGHdPV/sIcbIEIIkUdI/9Xa7neyv61+SWFUVAVCSct00TWn2fv6u3+Ecfd3tXzy/0+nEUu+SPjo/kqzrmiQpScN6v98XewfA8/lMkiLJ2WxGSUopcT6fM6U0NX9/frfbjev1WtfrlZfLhYfDQQHG/AIOlnGwjINlHCxjHCzjYJm/TJWdCwquJXseFFzGwDNNeiKMOJTO8xQdDQaeB29+K9efeLaBo9J7vdvtJj1RjFFjfiv7qv95tjx/7leSQgh93e1ffMeIp6O+YQjho/N791t1XVOSSI7N//K+4/GoxWLBx+PB5/Op5XLJ+/3OlJJWqxU3m83ovv5iGf8KjYNlHCxjHCzjYBkHy5gf5gusvQU7U37jTAAAAABJRU5ErkJggg==)}.color-picker .type-policy{position:absolute;top:218px;right:12px;width:16px;height:24px;background-size:8px 16px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACewAAAnsB01CO3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIASURBVEiJ7ZY9axRRFIafsxMStrLQJpAgpBFhi+C9w1YSo00I6RZ/g9vZpBf/QOr4GyRgkSKNSrAadsZqQGwCkuAWyRZJsySwvhZ7N/vhzrgbLH3Ld8597jlzz50zJokyxXH8DqDVar0qi6v8BbItqSGpEcfxdlmsFWXkvX8AfAVWg3UKPEnT9GKujMzsAFgZsVaCN1VTQd77XUnrgE1kv+6935268WRpzrnHZvYRWC7YvC3pRZZl3wozqtVqiyH9IgjAspkd1Gq1xUJQtVrdB9ZKIAOthdg/Qc65LUk7wNIMoCVJO865rYFhkqjX6/d7vV4GPJwBMqofURS5JEk6FYBer/eeYb/Mo9WwFnPOvQbeAvfuAAK4BN4sAJtAG/gJIElmNuiJyba3EGNmZiPeZuEVmVell/Y/6N+CzDn3AXhEOOo7Hv/3BeAz8IzQkMPnJbuPx1wC+yYJ7/0nYIP5S/0FHKdp+rwCEEXRS/rf5Hl1Gtb2M0iSpCOpCZzPATmX1EySpHMLAsiy7MjMDoHrGSDXZnaYZdnRwBh7J91utwmczAA6CbG3GgPleX4jqUH/a1CktqRGnuc3hSCAMB32gKspkCtgb3KCQMmkjeP4WNJThrNNZval1WptTIsv7JtQ4tmIdRa8qSoEpWl6YWZNoAN0zKxZNPehpLSBZv2t+Q0CJ9lLnARQLAAAAABJRU5ErkJggg==);background-repeat:no-repeat;background-position:center}.color-picker .type-policy .type-policy-arrow{display:block;width:100%;height:50%}.color-picker .selected-color{position:absolute;top:16px;left:8px;width:40px;height:40px;border:1px solid #a9a9a9;border-radius:50%}.color-picker .selected-color-background{width:40px;height:40px;border-radius:50%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC)}.color-picker .saturation-lightness{direction:ltr;width:100%;height:130px;border:none;cursor:pointer;touch-action:manipulation;background-size:100% 100%;background-image:url(data:image/png;base64,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)}.color-picker .cp-add-color-button-class{position:absolute;display:inline;padding:0;margin:3px -3px;border:0;cursor:pointer;background:transparent}.color-picker .cp-add-color-button-class:hover{text-decoration:underline}.color-picker .cp-add-color-button-class:disabled{cursor:not-allowed;color:#999}.color-picker .cp-add-color-button-class:disabled:hover{text-decoration:none}.color-picker .cp-remove-color-button-class{position:absolute;top:-5px;right:-5px;display:block;width:10px;height:10px;border-radius:50%;cursor:pointer;text-align:center;background:#fff;box-shadow:1px 1px 5px #333}.color-picker .cp-remove-color-button-class:before{content:\\\"x\\\";position:relative;bottom:3.5px;display:inline-block;font-size:10px}.color-picker .eyedropper-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);fill:#fff;mix-blend-mode:exclusion}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: TextDirective, selector: \"[text]\", inputs: [\"rg\", \"text\"], outputs: [\"newValue\"] }, { kind: \"directive\", type: SliderDirective, selector: \"[slider]\", inputs: [\"rgX\", \"rgY\", \"slider\"], outputs: [\"dragEnd\", \"dragStart\", \"newValue\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'color-picker', encapsulation: ViewEncapsulation.None, template: \"
    \\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
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n \\n \\n \\n \\n
    \\n\\n
    \\n
    C
    M
    Y
    K
    A
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n \\n \\n \\n
    \\n\\n
    \\n
    H
    S
    L
    A
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n \\n \\n \\n
    \\n\\n
    \\n
    R
    G
    B
    A
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n \\n
    \\n\\n
    \\n
    Hex
    \\n
    A
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n \\n
    \\n\\n
    \\n
    V
    A
    \\n
    \\n
    \\n\\n
    \\n \\n \\n
    \\n\\n
    \\n
    \\n\\n
    {{cpPresetLabel}}
    \\n\\n
    \\n
    \\n \\n
    \\n
    \\n\\n
    {{cpPresetEmptyMessage}}
    \\n
    \\n\\n
    \\n \\n\\n \\n
    \\n\\n
    \\n \\n
    \\n
    \\n\", styles: [\".color-picker{position:absolute;z-index:1000;width:230px;height:auto;border:#777 solid 1px;cursor:default;-webkit-user-select:none;user-select:none;background-color:#fff}.color-picker *{box-sizing:border-box;margin:0;font-size:11px}.color-picker input{width:0;height:26px;min-width:0;font-size:13px;text-align:center;color:#000}.color-picker input:invalid,.color-picker input:-moz-ui-invalid,.color-picker input:-moz-submit-invalid{box-shadow:none}.color-picker input::-webkit-inner-spin-button,.color-picker input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.color-picker .arrow{position:absolute;z-index:999999;width:0;height:0;border-style:solid}.color-picker .arrow.arrow-top{left:8px;border-width:10px 5px;border-color:#777 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .arrow.arrow-bottom{top:-20px;left:8px;border-width:10px 5px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #777 rgba(0,0,0,0)}.color-picker .arrow.arrow-top-left,.color-picker .arrow.arrow-left-top{right:-21px;bottom:8px;border-width:5px 10px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #777}.color-picker .arrow.arrow-top-right,.color-picker .arrow.arrow-right-top{bottom:8px;left:-20px;border-width:5px 10px;border-color:rgba(0,0,0,0) #777 rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .arrow.arrow-left,.color-picker .arrow.arrow-left-bottom,.color-picker .arrow.arrow-bottom-left{top:8px;right:-21px;border-width:5px 10px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #777}.color-picker .arrow.arrow-right,.color-picker .arrow.arrow-right-bottom,.color-picker .arrow.arrow-bottom-right{top:8px;left:-20px;border-width:5px 10px;border-color:rgba(0,0,0,0) #777 rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .cursor{position:relative;width:16px;height:16px;border:#222 solid 2px;border-radius:50%;cursor:default}.color-picker .box{display:flex;padding:4px 8px}.color-picker .left{position:relative;padding:16px 8px}.color-picker .right{flex:1 1 auto;padding:12px 8px}.color-picker .button-area{padding:0 16px 16px;text-align:right}.color-picker .button-area button{margin-left:8px}.color-picker .preset-area{padding:4px 15px}.color-picker .preset-area .preset-label{overflow:hidden;width:100%;padding:4px;font-size:11px;white-space:nowrap;text-align:left;text-overflow:ellipsis;color:#555}.color-picker .preset-area .preset-color{position:relative;display:inline-block;width:18px;height:18px;margin:4px 6px 8px;border:#a9a9a9 solid 1px;border-radius:25%;cursor:pointer}.color-picker .preset-area .preset-empty-message{min-height:18px;margin-top:4px;margin-bottom:8px;font-style:italic;text-align:center}.color-picker .hex-text{width:100%;padding:4px 8px;font-size:11px}.color-picker .hex-text .box{padding:0 24px 8px 8px}.color-picker .hex-text .box div{float:left;flex:1 1 auto;text-align:center;color:#555;clear:left}.color-picker .hex-text .box input{flex:1 1 auto;padding:1px;border:#a9a9a9 solid 1px}.color-picker .hex-alpha .box div:first-child,.color-picker .hex-alpha .box input:first-child{flex-grow:3;margin-right:8px}.color-picker .cmyk-text,.color-picker .hsla-text,.color-picker .rgba-text,.color-picker .value-text{width:100%;padding:4px 8px;font-size:11px}.color-picker .cmyk-text .box,.color-picker .hsla-text .box,.color-picker .rgba-text .box{padding:0 24px 8px 8px}.color-picker .value-text .box{padding:0 8px 8px}.color-picker .cmyk-text .box div,.color-picker .hsla-text .box div,.color-picker .rgba-text .box div,.color-picker .value-text .box div{flex:1 1 auto;margin-right:8px;text-align:center;color:#555}.color-picker .cmyk-text .box div:last-child,.color-picker .hsla-text .box div:last-child,.color-picker .rgba-text .box div:last-child,.color-picker .value-text .box div:last-child{margin-right:0}.color-picker .cmyk-text .box input,.color-picker .hsla-text .box input,.color-picker .rgba-text .box input,.color-picker .value-text .box input{float:left;flex:1;padding:1px;margin:0 8px 0 0;border:#a9a9a9 solid 1px}.color-picker .cmyk-text .box input:last-child,.color-picker .hsla-text .box input:last-child,.color-picker .rgba-text .box input:last-child,.color-picker .value-text .box input:last-child{margin-right:0}.color-picker .hue-alpha{align-items:center;margin-bottom:3px}.color-picker .hue{direction:ltr;width:100%;height:16px;margin-bottom:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC)}.color-picker .value{direction:rtl;width:100%;height:16px;margin-bottom:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAACTklEQVR42u3SYUcrABhA4U2SkmRJMmWSJklKJiWZZpKUJJskKUmaTFImKZOUzMySpGRmliRNJilJSpKSJEtmSpIpmWmSdO736/6D+x7OP3gUCoWCv1cqlSQlJZGcnExKSgqpqamkpaWRnp5ORkYGmZmZqFQqsrKyyM7OJicnh9zcXNRqNXl5eeTn56PRaCgoKKCwsJCioiK0Wi3FxcWUlJRQWlpKWVkZ5eXlVFRUUFlZiU6no6qqiurqampqaqitraWurg69Xk99fT0GgwGj0UhDQwONjY00NTXR3NxMS0sLra2ttLW10d7ejslkwmw209HRQWdnJ11dXXR3d9PT00Nvby99fX309/czMDDA4OAgFouFoaEhrFYrw8PDjIyMMDo6ytjYGDabjfHxcSYmJpicnGRqagq73c709DQzMzPMzs4yNzfH/Pw8DocDp9OJy+XC7XazsLDA4uIiS0tLLC8vs7KywurqKmtra3g8HrxeLz6fD7/fz/r6OhsbG2xubrK1tcX29jaBQICdnR2CwSC7u7vs7e2xv7/PwcEBh4eHHB0dcXx8zMnJCaenp5ydnXF+fs7FxQWXl5dcXV1xfX3Nzc0Nt7e33N3dEQqFuL+/5+HhgXA4TCQS4fHxkaenJ56fn3l5eeH19ZVoNMrb2xvv7+98fHwQi8WIx+N8fn6SSCT4+vri+/ubn58ffn9/+VcKgSWwBJbAElgCS2AJLIElsASWwBJYAktgCSyBJbAElsASWAJLYAksgSWwBJbAElgCS2AJLIElsP4/WH8AmJ5Z6jHS4h8AAAAASUVORK5CYII=)}.color-picker .alpha{direction:ltr;width:100%;height:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwYQlZMa3gAAAWVJREFUaN7tmEGO6jAQRCsOArHgBpyAJYGjcGocxAm4A2IHpmoWE0eBH+ezmFlNvU06shJ3W6VEelWMUQAIIF9f6qZpimsA1LYtS2uF51/u27YVAFZVRUkEoGHdPV/sIcbIEIIkUdI/9Xa7neyv61+SWFUVAVCSct00TWn2fv6u3+Ecfd3tXzy/0+nEUu+SPjo/kqzrmiQpScN6v98XewfA8/lMkiLJ2WxGSUopcT6fM6U0NX9/frfbjev1WtfrlZfLhYfDQQHG/AIOlnGwjINlHCxjHCzjYJm/TJWdCwquJXseFFzGwDNNeiKMOJTO8xQdDQaeB29+K9efeLaBo9J7vdvtJj1RjFFjfiv7qv95tjx/7leSQgh93e1ffMeIp6O+YQjho/N791t1XVOSSI7N//K+4/GoxWLBx+PB5/Op5XLJ+/3OlJJWqxU3m83ovv5iGf8KjYNlHCxjHCzjYBkHy5gf5gusvQU7U37jTAAAAABJRU5ErkJggg==)}.color-picker .type-policy{position:absolute;top:218px;right:12px;width:16px;height:24px;background-size:8px 16px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACewAAAnsB01CO3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIASURBVEiJ7ZY9axRRFIafsxMStrLQJpAgpBFhi+C9w1YSo00I6RZ/g9vZpBf/QOr4GyRgkSKNSrAadsZqQGwCkuAWyRZJsySwvhZ7N/vhzrgbLH3Ld8597jlzz50zJokyxXH8DqDVar0qi6v8BbItqSGpEcfxdlmsFWXkvX8AfAVWg3UKPEnT9GKujMzsAFgZsVaCN1VTQd77XUnrgE1kv+6935268WRpzrnHZvYRWC7YvC3pRZZl3wozqtVqiyH9IgjAspkd1Gq1xUJQtVrdB9ZKIAOthdg/Qc65LUk7wNIMoCVJO865rYFhkqjX6/d7vV4GPJwBMqofURS5JEk6FYBer/eeYb/Mo9WwFnPOvQbeAvfuAAK4BN4sAJtAG/gJIElmNuiJyba3EGNmZiPeZuEVmVell/Y/6N+CzDn3AXhEOOo7Hv/3BeAz8IzQkMPnJbuPx1wC+yYJ7/0nYIP5S/0FHKdp+rwCEEXRS/rf5Hl1Gtb2M0iSpCOpCZzPATmX1EySpHMLAsiy7MjMDoHrGSDXZnaYZdnRwBh7J91utwmczAA6CbG3GgPleX4jqUH/a1CktqRGnuc3hSCAMB32gKspkCtgb3KCQMmkjeP4WNJThrNNZval1WptTIsv7JtQ4tmIdRa8qSoEpWl6YWZNoAN0zKxZNPehpLSBZv2t+Q0CJ9lLnARQLAAAAABJRU5ErkJggg==);background-repeat:no-repeat;background-position:center}.color-picker .type-policy .type-policy-arrow{display:block;width:100%;height:50%}.color-picker .selected-color{position:absolute;top:16px;left:8px;width:40px;height:40px;border:1px solid #a9a9a9;border-radius:50%}.color-picker .selected-color-background{width:40px;height:40px;border-radius:50%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC)}.color-picker .saturation-lightness{direction:ltr;width:100%;height:130px;border:none;cursor:pointer;touch-action:manipulation;background-size:100% 100%;background-image:url(data:image/png;base64,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)}.color-picker .cp-add-color-button-class{position:absolute;display:inline;padding:0;margin:3px -3px;border:0;cursor:pointer;background:transparent}.color-picker .cp-add-color-button-class:hover{text-decoration:underline}.color-picker .cp-add-color-button-class:disabled{cursor:not-allowed;color:#999}.color-picker .cp-add-color-button-class:disabled:hover{text-decoration:none}.color-picker .cp-remove-color-button-class{position:absolute;top:-5px;right:-5px;display:block;width:10px;height:10px;border-radius:50%;cursor:pointer;text-align:center;background:#fff;box-shadow:1px 1px 5px #333}.color-picker .cp-remove-color-button-class:before{content:\\\"x\\\";position:relative;bottom:3.5px;display:inline-block;font-size:10px}.color-picker .eyedropper-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);fill:#fff;mix-blend-mode:exclusion}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ColorPickerService }]; }, propDecorators: { dialogElement: [{\n type: ViewChild,\n args: ['dialogPopup', { static: true }]\n }], hueSlider: [{\n type: ViewChild,\n args: ['hueSlider', { static: true }]\n }], alphaSlider: [{\n type: ViewChild,\n args: ['alphaSlider', { static: true }]\n }], handleEsc: [{\n type: HostListener,\n args: ['document:keyup.esc', ['$event']]\n }], handleEnter: [{\n type: HostListener,\n args: ['document:keyup.enter', ['$event']]\n }] } });\n\n// Caretaker note: we have still left the `typeof` condition in order to avoid\n// creating a breaking change for projects that still use the View Engine.\n// The `ngDevMode` is always available when Ivy is enabled.\n// This will be evaluated during compilation into `const NG_DEV_MODE = false`,\n// thus Terser will be able to tree-shake `console.warn` calls.\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\nclass ColorPickerDirective {\n constructor(injector, cfr, appRef, vcRef, elRef, _service) {\n this.injector = injector;\n this.cfr = cfr;\n this.appRef = appRef;\n this.vcRef = vcRef;\n this.elRef = elRef;\n this._service = _service;\n this.dialogCreated = false;\n this.ignoreChanges = false;\n this.viewAttachedToAppRef = false;\n this.cpWidth = '230px';\n this.cpHeight = 'auto';\n this.cpToggle = false;\n this.cpDisabled = false;\n this.cpIgnoredElements = [];\n this.cpFallbackColor = '';\n this.cpColorMode = 'color';\n this.cpCmykEnabled = false;\n this.cpOutputFormat = 'auto';\n this.cpAlphaChannel = 'enabled';\n this.cpDisableInput = false;\n this.cpDialogDisplay = 'popup';\n this.cpSaveClickOutside = true;\n this.cpCloseClickOutside = true;\n this.cpUseRootViewContainer = false;\n this.cpPosition = 'auto';\n this.cpPositionOffset = '0%';\n this.cpPositionRelativeToArrow = false;\n this.cpOKButton = false;\n this.cpOKButtonText = 'OK';\n this.cpOKButtonClass = 'cp-ok-button-class';\n this.cpCancelButton = false;\n this.cpCancelButtonText = 'Cancel';\n this.cpCancelButtonClass = 'cp-cancel-button-class';\n this.cpEyeDropper = false;\n this.cpPresetLabel = 'Preset colors';\n this.cpPresetColorsClass = 'cp-preset-colors-class';\n this.cpMaxPresetColorsLength = 6;\n this.cpPresetEmptyMessage = 'No colors added';\n this.cpPresetEmptyMessageClass = 'preset-empty-message';\n this.cpAddColorButton = false;\n this.cpAddColorButtonText = 'Add color';\n this.cpAddColorButtonClass = 'cp-add-color-button-class';\n this.cpRemoveColorButtonClass = 'cp-remove-color-button-class';\n this.cpArrowPosition = 0;\n this.cpInputChange = new EventEmitter(true);\n this.cpToggleChange = new EventEmitter(true);\n this.cpSliderChange = new EventEmitter(true);\n this.cpSliderDragEnd = new EventEmitter(true);\n this.cpSliderDragStart = new EventEmitter(true);\n this.colorPickerOpen = new EventEmitter(true);\n this.colorPickerClose = new EventEmitter(true);\n this.colorPickerCancel = new EventEmitter(true);\n this.colorPickerSelect = new EventEmitter(true);\n this.colorPickerChange = new EventEmitter(false);\n this.cpCmykColorChange = new EventEmitter(true);\n this.cpPresetColorsChange = new EventEmitter(true);\n }\n handleClick() {\n this.inputFocus();\n }\n handleFocus() {\n this.inputFocus();\n }\n handleInput(event) {\n this.inputChange(event);\n }\n ngOnDestroy() {\n if (this.cmpRef != null) {\n if (this.viewAttachedToAppRef) {\n this.appRef.detachView(this.cmpRef.hostView);\n }\n this.cmpRef.destroy();\n this.cmpRef = null;\n this.dialog = null;\n }\n }\n ngOnChanges(changes) {\n if (changes.cpToggle && !this.cpDisabled) {\n if (changes.cpToggle.currentValue) {\n this.openDialog();\n }\n else if (!changes.cpToggle.currentValue) {\n this.closeDialog();\n }\n }\n if (changes.colorPicker) {\n if (this.dialog && !this.ignoreChanges) {\n if (this.cpDialogDisplay === 'inline') {\n this.dialog.setInitialColor(changes.colorPicker.currentValue);\n }\n this.dialog.setColorFromString(changes.colorPicker.currentValue, false);\n if (this.cpUseRootViewContainer && this.cpDialogDisplay !== 'inline') {\n this.cmpRef.changeDetectorRef.detectChanges();\n }\n }\n this.ignoreChanges = false;\n }\n if (changes.cpPresetLabel || changes.cpPresetColors) {\n if (this.dialog) {\n this.dialog.setPresetConfig(this.cpPresetLabel, this.cpPresetColors);\n }\n }\n }\n openDialog() {\n if (!this.dialogCreated) {\n let vcRef = this.vcRef;\n this.dialogCreated = true;\n this.viewAttachedToAppRef = false;\n if (this.cpUseRootViewContainer && this.cpDialogDisplay !== 'inline') {\n const classOfRootComponent = this.appRef.componentTypes[0];\n const appInstance = this.injector.get(classOfRootComponent, Injector.NULL);\n if (appInstance !== Injector.NULL) {\n vcRef = appInstance.vcRef || appInstance.viewContainerRef || this.vcRef;\n if (NG_DEV_MODE && vcRef === this.vcRef) {\n console.warn('You are using cpUseRootViewContainer, ' +\n 'but the root component is not exposing viewContainerRef!' +\n 'Please expose it by adding \\'public vcRef: ViewContainerRef\\' to the constructor.');\n }\n }\n else {\n this.viewAttachedToAppRef = true;\n }\n }\n const compFactory = this.cfr.resolveComponentFactory(ColorPickerComponent);\n if (this.viewAttachedToAppRef) {\n this.cmpRef = compFactory.create(this.injector);\n this.appRef.attachView(this.cmpRef.hostView);\n document.body.appendChild(this.cmpRef.hostView.rootNodes[0]);\n }\n else {\n const injector = Injector.create({\n providers: [],\n // We shouldn't use `vcRef.parentInjector` since it's been deprecated long time ago and might be removed\n // in newer Angular versions: https://github.com/angular/angular/pull/25174.\n parent: vcRef.injector,\n });\n this.cmpRef = vcRef.createComponent(compFactory, 0, injector, []);\n }\n this.cmpRef.instance.setupDialog(this, this.elRef, this.colorPicker, this.cpWidth, this.cpHeight, this.cpDialogDisplay, this.cpFallbackColor, this.cpColorMode, this.cpCmykEnabled, this.cpAlphaChannel, this.cpOutputFormat, this.cpDisableInput, this.cpIgnoredElements, this.cpSaveClickOutside, this.cpCloseClickOutside, this.cpUseRootViewContainer, this.cpPosition, this.cpPositionOffset, this.cpPositionRelativeToArrow, this.cpPresetLabel, this.cpPresetColors, this.cpPresetColorsClass, this.cpMaxPresetColorsLength, this.cpPresetEmptyMessage, this.cpPresetEmptyMessageClass, this.cpOKButton, this.cpOKButtonClass, this.cpOKButtonText, this.cpCancelButton, this.cpCancelButtonClass, this.cpCancelButtonText, this.cpAddColorButton, this.cpAddColorButtonClass, this.cpAddColorButtonText, this.cpRemoveColorButtonClass, this.cpEyeDropper, this.elRef, this.cpExtraTemplate);\n this.dialog = this.cmpRef.instance;\n if (this.vcRef !== vcRef) {\n this.cmpRef.changeDetectorRef.detectChanges();\n }\n }\n else if (this.dialog) {\n this.dialog.openDialog(this.colorPicker);\n }\n }\n closeDialog() {\n if (this.dialog && this.cpDialogDisplay === 'popup') {\n this.dialog.closeDialog();\n }\n }\n cmykChanged(value) {\n this.cpCmykColorChange.emit(value);\n }\n stateChanged(state) {\n this.cpToggleChange.emit(state);\n if (state) {\n this.colorPickerOpen.emit(this.colorPicker);\n }\n else {\n this.colorPickerClose.emit(this.colorPicker);\n }\n }\n colorChanged(value, ignore = true) {\n this.ignoreChanges = ignore;\n this.colorPickerChange.emit(value);\n }\n colorSelected(value) {\n this.colorPickerSelect.emit(value);\n }\n colorCanceled() {\n this.colorPickerCancel.emit();\n }\n inputFocus() {\n const element = this.elRef.nativeElement;\n const ignored = this.cpIgnoredElements.filter((item) => item === element);\n if (!this.cpDisabled && !ignored.length) {\n if (typeof document !== 'undefined' && element === document.activeElement) {\n this.openDialog();\n }\n else if (!this.dialog || !this.dialog.show) {\n this.openDialog();\n }\n else {\n this.closeDialog();\n }\n }\n }\n inputChange(event) {\n if (this.dialog) {\n this.dialog.setColorFromString(event.target.value, true);\n }\n else {\n this.colorPicker = event.target.value;\n this.colorPickerChange.emit(this.colorPicker);\n }\n }\n inputChanged(event) {\n this.cpInputChange.emit(event);\n }\n sliderChanged(event) {\n this.cpSliderChange.emit(event);\n }\n sliderDragEnd(event) {\n this.cpSliderDragEnd.emit(event);\n }\n sliderDragStart(event) {\n this.cpSliderDragStart.emit(event);\n }\n presetColorsChanged(value) {\n this.cpPresetColorsChange.emit(value);\n }\n}\nColorPickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerDirective, deps: [{ token: i0.Injector }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: ColorPickerService }], target: i0.ɵɵFactoryTarget.Directive });\nColorPickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.2.0\", type: ColorPickerDirective, selector: \"[colorPicker]\", inputs: { colorPicker: \"colorPicker\", cpWidth: \"cpWidth\", cpHeight: \"cpHeight\", cpToggle: \"cpToggle\", cpDisabled: \"cpDisabled\", cpIgnoredElements: \"cpIgnoredElements\", cpFallbackColor: \"cpFallbackColor\", cpColorMode: \"cpColorMode\", cpCmykEnabled: \"cpCmykEnabled\", cpOutputFormat: \"cpOutputFormat\", cpAlphaChannel: \"cpAlphaChannel\", cpDisableInput: \"cpDisableInput\", cpDialogDisplay: \"cpDialogDisplay\", cpSaveClickOutside: \"cpSaveClickOutside\", cpCloseClickOutside: \"cpCloseClickOutside\", cpUseRootViewContainer: \"cpUseRootViewContainer\", cpPosition: \"cpPosition\", cpPositionOffset: \"cpPositionOffset\", cpPositionRelativeToArrow: \"cpPositionRelativeToArrow\", cpOKButton: \"cpOKButton\", cpOKButtonText: \"cpOKButtonText\", cpOKButtonClass: \"cpOKButtonClass\", cpCancelButton: \"cpCancelButton\", cpCancelButtonText: \"cpCancelButtonText\", cpCancelButtonClass: \"cpCancelButtonClass\", cpEyeDropper: \"cpEyeDropper\", cpPresetLabel: \"cpPresetLabel\", cpPresetColors: \"cpPresetColors\", cpPresetColorsClass: \"cpPresetColorsClass\", cpMaxPresetColorsLength: \"cpMaxPresetColorsLength\", cpPresetEmptyMessage: \"cpPresetEmptyMessage\", cpPresetEmptyMessageClass: \"cpPresetEmptyMessageClass\", cpAddColorButton: \"cpAddColorButton\", cpAddColorButtonText: \"cpAddColorButtonText\", cpAddColorButtonClass: \"cpAddColorButtonClass\", cpRemoveColorButtonClass: \"cpRemoveColorButtonClass\", cpArrowPosition: \"cpArrowPosition\", cpExtraTemplate: \"cpExtraTemplate\" }, outputs: { cpInputChange: \"cpInputChange\", cpToggleChange: \"cpToggleChange\", cpSliderChange: \"cpSliderChange\", cpSliderDragEnd: \"cpSliderDragEnd\", cpSliderDragStart: \"cpSliderDragStart\", colorPickerOpen: \"colorPickerOpen\", colorPickerClose: \"colorPickerClose\", colorPickerCancel: \"colorPickerCancel\", colorPickerSelect: \"colorPickerSelect\", colorPickerChange: \"colorPickerChange\", cpCmykColorChange: \"cpCmykColorChange\", cpPresetColorsChange: \"cpPresetColorsChange\" }, host: { listeners: { \"click\": \"handleClick()\", \"focus\": \"handleFocus()\", \"input\": \"handleInput($event)\" } }, exportAs: [\"ngxColorPicker\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[colorPicker]',\n exportAs: 'ngxColorPicker'\n }]\n }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: ColorPickerService }]; }, propDecorators: { colorPicker: [{\n type: Input\n }], cpWidth: [{\n type: Input\n }], cpHeight: [{\n type: Input\n }], cpToggle: [{\n type: Input\n }], cpDisabled: [{\n type: Input\n }], cpIgnoredElements: [{\n type: Input\n }], cpFallbackColor: [{\n type: Input\n }], cpColorMode: [{\n type: Input\n }], cpCmykEnabled: [{\n type: Input\n }], cpOutputFormat: [{\n type: Input\n }], cpAlphaChannel: [{\n type: Input\n }], cpDisableInput: [{\n type: Input\n }], cpDialogDisplay: [{\n type: Input\n }], cpSaveClickOutside: [{\n type: Input\n }], cpCloseClickOutside: [{\n type: Input\n }], cpUseRootViewContainer: [{\n type: Input\n }], cpPosition: [{\n type: Input\n }], cpPositionOffset: [{\n type: Input\n }], cpPositionRelativeToArrow: [{\n type: Input\n }], cpOKButton: [{\n type: Input\n }], cpOKButtonText: [{\n type: Input\n }], cpOKButtonClass: [{\n type: Input\n }], cpCancelButton: [{\n type: Input\n }], cpCancelButtonText: [{\n type: Input\n }], cpCancelButtonClass: [{\n type: Input\n }], cpEyeDropper: [{\n type: Input\n }], cpPresetLabel: [{\n type: Input\n }], cpPresetColors: [{\n type: Input\n }], cpPresetColorsClass: [{\n type: Input\n }], cpMaxPresetColorsLength: [{\n type: Input\n }], cpPresetEmptyMessage: [{\n type: Input\n }], cpPresetEmptyMessageClass: [{\n type: Input\n }], cpAddColorButton: [{\n type: Input\n }], cpAddColorButtonText: [{\n type: Input\n }], cpAddColorButtonClass: [{\n type: Input\n }], cpRemoveColorButtonClass: [{\n type: Input\n }], cpArrowPosition: [{\n type: Input\n }], cpExtraTemplate: [{\n type: Input\n }], cpInputChange: [{\n type: Output\n }], cpToggleChange: [{\n type: Output\n }], cpSliderChange: [{\n type: Output\n }], cpSliderDragEnd: [{\n type: Output\n }], cpSliderDragStart: [{\n type: Output\n }], colorPickerOpen: [{\n type: Output\n }], colorPickerClose: [{\n type: Output\n }], colorPickerCancel: [{\n type: Output\n }], colorPickerSelect: [{\n type: Output\n }], colorPickerChange: [{\n type: Output\n }], cpCmykColorChange: [{\n type: Output\n }], cpPresetColorsChange: [{\n type: Output\n }], handleClick: [{\n type: HostListener,\n args: ['click']\n }], handleFocus: [{\n type: HostListener,\n args: ['focus']\n }], handleInput: [{\n type: HostListener,\n args: ['input', ['$event']]\n }] } });\n\nclass ColorPickerModule {\n}\nColorPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nColorPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerModule, declarations: [ColorPickerComponent, ColorPickerDirective, TextDirective, SliderDirective], imports: [CommonModule], exports: [ColorPickerDirective] });\nColorPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerModule, providers: [ColorPickerService], imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.0\", ngImport: i0, type: ColorPickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [ColorPickerDirective],\n providers: [ColorPickerService],\n declarations: [ColorPickerComponent, ColorPickerDirective, TextDirective, SliderDirective],\n entryComponents: [ColorPickerComponent]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Cmyk, ColorPickerComponent, ColorPickerDirective, ColorPickerModule, ColorPickerService, Hsla, Hsva, Rgba, SliderDirective, TextDirective };\n","\n
    \n
    \n
    \n
    \n

    {{t('title')}}

    \n
    \n \n
    \n
    \n
    \n\n \n
    \n \n \n {{t('requires', {product: 'Kavita+'})}}\n \n \n 0; else noToken\">\n \"AniList\" {{t('token-set')}}\n \n {{t('token-expired')}}\n \n \n {{t('no-token-set')}}\n \n \n
    \n
    \n\n
    \n

    {{t('instructions', {service: 'AniList'})}}

    \n
    \n
    \n \n \n
    \n
    \n
    \n {{t('generate')}}\n \n
    \n
    \n\n\n
    \n
    \n\n\n
    \n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n OnInit\n} from '@angular/core';\nimport { FormControl, FormGroup, Validators, ReactiveFormsModule } from \"@angular/forms\";\nimport {ToastrService} from \"ngx-toastr\";\nimport {ScrobbleProvider, ScrobblingService} from \"../../_services/scrobbling.service\";\nimport {AccountService} from \"../../_services/account.service\";\nimport { NgbTooltip, NgbCollapse } from '@ng-bootstrap/ng-bootstrap';\nimport { NgIf, NgOptimizedImage } from '@angular/common';\nimport {translate, TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-anilist-key',\n templateUrl: './anilist-key.component.html',\n styleUrls: ['./anilist-key.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgOptimizedImage, NgbTooltip, NgbCollapse, ReactiveFormsModule, TranslocoDirective]\n})\nexport class AnilistKeyComponent implements OnInit {\n\n hasValidLicense: boolean = false;\n\n formGroup: FormGroup = new FormGroup({});\n token: string = '';\n isViewMode: boolean = true;\n private readonly destroyRef = inject(DestroyRef);\n tokenExpired: boolean = false;\n\n\n constructor(public accountService: AccountService, private scrobblingService: ScrobblingService, private toastr: ToastrService, private readonly cdRef: ChangeDetectorRef) {\n this.accountService.hasValidLicense().subscribe(res => {\n this.hasValidLicense = res;\n this.cdRef.markForCheck();\n if (this.hasValidLicense) {\n this.scrobblingService.getAniListToken().subscribe(token => {\n this.token = token;\n this.formGroup.get('aniListToken')?.setValue(token);\n this.cdRef.markForCheck();\n });\n this.scrobblingService.hasTokenExpired(ScrobbleProvider.AniList).subscribe(hasExpired => {\n this.tokenExpired = hasExpired;\n this.cdRef.markForCheck();\n });\n }\n });\n }\n\n ngOnInit(): void {\n this.formGroup.addControl('aniListToken', new FormControl('', [Validators.required]));\n }\n\n\n\n resetForm() {\n this.formGroup.get('aniListToken')?.setValue('');\n this.cdRef.markForCheck();\n }\n\n saveForm() {\n this.scrobblingService.updateAniListToken(this.formGroup.get('aniListToken')!.value).subscribe(() => {\n this.toastr.success(translate('toasts.anilist-token-updated'));\n this.token = this.formGroup.get('aniListToken')!.value;\n this.resetForm();\n this.isViewMode = true;\n });\n }\n\n toggleViewMode() {\n this.isViewMode = !this.isViewMode;\n this.resetForm();\n }\n\n\n}\n","\n
    \n
    \n
    \n
    \n

    {{t('age-restriction-label')}}

    \n
    \n \n
    \n
    \n
    \n\n \n
    \n {{user?.ageRestriction?.ageRating | ageRating }}\n \n + {{t('unknowns')}}\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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, DestroyRef,\n EventEmitter,\n inject,\n OnInit\n} from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { Observable, of, shareReplay, map, take } from 'rxjs';\nimport { AgeRestriction } from 'src/app/_models/metadata/age-restriction';\nimport { AgeRating } from 'src/app/_models/metadata/age-rating';\nimport { User } from 'src/app/_models/user';\nimport { AccountService } from 'src/app/_services/account.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { AgeRatingPipe } from '../../pipe/age-rating.pipe';\nimport { RestrictionSelectorComponent } from '../restriction-selector/restriction-selector.component';\nimport { NgbCollapse } from '@ng-bootstrap/ng-bootstrap';\nimport { NgIf, AsyncPipe } from '@angular/common';\nimport {translate, TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-change-age-restriction',\n templateUrl: './change-age-restriction.component.html',\n styleUrls: ['./change-age-restriction.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgbCollapse, RestrictionSelectorComponent, AsyncPipe, AgeRatingPipe, TranslocoDirective]\n})\nexport class ChangeAgeRestrictionComponent implements OnInit {\n\n user: User | undefined = undefined;\n hasChangeAgeRestrictionAbility: Observable = of(false);\n isViewMode: boolean = true;\n selectedRestriction!: AgeRestriction;\n originalRestriction!: AgeRestriction;\n reset: EventEmitter = new EventEmitter();\n private readonly destroyRef = inject(DestroyRef);\n\n get AgeRating() { return AgeRating; }\n\n constructor(private accountService: AccountService, private toastr: ToastrService, private readonly cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef), shareReplay(), take(1)).subscribe(user => {\n if (!user) return;\n this.user = user;\n this.originalRestriction = this.user.ageRestriction;\n this.cdRef.markForCheck();\n });\n\n this.hasChangeAgeRestrictionAbility = this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef), shareReplay(), map(user => {\n return user !== undefined && (!this.accountService.hasAdminRole(user) && this.accountService.hasChangeAgeRestrictionRole(user));\n }));\n this.cdRef.markForCheck();\n }\n\n updateRestrictionSelection(restriction: AgeRestriction) {\n this.selectedRestriction = restriction;\n }\n\n resetForm() {\n if (!this.user) return;\n this.reset.emit(this.originalRestriction);\n this.cdRef.markForCheck();\n }\n\n saveForm() {\n if (this.user === undefined) { return; }\n\n this.accountService.updateAgeRestriction(this.selectedRestriction.ageRating, this.selectedRestriction.includeUnknowns).subscribe(() => {\n this.toastr.success(translate('toasts.age-restriction-updated'));\n this.originalRestriction = this.selectedRestriction;\n if (this.user) {\n this.user.ageRestriction.ageRating = this.selectedRestriction.ageRating;\n this.user.ageRestriction.includeUnknowns = this.selectedRestriction.includeUnknowns;\n }\n this.resetForm();\n this.isViewMode = true;\n }, err => {\n\n });\n }\n\n toggleViewMode() {\n this.isViewMode = !this.isViewMode;\n this.resetForm();\n }\n\n}\n","\n
    \n
    \n
    \n
    \n

    {{t('password-label')}}

    \n
    \n \n
    \n
    \n
    \n\n \n
    \n ***************\n
    \n
    \n\n
    \n \n
    0\">\n
    {{error}}
    \n
    \n
    \n
    \n \n \n
    \n
    \n {{t('required-field')}}\n
    \n
    \n
    \n\n
    \n \n \n
    \n
    \n {{t('required-field')}}\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n {{t('passwords-must-match')}}\n
    \n
    \n {{t('required-field')}}\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n \n

    {{t('permission-error')}}

    \n
    \n
    \n\n
    \n
    \n
    \n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { FormControl, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms';\nimport { ToastrService } from 'ngx-toastr';\nimport { map, Observable, of, shareReplay, take } from 'rxjs';\nimport { User } from 'src/app/_models/user';\nimport { AccountService } from 'src/app/_services/account.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { NgbCollapse } from '@ng-bootstrap/ng-bootstrap';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\nimport {translate, TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-change-password',\n templateUrl: './change-password.component.html',\n styleUrls: ['./change-password.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgbCollapse, NgFor, ReactiveFormsModule, AsyncPipe, TranslocoDirective]\n})\nexport class ChangePasswordComponent implements OnInit, OnDestroy {\n\n passwordChangeForm: FormGroup = new FormGroup({});\n user: User | undefined = undefined;\n hasChangePasswordAbility: Observable = of(false);\n observableHandles: Array = [];\n passwordsMatch = false;\n resetPasswordErrors: string[] = [];\n isViewMode: boolean = true;\n private readonly destroyRef = inject(DestroyRef);\n\n public get password() { return this.passwordChangeForm.get('password'); }\n public get confirmPassword() { return this.passwordChangeForm.get('confirmPassword'); }\n\n\n constructor(private accountService: AccountService, private toastr: ToastrService, private readonly cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n\n this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef), shareReplay(), take(1)).subscribe(user => {\n this.user = user;\n this.cdRef.markForCheck();\n });\n\n this.hasChangePasswordAbility = this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef), shareReplay(), map(user => {\n return user !== undefined && (this.accountService.hasAdminRole(user) || this.accountService.hasChangePasswordRole(user));\n }));\n this.cdRef.markForCheck();\n\n this.passwordChangeForm.addControl('password', new FormControl('', [Validators.required]));\n this.passwordChangeForm.addControl('confirmPassword', new FormControl('', [Validators.required]));\n this.passwordChangeForm.addControl('oldPassword', new FormControl('', [Validators.required]));\n\n this.observableHandles.push(this.passwordChangeForm.valueChanges.subscribe(() => {\n const values = this.passwordChangeForm.value;\n this.passwordsMatch = values.password === values.confirmPassword;\n this.cdRef.markForCheck();\n }));\n }\n\n ngOnDestroy() {\n this.observableHandles.forEach(o => o.unsubscribe());\n }\n\n resetPasswordForm() {\n this.passwordChangeForm.get('password')?.setValue('');\n this.passwordChangeForm.get('confirmPassword')?.setValue('');\n this.passwordChangeForm.get('oldPassword')?.setValue('');\n this.resetPasswordErrors = [];\n this.cdRef.markForCheck();\n }\n\n savePasswordForm() {\n if (this.user === undefined) { return; }\n\n const model = this.passwordChangeForm.value;\n this.resetPasswordErrors = [];\n this.observableHandles.push(this.accountService.resetPassword(this.user?.username, model.confirmPassword, model.oldPassword).subscribe(() => {\n this.toastr.success(translate('toasts.password-updated'));\n this.resetPasswordForm();\n this.isViewMode = true;\n }, err => {\n this.resetPasswordErrors = err;\n }));\n }\n\n toggleViewMode() {\n this.isViewMode = !this.isViewMode;\n this.resetPasswordForm();\n }\n}\n","\n
    \n
    \n
    \n
    \n
    \n

    {{t('email-label')}}\n \n \n {{t('email-not-confirmed')}}\n \n

    \n
    \n
    \n \n
    \n
    \n
    \n\n \n
    \n {{user?.email}}\n
    \n
    \n\n
    \n \n
    0\">\n
    {{error}}
    \n
    \n
    \n
    \n \n \n
    \n
    \n {{t('required-field')}}\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

    {{t('email-updated-title')}}

    \n

    {{t('email-updated-description')}}

    \n {{t('setup-user-account')}}\n \n
    \n\n \n

    {{t('permission-error')}}

    \n
    \n
    \n\n\n
    \n\n\n
    \n\n\n
    \n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, OnInit} from '@angular/core';\nimport { FormControl, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms';\nimport {ToastrService} from 'ngx-toastr';\nimport {shareReplay, take} from 'rxjs';\nimport {UpdateEmailResponse} from 'src/app/_models/auth/update-email-response';\nimport {User} from 'src/app/_models/user';\nimport {AccountService} from 'src/app/_services/account.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { ApiKeyComponent } from '../api-key/api-key.component';\nimport { NgbTooltip, NgbCollapse } from '@ng-bootstrap/ng-bootstrap';\nimport { NgIf, NgFor } from '@angular/common';\nimport {translate, TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-change-email',\n templateUrl: './change-email.component.html',\n styleUrls: ['./change-email.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgbTooltip, NgbCollapse, NgFor, ReactiveFormsModule, ApiKeyComponent, TranslocoDirective]\n})\nexport class ChangeEmailComponent implements OnInit {\n\n form: FormGroup = new FormGroup({});\n user: User | undefined = undefined;\n errors: string[] = [];\n isViewMode: boolean = true;\n emailLink: string = '';\n emailConfirmed: boolean = true;\n private readonly destroyRef = inject(DestroyRef);\n\n public get email() { return this.form.get('email'); }\n\n makeLink: (val: string) => string = (val: string) => {return this.emailLink};\n\n constructor(public accountService: AccountService, private toastr: ToastrService, private readonly cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef), shareReplay(), take(1)).subscribe(user => {\n this.user = user;\n this.form.addControl('email', new FormControl(user?.email, [Validators.required, Validators.email]));\n this.form.addControl('password', new FormControl('', [Validators.required]));\n this.cdRef.markForCheck();\n this.accountService.isEmailConfirmed().subscribe((confirmed) => {\n this.emailConfirmed = confirmed;\n this.cdRef.markForCheck();\n });\n });\n }\n\n resetForm() {\n this.form.get('email')?.setValue(this.user?.email);\n this.errors = [];\n this.cdRef.markForCheck();\n }\n\n saveForm() {\n if (this.user === undefined) { return; }\n\n const model = this.form.value;\n this.errors = [];\n this.accountService.updateEmail(model.email, model.password).subscribe((updateEmailResponse: UpdateEmailResponse) => {\n if (updateEmailResponse.emailSent) {\n if (updateEmailResponse.hadNoExistingEmail) {\n this.toastr.success(translate('toasts.email-sent-to-no-existing', {email: model.email}));\n } else {\n this.toastr.success(translate('toasts.email-send-to'));\n }\n } else {\n this.toastr.success(translate('toasts.change-email-private'));\n }\n\n this.isViewMode = true;\n this.resetForm();\n }, err => {\n this.errors = err;\n })\n }\n\n toggleViewMode() {\n this.isViewMode = !this.isViewMode;\n this.resetForm();\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {environment} from \"../../environments/environment\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {Language} from \"../_models/metadata/language\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizationService {\n\n baseUrl = environment.apiUrl;\n\n constructor(private httpClient: HttpClient) { }\n\n getLocales() {\n return this.httpClient.get(this.baseUrl + 'locale');\n }\n}\n","\n \n

    \n {{t('title')}}\n

    \n
    \n
    \n
      \n
    • \n {{ t(tab.title) }}\n \n \n \n \n \n \n \n \n

      \n {{t('pref-description')}}\n

      \n\n
      \n
      \n
      \n

      \n \n

      \n
      \n
      \n \n
      \n
      \n \n \n {{t('page-layout-mode-tooltip')}}\n \n \n \n \n
      \n\n
      \n \n \n {{t('locale-tooltip')}}\n \n \n \n \n
      \n\n
      \n\n
      \n
      \n
      \n \n \n
      \n\n {{t('blur-unread-summaries-tooltip')}}\n \n \n \n
      \n
      \n\n
      \n
      \n
      \n \n \n
      \n\n {{t('prompt-on-download-tooltip', {size: '100'})}}\n \n \n \n
      \n
      \n\n
      \n
      \n
      \n \n \n
      \n\n {{t('disable-animations-tooltip')}}\n \n \n \n
      \n
      \n\n
      \n
      \n
      \n \n \n \n
      \n {{t('collapse-series-relationships-tooltip')}}\n \n \n \n
      \n
      \n\n
      \n
      \n
      \n \n \n \n
      \n {{t('share-series-reviews-tooltip')}}\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('reading-direction-tooltip')}}\n \n \n \n \n
      \n\n
      \n \n {{t('scaling-option-tooltip')}}\n \n \n \n \n
      \n
      \n\n
      \n
      \n \n {{t('page-splitting-tooltip')}}\n \n \n \n \n
      \n
      \n \n \n
      \n
      \n\n
      \n
      \n \n {{t('layout-mode-tooltip')}}\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
      \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

      \n
      \n
      \n \n
      \n
      \n \n
      \n
      \n \n \n {{t('tap-to-paginate-tooltip')}}\n \n \n \n
      \n
      \n
      \n
      \n \n
      \n
      \n \n \n {{t('immersive-mode-label')}}\n \n \n \n
      \n
      \n
      \n
      \n\n
      \n
      \n \n {{t('reading-direction-book-tooltip')}}\n \n \n \n \n
      \n\n\n
      \n \n {{t('font-family-tooltip')}}\n \n \n \n \n
      \n
      \n\n
      \n
      \n \n {{t('writing-style-tooltip')}}\n \n \n \n \n
      \n\n
      \n \n {{t('layout-mode-book-tooltip')}}\n \n \n \n \n
      \n
      \n\n
      \n\n
      \n \n {{t('color-theme-book-tooltip')}}\n \n \n \n \n
      \n
      \n\n
      \n
      \n \n \n {{settingsForm.get('bookReaderFontSize')?.value + '%'}}\n
      \n\n\n
      \n
      \n \n {{t('line-height-book-tooltip')}}\n \n \n \n
      \n \n {{settingsForm.get('bookReaderLineSpacing')?.value + '%'}}\n
      \n\n
      \n
      \n \n {{t('margin-book-tooltip')}}\n \n \n \n
      \n\n \n {{settingsForm.get('bookReaderMargin')?.value + '%'}}\n
      \n
      \n\n
      \n \n \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n\n\n \n
      {{t('clients-opds-alert')}}
      \n

      {{t('clients-opds-description')}}

      \n \n \n
      \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      \n
    • \n
    \n
    \n
    \n
    \n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { ToastrService } from 'ngx-toastr';\nimport { take } from 'rxjs/operators';\nimport { Title } from '@angular/platform-browser';\nimport {\n readingDirections,\n scalingOptions,\n pageSplitOptions,\n readingModes,\n Preferences,\n bookLayoutModes,\n layoutModes,\n pageLayoutModes,\n bookWritingStyles\n} from 'src/app/_models/preferences/preferences';\nimport { User } from 'src/app/_models/user';\nimport { AccountService } from 'src/app/_services/account.service';\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\nimport { SettingsService } from 'src/app/admin/settings.service';\nimport { BookPageLayoutMode } from 'src/app/_models/readers/book-page-layout-mode';\nimport {forkJoin} from 'rxjs';\nimport { bookColorThemes } from 'src/app/book-reader/_components/reader-settings/reader-settings.component';\nimport { BookService } from 'src/app/book-reader/_services/book.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { SentenceCasePipe } from '../../pipe/sentence-case.pipe';\nimport { UserHoldsComponent } from '../user-holds/user-holds.component';\nimport { UserScrobbleHistoryComponent } from '../../_single-module/user-scrobble-history/user-scrobble-history.component';\nimport { UserStatsComponent } from '../../statistics/_components/user-stats/user-stats.component';\nimport { ManageDevicesComponent } from '../manage-devices/manage-devices.component';\nimport { ThemeManagerComponent } from '../theme-manager/theme-manager.component';\nimport { ApiKeyComponent } from '../api-key/api-key.component';\nimport { ColorPickerModule } from 'ngx-color-picker';\nimport { AnilistKeyComponent } from '../anilist-key/anilist-key.component';\nimport { ChangeAgeRestrictionComponent } from '../change-age-restriction/change-age-restriction.component';\nimport { ChangePasswordComponent } from '../change-password/change-password.component';\nimport { ChangeEmailComponent } from '../change-email/change-email.component';\nimport { NgFor, NgIf, NgTemplateOutlet, TitleCasePipe } from '@angular/common';\nimport { NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, NgbAccordionToggle, NgbAccordionButton, NgbCollapse, NgbAccordionCollapse, NgbAccordionBody, NgbTooltip, NgbNavOutlet } from '@ng-bootstrap/ng-bootstrap';\nimport { SideNavCompanionBarComponent } from '../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component';\nimport {LocalizationService} from \"../../_services/localization.service\";\nimport {Language} from \"../../_models/metadata/language\";\nimport {translate, TranslocoDirective, TranslocoService} from \"@ngneat/transloco\";\n\nenum AccordionPanelID {\n ImageReader = 'image-reader',\n BookReader = 'book-reader',\n GlobalSettings = 'global-settings'\n}\n\nenum FragmentID {\n Account = 'account',\n Preferences = '',\n Clients = 'clients',\n Theme = 'theme',\n Devices = 'devices',\n Stats = 'stats',\n Scrobbling = 'scrobbling'\n\n}\n\n@Component({\n selector: 'app-user-preferences',\n templateUrl: './user-preferences.component.html',\n styleUrls: ['./user-preferences.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [SideNavCompanionBarComponent, NgbNav, NgFor, NgbNavItem, NgbNavItemRole, NgbNavLink, RouterLink, NgbNavContent, NgIf, ChangeEmailComponent,\n ChangePasswordComponent, ChangeAgeRestrictionComponent, AnilistKeyComponent, ReactiveFormsModule, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader,\n NgbAccordionToggle, NgbAccordionButton, NgbCollapse, NgbAccordionCollapse, NgbAccordionBody, NgbTooltip, NgTemplateOutlet, ColorPickerModule, ApiKeyComponent,\n ThemeManagerComponent, ManageDevicesComponent, UserStatsComponent, UserScrobbleHistoryComponent, UserHoldsComponent, NgbNavOutlet, TitleCasePipe, SentenceCasePipe, TranslocoDirective]\n})\nexport class UserPreferencesComponent implements OnInit, OnDestroy {\n\n readingDirectionsTranslated = readingDirections.map(this.translatePrefOptions);\n scalingOptionsTranslated = scalingOptions.map(this.translatePrefOptions);\n pageSplitOptionsTranslated = pageSplitOptions.map(this.translatePrefOptions);\n readingModesTranslated = readingModes.map(this.translatePrefOptions);\n layoutModesTranslated = layoutModes.map(this.translatePrefOptions);\n bookLayoutModesTranslated = bookLayoutModes.map(this.translatePrefOptions);\n bookColorThemesTranslated = bookColorThemes.map(o => {\n const d = {...o};\n d.name = translate('theme.' + d.translationKey);\n return d;\n });\n\n pageLayoutModesTranslated = pageLayoutModes.map(this.translatePrefOptions);\n bookWritingStylesTranslated = bookWritingStyles.map(this.translatePrefOptions);\n\n settingsForm: FormGroup = new FormGroup({});\n user: User | undefined = undefined;\n\n observableHandles: Array = [];\n fontFamilies: Array = [];\n\n tabs: Array<{title: string, fragment: string}> = [\n {title: 'account-tab', fragment: FragmentID.Account},\n {title: 'preferences-tab', fragment: FragmentID.Preferences},\n {title: '3rd-party-clients-tab', fragment: FragmentID.Clients},\n {title: 'theme-tab', fragment: FragmentID.Theme},\n {title: 'devices-tab', fragment: FragmentID.Devices},\n {title: 'stats-tab', fragment: FragmentID.Stats},\n ];\n locales: Array = [{title: 'English', isoCode: 'en'}];\n active = this.tabs[1];\n opdsEnabled: boolean = false;\n opdsUrl: string = '';\n makeUrl: (val: string) => string = (val: string) => { return this.opdsUrl; };\n private readonly destroyRef = inject(DestroyRef);\n private readonly trasnlocoService = inject(TranslocoService);\n\n get AccordionPanelID() {\n return AccordionPanelID;\n }\n\n get FragmentID() {\n return FragmentID;\n }\n\n\n constructor(private accountService: AccountService, private toastr: ToastrService, private bookService: BookService,\n private titleService: Title, private route: ActivatedRoute, private settingsService: SettingsService,\n private router: Router, private readonly cdRef: ChangeDetectorRef, public localizationService: LocalizationService) {\n this.fontFamilies = this.bookService.getFontFamilies().map(f => f.title);\n this.cdRef.markForCheck();\n\n this.accountService.getOpdsUrl().subscribe(res => {\n this.opdsUrl = res;\n this.cdRef.markForCheck();\n });\n\n this.localizationService.getLocales().subscribe(res => {\n this.locales = res;\n this.cdRef.markForCheck();\n });\n\n this.accountService.hasValidLicense().subscribe(res => {\n if (res) {\n this.tabs.push({title: 'scrobbling-tab', fragment: FragmentID.Scrobbling});\n this.cdRef.markForCheck();\n }\n\n this.route.fragment.subscribe(frag => {\n const tab = this.tabs.filter(item => item.fragment === frag);\n if (tab.length > 0) {\n this.active = tab[0];\n } else {\n this.active = this.tabs[1]; // Default to preferences\n }\n this.cdRef.markForCheck();\n });\n })\n\n\n this.settingsService.getOpdsEnabled().subscribe(res => {\n this.opdsEnabled = res;\n this.cdRef.markForCheck();\n });\n }\n\n ngOnInit(): void {\n this.titleService.setTitle('Kavita - User Preferences');\n\n forkJoin({\n user: this.accountService.currentUser$.pipe(take(1)),\n pref: this.accountService.getPreferences()\n }).subscribe(results => {\n if (results.user === undefined) {\n this.router.navigateByUrl('/login');\n return;\n }\n\n this.user = results.user;\n this.user.preferences = results.pref;\n\n if (this.fontFamilies.indexOf(this.user.preferences.bookReaderFontFamily) < 0) {\n this.user.preferences.bookReaderFontFamily = 'default';\n }\n\n this.settingsForm.addControl('readingDirection', new FormControl(this.user.preferences.readingDirection, []));\n this.settingsForm.addControl('scalingOption', new FormControl(this.user.preferences.scalingOption, []));\n this.settingsForm.addControl('pageSplitOption', new FormControl(this.user.preferences.pageSplitOption, []));\n this.settingsForm.addControl('autoCloseMenu', new FormControl(this.user.preferences.autoCloseMenu, []));\n this.settingsForm.addControl('showScreenHints', new FormControl(this.user.preferences.showScreenHints, []));\n this.settingsForm.addControl('readerMode', new FormControl(this.user.preferences.readerMode, []));\n this.settingsForm.addControl('layoutMode', new FormControl(this.user.preferences.layoutMode, []));\n this.settingsForm.addControl('emulateBook', new FormControl(this.user.preferences.emulateBook, []));\n this.settingsForm.addControl('swipeToPaginate', new FormControl(this.user.preferences.swipeToPaginate, []));\n\n this.settingsForm.addControl('bookReaderFontFamily', new FormControl(this.user.preferences.bookReaderFontFamily, []));\n this.settingsForm.addControl('bookReaderFontSize', new FormControl(this.user.preferences.bookReaderFontSize, []));\n this.settingsForm.addControl('bookReaderLineSpacing', new FormControl(this.user.preferences.bookReaderLineSpacing, []));\n this.settingsForm.addControl('bookReaderMargin', new FormControl(this.user.preferences.bookReaderMargin, []));\n this.settingsForm.addControl('bookReaderReadingDirection', new FormControl(this.user.preferences.bookReaderReadingDirection, []));\n this.settingsForm.addControl('bookReaderWritingStyle', new FormControl(this.user.preferences.bookReaderWritingStyle, []))\n this.settingsForm.addControl('bookReaderTapToPaginate', new FormControl(!!this.user.preferences.bookReaderTapToPaginate, []));\n this.settingsForm.addControl('bookReaderLayoutMode', new FormControl(this.user.preferences.bookReaderLayoutMode || BookPageLayoutMode.Default, []));\n this.settingsForm.addControl('bookReaderThemeName', new FormControl(this.user?.preferences.bookReaderThemeName || bookColorThemes[0].name, []));\n this.settingsForm.addControl('bookReaderImmersiveMode', new FormControl(this.user?.preferences.bookReaderImmersiveMode, []));\n\n this.settingsForm.addControl('theme', new FormControl(this.user.preferences.theme, []));\n this.settingsForm.addControl('globalPageLayoutMode', new FormControl(this.user.preferences.globalPageLayoutMode, []));\n this.settingsForm.addControl('blurUnreadSummaries', new FormControl(this.user.preferences.blurUnreadSummaries, []));\n this.settingsForm.addControl('promptForDownloadSize', new FormControl(this.user.preferences.promptForDownloadSize, []));\n this.settingsForm.addControl('noTransitions', new FormControl(this.user.preferences.noTransitions, []));\n this.settingsForm.addControl('collapseSeriesRelationships', new FormControl(this.user.preferences.collapseSeriesRelationships, []));\n this.settingsForm.addControl('shareReviews', new FormControl(this.user.preferences.shareReviews, []));\n this.settingsForm.addControl('locale', new FormControl(this.user.preferences.locale, []));\n\n if (this.locales.length === 1) {\n this.settingsForm.get('locale')?.disable();\n }\n\n this.cdRef.markForCheck();\n });\n\n this.settingsForm.get('bookReaderImmersiveMode')?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(mode => {\n if (mode) {\n this.settingsForm.get('bookReaderTapToPaginate')?.setValue(true);\n this.cdRef.markForCheck();\n }\n });\n this.cdRef.markForCheck();\n }\n\n ngOnDestroy() {\n this.observableHandles.forEach(o => o.unsubscribe());\n }\n\n\n resetForm() {\n if (this.user === undefined) { return; }\n this.settingsForm.get('readingDirection')?.setValue(this.user.preferences.readingDirection);\n this.settingsForm.get('scalingOption')?.setValue(this.user.preferences.scalingOption);\n this.settingsForm.get('autoCloseMenu')?.setValue(this.user.preferences.autoCloseMenu);\n this.settingsForm.get('showScreenHints')?.setValue(this.user.preferences.showScreenHints);\n this.settingsForm.get('readerMode')?.setValue(this.user.preferences.readerMode);\n this.settingsForm.get('layoutMode')?.setValue(this.user.preferences.layoutMode);\n this.settingsForm.get('pageSplitOption')?.setValue(this.user.preferences.pageSplitOption);\n this.settingsForm.get('bookReaderFontFamily')?.setValue(this.user.preferences.bookReaderFontFamily);\n this.settingsForm.get('bookReaderFontSize')?.setValue(this.user.preferences.bookReaderFontSize);\n this.settingsForm.get('bookReaderLineSpacing')?.setValue(this.user.preferences.bookReaderLineSpacing);\n this.settingsForm.get('bookReaderMargin')?.setValue(this.user.preferences.bookReaderMargin);\n this.settingsForm.get('bookReaderTapToPaginate')?.setValue(this.user.preferences.bookReaderTapToPaginate);\n this.settingsForm.get('bookReaderReadingDirection')?.setValue(this.user.preferences.bookReaderReadingDirection);\n this.settingsForm.get('bookReaderWritingStyle')?.setValue(this.user.preferences.bookReaderWritingStyle);\n this.settingsForm.get('bookReaderLayoutMode')?.setValue(this.user.preferences.bookReaderLayoutMode);\n this.settingsForm.get('bookReaderThemeName')?.setValue(this.user.preferences.bookReaderThemeName);\n this.settingsForm.get('theme')?.setValue(this.user.preferences.theme);\n this.settingsForm.get('bookReaderImmersiveMode')?.setValue(this.user.preferences.bookReaderImmersiveMode);\n this.settingsForm.get('globalPageLayoutMode')?.setValue(this.user.preferences.globalPageLayoutMode);\n this.settingsForm.get('blurUnreadSummaries')?.setValue(this.user.preferences.blurUnreadSummaries);\n this.settingsForm.get('promptForDownloadSize')?.setValue(this.user.preferences.promptForDownloadSize);\n this.settingsForm.get('noTransitions')?.setValue(this.user.preferences.noTransitions);\n this.settingsForm.get('emulateBook')?.setValue(this.user.preferences.emulateBook);\n this.settingsForm.get('swipeToPaginate')?.setValue(this.user.preferences.swipeToPaginate);\n this.settingsForm.get('collapseSeriesRelationships')?.setValue(this.user.preferences.collapseSeriesRelationships);\n this.settingsForm.get('shareReviews')?.setValue(this.user.preferences.shareReviews);\n this.settingsForm.get('locale')?.setValue(this.user.preferences.locale);\n this.cdRef.markForCheck();\n this.settingsForm.markAsPristine();\n }\n\n save() {\n if (this.user === undefined) return;\n const modelSettings = this.settingsForm.value;\n const data: Preferences = {\n readingDirection: parseInt(modelSettings.readingDirection, 10),\n scalingOption: parseInt(modelSettings.scalingOption, 10),\n pageSplitOption: parseInt(modelSettings.pageSplitOption, 10),\n autoCloseMenu: modelSettings.autoCloseMenu,\n readerMode: parseInt(modelSettings.readerMode, 10),\n layoutMode: parseInt(modelSettings.layoutMode, 10),\n showScreenHints: modelSettings.showScreenHints,\n backgroundColor: this.user.preferences.backgroundColor,\n bookReaderFontFamily: modelSettings.bookReaderFontFamily,\n bookReaderLineSpacing: modelSettings.bookReaderLineSpacing,\n bookReaderFontSize: modelSettings.bookReaderFontSize,\n bookReaderMargin: modelSettings.bookReaderMargin,\n bookReaderTapToPaginate: modelSettings.bookReaderTapToPaginate,\n bookReaderReadingDirection: parseInt(modelSettings.bookReaderReadingDirection, 10),\n bookReaderWritingStyle: parseInt(modelSettings.bookReaderWritingStyle, 10),\n bookReaderLayoutMode: parseInt(modelSettings.bookReaderLayoutMode, 10),\n bookReaderThemeName: modelSettings.bookReaderThemeName,\n theme: modelSettings.theme,\n bookReaderImmersiveMode: modelSettings.bookReaderImmersiveMode,\n globalPageLayoutMode: parseInt(modelSettings.globalPageLayoutMode, 10),\n blurUnreadSummaries: modelSettings.blurUnreadSummaries,\n promptForDownloadSize: modelSettings.promptForDownloadSize,\n noTransitions: modelSettings.noTransitions,\n emulateBook: modelSettings.emulateBook,\n swipeToPaginate: modelSettings.swipeToPaginate,\n collapseSeriesRelationships: modelSettings.collapseSeriesRelationships,\n shareReviews: modelSettings.shareReviews,\n locale: modelSettings.locale\n };\n\n this.observableHandles.push(this.accountService.updatePreferences(data).subscribe((updatedPrefs) => {\n this.toastr.success(this.trasnlocoService.translate('user-preferences.success-toast'));\n if (this.user) {\n this.user.preferences = updatedPrefs;\n this.cdRef.markForCheck();\n }\n this.resetForm();\n }));\n }\n\n\n handleBackgroundColorChange() {\n this.settingsForm.markAsDirty();\n this.settingsForm.markAsTouched();\n this.cdRef.markForCheck();\n }\n\n translatePrefOptions(o: {text: string, value: any}) {\n const d = {...o};\n d.text = translate('preferences.' + o.text);\n return d;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { AuthGuard } from '../_guards/auth.guard';\nimport { UserPreferencesComponent } from './user-preferences/user-preferences.component';\n\nconst routes: Routes = [\n {path: '**', component: UserPreferencesComponent, pathMatch: 'full'},\n {\n path: '',\n runGuardsAndResolvers: 'always',\n canActivate: [AuthGuard],\n children: [\n {path: '', component: UserPreferencesComponent, pathMatch: 'full'},\n ]\n }\n];\n\n\n@NgModule({\n imports: [RouterModule.forChild(routes), ],\n exports: [RouterModule]\n})\nexport class UserSettingsRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport {CommonModule, NgOptimizedImage} from '@angular/common';\nimport { UserPreferencesComponent } from './user-preferences/user-preferences.component';\nimport {\n NgbAccordionBody,\n NgbAccordionButton, NgbAccordionCollapse,\n NgbAccordionDirective, NgbAccordionHeader, NgbAccordionItem,\n NgbCollapseModule,\n NgbNavModule,\n NgbTooltipModule\n} from '@ng-bootstrap/ng-bootstrap';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { UserSettingsRoutingModule } from './user-settings-routing.module';\nimport { ApiKeyComponent } from './api-key/api-key.component';\nimport { SiteThemeProviderPipe } from './_pipes/site-theme-provider.pipe';\nimport { ThemeManagerComponent } from './theme-manager/theme-manager.component';\nimport { ColorPickerModule } from 'ngx-color-picker';\nimport { ManageDevicesComponent } from './manage-devices/manage-devices.component';\nimport { DevicePlatformPipe } from './_pipes/device-platform.pipe';\nimport { EditDeviceComponent } from './edit-device/edit-device.component';\nimport { ChangePasswordComponent } from './change-password/change-password.component';\nimport { ChangeEmailComponent } from './change-email/change-email.component';\nimport { ChangeAgeRestrictionComponent } from './change-age-restriction/change-age-restriction.component';\nimport { RestrictionSelectorComponent } from './restriction-selector/restriction-selector.component';\n\nimport { AnilistKeyComponent } from './anilist-key/anilist-key.component';\nimport {UserScrobbleHistoryComponent} from \"../_single-module/user-scrobble-history/user-scrobble-history.component\";\nimport { UserHoldsComponent } from \"./user-holds/user-holds.component\";\nimport {SentenceCasePipe} from \"../pipe/sentence-case.pipe\";\nimport {AgeRatingPipe} from \"../pipe/age-rating.pipe\";\nimport {LoadingComponent} from \"../shared/loading/loading.component\";\nimport {\n SideNavCompanionBarComponent\n} from \"../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component\";\n\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n NgbNavModule,\n NgbTooltipModule,\n NgbCollapseModule,\n ColorPickerModule,\n UserSettingsRoutingModule,\n UserScrobbleHistoryComponent,\n UserHoldsComponent,\n NgOptimizedImage,\n SentenceCasePipe,\n AgeRatingPipe,\n LoadingComponent,\n SideNavCompanionBarComponent,\n NgbAccordionDirective,\n NgbAccordionItem,\n NgbAccordionHeader,\n NgbAccordionButton,\n NgbAccordionCollapse,\n NgbAccordionBody,\n UserPreferencesComponent,\n ApiKeyComponent,\n ThemeManagerComponent,\n SiteThemeProviderPipe,\n ManageDevicesComponent,\n DevicePlatformPipe,\n EditDeviceComponent,\n ChangePasswordComponent,\n ChangeEmailComponent,\n RestrictionSelectorComponent,\n ChangeAgeRestrictionComponent,\n AnilistKeyComponent,\n],\n exports: [\n SiteThemeProviderPipe,\n ApiKeyComponent,\n RestrictionSelectorComponent,\n ]\n})\nexport class UserSettingsModule { }\n","'use strict'\nmodule.exports = rfdc\n\nfunction copyBuffer (cur) {\n if (cur instanceof Buffer) {\n return Buffer.from(cur)\n }\n\n return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length)\n}\n\nfunction rfdc (opts) {\n opts = opts || {}\n\n if (opts.circles) return rfdcCircles(opts)\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n var keys = Object.keys(a)\n var a2 = new Array(keys.length)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n var cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur instanceof Date) {\n a2[k] = new Date(cur)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n a2[k] = fn(cur)\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n var o2 = {}\n for (var k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), clone))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), clone))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = clone(cur)\n }\n }\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n var o2 = {}\n for (var k in o) {\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n return o2\n }\n}\n\nfunction rfdcCircles (opts) {\n var refs = []\n var refsNew = []\n\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n var keys = Object.keys(a)\n var a2 = new Array(keys.length)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n var cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur instanceof Date) {\n a2[k] = new Date(cur)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n var index = refs.indexOf(cur)\n if (index !== -1) {\n a2[k] = refsNew[index]\n } else {\n a2[k] = fn(cur)\n }\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n var o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (var k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), clone))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), clone))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n var i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = clone(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n var o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (var k in o) {\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n var i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default x => () => x;\n","export default function BrushEvent(type, {\n sourceEvent,\n target,\n selection,\n mode,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n selection: {value: selection, enumerable: true, configurable: true},\n mode: {value: mode, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Component, ViewEncapsulation, Inject, Input, ViewChild, HostBinding, HostListener, Injectable, ChangeDetectionStrategy, EventEmitter, Output, Directive, NgModule, ContentChild } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, isPlatformServer, CommonModule } from '@angular/common';\nimport { __decorate } from 'tslib';\nimport { DomPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { select } from 'd3-selection';\nimport { brushX } from 'd3-brush';\nimport { scaleTime, scaleLinear, scalePoint, scaleOrdinal, scaleQuantile, scaleBand } from 'd3-scale';\nimport { area, curveLinear, line, arc, lineRadial, curveCardinalClosed, pie } from 'd3-shape';\nimport { range, min, max, quantile } from 'd3-array';\nimport { interpolate } from 'd3-interpolate';\nimport { easeSinInOut } from 'd3-ease';\nimport rfdc from 'rfdc';\nimport { format } from 'd3-format';\nimport * as d3_color from 'd3-color';\nimport { treemap, stratify } from 'd3-hierarchy';\nimport { timeFormat } from 'd3-time-format';\n\n/**\n * Throttle a function\n *\n */\nfunction throttle(func, wait, options) {\n options = options || {};\n let context;\n let args;\n let result;\n let timeout = null;\n let previous = 0;\n function later() {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n return function () {\n const now = +new Date();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n context = this;\n // eslint-disable-next-line prefer-rest-params\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nfunction throttleable(duration, options) {\n return function innerDecorator(target, key, descriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n return this[key];\n }\n };\n };\n}\n\nvar PlacementTypes;\n(function (PlacementTypes) {\n PlacementTypes[\"Top\"] = \"top\";\n PlacementTypes[\"Bottom\"] = \"bottom\";\n PlacementTypes[\"Left\"] = \"left\";\n PlacementTypes[\"Right\"] = \"right\";\n PlacementTypes[\"Center\"] = \"center\";\n})(PlacementTypes || (PlacementTypes = {}));\n\nconst caretOffset = 7;\nfunction verticalPosition(elDimensions, popoverDimensions, alignment) {\n if (alignment === PlacementTypes.Top) {\n return elDimensions.top - caretOffset;\n }\n if (alignment === PlacementTypes.Bottom) {\n return elDimensions.top + elDimensions.height - popoverDimensions.height + caretOffset;\n }\n if (alignment === PlacementTypes.Center) {\n return elDimensions.top + elDimensions.height / 2 - popoverDimensions.height / 2;\n }\n return undefined;\n}\nfunction horizontalPosition(elDimensions, popoverDimensions, alignment) {\n if (alignment === PlacementTypes.Left) {\n return elDimensions.left - caretOffset;\n }\n if (alignment === PlacementTypes.Right) {\n return elDimensions.left + elDimensions.width - popoverDimensions.width + caretOffset;\n }\n if (alignment === PlacementTypes.Center) {\n return elDimensions.left + elDimensions.width / 2 - popoverDimensions.width / 2;\n }\n return undefined;\n}\n/**\n * Position helper for the popover directive.\n *\n * @export\n */\nclass PositionHelper {\n /**\n * Calculate vertical alignment position\n *\n * @memberOf PositionHelper\n */\n static calculateVerticalAlignment(elDimensions, popoverDimensions, alignment) {\n let result = verticalPosition(elDimensions, popoverDimensions, alignment);\n if (result + popoverDimensions.height > window.innerHeight) {\n result = window.innerHeight - popoverDimensions.height;\n }\n return result;\n }\n /**\n * Calculate vertical caret position\n *\n * @memberOf PositionHelper\n */\n static calculateVerticalCaret(elDimensions, popoverDimensions, caretDimensions, alignment) {\n let result;\n if (alignment === PlacementTypes.Top) {\n result = elDimensions.height / 2 - caretDimensions.height / 2 + caretOffset;\n }\n if (alignment === PlacementTypes.Bottom) {\n result = popoverDimensions.height - elDimensions.height / 2 - caretDimensions.height / 2 - caretOffset;\n }\n if (alignment === PlacementTypes.Center) {\n result = popoverDimensions.height / 2 - caretDimensions.height / 2;\n }\n const popoverPosition = verticalPosition(elDimensions, popoverDimensions, alignment);\n if (popoverPosition + popoverDimensions.height > window.innerHeight) {\n result += popoverPosition + popoverDimensions.height - window.innerHeight;\n }\n return result;\n }\n /**\n * Calculate horz alignment position\n *\n * @memberOf PositionHelper\n */\n static calculateHorizontalAlignment(elDimensions, popoverDimensions, alignment) {\n let result = horizontalPosition(elDimensions, popoverDimensions, alignment);\n if (result + popoverDimensions.width > window.innerWidth) {\n result = window.innerWidth - popoverDimensions.width;\n }\n return result;\n }\n /**\n * Calculate horz caret position\n *\n * @memberOf PositionHelper\n */\n static calculateHorizontalCaret(elDimensions, popoverDimensions, caretDimensions, alignment) {\n let result;\n if (alignment === PlacementTypes.Left) {\n result = elDimensions.width / 2 - caretDimensions.width / 2 + caretOffset;\n }\n if (alignment === PlacementTypes.Right) {\n result = popoverDimensions.width - elDimensions.width / 2 - caretDimensions.width / 2 - caretOffset;\n }\n if (alignment === PlacementTypes.Center) {\n result = popoverDimensions.width / 2 - caretDimensions.width / 2;\n }\n const popoverPosition = horizontalPosition(elDimensions, popoverDimensions, alignment);\n if (popoverPosition + popoverDimensions.width > window.innerWidth) {\n result += popoverPosition + popoverDimensions.width - window.innerWidth;\n }\n return result;\n }\n /**\n * Checks if the element's position should be flipped\n *\n * @memberOf PositionHelper\n */\n static shouldFlip(elDimensions, popoverDimensions, placement, spacing) {\n let flip = false;\n if (placement === PlacementTypes.Right) {\n if (elDimensions.left + elDimensions.width + popoverDimensions.width + spacing > window.innerWidth) {\n flip = true;\n }\n }\n if (placement === PlacementTypes.Left) {\n if (elDimensions.left - popoverDimensions.width - spacing < 0) {\n flip = true;\n }\n }\n if (placement === PlacementTypes.Top) {\n if (elDimensions.top - popoverDimensions.height - spacing < 0) {\n flip = true;\n }\n }\n if (placement === PlacementTypes.Bottom) {\n if (elDimensions.top + elDimensions.height + popoverDimensions.height + spacing > window.innerHeight) {\n flip = true;\n }\n }\n return flip;\n }\n /**\n * Position caret\n *\n * @memberOf PositionHelper\n */\n static positionCaret(placement, elmDim, hostDim, caretDimensions, alignment) {\n let top = 0;\n let left = 0;\n if (placement === PlacementTypes.Right) {\n left = -7;\n top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.Left) {\n left = elmDim.width;\n top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.Top) {\n top = elmDim.height;\n left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.Bottom) {\n top = -7;\n left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n return { top, left };\n }\n /**\n * Position content\n *\n * @memberOf PositionHelper\n */\n static positionContent(placement, elmDim, hostDim, spacing, alignment) {\n let top = 0;\n let left = 0;\n if (placement === PlacementTypes.Right) {\n left = hostDim.left + hostDim.width + spacing;\n top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.Left) {\n left = hostDim.left - elmDim.width - spacing;\n top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.Top) {\n top = hostDim.top - elmDim.height - spacing;\n left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.Bottom) {\n top = hostDim.top + hostDim.height + spacing;\n left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n }\n return { top, left };\n }\n /**\n * Determine placement based on flip\n *\n * @memberOf PositionHelper\n */\n static determinePlacement(placement, elmDim, hostDim, spacing) {\n const shouldFlip = PositionHelper.shouldFlip(hostDim, elmDim, placement, spacing);\n if (shouldFlip) {\n if (placement === PlacementTypes.Right) {\n return PlacementTypes.Left;\n }\n else if (placement === PlacementTypes.Left) {\n return PlacementTypes.Right;\n }\n else if (placement === PlacementTypes.Top) {\n return PlacementTypes.Bottom;\n }\n else if (placement === PlacementTypes.Bottom) {\n return PlacementTypes.Top;\n }\n }\n return placement;\n }\n}\n\nclass TooltipContentComponent {\n constructor(element, renderer, platformId) {\n this.element = element;\n this.renderer = renderer;\n this.platformId = platformId;\n }\n get cssClasses() {\n let clz = 'ngx-charts-tooltip-content';\n clz += ` position-${this.placement}`;\n clz += ` type-${this.type}`;\n clz += ` ${this.cssClass}`;\n return clz;\n }\n ngAfterViewInit() {\n setTimeout(this.position.bind(this));\n }\n position() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const nativeElm = this.element.nativeElement;\n const hostDim = this.host.nativeElement.getBoundingClientRect();\n // if no dims were found, never show\n if (!hostDim.height && !hostDim.width)\n return;\n const elmDim = nativeElm.getBoundingClientRect();\n this.checkFlip(hostDim, elmDim);\n this.positionContent(nativeElm, hostDim, elmDim);\n if (this.showCaret) {\n this.positionCaret(hostDim, elmDim);\n }\n // animate its entry\n setTimeout(() => this.renderer.addClass(nativeElm, 'animate'), 1);\n }\n positionContent(nativeElm, hostDim, elmDim) {\n const { top, left } = PositionHelper.positionContent(this.placement, elmDim, hostDim, this.spacing, this.alignment);\n this.renderer.setStyle(nativeElm, 'top', `${top}px`);\n this.renderer.setStyle(nativeElm, 'left', `${left}px`);\n }\n positionCaret(hostDim, elmDim) {\n const caretElm = this.caretElm.nativeElement;\n const caretDimensions = caretElm.getBoundingClientRect();\n const { top, left } = PositionHelper.positionCaret(this.placement, elmDim, hostDim, caretDimensions, this.alignment);\n this.renderer.setStyle(caretElm, 'top', `${top}px`);\n this.renderer.setStyle(caretElm, 'left', `${left}px`);\n }\n checkFlip(hostDim, elmDim) {\n this.placement = PositionHelper.determinePlacement(this.placement, elmDim, hostDim, this.spacing);\n }\n onWindowResize() {\n this.position();\n }\n}\nTooltipContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipContentComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nTooltipContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TooltipContentComponent, selector: \"ngx-tooltip-content\", inputs: { host: \"host\", showCaret: \"showCaret\", type: \"type\", placement: \"placement\", alignment: \"alignment\", spacing: \"spacing\", cssClass: \"cssClass\", title: \"title\", template: \"template\", context: \"context\" }, host: { listeners: { \"window:resize\": \"onWindowResize()\" }, properties: { \"class\": \"this.cssClasses\" } }, viewQueries: [{ propertyName: \"caretElm\", first: true, predicate: [\"caretElm\"], descendants: true }], ngImport: i0, template: `\n
    \n \n
    \n \n \n \n \n
    \n
    \n `, isInline: true, styles: [\".ngx-charts-tooltip-content{position:fixed;border-radius:3px;z-index:5000;display:block;font-weight:400;opacity:0;pointer-events:none!important}.ngx-charts-tooltip-content.type-popover{background:#fff;color:#060709;border:1px solid #72809b;box-shadow:0 1px 3px #0003,0 1px 1px #00000024,0 2px 1px -1px #0000001f;font-size:13px;padding:4px}.ngx-charts-tooltip-content.type-popover .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff}.ngx-charts-tooltip-content.type-tooltip{color:#fff;background:rgba(0,0,0,.75);font-size:12px;padding:0 10px;text-align:center;pointer-events:auto}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content .tooltip-label{display:block;line-height:1em;padding:8px 5px 5px;font-size:1em}.ngx-charts-tooltip-content .tooltip-val{display:block;font-size:1.3em;line-height:1em;padding:0 5px 8px}.ngx-charts-tooltip-content .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.position-right{transform:translate(10px)}.ngx-charts-tooltip-content.position-left{transform:translate(-10px)}.ngx-charts-tooltip-content.position-top{transform:translateY(-10px)}.ngx-charts-tooltip-content.position-bottom{transform:translateY(10px)}.ngx-charts-tooltip-content.animate{opacity:1;transition:opacity .3s,transform .3s;transform:translate(0);pointer-events:auto}.area-tooltip-container{padding:5px 0;pointer-events:none}.tooltip-item{text-align:left;line-height:1.2em;padding:5px 0}.tooltip-item .tooltip-item-color{display:inline-block;height:12px;width:12px;margin-right:5px;color:#5b646b;border-radius:3px}\\n\"], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], encapsulation: i0.ViewEncapsulation.None });\n__decorate([\n throttleable(100)\n], TooltipContentComponent.prototype, \"onWindowResize\", null);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipContentComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-tooltip-content', template: `\n
    \n \n
    \n \n \n \n \n
    \n
    \n `, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-tooltip-content{position:fixed;border-radius:3px;z-index:5000;display:block;font-weight:400;opacity:0;pointer-events:none!important}.ngx-charts-tooltip-content.type-popover{background:#fff;color:#060709;border:1px solid #72809b;box-shadow:0 1px 3px #0003,0 1px 1px #00000024,0 2px 1px -1px #0000001f;font-size:13px;padding:4px}.ngx-charts-tooltip-content.type-popover .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff}.ngx-charts-tooltip-content.type-tooltip{color:#fff;background:rgba(0,0,0,.75);font-size:12px;padding:0 10px;text-align:center;pointer-events:auto}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content .tooltip-label{display:block;line-height:1em;padding:8px 5px 5px;font-size:1em}.ngx-charts-tooltip-content .tooltip-val{display:block;font-size:1.3em;line-height:1em;padding:0 5px 8px}.ngx-charts-tooltip-content .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.position-right{transform:translate(10px)}.ngx-charts-tooltip-content.position-left{transform:translate(-10px)}.ngx-charts-tooltip-content.position-top{transform:translateY(-10px)}.ngx-charts-tooltip-content.position-bottom{transform:translateY(10px)}.ngx-charts-tooltip-content.animate{opacity:1;transition:opacity .3s,transform .3s;transform:translate(0);pointer-events:auto}.area-tooltip-container{padding:5px 0;pointer-events:none}.tooltip-item{text-align:left;line-height:1.2em;padding:5px 0}.tooltip-item .tooltip-item-color{display:inline-block;height:12px;width:12px;margin-right:5px;color:#5b646b;border-radius:3px}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { host: [{\n type: Input\n }], showCaret: [{\n type: Input\n }], type: [{\n type: Input\n }], placement: [{\n type: Input\n }], alignment: [{\n type: Input\n }], spacing: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], title: [{\n type: Input\n }], template: [{\n type: Input\n }], context: [{\n type: Input\n }], caretElm: [{\n type: ViewChild,\n args: ['caretElm']\n }], cssClasses: [{\n type: HostBinding,\n args: ['class']\n }], onWindowResize: [{\n type: HostListener,\n args: ['window:resize']\n }] } });\n\nclass InjectionRegisteryService {\n constructor(injectionService) {\n this.injectionService = injectionService;\n this.defaults = {};\n this.components = new Map();\n }\n getByType(type = this.type) {\n return this.components.get(type);\n }\n create(bindings) {\n return this.createByType(this.type, bindings);\n }\n createByType(type, bindings) {\n bindings = this.assignDefaults(bindings);\n const component = this.injectComponent(type, bindings);\n this.register(type, component);\n return component;\n }\n destroy(instance) {\n const compsByType = this.components.get(instance.componentType);\n if (compsByType && compsByType.length) {\n const idx = compsByType.indexOf(instance);\n if (idx > -1) {\n const component = compsByType[idx];\n component.destroy();\n compsByType.splice(idx, 1);\n }\n }\n }\n destroyAll() {\n this.destroyByType(this.type);\n }\n destroyByType(type) {\n const comps = this.components.get(type);\n if (comps && comps.length) {\n let i = comps.length - 1;\n while (i >= 0) {\n this.destroy(comps[i--]);\n }\n }\n }\n injectComponent(type, bindings) {\n return this.injectionService.appendComponent(type, bindings);\n }\n assignDefaults(bindings) {\n const inputs = { ...this.defaults.inputs };\n const outputs = { ...this.defaults.outputs };\n if (!bindings.inputs && !bindings.outputs) {\n bindings = { inputs: bindings };\n }\n if (inputs) {\n bindings.inputs = { ...inputs, ...bindings.inputs };\n }\n if (outputs) {\n bindings.outputs = { ...outputs, ...bindings.outputs };\n }\n return bindings;\n }\n register(type, component) {\n if (!this.components.has(type)) {\n this.components.set(type, []);\n }\n const types = this.components.get(type);\n types.push(component);\n }\n}\n\nfunction isViewContainerRef(x) {\n return x.element;\n}\n/**\n * Injection service is a helper to append components\n * dynamically to a known location in the DOM, most\n * noteably for dialogs/tooltips appending to body.\n *\n * @export\n */\nclass InjectionService {\n constructor(applicationRef, componentFactoryResolver, injector) {\n this.applicationRef = applicationRef;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n }\n /**\n * Sets a default global root view container. This is useful for\n * things like ngUpgrade that doesn't have a ApplicationRef root.\n *\n * @param container\n */\n static setGlobalRootViewContainer(container) {\n InjectionService.globalRootViewContainer = container;\n }\n /**\n * Gets the root view container to inject the component to.\n *\n * @memberOf InjectionService\n */\n getRootViewContainer() {\n if (this._container)\n return this._container;\n if (InjectionService.globalRootViewContainer)\n return InjectionService.globalRootViewContainer;\n if (this.applicationRef.components.length)\n return this.applicationRef.components[0];\n throw new Error('View Container not found! ngUpgrade needs to manually set this via setRootViewContainer or setGlobalRootViewContainer.');\n }\n /**\n * Overrides the default root view container. This is useful for\n * things like ngUpgrade that doesn't have a ApplicationRef root.\n *\n * @param container\n *\n * @memberOf InjectionService\n */\n setRootViewContainer(container) {\n this._container = container;\n }\n /**\n * Gets the html element for a component ref.\n *\n * @param componentRef\n *\n * @memberOf InjectionService\n */\n getComponentRootNode(component) {\n if (isViewContainerRef(component)) {\n return component.element.nativeElement;\n }\n if (component.hostView && component.hostView.rootNodes.length > 0) {\n return component.hostView.rootNodes[0];\n }\n // the top most component root node has no `hostView`\n return component.location.nativeElement;\n }\n /**\n * Gets the root component container html element.\n *\n * @memberOf InjectionService\n */\n getRootViewContainerNode(component) {\n return this.getComponentRootNode(component);\n }\n /**\n * Projects the bindings onto the component\n *\n * @param component\n * @param options\n *\n * @memberOf InjectionService\n */\n projectComponentBindings(component, bindings) {\n if (bindings) {\n if (bindings.inputs !== undefined) {\n const bindingKeys = Object.getOwnPropertyNames(bindings.inputs);\n for (const bindingName of bindingKeys) {\n component.instance[bindingName] = bindings.inputs[bindingName];\n }\n }\n if (bindings.outputs !== undefined) {\n const eventKeys = Object.getOwnPropertyNames(bindings.outputs);\n for (const eventName of eventKeys) {\n component.instance[eventName] = bindings.outputs[eventName];\n }\n }\n }\n return component;\n }\n /**\n * Appends a component to a adjacent location\n *\n * @param componentClass\n * @param [options={}]\n * @param [location]\n *\n * @memberOf InjectionService\n */\n appendComponent(componentClass, bindings = {}, location) {\n if (!location)\n location = this.getRootViewContainer();\n const appendLocation = this.getComponentRootNode(location);\n const portalHost = new DomPortalOutlet(appendLocation, this.componentFactoryResolver, this.applicationRef, this.injector);\n const portal = new ComponentPortal(componentClass);\n const componentRef = portalHost.attach(portal);\n this.projectComponentBindings(componentRef, bindings);\n return componentRef;\n }\n}\nInjectionService.globalRootViewContainer = null;\nInjectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: InjectionService, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });\nInjectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: InjectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: InjectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }]; } });\n\nclass TooltipService extends InjectionRegisteryService {\n constructor(injectionService) {\n super(injectionService);\n this.type = TooltipContentComponent;\n }\n}\nTooltipService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipService, deps: [{ token: InjectionService }], target: i0.ɵɵFactoryTarget.Injectable });\nTooltipService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: InjectionService }]; } });\n\nvar LegendPosition;\n(function (LegendPosition) {\n LegendPosition[\"Right\"] = \"right\";\n LegendPosition[\"Below\"] = \"below\";\n})(LegendPosition || (LegendPosition = {}));\nvar LegendType;\n(function (LegendType) {\n LegendType[\"ScaleLegend\"] = \"scaleLegend\";\n LegendType[\"Legend\"] = \"legend\";\n})(LegendType || (LegendType = {}));\n\nvar ScaleType;\n(function (ScaleType) {\n ScaleType[\"Time\"] = \"time\";\n ScaleType[\"Linear\"] = \"linear\";\n ScaleType[\"Ordinal\"] = \"ordinal\";\n ScaleType[\"Quantile\"] = \"quantile\";\n})(ScaleType || (ScaleType = {}));\n\nclass ScaleLegendComponent {\n constructor() {\n this.horizontal = false;\n }\n ngOnChanges(changes) {\n const gradientValues = this.gradientString(this.colors.range(), this.colors.domain());\n const direction = this.horizontal ? 'right' : 'bottom';\n this.gradient = `linear-gradient(to ${direction}, ${gradientValues})`;\n }\n /**\n * Generates the string used in the gradient stylesheet properties\n * @param colors array of colors\n * @param splits array of splits on a scale of (0, 1)\n */\n gradientString(colors, splits) {\n // add the 100%\n splits.push(1);\n const pairs = [];\n colors.reverse().forEach((c, i) => {\n pairs.push(`${c} ${Math.round(splits[i] * 100)}%`);\n });\n return pairs.join(', ');\n }\n}\nScaleLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ScaleLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nScaleLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: ScaleLegendComponent, selector: \"ngx-charts-scale-legend\", inputs: { valueRange: \"valueRange\", colors: \"colors\", height: \"height\", width: \"width\", horizontal: \"horizontal\" }, usesOnChanges: true, ngImport: i0, template: `\n \n
    \n {{ valueRange[1].toLocaleString() }}\n
    \n
    \n
    \n {{ valueRange[0].toLocaleString() }}\n
    \n \n `, isInline: true, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .scale-legend{text-align:center;display:flex;flex-direction:column}.chart-legend .scale-legend-wrap{display:inline-block;flex:1;width:30px;border-radius:5px;margin:0 auto}.chart-legend .scale-legend-label{font-size:12px}.chart-legend .horizontal-legend.scale-legend{flex-direction:row}.chart-legend .horizontal-legend .scale-legend-wrap{width:auto;height:30px;margin:0 16px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ScaleLegendComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-scale-legend', template: `\n \n
    \n {{ valueRange[1].toLocaleString() }}\n
    \n
    \n
    \n {{ valueRange[0].toLocaleString() }}\n
    \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .scale-legend{text-align:center;display:flex;flex-direction:column}.chart-legend .scale-legend-wrap{display:inline-block;flex:1;width:30px;border-radius:5px;margin:0 auto}.chart-legend .scale-legend-label{font-size:12px}.chart-legend .horizontal-legend.scale-legend{flex-direction:row}.chart-legend .horizontal-legend .scale-legend-wrap{width:auto;height:30px;margin:0 16px}\\n\"] }]\n }], propDecorators: { valueRange: [{\n type: Input\n }], colors: [{\n type: Input\n }], height: [{\n type: Input\n }], width: [{\n type: Input\n }], horizontal: [{\n type: Input\n }] } });\n\n/**\n * Formats a label given a date, number or string.\n *\n * @export\n */\nfunction formatLabel(label) {\n if (label instanceof Date) {\n label = label.toLocaleDateString();\n }\n else {\n label = label.toLocaleString();\n }\n return label;\n}\n/**\n * Escapes a label.\n *\n * @export\n */\nfunction escapeLabel(label) {\n return label.toLocaleString().replace(/[&'`\"<>]/g, match => {\n return {\n '&': '&',\n // tslint:disable-next-line: quotemark\n \"'\": ''',\n '`': '`',\n '\"': '"',\n '<': '<',\n '>': '>'\n }[match];\n });\n}\n\nclass LegendEntryComponent {\n constructor() {\n this.isActive = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.toggle = new EventEmitter();\n }\n get trimmedLabel() {\n return this.formattedLabel || '(empty)';\n }\n onMouseEnter() {\n this.activate.emit({ name: this.label });\n }\n onMouseLeave() {\n this.deactivate.emit({ name: this.label });\n }\n}\nLegendEntryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LegendEntryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nLegendEntryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LegendEntryComponent, selector: \"ngx-charts-legend-entry\", inputs: { color: \"color\", label: \"label\", formattedLabel: \"formattedLabel\", isActive: \"isActive\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", toggle: \"toggle\" }, host: { listeners: { \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave()\" } }, ngImport: i0, template: `\n \n \n \n {{ trimmedLabel }}\n \n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LegendEntryComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ngx-charts-legend-entry',\n template: `\n \n \n \n {{ trimmedLabel }}\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { color: [{\n type: Input\n }], label: [{\n type: Input\n }], formattedLabel: [{\n type: Input\n }], isActive: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], toggle: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass LegendComponent {\n constructor(cd) {\n this.cd = cd;\n this.horizontal = false;\n this.labelClick = new EventEmitter();\n this.labelActivate = new EventEmitter();\n this.labelDeactivate = new EventEmitter();\n this.legendEntries = [];\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.cd.markForCheck();\n this.legendEntries = this.getLegendEntries();\n }\n getLegendEntries() {\n const items = [];\n for (const label of this.data) {\n const formattedLabel = formatLabel(label);\n const idx = items.findIndex(i => {\n return i.label === formattedLabel;\n });\n if (idx === -1) {\n items.push({\n label,\n formattedLabel,\n color: this.colors.getColor(label)\n });\n }\n }\n return items;\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.label === d.name;\n });\n return item !== undefined;\n }\n activate(item) {\n this.labelActivate.emit(item);\n }\n deactivate(item) {\n this.labelDeactivate.emit(item);\n }\n trackBy(index, item) {\n return item.label;\n }\n}\nLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LegendComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LegendComponent, selector: \"ngx-charts-legend\", inputs: { data: \"data\", title: \"title\", colors: \"colors\", height: \"height\", width: \"width\", activeEntries: \"activeEntries\", horizontal: \"horizontal\" }, outputs: { labelClick: \"labelClick\", labelActivate: \"labelActivate\", labelDeactivate: \"labelDeactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n
    \n
    0\">\n {{ title }}\n
    \n
    \n
      \n
    • \n \n \n
    • \n
    \n
    \n
    \n `, isInline: true, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .legend-title{white-space:nowrap;overflow:hidden;margin-left:10px;margin-bottom:5px;font-size:14px;font-weight:700}.chart-legend ul,.chart-legend li{padding:0;margin:0;list-style:none}.chart-legend .horizontal-legend li{display:inline-block}.chart-legend .legend-wrap{width:calc(100% - 10px)}.chart-legend .legend-labels{line-height:85%;list-style:none;text-align:left;float:left;width:100%;border-radius:3px;overflow-y:auto;overflow-x:hidden;white-space:nowrap;background:rgba(0,0,0,.05)}.chart-legend .legend-label{cursor:pointer;font-size:90%;margin:8px;color:#afb7c8}.chart-legend .legend-label:hover{color:#000;transition:.2s}.chart-legend .legend-label .active .legend-label-text{color:#000}.chart-legend .legend-label-color{display:inline-block;height:15px;width:15px;margin-right:5px;color:#5b646b;border-radius:3px}.chart-legend .legend-label-text{display:inline-block;vertical-align:top;line-height:15px;font-size:12px;width:calc(100% - 20px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-legend .legend-title-text{vertical-align:bottom;display:inline-block;line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\\n\"], components: [{ type: LegendEntryComponent, selector: \"ngx-charts-legend-entry\", inputs: [\"color\", \"label\", \"formattedLabel\", \"isActive\"], outputs: [\"select\", \"activate\", \"deactivate\", \"toggle\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LegendComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-legend', template: `\n
    \n
    0\">\n {{ title }}\n
    \n
    \n
      \n
    • \n \n \n
    • \n
    \n
    \n
    \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .legend-title{white-space:nowrap;overflow:hidden;margin-left:10px;margin-bottom:5px;font-size:14px;font-weight:700}.chart-legend ul,.chart-legend li{padding:0;margin:0;list-style:none}.chart-legend .horizontal-legend li{display:inline-block}.chart-legend .legend-wrap{width:calc(100% - 10px)}.chart-legend .legend-labels{line-height:85%;list-style:none;text-align:left;float:left;width:100%;border-radius:3px;overflow-y:auto;overflow-x:hidden;white-space:nowrap;background:rgba(0,0,0,.05)}.chart-legend .legend-label{cursor:pointer;font-size:90%;margin:8px;color:#afb7c8}.chart-legend .legend-label:hover{color:#000;transition:.2s}.chart-legend .legend-label .active .legend-label-text{color:#000}.chart-legend .legend-label-color{display:inline-block;height:15px;width:15px;margin-right:5px;color:#5b646b;border-radius:3px}.chart-legend .legend-label-text{display:inline-block;vertical-align:top;line-height:15px;font-size:12px;width:calc(100% - 20px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-legend .legend-title-text{vertical-align:bottom;display:inline-block;line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{\n type: Input\n }], title: [{\n type: Input\n }], colors: [{\n type: Input\n }], height: [{\n type: Input\n }], width: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], horizontal: [{\n type: Input\n }], labelClick: [{\n type: Output\n }], labelActivate: [{\n type: Output\n }], labelDeactivate: [{\n type: Output\n }] } });\n\nclass ChartComponent {\n constructor() {\n this.showLegend = false;\n this.animations = true;\n this.legendLabelClick = new EventEmitter();\n this.legendLabelActivate = new EventEmitter();\n this.legendLabelDeactivate = new EventEmitter();\n this.LegendPosition = LegendPosition;\n this.LegendType = LegendType;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n let legendColumns = 0;\n if (this.showLegend) {\n this.legendType = this.getLegendType();\n if (!this.legendOptions || this.legendOptions.position === LegendPosition.Right) {\n if (this.legendType === LegendType.ScaleLegend) {\n legendColumns = 1;\n }\n else {\n legendColumns = 2;\n }\n }\n }\n const chartColumns = 12 - legendColumns;\n this.chartWidth = Math.floor((this.view[0] * chartColumns) / 12.0);\n this.legendWidth =\n !this.legendOptions || this.legendOptions.position === LegendPosition.Right\n ? Math.floor((this.view[0] * legendColumns) / 12.0)\n : this.chartWidth;\n }\n getLegendType() {\n return this.legendOptions.scaleType === ScaleType.Linear ? LegendType.ScaleLegend : LegendType.Legend;\n }\n}\nChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: ChartComponent, selector: \"ngx-charts-chart\", inputs: { view: \"view\", showLegend: \"showLegend\", legendOptions: \"legendOptions\", legendType: \"legendType\", activeEntries: \"activeEntries\", animations: \"animations\" }, outputs: { legendLabelClick: \"legendLabelClick\", legendLabelActivate: \"legendLabelActivate\", legendLabelDeactivate: \"legendLabelDeactivate\" }, providers: [TooltipService], usesOnChanges: true, ngImport: i0, template: `\n
    \n \n \n \n \n \n \n \n
    \n `, isInline: true, components: [{ type: ScaleLegendComponent, selector: \"ngx-charts-scale-legend\", inputs: [\"valueRange\", \"colors\", \"height\", \"width\", \"horizontal\"] }, { type: LegendComponent, selector: \"ngx-charts-legend\", inputs: [\"data\", \"title\", \"colors\", \"height\", \"width\", \"activeEntries\", \"horizontal\"], outputs: [\"labelClick\", \"labelActivate\", \"labelDeactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartComponent, decorators: [{\n type: Component,\n args: [{\n providers: [TooltipService],\n selector: 'ngx-charts-chart',\n template: `\n
    \n \n \n \n \n \n \n \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { view: [{\n type: Input\n }], showLegend: [{\n type: Input\n }], legendOptions: [{\n type: Input\n }], legendType: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], animations: [{\n type: Input\n }], legendLabelClick: [{\n type: Output\n }], legendLabelActivate: [{\n type: Output\n }], legendLabelDeactivate: [{\n type: Output\n }] } });\n\n/**\n * Visibility Observer\n */\nclass VisibilityObserver {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n this.visible = new EventEmitter();\n this.isVisible = false;\n this.runCheck();\n }\n destroy() {\n clearTimeout(this.timeout);\n }\n onVisibilityChange() {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible = true;\n this.visible.emit(true);\n });\n }\n runCheck() {\n const check = () => {\n if (!this.element) {\n return;\n }\n // https://davidwalsh.name/offsetheight-visibility\n const { offsetHeight, offsetWidth } = this.element.nativeElement;\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n }\n else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check(), 100);\n });\n }\n };\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check());\n });\n }\n}\nVisibilityObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: VisibilityObserver, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nVisibilityObserver.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: VisibilityObserver, selector: \"visibility-observer\", outputs: { visible: \"visible\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: VisibilityObserver, decorators: [{\n type: Directive,\n args: [{\n selector: 'visibility-observer'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: Output\n }] } });\n\nfunction isDate(value) {\n return toString.call(value) === '[object Date]';\n}\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\nclass BaseChartComponent {\n constructor(chartElement, zone, cd, platformId) {\n this.chartElement = chartElement;\n this.zone = zone;\n this.cd = cd;\n this.platformId = platformId;\n this.scheme = 'cool';\n this.schemeType = ScaleType.Ordinal;\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.animations = false;\n }\n }\n ngAfterViewInit() {\n this.bindWindowResizeEvent();\n // listen for visibility of the element for hidden by default scenario\n this.visibilityObserver = new VisibilityObserver(this.chartElement, this.zone);\n this.visibilityObserver.visible.subscribe(this.update.bind(this));\n }\n ngOnDestroy() {\n this.unbindEvents();\n if (this.visibilityObserver) {\n this.visibilityObserver.visible.unsubscribe();\n this.visibilityObserver.destroy();\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n if (this.results) {\n this.results = this.cloneData(this.results);\n }\n else {\n this.results = [];\n }\n if (this.view) {\n this.width = this.view[0];\n this.height = this.view[1];\n }\n else {\n const dims = this.getContainerDims();\n if (dims) {\n this.width = dims.width;\n this.height = dims.height;\n }\n }\n // default values if width or height are 0 or undefined\n if (!this.width) {\n this.width = 600;\n }\n if (!this.height) {\n this.height = 400;\n }\n this.width = Math.floor(this.width);\n this.height = Math.floor(this.height);\n if (this.cd) {\n this.cd.markForCheck();\n }\n }\n getContainerDims() {\n let width;\n let height;\n const hostElem = this.chartElement.nativeElement;\n if (isPlatformBrowser(this.platformId) && hostElem.parentNode !== null) {\n // Get the container dimensions\n const dims = hostElem.parentNode.getBoundingClientRect();\n width = dims.width;\n height = dims.height;\n }\n if (width && height) {\n return { width, height };\n }\n return null;\n }\n /**\n * Converts all date objects that appear as name\n * into formatted date strings\n */\n formatDates() {\n for (let i = 0; i < this.results.length; i++) {\n const g = this.results[i];\n g.label = g.name;\n if (isDate(g.label)) {\n g.label = g.label.toLocaleDateString();\n }\n if (g.series) {\n for (let j = 0; j < g.series.length; j++) {\n const d = g.series[j];\n d.label = d.name;\n if (isDate(d.label)) {\n d.label = d.label.toLocaleDateString();\n }\n }\n }\n }\n }\n unbindEvents() {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n bindWindowResizeEvent() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const source = fromEvent(window, 'resize');\n const subscription = source.pipe(debounceTime(200)).subscribe(e => {\n this.update();\n if (this.cd) {\n this.cd.markForCheck();\n }\n });\n this.resizeSubscription = subscription;\n }\n /**\n * Clones the data into a new object\n *\n * @memberOf BaseChart\n */\n cloneData(data) {\n const results = [];\n for (const item of data) {\n const copy = {\n name: item['name']\n };\n if (item['value'] !== undefined) {\n copy['value'] = item['value'];\n }\n if (item['series'] !== undefined) {\n copy['series'] = [];\n for (const seriesItem of item['series']) {\n const seriesItemCopy = Object.assign({}, seriesItem);\n copy['series'].push(seriesItemCopy);\n }\n }\n if (item['extra'] !== undefined) {\n copy['extra'] = JSON.parse(JSON.stringify(item['extra']));\n }\n results.push(copy);\n }\n return results;\n }\n}\nBaseChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BaseChartComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nBaseChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BaseChartComponent, selector: \"base-chart\", inputs: { results: \"results\", view: \"view\", scheme: \"scheme\", schemeType: \"schemeType\", customColors: \"customColors\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `
    `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BaseChartComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'base-chart',\n template: `
    `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { results: [{\n type: Input\n }], view: [{\n type: Input\n }], scheme: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], customColors: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nvar Orientation;\n(function (Orientation) {\n Orientation[\"Top\"] = \"top\";\n Orientation[\"Bottom\"] = \"bottom\";\n Orientation[\"Left\"] = \"left\";\n Orientation[\"Right\"] = \"right\";\n})(Orientation || (Orientation = {}));\n\nclass AxisLabelComponent {\n constructor(element) {\n this.textHeight = 25;\n this.margin = 5;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.strokeWidth = '0.01';\n this.textAnchor = 'middle';\n this.transform = '';\n switch (this.orient) {\n case Orientation.Top:\n this.y = this.offset;\n this.x = this.width / 2;\n break;\n case Orientation.Bottom:\n this.y = this.offset;\n this.x = this.width / 2;\n break;\n case Orientation.Left:\n this.y = -(this.offset + this.textHeight + this.margin);\n this.x = -this.height / 2;\n this.transform = 'rotate(270)';\n break;\n case Orientation.Right:\n this.y = this.offset + this.margin;\n this.x = -this.height / 2;\n this.transform = 'rotate(270)';\n break;\n default:\n }\n }\n}\nAxisLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxisLabelComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nAxisLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AxisLabelComponent, selector: \"g[ngx-charts-axis-label]\", inputs: { orient: \"orient\", label: \"label\", offset: \"offset\", width: \"width\", height: \"height\" }, usesOnChanges: true, ngImport: i0, template: `\n \n {{ label }}\n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxisLabelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-axis-label]',\n template: `\n \n {{ label }}\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { orient: [{\n type: Input\n }], label: [{\n type: Input\n }], offset: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }] } });\n\nfunction trimLabel(s, max = 16) {\n if (typeof s !== 'string') {\n if (typeof s === 'number') {\n return s + '';\n }\n else {\n return '';\n }\n }\n s = s.trim();\n if (s.length <= max) {\n return s;\n }\n else {\n return `${s.slice(0, max)}...`;\n }\n}\n\nfunction reduceTicks(ticks, maxTicks) {\n if (ticks.length > maxTicks) {\n const reduced = [];\n const modulus = Math.floor(ticks.length / maxTicks);\n for (let i = 0; i < ticks.length; i++) {\n if (i % modulus === 0) {\n reduced.push(ticks[i]);\n }\n }\n ticks = reduced;\n }\n return ticks;\n}\nfunction getTickLines(label, maxLength, maxLines) {\n const labelString = (label || '').toString();\n let totalLines = [];\n if (/\\s/.test(labelString)) {\n totalLines = labelString.split(/\\s+/).reduce((lines, line) => {\n const last = (lines.pop() || '') + ' ';\n return last.length + line.length > maxLength ? [...lines, last.trim(), line.trim()] : [...lines, last + line];\n }, []);\n }\n else {\n let startIndex = 0;\n while (startIndex < labelString.length) {\n totalLines.push(labelString.substring(startIndex, startIndex + maxLength));\n startIndex += maxLength;\n }\n }\n if (totalLines.length > maxLines) {\n totalLines = totalLines.splice(0, maxLines);\n totalLines[totalLines.length - 1] += '...';\n }\n return totalLines;\n}\n\nvar TextAnchor;\n(function (TextAnchor) {\n TextAnchor[\"Start\"] = \"start\";\n TextAnchor[\"Middle\"] = \"middle\";\n TextAnchor[\"End\"] = \"end\";\n})(TextAnchor || (TextAnchor = {}));\n\nclass XAxisTicksComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.tickArguments = [5];\n this.tickStroke = '#ccc';\n this.trimTicks = true;\n this.maxTickLength = 16;\n this.showGridLines = false;\n this.rotateTicks = true;\n this.wrapTicks = false;\n this.dimensionsChanged = new EventEmitter();\n this.verticalSpacing = 20;\n this.rotateLabels = false;\n this.innerTickSize = 6;\n this.outerTickSize = 6;\n this.tickPadding = 3;\n this.textAnchor = TextAnchor.Middle;\n this.maxTicksLength = 0;\n this.maxAllowedLength = 16;\n this.height = 0;\n this.approxHeight = 10;\n this.maxPossibleLengthForTickIfWrapped = 16;\n }\n get isWrapTicksSupported() {\n return this.wrapTicks && this.scale.step;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngAfterViewInit() {\n setTimeout(() => this.updateDims());\n }\n updateDims() {\n if (!isPlatformBrowser(this.platformId)) {\n // for SSR, use approximate value instead of measured\n this.dimensionsChanged.emit({ height: this.approxHeight });\n return;\n }\n const height = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().height, 10);\n if (height !== this.height) {\n this.height = height;\n this.dimensionsChanged.emit({ height: this.height });\n setTimeout(() => this.updateDims());\n }\n }\n update() {\n const scale = this.scale;\n this.ticks = this.getTicks();\n if (this.tickFormatting) {\n this.tickFormat = this.tickFormatting;\n }\n else if (scale.tickFormat) {\n // eslint-disable-next-line prefer-spread\n this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n }\n else {\n this.tickFormat = function (d) {\n if (d.constructor.name === 'Date') {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n const angle = this.rotateTicks ? this.getRotationAngle(this.ticks) : null;\n this.adjustedScale = this.scale.bandwidth\n ? function (d) {\n return this.scale(d) + this.scale.bandwidth() * 0.5;\n }\n : this.scale;\n this.textTransform = '';\n if (angle && angle !== 0) {\n this.textTransform = `rotate(${angle})`;\n this.textAnchor = TextAnchor.End;\n this.verticalSpacing = 10;\n }\n else {\n this.textAnchor = TextAnchor.Middle;\n }\n setTimeout(() => this.updateDims());\n }\n getRotationAngle(ticks) {\n let angle = 0;\n this.maxTicksLength = 0;\n for (let i = 0; i < ticks.length; i++) {\n const tick = this.tickFormat(ticks[i]).toString();\n let tickLength = tick.length;\n if (this.trimTicks) {\n tickLength = this.tickTrim(tick).length;\n }\n if (tickLength > this.maxTicksLength) {\n this.maxTicksLength = tickLength;\n }\n }\n const len = Math.min(this.maxTicksLength, this.maxAllowedLength);\n const charWidth = 7; // need to measure this\n const wordWidth = len * charWidth;\n let baseWidth = wordWidth;\n const maxBaseWidth = Math.floor(this.width / ticks.length);\n // calculate optimal angle\n while (baseWidth > maxBaseWidth && angle > -90) {\n angle -= 30;\n baseWidth = Math.cos(angle * (Math.PI / 180)) * wordWidth;\n }\n let labelHeight = 14;\n if (this.isWrapTicksSupported) {\n const longestTick = this.ticks.reduce((earlier, current) => (current.length > earlier.length ? current : earlier), '');\n const tickLines = this.tickChunks(longestTick);\n labelHeight = 14 * (tickLines.length || 1);\n this.maxPossibleLengthForTickIfWrapped = this.getMaxPossibleLengthForTick(longestTick);\n }\n const requiredHeight = angle !== 0\n ? Math.max(Math.abs(Math.sin((angle * Math.PI) / 180)) * this.maxTickLength * charWidth, 10)\n : labelHeight;\n this.approxHeight = Math.min(requiredHeight, 200);\n return angle;\n }\n getTicks() {\n let ticks;\n const maxTicks = this.getMaxTicks(20);\n const maxScaleTicks = this.getMaxTicks(100);\n if (this.tickValues) {\n ticks = this.tickValues;\n }\n else if (this.scale.ticks) {\n ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n }\n else {\n ticks = this.scale.domain();\n ticks = reduceTicks(ticks, maxTicks);\n }\n return ticks;\n }\n getMaxTicks(tickWidth) {\n return Math.floor(this.width / tickWidth);\n }\n tickTransform(tick) {\n return 'translate(' + this.adjustedScale(tick) + ',' + this.verticalSpacing + ')';\n }\n gridLineTransform() {\n return `translate(0,${-this.verticalSpacing - 5})`;\n }\n tickTrim(label) {\n return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n }\n getMaxPossibleLengthForTick(longestLabel) {\n if (this.scale.bandwidth) {\n const averageCharacterWidth = 7; // approximate char width\n const maxCharacters = Math.floor(this.scale.bandwidth() / averageCharacterWidth);\n const truncatedText = longestLabel.slice(0, maxCharacters);\n return Math.max(truncatedText.length, this.maxTickLength);\n }\n return this.maxTickLength;\n }\n tickChunks(label) {\n if (label.toString().length > this.maxTickLength && this.scale.bandwidth) {\n const maxAllowedLines = 5;\n let maxLines = this.rotateTicks ? Math.floor(this.scale.step() / 14) : maxAllowedLines;\n if (maxLines <= 1) {\n return [this.tickTrim(label)];\n }\n let possibleStringLength = Math.max(this.maxPossibleLengthForTickIfWrapped, this.maxTickLength);\n if (!isPlatformBrowser(this.platformId)) {\n possibleStringLength = Math.floor(Math.min(this.approxHeight / maxAllowedLines, Math.max(this.maxPossibleLengthForTickIfWrapped, this.maxTickLength)));\n }\n maxLines = Math.min(maxLines, maxAllowedLines);\n const lines = getTickLines(label, possibleStringLength, maxLines < 1 ? 1 : maxLines);\n return lines;\n }\n return [this.tickTrim(label)];\n }\n}\nXAxisTicksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: XAxisTicksComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nXAxisTicksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: XAxisTicksComponent, selector: \"g[ngx-charts-x-axis-ticks]\", inputs: { scale: \"scale\", orient: \"orient\", tickArguments: \"tickArguments\", tickValues: \"tickValues\", tickStroke: \"tickStroke\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", showGridLines: \"showGridLines\", gridLineHeight: \"gridLineHeight\", width: \"width\", rotateTicks: \"rotateTicks\", wrapTicks: \"wrapTicks\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, viewQueries: [{ propertyName: \"ticksElement\", first: true, predicate: [\"ticksel\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n {{ tickFormatted }}\n \n \n \n\n \n \n \n {{ tickLine }}\n \n \n \n\n \n {{ tickTrim(tickFormatted) }}\n \n \n \n \n\n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: XAxisTicksComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-x-axis-ticks]',\n template: `\n \n \n \n {{ tickFormatted }}\n \n \n \n\n \n \n \n {{ tickLine }}\n \n \n \n\n \n {{ tickTrim(tickFormatted) }}\n \n \n \n \n\n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { scale: [{\n type: Input\n }], orient: [{\n type: Input\n }], tickArguments: [{\n type: Input\n }], tickValues: [{\n type: Input\n }], tickStroke: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], gridLineHeight: [{\n type: Input\n }], width: [{\n type: Input\n }], rotateTicks: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], ticksElement: [{\n type: ViewChild,\n args: ['ticksel']\n }] } });\n\nclass XAxisComponent {\n constructor() {\n this.rotateTicks = true;\n this.showGridLines = false;\n this.xOrient = Orientation.Bottom;\n this.xAxisOffset = 0;\n this.wrapTicks = false;\n this.dimensionsChanged = new EventEmitter();\n this.xAxisClassName = 'x axis';\n this.labelOffset = 0;\n this.fill = 'none';\n this.stroke = 'stroke';\n this.tickStroke = '#ccc';\n this.strokeWidth = 'none';\n this.padding = 5;\n this.orientation = Orientation;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.transform = `translate(0,${this.xAxisOffset + this.padding + this.dims.height})`;\n if (typeof this.xAxisTickCount !== 'undefined') {\n this.tickArguments = [this.xAxisTickCount];\n }\n }\n emitTicksHeight({ height }) {\n const newLabelOffset = height + 25 + 5;\n if (newLabelOffset !== this.labelOffset) {\n this.labelOffset = newLabelOffset;\n setTimeout(() => {\n this.dimensionsChanged.emit({ height });\n }, 0);\n }\n }\n}\nXAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: XAxisComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nXAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: { xScale: \"xScale\", dims: \"dims\", trimTicks: \"trimTicks\", rotateTicks: \"rotateTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", showGridLines: \"showGridLines\", showLabel: \"showLabel\", labelText: \"labelText\", ticks: \"ticks\", xAxisTickCount: \"xAxisTickCount\", xOrient: \"xOrient\", xAxisOffset: \"xAxisOffset\", wrapTicks: \"wrapTicks\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, viewQueries: [{ propertyName: \"ticksComponent\", first: true, predicate: XAxisTicksComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: XAxisTicksComponent, selector: \"g[ngx-charts-x-axis-ticks]\", inputs: [\"scale\", \"orient\", \"tickArguments\", \"tickValues\", \"tickStroke\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"gridLineHeight\", \"width\", \"rotateTicks\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AxisLabelComponent, selector: \"g[ngx-charts-axis-label]\", inputs: [\"orient\", \"label\", \"offset\", \"width\", \"height\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: XAxisComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-x-axis]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { xScale: [{\n type: Input\n }], dims: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], rotateTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], showLabel: [{\n type: Input\n }], labelText: [{\n type: Input\n }], ticks: [{\n type: Input\n }], xAxisTickCount: [{\n type: Input\n }], xOrient: [{\n type: Input\n }], xAxisOffset: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], ticksComponent: [{\n type: ViewChild,\n args: [XAxisTicksComponent]\n }] } });\n\n/**\n * Generates a rounded rectanglar path\n *\n * @export\n * @param x, y, w, h, r, tl, tr, bl, br\n */\nfunction roundedRect(x, y, w, h, r, [tl, tr, bl, br]) {\n let retval = '';\n w = Math.floor(w);\n h = Math.floor(h);\n w = w === 0 ? 1 : w;\n h = h === 0 ? 1 : h;\n retval = `M${[x + r, y]}`;\n retval += `h${w - 2 * r}`;\n if (tr) {\n retval += `a${[r, r]} 0 0 1 ${[r, r]}`;\n }\n else {\n retval += `h${r}v${r}`;\n }\n retval += `v${h - 2 * r}`;\n if (br) {\n retval += `a${[r, r]} 0 0 1 ${[-r, r]}`;\n }\n else {\n retval += `v${r}h${-r}`;\n }\n retval += `h${2 * r - w}`;\n if (bl) {\n retval += `a${[r, r]} 0 0 1 ${[-r, -r]}`;\n }\n else {\n retval += `h${-r}v${-r}`;\n }\n retval += `v${2 * r - h}`;\n if (tl) {\n retval += `a${[r, r]} 0 0 1 ${[r, -r]}`;\n }\n else {\n retval += `v${-r}h${r}`;\n }\n retval += `z`;\n return retval;\n}\n\nclass YAxisTicksComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.tickArguments = [5];\n this.tickStroke = '#ccc';\n this.trimTicks = true;\n this.maxTickLength = 16;\n this.showGridLines = false;\n this.showRefLabels = false;\n this.showRefLines = false;\n this.wrapTicks = false;\n this.dimensionsChanged = new EventEmitter();\n this.innerTickSize = 6;\n this.tickPadding = 3;\n this.verticalSpacing = 20;\n this.textAnchor = TextAnchor.Middle;\n this.width = 0;\n this.outerTickSize = 6;\n this.rotateLabels = false;\n this.referenceLineLength = 0;\n this.Orientation = Orientation;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngAfterViewInit() {\n setTimeout(() => this.updateDims());\n }\n updateDims() {\n if (!isPlatformBrowser(this.platformId)) {\n // for SSR, use approximate value instead of measured\n this.width = this.getApproximateAxisWidth();\n this.dimensionsChanged.emit({ width: this.width });\n return;\n }\n const width = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().width, 10);\n if (width !== this.width) {\n this.width = width;\n this.dimensionsChanged.emit({ width });\n setTimeout(() => this.updateDims());\n }\n }\n update() {\n const scale = this.scale;\n const sign = this.orient === Orientation.Top || this.orient === Orientation.Right ? -1 : 1;\n this.tickSpacing = Math.max(this.innerTickSize, 0) + this.tickPadding;\n this.ticks = this.getTicks();\n if (this.tickFormatting) {\n this.tickFormat = this.tickFormatting;\n }\n else if (scale.tickFormat) {\n // eslint-disable-next-line prefer-spread\n this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n }\n else {\n this.tickFormat = function (d) {\n if (d.constructor.name === 'Date') {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n this.adjustedScale = scale.bandwidth\n ? d => {\n // position the tick to middle considering number of lines of the tick\n const positionMiddle = scale(d) + scale.bandwidth() * 0.5;\n if (this.wrapTicks && d.toString().length > this.maxTickLength) {\n const chunksLength = this.tickChunks(d).length;\n if (chunksLength === 1) {\n return positionMiddle;\n }\n const bandWidth = scale.bandwidth();\n const heightOfLines = chunksLength * 8;\n const availableFreeSpace = bandWidth * 0.5 - heightOfLines * 0.5;\n return scale(d) + availableFreeSpace;\n }\n return positionMiddle;\n }\n : scale;\n if (this.showRefLines && this.referenceLines) {\n this.setReferencelines();\n }\n switch (this.orient) {\n case Orientation.Top:\n this.transform = function (tick) {\n return 'translate(' + this.adjustedScale(tick) + ',0)';\n };\n this.textAnchor = TextAnchor.Middle;\n this.y2 = this.innerTickSize * sign;\n this.y1 = this.tickSpacing * sign;\n this.dy = sign < 0 ? '0em' : '.71em';\n break;\n case Orientation.Bottom:\n this.transform = function (tick) {\n return 'translate(' + this.adjustedScale(tick) + ',0)';\n };\n this.textAnchor = TextAnchor.Middle;\n this.y2 = this.innerTickSize * sign;\n this.y1 = this.tickSpacing * sign;\n this.dy = sign < 0 ? '0em' : '.71em';\n break;\n case Orientation.Left:\n this.transform = function (tick) {\n return 'translate(0,' + this.adjustedScale(tick) + ')';\n };\n this.textAnchor = TextAnchor.End;\n this.x2 = this.innerTickSize * -sign;\n this.x1 = this.tickSpacing * -sign;\n this.dy = '.32em';\n break;\n case Orientation.Right:\n this.transform = function (tick) {\n return 'translate(0,' + this.adjustedScale(tick) + ')';\n };\n this.textAnchor = TextAnchor.Start;\n this.x2 = this.innerTickSize * -sign;\n this.x1 = this.tickSpacing * -sign;\n this.dy = '.32em';\n break;\n default:\n }\n setTimeout(() => this.updateDims());\n }\n setReferencelines() {\n this.refMin = this.adjustedScale(Math.min.apply(null, this.referenceLines.map(item => item.value)));\n this.refMax = this.adjustedScale(Math.max.apply(null, this.referenceLines.map(item => item.value)));\n this.referenceLineLength = this.referenceLines.length;\n this.referenceAreaPath = roundedRect(0, this.refMax, this.gridLineWidth, this.refMin - this.refMax, 0, [\n false,\n false,\n false,\n false\n ]);\n }\n getTicks() {\n let ticks;\n const maxTicks = this.getMaxTicks(20);\n const maxScaleTicks = this.getMaxTicks(50);\n if (this.tickValues) {\n ticks = this.tickValues;\n }\n else if (this.scale.ticks) {\n ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n }\n else {\n ticks = this.scale.domain();\n ticks = reduceTicks(ticks, maxTicks);\n }\n return ticks;\n }\n getMaxTicks(tickHeight) {\n return Math.floor(this.height / tickHeight);\n }\n tickTransform(tick) {\n return `translate(${this.adjustedScale(tick)},${this.verticalSpacing})`;\n }\n gridLineTransform() {\n return `translate(5,0)`;\n }\n tickTrim(label) {\n return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n }\n getApproximateAxisWidth() {\n const maxChars = Math.max(...this.ticks.map(t => this.tickTrim(this.tickFormat(t)).length));\n const charWidth = 7;\n return maxChars * charWidth;\n }\n tickChunks(label) {\n if (label.toString().length > this.maxTickLength && this.scale.bandwidth) {\n // for y-axis the width of the tick is fixed\n const preferredWidth = this.maxTickLength;\n const maxLines = Math.floor(this.scale.bandwidth() / 15);\n if (maxLines <= 1) {\n return [this.tickTrim(label)];\n }\n return getTickLines(label, preferredWidth, Math.min(maxLines, 5));\n }\n return [this.tickFormat(label)];\n }\n}\nYAxisTicksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: YAxisTicksComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nYAxisTicksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: YAxisTicksComponent, selector: \"g[ngx-charts-y-axis-ticks]\", inputs: { scale: \"scale\", orient: \"orient\", tickArguments: \"tickArguments\", tickValues: \"tickValues\", tickStroke: \"tickStroke\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", showGridLines: \"showGridLines\", gridLineWidth: \"gridLineWidth\", height: \"height\", referenceLines: \"referenceLines\", showRefLabels: \"showRefLabels\", showRefLines: \"showRefLines\", wrapTicks: \"wrapTicks\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, viewQueries: [{ propertyName: \"ticksElement\", first: true, predicate: [\"ticksel\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n {{ tickFormatted }}\n \n \n \n\n \n \n 1; else tmplSinglelineTick\">\n \n {{ tickLine }}\n \n \n \n \n\n \n {{ tickTrim(tickFormatted) }}\n \n \n \n \n\n 1 && refMax && refMin && showRefLines\"\n class=\"reference-area\"\n [attr.d]=\"referenceAreaPath\"\n [attr.transform]=\"gridLineTransform()\"\n />\n \n \n \n \n \n \n\n \n \n \n \n {{ tickTrim(tickFormat(refLine.value)) }}\n \n {{ refLine.name }}\n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: YAxisTicksComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-y-axis-ticks]',\n template: `\n \n \n \n {{ tickFormatted }}\n \n \n \n\n \n \n 1; else tmplSinglelineTick\">\n \n {{ tickLine }}\n \n \n \n \n\n \n {{ tickTrim(tickFormatted) }}\n \n \n \n \n\n 1 && refMax && refMin && showRefLines\"\n class=\"reference-area\"\n [attr.d]=\"referenceAreaPath\"\n [attr.transform]=\"gridLineTransform()\"\n />\n \n \n \n \n \n \n\n \n \n \n \n {{ tickTrim(tickFormat(refLine.value)) }}\n \n {{ refLine.name }}\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { scale: [{\n type: Input\n }], orient: [{\n type: Input\n }], tickArguments: [{\n type: Input\n }], tickValues: [{\n type: Input\n }], tickStroke: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], gridLineWidth: [{\n type: Input\n }], height: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], ticksElement: [{\n type: ViewChild,\n args: ['ticksel']\n }] } });\n\nclass YAxisComponent {\n constructor() {\n this.showGridLines = false;\n this.yOrient = Orientation.Left;\n this.yAxisOffset = 0;\n this.wrapTicks = false;\n this.dimensionsChanged = new EventEmitter();\n this.yAxisClassName = 'y axis';\n this.labelOffset = 15;\n this.fill = 'none';\n this.stroke = '#CCC';\n this.tickStroke = '#CCC';\n this.strokeWidth = 1;\n this.padding = 5;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.offset = -(this.yAxisOffset + this.padding);\n if (this.yOrient === Orientation.Right) {\n this.labelOffset = 65;\n this.transform = `translate(${this.offset + this.dims.width} , 0)`;\n }\n else {\n this.transform = `translate(${this.offset} , 0)`;\n }\n if (this.yAxisTickCount !== undefined) {\n this.tickArguments = [this.yAxisTickCount];\n }\n }\n emitTicksWidth({ width }) {\n if (width !== this.labelOffset && this.yOrient === Orientation.Right) {\n this.labelOffset = width + this.labelOffset;\n setTimeout(() => {\n this.dimensionsChanged.emit({ width });\n }, 0);\n }\n else if (width !== this.labelOffset) {\n this.labelOffset = width;\n setTimeout(() => {\n this.dimensionsChanged.emit({ width });\n }, 0);\n }\n }\n}\nYAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: YAxisComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nYAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: { yScale: \"yScale\", dims: \"dims\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", ticks: \"ticks\", showGridLines: \"showGridLines\", showLabel: \"showLabel\", labelText: \"labelText\", yAxisTickCount: \"yAxisTickCount\", yOrient: \"yOrient\", referenceLines: \"referenceLines\", showRefLines: \"showRefLines\", showRefLabels: \"showRefLabels\", yAxisOffset: \"yAxisOffset\", wrapTicks: \"wrapTicks\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, viewQueries: [{ propertyName: \"ticksComponent\", first: true, predicate: YAxisTicksComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n \n `, isInline: true, components: [{ type: YAxisTicksComponent, selector: \"g[ngx-charts-y-axis-ticks]\", inputs: [\"scale\", \"orient\", \"tickArguments\", \"tickValues\", \"tickStroke\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"gridLineWidth\", \"height\", \"referenceLines\", \"showRefLabels\", \"showRefLines\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AxisLabelComponent, selector: \"g[ngx-charts-axis-label]\", inputs: [\"orient\", \"label\", \"offset\", \"width\", \"height\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: YAxisComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-y-axis]',\n template: `\n \n \n\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { yScale: [{\n type: Input\n }], dims: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], ticks: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], showLabel: [{\n type: Input\n }], labelText: [{\n type: Input\n }], yAxisTickCount: [{\n type: Input\n }], yOrient: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], yAxisOffset: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], ticksComponent: [{\n type: ViewChild,\n args: [YAxisTicksComponent]\n }] } });\n\nclass AxesModule {\n}\nAxesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAxesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxesModule, declarations: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent], imports: [CommonModule], exports: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent] });\nAxesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxesModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxesModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent],\n exports: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]\n }]\n }] });\n\nvar StyleTypes;\n(function (StyleTypes) {\n StyleTypes[\"popover\"] = \"popover\";\n StyleTypes[\"tooltip\"] = \"tooltip\";\n})(StyleTypes || (StyleTypes = {}));\n\nvar ShowTypes;\n(function (ShowTypes) {\n ShowTypes[ShowTypes[\"all\"] = 'all'] = \"all\";\n ShowTypes[ShowTypes[\"focus\"] = 'focus'] = \"focus\";\n ShowTypes[ShowTypes[\"mouseover\"] = 'mouseover'] = \"mouseover\";\n})(ShowTypes || (ShowTypes = {}));\n\nclass TooltipDirective {\n constructor(tooltipService, viewContainerRef, renderer) {\n this.tooltipService = tooltipService;\n this.viewContainerRef = viewContainerRef;\n this.renderer = renderer;\n this.tooltipCssClass = '';\n this.tooltipAppendToBody = true;\n this.tooltipSpacing = 10;\n this.tooltipDisabled = false;\n this.tooltipShowCaret = true;\n this.tooltipPlacement = PlacementTypes.Top;\n this.tooltipAlignment = PlacementTypes.Center;\n this.tooltipType = StyleTypes.popover;\n this.tooltipCloseOnClickOutside = true;\n this.tooltipCloseOnMouseLeave = true;\n this.tooltipHideTimeout = 300;\n this.tooltipShowTimeout = 100;\n this.tooltipShowEvent = ShowTypes.all;\n this.tooltipImmediateExit = false;\n this.show = new EventEmitter();\n this.hide = new EventEmitter();\n }\n get listensForFocus() {\n return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.focus;\n }\n get listensForHover() {\n return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.mouseover;\n }\n ngOnDestroy() {\n this.hideTooltip(true);\n }\n onFocus() {\n if (this.listensForFocus) {\n this.showTooltip();\n }\n }\n onBlur() {\n if (this.listensForFocus) {\n this.hideTooltip(true);\n }\n }\n onMouseEnter() {\n if (this.listensForHover) {\n this.showTooltip();\n }\n }\n onMouseLeave(target) {\n if (this.listensForHover && this.tooltipCloseOnMouseLeave) {\n clearTimeout(this.timeout);\n if (this.component) {\n const contentDom = this.component.instance.element.nativeElement;\n const contains = contentDom.contains(target);\n if (contains)\n return;\n }\n this.hideTooltip(this.tooltipImmediateExit);\n }\n }\n onMouseClick() {\n if (this.listensForHover) {\n this.hideTooltip(true);\n }\n }\n showTooltip(immediate) {\n if (this.component || this.tooltipDisabled)\n return;\n const time = immediate\n ? 0\n : this.tooltipShowTimeout + (navigator.userAgent.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/) ? 400 : 0);\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.tooltipService.destroyAll();\n const options = this.createBoundOptions();\n this.component = this.tooltipService.create(options);\n // add a tiny timeout to avoid event re-triggers\n setTimeout(() => {\n if (this.component) {\n this.addHideListeners(this.component.instance.element.nativeElement);\n }\n }, 10);\n this.show.emit(true);\n }, time);\n }\n addHideListeners(tooltip) {\n // on mouse enter, cancel the hide triggered by the leave\n this.mouseEnterContentEvent = this.renderer.listen(tooltip, 'mouseenter', () => {\n clearTimeout(this.timeout);\n });\n // content mouse leave listener\n if (this.tooltipCloseOnMouseLeave) {\n this.mouseLeaveContentEvent = this.renderer.listen(tooltip, 'mouseleave', () => {\n this.hideTooltip(this.tooltipImmediateExit);\n });\n }\n // content close on click outside\n if (this.tooltipCloseOnClickOutside) {\n this.documentClickEvent = this.renderer.listen('window', 'click', event => {\n const contains = tooltip.contains(event.target);\n if (!contains)\n this.hideTooltip();\n });\n }\n }\n hideTooltip(immediate = false) {\n if (!this.component)\n return;\n const destroyFn = () => {\n // remove events\n if (this.mouseLeaveContentEvent)\n this.mouseLeaveContentEvent();\n if (this.mouseEnterContentEvent)\n this.mouseEnterContentEvent();\n if (this.documentClickEvent)\n this.documentClickEvent();\n // emit events\n this.hide.emit(true);\n // destroy component\n this.tooltipService.destroy(this.component);\n this.component = undefined;\n };\n clearTimeout(this.timeout);\n if (!immediate) {\n this.timeout = setTimeout(destroyFn, this.tooltipHideTimeout);\n }\n else {\n destroyFn();\n }\n }\n createBoundOptions() {\n return {\n title: this.tooltipTitle,\n template: this.tooltipTemplate,\n host: this.viewContainerRef.element,\n placement: this.tooltipPlacement,\n alignment: this.tooltipAlignment,\n type: this.tooltipType,\n showCaret: this.tooltipShowCaret,\n cssClass: this.tooltipCssClass,\n spacing: this.tooltipSpacing,\n context: this.tooltipContext\n };\n }\n}\nTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipDirective, deps: [{ token: TooltipService }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: { tooltipCssClass: \"tooltipCssClass\", tooltipTitle: \"tooltipTitle\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipSpacing: \"tooltipSpacing\", tooltipDisabled: \"tooltipDisabled\", tooltipShowCaret: \"tooltipShowCaret\", tooltipPlacement: \"tooltipPlacement\", tooltipAlignment: \"tooltipAlignment\", tooltipType: \"tooltipType\", tooltipCloseOnClickOutside: \"tooltipCloseOnClickOutside\", tooltipCloseOnMouseLeave: \"tooltipCloseOnMouseLeave\", tooltipHideTimeout: \"tooltipHideTimeout\", tooltipShowTimeout: \"tooltipShowTimeout\", tooltipTemplate: \"tooltipTemplate\", tooltipShowEvent: \"tooltipShowEvent\", tooltipContext: \"tooltipContext\", tooltipImmediateExit: \"tooltipImmediateExit\" }, outputs: { show: \"show\", hide: \"hide\" }, host: { listeners: { \"focusin\": \"onFocus()\", \"blur\": \"onBlur()\", \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave($event.target)\", \"click\": \"onMouseClick()\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ngx-tooltip]' }]\n }], ctorParameters: function () { return [{ type: TooltipService }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { tooltipCssClass: [{\n type: Input\n }], tooltipTitle: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipSpacing: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipShowCaret: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAlignment: [{\n type: Input\n }], tooltipType: [{\n type: Input\n }], tooltipCloseOnClickOutside: [{\n type: Input\n }], tooltipCloseOnMouseLeave: [{\n type: Input\n }], tooltipHideTimeout: [{\n type: Input\n }], tooltipShowTimeout: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipShowEvent: [{\n type: Input\n }], tooltipContext: [{\n type: Input\n }], tooltipImmediateExit: [{\n type: Input\n }], show: [{\n type: Output\n }], hide: [{\n type: Output\n }], onFocus: [{\n type: HostListener,\n args: ['focusin']\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave', ['$event.target']]\n }], onMouseClick: [{\n type: HostListener,\n args: ['click']\n }] } });\n\nclass TooltipModule {\n}\nTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipModule, declarations: [TooltipContentComponent, TooltipDirective], imports: [CommonModule], exports: [TooltipContentComponent, TooltipDirective] });\nTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipModule, providers: [InjectionService, TooltipService], imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [TooltipContentComponent, TooltipDirective],\n providers: [InjectionService, TooltipService],\n exports: [TooltipContentComponent, TooltipDirective],\n imports: [CommonModule],\n entryComponents: [TooltipContentComponent]\n }]\n }] });\n\nconst cache = {};\n/**\n * Generates a short id.\n *\n * Description:\n * A 4-character alphanumeric sequence (364 = 1.6 million)\n * This should only be used for JavaScript specific models.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n *\n * Example: `ebgf`\n */\nfunction id() {\n let newId = ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n // append a 'a' because neo gets mad\n newId = `a${newId}`;\n // ensure not already used\n if (!cache[newId]) {\n cache[newId] = true;\n return newId;\n }\n return id();\n}\n\nvar BarOrientation;\n(function (BarOrientation) {\n BarOrientation[\"Vertical\"] = \"vertical\";\n BarOrientation[\"Horizontal\"] = \"horizontal\";\n})(BarOrientation || (BarOrientation = {}));\n\nclass SvgLinearGradientComponent {\n constructor() {\n this.orientation = BarOrientation.Vertical;\n }\n ngOnChanges(changes) {\n this.x1 = '0%';\n this.x2 = '0%';\n this.y1 = '0%';\n this.y2 = '0%';\n if (this.orientation === BarOrientation.Horizontal) {\n this.x2 = '100%';\n }\n else if (this.orientation === BarOrientation.Vertical) {\n this.y1 = '100%';\n }\n }\n}\nSvgLinearGradientComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SvgLinearGradientComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nSvgLinearGradientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: { orientation: \"orientation\", name: \"name\", stops: \"stops\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SvgLinearGradientComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-svg-linear-gradient]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { orientation: [{\n type: Input\n }], name: [{\n type: Input\n }], stops: [{\n type: Input\n }] } });\n\nclass CircleComponent {\n constructor() {\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n onClick() {\n this.select.emit(this.data);\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n ngOnChanges(changes) {\n this.classNames = Array.isArray(this.classNames) ? this.classNames.join(' ') : '';\n this.classNames += 'circle';\n }\n}\nCircleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CircleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCircleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: CircleComponent, selector: \"g[ngx-charts-circle]\", inputs: { cx: \"cx\", cy: \"cy\", r: \"r\", fill: \"fill\", stroke: \"stroke\", data: \"data\", classNames: \"classNames\", circleOpacity: \"circleOpacity\", pointerEvents: \"pointerEvents\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"click\": \"onClick()\", \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave()\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CircleComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-circle]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { cx: [{\n type: Input\n }], cy: [{\n type: Input\n }], r: [{\n type: Input\n }], fill: [{\n type: Input\n }], stroke: [{\n type: Input\n }], data: [{\n type: Input\n }], classNames: [{\n type: Input\n }], circleOpacity: [{\n type: Input\n }], pointerEvents: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nvar SeriesType;\n(function (SeriesType) {\n SeriesType[\"Standard\"] = \"standard\";\n SeriesType[\"Stacked\"] = \"stacked\";\n})(SeriesType || (SeriesType = {}));\nclass CircleSeriesComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.type = SeriesType.Standard;\n this.tooltipDisabled = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.barVisible = false;\n this.barOrientation = BarOrientation;\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n this.isSSR = false;\n }\n ngOnInit() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n ngOnChanges() {\n this.update();\n }\n update() {\n this.circle = this.getActiveCircle();\n }\n getActiveCircle() {\n const indexActiveDataPoint = this.data.series.findIndex(d => {\n const label = d.name;\n return label && this.visibleValue && label.toString() === this.visibleValue.toString() && d.value !== undefined;\n });\n if (indexActiveDataPoint === -1) {\n // No valid point is 'active/hovered over' at this moment.\n return undefined;\n }\n return this.mapDataPointToCircle(this.data.series[indexActiveDataPoint], indexActiveDataPoint);\n }\n mapDataPointToCircle(d, i) {\n const seriesName = this.data.name;\n const value = d.value;\n const label = d.name;\n const tooltipLabel = formatLabel(label);\n let cx;\n if (this.scaleType === ScaleType.Time) {\n cx = this.xScale(label);\n }\n else if (this.scaleType === ScaleType.Linear) {\n cx = this.xScale(Number(label));\n }\n else {\n cx = this.xScale(label);\n }\n const cy = this.yScale(this.type === SeriesType.Standard ? value : d.d1);\n const radius = 5;\n const height = this.yScale.range()[0] - cy;\n const opacity = 1;\n let color;\n if (this.colors.scaleType === ScaleType.Linear) {\n if (this.type === SeriesType.Standard) {\n color = this.colors.getColor(value);\n }\n else {\n color = this.colors.getColor(d.d1);\n }\n }\n else {\n color = this.colors.getColor(seriesName);\n }\n const data = Object.assign({}, d, {\n series: seriesName,\n value,\n name: label\n });\n return {\n classNames: [`circle-data-${i}`],\n value,\n label,\n data,\n cx,\n cy,\n radius,\n height,\n tooltipLabel,\n color,\n opacity,\n seriesName,\n gradientStops: this.getGradientStops(color),\n min: d.min,\n max: d.max\n };\n }\n getTooltipText({ tooltipLabel, value, seriesName, min, max }) {\n return `\n ${escapeLabel(seriesName)} • ${escapeLabel(tooltipLabel)}\n ${value.toLocaleString()}${this.getTooltipMinMaxText(min, max)}\n `;\n }\n getTooltipMinMaxText(min, max) {\n if (min !== undefined || max !== undefined) {\n let result = ' (';\n if (min !== undefined) {\n if (max === undefined) {\n result += '≥';\n }\n result += min.toLocaleString();\n if (max !== undefined) {\n result += ' - ';\n }\n }\n else if (max !== undefined) {\n result += '≤';\n }\n if (max !== undefined) {\n result += max.toLocaleString();\n }\n result += ')';\n return result;\n }\n else {\n return '';\n }\n }\n getGradientStops(color) {\n return [\n {\n offset: 0,\n color,\n opacity: 0.2\n },\n {\n offset: 100,\n color,\n opacity: 1\n }\n ];\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n activateCircle() {\n this.barVisible = true;\n this.activate.emit({ name: this.data.name });\n }\n deactivateCircle() {\n this.barVisible = false;\n this.circle.opacity = 0;\n this.deactivate.emit({ name: this.data.name });\n }\n}\nCircleSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CircleSeriesComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nCircleSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: CircleSeriesComponent, selector: \"g[ngx-charts-circle-series]\", inputs: { data: \"data\", type: \"type\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", visibleValue: \"visibleValue\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }, { type: CircleComponent, selector: \"g[ngx-charts-circle]\", inputs: [\"cx\", \"cy\", \"r\", \"fill\", \"stroke\", \"data\", \"classNames\", \"circleOpacity\", \"pointerEvents\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 1 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CircleSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-circle-series]',\n template: `\n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 1 }))\n ])\n ])\n ]\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { data: [{\n type: Input\n }], type: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], visibleValue: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass GridPanelComponent {\n}\nGridPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GridPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGridPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: GridPanelComponent, selector: \"g[ngx-charts-grid-panel]\", inputs: { width: \"width\", height: \"height\", x: \"x\", y: \"y\" }, ngImport: i0, template: `\n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GridPanelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-grid-panel]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { width: [{\n type: Input\n }], height: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }] } });\n\nvar ClassEnum;\n(function (ClassEnum) {\n ClassEnum[\"Odd\"] = \"odd\";\n ClassEnum[\"Even\"] = \"even\";\n})(ClassEnum || (ClassEnum = {}));\nclass GridPanelSeriesComponent {\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.gridPanels = this.getGridPanels();\n }\n getGridPanels() {\n return this.data.map(d => {\n let offset;\n let width;\n let height;\n let x;\n let y;\n let className = ClassEnum.Odd;\n if (this.orient === BarOrientation.Vertical) {\n const position = this.xScale(d.name);\n const positionIndex = Number.parseInt((position / this.xScale.step()).toString(), 10);\n if (positionIndex % 2 === 1) {\n className = ClassEnum.Even;\n }\n offset = this.xScale.bandwidth() * this.xScale.paddingInner();\n width = this.xScale.bandwidth() + offset;\n height = this.dims.height;\n x = this.xScale(d.name) - offset / 2;\n y = 0;\n }\n else if (this.orient === BarOrientation.Horizontal) {\n const position = this.yScale(d.name);\n const positionIndex = Number.parseInt((position / this.yScale.step()).toString(), 10);\n if (positionIndex % 2 === 1) {\n className = ClassEnum.Even;\n }\n offset = this.yScale.bandwidth() * this.yScale.paddingInner();\n width = this.dims.width;\n height = this.yScale.bandwidth() + offset;\n x = 0;\n y = this.yScale(d.name) - offset / 2;\n }\n return {\n name: d.name,\n class: className,\n height,\n width,\n x,\n y\n };\n });\n }\n}\nGridPanelSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GridPanelSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGridPanelSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: GridPanelSeriesComponent, selector: \"g[ngx-charts-grid-panel-series]\", inputs: { data: \"data\", dims: \"dims\", xScale: \"xScale\", yScale: \"yScale\", orient: \"orient\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, components: [{ type: GridPanelComponent, selector: \"g[ngx-charts-grid-panel]\", inputs: [\"width\", \"height\", \"x\", \"y\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GridPanelSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-grid-panel-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], dims: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], orient: [{\n type: Input\n }] } });\n\nclass SvgRadialGradientComponent {\n constructor() {\n this.endOpacity = 1;\n this.cx = 0;\n this.cy = 0;\n }\n get stops() {\n return this.stopsInput || this.stopsDefault;\n }\n set stops(value) {\n this.stopsInput = value;\n }\n ngOnChanges(changes) {\n this.r = '30%';\n if ('color' in changes || 'startOpacity' in changes || 'endOpacity' in changes) {\n this.stopsDefault = [\n {\n offset: 0,\n color: this.color,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.color,\n opacity: this.endOpacity\n }\n ];\n }\n }\n}\nSvgRadialGradientComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SvgRadialGradientComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nSvgRadialGradientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: SvgRadialGradientComponent, selector: \"g[ngx-charts-svg-radial-gradient]\", inputs: { color: \"color\", name: \"name\", startOpacity: \"startOpacity\", endOpacity: \"endOpacity\", cx: \"cx\", cy: \"cy\", stops: \"stops\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SvgRadialGradientComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-svg-radial-gradient]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { color: [{\n type: Input\n }], name: [{\n type: Input\n }], startOpacity: [{\n type: Input\n }], endOpacity: [{\n type: Input\n }], cx: [{\n type: Input\n }], cy: [{\n type: Input\n }], stops: [{\n type: Input\n }] } });\n\nclass AreaComponent {\n constructor(element) {\n this.opacity = 1;\n this.startOpacity = 0.5;\n this.endOpacity = 1;\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.animationsLoaded = false;\n this.hasGradient = false;\n this.barOrientation = BarOrientation;\n this.element = element.nativeElement;\n }\n ngOnChanges() {\n this.update();\n if (!this.animationsLoaded) {\n this.loadAnimation();\n this.animationsLoaded = true;\n }\n }\n update() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (this.gradient || this.stops) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n }\n else {\n this.hasGradient = false;\n }\n this.updatePathEl();\n }\n loadAnimation() {\n this.areaPath = this.startingPath;\n setTimeout(this.updatePathEl.bind(this), 100);\n }\n updatePathEl() {\n const node = select(this.element).select('.area');\n if (this.animations) {\n node.transition().duration(750).attr('d', this.path);\n }\n else {\n node.attr('d', this.path);\n }\n }\n getGradient() {\n if (this.stops) {\n return this.stops;\n }\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.fill,\n opacity: this.endOpacity\n }\n ];\n }\n}\nAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AreaComponent, selector: \"g[ngx-charts-area]\", inputs: { data: \"data\", path: \"path\", startingPath: \"startingPath\", fill: \"fill\", opacity: \"opacity\", startOpacity: \"startOpacity\", endOpacity: \"endOpacity\", gradient: \"gradient\", stops: \"stops\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-area]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { data: [{\n type: Input\n }], path: [{\n type: Input\n }], startingPath: [{\n type: Input\n }], fill: [{\n type: Input\n }], opacity: [{\n type: Input\n }], startOpacity: [{\n type: Input\n }], endOpacity: [{\n type: Input\n }], gradient: [{\n type: Input\n }], stops: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\n// Robert Penner's easeOutExpo\nfunction easeOutExpo(t, b, c, d) {\n return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b;\n}\n/**\n * Counts from a number to the end incrementally.\n */\nfunction count(countFrom, countTo, countDecimals, countDuration, callback) {\n const startVal = Number(countFrom);\n const endVal = Number(countTo);\n const countDown = startVal > endVal;\n const decimals = Math.max(0, countDecimals);\n const dec = Math.pow(10, decimals);\n const duration = Number(countDuration) * 1000;\n let startTime;\n function runCount(timestamp) {\n let frameVal;\n const progress = timestamp - startTime;\n if (countDown) {\n frameVal = startVal - easeOutExpo(progress, 0, startVal - endVal, duration);\n }\n else {\n frameVal = easeOutExpo(progress, startVal, endVal - startVal, duration);\n }\n if (countDown) {\n frameVal = frameVal < endVal ? endVal : frameVal;\n }\n else {\n frameVal = frameVal > endVal ? endVal : frameVal;\n }\n frameVal = Math.round(frameVal * dec) / dec;\n const tick = progress < duration;\n callback({\n value: frameVal,\n progress,\n timestamp,\n finished: !tick\n });\n if (tick) {\n return requestAnimationFrame(val => runCount(val));\n }\n }\n return requestAnimationFrame(timestamp => {\n startTime = timestamp;\n return runCount(timestamp);\n });\n}\n/**\n * Determine decimals places\n *\n * @export\n */\nfunction decimalChecker(countTo) {\n const endVal = Number(countTo);\n if (endVal % 1 !== 0 && Math.abs(endVal) <= 10) {\n return 2;\n }\n return 0;\n}\n\n/**\n * Count up component\n *\n * Loosely inspired by:\n * - https://github.com/izupet/angular2-counto\n * - https://inorganik.github.io/countUp.js/\n *\n * @export\n */\nclass CountUpDirective {\n constructor(cd, element) {\n this.cd = cd;\n this.countDuration = 1;\n this.countPrefix = '';\n this.countSuffix = '';\n this.countChange = new EventEmitter();\n this.countFinish = new EventEmitter();\n this.value = '';\n this._countDecimals = 0;\n this._countTo = 0;\n this._countFrom = 0;\n this.nativeElement = element.nativeElement;\n }\n set countDecimals(val) {\n this._countDecimals = val;\n }\n get countDecimals() {\n if (this._countDecimals)\n return this._countDecimals;\n return decimalChecker(this.countTo);\n }\n set countTo(val) {\n this._countTo = parseFloat(val);\n this.start();\n }\n get countTo() {\n return this._countTo;\n }\n set countFrom(val) {\n this._countFrom = parseFloat(val);\n this.start();\n }\n get countFrom() {\n return this._countFrom;\n }\n ngOnDestroy() {\n cancelAnimationFrame(this.animationReq);\n }\n start() {\n cancelAnimationFrame(this.animationReq);\n const valueFormatting = this.valueFormatting || (value => `${this.countPrefix}${value.toLocaleString()}${this.countSuffix}`);\n const callback = ({ value, progress, finished }) => {\n this.value = valueFormatting(value);\n this.cd.markForCheck();\n if (!finished)\n this.countChange.emit({ value: this.value, progress });\n if (finished)\n this.countFinish.emit({ value: this.value, progress });\n };\n this.animationReq = count(this.countFrom, this.countTo, this.countDecimals, this.countDuration, callback);\n }\n}\nCountUpDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CountUpDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nCountUpDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: CountUpDirective, selector: \"[ngx-charts-count-up]\", inputs: { countDuration: \"countDuration\", countPrefix: \"countPrefix\", countSuffix: \"countSuffix\", valueFormatting: \"valueFormatting\", countDecimals: \"countDecimals\", countTo: \"countTo\", countFrom: \"countFrom\" }, outputs: { countChange: \"countChange\", countFinish: \"countFinish\" }, ngImport: i0, template: ` {{ value }} `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CountUpDirective, decorators: [{\n type: Component,\n args: [{\n selector: '[ngx-charts-count-up]',\n template: ` {{ value }} `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { countDuration: [{\n type: Input\n }], countPrefix: [{\n type: Input\n }], countSuffix: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], countDecimals: [{\n type: Input\n }], countTo: [{\n type: Input\n }], countFrom: [{\n type: Input\n }], countChange: [{\n type: Output\n }], countFinish: [{\n type: Output\n }] } });\n\n// If we don't check whether 'window' and 'global' variables are defined,\n// code will fail in browser/node with 'variable is undefined' error.\nlet root;\nif (typeof window !== 'undefined') {\n root = window;\n}\nelse if (typeof global !== 'undefined') {\n root = global;\n}\n// tslint:disable-next-line:variable-name\nconst MouseEvent = root.MouseEvent;\nfunction createMouseEvent(name, bubbles = false, cancelable = true) {\n // Calling new of an event does not work correctly on IE. The following is a tested workaround\n // See https://stackoverflow.com/questions/27176983/dispatchevent-not-working-in-ie11\n if (typeof MouseEvent === 'function') {\n // Sane browsers\n return new MouseEvent(name, { bubbles, cancelable });\n }\n else {\n // IE\n const event = document.createEvent('MouseEvent');\n event.initEvent(name, bubbles, cancelable);\n return event;\n }\n}\n\nclass TooltipArea {\n constructor(platformId) {\n this.platformId = platformId;\n this.anchorOpacity = 0;\n this.anchorPos = -1;\n this.anchorValues = [];\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n this.showPercentage = false;\n this.tooltipDisabled = false;\n this.hover = new EventEmitter();\n }\n getValues(xVal) {\n const results = [];\n for (const group of this.results) {\n const item = group.series.find(d => d.name.toString() === xVal.toString());\n let groupName = group.name;\n if (groupName instanceof Date) {\n groupName = groupName.toLocaleDateString();\n }\n if (item) {\n const label = item.name;\n let val = item.value;\n if (this.showPercentage) {\n val = (item.d1 - item.d0).toFixed(2) + '%';\n }\n let color;\n if (this.colors.scaleType === ScaleType.Linear) {\n let v = val;\n if (item.d1) {\n v = item.d1;\n }\n color = this.colors.getColor(v);\n }\n else {\n color = this.colors.getColor(group.name);\n }\n const data = Object.assign({}, item, {\n value: val,\n name: label,\n series: groupName,\n min: item.min,\n max: item.max,\n color\n });\n results.push(data);\n }\n }\n return results;\n }\n mouseMove(event) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const xPos = event.pageX - event.target.getBoundingClientRect().left;\n const closestIndex = this.findClosestPointIndex(xPos);\n const closestPoint = this.xSet[closestIndex];\n this.anchorPos = this.xScale(closestPoint);\n this.anchorPos = Math.max(0, this.anchorPos);\n this.anchorPos = Math.min(this.dims.width, this.anchorPos);\n this.anchorValues = this.getValues(closestPoint);\n if (this.anchorPos !== this.lastAnchorPos) {\n const ev = createMouseEvent('mouseleave');\n this.tooltipAnchor.nativeElement.dispatchEvent(ev);\n this.anchorOpacity = 0.7;\n this.hover.emit({\n value: closestPoint\n });\n this.showTooltip();\n this.lastAnchorPos = this.anchorPos;\n }\n }\n findClosestPointIndex(xPos) {\n let minIndex = 0;\n let maxIndex = this.xSet.length - 1;\n let minDiff = Number.MAX_VALUE;\n let closestIndex = 0;\n while (minIndex <= maxIndex) {\n const currentIndex = ((minIndex + maxIndex) / 2) | 0;\n const currentElement = this.xScale(this.xSet[currentIndex]);\n const curDiff = Math.abs(currentElement - xPos);\n if (curDiff < minDiff) {\n minDiff = curDiff;\n closestIndex = currentIndex;\n }\n if (currentElement < xPos) {\n minIndex = currentIndex + 1;\n }\n else if (currentElement > xPos) {\n maxIndex = currentIndex - 1;\n }\n else {\n minDiff = 0;\n closestIndex = currentIndex;\n break;\n }\n }\n return closestIndex;\n }\n showTooltip() {\n const event = createMouseEvent('mouseenter');\n this.tooltipAnchor.nativeElement.dispatchEvent(event);\n }\n hideTooltip() {\n const event = createMouseEvent('mouseleave');\n this.tooltipAnchor.nativeElement.dispatchEvent(event);\n this.anchorOpacity = 0;\n this.lastAnchorPos = -1;\n }\n getToolTipText(tooltipItem) {\n let result = '';\n if (tooltipItem.series !== undefined) {\n result += tooltipItem.series;\n }\n else {\n result += '???';\n }\n result += ': ';\n if (tooltipItem.value !== undefined) {\n result += tooltipItem.value.toLocaleString();\n }\n if (tooltipItem.min !== undefined || tooltipItem.max !== undefined) {\n result += ' (';\n if (tooltipItem.min !== undefined) {\n if (tooltipItem.max === undefined) {\n result += '≥';\n }\n result += tooltipItem.min.toLocaleString();\n if (tooltipItem.max !== undefined) {\n result += ' - ';\n }\n }\n else if (tooltipItem.max !== undefined) {\n result += '≤';\n }\n if (tooltipItem.max !== undefined) {\n result += tooltipItem.max.toLocaleString();\n }\n result += ')';\n }\n return result;\n }\n}\nTooltipArea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipArea, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nTooltipArea.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TooltipArea, selector: \"g[ngx-charts-tooltip-area]\", inputs: { dims: \"dims\", xSet: \"xSet\", xScale: \"xScale\", yScale: \"yScale\", results: \"results\", colors: \"colors\", showPercentage: \"showPercentage\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { hover: \"hover\" }, viewQueries: [{ propertyName: \"tooltipAnchor\", first: true, predicate: [\"tooltipAnchor\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n \n {{ getToolTipText(tooltipItem) }}\n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], animations: [\n trigger('animationState', [\n transition('inactive => active', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 0.7 }))\n ]),\n transition('active => inactive', [\n style({\n opacity: 0.7\n }),\n animate(250, style({ opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipArea, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tooltip-area]',\n template: `\n \n \n \n \n \n \n {{ getToolTipText(tooltipItem) }}\n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition('inactive => active', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 0.7 }))\n ]),\n transition('active => inactive', [\n style({\n opacity: 0.7\n }),\n animate(250, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { dims: [{\n type: Input\n }], xSet: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], results: [{\n type: Input\n }], colors: [{\n type: Input\n }], showPercentage: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], hover: [{\n type: Output\n }], tooltipAnchor: [{\n type: ViewChild,\n args: ['tooltipAnchor', { static: false }]\n }] } });\n\nclass Timeline {\n constructor(element, cd) {\n this.cd = cd;\n this.height = 50;\n this.select = new EventEmitter();\n this.onDomainChange = new EventEmitter();\n this.initialized = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n if (!this.initialized) {\n this.addBrush();\n this.initialized = true;\n }\n }\n update() {\n this.dims = this.getDims();\n this.height = this.dims.height;\n const offsetY = this.view[1] - this.height;\n this.xDomain = this.getXDomain();\n this.xScale = this.getXScale();\n if (this.brush) {\n this.updateBrush();\n }\n this.transform = `translate(0 , ${offsetY})`;\n this.filterId = 'filter' + id().toString();\n this.filter = `url(#${this.filterId})`;\n this.cd.markForCheck();\n }\n getXDomain() {\n let values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.name)) {\n values.push(d.name);\n }\n }\n }\n let domain = [];\n if (this.scaleType === ScaleType.Time) {\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n }\n else if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n }\n else {\n domain = values;\n }\n return domain;\n }\n getXScale() {\n let scale;\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime().range([0, this.dims.width]).domain(this.xDomain);\n }\n else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear().range([0, this.dims.width]).domain(this.xDomain);\n }\n else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().range([0, this.dims.width]).padding(0.1).domain(this.xDomain);\n }\n return scale;\n }\n addBrush() {\n if (this.brush)\n return;\n const height = this.height;\n const width = this.view[0];\n this.brush = brushX()\n .extent([\n [0, 0],\n [width, height]\n ])\n .on('brush end', ({ selection }) => {\n const newSelection = selection || this.xScale.range();\n const newDomain = newSelection.map(this.xScale.invert);\n this.onDomainChange.emit(newDomain);\n this.cd.markForCheck();\n });\n select(this.element).select('.brush').call(this.brush);\n }\n updateBrush() {\n if (!this.brush)\n return;\n const height = this.height;\n const width = this.view[0];\n this.brush.extent([\n [0, 0],\n [width, height]\n ]);\n select(this.element).select('.brush').call(this.brush);\n // clear hardcoded properties so they can be defined by CSS\n select(this.element)\n .select('.selection')\n .attr('fill', undefined)\n .attr('stroke', undefined)\n .attr('fill-opacity', undefined);\n this.cd.markForCheck();\n }\n getDims() {\n const width = this.view[0];\n const dims = {\n width,\n height: this.height\n };\n return dims;\n }\n}\nTimeline.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: Timeline, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTimeline.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: Timeline, selector: \"g[ngx-charts-timeline]\", inputs: { view: \"view\", results: \"results\", scheme: \"scheme\", customColors: \"customColors\", legend: \"legend\", autoScale: \"autoScale\", scaleType: \"scaleType\", height: \"height\" }, outputs: { select: \"select\", onDomainChange: \"onDomainChange\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".timeline .brush-background{fill:#0000000d}.timeline .brush .selection{fill:#0000001a;stroke-width:1px;stroke:#888}.timeline .brush .handle{fill-opacity:0}.timeline .embedded-chart{opacity:.6}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: Timeline, decorators: [{\n type: Component,\n args: [{ selector: 'g[ngx-charts-timeline]', template: `\n \n \n \n \n \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".timeline .brush-background{fill:#0000000d}.timeline .brush .selection{fill:#0000001a;stroke-width:1px;stroke:#888}.timeline .brush .handle{fill-opacity:0}.timeline .embedded-chart{opacity:.6}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { view: [{\n type: Input\n }], results: [{\n type: Input\n }], scheme: [{\n type: Input\n }], customColors: [{\n type: Input\n }], legend: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], height: [{\n type: Input\n }], select: [{\n type: Output\n }], onDomainChange: [{\n type: Output\n }] } });\n\nclass AdvancedLegendComponent {\n constructor() {\n this.label = 'Total';\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.legendItems = [];\n this.labelFormatting = label => label;\n this.percentageFormatting = percentage => percentage;\n this.defaultValueFormatting = value => value.toLocaleString();\n }\n ngOnChanges(changes) {\n this.update();\n }\n getTotal() {\n return this.data.map(d => Number(d.value)).reduce((sum, d) => sum + d, 0);\n }\n update() {\n this.total = this.getTotal();\n this.roundedTotal = this.total;\n this.legendItems = this.getLegendItems();\n }\n getLegendItems() {\n return this.data.map(d => {\n const label = formatLabel(d.name);\n const value = d.value;\n const color = this.colors.getColor(label);\n const percentage = this.total > 0 ? (value / this.total) * 100 : 0;\n const formattedLabel = typeof this.labelFormatting === 'function' ? this.labelFormatting(label) : label;\n return {\n _value: value,\n data: d,\n value,\n color,\n label: formattedLabel,\n displayLabel: trimLabel(formattedLabel, 20),\n origialLabel: d.name,\n percentage: this.percentageFormatting ? this.percentageFormatting(percentage) : percentage.toLocaleString()\n };\n });\n }\n trackBy(index, item) {\n return item.label;\n }\n}\nAdvancedLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AdvancedLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nAdvancedLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AdvancedLegendComponent, selector: \"ngx-charts-advanced-legend\", inputs: { width: \"width\", data: \"data\", colors: \"colors\", label: \"label\", animations: \"animations\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", percentageFormatting: \"percentageFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n
    \n
    \n
    \n {{ valueFormatting ? valueFormatting(roundedTotal) : defaultValueFormatting(roundedTotal) }}\n
    \n
    \n {{ label }}\n
    \n
    \n
    \n \n
    \n
    \n
    \n {{ valueFormatting ? valueFormatting(legendItem.value) : defaultValueFormatting(legendItem.value) }}\n
    \n
    {{ legendItem.displayLabel }}
    \n
    \n
    {{ legendItem.percentage.toLocaleString() }}%
    \n \n \n \n \n `, isInline: true, styles: [\".advanced-pie-legend{float:left;position:relative;top:50%;transform:translateY(-50%)}.advanced-pie-legend .total-value{font-size:36px}.advanced-pie-legend .total-label{font-size:24px;margin-bottom:19px}.advanced-pie-legend .legend-items-container{width:100%}.advanced-pie-legend .legend-items-container .legend-items{white-space:nowrap;overflow:auto}.advanced-pie-legend .legend-items-container .legend-items .legend-item{margin-right:20px;display:inline-block;cursor:pointer}.advanced-pie-legend .legend-items-container .legend-items .legend-item:focus{outline:none}.advanced-pie-legend .legend-items-container .legend-items .legend-item:hover{color:#000;transition:.2s}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-value{font-size:24px;margin-top:-6px;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-label{font-size:14px;opacity:.7;margin-left:11px;margin-top:-6px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-percent{font-size:24px;opacity:.7;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-color{border-left:4px solid;width:4px;height:42px;float:left;margin-right:7px}\\n\"], components: [{ type: CountUpDirective, selector: \"[ngx-charts-count-up]\", inputs: [\"countDuration\", \"countPrefix\", \"countSuffix\", \"valueFormatting\", \"countDecimals\", \"countTo\", \"countFrom\"], outputs: [\"countChange\", \"countFinish\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AdvancedLegendComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-advanced-legend', template: `\n
    \n
    \n
    \n {{ valueFormatting ? valueFormatting(roundedTotal) : defaultValueFormatting(roundedTotal) }}\n
    \n
    \n {{ label }}\n
    \n
    \n
    \n \n
    \n
    \n
    \n {{ valueFormatting ? valueFormatting(legendItem.value) : defaultValueFormatting(legendItem.value) }}\n
    \n
    {{ legendItem.displayLabel }}
    \n
    \n
    {{ legendItem.percentage.toLocaleString() }}%
    \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".advanced-pie-legend{float:left;position:relative;top:50%;transform:translateY(-50%)}.advanced-pie-legend .total-value{font-size:36px}.advanced-pie-legend .total-label{font-size:24px;margin-bottom:19px}.advanced-pie-legend .legend-items-container{width:100%}.advanced-pie-legend .legend-items-container .legend-items{white-space:nowrap;overflow:auto}.advanced-pie-legend .legend-items-container .legend-items .legend-item{margin-right:20px;display:inline-block;cursor:pointer}.advanced-pie-legend .legend-items-container .legend-items .legend-item:focus{outline:none}.advanced-pie-legend .legend-items-container .legend-items .legend-item:hover{color:#000;transition:.2s}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-value{font-size:24px;margin-top:-6px;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-label{font-size:14px;opacity:.7;margin-left:11px;margin-top:-6px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-percent{font-size:24px;opacity:.7;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-color{border-left:4px solid;width:4px;height:42px;float:left;margin-right:7px}\\n\"] }]\n }], propDecorators: { width: [{\n type: Input\n }], data: [{\n type: Input\n }], colors: [{\n type: Input\n }], label: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], percentageFormatting: [{\n type: Input\n }] } });\n\nconst COMPONENTS = [\n AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent\n];\nclass ChartCommonModule {\n}\nChartCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nChartCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartCommonModule, declarations: [AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent, VisibilityObserver], imports: [CommonModule, AxesModule, TooltipModule], exports: [CommonModule, AxesModule, TooltipModule, AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent, VisibilityObserver] });\nChartCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartCommonModule, imports: [[CommonModule, AxesModule, TooltipModule], CommonModule, AxesModule, TooltipModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartCommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AxesModule, TooltipModule],\n declarations: [...COMPONENTS, VisibilityObserver],\n exports: [CommonModule, AxesModule, TooltipModule, ...COMPONENTS, VisibilityObserver]\n }]\n }] });\n\nfunction calculateViewDimensions({ width, height, margins, showXAxis = false, showYAxis = false, xAxisHeight = 0, yAxisWidth = 0, showXLabel = false, showYLabel = false, showLegend = false, legendType = ScaleType.Ordinal, legendPosition = LegendPosition.Right, columns = 12 }) {\n let xOffset = margins[3];\n let chartWidth = width;\n let chartHeight = height - margins[0] - margins[2];\n if (showLegend && legendPosition === LegendPosition.Right) {\n if (legendType === ScaleType.Ordinal) {\n columns -= 2;\n }\n else {\n columns -= 1;\n }\n }\n chartWidth = (chartWidth * columns) / 12;\n chartWidth = chartWidth - margins[1] - margins[3];\n if (showXAxis) {\n chartHeight -= 5;\n chartHeight -= xAxisHeight;\n if (showXLabel) {\n // text height + spacing between axis label and tick labels\n const offset = 25 + 5;\n chartHeight -= offset;\n }\n }\n if (showYAxis) {\n chartWidth -= 5;\n chartWidth -= yAxisWidth;\n xOffset += yAxisWidth;\n xOffset += 10;\n if (showYLabel) {\n // text height + spacing between axis label and tick labels\n const offset = 25 + 5;\n chartWidth -= offset;\n xOffset += offset;\n }\n }\n chartWidth = Math.max(0, chartWidth);\n chartHeight = Math.max(0, chartHeight);\n return {\n width: Math.floor(chartWidth),\n height: Math.floor(chartHeight),\n xOffset: Math.floor(xOffset)\n };\n}\n\nconst colorSets = [\n {\n name: 'vivid',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: [\n '#647c8a',\n '#3f51b5',\n '#2196f3',\n '#00b862',\n '#afdf0a',\n '#a7b61a',\n '#f3e562',\n '#ff9800',\n '#ff5722',\n '#ff4514'\n ]\n },\n {\n name: 'natural',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: [\n '#bf9d76',\n '#e99450',\n '#d89f59',\n '#f2dfa7',\n '#a5d7c6',\n '#7794b1',\n '#afafaf',\n '#707160',\n '#ba9383',\n '#d9d5c3'\n ]\n },\n {\n name: 'cool',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: [\n '#a8385d',\n '#7aa3e5',\n '#a27ea8',\n '#aae3f5',\n '#adcded',\n '#a95963',\n '#8796c0',\n '#7ed3ed',\n '#50abcc',\n '#ad6886'\n ]\n },\n {\n name: 'fire',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: ['#ff3d00', '#bf360c', '#ff8f00', '#ff6f00', '#ff5722', '#e65100', '#ffca28', '#ffab00']\n },\n {\n name: 'solar',\n selectable: true,\n group: ScaleType.Linear,\n domain: [\n '#fff8e1',\n '#ffecb3',\n '#ffe082',\n '#ffd54f',\n '#ffca28',\n '#ffc107',\n '#ffb300',\n '#ffa000',\n '#ff8f00',\n '#ff6f00'\n ]\n },\n {\n name: 'air',\n selectable: true,\n group: ScaleType.Linear,\n domain: [\n '#e1f5fe',\n '#b3e5fc',\n '#81d4fa',\n '#4fc3f7',\n '#29b6f6',\n '#03a9f4',\n '#039be5',\n '#0288d1',\n '#0277bd',\n '#01579b'\n ]\n },\n {\n name: 'aqua',\n selectable: true,\n group: ScaleType.Linear,\n domain: [\n '#e0f7fa',\n '#b2ebf2',\n '#80deea',\n '#4dd0e1',\n '#26c6da',\n '#00bcd4',\n '#00acc1',\n '#0097a7',\n '#00838f',\n '#006064'\n ]\n },\n {\n name: 'flame',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#A10A28',\n '#D3342D',\n '#EF6D49',\n '#FAAD67',\n '#FDDE90',\n '#DBED91',\n '#A9D770',\n '#6CBA67',\n '#2C9653',\n '#146738'\n ]\n },\n {\n name: 'ocean',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#1D68FB',\n '#33C0FC',\n '#4AFFFE',\n '#AFFFFF',\n '#FFFC63',\n '#FDBD2D',\n '#FC8A25',\n '#FA4F1E',\n '#FA141B',\n '#BA38D1'\n ]\n },\n {\n name: 'forest',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#55C22D',\n '#C1F33D',\n '#3CC099',\n '#AFFFFF',\n '#8CFC9D',\n '#76CFFA',\n '#BA60FB',\n '#EE6490',\n '#C42A1C',\n '#FC9F32'\n ]\n },\n {\n name: 'horizon',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#2597FB',\n '#65EBFD',\n '#99FDD0',\n '#FCEE4B',\n '#FEFCFA',\n '#FDD6E3',\n '#FCB1A8',\n '#EF6F7B',\n '#CB96E8',\n '#EFDEE0'\n ]\n },\n {\n name: 'neons',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#FF3333',\n '#FF33FF',\n '#CC33FF',\n '#0000FF',\n '#33CCFF',\n '#33FFFF',\n '#33FF66',\n '#CCFF33',\n '#FFCC00',\n '#FF6600'\n ]\n },\n {\n name: 'picnic',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#FAC51D',\n '#66BD6D',\n '#FAA026',\n '#29BB9C',\n '#E96B56',\n '#55ACD2',\n '#B7332F',\n '#2C83C9',\n '#9166B8',\n '#92E7E8'\n ]\n },\n {\n name: 'night',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#2B1B5A',\n '#501356',\n '#183356',\n '#28203F',\n '#391B3C',\n '#1E2B3C',\n '#120634',\n '#2D0432',\n '#051932',\n '#453080',\n '#75267D',\n '#2C507D',\n '#4B3880',\n '#752F7D',\n '#35547D'\n ]\n },\n {\n name: 'nightLights',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#4e31a5',\n '#9c25a7',\n '#3065ab',\n '#57468b',\n '#904497',\n '#46648b',\n '#32118d',\n '#a00fb3',\n '#1052a2',\n '#6e51bd',\n '#b63cc3',\n '#6c97cb',\n '#8671c1',\n '#b455be',\n '#7496c3'\n ]\n }\n];\n\nclass ColorHelper {\n constructor(scheme, type, domain, customColors) {\n if (typeof scheme === 'string') {\n scheme = colorSets.find(cs => {\n return cs.name === scheme;\n });\n }\n this.colorDomain = scheme.domain;\n this.scaleType = type;\n this.domain = domain;\n this.customColors = customColors;\n this.scale = this.generateColorScheme(scheme, type, this.domain);\n }\n generateColorScheme(scheme, type, domain) {\n if (typeof scheme === 'string') {\n scheme = colorSets.find(cs => {\n return cs.name === scheme;\n });\n }\n let colorScale;\n switch (type) {\n case ScaleType.Quantile:\n colorScale = scaleQuantile()\n .range(scheme.domain)\n .domain(domain);\n break;\n case ScaleType.Ordinal:\n colorScale = scaleOrdinal()\n .range(scheme.domain)\n .domain(domain);\n break;\n case ScaleType.Linear:\n {\n const colorDomain = [...scheme.domain];\n if (colorDomain.length === 1) {\n colorDomain.push(colorDomain[0]);\n this.colorDomain = colorDomain;\n }\n const points = range(0, 1, 1.0 / colorDomain.length);\n colorScale = scaleLinear()\n .range(colorDomain)\n .domain(points);\n }\n break;\n default:\n break;\n }\n return colorScale;\n }\n getColor(value) {\n if (value === undefined || value === null) {\n throw new Error('Value can not be null');\n }\n if (this.scaleType === ScaleType.Linear) {\n const valueScale = scaleLinear()\n .domain(this.domain)\n .range([0, 1]);\n return this.scale(valueScale(value));\n }\n else {\n if (typeof this.customColors === 'function') {\n return this.customColors(value);\n }\n const formattedValue = value.toString();\n let found; // todo type customColors\n if (this.customColors && this.customColors.length > 0) {\n found = this.customColors.find(mapping => {\n return mapping.name.toLowerCase() === formattedValue.toLowerCase();\n });\n }\n if (found) {\n return found.value;\n }\n else {\n return this.scale(value);\n }\n }\n }\n getLinearGradientStops(value, start) {\n if (start === undefined) {\n start = this.domain[0];\n }\n const valueScale = scaleLinear()\n .domain(this.domain)\n .range([0, 1]);\n const colorValueScale = scaleBand().domain(this.colorDomain).range([0, 1]);\n const endColor = this.getColor(value);\n // generate the stops\n const startVal = valueScale(start);\n const startColor = this.getColor(start);\n const endVal = valueScale(value);\n let i = 1;\n let currentVal = startVal;\n const stops = [];\n stops.push({\n color: startColor,\n offset: startVal,\n originalOffset: startVal,\n opacity: 1\n });\n while (currentVal < endVal && i < this.colorDomain.length) {\n const color = this.colorDomain[i];\n const offset = colorValueScale(color);\n if (offset <= startVal) {\n i++;\n continue;\n }\n if (offset.toFixed(4) >= (endVal - colorValueScale.bandwidth()).toFixed(4)) {\n break;\n }\n stops.push({\n color,\n offset,\n opacity: 1\n });\n currentVal = offset;\n i++;\n }\n if (stops[stops.length - 1].offset < 100) {\n stops.push({\n color: endColor,\n offset: endVal,\n opacity: 1\n });\n }\n if (endVal === startVal) {\n stops[0].offset = 0;\n stops[1].offset = 100;\n }\n else {\n // normalize the offsets into percentages\n if (stops[stops.length - 1].offset !== 100) {\n for (const s of stops) {\n s.offset = ((s.offset - startVal) / (endVal - startVal)) * 100;\n }\n }\n }\n return stops;\n }\n}\n\n/**\n * Based on the data, return an array with unique values.\n *\n * @export\n * @returns array\n */\nfunction getUniqueXDomainValues(results) {\n const valueSet = new Set();\n for (const result of results) {\n for (const d of result.series) {\n valueSet.add(d.name);\n }\n }\n return Array.from(valueSet);\n}\n/**\n * Get the scaleType of enumerable of values.\n * @returns 'time', 'linear' or 'ordinal'\n */\nfunction getScaleType(values, checkDateType = true) {\n if (checkDateType) {\n const allDates = values.every(value => value instanceof Date);\n if (allDates) {\n return ScaleType.Time;\n }\n }\n const allNumbers = values.every(value => typeof value === 'number');\n if (allNumbers) {\n return ScaleType.Linear;\n }\n return ScaleType.Ordinal;\n}\nfunction getXDomainArray(values, xScaleMin, xScaleMax) {\n const scaleType = getScaleType(values);\n let xSet = [];\n let domain = [];\n if (scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (scaleType === ScaleType.Time || scaleType === ScaleType.Linear) {\n const mappedValues = values.map(v => Number(v));\n min = xScaleMin ? xScaleMin : Math.min(...mappedValues);\n max = xScaleMax ? xScaleMax : Math.max(...mappedValues);\n }\n if (scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n xSet = values;\n }\n return { domain, xSet, scaleType };\n}\n\nfunction sortLinear(data, property, direction = 'asc') {\n return data.sort((a, b) => {\n if (direction === 'asc') {\n return a[property] - b[property];\n }\n else {\n return b[property] - a[property];\n }\n });\n}\nfunction sortByDomain(data, property, direction = 'asc', domain) {\n return data.sort((a, b) => {\n const aVal = a[property];\n const bVal = b[property];\n const aIdx = domain.indexOf(aVal);\n const bIdx = domain.indexOf(bVal);\n if (direction === 'asc') {\n return aIdx - bIdx;\n }\n else {\n return bIdx - aIdx;\n }\n });\n}\nfunction sortByTime(data, property, direction = 'asc') {\n return data.sort((a, b) => {\n const aDate = a[property].getTime();\n const bDate = b[property].getTime();\n if (direction === 'asc') {\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n }\n else {\n if (aDate > bDate)\n return -1;\n if (bDate > aDate)\n return 1;\n return 0;\n }\n });\n}\n\nclass AreaSeriesComponent {\n constructor() {\n this.baseValue = 'auto';\n this.stacked = false;\n this.normalized = false;\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradient();\n let currentArea;\n let startingArea;\n const xProperty = d => {\n const label = d.name;\n return this.xScale(label);\n };\n if (this.stacked || this.normalized) {\n currentArea = area()\n .x(xProperty)\n .y0((d, i) => this.yScale(d.d0))\n .y1((d, i) => this.yScale(d.d1));\n startingArea = area()\n .x(xProperty)\n .y0(d => this.yScale.range()[0])\n .y1(d => this.yScale.range()[0]);\n }\n else {\n currentArea = area()\n .x(xProperty)\n .y0(() => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n .y1(d => this.yScale(d.value));\n startingArea = area()\n .x(xProperty)\n .y0(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n .y1(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)));\n }\n currentArea.curve(this.curve);\n startingArea.curve(this.curve);\n this.opacity = 0.8;\n let data = this.data.series;\n if (this.scaleType === ScaleType.Linear) {\n data = sortLinear(data, 'name');\n }\n else if (this.scaleType === ScaleType.Time) {\n data = sortByTime(data, 'name');\n }\n else {\n data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n this.path = currentArea(data);\n this.startingPath = startingArea(data);\n }\n updateGradient() {\n if (this.colors.scaleType === ScaleType.Linear) {\n this.hasGradient = true;\n if (this.stacked || this.normalized) {\n const d0values = this.data.series.map(d => d.d0);\n const d1values = this.data.series.map(d => d.d1);\n const max = Math.max(...d1values);\n const min = Math.min(...d0values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n }\n else {\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max);\n }\n }\n else {\n this.hasGradient = false;\n this.gradientStops = undefined;\n }\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n}\nAreaSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nAreaSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AreaSeriesComponent, selector: \"g[ngx-charts-area-series]\", inputs: { data: \"data\", xScale: \"xScale\", yScale: \"yScale\", baseValue: \"baseValue\", colors: \"colors\", scaleType: \"scaleType\", stacked: \"stacked\", normalized: \"normalized\", gradient: \"gradient\", curve: \"curve\", activeEntries: \"activeEntries\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, components: [{ type: AreaComponent, selector: \"g[ngx-charts-area]\", inputs: [\"data\", \"path\", \"startingPath\", \"fill\", \"opacity\", \"startOpacity\", \"endOpacity\", \"gradient\", \"stops\", \"animations\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-area-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], baseValue: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], stacked: [{\n type: Input\n }], normalized: [{\n type: Input\n }], gradient: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nclass AreaChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.xAxis = false;\n this.yAxis = false;\n this.baseValue = 'auto';\n this.autoScale = false;\n this.timeline = false;\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const values = [...domain];\n if (!this.autoScale) {\n values.push(0);\n }\n if (this.baseValue !== 'auto') {\n values.push(this.baseValue);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime();\n }\n else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear();\n }\n else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getScaleType(values) {\n let date = true;\n let num = true;\n for (const value of values) {\n if (isDate(value)) {\n date = false;\n }\n if (isNumber(value)) {\n num = false;\n }\n }\n if (date) {\n return ScaleType.Time;\n }\n if (num) {\n return ScaleType.Linear;\n }\n return ScaleType.Ordinal;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nAreaChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nAreaChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AreaChartComponent, selector: \"ngx-charts-area-chart\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", baseValue: \"baseValue\", autoScale: \"autoScale\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseleave\": \"hideCircles()\" } }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }, { propertyName: \"seriesTooltipTemplate\", first: true, predicate: [\"seriesTooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\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 `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AreaSeriesComponent, selector: \"g[ngx-charts-area-series]\", inputs: [\"data\", \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"scaleType\", \"stacked\", \"normalized\", \"gradient\", \"curve\", \"activeEntries\", \"animations\"], outputs: [\"select\"] }, { type: TooltipArea, selector: \"g[ngx-charts-tooltip-area]\", inputs: [\"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"hover\"] }, { type: CircleSeriesComponent, selector: \"g[ngx-charts-circle-series]\", inputs: [\"data\", \"type\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: Timeline, selector: \"g[ngx-charts-timeline]\", inputs: [\"view\", \"results\", \"scheme\", \"customColors\", \"legend\", \"autoScale\", \"scaleType\", \"height\"], outputs: [\"select\", \"onDomainChange\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-area-chart', template: `\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 `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], baseValue: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass AreaChartNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.showXAxisLabel = false;\n this.showYAxisLabel = false;\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.yDomain = [0, 100];\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.seriesType = SeriesType;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let d0 = 0;\n let total = 0;\n for (const group of this.results) {\n const d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n total += d.value;\n }\n }\n for (const group of this.results) {\n let d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n d.d0 = d0;\n d.d1 = d0 + d.value;\n d0 += d.value;\n }\n else {\n d = {\n name: val,\n value: 0,\n d0,\n d1: d0\n };\n group.series.push(d);\n }\n if (total > 0) {\n d.d0 = (d.d0 * 100) / total;\n d.d1 = (d.d1 * 100) / total;\n }\n else {\n d.d0 = 0;\n d.d1 = 0;\n }\n }\n }\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === ScaleType.Time) {\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime();\n }\n else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear();\n }\n else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nAreaChartNormalizedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartNormalizedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nAreaChartNormalizedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AreaChartNormalizedComponent, selector: \"ngx-charts-area-chart-normalized\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseleave\": \"hideCircles()\" } }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }, { propertyName: \"seriesTooltipTemplate\", first: true, predicate: [\"seriesTooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\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 `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AreaSeriesComponent, selector: \"g[ngx-charts-area-series]\", inputs: [\"data\", \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"scaleType\", \"stacked\", \"normalized\", \"gradient\", \"curve\", \"activeEntries\", \"animations\"], outputs: [\"select\"] }, { type: TooltipArea, selector: \"g[ngx-charts-tooltip-area]\", inputs: [\"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"hover\"] }, { type: CircleSeriesComponent, selector: \"g[ngx-charts-circle-series]\", inputs: [\"data\", \"type\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: Timeline, selector: \"g[ngx-charts-timeline]\", inputs: [\"view\", \"results\", \"scheme\", \"customColors\", \"legend\", \"autoScale\", \"scaleType\", \"height\"], outputs: [\"select\", \"onDomainChange\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartNormalizedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-area-chart-normalized', template: `\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 `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass AreaChartStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.xAxis = false;\n this.yAxis = false;\n this.timeline = false;\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n this.seriesType = SeriesType;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let d0 = 0;\n for (const group of this.results) {\n let d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n d.d0 = d0;\n d.d1 = d0 + d.value;\n d0 += d.value;\n }\n else {\n d = {\n name: val,\n value: 0,\n d0,\n d1: d0\n };\n group.series.push(d);\n }\n }\n }\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let sum = 0;\n for (const group of this.results) {\n const d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n sum += d.value;\n }\n }\n domain.push(sum);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(0, ...domain);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...domain);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime();\n }\n else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear();\n }\n else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return `${item.name}`;\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nAreaChartStackedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nAreaChartStackedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AreaChartStackedComponent, selector: \"ngx-charts-area-chart-stacked\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseleave\": \"hideCircles()\" } }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }, { propertyName: \"seriesTooltipTemplate\", first: true, predicate: [\"seriesTooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\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 `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AreaSeriesComponent, selector: \"g[ngx-charts-area-series]\", inputs: [\"data\", \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"scaleType\", \"stacked\", \"normalized\", \"gradient\", \"curve\", \"activeEntries\", \"animations\"], outputs: [\"select\"] }, { type: TooltipArea, selector: \"g[ngx-charts-tooltip-area]\", inputs: [\"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"hover\"] }, { type: CircleSeriesComponent, selector: \"g[ngx-charts-circle-series]\", inputs: [\"data\", \"type\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: Timeline, selector: \"g[ngx-charts-timeline]\", inputs: [\"view\", \"results\", \"scheme\", \"customColors\", \"legend\", \"autoScale\", \"scaleType\", \"height\"], outputs: [\"select\", \"onDomainChange\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartStackedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-area-chart-stacked', template: `\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 `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass AreaChartModule {\n}\nAreaChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAreaChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartModule, declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent], imports: [ChartCommonModule], exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent] });\nAreaChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent],\n exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent]\n }]\n }] });\n\nclass BarComponent {\n constructor(element) {\n this.roundEdges = true;\n this.gradient = false;\n this.offset = 0;\n this.isActive = false;\n this.animations = true;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.hasGradient = false;\n this.hideBar = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n if (changes.roundEdges) {\n this.loadAnimation();\n }\n this.update();\n }\n update() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (this.gradient || this.stops) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n }\n else {\n this.hasGradient = false;\n }\n this.updatePathEl();\n this.checkToHideBar();\n }\n loadAnimation() {\n this.path = this.getStartingPath();\n setTimeout(this.update.bind(this), 100);\n }\n updatePathEl() {\n const node = select(this.element).select('.bar');\n const path = this.getPath();\n if (this.animations) {\n node.transition().duration(500).attr('d', path);\n }\n else {\n node.attr('d', path);\n }\n }\n getGradient() {\n if (this.stops) {\n return this.stops;\n }\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.getStartOpacity()\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n getStartingPath() {\n if (!this.animations) {\n return this.getPath();\n }\n let radius = this.getRadius();\n let path;\n if (this.roundEdges) {\n if (this.orientation === BarOrientation.Vertical) {\n radius = Math.min(this.height, radius);\n path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n }\n else if (this.orientation === BarOrientation.Horizontal) {\n radius = Math.min(this.width, radius);\n path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n }\n }\n else {\n if (this.orientation === BarOrientation.Vertical) {\n path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n }\n else if (this.orientation === BarOrientation.Horizontal) {\n path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n }\n }\n return path;\n }\n getPath() {\n let radius = this.getRadius();\n let path;\n if (this.roundEdges) {\n if (this.orientation === BarOrientation.Vertical) {\n radius = Math.min(this.height, radius);\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n else if (this.orientation === BarOrientation.Horizontal) {\n radius = Math.min(this.width, radius);\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n }\n else {\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n return path;\n }\n getRadius() {\n let radius = 0;\n if (this.roundEdges && this.height > 5 && this.width > 5) {\n radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n }\n return radius;\n }\n getStartOpacity() {\n if (this.roundEdges) {\n return 0.2;\n }\n else {\n return 0.5;\n }\n }\n get edges() {\n let edges = [false, false, false, false];\n if (this.roundEdges) {\n if (this.orientation === BarOrientation.Vertical) {\n if (this.data.value > 0) {\n edges = [true, true, false, false];\n }\n else {\n edges = [false, false, true, true];\n }\n }\n else if (this.orientation === BarOrientation.Horizontal) {\n if (this.data.value > 0) {\n edges = [false, true, false, true];\n }\n else {\n edges = [true, false, true, false];\n }\n }\n }\n return edges;\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n checkToHideBar() {\n this.hideBar =\n this.noBarWhenZero &&\n ((this.orientation === BarOrientation.Vertical && this.height === 0) ||\n (this.orientation === BarOrientation.Horizontal && this.width === 0));\n }\n}\nBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarComponent, selector: \"g[ngx-charts-bar]\", inputs: { fill: \"fill\", data: \"data\", width: \"width\", height: \"height\", x: \"x\", y: \"y\", orientation: \"orientation\", roundEdges: \"roundEdges\", gradient: \"gradient\", offset: \"offset\", isActive: \"isActive\", stops: \"stops\", animations: \"animations\", ariaLabel: \"ariaLabel\", noBarWhenZero: \"noBarWhenZero\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave()\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-bar]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fill: [{\n type: Input\n }], data: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], orientation: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], gradient: [{\n type: Input\n }], offset: [{\n type: Input\n }], isActive: [{\n type: Input\n }], stops: [{\n type: Input\n }], animations: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nvar BarChartType;\n(function (BarChartType) {\n BarChartType[\"Standard\"] = \"standard\";\n BarChartType[\"Normalized\"] = \"normalized\";\n BarChartType[\"Stacked\"] = \"stacked\";\n})(BarChartType || (BarChartType = {}));\n\nvar D0Types;\n(function (D0Types) {\n D0Types[\"positive\"] = \"positive\";\n D0Types[\"negative\"] = \"negative\";\n})(D0Types || (D0Types = {}));\n\nclass BarLabelComponent {\n constructor(element) {\n this.dimensionsChanged = new EventEmitter();\n this.horizontalPadding = 2;\n this.verticalPadding = 5;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n getSize() {\n const h = this.element.getBoundingClientRect().height;\n const w = this.element.getBoundingClientRect().width;\n return { height: h, width: w, negative: this.value < 0 };\n }\n ngAfterViewInit() {\n this.dimensionsChanged.emit(this.getSize());\n }\n update() {\n if (this.valueFormatting) {\n this.formatedValue = this.valueFormatting(this.value);\n }\n else {\n this.formatedValue = formatLabel(this.value);\n }\n if (this.orientation === 'horizontal') {\n this.x = this.barX + this.barWidth;\n // if the value is negative then it's on the left of the x0.\n // we need to put the data label in front of the bar\n if (this.value < 0) {\n this.x = this.x - this.horizontalPadding;\n this.textAnchor = 'end';\n }\n else {\n this.x = this.x + this.horizontalPadding;\n this.textAnchor = 'start';\n }\n this.y = this.barY + this.barHeight / 2;\n }\n else {\n // orientation must be \"vertical\"\n this.x = this.barX + this.barWidth / 2;\n this.y = this.barY + this.barHeight;\n if (this.value < 0) {\n this.y = this.y + this.verticalPadding;\n this.textAnchor = 'end';\n }\n else {\n this.y = this.y - this.verticalPadding;\n this.textAnchor = 'start';\n }\n this.transform = `rotate(-45, ${this.x} , ${this.y})`;\n }\n }\n}\nBarLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarLabelComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nBarLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarLabelComponent, selector: \"g[ngx-charts-bar-label]\", inputs: { value: \"value\", valueFormatting: \"valueFormatting\", barX: \"barX\", barY: \"barY\", barWidth: \"barWidth\", barHeight: \"barHeight\", orientation: \"orientation\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, usesOnChanges: true, ngImport: i0, template: `\n \n {{ formatedValue }}\n \n `, isInline: true, styles: [\".textDataLabel{font-size:11px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarLabelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'g[ngx-charts-bar-label]', template: `\n \n {{ formatedValue }}\n \n `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".textDataLabel{font-size:11px}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], barX: [{\n type: Input\n }], barY: [{\n type: Input\n }], barWidth: [{\n type: Input\n }], barHeight: [{\n type: Input\n }], orientation: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }] } });\n\nclass SeriesHorizontal {\n constructor() {\n this.type = BarChartType.Standard;\n this.tooltipDisabled = false;\n this.animations = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dataLabelWidthChanged = new EventEmitter();\n this.barsForDataLabels = [];\n this.barOrientation = BarOrientation;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateTooltipSettings();\n const d0 = {\n [D0Types.positive]: 0,\n [D0Types.negative]: 0\n };\n let d0Type;\n d0Type = D0Types.positive;\n let total;\n if (this.type === BarChartType.Normalized) {\n total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n const xScaleMin = Math.max(this.xScale.domain()[0], 0);\n this.bars = this.series.map(d => {\n let value = d.value;\n const label = this.getLabel(d);\n const formattedLabel = formatLabel(label);\n const roundEdges = this.roundEdges;\n d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n const bar = {\n value,\n label,\n roundEdges,\n data: d,\n formattedLabel\n };\n bar.height = this.yScale.bandwidth();\n if (this.type === BarChartType.Standard) {\n bar.width = Math.abs(this.xScale(value) - this.xScale(xScaleMin));\n if (value < 0) {\n bar.x = this.xScale(value);\n }\n else {\n bar.x = this.xScale(xScaleMin);\n }\n bar.y = this.yScale(label);\n }\n else if (this.type === BarChartType.Stacked) {\n const offset0 = d0[d0Type];\n const offset1 = offset0 + value;\n d0[d0Type] += value;\n bar.width = this.xScale(offset1) - this.xScale(offset0);\n bar.x = this.xScale(offset0);\n bar.y = 0;\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n }\n else if (this.type === BarChartType.Normalized) {\n let offset0 = d0[d0Type];\n let offset1 = offset0 + value;\n d0[d0Type] += value;\n if (total > 0) {\n offset0 = (offset0 * 100) / total;\n offset1 = (offset1 * 100) / total;\n }\n else {\n offset0 = 0;\n offset1 = 0;\n }\n bar.width = this.xScale(offset1) - this.xScale(offset0);\n bar.x = this.xScale(offset0);\n bar.y = 0;\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n value = (offset1 - offset0).toFixed(2) + '%';\n }\n if (this.colors.scaleType === ScaleType.Ordinal) {\n bar.color = this.colors.getColor(label);\n }\n else {\n if (this.type === BarChartType.Standard) {\n bar.color = this.colors.getColor(value);\n bar.gradientStops = this.colors.getLinearGradientStops(value);\n }\n else {\n bar.color = this.colors.getColor(bar.offset1);\n bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n }\n }\n let tooltipLabel = formattedLabel;\n bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n if (this.seriesName !== null && this.seriesName !== undefined) {\n tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n bar.data.series = this.seriesName;\n bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n }\n bar.tooltipText = this.tooltipDisabled\n ? undefined\n : `\n ${escapeLabel(tooltipLabel)}\n ${this.dataLabelFormatting ? this.dataLabelFormatting(value) : value.toLocaleString()}\n `;\n return bar;\n });\n this.updateDataLabels();\n }\n updateDataLabels() {\n if (this.type === BarChartType.Stacked) {\n this.barsForDataLabels = [];\n const section = {};\n section.series = this.seriesName;\n const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n section.total = totalPositive + totalNegative;\n section.x = 0;\n section.y = 0;\n // if total is positive then we show it on the right, otherwise on the left\n if (section.total > 0) {\n section.width = this.xScale(totalPositive);\n }\n else {\n section.width = this.xScale(totalNegative);\n }\n section.height = this.yScale.bandwidth();\n this.barsForDataLabels.push(section);\n }\n else {\n this.barsForDataLabels = this.series.map(d => {\n const section = {};\n section.series = this.seriesName ?? d.label;\n section.total = d.value;\n section.x = this.xScale(0);\n section.y = this.yScale(d.label);\n section.width = this.xScale(section.total) - this.xScale(0);\n section.height = this.yScale.bandwidth();\n return section;\n });\n }\n }\n updateTooltipSettings() {\n this.tooltipPlacement = this.tooltipDisabled ? undefined : PlacementTypes.Top;\n this.tooltipType = this.tooltipDisabled ? undefined : StyleTypes.tooltip;\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(active => {\n return entry.name === active.name && entry.value === active.value;\n });\n return item !== undefined;\n }\n getLabel(dataItem) {\n if (dataItem.label) {\n return dataItem.label;\n }\n return dataItem.name;\n }\n trackBy(index, bar) {\n return bar.label;\n }\n trackDataLabelBy(index, barLabel) {\n return index + '#' + barLabel.series + '#' + barLabel.total;\n }\n click(data) {\n this.select.emit(data);\n }\n}\nSeriesHorizontal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SeriesHorizontal, deps: [], target: i0.ɵɵFactoryTarget.Component });\nSeriesHorizontal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: SeriesHorizontal, selector: \"g[ngx-charts-series-horizontal]\", inputs: { dims: \"dims\", type: \"type\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", activeEntries: \"activeEntries\", seriesName: \"seriesName\", tooltipTemplate: \"tooltipTemplate\", roundEdges: \"roundEdges\", animations: \"animations\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dataLabelWidthChanged: \"dataLabelWidthChanged\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: BarComponent, selector: \"g[ngx-charts-bar]\", inputs: [\"fill\", \"data\", \"width\", \"height\", \"x\", \"y\", \"orientation\", \"roundEdges\", \"gradient\", \"offset\", \"isActive\", \"stops\", \"animations\", \"ariaLabel\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: BarLabelComponent, selector: \"g[ngx-charts-bar-label]\", inputs: [\"value\", \"valueFormatting\", \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"orientation\"], outputs: [\"dimensionsChanged\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SeriesHorizontal, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-series-horizontal]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], propDecorators: { dims: [{\n type: Input\n }], type: [{\n type: Input\n }], series: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], seriesName: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], animations: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dataLabelWidthChanged: [{\n type: Output\n }] } });\n\nclass BarHorizontalComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getXScale() {\n this.xDomain = this.getXDomain();\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.xDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale() {\n this.yDomain = this.getYDomain();\n const spacing = this.yDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.yDomain);\n }\n getXDomain() {\n const values = this.results.map(d => d.value);\n const min = this.xScaleMin ? Math.min(this.xScaleMin, ...values) : Math.min(0, ...values);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...values) : Math.max(0, ...values);\n return [min, max];\n }\n getYDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.yDomain;\n }\n else {\n domain = this.xDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.yDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.xDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (event.index === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarHorizontalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarHorizontalComponent, selector: \"ngx-charts-bar-horizontal\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", xScaleMax: \"xScaleMax\", xScaleMin: \"xScaleMin\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesHorizontal, selector: \"g[ngx-charts-series-horizontal]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"tooltipDisabled\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-horizontal', template: `\n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarHorizontal2DComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.groupPadding = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n this.isSSR = false;\n this.barOrientation = BarOrientation;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.groupScale = this.getGroupScale();\n this.innerScale = this.getInnerScale();\n this.valueScale = this.getValueScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.height])\n .paddingInner(spacing)\n .paddingOuter(spacing / 2)\n .domain(this.groupDomain);\n }\n getInnerScale() {\n const height = this.groupScale.bandwidth();\n const spacing = this.innerDomain.length / (height / this.barPadding + 1);\n return scaleBand().rangeRound([0, height]).paddingInner(spacing).domain(this.innerDomain);\n }\n getValueScale() {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const min = Math.min(0, ...domain);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(0, ...domain);\n return [min, max];\n }\n groupTransform(group) {\n return `translate(0, ${this.groupScale(group.label)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontal2DComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontal2DComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarHorizontal2DComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarHorizontal2DComponent, selector: \"ngx-charts-bar-horizontal-2d\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", groupPadding: \"groupPadding\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", xScaleMax: \"xScaleMax\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: GridPanelSeriesComponent, selector: \"g[ngx-charts-grid-panel-series]\", inputs: [\"data\", \"dims\", \"xScale\", \"yScale\", \"orient\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesHorizontal, selector: \"g[ngx-charts-series-horizontal]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"tooltipDisabled\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontal2DComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-horizontal-2d', template: `\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], groupPadding: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarHorizontalNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.valueDomain = [0, 100];\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.barChartType = BarChartType;\n this.isSSR = false;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getYScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.groupDomain);\n }\n getXScale() {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(0, ${this.yScale(group.name)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontalNormalizedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalNormalizedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarHorizontalNormalizedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarHorizontalNormalizedComponent, selector: \"ngx-charts-bar-horizontal-normalized\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesHorizontal, selector: \"g[ngx-charts-series-horizontal]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"tooltipDisabled\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalNormalizedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-horizontal-normalized', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarHorizontalStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n this.barChartType = BarChartType;\n this.isSSR = false;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n let smallest = 0;\n let biggest = 0;\n for (const group of this.results) {\n let smallestSum = 0;\n let biggestSum = 0;\n for (const d of group.series) {\n if (d.value < 0) {\n smallestSum += d.value;\n }\n else {\n biggestSum += d.value;\n }\n smallest = d.value < smallest ? d.value : smallest;\n biggest = d.value > biggest ? d.value : biggest;\n }\n domain.push(smallestSum);\n domain.push(biggestSum);\n }\n domain.push(smallest);\n domain.push(biggest);\n const min = Math.min(0, ...domain);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(...domain);\n return [min, max];\n }\n getYScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.groupDomain);\n }\n getXScale() {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(0, ${this.yScale(group.name)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontalStackedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarHorizontalStackedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarHorizontalStackedComponent, selector: \"ngx-charts-bar-horizontal-stacked\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", xScaleMax: \"xScaleMax\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesHorizontal, selector: \"g[ngx-charts-series-horizontal]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"tooltipDisabled\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalStackedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-horizontal-stacked', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass SeriesVerticalComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.type = BarChartType.Standard;\n this.tooltipDisabled = false;\n this.animations = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dataLabelHeightChanged = new EventEmitter();\n this.barsForDataLabels = [];\n this.barOrientation = BarOrientation;\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateTooltipSettings();\n let width;\n if (this.series.length) {\n width = this.xScale.bandwidth();\n }\n width = Math.round(width);\n const yScaleMin = Math.max(this.yScale.domain()[0], 0);\n const d0 = {\n [D0Types.positive]: 0,\n [D0Types.negative]: 0\n };\n let d0Type = D0Types.positive;\n let total;\n if (this.type === BarChartType.Normalized) {\n total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n this.bars = this.series.map((d, index) => {\n let value = d.value;\n const label = this.getLabel(d);\n const formattedLabel = formatLabel(label);\n const roundEdges = this.roundEdges;\n d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n const bar = {\n value,\n label,\n roundEdges,\n data: d,\n width,\n formattedLabel,\n height: 0,\n x: 0,\n y: 0\n };\n if (this.type === BarChartType.Standard) {\n bar.height = Math.abs(this.yScale(value) - this.yScale(yScaleMin));\n bar.x = this.xScale(label);\n if (value < 0) {\n bar.y = this.yScale(0);\n }\n else {\n bar.y = this.yScale(value);\n }\n }\n else if (this.type === BarChartType.Stacked) {\n const offset0 = d0[d0Type];\n const offset1 = offset0 + value;\n d0[d0Type] += value;\n bar.height = this.yScale(offset0) - this.yScale(offset1);\n bar.x = 0;\n bar.y = this.yScale(offset1);\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n }\n else if (this.type === BarChartType.Normalized) {\n let offset0 = d0[d0Type];\n let offset1 = offset0 + value;\n d0[d0Type] += value;\n if (total > 0) {\n offset0 = (offset0 * 100) / total;\n offset1 = (offset1 * 100) / total;\n }\n else {\n offset0 = 0;\n offset1 = 0;\n }\n bar.height = this.yScale(offset0) - this.yScale(offset1);\n bar.x = 0;\n bar.y = this.yScale(offset1);\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n value = (offset1 - offset0).toFixed(2) + '%';\n }\n if (this.colors.scaleType === ScaleType.Ordinal) {\n bar.color = this.colors.getColor(label);\n }\n else {\n if (this.type === BarChartType.Standard) {\n bar.color = this.colors.getColor(value);\n bar.gradientStops = this.colors.getLinearGradientStops(value);\n }\n else {\n bar.color = this.colors.getColor(bar.offset1);\n bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n }\n }\n let tooltipLabel = formattedLabel;\n bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n if (this.seriesName !== null && this.seriesName !== undefined) {\n tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n bar.data.series = this.seriesName;\n bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n }\n bar.tooltipText = this.tooltipDisabled\n ? undefined\n : `\n ${escapeLabel(tooltipLabel)}\n ${this.dataLabelFormatting ? this.dataLabelFormatting(value) : value.toLocaleString()}\n `;\n return bar;\n });\n this.updateDataLabels();\n }\n updateDataLabels() {\n if (this.type === BarChartType.Stacked) {\n this.barsForDataLabels = [];\n const section = {};\n section.series = this.seriesName;\n const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n section.total = totalPositive + totalNegative;\n section.x = 0;\n section.y = 0;\n if (section.total > 0) {\n section.height = this.yScale(totalPositive);\n }\n else {\n section.height = this.yScale(totalNegative);\n }\n section.width = this.xScale.bandwidth();\n this.barsForDataLabels.push(section);\n }\n else {\n this.barsForDataLabels = this.series.map(d => {\n const section = {};\n section.series = this.seriesName ?? d.label;\n section.total = d.value;\n section.x = this.xScale(d.label);\n section.y = this.yScale(0);\n section.height = this.yScale(section.total) - this.yScale(0);\n section.width = this.xScale.bandwidth();\n return section;\n });\n }\n }\n updateTooltipSettings() {\n this.tooltipPlacement = this.tooltipDisabled ? undefined : PlacementTypes.Top;\n this.tooltipType = this.tooltipDisabled ? undefined : StyleTypes.tooltip;\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(active => {\n return entry.name === active.name && entry.value === active.value;\n });\n return item !== undefined;\n }\n onClick(data) {\n this.select.emit(data);\n }\n getLabel(dataItem) {\n if (dataItem.label) {\n return dataItem.label;\n }\n return dataItem.name;\n }\n trackBy(index, bar) {\n return bar.label;\n }\n trackDataLabelBy(index, barLabel) {\n return index + '#' + barLabel.series + '#' + barLabel.total;\n }\n}\nSeriesVerticalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SeriesVerticalComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nSeriesVerticalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: SeriesVerticalComponent, selector: \"g[ngx-charts-series-vertical]\", inputs: { dims: \"dims\", type: \"type\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", gradient: \"gradient\", activeEntries: \"activeEntries\", seriesName: \"seriesName\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\", roundEdges: \"roundEdges\", animations: \"animations\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dataLabelHeightChanged: \"dataLabelHeightChanged\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: BarComponent, selector: \"g[ngx-charts-bar]\", inputs: [\"fill\", \"data\", \"width\", \"height\", \"x\", \"y\", \"orientation\", \"roundEdges\", \"gradient\", \"offset\", \"isActive\", \"stops\", \"animations\", \"ariaLabel\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: BarLabelComponent, selector: \"g[ngx-charts-bar-label]\", inputs: [\"value\", \"valueFormatting\", \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"orientation\"], outputs: [\"dimensionsChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SeriesVerticalComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-series-vertical]',\n template: `\n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { dims: [{\n type: Input\n }], type: [{\n type: Input\n }], series: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], seriesName: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], animations: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dataLabelHeightChanged: [{\n type: Output\n }] } });\n\nclass BarVerticalComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n getXScale() {\n this.xDomain = this.getXDomain();\n const spacing = this.xDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().range([0, this.dims.width]).paddingInner(spacing).domain(this.xDomain);\n }\n getYScale() {\n this.yDomain = this.getYDomain();\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.yDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getXDomain() {\n return this.results.map(d => d.label);\n }\n getYDomain() {\n const values = this.results.map(d => d.value);\n let min = this.yScaleMin ? Math.min(this.yScaleMin, ...values) : Math.min(0, ...values);\n if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n min = Math.min(min, ...this.yAxisTicks);\n }\n let max = this.yScaleMax ? Math.max(this.yScaleMax, ...values) : Math.max(0, ...values);\n if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n max = Math.max(max, ...this.yAxisTicks);\n }\n return [min, max];\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.xDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.xDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxHeightChanged(event) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (event.index === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVerticalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarVerticalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarVerticalComponent, selector: \"ngx-charts-bar-vertical\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", yScaleMax: \"yScaleMax\", yScaleMin: \"yScaleMin\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesVerticalComponent, selector: \"g[ngx-charts-series-vertical]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipDisabled\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-vertical', template: `\n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarVertical2DComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.scaleType = ScaleType.Ordinal;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.groupPadding = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n this.isSSR = false;\n this.barOrientation = BarOrientation;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.groupScale = this.getGroupScale();\n this.innerScale = this.getInnerScale();\n this.valueScale = this.getValueScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n onDataLabelMaxHeightChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n getGroupScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.width])\n .paddingInner(spacing)\n .paddingOuter(spacing / 2)\n .domain(this.groupDomain);\n }\n getInnerScale() {\n const width = this.groupScale.bandwidth();\n const spacing = this.innerDomain.length / (width / this.barPadding + 1);\n return scaleBand().rangeRound([0, width]).paddingInner(spacing).domain(this.innerDomain);\n }\n getValueScale() {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const min = Math.min(0, ...domain);\n const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(0, ...domain);\n return [min, max];\n }\n groupTransform(group) {\n return `translate(${this.groupScale(group.label)}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVertical2DComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVertical2DComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarVertical2DComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarVertical2DComponent, selector: \"ngx-charts-bar-vertical-2d\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", scaleType: \"scaleType\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", groupPadding: \"groupPadding\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", yScaleMax: \"yScaleMax\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: GridPanelSeriesComponent, selector: \"g[ngx-charts-grid-panel-series]\", inputs: [\"data\", \"dims\", \"xScale\", \"yScale\", \"orient\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesVerticalComponent, selector: \"g[ngx-charts-series-vertical]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipDisabled\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVertical2DComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-vertical-2d', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], groupPadding: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarVerticalNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.valueDomain = [0, 100];\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.isSSR = false;\n this.barChartType = BarChartType;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getXScale() {\n const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.width]).paddingInner(spacing).domain(this.groupDomain);\n }\n getYScale() {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(${this.xScale(group.name)}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVerticalNormalizedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalNormalizedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarVerticalNormalizedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarVerticalNormalizedComponent, selector: \"ngx-charts-bar-vertical-normalized\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesVerticalComponent, selector: \"g[ngx-charts-series-vertical]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipDisabled\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalNormalizedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-vertical-normalized', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarVerticalStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n this.isSSR = false;\n this.barChartType = BarChartType;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n let smallest = 0;\n let biggest = 0;\n for (const group of this.results) {\n let smallestSum = 0;\n let biggestSum = 0;\n for (const d of group.series) {\n if (d.value < 0) {\n smallestSum += d.value;\n }\n else {\n biggestSum += d.value;\n }\n smallest = d.value < smallest ? d.value : smallest;\n biggest = d.value > biggest ? d.value : biggest;\n }\n domain.push(smallestSum);\n domain.push(biggestSum);\n }\n domain.push(smallest);\n domain.push(biggest);\n const min = Math.min(0, ...domain);\n const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(...domain);\n return [min, max];\n }\n getXScale() {\n const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.width]).paddingInner(spacing).domain(this.groupDomain);\n }\n getYScale() {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n onDataLabelMaxHeightChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n groupTransform(group) {\n return `translate(${this.xScale(group.name) || 0}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVerticalStackedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarVerticalStackedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarVerticalStackedComponent, selector: \"ngx-charts-bar-vertical-stacked\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", yScaleMax: \"yScaleMax\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesVerticalComponent, selector: \"g[ngx-charts-series-vertical]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipDisabled\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalStackedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-vertical-stacked', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarChartModule {\n}\nBarChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBarChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarChartModule, declarations: [BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent], imports: [ChartCommonModule], exports: [BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent] });\nBarChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [\n BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent\n ],\n exports: [\n BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent\n ]\n }]\n }] });\n\nconst cloneDeep = rfdc();\nclass BoxComponent {\n constructor(element, cd) {\n this.cd = cd;\n this.roundEdges = true;\n this.gradient = false;\n this.offset = 0;\n this.isActive = false;\n this.animations = true;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.BarOrientation = BarOrientation;\n this.initialized = false;\n this.hasGradient = false;\n this.hideBar = false;\n this.nativeElm = element.nativeElement;\n }\n ngOnChanges(changes) {\n if (!this.initialized) {\n this.loadAnimation();\n this.initialized = true;\n }\n else {\n this.update();\n }\n }\n update() {\n this.boxStrokeWidth = Math.max(this.strokeWidth, 1);\n this.whiskerStrokeWidth = Math.max(this.strokeWidth / 2, 1);\n this.medianLineWidth = 1.5 * this.strokeWidth;\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (this.gradient) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n }\n else {\n this.hasGradient = false;\n }\n this.updateLineEl();\n this.updatePathEl();\n this.checkToHideBar();\n this.maskLineId = 'mask' + id().toString();\n this.maskLine = `url(#${this.maskLineId})`;\n if (this.cd) {\n this.cd.markForCheck();\n }\n }\n loadAnimation() {\n this.boxPath = this.oldPath = this.getStartingPath();\n this.oldLineCoordinates = this.getStartingLineCoordinates();\n setTimeout(this.update.bind(this), 100);\n }\n updatePathEl() {\n const nodeBar = select(this.nativeElm).selectAll('.bar');\n const path = this.getPath();\n if (this.animations) {\n nodeBar\n .attr('d', this.oldPath)\n .transition()\n .ease(easeSinInOut)\n .duration(500)\n .attrTween('d', this.pathTween(path, 4));\n }\n else {\n nodeBar.attr('d', path);\n }\n this.oldPath = path;\n }\n updateLineEl() {\n const lineEl = select(this.nativeElm).selectAll('.bar-line');\n const lineCoordinates = this.lineCoordinates;\n const oldLineCoordinates = this.oldLineCoordinates;\n if (this.animations) {\n lineEl\n .attr('x1', (_, index) => oldLineCoordinates[index].v1.x)\n .attr('y1', (_, index) => oldLineCoordinates[index].v1.y)\n .attr('x2', (_, index) => oldLineCoordinates[index].v2.x)\n .attr('y2', (_, index) => oldLineCoordinates[index].v2.y)\n .transition()\n .ease(easeSinInOut)\n .duration(500)\n .attr('x1', (_, index) => lineCoordinates[index].v1.x)\n .attr('y1', (_, index) => lineCoordinates[index].v1.y)\n .attr('x2', (_, index) => lineCoordinates[index].v2.x)\n .attr('y2', (_, index) => lineCoordinates[index].v2.y);\n }\n else {\n lineEl\n .attr('x1', (_, index) => lineCoordinates[index].v1.x)\n .attr('y1', (_, index) => lineCoordinates[index].v1.y)\n .attr('x2', (_, index) => lineCoordinates[index].v2.x)\n .attr('y2', (_, index) => lineCoordinates[index].v2.y);\n }\n this.oldLineCoordinates = [...lineCoordinates];\n }\n /**\n * See [D3 Selections](https://www.d3indepth.com/selections/)\n * @param d The joined data.\n * @param index The index of the element within the selection\n * @param node The node element (Line).\n */\n lineTween(attr, d, index, node) {\n const nodeLineEl = node[index];\n return nodeLineEl[attr].baseVal.value;\n }\n // TODO: Refactor into another .ts file if https://github.com/swimlane/ngx-charts/pull/1179 gets merged.\n pathTween(d1, precision) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const path0 = this;\n const path1 = this.cloneNode();\n path1.setAttribute('d', d1);\n const n0 = path0?.getTotalLength();\n const n1 = path1?.getTotalLength();\n // Uniform sampling of distance based on specified precision.\n const distances = [0];\n let i = 0;\n const dt = precision / Math.max(n0, n1);\n while (i < 1) {\n distances.push(i);\n i += dt;\n }\n distances.push(1);\n // Compute point-interpolators at each distance.\n const points = distances.map((t) => {\n const p0 = path0.getPointAtLength(t * n0);\n const p1 = path1.getPointAtLength(t * n1);\n return interpolate([p0.x, p0.y], [p1.x, p1.y]);\n });\n // 't': T is the fraction of time (between 0 and 1) since the transition began.\n return (t) => {\n return t < 1 ? 'M' + points.map((p) => p(t)).join('L') : d1;\n };\n };\n }\n getStartingPath() {\n if (!this.animations) {\n return this.getPath();\n }\n const radius = this.roundEdges ? 1 : 0;\n const { x, y } = this.lineCoordinates[2].v1;\n return roundedRect(x - this.width, y - 1, this.width, 2, radius, this.edges);\n }\n getPath() {\n const radius = this.getRadius();\n let path = '';\n path = roundedRect(this.x, this.y, this.width, this.height, Math.min(this.height, radius), this.edges);\n return path;\n }\n getStartingLineCoordinates() {\n if (!this.animations) {\n return [...this.lineCoordinates];\n }\n const lineCoordinates = cloneDeep(this.lineCoordinates);\n lineCoordinates[1].v1.y = lineCoordinates[1].v2.y = lineCoordinates[3].v1.y = lineCoordinates[3].v2.y = lineCoordinates[0].v1.y = lineCoordinates[0].v2.y =\n lineCoordinates[2].v1.y;\n return lineCoordinates;\n }\n getRadius() {\n let radius = 0;\n if (this.roundEdges && this.height > 5 && this.width > 5) {\n radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n }\n return radius;\n }\n getGradient() {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.getStartOpacity()\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n getStartOpacity() {\n if (this.roundEdges) {\n return 0.2;\n }\n else {\n return 0.5;\n }\n }\n get edges() {\n let edges = [false, false, false, false];\n if (this.roundEdges) {\n edges = [true, true, true, true];\n }\n return edges;\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n checkToHideBar() {\n this.hideBar = this.noBarWhenZero && this.height === 0;\n }\n}\nBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BoxComponent, selector: \"g[ngx-charts-box]\", inputs: { strokeColor: \"strokeColor\", strokeWidth: \"strokeWidth\", fill: \"fill\", data: \"data\", width: \"width\", height: \"height\", x: \"x\", y: \"y\", lineCoordinates: \"lineCoordinates\", roundEdges: \"roundEdges\", gradient: \"gradient\", gradientStops: \"gradientStops\", offset: \"offset\", isActive: \"isActive\", animations: \"animations\", ariaLabel: \"ariaLabel\", noBarWhenZero: \"noBarWhenZero\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave()\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-box]',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { strokeColor: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], fill: [{\n type: Input\n }], data: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], lineCoordinates: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], gradient: [{\n type: Input\n }], gradientStops: [{\n type: Input\n }], offset: [{\n type: Input\n }], isActive: [{\n type: Input\n }], animations: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass BoxSeriesComponent {\n constructor() {\n this.animations = true;\n this.tooltipDisabled = false;\n this.gradient = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n onClick(data) {\n this.select.emit(data);\n }\n update() {\n this.updateTooltipSettings();\n const width = this.series && this.series.series.length ? Math.round(this.xScale.bandwidth()) : null;\n const seriesName = this.series.name;\n // Calculate Quantile and Whiskers for each box serie.\n this.counts = this.series.series;\n const mappedCounts = this.counts.map(serie => Number(serie.value));\n this.whiskers = [min(mappedCounts), max(mappedCounts)];\n // We get the group count and must sort it in order to retrieve quantiles.\n const groupCounts = this.counts.map(item => item.value).sort((a, b) => Number(a) - Number(b));\n this.quartiles = this.getBoxQuantiles(groupCounts);\n this.lineCoordinates = this.getLinesCoordinates(seriesName.toString(), this.whiskers, this.quartiles, width);\n const value = this.quartiles[1];\n const formattedLabel = formatLabel(seriesName);\n const box = {\n value,\n data: this.counts,\n label: seriesName,\n formattedLabel,\n width,\n height: 0,\n x: 0,\n y: 0,\n roundEdges: this.roundEdges,\n quartiles: this.quartiles,\n lineCoordinates: this.lineCoordinates\n };\n box.height = Math.abs(this.yScale(this.quartiles[0]) - this.yScale(this.quartiles[2]));\n box.x = this.xScale(seriesName.toString());\n box.y = this.yScale(this.quartiles[2]);\n box.ariaLabel = formattedLabel + ' - Median: ' + value.toLocaleString();\n if (this.colors.scaleType === ScaleType.Ordinal) {\n box.color = this.colors.getColor(seriesName);\n }\n else {\n box.color = this.colors.getColor(this.quartiles[1]);\n box.gradientStops = this.colors.getLinearGradientStops(this.quartiles[0], this.quartiles[2]);\n }\n const tooltipLabel = formattedLabel;\n const formattedTooltipLabel = `\n ${escapeLabel(tooltipLabel)}\n \n • Q1: ${this.quartiles[0]} • Q2: ${this.quartiles[1]} • Q3: ${this.quartiles[2]}
    \n • Min: ${this.whiskers[0]} • Max: ${this.whiskers[1]}\n
    `;\n box.tooltipText = this.tooltipDisabled ? undefined : formattedTooltipLabel;\n this.tooltipTitle = this.tooltipDisabled ? undefined : box.tooltipText;\n this.box = box;\n }\n getBoxQuantiles(inputData) {\n return [quantile(inputData, 0.25), quantile(inputData, 0.5), quantile(inputData, 0.75)];\n }\n getLinesCoordinates(seriesName, whiskers, quartiles, barWidth) {\n // The X value is not being centered, so had to sum half the width to align it.\n const commonX = this.xScale(seriesName);\n const offsetX = commonX + barWidth / 2;\n const medianLineWidth = Math.max(barWidth + 4 * this.strokeWidth, 1);\n const whiskerLineWidth = Math.max(barWidth / 3, 1);\n const whiskerZero = this.yScale(whiskers[0]);\n const whiskerOne = this.yScale(whiskers[1]);\n const median = this.yScale(quartiles[1]);\n const topLine = {\n v1: { x: offsetX + whiskerLineWidth / 2, y: whiskerZero },\n v2: { x: offsetX - whiskerLineWidth / 2, y: whiskerZero }\n };\n const medianLine = {\n v1: { x: offsetX + medianLineWidth / 2, y: median },\n v2: { x: offsetX - medianLineWidth / 2, y: median }\n };\n const bottomLine = {\n v1: { x: offsetX + whiskerLineWidth / 2, y: whiskerOne },\n v2: { x: offsetX - whiskerLineWidth / 2, y: whiskerOne }\n };\n const verticalLine = {\n v1: { x: offsetX, y: whiskerZero },\n v2: { x: offsetX, y: whiskerOne }\n };\n return [verticalLine, topLine, medianLine, bottomLine];\n }\n updateTooltipSettings() {\n if (this.tooltipDisabled) {\n this.tooltipPlacement = undefined;\n this.tooltipType = undefined;\n }\n else {\n if (!this.tooltipPlacement) {\n this.tooltipPlacement = PlacementTypes.Top;\n }\n if (!this.tooltipType) {\n this.tooltipType = StyleTypes.tooltip;\n }\n }\n }\n}\nBoxSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nBoxSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BoxSeriesComponent, selector: \"g[ngx-charts-box-series]\", inputs: { dims: \"dims\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", animations: \"animations\", strokeColor: \"strokeColor\", strokeWidth: \"strokeWidth\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\", tooltipPlacement: \"tooltipPlacement\", tooltipType: \"tooltipType\", roundEdges: \"roundEdges\", gradient: \"gradient\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, components: [{ type: BoxComponent, selector: \"g[ngx-charts-box]\", inputs: [\"strokeColor\", \"strokeWidth\", \"fill\", \"data\", \"width\", \"height\", \"x\", \"y\", \"lineCoordinates\", \"roundEdges\", \"gradient\", \"gradientStops\", \"offset\", \"isActive\", \"animations\", \"ariaLabel\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-box-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], propDecorators: { dims: [{\n type: Input\n }], series: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], animations: [{\n type: Input\n }], strokeColor: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipType: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], gradient: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass BoxChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n /** Show or hide the legend. */\n this.legend = false;\n this.legendPosition = LegendPosition.Right;\n this.legendTitle = 'Legend';\n this.showGridLines = true;\n this.xAxis = true;\n this.yAxis = true;\n this.showXAxisLabel = true;\n this.showYAxisLabel = true;\n this.roundDomains = false;\n this.roundEdges = true;\n this.strokeColor = '#FFFFFF';\n this.strokeWidth = 2;\n this.tooltipDisabled = false;\n this.wrapTicks = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n /** Chart Margins (For each side, counterclock wise). */\n this.margin = [10, 20, 10, 20];\n /** Chart X axis dimension. */\n this.xAxisHeight = 0;\n /** Chart Y axis dimension. */\n this.yAxisWidth = 0;\n }\n trackBy(index, item) {\n return item.name;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.setScales();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n setColors() {\n let domain = [];\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n setScales() {\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n }\n getXScale(domain, width) {\n const scale = scaleBand()\n .domain(domain.map(d => d.toString()))\n .rangeRound([0, width])\n .padding(0.5);\n return scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().domain(domain).range([height, 0]);\n return this.roundDomains ? scale.nice() : scale;\n }\n getUniqueBoxChartXDomainValues(results) {\n const valueSet = new Set();\n for (const result of results) {\n valueSet.add(result.name);\n }\n return Array.from(valueSet);\n }\n getXDomain() {\n let domain = [];\n const values = this.getUniqueBoxChartXDomainValues(this.results);\n let min;\n let max;\n if (typeof values[0] === 'string') {\n domain = values.map(val => val.toString());\n }\n else if (typeof values[0] === 'number') {\n const mappedValues = values.map(v => Number(v));\n min = Math.min(...mappedValues);\n max = Math.max(...mappedValues);\n domain = [min, max];\n }\n else {\n const mappedValues = values.map(v => Number(new Date(v)));\n min = Math.min(...mappedValues);\n max = Math.max(...mappedValues);\n domain = [new Date(min), new Date(max)];\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n }\n }\n const values = [...domain];\n const mappedValues = values.map(v => Number(v));\n const min = Math.min(...mappedValues);\n const max = Math.max(...mappedValues);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => `${d.name}`);\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onClick(data) {\n this.select.emit(data);\n }\n onActivate(data) {\n this.activate.emit(data);\n }\n onDeactivate(data) {\n this.deactivate.emit(data);\n }\n getLegendOptions() {\n const legendOpts = {\n scaleType: this.schemeType,\n colors: this.colors,\n domain: [],\n position: this.legendPosition,\n title: this.legendTitle\n };\n if (this.schemeType === ScaleType.Ordinal) {\n legendOpts.domain = this.xDomain;\n legendOpts.colors = this.colors;\n }\n else {\n legendOpts.domain = this.yDomain;\n legendOpts.colors = this.colors.scale;\n }\n return legendOpts;\n }\n}\nBoxChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBoxChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BoxChartComponent, selector: \"ngx-charts-box-chart\", inputs: { legend: \"legend\", legendPosition: \"legendPosition\", legendTitle: \"legendTitle\", legendOptionsConfig: \"legendOptionsConfig\", showGridLines: \"showGridLines\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", roundDomains: \"roundDomains\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", roundEdges: \"roundEdges\", strokeColor: \"strokeColor\", strokeWidth: \"strokeWidth\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", wrapTicks: \"wrapTicks\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: BoxSeriesComponent, selector: \"g[ngx-charts-box-series]\", inputs: [\"dims\", \"series\", \"xScale\", \"yScale\", \"colors\", \"animations\", \"strokeColor\", \"strokeWidth\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipPlacement\", \"tooltipType\", \"roundEdges\", \"gradient\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-box-chart', template: `\n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendOptionsConfig: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], strokeColor: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate', { static: false }]\n }] } });\n\nclass BoxChartModule {\n}\nBoxChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBoxChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartModule, declarations: [BoxChartComponent, BoxSeriesComponent, BoxComponent], imports: [ChartCommonModule], exports: [BoxChartComponent, BoxSeriesComponent, BoxComponent] });\nBoxChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [BoxChartComponent, BoxSeriesComponent, BoxComponent],\n exports: [BoxChartComponent, BoxSeriesComponent, BoxComponent]\n }]\n }] });\n\nfunction getDomain(values, scaleType, autoScale, minVal, maxVal) {\n let domain = [];\n if (scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n if (!autoScale) {\n values.push(0);\n }\n }\n if (scaleType === ScaleType.Time || scaleType === ScaleType.Linear) {\n const min = minVal || minVal === 0 ? minVal : Math.min(...values);\n const max = maxVal ? maxVal : Math.max(...values);\n domain = [min, max];\n }\n else {\n domain = values;\n }\n return domain;\n}\nfunction getScale(domain, range, scaleType, roundDomains) {\n switch (scaleType) {\n case ScaleType.Time:\n return scaleTime().range(range).domain(domain);\n case ScaleType.Linear: {\n const scale = scaleLinear().range(range).domain(domain);\n if (roundDomains) {\n return scale.nice();\n }\n return scale;\n }\n case ScaleType.Ordinal:\n return scalePoint()\n .range([range[0], range[1]])\n .domain(domain.map(r => r.toString()));\n default:\n return undefined;\n }\n}\n\nclass BubbleSeriesComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.tooltipDisabled = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.circles = this.getCircles();\n }\n getCircles() {\n const seriesName = this.data.name;\n return this.data.series\n .map((d, i) => {\n if (typeof d.y !== 'undefined' && typeof d.x !== 'undefined') {\n const y = d.y;\n const x = d.x;\n const r = d.r;\n const radius = this.rScale(r || 1);\n const tooltipLabel = formatLabel(d.name);\n const cx = this.xScaleType === ScaleType.Linear ? this.xScale(Number(x)) : this.xScale(x);\n const cy = this.yScaleType === ScaleType.Linear ? this.yScale(Number(y)) : this.yScale(y);\n const color = this.colors.scaleType === ScaleType.Linear ? this.colors.getColor(r) : this.colors.getColor(seriesName);\n const isActive = !this.activeEntries.length ? true : this.isActive({ name: seriesName });\n const opacity = isActive ? 1 : 0.3;\n const data = Object.assign({}, d, {\n series: seriesName,\n name: d.name,\n value: d.y,\n x: d.x,\n radius: d.r\n });\n return {\n data,\n x,\n y,\n r,\n classNames: [`circle-data-${i}`],\n value: y,\n label: x,\n cx,\n cy,\n radius,\n tooltipLabel,\n color,\n opacity,\n seriesName,\n isActive,\n transform: `translate(${cx},${cy})`\n };\n }\n })\n .filter(circle => circle !== undefined);\n }\n getTooltipText(circle) {\n const hasRadius = typeof circle.r !== 'undefined';\n const hasTooltipLabel = circle.tooltipLabel && circle.tooltipLabel.length;\n const hasSeriesName = circle.seriesName && circle.seriesName.length;\n const radiusValue = hasRadius ? formatLabel(circle.r) : '';\n const xAxisLabel = this.xAxisLabel && this.xAxisLabel !== '' ? `${this.xAxisLabel}:` : '';\n const yAxisLabel = this.yAxisLabel && this.yAxisLabel !== '' ? `${this.yAxisLabel}:` : '';\n const x = formatLabel(circle.x);\n const y = formatLabel(circle.y);\n const name = hasSeriesName && hasTooltipLabel\n ? `${circle.seriesName} • ${circle.tooltipLabel}`\n : circle.seriesName + circle.tooltipLabel;\n const tooltipTitle = hasSeriesName || hasTooltipLabel ? `${escapeLabel(name)}` : '';\n return `\n ${tooltipTitle}\n \n ${escapeLabel(x)}
    \n ${escapeLabel(y)}\n
    \n \n ${escapeLabel(radiusValue)}\n \n `;\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isVisible(circle) {\n if (this.activeEntries.length > 0) {\n return this.isActive({ name: circle.seriesName });\n }\n return circle.opacity !== 0;\n }\n activateCircle(circle) {\n circle.barVisible = true;\n this.activate.emit({ name: this.data.name });\n }\n deactivateCircle(circle) {\n circle.barVisible = false;\n this.deactivate.emit({ name: this.data.name });\n }\n trackBy(index, circle) {\n return `${circle.data.series} ${circle.data.name}`;\n }\n}\nBubbleSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleSeriesComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nBubbleSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BubbleSeriesComponent, selector: \"g[ngx-charts-bubble-series]\", inputs: { data: \"data\", xScale: \"xScale\", yScale: \"yScale\", rScale: \"rScale\", xScaleType: \"xScaleType\", yScaleType: \"yScaleType\", colors: \"colors\", visibleValue: \"visibleValue\", activeEntries: \"activeEntries\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: CircleComponent, selector: \"g[ngx-charts-circle]\", inputs: [\"cx\", \"cy\", \"r\", \"fill\", \"stroke\", \"data\", \"classNames\", \"circleOpacity\", \"pointerEvents\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'scale(0)'\n }),\n animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-bubble-series]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'scale(0)'\n }),\n animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n ])\n ])\n ]\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], rScale: [{\n type: Input\n }], xScaleType: [{\n type: Input\n }], yScaleType: [{\n type: Input\n }], colors: [{\n type: Input\n }], visibleValue: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass BubbleChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.showGridLines = true;\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.xAxis = true;\n this.yAxis = true;\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.maxRadius = 10;\n this.minRadius = 3;\n this.schemeType = ScaleType.Ordinal;\n this.tooltipDisabled = false;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.scaleType = ScaleType.Linear;\n this.margin = [10, 20, 10, 20];\n this.bubblePadding = [0, 0, 0, 0];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.activeEntries = [];\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.seriesDomain = this.results.map(d => d.name);\n this.rDomain = this.getRDomain();\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.transform = `translate(${this.dims.xOffset},${this.margin[0]})`;\n const colorDomain = this.schemeType === ScaleType.Ordinal ? this.seriesDomain : this.rDomain;\n this.colors = new ColorHelper(this.scheme, this.schemeType, colorDomain, this.customColors);\n this.data = this.results;\n this.minRadius = Math.max(this.minRadius, 1);\n this.maxRadius = Math.max(this.maxRadius, 1);\n this.rScale = this.getRScale(this.rDomain, [this.minRadius, this.maxRadius]);\n this.bubblePadding = [0, 0, 0, 0];\n this.setScales();\n this.bubblePadding = this.getBubblePadding();\n this.setScales();\n this.legendOptions = this.getLegendOptions();\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n hideCircles() {\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n getBubblePadding() {\n let yMin = 0;\n let xMin = 0;\n let yMax = this.dims.height;\n let xMax = this.dims.width;\n for (const s of this.data) {\n for (const d of s.series) {\n const r = this.rScale(d.r);\n const cx = this.xScaleType === ScaleType.Linear ? this.xScale(Number(d.x)) : this.xScale(d.x);\n const cy = this.yScaleType === ScaleType.Linear ? this.yScale(Number(d.y)) : this.yScale(d.y);\n xMin = Math.max(r - cx, xMin);\n yMin = Math.max(r - cy, yMin);\n yMax = Math.max(cy + r, yMax);\n xMax = Math.max(cx + r, xMax);\n }\n }\n xMax = Math.max(xMax - this.dims.width, 0);\n yMax = Math.max(yMax - this.dims.height, 0);\n return [yMin, xMax, yMax, xMin];\n }\n setScales() {\n let width = this.dims.width;\n if (this.xScaleMin === undefined && this.xScaleMax === undefined) {\n width = width - this.bubblePadding[1];\n }\n let height = this.dims.height;\n if (this.yScaleMin === undefined && this.yScaleMax === undefined) {\n height = height - this.bubblePadding[2];\n }\n this.xScale = this.getXScale(this.xDomain, width);\n this.yScale = this.getYScale(this.yDomain, height);\n }\n getYScale(domain, height) {\n return getScale(domain, [height, this.bubblePadding[0]], this.yScaleType, this.roundDomains);\n }\n getXScale(domain, width) {\n return getScale(domain, [this.bubblePadding[3], width], this.xScaleType, this.roundDomains);\n }\n getRScale(domain, range) {\n const scale = scaleLinear().range(range).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n position: this.legendPosition,\n title: undefined\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.rDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n getXDomain() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.x)) {\n values.push(d.x);\n }\n }\n }\n this.xScaleType = getScaleType(values);\n return getDomain(values, this.xScaleType, this.autoScale, this.xScaleMin, this.xScaleMax);\n }\n getYDomain() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.y)) {\n values.push(d.y);\n }\n }\n }\n this.yScaleType = getScaleType(values);\n return getDomain(values, this.yScaleType, this.autoScale, this.yScaleMin, this.yScaleMax);\n }\n getRDomain() {\n let min = Infinity;\n let max = -Infinity;\n for (const results of this.results) {\n for (const d of results.series) {\n const value = Number(d.r) || 1;\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n return [min, max];\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n trackBy(index, item) {\n return `${item.name}`;\n }\n}\nBubbleChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBubbleChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BubbleChartComponent, selector: \"ngx-charts-bubble-chart\", inputs: { showGridLines: \"showGridLines\", legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", roundDomains: \"roundDomains\", maxRadius: \"maxRadius\", minRadius: \"minRadius\", autoScale: \"autoScale\", schemeType: \"schemeType\", tooltipDisabled: \"tooltipDisabled\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseleave\": \"hideCircles()\" } }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: BubbleSeriesComponent, selector: \"g[ngx-charts-bubble-series]\", inputs: [\"data\", \"xScale\", \"yScale\", \"rScale\", \"xScaleType\", \"yScaleType\", \"colors\", \"visibleValue\", \"activeEntries\", \"xAxisLabel\", \"yAxisLabel\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bubble-chart', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { showGridLines: [{\n type: Input\n }], legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], maxRadius: [{\n type: Input\n }], minRadius: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass BubbleChartModule {\n}\nBubbleChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBubbleChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartModule, declarations: [BubbleChartComponent, BubbleSeriesComponent], imports: [ChartCommonModule], exports: [BubbleChartComponent, BubbleSeriesComponent] });\nBubbleChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [BubbleChartComponent, BubbleSeriesComponent],\n exports: [BubbleChartComponent, BubbleSeriesComponent]\n }]\n }] });\n\nclass HeatMapCellComponent {\n constructor(element) {\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.barOrientation = BarOrientation;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.transform = `translate(${this.x} , ${this.y})`;\n this.startOpacity = 0.3;\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n this.gradientStops = this.getGradientStops();\n if (this.animations) {\n this.loadAnimation();\n }\n }\n getGradientStops() {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n loadAnimation() {\n const node = select(this.element).select('.cell');\n node.attr('opacity', 0);\n this.animateToCurrentForm();\n }\n animateToCurrentForm() {\n const node = select(this.element).select('.cell');\n node.transition().duration(750).attr('opacity', 1);\n }\n onClick() {\n this.select.emit(this.data);\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n}\nHeatMapCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapCellComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nHeatMapCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: HeatMapCellComponent, selector: \"g[ngx-charts-heat-map-cell]\", inputs: { fill: \"fill\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", data: \"data\", gradient: \"gradient\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave()\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-heat-map-cell]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fill: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], data: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass HeatCellSeriesComponent {\n constructor() {\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n }\n ngOnInit() {\n if (!this.tooltipText) {\n this.tooltipText = this.getTooltipText;\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.cells = this.getCells();\n }\n getCells() {\n const cells = [];\n this.data.map(row => {\n row.series.map(cell => {\n const value = cell.value;\n cell.series = row.name;\n cells.push({\n row,\n cell,\n x: this.xScale(row.name),\n y: this.yScale(cell.name),\n width: this.xScale.bandwidth(),\n height: this.yScale.bandwidth(),\n fill: this.colors.getColor(value),\n data: value,\n label: formatLabel(cell.name),\n series: row.name\n });\n });\n });\n return cells;\n }\n getTooltipText({ label, data, series }) {\n return `\n ${escapeLabel(series)} • ${escapeLabel(label)}\n ${data.toLocaleString()}\n `;\n }\n trackBy(index, item) {\n return item.label;\n }\n onClick(data) {\n this.select.emit(data);\n }\n}\nHeatCellSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatCellSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nHeatCellSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: HeatCellSeriesComponent, selector: \"g[ngx-charts-heat-map-cell-series]\", inputs: { data: \"data\", colors: \"colors\", xScale: \"xScale\", yScale: \"yScale\", gradient: \"gradient\", tooltipDisabled: \"tooltipDisabled\", tooltipText: \"tooltipText\", tooltipTemplate: \"tooltipTemplate\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, components: [{ type: HeatMapCellComponent, selector: \"g[ngx-charts-heat-map-cell]\", inputs: [\"fill\", \"x\", \"y\", \"width\", \"height\", \"data\", \"gradient\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatCellSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-heat-map-cell-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], colors: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], gradient: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass HeatMapComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.innerPadding = 8;\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.tooltipDisabled = false;\n this.activeEntries = [];\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.scaleType = ScaleType.Linear;\n }\n update() {\n super.update();\n this.formatDates();\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.valueDomain = this.getValueDomain();\n this.scaleType = getScaleType(this.valueDomain, false);\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.scaleType,\n legendPosition: this.legendPosition\n });\n if (this.scaleType === ScaleType.Linear) {\n let min = this.min;\n let max = this.max;\n if (!this.min) {\n min = Math.min(0, ...this.valueDomain);\n }\n if (!this.max) {\n max = Math.max(...this.valueDomain);\n }\n this.valueDomain = [min, max];\n }\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.rects = this.getRects();\n }\n getXDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.name)) {\n domain.push(group.name);\n }\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.name)) {\n domain.push(d.name);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n return domain;\n }\n /**\n * Converts the input to gap paddingInner in fraction\n * Supports the following inputs:\n * Numbers: 8\n * Strings: \"8\", \"8px\", \"8%\"\n * Arrays: [8,2], \"8,2\", \"[8,2]\"\n * Mixed: [8,\"2%\"], [\"8px\",\"2%\"], \"8,2%\", \"[8,2%]\"\n *\n * @memberOf HeatMapComponent\n */\n getDimension(value, index = 0, N, L) {\n if (typeof value === 'string') {\n value = value\n .replace('[', '')\n .replace(']', '')\n .replace('px', '')\n // tslint:disable-next-line: quotemark\n .replace(\"'\", '');\n if (value.includes(',')) {\n value = value.split(',');\n }\n }\n if (Array.isArray(value) && typeof index === 'number') {\n return this.getDimension(value[index], null, N, L);\n }\n if (typeof value === 'string' && value.includes('%')) {\n return +value.replace('%', '') / 100;\n }\n return N / (L / +value + 1);\n }\n getXScale() {\n const f = this.getDimension(this.innerPadding, 0, this.xDomain.length, this.dims.width);\n return scaleBand().rangeRound([0, this.dims.width]).domain(this.xDomain).paddingInner(f);\n }\n getYScale() {\n const f = this.getDimension(this.innerPadding, 1, this.yDomain.length, this.dims.height);\n return scaleBand().rangeRound([this.dims.height, 0]).domain(this.yDomain).paddingInner(f);\n }\n getRects() {\n const rects = [];\n this.xDomain.map(xVal => {\n this.yDomain.map(yVal => {\n rects.push({\n x: this.xScale(xVal),\n y: this.yScale(yVal),\n rx: 3,\n width: this.xScale.bandwidth(),\n height: this.yScale.bandwidth(),\n fill: 'rgba(200,200,200,0.03)'\n });\n });\n });\n return rects;\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, this.scaleType, this.valueDomain);\n }\n getLegendOptions() {\n return {\n scaleType: this.scaleType,\n domain: this.valueDomain,\n colors: this.scaleType === ScaleType.Ordinal ? this.colors : this.colors.scale,\n title: this.scaleType === ScaleType.Ordinal ? this.legendTitle : undefined,\n position: this.legendPosition\n };\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nHeatMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nHeatMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: HeatMapComponent, selector: \"ngx-charts-heat-map\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", innerPadding: \"innerPadding\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", tooltipDisabled: \"tooltipDisabled\", tooltipText: \"tooltipText\", min: \"min\", max: \"max\", activeEntries: \"activeEntries\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: HeatCellSeriesComponent, selector: \"g[ngx-charts-heat-map-cell-series]\", inputs: [\"data\", \"colors\", \"xScale\", \"yScale\", \"gradient\", \"tooltipDisabled\", \"tooltipText\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-heat-map', template: `\n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], innerPadding: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass HeatMapModule {\n}\nHeatMapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nHeatMapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapModule, declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent], imports: [ChartCommonModule], exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent] });\nHeatMapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent],\n exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent]\n }]\n }] });\n\nclass LineComponent {\n constructor(element, platformId) {\n this.element = element;\n this.platformId = platformId;\n this.fill = 'none';\n this.animations = true;\n // @Output() select = new EventEmitter();\n this.initialized = false;\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n ngOnChanges(changes) {\n if (!this.initialized) {\n this.initialized = true;\n this.initialPath = this.path;\n }\n else {\n this.updatePathEl();\n }\n }\n updatePathEl() {\n const node = select(this.element.nativeElement).select('.line');\n if (this.animations) {\n node.transition().duration(750).attr('d', this.path);\n }\n else {\n node.attr('d', this.path);\n }\n }\n}\nLineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineComponent, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nLineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LineComponent, selector: \"g[ngx-charts-line]\", inputs: { path: \"path\", stroke: \"stroke\", data: \"data\", fill: \"fill\", animations: \"animations\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n strokeDasharray: 2000,\n strokeDashoffset: 2000\n }),\n animate(1000, style({\n strokeDashoffset: 0\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-line]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n strokeDasharray: 2000,\n strokeDashoffset: 2000\n }),\n animate(1000, style({\n strokeDashoffset: 0\n }))\n ])\n ])\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { path: [{\n type: Input\n }], stroke: [{\n type: Input\n }], data: [{\n type: Input\n }], fill: [{\n type: Input\n }], animations: [{\n type: Input\n }] } });\n\nclass LineSeriesComponent {\n constructor() {\n this.animations = true;\n this.barOrientation = BarOrientation;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradients();\n const data = this.sortData(this.data.series);\n const lineGen = this.getLineGenerator();\n this.path = lineGen(data) || '';\n const areaGen = this.getAreaGenerator();\n this.areaPath = areaGen(data) || '';\n if (this.hasRange) {\n const range = this.getRangeGenerator();\n this.outerPath = range(data) || '';\n }\n if (this.hasGradient) {\n this.stroke = this.gradientUrl;\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n if (max === min) {\n this.stroke = this.colors.getColor(max);\n }\n }\n else {\n this.stroke = this.colors.getColor(this.data.name);\n }\n }\n getLineGenerator() {\n return line()\n .x(d => {\n const label = d.name;\n let value;\n if (this.scaleType === ScaleType.Time) {\n value = this.xScale(label);\n }\n else if (this.scaleType === ScaleType.Linear) {\n value = this.xScale(Number(label));\n }\n else {\n value = this.xScale(label);\n }\n return value;\n })\n .y(d => this.yScale(d.value))\n .curve(this.curve);\n }\n getRangeGenerator() {\n return area()\n .x(d => {\n const label = d.name;\n let value;\n if (this.scaleType === ScaleType.Time) {\n value = this.xScale(label);\n }\n else if (this.scaleType === ScaleType.Linear) {\n value = this.xScale(Number(label));\n }\n else {\n value = this.xScale(label);\n }\n return value;\n })\n .y0(d => this.yScale(typeof d.min === 'number' ? d.min : d.value))\n .y1(d => this.yScale(typeof d.max === 'number' ? d.max : d.value))\n .curve(this.curve);\n }\n getAreaGenerator() {\n const xProperty = d => {\n const label = d.name;\n return this.xScale(label);\n };\n return area()\n .x(xProperty)\n .y0(() => this.yScale.range()[0])\n .y1(d => this.yScale(d.value))\n .curve(this.curve);\n }\n sortData(data) {\n if (this.scaleType === ScaleType.Linear) {\n data = sortLinear(data, 'name');\n }\n else if (this.scaleType === ScaleType.Time) {\n data = sortByTime(data, 'name');\n }\n else {\n data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n return data;\n }\n updateGradients() {\n if (this.colors.scaleType === ScaleType.Linear) {\n this.hasGradient = true;\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n this.areaGradientStops = this.colors.getLinearGradientStops(max);\n }\n else {\n this.hasGradient = false;\n this.gradientStops = undefined;\n this.areaGradientStops = undefined;\n }\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n}\nLineSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nLineSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LineSeriesComponent, selector: \"g[ngx-charts-line-series]\", inputs: { data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", hasRange: \"hasRange\", animations: \"animations\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }, { type: AreaComponent, selector: \"g[ngx-charts-area]\", inputs: [\"data\", \"path\", \"startingPath\", \"fill\", \"opacity\", \"startOpacity\", \"endOpacity\", \"gradient\", \"stops\", \"animations\"], outputs: [\"select\"] }, { type: LineComponent, selector: \"g[ngx-charts-line]\", inputs: [\"path\", \"stroke\", \"data\", \"fill\", \"animations\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-line-series]',\n template: `\n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], hasRange: [{\n type: Input\n }], animations: [{\n type: Input\n }] } });\n\nclass LineChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.showRefLines = false;\n this.showRefLabels = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n if (d.min !== undefined) {\n this.hasRange = true;\n if (domain.indexOf(d.min) < 0) {\n domain.push(d.min);\n }\n }\n if (d.max !== undefined) {\n this.hasRange = true;\n if (domain.indexOf(d.max) < 0) {\n domain.push(d.max);\n }\n }\n }\n }\n const values = [...domain];\n if (!this.autoScale) {\n values.push(0);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime().range([0, width]).domain(domain);\n }\n else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear().range([0, width]).domain(domain);\n if (this.roundDomains) {\n scale = scale.nice();\n }\n }\n else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().range([0, width]).padding(0.1).domain(domain);\n }\n return scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data) {\n this.select.emit(data);\n }\n trackBy(index, item) {\n return `${item.name}`;\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n this.deactivateAll();\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LineChartComponent, selector: \"ngx-charts-line-chart\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", autoScale: \"autoScale\", timeline: \"timeline\", gradient: \"gradient\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", rangeFillOpacity: \"rangeFillOpacity\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", showRefLines: \"showRefLines\", referenceLines: \"referenceLines\", showRefLabels: \"showRefLabels\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseleave\": \"hideCircles()\" } }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }, { propertyName: \"seriesTooltipTemplate\", first: true, predicate: [\"seriesTooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\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 \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: LineSeriesComponent, selector: \"g[ngx-charts-line-series]\", inputs: [\"data\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"curve\", \"activeEntries\", \"rangeFillOpacity\", \"hasRange\", \"animations\"] }, { type: TooltipArea, selector: \"g[ngx-charts-tooltip-area]\", inputs: [\"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"hover\"] }, { type: CircleSeriesComponent, selector: \"g[ngx-charts-circle-series]\", inputs: [\"data\", \"type\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: Timeline, selector: \"g[ngx-charts-timeline]\", inputs: [\"view\", \"results\", \"scheme\", \"customColors\", \"legend\", \"autoScale\", \"scaleType\", \"height\"], outputs: [\"select\", \"onDomainChange\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-line-chart', template: `\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 \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass LineChartModule {\n}\nLineChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLineChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartModule, declarations: [LineComponent, LineChartComponent, LineSeriesComponent], imports: [ChartCommonModule], exports: [LineComponent, LineChartComponent, LineSeriesComponent] });\nLineChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [LineComponent, LineChartComponent, LineSeriesComponent],\n exports: [LineComponent, LineChartComponent, LineSeriesComponent]\n }]\n }] });\n\nclass PieLabelComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.animations = true;\n this.labelTrim = true;\n this.labelTrimSize = 10;\n this.trimLabel = trimLabel;\n }\n ngOnChanges(changes) {\n this.setTransforms();\n this.update();\n }\n setTransforms() {\n if (isPlatformServer(this.platformId)) {\n this.styleTransform = `translate3d(${this.textX}px,${this.textY}px, 0)`;\n this.attrTransform = `translate(${this.textX},${this.textY})`;\n this.textTransition = !this.animations ? null : 'transform 0.75s';\n }\n else {\n const isIE = /(edge|msie|trident)/i.test(navigator.userAgent);\n this.styleTransform = isIE ? null : `translate3d(${this.textX}px,${this.textY}px, 0)`;\n this.attrTransform = !isIE ? null : `translate(${this.textX},${this.textY})`;\n this.textTransition = isIE || !this.animations ? null : 'transform 0.75s';\n }\n }\n update() {\n let startRadius = this.radius;\n if (this.explodeSlices) {\n startRadius = (this.radius * this.value) / this.max;\n }\n const innerArc = arc().innerRadius(startRadius).outerRadius(startRadius);\n // Calculate innerPos then scale outer position to match label position\n const innerPos = innerArc.centroid(this.data);\n let scale = this.data.pos[1] / innerPos[1];\n if (this.data.pos[1] === 0 || innerPos[1] === 0) {\n scale = 1;\n }\n const outerPos = [scale * innerPos[0], scale * innerPos[1]];\n this.line = `M${innerPos}L${outerPos}L${this.data.pos}`;\n }\n get textX() {\n return this.data.pos[0];\n }\n get textY() {\n return this.data.pos[1];\n }\n textAnchor() {\n return this.midAngle(this.data) < Math.PI ? TextAnchor.Start : TextAnchor.End;\n }\n midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n}\nPieLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieLabelComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nPieLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieLabelComponent, selector: \"g[ngx-charts-pie-label]\", inputs: { data: \"data\", radius: \"radius\", label: \"label\", color: \"color\", max: \"max\", value: \"value\", explodeSlices: \"explodeSlices\", animations: \"animations\", labelTrim: \"labelTrim\", labelTrimSize: \"labelTrimSize\" }, usesOnChanges: true, ngImport: i0, template: `\n {{ label }}\n \n \n {{ labelTrim ? trimLabel(label, labelTrimSize) : label }}\n \n \n
    \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieLabelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-label]',\n template: `\n {{ label }}\n \n \n {{ labelTrim ? trimLabel(label, labelTrimSize) : label }}\n \n \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { data: [{\n type: Input\n }], radius: [{\n type: Input\n }], label: [{\n type: Input\n }], color: [{\n type: Input\n }], max: [{\n type: Input\n }], value: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], animations: [{\n type: Input\n }], labelTrim: [{\n type: Input\n }], labelTrimSize: [{\n type: Input\n }] } });\n\nclass PolarSeriesComponent {\n constructor() {\n this.tooltipDisabled = false;\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.circleRadius = 3;\n this.barOrientation = BarOrientation;\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradients();\n const line = this.getLineGenerator();\n const data = this.sortData(this.data.series);\n const seriesName = this.data.name;\n const linearScaleType = this.colors.scaleType === ScaleType.Linear;\n const min = this.yScale.domain()[0];\n this.seriesColor = this.colors.getColor(linearScaleType ? min : seriesName);\n this.path = line(data) || '';\n this.circles = data.map(d => {\n const a = this.getAngle(d);\n const r = this.getRadius(d);\n const value = d.value;\n const color = this.colors.getColor(linearScaleType ? Math.abs(value) : seriesName);\n const cData = Object.assign({}, d, {\n series: seriesName,\n value,\n name: d.name\n });\n return {\n data: cData,\n cx: r * Math.sin(a),\n cy: -r * Math.cos(a),\n value,\n color,\n label: d.name\n };\n });\n this.active = this.isActive(this.data);\n this.inactive = this.isInactive(this.data);\n this.tooltipText = this.tooltipText || (c => this.defaultTooltipText(c));\n }\n getAngle(d) {\n const label = d.name;\n if (this.scaleType === ScaleType.Time) {\n return this.xScale(label);\n }\n else if (this.scaleType === ScaleType.Linear) {\n return this.xScale(Number(label));\n }\n return this.xScale(label);\n }\n getRadius(d) {\n return this.yScale(d.value);\n }\n getLineGenerator() {\n return lineRadial()\n .angle(d => this.getAngle(d))\n .radius(d => this.getRadius(d))\n .curve(this.curve);\n }\n sortData(data) {\n if (this.scaleType === ScaleType.Linear) {\n return sortLinear(data, 'name');\n }\n else if (this.scaleType === ScaleType.Time) {\n return sortByTime(data, 'name');\n }\n return sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n defaultTooltipText({ label, value }) {\n return `\n ${escapeLabel(this.data.name)} • ${escapeLabel(label)}\n ${value.toLocaleString()}\n `;\n }\n updateGradients() {\n this.hasGradient = this.gradient || this.colors.scaleType === ScaleType.Linear;\n if (!this.hasGradient) {\n return;\n }\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n if (this.colors.scaleType === ScaleType.Linear) {\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n }\n else {\n this.gradientStops = undefined;\n }\n }\n}\nPolarSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nPolarSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PolarSeriesComponent, selector: \"g[ngx-charts-polar-series]\", inputs: { name: \"name\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", tooltipDisabled: \"tooltipDisabled\", tooltipText: \"tooltipText\", gradient: \"gradient\", tooltipTemplate: \"tooltipTemplate\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgRadialGradientComponent, selector: \"g[ngx-charts-svg-radial-gradient]\", inputs: [\"color\", \"name\", \"startOpacity\", \"endOpacity\", \"cx\", \"cy\", \"stops\"] }, { type: LineComponent, selector: \"g[ngx-charts-line]\", inputs: [\"path\", \"stroke\", \"data\", \"fill\", \"animations\"] }, { type: CircleComponent, selector: \"g[ngx-charts-circle]\", inputs: [\"cx\", \"cy\", \"r\", \"fill\", \"stroke\", \"data\", \"classNames\", \"circleOpacity\", \"pointerEvents\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-polar-series]',\n template: `\n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { name: [{\n type: Input\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], gradient: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nconst twoPI = 2 * Math.PI;\nclass PolarChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.showGridLines = true;\n this.curve = curveCardinalClosed;\n this.activeEntries = [];\n this.rangeFillOpacity = 0.15;\n this.trimYAxisTicks = true;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.showSeriesOnHover = true;\n this.gradient = false;\n this.yAxisMinScale = 0;\n this.labelTrim = true;\n this.labelTrimSize = 10;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n // series: any; // ???\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.orientation = Orientation;\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n this.setDims();\n this.setScales();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.setTicks();\n }\n setDims() {\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n const halfWidth = Math.floor(this.dims.width / 2);\n const halfHeight = Math.floor(this.dims.height / 2);\n const outerRadius = (this.outerRadius = Math.min(halfHeight / 1.5, halfWidth / 1.5));\n const yOffset = Math.max(0, halfHeight - outerRadius);\n this.yAxisDims = {\n ...this.dims,\n width: halfWidth\n };\n this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n this.transformYAxis = `translate(0, ${yOffset})`;\n this.labelOffset = this.dims.height + 40;\n this.transformPlot = `translate(${halfWidth}, ${halfHeight})`;\n }\n setScales() {\n const xValues = this.getXValues();\n this.scaleType = getScaleType(xValues);\n this.xDomain = this.filteredDomain || this.getXDomain(xValues);\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, twoPI);\n this.yScale = this.getYScale(this.yDomain, this.outerRadius);\n this.yAxisScale = this.getYScale(this.yDomain.reverse(), this.outerRadius);\n }\n setTicks() {\n let tickFormat;\n if (this.xAxisTickFormatting) {\n tickFormat = this.xAxisTickFormatting;\n }\n else if (this.xScale.tickFormat) {\n tickFormat = this.xScale.tickFormat.apply(this.xScale, [5]);\n }\n else {\n tickFormat = d => {\n if (isDate(d)) {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n const outerRadius = this.outerRadius;\n const s = 1.1;\n this.thetaTicks = this.xDomain.map(d => {\n const startAngle = this.xScale(d);\n const dd = s * outerRadius * (startAngle > Math.PI ? -1 : 1);\n const label = tickFormat(d);\n const startPos = [outerRadius * Math.sin(startAngle), -outerRadius * Math.cos(startAngle)];\n const pos = [dd, s * startPos[1]];\n return {\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle: startAngle,\n value: outerRadius,\n label,\n startPos,\n pos\n };\n });\n const minDistance = 10;\n /* from pie chart, abstract out -*/\n for (let i = 0; i < this.thetaTicks.length - 1; i++) {\n const a = this.thetaTicks[i];\n for (let j = i + 1; j < this.thetaTicks.length; j++) {\n const b = this.thetaTicks[j];\n // if they're on the same side\n if (b.pos[0] * a.pos[0] > 0) {\n // if they're overlapping\n const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n if (o > 0) {\n // push the second up or down\n b.pos[1] += Math.sign(b.pos[0]) * o;\n }\n }\n }\n }\n this.radiusTicks = this.yAxisScale.ticks(Math.floor(this.dims.height / 50)).map(d => this.yScale(d));\n }\n getXValues() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.name)) {\n values.push(d.name);\n }\n }\n }\n return values;\n }\n getXDomain(values = this.getXValues()) {\n if (this.scaleType === ScaleType.Time) {\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min, max];\n }\n else if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min, max];\n }\n return values;\n }\n getYValues() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n if (d.min !== undefined) {\n if (domain.indexOf(d.min) < 0) {\n domain.push(d.min);\n }\n }\n if (d.max !== undefined) {\n if (domain.indexOf(d.max) < 0) {\n domain.push(d.max);\n }\n }\n }\n }\n return domain;\n }\n getYDomain(domain = this.getYValues()) {\n let min = Math.min(...domain);\n const max = Math.max(this.yAxisMinScale, ...domain);\n min = Math.max(0, min);\n if (!this.autoScale) {\n min = Math.min(0, min);\n }\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n switch (this.scaleType) {\n case ScaleType.Time:\n return scaleTime().range([0, width]).domain(domain);\n case ScaleType.Linear: {\n const scale = scaleLinear().range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n default:\n return scalePoint()\n .range([0, width - twoPI / domain.length])\n .padding(0)\n .domain(domain);\n }\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([0, height]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n setColors() {\n const domain = this.schemeType === ScaleType.Ordinal ? this.seriesDomain : this.yDomain.reverse();\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n if (this.schemeType === ScaleType.Ordinal) {\n return {\n scaleType: this.schemeType,\n colors: this.colors,\n domain: this.seriesDomain,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n return {\n scaleType: this.schemeType,\n colors: this.colors.scale,\n domain: this.yDomain,\n title: undefined,\n position: this.legendPosition\n };\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = this.showSeriesOnHover ? [item, ...this.activeEntries] : this.activeEntries;\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n trackBy(index, item) {\n return `${item.name}`;\n }\n}\nPolarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nPolarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PolarChartComponent, selector: \"ngx-charts-polar-chart\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", autoScale: \"autoScale\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", rangeFillOpacity: \"rangeFillOpacity\", trimYAxisTicks: \"trimYAxisTicks\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", showSeriesOnHover: \"showSeriesOnHover\", gradient: \"gradient\", yAxisMinScale: \"yAxisMinScale\", labelTrim: \"labelTrim\", labelTrimSize: \"labelTrimSize\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\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 `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-label{font-size:11px}.pie-label.animation{animation:.75s ease-in fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{animation:3s linear drawOut;transition:d .75s}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\\n\", \".polar-chart .polar-chart-background{fill:none}.polar-chart .radial-gridline-path{stroke-dasharray:10 10;fill:none}.polar-chart .pie-label-line{stroke:#2f3646}.polar-charts-series .polar-series-area,.polar-series-path{pointer-events:none}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: PieLabelComponent, selector: \"g[ngx-charts-pie-label]\", inputs: [\"data\", \"radius\", \"label\", \"color\", \"max\", \"value\", \"explodeSlices\", \"animations\", \"labelTrim\", \"labelTrimSize\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AxisLabelComponent, selector: \"g[ngx-charts-axis-label]\", inputs: [\"orient\", \"label\", \"offset\", \"width\", \"height\"] }, { type: PolarSeriesComponent, selector: \"g[ngx-charts-polar-series]\", inputs: [\"name\", \"data\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"curve\", \"activeEntries\", \"rangeFillOpacity\", \"tooltipDisabled\", \"tooltipText\", \"gradient\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-polar-chart', template: `\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 `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-label{font-size:11px}.pie-label.animation{animation:.75s ease-in fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{animation:3s linear drawOut;transition:d .75s}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\\n\", \".polar-chart .polar-chart-background{fill:none}.polar-chart .radial-gridline-path{stroke-dasharray:10 10;fill:none}.polar-chart .pie-label-line{stroke:#2f3646}.polar-charts-series .polar-series-area,.polar-series-path{pointer-events:none}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showSeriesOnHover: [{\n type: Input\n }], gradient: [{\n type: Input\n }], yAxisMinScale: [{\n type: Input\n }], labelTrim: [{\n type: Input\n }], labelTrimSize: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass PieArcComponent {\n constructor(element) {\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.cornerRadius = 0;\n this.explodeSlices = false;\n this.gradient = false;\n this.animate = true;\n this.pointerEvents = true;\n this.isActive = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dblclick = new EventEmitter();\n this.barOrientation = BarOrientation;\n this.initialized = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n getGradient() {\n return this.gradient ? this.gradientFill : this.fill;\n }\n getPointerEvents() {\n return this.pointerEvents ? 'auto' : 'none';\n }\n update() {\n const calc = this.calculateArc();\n this.startOpacity = 0.5;\n this.radialGradientId = 'linearGrad' + id().toString();\n this.gradientFill = `url(#${this.radialGradientId})`;\n if (this.animate) {\n if (this.initialized) {\n this.updateAnimation();\n }\n else {\n this.loadAnimation();\n this.initialized = true;\n }\n }\n else {\n this.path = calc.startAngle(this.startAngle).endAngle(this.endAngle)();\n }\n }\n calculateArc() {\n let outerRadius = this.outerRadius;\n if (this.explodeSlices && this.innerRadius === 0) {\n outerRadius = (this.outerRadius * this.value) / this.max;\n }\n return arc().innerRadius(this.innerRadius).outerRadius(outerRadius).cornerRadius(this.cornerRadius);\n }\n loadAnimation() {\n const node = select(this.element)\n .selectAll('.arc')\n .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n const calc = this.calculateArc();\n node\n .transition()\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const copyOfD = Object.assign({}, d);\n copyOfD.endAngle = copyOfD.startAngle;\n const interpolater = interpolate(copyOfD, copyOfD);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n })\n .transition()\n .duration(750)\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const interpolater = interpolate(this._current, d);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n });\n }\n updateAnimation() {\n const node = select(this.element)\n .selectAll('.arc')\n .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n const calc = this.calculateArc();\n node\n .transition()\n .duration(750)\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const interpolater = interpolate(this._current, d);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n });\n }\n onClick() {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(() => this.select.emit(this.data), 200);\n }\n onDblClick(event) {\n event.preventDefault();\n event.stopPropagation();\n clearTimeout(this._timeout);\n this.dblclick.emit({\n data: this.data,\n nativeEvent: event\n });\n }\n}\nPieArcComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieArcComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nPieArcComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieArcComponent, selector: \"g[ngx-charts-pie-arc]\", inputs: { fill: \"fill\", startAngle: \"startAngle\", endAngle: \"endAngle\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", cornerRadius: \"cornerRadius\", value: \"value\", max: \"max\", data: \"data\", explodeSlices: \"explodeSlices\", gradient: \"gradient\", animate: \"animate\", pointerEvents: \"pointerEvents\", isActive: \"isActive\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dblclick: \"dblclick\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgRadialGradientComponent, selector: \"g[ngx-charts-svg-radial-gradient]\", inputs: [\"color\", \"name\", \"startOpacity\", \"endOpacity\", \"cx\", \"cy\", \"stops\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieArcComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-arc]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fill: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], endAngle: [{\n type: Input\n }], innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], cornerRadius: [{\n type: Input\n }], value: [{\n type: Input\n }], max: [{\n type: Input\n }], data: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animate: [{\n type: Input\n }], pointerEvents: [{\n type: Input\n }], isActive: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dblclick: [{\n type: Output\n }] } });\n\nclass PieSeriesComponent {\n constructor() {\n this.series = [];\n this.innerRadius = 60;\n this.outerRadius = 80;\n this.trimLabels = true;\n this.maxLabelLength = 10;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dblclick = new EventEmitter();\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n const pieGenerator = pie()\n .value(d => d.value)\n .sort(null);\n const arcData = pieGenerator(this.series);\n this.max = max(arcData, d => {\n return d.value;\n });\n this.data = this.calculateLabelPositions(arcData);\n this.tooltipText = this.tooltipText || this.defaultTooltipText;\n }\n midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n outerArc() {\n const factor = 1.5;\n return arc()\n .innerRadius(this.outerRadius * factor)\n .outerRadius(this.outerRadius * factor);\n }\n calculateLabelPositions(pieData) {\n const factor = 1.5;\n const minDistance = 10;\n const labelPositions = pieData;\n labelPositions.forEach(d => {\n d.pos = this.outerArc().centroid(d);\n d.pos[0] = factor * this.outerRadius * (this.midAngle(d) < Math.PI ? 1 : -1);\n });\n for (let i = 0; i < labelPositions.length - 1; i++) {\n const a = labelPositions[i];\n if (!this.labelVisible(a)) {\n continue;\n }\n for (let j = i + 1; j < labelPositions.length; j++) {\n const b = labelPositions[j];\n if (!this.labelVisible(b)) {\n continue;\n }\n // if they're on the same side\n if (b.pos[0] * a.pos[0] > 0) {\n // if they're overlapping\n const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n if (o > 0) {\n // push the second up or down\n b.pos[1] += Math.sign(b.pos[0]) * o;\n }\n }\n }\n }\n return labelPositions;\n }\n labelVisible(myArc) {\n return this.showLabels && myArc.endAngle - myArc.startAngle > Math.PI / 30;\n }\n getTooltipTitle(a) {\n return this.tooltipTemplate ? undefined : this.tooltipText(a);\n }\n labelText(myArc) {\n if (this.labelFormatting) {\n return this.labelFormatting(myArc.data.name);\n }\n return this.label(myArc);\n }\n label(myArc) {\n return formatLabel(myArc.data.name);\n }\n defaultTooltipText(myArc) {\n const label = this.label(myArc);\n const val = formatLabel(myArc.data.value);\n return `\n ${escapeLabel(label)}\n ${val}\n `;\n }\n color(myArc) {\n return this.colors.getColor(this.label(myArc));\n }\n trackBy(index, item) {\n return item.data.name;\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n}\nPieSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nPieSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieSeriesComponent, selector: \"g[ngx-charts-pie-series]\", inputs: { colors: \"colors\", series: \"series\", dims: \"dims\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", explodeSlices: \"explodeSlices\", showLabels: \"showLabels\", gradient: \"gradient\", activeEntries: \"activeEntries\", labelFormatting: \"labelFormatting\", trimLabels: \"trimLabels\", maxLabelLength: \"maxLabelLength\", tooltipText: \"tooltipText\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dblclick: \"dblclick\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: PieLabelComponent, selector: \"g[ngx-charts-pie-label]\", inputs: [\"data\", \"radius\", \"label\", \"color\", \"max\", \"value\", \"explodeSlices\", \"animations\", \"labelTrim\", \"labelTrimSize\"] }, { type: PieArcComponent, selector: \"g[ngx-charts-pie-arc]\", inputs: [\"fill\", \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"value\", \"max\", \"data\", \"explodeSlices\", \"gradient\", \"animate\", \"pointerEvents\", \"isActive\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dblclick\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-series]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { colors: [{\n type: Input\n }], series: [{\n type: Input\n }], dims: [{\n type: Input\n }], innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], showLabels: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], trimLabels: [{\n type: Input\n }], maxLabelLength: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dblclick: [{\n type: Output\n }] } });\n\nclass AdvancedPieChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.label = 'Total';\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [20, 20, 20, 20];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: (this.width * 4) / 12.0,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.setColors();\n const xOffset = this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.legendWidth = this.width - this.dims.width - this.margin[1];\n this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2.5;\n this.innerRadius = this.outerRadius * 0.75;\n this.transform = `translate(${xOffset} , ${yOffset})`;\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nAdvancedPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AdvancedPieChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nAdvancedPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AdvancedPieChartComponent, selector: \"ngx-charts-advanced-pie-chart\", inputs: { gradient: \"gradient\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", tooltipText: \"tooltipText\", label: \"label\", valueFormatting: \"valueFormatting\", nameFormatting: \"nameFormatting\", percentageFormatting: \"percentageFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n
    \n
    \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".advanced-pie{display:inline-block;float:left}.advanced-pie-legend-wrapper{display:inline-block}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: PieSeriesComponent, selector: \"g[ngx-charts-pie-series]\", inputs: [\"colors\", \"series\", \"dims\", \"innerRadius\", \"outerRadius\", \"explodeSlices\", \"showLabels\", \"gradient\", \"activeEntries\", \"labelFormatting\", \"trimLabels\", \"maxLabelLength\", \"tooltipText\", \"tooltipDisabled\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dblclick\"] }, { type: AdvancedLegendComponent, selector: \"ngx-charts-advanced-legend\", inputs: [\"width\", \"data\", \"colors\", \"label\", \"animations\", \"valueFormatting\", \"labelFormatting\", \"percentageFormatting\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AdvancedPieChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-advanced-pie-chart', template: `\n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n
    \n
    \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".advanced-pie{display:inline-block;float:left}.advanced-pie-legend-wrapper{display:inline-block}\\n\"] }]\n }], propDecorators: { gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], label: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], valueFormatting: [{\n type: Input\n }], nameFormatting: [{\n type: Input\n }], percentageFormatting: [{\n type: Input\n }] } });\n\nclass PieChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.labels = false;\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.explodeSlices = false;\n this.doughnut = false;\n this.arcWidth = 0.25;\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.trimLabels = true;\n this.maxLabelLength = 10;\n this.dblclick = new EventEmitter();\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n update() {\n super.update();\n if (this.labels && this.hasNoOptionalMarginsSet()) {\n this.margins = [30, 80, 30, 80];\n }\n else if (!this.labels && this.hasNoOptionalMarginsSet()) {\n // default value for margins\n this.margins = [20, 20, 20, 20];\n }\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margins,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n const xOffset = this.margins[3] + this.dims.width / 2;\n const yOffset = this.margins[0] + this.dims.height / 2;\n this.translation = `translate(${xOffset}, ${yOffset})`;\n this.outerRadius = Math.min(this.dims.width, this.dims.height);\n if (this.labels) {\n // make room for labels\n this.outerRadius /= 3;\n }\n else {\n this.outerRadius /= 2;\n }\n this.innerRadius = 0;\n if (this.doughnut) {\n this.innerRadius = this.outerRadius * (1 - this.arcWidth);\n }\n this.domain = this.getDomain();\n // sort data according to domain\n this.data = this.results.sort((a, b) => {\n return this.domain.indexOf(a.name) - this.domain.indexOf(b.name);\n });\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n getLegendOptions() {\n return {\n scaleType: ScaleType.Ordinal,\n domain: this.domain,\n colors: this.colors,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n hasNoOptionalMarginsSet() {\n return !this.margins || this.margins.length <= 0;\n }\n}\nPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieChartComponent, selector: \"ngx-charts-pie-chart\", inputs: { labels: \"labels\", legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", explodeSlices: \"explodeSlices\", doughnut: \"doughnut\", arcWidth: \"arcWidth\", gradient: \"gradient\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", labelFormatting: \"labelFormatting\", trimLabels: \"trimLabels\", maxLabelLength: \"maxLabelLength\", tooltipText: \"tooltipText\", margins: \"margins\" }, outputs: { dblclick: \"dblclick\", select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-label{font-size:11px}.pie-label.animation{animation:.75s ease-in fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{animation:3s linear drawOut;transition:d .75s}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: PieSeriesComponent, selector: \"g[ngx-charts-pie-series]\", inputs: [\"colors\", \"series\", \"dims\", \"innerRadius\", \"outerRadius\", \"explodeSlices\", \"showLabels\", \"gradient\", \"activeEntries\", \"labelFormatting\", \"trimLabels\", \"maxLabelLength\", \"tooltipText\", \"tooltipDisabled\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dblclick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-pie-chart', template: `\n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-label{font-size:11px}.pie-label.animation{animation:.75s ease-in fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{animation:3s linear drawOut;transition:d .75s}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\\n\"] }]\n }], propDecorators: { labels: [{\n type: Input\n }], legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], doughnut: [{\n type: Input\n }], arcWidth: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], trimLabels: [{\n type: Input\n }], maxLabelLength: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], dblclick: [{\n type: Output\n }], margins: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nfunction gridSize(dims, len, minWidth) {\n let rows = 1;\n let cols = len;\n const width = dims.width;\n if (width > minWidth) {\n while (width / cols < minWidth) {\n rows += 1;\n cols = Math.ceil(len / rows);\n }\n }\n return [cols, rows];\n}\nfunction gridLayout(dims, data, minWidth, designatedTotal) {\n const xScale = scaleBand();\n const yScale = scaleBand();\n const width = dims.width;\n const height = dims.height;\n const [columns, rows] = gridSize(dims, data.length, minWidth);\n const xDomain = [];\n const yDomain = [];\n for (let i = 0; i < rows; i++) {\n yDomain.push(i);\n }\n for (let i = 0; i < columns; i++) {\n xDomain.push(i);\n }\n xScale.domain(xDomain);\n yScale.domain(yDomain);\n xScale.rangeRound([0, width], 0.1);\n yScale.rangeRound([0, height], 0.1);\n const res = [];\n const total = designatedTotal ? designatedTotal : getTotal(data);\n const cardWidth = xScale.bandwidth();\n const cardHeight = yScale.bandwidth();\n for (let i = 0; i < data.length; i++) {\n res[i] = {};\n res[i].data = {\n name: data[i] ? data[i].name : '',\n value: data[i] ? data[i].value : undefined,\n extra: data[i] ? data[i].extra : undefined,\n label: data[i] ? data[i].label : ''\n };\n res[i].x = xScale(i % columns);\n res[i].y = yScale(Math.floor(i / columns));\n res[i].width = cardWidth;\n res[i].height = cardHeight;\n res[i].data.percent = total > 0 ? res[i].data.value / total : 0;\n res[i].data.total = total;\n }\n return res;\n}\nfunction getTotal(results) {\n return results.map(d => (d ? d.value : 0)).reduce((sum, val) => sum + val, 0);\n}\n\nclass PieGridSeriesComponent {\n constructor(element) {\n this.innerRadius = 70;\n this.outerRadius = 80;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.layout = pie()\n .value(d => d.data.value)\n .sort(null);\n this.arcs = this.getArcs();\n }\n getArcs() {\n return this.layout(this.data).map((arc, index) => {\n const label = arc.data.data.name;\n const other = arc.data.data.other;\n if (index === 0) {\n arc.startAngle = 0;\n }\n const color = this.colors(label);\n return {\n data: arc.data.data,\n class: 'arc ' + 'arc' + index,\n fill: color,\n startAngle: other ? 0 : arc.startAngle,\n endAngle: arc.endAngle,\n animate: this.animations && !other,\n pointerEvents: !other\n };\n });\n }\n onClick(data) {\n this.select.emit(this.data[0].data);\n }\n trackBy(index, item) {\n return item.data.name;\n }\n label(arc) {\n return arc.data.name;\n }\n color(arc) {\n return this.colors(this.label(arc));\n }\n}\nPieGridSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieGridSeriesComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nPieGridSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieGridSeriesComponent, selector: \"g[ngx-charts-pie-grid-series]\", inputs: { colors: \"colors\", data: \"data\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: PieArcComponent, selector: \"g[ngx-charts-pie-arc]\", inputs: [\"fill\", \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"value\", \"max\", \"data\", \"explodeSlices\", \"gradient\", \"animate\", \"pointerEvents\", \"isActive\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dblclick\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieGridSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-grid-series]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { colors: [{\n type: Input\n }], data: [{\n type: Input\n }], innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass PieGridComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.tooltipDisabled = false;\n this.label = 'Total';\n this.minWidth = 150;\n this.activeEntries = [];\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [20, 20, 20, 20];\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.data = gridLayout(this.dims, this.results, this.minWidth, this.designatedTotal);\n this.transform = `translate(${this.margin[3]} , ${this.margin[0]})`;\n this.series = this.getSeries();\n this.setColors();\n this.tooltipText = this.tooltipText || this.defaultTooltipText;\n }\n defaultTooltipText({ data }) {\n const label = trimLabel(formatLabel(data.name));\n const val = data.value.toLocaleString();\n return `\n ${label}\n ${val}\n `;\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n getSeries() {\n const total = this.designatedTotal ? this.designatedTotal : this.getTotal();\n return this.data.map(d => {\n const baselineLabelHeight = 20;\n const padding = 10;\n const name = d.data.name;\n const label = formatLabel(name);\n const value = d.data.value;\n const radius = min([d.width - padding, d.height - baselineLabelHeight]) / 2 - 5;\n const innerRadius = radius * 0.9;\n let count = 0;\n const colors = () => {\n count += 1;\n if (count === 1) {\n return 'rgba(100,100,100,0.3)';\n }\n else {\n return this.colorScale.getColor(label);\n }\n };\n const xPos = d.x + (d.width - padding) / 2;\n const yPos = d.y + (d.height - baselineLabelHeight) / 2;\n return {\n transform: `translate(${xPos}, ${yPos})`,\n colors,\n innerRadius,\n outerRadius: radius,\n name,\n label: trimLabel(label),\n total: value,\n value,\n percent: format('.1%')(d.data.percent),\n data: [\n d,\n {\n data: {\n other: true,\n value: total - value,\n name: d.data.name\n }\n }\n ]\n };\n });\n }\n getTotal() {\n return this.results.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colorScale = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nPieGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieGridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nPieGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieGridComponent, selector: \"ngx-charts-pie-grid\", inputs: { designatedTotal: \"designatedTotal\", tooltipDisabled: \"tooltipDisabled\", tooltipText: \"tooltipText\", label: \"label\", minWidth: \"minWidth\", activeEntries: \"activeEntries\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ series.percent.toLocaleString() }}\n \n \n {{ series.label }}\n \n \n \n {{ label }}: {{ series.total.toLocaleString() }}\n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-grid .arc1{opacity:.4}.pie-grid .percent-label{font-size:16px;font-weight:400}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: PieGridSeriesComponent, selector: \"g[ngx-charts-pie-grid-series]\", inputs: [\"colors\", \"data\", \"innerRadius\", \"outerRadius\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: CountUpDirective, selector: \"[ngx-charts-count-up]\", inputs: [\"countDuration\", \"countPrefix\", \"countSuffix\", \"valueFormatting\", \"countDecimals\", \"countTo\", \"countFrom\"], outputs: [\"countChange\", \"countFinish\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieGridComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-pie-grid', template: `\n \n \n \n \n \n \n {{ series.percent.toLocaleString() }}\n \n \n {{ series.label }}\n \n \n \n {{ label }}: {{ series.total.toLocaleString() }}\n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-grid .arc1{opacity:.4}.pie-grid .percent-label{font-size:16px;font-weight:400}\\n\"] }]\n }], propDecorators: { designatedTotal: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], label: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass PieChartModule {\n}\nPieChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPieChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartModule, declarations: [AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent], imports: [ChartCommonModule], exports: [AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent] });\nPieChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [\n AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent\n ],\n exports: [\n AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent\n ]\n }]\n }] });\n\nclass PolarChartModule {\n}\nPolarChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPolarChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartModule, declarations: [PolarChartComponent, PolarSeriesComponent], imports: [ChartCommonModule, PieChartModule, LineChartModule], exports: [PolarChartComponent, PolarSeriesComponent] });\nPolarChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartModule, imports: [[ChartCommonModule, PieChartModule, LineChartModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule, PieChartModule, LineChartModule],\n declarations: [PolarChartComponent, PolarSeriesComponent],\n exports: [PolarChartComponent, PolarSeriesComponent]\n }]\n }] });\n\nfunction calculateTextWidth(fontFamilyKey, text, defaultWidth = 8) {\n return text.split('').reduce((acc, curr) => {\n const width = fontFamilyKey[curr] || defaultWidth;\n return acc + width;\n }, 0);\n}\n\nconst VERDANA_FONT_WIDTHS_16_PX = {\n '0': 10,\n '1': 10,\n '2': 10,\n '3': 10,\n '4': 10,\n '5': 10,\n '6': 10,\n '7': 10,\n '8': 10,\n '9': 10,\n A: 11,\n B: 11,\n C: 11,\n D: 12,\n E: 10,\n F: 9,\n G: 12,\n H: 12,\n I: 7,\n J: 7,\n K: 11,\n L: 9,\n M: 13,\n N: 12,\n O: 13,\n P: 10,\n Q: 13,\n R: 11,\n S: 11,\n T: 10,\n U: 12,\n V: 11,\n W: 16,\n X: 11,\n Y: 10,\n Z: 11,\n a: 10,\n b: 10,\n c: 8,\n d: 10,\n e: 10,\n f: 6,\n g: 10,\n h: 10,\n i: 4,\n j: 6,\n k: 9,\n l: 4,\n m: 16,\n n: 10,\n o: 10,\n p: 10,\n q: 10,\n r: 7,\n s: 8,\n t: 6,\n u: 10,\n v: 9,\n w: 13,\n x: 9,\n y: 9,\n z: 8,\n '!': 6,\n '@': 16,\n '#': 13,\n $: 10,\n '%': 17,\n '^': 13,\n '&': 12,\n '*': 10,\n '(': 7,\n ')': 7,\n _: 10,\n '-': 7,\n '+': 13,\n '=': 13,\n ',': 6,\n '.': 6,\n '/': 7,\n \"'\": 4,\n ':': 7,\n '|': 7,\n '?': 9,\n ';': 7,\n '<': 13,\n '>': 13\n};\n\nclass CardComponent {\n constructor(element, cd, zone, platformId) {\n this.cd = cd;\n this.zone = zone;\n this.platformId = platformId;\n this.animations = true;\n this.select = new EventEmitter();\n this.value = '';\n this.textFontSize = 12;\n this.textTransform = '';\n this.initialized = false;\n this.bandHeight = 10;\n this.textPadding = [10, 20, 5, 20];\n this.labelFontSize = 15;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.scaleTextSSR();\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n cancelAnimationFrame(this.animationReq);\n }\n }\n update() {\n this.zone.run(() => {\n const hasValue = this.data && typeof this.data.value !== 'undefined';\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const labelFormatting = this.labelFormatting || (card => escapeLabel(trimLabel(card.label, 55)));\n this.transform = `translate(${this.x} , ${this.y})`;\n this.textWidth = Math.max(0, this.width) - this.textPadding[1] - this.textPadding[3];\n this.cardWidth = Math.max(0, this.width);\n this.cardHeight = Math.max(0, this.height);\n this.label = this.label ? this.label : this.data.name;\n const cardData = {\n label: this.label,\n data: this.data,\n value: this.data.value\n };\n this.formattedLabel = labelFormatting(cardData);\n this.transformBand = `translate(0 , ${this.cardHeight - this.bandHeight})`;\n const value = hasValue ? valueFormatting(cardData) : '';\n this.value = this.paddedValue(value);\n this.setPadding();\n this.bandPath = roundedRect(0, 0, this.cardWidth, this.bandHeight, 3, [false, false, true, true]);\n setTimeout(() => {\n if (isPlatformBrowser(this.platformId)) {\n this.scaleText();\n }\n this.value = value;\n if (hasValue && !this.initialized) {\n setTimeout(() => this.startCount(), 20);\n }\n }, 8);\n });\n }\n paddedValue(value) {\n if (this.medianSize && this.medianSize > value.length) {\n value += '\\u2007'.repeat(this.medianSize - value.length);\n }\n return value;\n }\n startCount() {\n if (!this.initialized && this.animations) {\n cancelAnimationFrame(this.animationReq);\n const val = this.data.value;\n const decs = decimalChecker(val);\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const callback = ({ value, finished }) => {\n this.zone.run(() => {\n value = finished ? val : value;\n this.value = valueFormatting({ label: this.label, data: this.data, value });\n if (!finished) {\n this.value = this.paddedValue(this.value);\n }\n this.cd.markForCheck();\n });\n };\n this.animationReq = count(0, val, decs, 1, callback);\n this.initialized = true;\n }\n }\n scaleText() {\n this.zone.run(() => {\n const { width, height } = this.textEl.nativeElement.getBoundingClientRect();\n if (width === 0 || height === 0) {\n return;\n }\n const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n const availableWidth = this.cardWidth - 2 * textPadding;\n const availableHeight = this.cardHeight / 3;\n const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n this.labelFontSize = Math.min(this.textFontSize, 15);\n this.setPadding();\n this.cd.markForCheck();\n });\n }\n scaleTextSSR() {\n const width = calculateTextWidth(VERDANA_FONT_WIDTHS_16_PX, this.value, 10);\n const height = 18;\n const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n const availableWidth = this.cardWidth - 2 * textPadding;\n const availableHeight = this.cardHeight / 3;\n const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n this.labelFontSize = Math.min(this.textFontSize, 15);\n this.setPadding();\n }\n setPadding() {\n this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8;\n const padding = this.cardHeight / 2;\n this.textPadding[0] = padding - this.textFontSize - this.labelFontSize / 2;\n this.textPadding[2] = padding - this.labelFontSize;\n }\n onClick() {\n this.select.emit(this.data);\n }\n}\nCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CardComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: CardComponent, selector: \"g[ngx-charts-card]\", inputs: { color: \"color\", bandColor: \"bandColor\", textColor: \"textColor\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", label: \"label\", data: \"data\", medianSize: \"medianSize\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", animations: \"animations\" }, outputs: { select: \"select\" }, viewQueries: [{ propertyName: \"textEl\", first: true, predicate: [\"textEl\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n {{ label }}\n \n \n \n \n \n {{ value }}\n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CardComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-card]',\n template: `\n \n \n \n {{ label }}\n \n \n \n \n \n {{ value }}\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { color: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], textColor: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], label: [{\n type: Input\n }], data: [{\n type: Input\n }], medianSize: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], textEl: [{\n type: ViewChild,\n args: ['textEl', { static: false }]\n }] } });\n\n/**\n * Converts a hex to RGB\n *\n * @export\n */\nfunction hexToRgb(value) {\n // deprecated, use d3.color()\n return d3_color.rgb(value);\n}\n/**\n * Accepts a color (string) and returns a inverted hex color (string)\n * http://stackoverflow.com/questions/9600295/automatically-change-text-color-to-assure-readability\n *\n * @export\n */\nfunction invertColor(value) {\n const color = d3_color.rgb(value);\n const { r, g, b, opacity } = color;\n if (opacity === 0) {\n return color.toString();\n }\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n const depth = yiq >= 128 ? -0.8 : 0.8;\n return shadeRGBColor(color, depth);\n}\n/**\n * Given a rgb, it will darken/lighten\n * http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors\n *\n * @export\n * @param \\{ r, g, b }\n */\nfunction shadeRGBColor({ r, g, b }, percent) {\n const t = percent < 0 ? 0 : 255;\n const p = percent < 0 ? percent * -1 : percent;\n r = Math.round((t - r) * p) + r;\n g = Math.round((t - g) * p) + g;\n b = Math.round((t - b) * p) + b;\n return `rgb(${r}, ${g}, ${b})`;\n}\n\nclass CardSeriesComponent {\n constructor() {\n this.innerPadding = 15;\n this.emptyColor = 'rgba(0, 0, 0, 0)';\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n if (this.data.length > 2) {\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const sortedLengths = this.data\n .map(d => {\n const hasValue = d && d.data && typeof d.data.value !== 'undefined' && d.data.value !== null;\n return hasValue\n ? valueFormatting({\n data: d.data,\n label: d ? d.data.name : '',\n value: d && d.data ? d.data.value : ''\n }).length\n : 0;\n })\n .sort((a, b) => b - a);\n const idx = Math.ceil(this.data.length / 2);\n this.medianSize = sortedLengths[idx];\n }\n const cards = this.getCards();\n this.cards = cards.filter(d => d.data.value !== null);\n this.emptySlots = cards.filter(d => d.data.value === null);\n }\n getCards() {\n const yPadding = typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[0] + this.innerPadding[2];\n const xPadding = typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[1] + this.innerPadding[3];\n return this.data.map((d, index) => {\n let label = d.data.name;\n if (label && label.constructor.name === 'Date') {\n label = label.toLocaleDateString();\n }\n else {\n label = label ? label.toLocaleString() : label;\n }\n const value = d.data.value;\n const valueColor = label ? this.colors.getColor(label) : this.emptyColor;\n const color = this.cardColor || valueColor || '#000';\n return {\n x: d.x,\n y: d.y,\n width: d.width - xPadding,\n height: d.height - yPadding,\n color,\n bandColor: this.bandColor || valueColor,\n textColor: this.textColor || invertColor(color),\n label,\n data: d.data,\n tooltipText: `${label}: ${value}`\n };\n });\n }\n trackBy(index, card) {\n return card.label;\n }\n onClick(data) {\n this.select.emit(data);\n }\n}\nCardSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CardSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCardSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: CardSeriesComponent, selector: \"g[ngx-charts-card-series]\", inputs: { data: \"data\", dims: \"dims\", colors: \"colors\", innerPadding: \"innerPadding\", cardColor: \"cardColor\", bandColor: \"bandColor\", emptyColor: \"emptyColor\", textColor: \"textColor\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: CardComponent, selector: \"g[ngx-charts-card]\", inputs: [\"color\", \"bandColor\", \"textColor\", \"x\", \"y\", \"width\", \"height\", \"label\", \"data\", \"medianSize\", \"valueFormatting\", \"labelFormatting\", \"animations\"], outputs: [\"select\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CardSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-card-series]',\n template: `\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], dims: [{\n type: Input\n }], colors: [{\n type: Input\n }], innerPadding: [{\n type: Input\n }], cardColor: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], emptyColor: [{\n type: Input\n }], textColor: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nclass NumberCardComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.emptyColor = 'rgba(0, 0, 0, 0)';\n this.innerPadding = 15;\n this.margin = [10, 10, 10, 10];\n }\n get clickable() {\n return !!this.select.observers.length;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.setColors();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n const size = gridSize(this.dims, this.results.length, 150);\n const N = size[0] * size[1];\n const data = this.results.slice();\n while (data.length < N) {\n data.push({ value: null });\n }\n this.data = gridLayout(this.dims, data, 150, this.designatedTotal);\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n}\nNumberCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nNumberCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: NumberCardComponent, selector: \"ngx-charts-number-card\", inputs: { cardColor: \"cardColor\", bandColor: \"bandColor\", emptyColor: \"emptyColor\", innerPadding: \"innerPadding\", textColor: \"textColor\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", designatedTotal: \"designatedTotal\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \"ngx-charts-number-card .cell .trimmed-label{font-size:12px;pointer-events:none;overflow:hidden;text-align:left;line-height:1em}ngx-charts-number-card .cell .trimmed-label p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:0;margin:0}ngx-charts-number-card .cell .value-text{pointer-events:none}ngx-charts-number-card .number-card.clickable .cell .card,ngx-charts-number-card .number-card.clickable .cell .card-band{cursor:pointer}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: CardSeriesComponent, selector: \"g[ngx-charts-card-series]\", inputs: [\"data\", \"dims\", \"colors\", \"innerPadding\", \"cardColor\", \"bandColor\", \"emptyColor\", \"textColor\", \"valueFormatting\", \"labelFormatting\", \"animations\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-number-card', template: `\n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \"ngx-charts-number-card .cell .trimmed-label{font-size:12px;pointer-events:none;overflow:hidden;text-align:left;line-height:1em}ngx-charts-number-card .cell .trimmed-label p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:0;margin:0}ngx-charts-number-card .cell .value-text{pointer-events:none}ngx-charts-number-card .number-card.clickable .cell .card,ngx-charts-number-card .number-card.clickable .cell .card-band{cursor:pointer}\\n\"] }]\n }], propDecorators: { cardColor: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], emptyColor: [{\n type: Input\n }], innerPadding: [{\n type: Input\n }], textColor: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], designatedTotal: [{\n type: Input\n }] } });\n\nclass NumberCardModule {\n}\nNumberCardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNumberCardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardModule, declarations: [CardComponent, CardSeriesComponent, NumberCardComponent], imports: [ChartCommonModule], exports: [CardComponent, CardSeriesComponent, NumberCardComponent] });\nNumberCardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [CardComponent, CardSeriesComponent, NumberCardComponent],\n exports: [CardComponent, CardSeriesComponent, NumberCardComponent]\n }]\n }] });\n\nclass TreeMapCellComponent {\n constructor(element) {\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.initialized = false;\n this.orientation = BarOrientation;\n this.element = element.nativeElement;\n }\n ngOnChanges() {\n this.update();\n this.valueFormatting = this.valueFormatting || (value => value.toLocaleString());\n const labelFormatting = this.labelFormatting || (cell => escapeLabel(trimLabel(cell.label, 55)));\n const cellData = {\n data: this.data,\n label: this.label,\n value: this.value\n };\n this.formattedValue = this.valueFormatting(cellData.value);\n this.formattedLabel = labelFormatting(cellData);\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n this.gradientStops = this.getGradientStops();\n }\n update() {\n if (this.initialized) {\n this.animateToCurrentForm();\n }\n else {\n if (this.animations) {\n this.loadAnimation();\n }\n this.initialized = true;\n }\n }\n loadAnimation() {\n const node = select(this.element).select('.cell');\n node.attr('opacity', 0).attr('x', this.x).attr('y', this.y);\n this.animateToCurrentForm();\n }\n getTextColor() {\n return invertColor(this.fill);\n }\n animateToCurrentForm() {\n const node = select(this.element).select('.cell');\n if (this.animations) {\n node\n .transition()\n .duration(750)\n .attr('opacity', 1)\n .attr('x', this.x)\n .attr('y', this.y)\n .attr('width', this.width)\n .attr('height', this.height);\n }\n else {\n node.attr('opacity', 1).attr('x', this.x).attr('y', this.y).attr('width', this.width).attr('height', this.height);\n }\n }\n onClick() {\n this.select.emit(this.data);\n }\n getGradientStops() {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: 0.3\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n}\nTreeMapCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapCellComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTreeMapCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TreeMapCellComponent, selector: \"g[ngx-charts-tree-map-cell]\", inputs: { data: \"data\", fill: \"fill\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", label: \"label\", value: \"value\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", gradient: \"gradient\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n = 70 && height >= 35\"\n [attr.x]=\"x\"\n [attr.y]=\"y\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n class=\"treemap-label\"\n [style.pointer-events]=\"'none'\"\n >\n \n \n \n \n \n \n {{ formattedValue }}\n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }, { type: CountUpDirective, selector: \"[ngx-charts-count-up]\", inputs: [\"countDuration\", \"countPrefix\", \"countSuffix\", \"valueFormatting\", \"countDecimals\", \"countTo\", \"countFrom\"], outputs: [\"countChange\", \"countFinish\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tree-map-cell]',\n template: `\n \n \n \n \n \n = 70 && height >= 35\"\n [attr.x]=\"x\"\n [attr.y]=\"y\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n class=\"treemap-label\"\n [style.pointer-events]=\"'none'\"\n >\n \n \n \n \n \n \n {{ formattedValue }}\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { data: [{\n type: Input\n }], fill: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], label: [{\n type: Input\n }], value: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nclass TreeMapCellSeriesComponent {\n constructor() {\n this.gradient = false;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.styleTypes = StyleTypes;\n this.placementTypes = PlacementTypes;\n }\n ngOnChanges(changes) {\n this.cells = this.getCells();\n }\n getCells() {\n return this.data.children\n .filter(d => {\n return d.depth === 1;\n })\n .map((d, index) => {\n const label = d.id;\n return {\n data: d.data,\n x: d.x0,\n y: d.y0,\n width: d.x1 - d.x0,\n height: d.y1 - d.y0,\n fill: this.colors.getColor(label),\n label,\n value: d.value\n };\n });\n }\n getTooltipText({ label, value }) {\n return `\n ${escapeLabel(label)}\n ${value.toLocaleString()}\n `;\n }\n onClick(data) {\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.label;\n }\n}\nTreeMapCellSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapCellSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTreeMapCellSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TreeMapCellSeriesComponent, selector: \"g[ngx-charts-tree-map-cell-series]\", inputs: { data: \"data\", dims: \"dims\", colors: \"colors\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", gradient: \"gradient\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, components: [{ type: TreeMapCellComponent, selector: \"g[ngx-charts-tree-map-cell]\", inputs: [\"data\", \"fill\", \"x\", \"y\", \"width\", \"height\", \"label\", \"value\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\"], outputs: [\"select\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapCellSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tree-map-cell-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], dims: [{\n type: Input\n }], colors: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], gradient: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nclass TreeMapComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.tooltipDisabled = false;\n this.gradient = false;\n this.select = new EventEmitter();\n this.margin = [10, 10, 10, 10];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.domain = this.getDomain();\n this.treemap = treemap().size([this.dims.width, this.dims.height]);\n const rootNode = {\n name: 'root',\n value: 0,\n isRoot: true\n };\n const root = stratify()\n .id(d => {\n let label = d.name;\n if (label.constructor.name === 'Date') {\n label = label.toLocaleDateString();\n }\n else {\n label = label.toLocaleString();\n }\n return label;\n })\n .parentId(d => (d.isRoot ? null : 'root'))([rootNode, ...this.results])\n .sum(d => d.value);\n this.data = this.treemap(root);\n this.setColors();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getDomain() {\n return this.results.map(d => d.name);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n}\nTreeMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nTreeMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TreeMapComponent, selector: \"ngx-charts-tree-map\", inputs: { results: \"results\", tooltipDisabled: \"tooltipDisabled\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", gradient: \"gradient\" }, outputs: { select: \"select\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, styles: [\".tree-map .treemap-val{font-size:1.3em;padding-top:5px;display:inline-block}.tree-map .treemap-label p{display:table-cell;text-align:center;line-height:1.2em;vertical-align:middle}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: TreeMapCellSeriesComponent, selector: \"g[ngx-charts-tree-map-cell-series]\", inputs: [\"data\", \"dims\", \"colors\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-tree-map', template: `\n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".tree-map .treemap-val{font-size:1.3em;padding-top:5px;display:inline-block}.tree-map .treemap-label p{display:table-cell;text-align:center;line-height:1.2em;vertical-align:middle}\\n\"] }]\n }], propDecorators: { results: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], gradient: [{\n type: Input\n }], select: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass TreeMapModule {\n}\nTreeMapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTreeMapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapModule, declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent], imports: [ChartCommonModule], exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent] });\nTreeMapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent],\n exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent]\n }]\n }] });\n\nvar ElementType;\n(function (ElementType) {\n ElementType[\"Value\"] = \"value\";\n ElementType[\"Units\"] = \"units\";\n})(ElementType || (ElementType = {}));\nclass LinearGaugeComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.min = 0;\n this.max = 100;\n this.value = 0;\n this.margin = [10, 20, 10, 20];\n this.valueResizeScale = 1;\n this.unitsResizeScale = 1;\n this.valueTextTransform = '';\n this.valueTranslate = '';\n this.unitsTextTransform = '';\n this.unitsTranslate = '';\n this.barOrientation = BarOrientation;\n }\n ngAfterViewInit() {\n super.ngAfterViewInit();\n setTimeout(() => {\n this.scaleText(ElementType.Value);\n this.scaleText(ElementType.Units);\n });\n }\n update() {\n super.update();\n this.hasPreviousValue = this.previousValue !== undefined;\n this.max = Math.max(this.max, this.value);\n this.min = Math.min(this.min, this.value);\n if (this.hasPreviousValue) {\n this.max = Math.max(this.max, this.previousValue);\n this.min = Math.min(this.min, this.previousValue);\n }\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.valueDomain = this.getValueDomain();\n this.valueScale = this.getValueScale();\n this.displayValue = this.getDisplayValue();\n this.setColors();\n const xOffset = this.margin[3] + this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.transform = `translate(${xOffset}, ${yOffset})`;\n this.transformLine = `translate(${this.margin[3] + this.valueScale(this.previousValue)}, ${yOffset})`;\n this.valueTranslate = `translate(0, -15)`;\n this.unitsTranslate = `translate(0, 15)`;\n if (isPlatformServer(this.platformId)) {\n this.scaleTextSSR('value');\n this.scaleTextSSR('units');\n }\n else {\n setTimeout(() => this.scaleText(ElementType.Value), 50);\n setTimeout(() => this.scaleText(ElementType.Units), 50);\n }\n }\n getValueDomain() {\n return [this.min, this.max];\n }\n getValueScale() {\n return scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n }\n getDisplayValue() {\n if (this.valueFormatting) {\n return this.valueFormatting(this.value);\n }\n return this.value.toLocaleString();\n }\n scaleText(element, repeat = true) {\n let el;\n let resizeScale;\n if (element === ElementType.Value) {\n el = this.valueTextEl;\n resizeScale = this.valueResizeScale;\n }\n else {\n el = this.unitsTextEl;\n resizeScale = this.unitsResizeScale;\n }\n const { width, height } = el.nativeElement.getBoundingClientRect();\n if (width === 0 || height === 0)\n return;\n const oldScale = resizeScale;\n const availableWidth = this.dims.width;\n const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n if (resizeScale !== oldScale) {\n if (element === ElementType.Value) {\n this.valueResizeScale = resizeScale;\n this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n else {\n this.unitsResizeScale = resizeScale;\n this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n this.cd.markForCheck();\n if (repeat && isPlatformBrowser(this.platformId)) {\n setTimeout(() => {\n this.scaleText(element, false);\n }, 50);\n }\n }\n }\n scaleTextSSR(element) {\n let resizeScale = 1;\n const value = element === 'value' ? this.displayValue : this.units;\n const width = calculateTextWidth(VERDANA_FONT_WIDTHS_16_PX, value, 10);\n const height = 25;\n const availableWidth = this.dims.width;\n const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n if (element === 'value') {\n this.valueResizeScale = resizeScale;\n this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n else {\n this.unitsResizeScale = resizeScale;\n this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n this.cd.markForCheck();\n }\n onClick() {\n this.select.emit({\n name: 'Value',\n value: this.value\n });\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, [this.value], this.customColors);\n }\n}\nLinearGaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LinearGaugeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nLinearGaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LinearGaugeComponent, selector: \"ngx-charts-linear-gauge\", inputs: { min: \"min\", max: \"max\", value: \"value\", units: \"units\", previousValue: \"previousValue\", valueFormatting: \"valueFormatting\" }, viewQueries: [{ propertyName: \"valueTextEl\", first: true, predicate: [\"valueTextEl\"], descendants: true }, { propertyName: \"unitsTextEl\", first: true, predicate: [\"unitsTextEl\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n\n \n\n \n\n \n \n \n {{ displayValue }}\n \n \n\n \n \n {{ units }}\n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".linear-gauge{cursor:pointer}.linear-gauge .background-bar path{fill:#0000000d}.linear-gauge .units{fill:#666}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: BarComponent, selector: \"g[ngx-charts-bar]\", inputs: [\"fill\", \"data\", \"width\", \"height\", \"x\", \"y\", \"orientation\", \"roundEdges\", \"gradient\", \"offset\", \"isActive\", \"stops\", \"animations\", \"ariaLabel\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LinearGaugeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-linear-gauge', template: `\n \n \n \n \n\n \n\n \n\n \n \n \n {{ displayValue }}\n \n \n\n \n \n {{ units }}\n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".linear-gauge{cursor:pointer}.linear-gauge .background-bar path{fill:#0000000d}.linear-gauge .units{fill:#666}\\n\"] }]\n }], propDecorators: { min: [{\n type: Input\n }], max: [{\n type: Input\n }], value: [{\n type: Input\n }], units: [{\n type: Input\n }], previousValue: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], valueTextEl: [{\n type: ViewChild,\n args: ['valueTextEl']\n }], unitsTextEl: [{\n type: ViewChild,\n args: ['unitsTextEl']\n }] } });\n\nclass GaugeArcComponent {\n constructor() {\n this.isActive = false;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n }\n tooltipText(arc) {\n const label = formatLabel(arc.data.name);\n let val;\n if (this.valueFormatting) {\n val = this.valueFormatting(arc.data.value);\n }\n else {\n val = formatLabel(arc.data.value);\n }\n return `\n ${escapeLabel(label)}\n ${val}\n `;\n }\n}\nGaugeArcComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeArcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGaugeArcComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: GaugeArcComponent, selector: \"g[ngx-charts-gauge-arc]\", inputs: { backgroundArc: \"backgroundArc\", valueArc: \"valueArc\", cornerRadius: \"cornerRadius\", colors: \"colors\", isActive: \"isActive\", tooltipDisabled: \"tooltipDisabled\", valueFormatting: \"valueFormatting\", tooltipTemplate: \"tooltipTemplate\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: PieArcComponent, selector: \"g[ngx-charts-pie-arc]\", inputs: [\"fill\", \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"value\", \"max\", \"data\", \"explodeSlices\", \"gradient\", \"animate\", \"pointerEvents\", \"isActive\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dblclick\"] }], directives: [{ type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeArcComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-gauge-arc]',\n template: `\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { backgroundArc: [{\n type: Input\n }], valueArc: [{\n type: Input\n }], cornerRadius: [{\n type: Input\n }], colors: [{\n type: Input\n }], isActive: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass GaugeAxisComponent {\n constructor() {\n this.rotate = '';\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.rotationAngle = -90 + this.startAngle;\n this.rotate = `rotate(${this.rotationAngle})`;\n this.ticks = this.getTicks();\n }\n getTicks() {\n const bigTickSegment = this.angleSpan / this.bigSegments;\n const smallTickSegment = bigTickSegment / this.smallSegments;\n const tickLength = 20;\n const ticks = {\n big: [],\n small: []\n };\n const startDistance = this.radius + 10;\n const textDist = startDistance + tickLength + 10;\n for (let i = 0; i <= this.bigSegments; i++) {\n const angleDeg = i * bigTickSegment;\n const angle = (angleDeg * Math.PI) / 180;\n const textAnchor = this.getTextAnchor(angleDeg);\n let skip = false;\n if (i === 0 && this.angleSpan === 360) {\n skip = true;\n }\n if (!skip) {\n let text = Number.parseFloat(this.valueScale.invert(angleDeg).toString()).toLocaleString();\n if (this.tickFormatting) {\n text = this.tickFormatting(text);\n }\n ticks.big.push({\n line: this.getTickPath(startDistance, tickLength, angle),\n textAnchor,\n text,\n textTransform: `\n translate(${textDist * Math.cos(angle)}, ${textDist * Math.sin(angle)}) rotate(${-this.rotationAngle})\n `\n });\n }\n if (i === this.bigSegments) {\n continue;\n }\n for (let j = 1; j <= this.smallSegments; j++) {\n const smallAngleDeg = angleDeg + j * smallTickSegment;\n const smallAngle = (smallAngleDeg * Math.PI) / 180;\n ticks.small.push({\n line: this.getTickPath(startDistance, tickLength / 2, smallAngle)\n });\n }\n }\n return ticks;\n }\n getTextAnchor(angle) {\n // [0, 45] = 'middle';\n // [46, 135] = 'start';\n // [136, 225] = 'middle';\n // [226, 315] = 'end';\n angle = (this.startAngle + angle) % 360;\n let textAnchor = TextAnchor.Middle;\n if (angle > 45 && angle <= 135) {\n textAnchor = TextAnchor.Start;\n }\n else if (angle > 225 && angle <= 315) {\n textAnchor = TextAnchor.End;\n }\n return textAnchor;\n }\n getTickPath(startDistance, tickLength, angle) {\n const y1 = startDistance * Math.sin(angle);\n const y2 = (startDistance + tickLength) * Math.sin(angle);\n const x1 = startDistance * Math.cos(angle);\n const x2 = (startDistance + tickLength) * Math.cos(angle);\n const points = [\n { x: x1, y: y1 },\n { x: x2, y: y2 }\n ];\n const lineGenerator = line()\n .x(d => d.x)\n .y(d => d.y);\n return lineGenerator(points);\n }\n}\nGaugeAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeAxisComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGaugeAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: GaugeAxisComponent, selector: \"g[ngx-charts-gauge-axis]\", inputs: { bigSegments: \"bigSegments\", smallSegments: \"smallSegments\", min: \"min\", max: \"max\", angleSpan: \"angleSpan\", startAngle: \"startAngle\", radius: \"radius\", valueScale: \"valueScale\", tickFormatting: \"tickFormatting\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ tick.text }}\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeAxisComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-gauge-axis]',\n template: `\n \n \n \n \n \n \n {{ tick.text }}\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { bigSegments: [{\n type: Input\n }], smallSegments: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], angleSpan: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], radius: [{\n type: Input\n }], valueScale: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }] } });\n\nclass GaugeComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.min = 0;\n this.max = 100;\n this.bigSegments = 10;\n this.smallSegments = 5;\n this.showAxis = true;\n this.startAngle = -120;\n this.angleSpan = 240;\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.showText = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.resizeScale = 1;\n this.rotation = '';\n this.textTransform = 'scale(1, 1)';\n this.cornerRadius = 10;\n }\n ngAfterViewInit() {\n super.ngAfterViewInit();\n setTimeout(() => this.scaleText());\n }\n update() {\n super.update();\n if (!this.showAxis) {\n if (!this.margin) {\n this.margin = [10, 20, 10, 20];\n }\n }\n else {\n if (!this.margin) {\n this.margin = [60, 100, 60, 100];\n }\n }\n // make the starting angle positive\n if (this.startAngle < 0) {\n this.startAngle = (this.startAngle % 360) + 360;\n }\n this.angleSpan = Math.min(this.angleSpan, 360);\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n this.domain = this.getDomain();\n this.valueDomain = this.getValueDomain();\n this.valueScale = this.getValueScale();\n this.displayValue = this.getDisplayValue();\n this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2;\n this.arcs = this.getArcs();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n const xOffset = this.margin[3] + this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.transform = `translate(${xOffset}, ${yOffset})`;\n this.rotation = `rotate(${this.startAngle})`;\n setTimeout(() => this.scaleText(), 50);\n }\n getArcs() {\n const arcs = [];\n const availableRadius = this.outerRadius * 0.7;\n const radiusPerArc = Math.min(availableRadius / this.results.length, 10);\n const arcWidth = radiusPerArc * 0.7;\n this.textRadius = this.outerRadius - this.results.length * radiusPerArc;\n this.cornerRadius = Math.floor(arcWidth / 2);\n let i = 0;\n for (const d of this.results) {\n const outerRadius = this.outerRadius - i * radiusPerArc;\n const innerRadius = outerRadius - arcWidth;\n const backgroundArc = {\n endAngle: (this.angleSpan * Math.PI) / 180,\n innerRadius,\n outerRadius,\n data: {\n value: this.max,\n name: d.name\n }\n };\n const valueArc = {\n endAngle: (Math.min(this.valueScale(d.value), this.angleSpan) * Math.PI) / 180,\n innerRadius,\n outerRadius,\n data: {\n value: d.value,\n name: d.name\n }\n };\n const arc = {\n backgroundArc,\n valueArc\n };\n arcs.push(arc);\n i++;\n }\n return arcs;\n }\n getDomain() {\n return this.results.map(d => d.name);\n }\n getValueDomain() {\n const values = this.results.map(d => d.value);\n const dataMin = Math.min(...values);\n const dataMax = Math.max(...values);\n if (this.min !== undefined) {\n this.min = Math.min(this.min, dataMin);\n }\n else {\n this.min = dataMin;\n }\n if (this.max !== undefined) {\n this.max = Math.max(this.max, dataMax);\n }\n else {\n this.max = dataMax;\n }\n return [this.min, this.max];\n }\n getValueScale() {\n return scaleLinear().range([0, this.angleSpan]).nice().domain(this.valueDomain);\n }\n getDisplayValue() {\n const value = this.results.map(d => d.value).reduce((a, b) => a + b, 0);\n if (this.textValue && 0 !== this.textValue.length) {\n return this.textValue.toLocaleString();\n }\n if (this.valueFormatting) {\n return this.valueFormatting(value);\n }\n return value.toLocaleString();\n }\n scaleText(repeat = true) {\n if (!this.showText) {\n return;\n }\n const { width } = this.textEl.nativeElement.getBoundingClientRect();\n const oldScale = this.resizeScale;\n if (width === 0) {\n this.resizeScale = 1;\n }\n else {\n const availableSpace = this.textRadius;\n this.resizeScale = Math.floor((availableSpace / (width / this.resizeScale)) * 100) / 100;\n }\n if (this.resizeScale !== oldScale) {\n this.textTransform = `scale(${this.resizeScale}, ${this.resizeScale})`;\n this.cd.markForCheck();\n if (repeat) {\n setTimeout(() => this.scaleText(false), 50);\n }\n }\n }\n onClick(data) {\n this.select.emit(data);\n }\n getLegendOptions() {\n return {\n scaleType: ScaleType.Ordinal,\n colors: this.colors,\n domain: this.domain,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n trackBy(index, item) {\n return item.valueArc.data.name;\n }\n}\nGaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nGaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: GaugeComponent, selector: \"ngx-charts-gauge\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", min: \"min\", max: \"max\", textValue: \"textValue\", units: \"units\", bigSegments: \"bigSegments\", smallSegments: \"smallSegments\", results: \"results\", showAxis: \"showAxis\", startAngle: \"startAngle\", angleSpan: \"angleSpan\", activeEntries: \"activeEntries\", axisTickFormatting: \"axisTickFormatting\", tooltipDisabled: \"tooltipDisabled\", valueFormatting: \"valueFormatting\", showText: \"showText\", margin: \"margin\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], viewQueries: [{ propertyName: \"textEl\", first: true, predicate: [\"textEl\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n\n \n\n \n {{ displayValue }}\n {{ units }}\n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".gauge .background-arc path{fill:#0000000d}.gauge .gauge-tick path{stroke:#666}.gauge .gauge-tick text{font-size:12px;fill:#666;font-weight:700}.gauge .gauge-tick-large path{stroke-width:2px}.gauge .gauge-tick-small path{stroke-width:1px}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: GaugeArcComponent, selector: \"g[ngx-charts-gauge-arc]\", inputs: [\"backgroundArc\", \"valueArc\", \"cornerRadius\", \"colors\", \"isActive\", \"tooltipDisabled\", \"valueFormatting\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: GaugeAxisComponent, selector: \"g[ngx-charts-gauge-axis]\", inputs: [\"bigSegments\", \"smallSegments\", \"min\", \"max\", \"angleSpan\", \"startAngle\", \"radius\", \"valueScale\", \"tickFormatting\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-gauge', template: `\n \n \n \n \n \n\n \n\n \n {{ displayValue }}\n {{ units }}\n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".gauge .background-arc path{fill:#0000000d}.gauge .gauge-tick path{stroke:#666}.gauge .gauge-tick text{font-size:12px;fill:#666;font-weight:700}.gauge .gauge-tick-large path{stroke-width:2px}.gauge .gauge-tick-small path{stroke-width:1px}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], textValue: [{\n type: Input\n }], units: [{\n type: Input\n }], bigSegments: [{\n type: Input\n }], smallSegments: [{\n type: Input\n }], results: [{\n type: Input\n }], showAxis: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], angleSpan: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], axisTickFormatting: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], showText: [{\n type: Input\n }], margin: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], textEl: [{\n type: ViewChild,\n args: ['textEl']\n }] } });\n\nclass GaugeModule {\n}\nGaugeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGaugeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeModule, declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent], imports: [ChartCommonModule, PieChartModule, BarChartModule], exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent] });\nGaugeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeModule, imports: [[ChartCommonModule, PieChartModule, BarChartModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule, PieChartModule, BarChartModule],\n declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent],\n exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent]\n }]\n }] });\n\n// The export is needed here to generate a valid polyfills.metadata.json file\nfunction ngxChartsPolyfills() {\n // IE11 fix\n // Ref: https://github.com/swimlane/ngx-charts/issues/386\n if (typeof SVGElement !== 'undefined' && typeof SVGElement.prototype.contains === 'undefined') {\n SVGElement.prototype.contains = HTMLDivElement.prototype.contains;\n }\n}\n\nclass NgxChartsModule {\n constructor() {\n ngxChartsPolyfills();\n }\n}\nNgxChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NgxChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgxChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NgxChartsModule, exports: [ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BoxChartModule,\n BubbleChartModule,\n HeatMapModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule] });\nNgxChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NgxChartsModule, imports: [ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BoxChartModule,\n BubbleChartModule,\n HeatMapModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NgxChartsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BoxChartModule,\n BubbleChartModule,\n HeatMapModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule\n ]\n }]\n }], ctorParameters: function () { return []; } });\n\nfunction tickFormat(fieldType, groupByType) {\n return function (label) {\n if (label === 'No Value' || label === 'Other') {\n return label;\n }\n if (fieldType === 'date' && groupByType === 'groupBy') {\n const formatter = timeFormat('MM/DD/YYYY');\n return formatter(label);\n }\n return label.toString();\n };\n}\n\n/* eslint-disable @typescript-eslint/no-empty-interface */\n\n/*\n * Public API Surface of ngx-charts\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AdvancedLegendComponent, AdvancedPieChartComponent, AreaChartComponent, AreaChartModule, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaComponent, AreaSeriesComponent, AxesModule, AxisLabelComponent, BarChartModule, BarChartType, BarComponent, BarHorizontal2DComponent, BarHorizontalComponent, BarHorizontalNormalizedComponent, BarHorizontalStackedComponent, BarLabelComponent, BarOrientation, BarVertical2DComponent, BarVerticalComponent, BarVerticalNormalizedComponent, BarVerticalStackedComponent, BaseChartComponent, BoxChartComponent, BoxChartModule, BoxComponent, BoxSeriesComponent, BubbleChartComponent, BubbleChartModule, BubbleSeriesComponent, CardComponent, CardSeriesComponent, ChartCommonModule, ChartComponent, CircleComponent, CircleSeriesComponent, ColorHelper, CountUpDirective, D0Types, GaugeArcComponent, GaugeAxisComponent, GaugeComponent, GaugeModule, GridPanelComponent, GridPanelSeriesComponent, HeatCellSeriesComponent, HeatMapCellComponent, HeatMapComponent, HeatMapModule, LegendComponent, LegendEntryComponent, LegendPosition, LegendType, LineChartComponent, LineChartModule, LineComponent, LineSeriesComponent, LinearGaugeComponent, NgxChartsModule, NumberCardComponent, NumberCardModule, Orientation, PieArcComponent, PieChartComponent, PieChartModule, PieGridComponent, PieGridSeriesComponent, PieLabelComponent, PieSeriesComponent, PlacementTypes, PolarChartComponent, PolarChartModule, PolarSeriesComponent, ScaleLegendComponent, ScaleType, SeriesHorizontal, SeriesType, SeriesVerticalComponent, ShowTypes, StyleTypes, SvgLinearGradientComponent, SvgRadialGradientComponent, TextAnchor, Timeline, TooltipArea, TooltipContentComponent, TooltipDirective, TooltipModule, TooltipService, TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent, TreeMapModule, VisibilityObserver, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent, calculateViewDimensions, colorSets, count, decimalChecker, escapeLabel, formatLabel, getDomain, getScale, getScaleType, getTickLines, getUniqueXDomainValues, getXDomainArray, gridLayout, gridSize, hexToRgb, id, invertColor, reduceTicks, shadeRGBColor, sortByDomain, sortByTime, sortLinear, throttle, throttleable, tickFormat, trimLabel };\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n"],"x_google_ignoreList":[26,51,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239]}