{"version":3,"sources":["webpack:///../../../src/components/VExpansionPanel/VExpansionPanels.ts","webpack:///./src/shared/constants/booking/ReasonsForAbsence.js","webpack:///./src/components/booking/extend-booking/extend-booking-candidate-dropdown.vue?87f7","webpack:///./src/components/booking/extend-booking/extend-booking-summary.vue?31aa","webpack:///./src/components/booking/booking-list.vue?5927","webpack:///../../../src/components/VExpansionPanel/VExpansionPanelContent.ts","webpack:///./src/shared/constants/booking/BookingCommentType.js","webpack:///../../../src/components/VForm/VForm.ts","webpack:///./src/router/views/home.vue?c8ac","webpack:///./src/components/booking/booking-date-strip.vue?8571","webpack:///./src/components/picker/date-strip.vue?b421","webpack:///./src/components/picker/date-strip-day.vue?5415","webpack:///src/components/picker/date-strip-day.vue","webpack:///./src/components/picker/date-strip-day.vue?48e3","webpack:///./src/components/picker/date-strip-day.vue","webpack:///src/components/picker/date-strip.vue","webpack:///./src/components/picker/date-strip.vue?9e01","webpack:///../../../src/components/VItemGroup/VItem.ts","webpack:///../../../src/components/VSlideGroup/VSlideItem.ts","webpack:///./src/components/picker/date-strip.vue","webpack:///src/components/booking/booking-date-strip.vue","webpack:///./src/components/booking/booking-date-strip.vue?9adf","webpack:///./src/components/booking/booking-date-strip.vue","webpack:///./src/components/booking/cancel-booking-dialog.vue?717a","webpack:///src/components/booking/cancel-booking-dialog.vue","webpack:///./src/components/booking/cancel-booking-dialog.vue?917d","webpack:///./src/components/booking/cancel-booking-dialog.vue","webpack:///./src/components/replaceMe/replace-me-banner.vue?41cb","webpack:///./src/components/replaceMe/replace-me-form.vue?c605","webpack:///src/components/replaceMe/replace-me-form.vue","webpack:///./src/components/replaceMe/replace-me-form.vue?c0dd","webpack:///./src/components/replaceMe/replace-me-form.vue","webpack:///./src/services/mappers/ReplaceMeMapper.js","webpack:///src/components/replaceMe/replace-me-banner.vue","webpack:///./src/components/replaceMe/replace-me-banner.vue?321a","webpack:///./src/components/replaceMe/replace-me-banner.vue","webpack:///./src/components/layout/the-dashboard-navigation.vue?3960","webpack:///./src/components/layout/the-dashboard-navigation-item.vue?6549","webpack:///src/components/layout/the-dashboard-navigation-item.vue","webpack:///./src/components/layout/the-dashboard-navigation-item.vue?346c","webpack:///./src/components/layout/the-dashboard-navigation-item.vue","webpack:///src/components/layout/the-dashboard-navigation.vue","webpack:///./src/components/layout/the-dashboard-navigation.vue?a8f2","webpack:///./src/components/layout/the-dashboard-navigation.vue","webpack:///./src/models/overview/overviewStatsDto.js","webpack:///./src/components/booking/dashboard-fill-rate-stats.vue?59e8","webpack:///./src/components/overview/client-group-overview-fill-rate-chart.vue?cac2","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/chart.js/dist/chart.esm.js","webpack:///./node_modules/vue-chartjs/legacy/index.js","webpack:///src/components/overview/client-group-overview-fill-rate-chart.vue","webpack:///./src/components/overview/client-group-overview-fill-rate-chart.vue?3f72","webpack:///./src/components/overview/client-group-overview-fill-rate-chart.vue","webpack:///src/components/booking/dashboard-fill-rate-stats.vue","webpack:///./src/components/booking/dashboard-fill-rate-stats.vue?5a54","webpack:///./src/components/booking/dashboard-fill-rate-stats.vue","webpack:///./src/components/booking/client-fill-rate-filter.vue?13a0","webpack:///src/components/booking/client-fill-rate-filter.vue","webpack:///./src/components/booking/client-fill-rate-filter.vue?6fe9","webpack:///./src/components/booking/client-fill-rate-filter.vue","webpack:///./src/shared/constants/booking/FillRateFilterType.js","webpack:///./src/components/booking/summary/booking-summary-container.vue?b1fd","webpack:///./src/components/booking/booking-summary-empty-day-block.vue?83fe","webpack:///./src/shared/constants/date/DayOfWeekIso.js","webpack:///src/components/booking/booking-summary-empty-day-block.vue","webpack:///./src/components/booking/booking-summary-empty-day-block.vue?cccc","webpack:///./src/components/booking/booking-summary-empty-day-block.vue","webpack:///./src/components/booking/summary/booking-summary-list.vue?ec42","webpack:///./src/shared/constants/booking/ClientBookingStatus.js","webpack:///./src/components/booking/booking-list.vue?ecbf","webpack:///./src/mixins/bookingListMixin.js","webpack:///./src/shared/constants/booking/BookingStatusLabelType.js","webpack:///./src/shared/constants/booking/BookingCard.js","webpack:///./src/models/general/textModel.js","webpack:///./src/models/general/menuItem.js","webpack:///./src/mixins/featureFlagMixin.js","webpack:///./src/components/general/truncated-list.vue?7d25","webpack:///./src/mixins/truncatedListMixin.js","webpack:///src/components/general/truncated-list.vue","webpack:///./src/components/general/truncated-list.vue?282e","webpack:///./src/components/general/truncated-list.vue","webpack:///./src/components/booking/feedback/booking-feedback-modal.vue?243d","webpack:///./src/shared/constants/feedback/CandidateHaveBack.js","webpack:///src/components/booking/feedback/booking-feedback-modal.vue","webpack:///./src/components/booking/feedback/booking-feedback-modal.vue?56e2","webpack:///../../../src/components/VRadioGroup/VRadio.ts","webpack:///../../../src/components/VRadioGroup/VRadioGroup.ts","webpack:///../../../src/components/VRating/VRating.ts","webpack:///./src/components/booking/feedback/booking-feedback-modal.vue","webpack:///./src/components/booking/extend-booking/extend-booking-modal.vue?5b9b","webpack:///./src/models/bookings/extend-booking/extendBookingDTO.js","webpack:///./src/models/bookings/extend-booking/extendBookingSummaryItem.js","webpack:///./src/components/booking/extend-booking/extend-booking-summary.vue?4f7e","webpack:///./src/components/booking/extend-booking/extend-booking-candidate-dropdown.vue?9a44","webpack:///./src/models/candidate/candidateMenuItem.js","webpack:///./src/components/general/spinner.vue?3dcf","webpack:///src/components/general/spinner.vue","webpack:///./src/components/general/spinner.vue?01f2","webpack:///./src/components/general/spinner.vue","webpack:///src/components/booking/extend-booking/extend-booking-candidate-dropdown.vue","webpack:///./src/components/booking/extend-booking/extend-booking-candidate-dropdown.vue?9a10","webpack:///./src/components/booking/extend-booking/extend-booking-candidate-dropdown.vue","webpack:///src/components/booking/extend-booking/extend-booking-summary.vue","webpack:///./src/components/booking/extend-booking/extend-booking-summary.vue?bc0b","webpack:///./src/components/booking/extend-booking/extend-booking-summary.vue","webpack:///./src/components/booking/extend-booking/extend-booking-date-picker.vue?bc9d","webpack:///src/components/booking/extend-booking/extend-booking-date-picker.vue","webpack:///./src/components/booking/extend-booking/extend-booking-date-picker.vue?a26f","webpack:///./src/components/booking/extend-booking/extend-booking-date-picker.vue","webpack:///./src/components/booking/extend-booking/extend-booking-confirmation.vue?e45d","webpack:///./src/models/bookings/extend-booking/extendBookingConfirmationItem.js","webpack:///src/components/booking/extend-booking/extend-booking-confirmation.vue","webpack:///./src/components/booking/extend-booking/extend-booking-confirmation.vue?12fd","webpack:///./src/components/booking/extend-booking/extend-booking-confirmation.vue","webpack:///src/components/booking/extend-booking/extend-booking-modal.vue","webpack:///./src/components/booking/extend-booking/extend-booking-modal.vue?ffeb","webpack:///./src/components/booking/extend-booking/extend-booking-modal.vue","webpack:///./src/components/booking/booking-status-label.vue?f0ff","webpack:///src/components/booking/booking-status-label.vue","webpack:///./src/components/booking/booking-status-label.vue?0c7f","webpack:///./src/components/booking/booking-status-label.vue","webpack:///./src/components/booking/booking-list-policies.vue?4ac1","webpack:///src/components/booking/booking-list-policies.vue","webpack:///./src/components/booking/booking-list-policies.vue?3ff0","webpack:///./src/components/booking/booking-list-policies.vue","webpack:///src/components/booking/booking-list.vue","webpack:///./src/components/booking/booking-list.vue?292c","webpack:///./src/components/booking/booking-list.vue","webpack:///src/components/booking/summary/booking-summary-list.vue","webpack:///./src/components/booking/summary/booking-summary-list.vue?de06","webpack:///./src/components/booking/summary/booking-summary-list.vue","webpack:///./src/components/booking/summary/booking-summary-card-list.vue?e3b1","webpack:///./src/components/booking/booking-card.vue?e14f","webpack:///./src/components/cert-pills.vue?3a6b","webpack:///src/components/cert-pills.vue","webpack:///./src/components/cert-pills.vue?1910","webpack:///./src/components/cert-pills.vue","webpack:///./src/components/booking/booking-card-policies.vue?a745","webpack:///src/components/booking/booking-card-policies.vue","webpack:///./src/components/booking/booking-card-policies.vue?47ea","webpack:///./src/components/booking/booking-card-policies.vue","webpack:///./src/components/booking/booking-list-feedback.vue?624d","webpack:///src/components/booking/booking-list-feedback.vue","webpack:///./src/components/booking/booking-list-feedback.vue?9d87","webpack:///./src/components/booking/booking-list-feedback.vue","webpack:///./src/components/booking/booking-card-id-label.vue?37fd","webpack:///src/components/booking/booking-card-id-label.vue","webpack:///./src/components/booking/booking-card-id-label.vue?5aa2","webpack:///./src/components/booking/booking-card-id-label.vue","webpack:///./src/components/booking/booking-card-menu.vue?4a93","webpack:///src/components/booking/booking-card-menu.vue","webpack:///./src/components/booking/booking-card-menu.vue?f031","webpack:///./src/components/booking/booking-card-menu.vue","webpack:///src/components/booking/booking-card.vue","webpack:///./src/components/booking/booking-card.vue?4571","webpack:///./src/components/booking/booking-card.vue","webpack:///./src/components/booking/booking-card-v2.vue?d1d1","webpack:///src/components/booking/booking-card-v2.vue","webpack:///./src/components/booking/booking-card-v2.vue?5b6a","webpack:///./src/components/booking/booking-card-v2.vue","webpack:///src/components/booking/summary/booking-summary-card-list.vue","webpack:///./src/components/booking/summary/booking-summary-card-list.vue?ffdb","webpack:///./src/components/booking/summary/booking-summary-card-list.vue","webpack:///./src/components/booking/summary/booking-summary-layout-toggle.vue?cd58","webpack:///./src/components/layout/layout-filter.vue?15d4","webpack:///src/components/layout/layout-filter.vue","webpack:///./src/components/layout/layout-filter.vue?637d","webpack:///./src/components/layout/layout-filter.vue","webpack:///src/components/booking/summary/booking-summary-layout-toggle.vue","webpack:///./src/components/booking/summary/booking-summary-layout-toggle.vue?590b","webpack:///./src/components/booking/summary/booking-summary-layout-toggle.vue","webpack:///./src/components/booking/summary/booking-summary-skeleton-loader.vue?b9ae","webpack:///./src/components/skeleton/booking-card-list-skeleton-loader.vue?2b97","webpack:///./src/components/skeleton/booking-card-skeleton-loader.vue?c272","webpack:///src/components/skeleton/booking-card-skeleton-loader.vue","webpack:///./src/components/skeleton/booking-card-skeleton-loader.vue?6f9c","webpack:///./src/components/skeleton/booking-card-skeleton-loader.vue","webpack:///src/components/skeleton/booking-card-list-skeleton-loader.vue","webpack:///./src/components/skeleton/booking-card-list-skeleton-loader.vue?2ab8","webpack:///./src/components/skeleton/booking-card-list-skeleton-loader.vue","webpack:///./src/components/skeleton/booking-list-group-skeleton.vue?c6a9","webpack:///./src/components/skeleton/booking-list-skeleton.vue?7b28","webpack:///src/components/skeleton/booking-list-skeleton.vue","webpack:///./src/components/skeleton/booking-list-skeleton.vue?5622","webpack:///./src/components/skeleton/booking-list-skeleton.vue","webpack:///src/components/skeleton/booking-list-group-skeleton.vue","webpack:///./src/components/skeleton/booking-list-group-skeleton.vue?ba70","webpack:///./src/components/skeleton/booking-list-group-skeleton.vue","webpack:///src/components/booking/summary/booking-summary-skeleton-loader.vue","webpack:///./src/components/booking/summary/booking-summary-skeleton-loader.vue?af89","webpack:///./src/components/booking/summary/booking-summary-skeleton-loader.vue","webpack:///src/components/booking/summary/booking-summary-container.vue","webpack:///./src/components/booking/summary/booking-summary-container.vue?08a3","webpack:///./src/components/booking/summary/booking-summary-container.vue","webpack:///src/router/views/home.vue","webpack:///./src/router/views/home.vue?0389","webpack:///./src/router/views/home.vue","webpack:///./src/components/general/error-alert.vue?f99f","webpack:///src/components/general/error-alert.vue","webpack:///./src/components/general/error-alert.vue?ea09","webpack:///./src/components/general/error-alert.vue","webpack:///./src/components/booking/extend-booking/extend-booking-modal.vue?9c31","webpack:///./src/components/booking/grade-list.vue?99a4","webpack:///src/components/booking/grade-list.vue","webpack:///./src/components/booking/grade-list.vue?e039","webpack:///./src/components/booking/grade-list.vue","webpack:///./src/components/booking/extend-booking/extend-booking-date-picker.vue?d56e","webpack:///./src/components/picker/date-strip.vue?00b1","webpack:///./src/shared/constants/booking/BookingStatus.js","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///../../../src/components/VAutocomplete/VAutocomplete.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanelHeader.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanel.ts","webpack:///./src/components/booking/booking-card-v2.vue?944a","webpack:///./src/components/skeleton/booking-list-skeleton.vue?7b16"],"names":["name","expansionPanels","this","props","accordion","disabled","flat","hover","focusable","inset","popout","readonly","tile","Boolean","computed","$attrs","hasOwnProperty","Array","value","length","methods","getValue","item","nextValue","index","toggleMethod","ReasonsForAbsence","Object","freeze","id","baseMixins","data","isActive","expansionPanel","watch","parentIsActive","immediate","isBooted","oldVal","$nextTick","h","showLazyContent","setBackgroundColor","staticClass","directives","class","BookingCommentType","PRIVATE","CANDIDATE","CONTACT","LATE","form","inheritAttrs","lazyValidation","inputs","watchers","errorBag","errors","deep","watcher","input","val","_uid","valid","shouldValidate","filter","setTimeout","watchInput","found","find","i","unwatch","attrs","novalidate","attrs$","on","submit","e","$emit","$slots","_vm","_h","$createElement","_c","_self","isMediumOrLower","compTitle","displayRandomSubtitleGreeting","stats","_e","fillRateFilterType","generateFillRateFilterOptions","filterChanged","isMobileViewPort","refreshDashboardBookingData","refreshSummaryData","selectedDay","$event","changeDay","monthChanged","yearChanged","compBookings","isLoading","viewTodaysBookings","showCandidateDialog","openCancelBookingDialog","model","callback","$$v","showCandidateModal","expression","selectedCandidate","closeCandidateDialog","showCancelBookingDialog","bookingToCancel","closeCancelBookingDialog","closeCancelBookingDialogAndRefresh","staticRenderFns","isSmallOrLower","changeYear","year","_v","_s","bookingOverview","format","getToday","changeMonth","dateSelected","selectedSliderMonth","_l","x","key","staticStyle","scopedSlots","_u","fn","ref","active","toggle","isCurrentMonth","displayString","selectedSliderDay","day","isSelected","dateObject","numberOfBookings","handleDayClick","selected","isToday","clickedDay","isWeekend","displayStringDayName","counter","type","required","default","Number","today","isSame","weekDay","VBadge","VCard","components","mixins","baseMixin","String","bookings","menu","displayDate","Date","selectedDate","dateFormat","DateFormatToken","dayFormat","dayNameFormat","monthFormat","ar","monthIndex","tmpDate","push","daysArray","firstDayOfSelectedMonth","thisMonthDayJS","displaySliderMonth","tmpDayJs","years","booking","dayStr","totalBookingsCount","$M","$y","dayObject","BaseItem","activeClass","$scopedSlots","element","_b","VBtn","VSlideGroup","VSlideItem","DateStrip","refreshData","initialLoad","month","reRenderDateStrip","getSelectedClients","loadSummaryData","loadYearOfBookingOverviewData","result","clientIds","isSuccess","dateString","bookingCount","todaysRecord","shouldEmitChanges","nItems","VIcon","isLoadingCancelBooking","show","compInputLabel","payload","$set","unableToCancelDescription","$t","compReasonForBeingUnableToCancel","compConsultantLabel","ownerName","ownerPhone","isSubmitButtonDisabled","localStartTime","localNow","isAfter","candidate","isBookingInPast","hasAlreadyBeenAssignedToACandidate","$i18n","d","canCancelBooking","companyName","bookingId","date","formattedStartDate","cancelReason","cancelBooking","VCardActions","VCardText","VCardTitle","VDialog","VSpacer","VTextarea","isReplaceMeEnabled","statusCheckSuccess","isLoadingReplaceMeStatusCheck","isTodayActive","_g","todaySelected","compTodayIcon","compTodayText","compTodayTooltipText","isTomorrowActive","tomorrowSelected","compTomorrowIcon","compTomorrowText","compTomorrowTooltipText","showReplaceMeDialog","closeModal","isValid","compSelectedDay","locations","rules","selectedLocationsName","reasons","gradesList","isLoadingGrades","requiredWithAtleastOneItemSelected","close","getAllClientLocationsWithReplaceMePermission","grades","location","isNextMonday","initValidationRules","submitReplaceMeBooking","$refs","replaceMeForm","validate","VAutocomplete","VDivider","VForm","VSelect","VTextField","firstAccessibleLocation","reasonForAbsence","room","additionalNotes","locationId","classification","subjectList","ReplaceMeForm","replaceMeStatusCheck","replaceMeEnabled","getFirstClientLocationWithReplaceMePermissions","getUserStandardBookingDetails","isTodayAlreadySet","isTomorrowAlreadySet","nextMondayOrTomorrow","generateReplaceMeBookingTooltipTextFromBookingStatus","initReplaceMeStatusCheck","checkReplaceMeStatus","loadClientGrades","forceRefresh","response","displayDialog","ReplaceMeSelectionType","dayText","status","ReplaceMeMapper","VAlert","VTooltip","isActiveNavItem","to","icon","title","navItems","VCol","VRow","OverviewStatsDto","constructor","openBookings","totalBookings","filled","unfilled","displayNA","percentage","skipRounding","isNaN","fillRate","Math","round","compFilledBookings","compUnfilledBookings","compTotalBookings","hasStatsObject","chartData","width","height","options","plugins","requestAnimFrame","window","requestAnimationFrame","throttled","thisArg","updateFn","updateArgs","args","prototype","slice","call","ticking","rest","apply","debounce","delay","timeout","clearTimeout","_toLeftRightCenter","align","_alignStartEnd","start","end","_textX","left","right","rtl","check","noop","uid","isNullOrUndef","isArray","toString","isObject","isNumberFinite","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","each","loopable","reverse","len","keys","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","clone$1","source","map","target","create","klen","k","isValidKey","indexOf","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","emptyString","dot","indexOfDotOrLength","idx","resolveObjectKey","obj","pos","_capitalize","str","charAt","toUpperCase","defined","isFunction","setsEqual","a","b","size","has","_isClickEvent","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","almostEquals","niceRange","pow","floor","fraction","niceFraction","_factorize","sqrt","sort","pop","isNumber","n","y","epsilon","abs","almostWhole","rounded","_setMinAndMaxByKey","array","property","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","p","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","s","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","atEdge","t","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInBounce","easeOutBounce","m","easeInOutBounce","v","lim","l","p2b","n2b","b2n","n2p","map$1","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","c","f","hex","h1","h2","eq","isShort","r","g","hexParse","ret","hexString","undefined","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","hueValue","rgb2hsl","calln","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","exec","p1","p2","rotate","deg","hslString","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","unpack","unpacked","tkeys","j","ok","nk","replace","parseInt","nameParse","transparent","toLowerCase","RGB_RE","rgbParse","rgbString","interpolate","rgb1","rgb2","modHSL","ratio","tmp","clone","proto","assign","fromObject","functionParse","Color","_rgb","_valid","color","weight","c1","c2","w2","w1","index_esm","isPatternOrGradient","getHoverColor","saturate","darken","overrides","getScope$1","node","split","root","scope","values","Defaults","_descriptors","animation","backgroundColor","borderColor","datasets","devicePixelRatio","context","chart","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","enumerable","local","defaults","_scriptable","startsWith","_indexable","_fallback","toFontString","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","splice","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","top","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","text","opts","lines","strokeWidth","strokeColor","line","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","matches","match","numberOrZero","_readValueToProps","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","resolve","info","cacheable","_addGrace","minmax","grace","beginAtZero","change","keepZero","add","createContext","parentContext","_lookup","table","cmp","mid","hi","lo","_lookupByKey","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","defineProperty","configurable","forEach","method","base","res","object","unlistenArrayEvents","stub","_arrayUnique","items","set","Set","from","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","Symbol","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","override","Proxy","_keys","_cached","_resolveWithPrefixes","Reflect","getOwnPropertyDescriptor","getPrototypeOf","getKeysFromAllScopes","includes","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","_resolveWithContext","allKeys","ownKeys","scriptable","indexable","_allKeys","isScriptable","isIndexable","readKey","prefix","needsSubResolver","descriptors","_resolveScriptable","_resolveArray","Error","join","delete","createSubResolver","arr","resolver","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","meta","count","iScale","_parsing","parsed","parse","EPSILON","getPoint","points","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","current","next","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","delta","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","prev","tension","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","getStyle","el","getPropertyValue","positions","getPositionedStyle","styles","suffix","useOffsetPos","shadowRoot","getCanvasPosition","touches","offsetX","offsetY","box","getBoundingClientRect","clientX","clientY","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","getContainerSize","maxHeight","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","addEventListener","removeEventListener","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","Map","getNumberFormat","locale","cacheKey","JSON","stringify","formatter","get","Intl","NumberFormat","formatNumber","num","getRightToLeftAdapter","rectX","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","getSegment","segment","bounds","startBound","endBound","_boundSegment","prevValue","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","findStartAndEnd","solidSegments","last","cur","stop","_computeSegments","segmentOptions","_loop","splitByStyles","completeLoop","_fullLoop","doSplitByStyles","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","_request","_charts","_running","_lastDate","anims","callbacks","numSteps","duration","initial","currentStep","_update","_refresh","now","remaining","running","draw","_active","_total","tick","_notify","charts","complete","progress","event","cb","_getAnims","reduce","acc","_duration","cancel","animator","interpolators","factor","c0","mix","cfg","currentValue","_fn","_easing","easing","_start","_target","_prop","_from","_to","_promises","elapsed","remain","promises","Promise","rej","resolved","numbers","colors","properties","resize","animations","visible","hide","config","_properties","configure","animatedProps","getOwnPropertyNames","option","newOptions","resolveTargetOptions","_createAnimations","$shared","awaitAll","$animations","then","_animateOptions","update","anim","wait","all","scaleClip","allowedOverflow","defaultClip","xScale","yScale","toClip","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","convertObjectDataToArray","adata","isStacked","stacked","getStackKey","indexScale","valueScale","getUserBounds","minDefined","maxDefined","NEGATIVE_INFINITY","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","axis","vAxis","itemStacks","_top","_bottom","getFirstScaleId","shift","createDatasetContext","dataset","createDataContext","dataIndex","raw","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","addElements","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","isExtensible","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","parsedValue","NaN","otherScale","_getOtherScale","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","label","getLabelForValue","_clip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","names","resolveNamedOptions","transition","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","_resolveAnimations","getSharedOptions","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_dataChanges","arguments","_sync","newCount","getAllScaleValues","_cache","$bar","visibleMetas","concat","getAllParsedValues","computeMinSampleSize","curr","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","computeFitCategoryTraits","ruler","stackCount","thickness","barThickness","categoryPercentage","barPercentage","chunk","pixels","computeFlexCategoryTraits","percent","parseFloatBar","entry","startValue","endValue","barStart","barEnd","_custom","parseValue","parseArrayOrPrimitive","isFloatBar","custom","barSign","actualBase","isHorizontal","borderProps","horizontal","setBorderSkipped","edge","borderSkipped","enableBorderRadius","parseEdge","swap","startEnd","orig","v2","setInflateAmount","inflateAmount","iAxisKey","vAxisKey","super","bars","reset","getBasePixel","_getRuler","firstOpts","includeOptions","updateSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","grouped","_getStacks","_startPixel","_endPixel","_getStackCount","baseValue","minBarLength","floating","getDataVisibility","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","Infinity","stackIndex","_getStackIndex","rects","_index_","offset","grid","_value_","getRatioAndOffset","circumference","cutout","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","tooltip","innerRadius","outerRadius","getter","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","_getRotationExtents","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","_dataset","animationsDisabled","getStartAndCountOfVisiblePoints","scaleRangesChanged","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","pointCount","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","bind","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","display","circular","pointLabels","PieController","pointPosition","getPointPositionForValue","ScatterController","DateAdapter","timestamp","amount","unit","weekday","members","adapters","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","handler","getSortedVisibleDatasetMetas","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","getIntersectItems","useFinalPosition","isPointInArea","evaluationFunc","inRange","getNearestRadialItems","getProps","getNearestCartesianItems","distanceMetric","minDistance","getCenterPoint","pointInArea","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","wrap","placed","setLayoutDims","params","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","buildLayoutBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","padding","autoPadding","_layers","z","layoutItem","minPadding","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","BasePlatform","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","initCanvas","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","eventListenerOptions","passive","addListener","removeListener","fromNativeEvent","native","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","ResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","removeAttribute","setAttribute","proxies","$proxies","handlers","attach","detach","isConnected","_detectPlatform","OffscreenCanvas","final","defaultRoutes","formatters","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","numeric","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","determineMaxTicks","majorIndices","major","enabled","getMajorIndices","numMajorIndices","first","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","tickLength","_tickSize","maxScale","maxChart","_maxLength","evenMajorSpacing","getEvenSpacing","factors","ceil","majorStart","majorEnd","diff","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","reverseAlign","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","titleAlign","titleArgs","titleX","titleY","positionAxisID","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getMinMax","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","generateTickLabels","_computeLabelSizes","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","decimal","getBaseValue","optionTicks","rot","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","limit","step","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","tickTextAlign","labelPadding","fillRect","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","drawBackground","drawGrid","drawTitle","drawLabels","tz","gz","axisID","fontSize","isPrototypeOf","parentScope","isIChartComponent","register","registerDefaults","itemDefaults","routeDefaults","routes","propertyParts","sourceName","sourceScope","parts","controllers","_typedRegistries","_each","_get","typedRegistry","arg","reg","_getRegistryForType","isForType","_exec","itemReg","registry","component","camelMethod","_init","hook","_createDescriptors","descriptor","plugin","cancelable","_oldCache","_notifyStateChanges","allPlugins","createDescriptors","previousDescriptors","some","getPlugin","getOpts","pluginOpts","pluginScopeKeys","getIndexAxis","datasetDefaults","datasetOptions","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","axisFromPosition","determineAxis","scaleOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","error","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","generate","addIfFound","_config","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","version","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","animationOptions","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","userConfig","initialCanvas","existingChart","chartOptionScopes","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","listen","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","scalesOptions","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","scaleClass","getScale","init","hasUpdated","addBox","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","order","updateIndex","ControllerClass","getController","getElement","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","removeBox","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","setDatasetVisibility","_updateVisibility","_destroy","remove","_stop","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","isAttached","activeElements","lastActive","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","eventFilter","_handleEvent","_getActiveElements","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","toRadiusCorners","parseBorderRadius$1","angleDelta","o","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","alpha","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","drawArc","fullCircles","drawFullCircleBorders","inner","lineJoin","unregister","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","setStyle","lineCap","getLineMethod","stepped","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","_getInterpolationMethod","strokePathWithCache","path","_path","Path2D","strokePathDirect","segmentMethod","usePath2D","_points","_segments","_pointsUpdated","_interpolate","interpolated","inRange$1","hitRadius","mouseX","mouseY","hoverRadius","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","boundingRects","outer","skipX","skipY","skipBoth","hasRadius","addNormalRectPath","inflateRect","refRect","addRectPath","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","itemHeight","itemsEqual","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","generateLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","col","rtlHelper","hitbox","leftForLtr","_draw","defaultColor","fontColor","halfFontSize","cursor","drawLegendBox","lineDash","drawOptions","SQRT2","xPlus","yBoxTop","xBoxLeft","textDirection","setWidth","realX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","isListened","hoveredItem","_getLegendItemAt","sameItem","onLeave","plugin_legend","_element","_args","adjustHitBoxes","handleEvent","ci","_padding","textSize","fontOpts","_drawArgs","createTitle","titleBlock","plugin_title","WeakMap","positioners","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getLabelAndValue","getTooltipSize","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caret","caretSize","caretPadding","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","_willRender","labelCount","addIfString","addedLabels","unshift","findOrAddLabel","lastIndexOf","_startValue","_valueRange","_addedLabels","added","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","MIN_SPACING","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","_endValue","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","stepSize","computeTickLimit","getTickLimit","numericGeneratorOptions","_maxDigits","handleTickRangeOptions","isMajor","tickVal","generateTicks","endExp","endSignificand","exp","significand","lastTick","_zero","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","hLimits","vLimits","updateLimits","setCenterPoint","_pointLabelItems","buildPointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabels","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","logarithmic","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","distanceFromCenter","animate","INTERVALS","millisecond","common","steps","second","minute","hour","week","quarter","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","addTick","time","timestamps","setMajorTicks","majorUnit","ticksFromTimestamps","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","ChartEmits","chartCreate","createChartFunction","chartOptions","emit","ChartRendered","chartUpdate","ChartUpdated","chartDestroy","destroy","ChartDestroyed","getChartData","datasetIdKey","nextData","setChartDatasets","oldData","newData","addedDatasets","nextDataset","currentDataset","setChartLabels","LabelsUpdated","setChartOptions","compareData","newDatasetLabels","oldDatasetLabels","every","templateError","ANNOTATION_PLUGIN_KEY","generateChart","chartId","chartType","chartController","_chartRef","cssClasses","ref1","pluginSettings","renderChart","newValue","oldValue","chartDataHandler","chartOptionsHandler","currentChart","getCurrentChart","canvasEl2DContext","setCurrentChart","isEqualLabelsAndDatasetsLength","updateChart","hasAnnotationPlugin","$data","createElement","Doughnut","overviewStats","cutOut","hideSubtitle","backgroundCircle","innerText","displaySubtitle","initChart","ONE_HUNDRED_PERCENT","pluginOptions","isDisplayable","xCoor","yCoor","beforeDraw","isSubtitleDisplayable","toFixed","fontWeight","fontFamily","heightModifier","textX","textY","subtitle","initChartData","initChartPlugins","defaultLayoutOptions","domProps","VBtnToggle","selectedMonth","toggleAllExpansionPanels","expandAll","compExpandBtnText","loading","compBookingSummarySkeletonLoaderCount","client","clientId","updateExpansionPanelState","clientName","viewCandidate","description","isPast","hasAtLeastOneLocationNotPassedSameDayCutOff","query","compDateForCreateBooking","jumpToToday","DayOfWeekIso","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY","isBefore","$d","toDateString","locationName","orderedBookings","pendingApproval","tentative","rejected","columns","customSort","determineIfBookingHasGroup","textClass","caption","colorClass","grey","blockText","blockTooltipText","bookingHasCandidate","filledCandidateId","filledCandidateFirstName","filledCandidateLastName","grey300","generateBookingNameString","bookingStatus","generateBookingTimeRangeString","smallBody","_f","certList","certChecks","agreements","generateReplacingString","generateContextMenuOptions","isUnapproved","disableMenuItem","toggleProvideFeedbackModal","toggleExtendBookingModal","handleFeedbackProvided","showFeedbackModal","showExtendBookingModal","mapGetters","hasCreateBookingPermissionForAtleastOneClientLocationByClientIds","featureFlags","canCreateBookings","headers","sortable","selfService","showBookingStatus","header","InProgress","Confirmed","Pending","Unapproved","BookingStatusLabelType","mobileDimensions","minWidth","dimensions","minHeight","bookingStatusMap","labelStatus","TextModel","addClass","cssClass","removeClass","cls","getClasses","MenuItem","nanoid","attributes","isSubtitleTextModel","getSubtitleText","getSubtitleCSSClasses","selfServiceFeatureFlags","inline","chipClass","$listeners","textStyle","notFirstIndex","blue","hiddenItemsText","hasOneOrMoreItems","hasMoreItemsThanLimit","noLimit","hiddenCount","itemsToShow","hiddenItems","chips","VuetifyTextClass","VChip","h6","isSubmittingQuickFeedback","handleClose","formValid","saveFeedback","isOpen","rating","loadingUrl","requestExtendedFeedback","haveBack","CandidateHaveBack","PREFERRED","YES","NO","commentRules","commentTextErrorUpdate","commentText","ErrorAlert","BaseButton","EmptyStateBlock","savingFeedback","commentTextError","hasErrors","dialog","quickFeedbackSuccess","VuetifyColorClass","requestFeedbackFormUrl","submitQuickFeedback","open","url","resetFeedback","clearError","parseRating","comment","toasts","zeroIndexedRating","hasError","offIcon","onIcon","isFocused","groupClasses","VInput","hasLabel","radioGroup","VLabel","click","for","computedId","focused","hasState","radioAttrs","setTextColor","dense","genInput","genRipple","isDisabled","onKeydown","onChange","column","role","vnode","clearable","emptyIcon","fullIcon","halfIcon","halfIncrements","iconLabel","hoverIndex","internalValue","circle","xSmall","genHoverIndex","createClickFn","isFilled","isHovered","isHalf","isHalfEvent","$vuetify","isFull","isHovering","createProps","onMouseEnter","getColor","lang","getIconName","children","genItem","VExpandTransition","VRadio","VRadioGroup","VRating","modalWidth","modalMaxHeight","goBack","isConfirmationScreen","isCancelOpen","disableNext","isSummaryScreen","handleNext","primaryButtonText","transitionName","transitionMode","minAllowedDate","handleDateChange","extendedEndDate","bookingsWithWeekends","candidateOptions","confirmedBookings","summaryWarning","setEducatorForBooking","summaryBookings","extendedBookings","grey600","ExtendBookingDTO","dateLocal","candidateId","toLocaleDateString","ExtendBookingSummaryItem","SimpleTableItem","bookingDate","educator","dateMeta","unavailableWarning","warning100","warning400","warning500","disableRemove","disableDropdown","setEducator","dropdownMenuItems","disableCandidateOption","selectedMenuId","blue100","tableItem","grey500","isUnfilled","blue400","CandidateMenuItem","fullName","VProgressCircular","VuetifyColourClass","createInteraction","selectedMenuItem","baseDropdown","closeMenu","menuItem","dateMixin","tableItemId","dropdownItem","bookingDescription","isMediumOrHigher","validDateRule","futureDatesOnlyRule","minDateRule","maxDateRule","weekDaysOnly","setDate","openDatePicker","showDatePicker","firstDayOfWeek","disableWeekends","maxAllowedDate","setDatePickerDate","internalDate","MAX_DATE_VALUE","MAX_DATE_UNIT","DurationUnits","days","$tc","formatDate","endDate","formatDateToFriendlyString","isDateOnWeekend","validateDate","emitSetDateEvent","getTodaysDate","VDatePicker","VMenu","tableData","blue500","smallBodyBold","ExtendBookingConfirmationItem","friendlyDateString","action","i18n","BaseModal","ExtendBookingDatePicker","ExtendBookingSummary","ExtendBookingConfirmation","isGoingBack","isDateValid","datePicker","summary","confirmation","isExtendedEndDateValid","isValidDate","currentEndDate","isDatePickerScreen","defaultHeight","determineMinimumAllowedDate","formatTimesToFriendlyDuration","validDayIndexes","everyValidDayHasAvailableCandidate","submitExtendBooking","getExtendBookingCandidates","$store","commit","resetData","goToSummary","extendBooking","candidates","createSummaryBookings","startDateLocal","showWarning","endDateLocal","startDate","dateDifferenceOffset","diffDays","newDate","dateAdd","durationUnits","DAY","code","handleCandidatesUnavailable","errorData","hasUnfilledCandidate","unfilledDates","minDate","adjustDateToNextWeekday","tomorrow","adjustedDate","YYYYMMDD","summaryItem","statusLabel","BaseLabelShade","light","yellow","purple","green","compPoliciesText","compPoliciesTooltip","white","agreedUTC","typeName","mappedRemainingPolicies","TruncatedList","policies","policy","policiesRemaining","agreedPolicies","allPoliciesAgreedTo","BookingListPolicies","BookingStatusLabel","ExtendBookingModal","BookingFeedbackModal","CandidateImage","selectedBookingId","hasLocationBookingCreatePermission","renderTime24","trim","isDev","trackFeedbackClick","BookingCard","customProperties","$appInsights","trackEvent","hasProvidedFeedback","hasCreateForLocationPerm","filteredOptions","feedback","provided","certs","itemA","itemB","replacingNameA","replacing","replacingNameB","simpleComparisonAlgorithm","nameA","nameB","startTimeA","getDate","startDateTimeLocal","startTimeB","outstandingPoliciesA","countOutstandingPolicies","outstandingPoliciesB","sortBy","sortDesc","desc","comparison","customSortReplacing","customSortName","customSortTime","customSortPolicies","VAvatar","VDataTable","BookingList","bookingSortOrderByStatus","calcBookingCardColumnBreakpoints","compFilledCandidateId","compFilledCandidateFirstName","compFilledCandidateLastName","updateProfileImage","compCandidateFullName","compRunningLateClass","compDuration","howLate","roomNumber","notes","certifications","cert","policiesAgreed","feedbackProvided","openFeedback","buttonConfig","debouncedTrackFeedbackClick","ClientBookingStatus","VList","VListItem","VListItemContent","VListItemIcon","VListItemTitle","CertPills","BookingCardPolicies","GradeList","BookingListFeedback","BookingCardMenu","BookingCardIdLabel","profileImgSrc","runningLate","noteList","jsonObj","LateMins","hasCandidate","firstName","lastName","VLazy","cardClass","textGrey700","headerMetaData","mediumButton","formattedStartTime","formattedEndTime","captionBold","replacingStaffName","cardOptions","BaseDropdownMenu","warning200","blue200","iconColor","iconHoverColor","warning","getName","hasName","unapproved","Open","person","VSheet","loadingCount","sm","md","showBookingCardV2","xl","dashboardLayout","handleLayoutChange","layoutToggle","layoutChanged","preSelect","LayoutFilter","setDashboardLayout","VSkeletonLoader","group","rows","compMockBookingData","mockDataArray","mockBooking","groups","BookingCardListSkeletonLoader","BookingListGroupSkeleton","LayoutToggle","BookingSummaryEmptyDayBlock","BookingSummaryList","BookingSummaryCardList","BookingSummaryLayoutToggle","BookingSummarySkeletonLoader","accordionClientIdList","getOverviewTotalBookingsCountByDay","SKELTON_LOADER_LIMIT","bookingsCountOnSelectedDay","selectedDayHasBooking","expandAllPanels","newAccordionList","expandPanelsInClientIdList","panelFound","VExpansionPanel","VExpansionPanelContent","VExpansionPanelHeader","VExpansionPanels","Layout","CandidateZoom","BookingDateStrip","ReplaceMeBanner","TheDashboardNavigation","CancelBookingDialog","DashboardFillRateStats","ClientFillRateFilter","BookingSummaryContainer","picker","selectedMonthYear","bookingSummary","bookingList","defaultTempBookingsForLoader","FillRateFilterType","user","hasCreateBookingPermissionForAtleastOneClientLocation","getClient","getClients","getPermission","getNodeHierarchyByIdAndLevel","getAllClientsLocationsWithPermission","isLoadingBookingSummary","hasLocationBookingPermission","hasLocationPendingApprovalPermission","hasClientBookingPermission","hasClientPendingApprovalPermission","hasPermissionRegardlessOfLevel","isClientGroupOverviewEnabled","homeRefreshCount","clientLocationsWithBookings","tempClientLocationsWithBookings","bookingPosition","blockDetails","totalCount","bookingsCount","quotes","random","initFillRateStats","canViewBookings","newVal","initBookingSummaryData","toISOString","substr","loadBookingsByClientAndDate","getOverviewSummaryBookingViewModels","bookingVM","formatKey","comparisonDate","getComparisonDate","accumulator","openBookingsCount","calcFillRateStats","bookingData","clients","clientsAndLocationsWithPerms","mapBookingsToLocation","tempClientWithLocations","initPickerDate","fillWithTemp","dayjsObject","orderBookings","errorMessage","message","small","BookingStatus","AGENCY_TOOK_TOO_LONG","UNABLE_TO_FILL","ANZUK_ERROR","CANDIDATE_ILLNESS","LAPSED","DELETED_FROM_GROUP_BOOKING","CANCELLED","FINANCE_CANCELLED","REFUNDED","FRIDAY_INVOICE","ECH_INVOICING_READY","ECH_NOT_APPROVED","SCHOOL_NOT_APPROVED","CLIENT_SUBMITTED_TIMESHEET_NO_CHANGES","CLIENT_SUBMITTED_TIMESHEET_MODIFIED","CLIENT_SUBMITTED_TIMESHEET_DID_NOT_HAPPEN","CANDIDATE_SUBMITTED_TIMESHEET_NO_CHANGES","CANDIDATE_SUBMITTED_TIMESHEET_MODIFIED","CANDIDATE_SUBMITTED_TIMESHEET_DID_NOT_HAPPEN","TIMESHEET_DISPUTE_OR_MISMATCH","ACTIVE_WITHOLD_PAY","ACTIVE_LAPSED","TENTATIVE_FILLED","AGENCY_MOVED_CLIENT","EXPORTED_TO_BULLHORN_NZ","PARTIAL_BULLHORN_EXPORT","TRAINING","OTHER","CANCELLED_BY_CLIENT","BOOKING_PENDING_REQUIRES_CLIENT_APPROVAL","CLIENT_REJECTED_BOOKING_REQUEST","candidateModifiedOrDidNotHappenBookingsStatuses","hasCandidateModifiedBookingOrStatedDidNotHappen","autoGrow","noResize","rowHeight","validator","defaultMenuProps","offsetOverflow","allowOverflow","autoSelectFirst","itemText","queryText","hideNoData","menuProps","noFilter","searchInput","lazySearch","selectedIndex","selectedItems","hideSelected","filteredItems","hasItem","selectedItem","getText","internalSearch","allItems","searchIsDirty","multiple","hasDisplayedItems","valueComparator","activateMenu","preSelectedItem","keyCode","curIndex","curItem","getDisabled","lastIndex","nextIndex","nextItem","autocomplete","slot","hasSlot","isAppendInner","deleteCurrentItem","setSearch","selectedValues","currentItem","currentItemText","ripple","disableIconRotate","expandIcon","hideActions","hasMousedown","tabindex","mousedown","mouseup","content","nextIsActive","vm"],"mappings":"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","file":"js/chunk-02aca6e1.882888c7.js","sourcesContent":["// Styles\nimport './VExpansionPanel.sass'\n\n// Components\nimport { BaseItemGroup, GroupableInstance } from '../VItemGroup/VItemGroup'\nimport VExpansionPanel from './VExpansionPanel'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\ninterface VExpansionPanelInstance extends InstanceType {}\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-expansion-panels',\n\n provide (): object {\n return {\n expansionPanels: this,\n }\n },\n\n props: {\n accordion: Boolean,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n focusable: Boolean,\n inset: Boolean,\n popout: Boolean,\n readonly: Boolean,\n tile: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-expansion-panels': true,\n 'v-expansion-panels--accordion': this.accordion,\n 'v-expansion-panels--flat': this.flat,\n 'v-expansion-panels--hover': this.hover,\n 'v-expansion-panels--focusable': this.focusable,\n 'v-expansion-panels--inset': this.inset,\n 'v-expansion-panels--popout': this.popout,\n 'v-expansion-panels--tile': this.tile,\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('expand')) {\n breaking('expand', 'multiple', this)\n }\n\n /* istanbul ignore next */\n if (\n Array.isArray(this.value) &&\n this.value.length > 0 &&\n typeof this.value[0] === 'boolean'\n ) {\n breaking(':value=\"[true, false, true]\"', ':value=\"[0, 2]\"', this)\n }\n },\n\n methods: {\n updateItem (item: GroupableInstance & VExpansionPanelInstance, index: number) {\n const value = this.getValue(item, index)\n const nextValue = this.getValue(item, index + 1)\n\n item.isActive = this.toggleMethod(value)\n item.nextIsActive = this.toggleMethod(nextValue)\n },\n },\n})\n","// TODO: Create i10n for reason names\nexport const ReasonsForAbsence = Object.freeze([\n {\n id: 'Not Provided',\n name: 'Not Provided',\n },\n {\n id: 'Sick Leave Cover',\n name: 'Sick Leave Cover (Formerly Sickness)',\n },\n {\n id: 'Professional Development',\n name: 'Professional Development',\n },\n {\n id: 'Annual Leave Cover',\n name: 'Annual Leave Cover (Formerly Leave)',\n },\n {\n id: 'Break Cover',\n name: 'Break Cover',\n },\n {\n id: 'Vacant Position',\n name: 'Vacant Position',\n },\n {\n id: 'Training Cover',\n name: 'Training Cover',\n },\n {\n id: 'Government Funding',\n name: 'Government Funding',\n },\n {\n id: 'Rostered Day Off',\n name: 'Rostered Day Off',\n },\n {\n id: \"Carer's Leave\",\n name: \"Carer's Leave\",\n },\n {\n id: 'Long Service Leave',\n name: 'Long Service Leave',\n },\n {\n id: 'F&P Testing',\n name: 'F&P Testing',\n },\n {\n id: 'Professional Practice Day',\n name: 'Professional Practice Day',\n },\n {\n id: 'Other',\n name: 'Other',\n },\n])\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-candidate-dropdown.vue?vue&type=style&index=0&id=2b4e43b2&scoped=true&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-summary.vue?vue&type=style&index=0&id=deb6e05a&scoped=true&lang=scss&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list.vue?vue&type=style&index=0&id=2e380c90&lang=scss&scoped=true&\"","// Components\nimport VExpansionPanel from './VExpansionPanel'\nimport { VExpandTransition } from '../transitions'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-content', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n expansionPanel: InstanceType\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-content',\n\n data: () => ({\n isActive: false,\n }),\n\n computed: {\n parentIsActive (): boolean {\n return this.expansionPanel.isActive\n },\n },\n\n watch: {\n parentIsActive: {\n immediate: true,\n handler (val, oldVal) {\n if (val) this.isBooted = true\n\n if (oldVal == null) this.isActive = val\n else this.$nextTick(() => this.isActive = val)\n },\n },\n },\n\n created () {\n this.expansionPanel.registerContent(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterContent()\n },\n\n render (h): VNode {\n return h(VExpandTransition, this.showLazyContent(() => [\n h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-content',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }), [\n h('div', { class: 'v-expansion-panel-content__wrap' }, getSlot(this)),\n ]),\n ]))\n },\n})\n","export const BookingCommentType = Object.freeze({\n /**\n * Private comments - Shouldn't be shown to candidates (ShortTerm.ClientNotes)\n */\n PRIVATE: 'Private',\n /**\n * Candidate comments - Public comments that can be shown to candidates (ShortTerm.Notes)\n */\n CANDIDATE: 'Candidate',\n /**\n * Contact comments - Contains the room number when submitted by template is required by location (ShortTerm.ContactNotes)\n */\n CONTACT: 'Contact',\n /**\n * Indicates that the candidate is late. Will contain a json object with lateMins to indicate how many minutes late the candidate is.\n */\n LATE: 'LATE',\n})\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\n },\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',[_c('div',{class:[_vm.isMediumOrLower ? '' : 'd-flex justify-space-between']},[_c('BasePageTitle',{attrs:{\"title\":_vm.compTitle,\"subtitle\":_vm.displayRandomSubtitleGreeting,\"subtitle-on-top\":\"\"}}),(_vm.isClientGroupOverviewEnabled)?_c('div',{class:[\n _vm.isMediumOrLower ? 'align-start mb-4' : 'align-center',\n 'd-flex flex-column' ]},[(_vm.stats)?_c('DashboardFillRateStats',{attrs:{\"stats\":_vm.stats}}):_vm._e(),_c('ClientFillRateFilter',{attrs:{\"filter\":_vm.fillRateFilterType,\"options\":_vm.generateFillRateFilterOptions()},on:{\"filterChanged\":_vm.filterChanged}})],1):_vm._e()],1),_c('v-row',[_c('v-col',{class:_vm.isMobileViewPort ? 'px-0 mx-0' : '',attrs:{\"cols\":\"12\",\"md\":\"12\",\"lg\":\"12\"}},[_c('ReplaceMeBanner',{on:{\"refreshData\":_vm.refreshDashboardBookingData}}),(_vm.canViewBookings)?_c('v-sheet',{staticClass:\"transparent\",class:_vm.isMobileViewPort ? 'px-0 mx-0' : '',attrs:{\"elevation\":\"0\"}},[_c('div',{class:_vm.isMobileViewPort ? 'px-0 mx-0' : ''},[_c('BookingDateStrip',{attrs:{\"refresh-data\":_vm.refreshSummaryData,\"selected-day\":_vm.selectedDay},on:{\"refreshComplete\":function($event){_vm.refreshSummaryData = false},\"dateSelected\":_vm.changeDay,\"monthChanged\":_vm.monthChanged,\"yearChanged\":_vm.yearChanged}}),_c('BookingSummaryContainer',{attrs:{\"bookings\":_vm.compBookings,\"loading\":_vm.isLoading,\"selected-day\":_vm.selectedDay},on:{\"viewTodaysBookings\":_vm.viewTodaysBookings,\"viewCandidate\":_vm.showCandidateDialog,\"cancelBooking\":_vm.openCancelBookingDialog}})],1)]):_c('TheDashboardNavigation')],1)],1),(_vm.showCandidateModal)?_c('v-dialog',{attrs:{\"width\":\"720px\",\"content-class\":\"rounded-xl\"},model:{value:(_vm.showCandidateModal),callback:function ($$v) {_vm.showCandidateModal=$$v},expression:\"showCandidateModal\"}},[_c('CandidateZoom',{attrs:{\"id\":_vm.selectedCandidate},on:{\"closeModal\":_vm.closeCandidateDialog}})],1):_vm._e(),(_vm.showCancelBookingDialog)?_c('CancelBookingDialog',{attrs:{\"show\":_vm.showCancelBookingDialog,\"booking\":_vm.bookingToCancel},on:{\"closeModal\":_vm.closeCancelBookingDialog,\"closeModalAndRefresh\":_vm.closeCancelBookingDialogAndRefresh}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{class:[_vm.isSmallOrLower ? '' : 'ml-n3']},[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.changeYear(_vm.year - 1)}}},[_c('v-icon',[_vm._v(\"mdi-chevron-left\")])],1),_vm._v(\" \"+_vm._s(_vm.year)+\" \"),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.changeYear(_vm.year + 1)}}},[_c('v-icon',[_vm._v(\"mdi-chevron-right\")])],1)],1),_c('DateStrip',{attrs:{\"bookings\":_vm.bookingOverview,\"year\":_vm.year,\"selected-day\":_vm.selectedDay ? _vm.selectedDay.format('YYYY-MM-DD') : _vm.getToday()},on:{\"monthChanged\":_vm.changeMonth,\"dateSelected\":_vm.dateSelected}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"dateStrip\"},[_c('div',{staticClass:\"yearMonth\"},[_c('div',{staticClass:\"month\"},[_c('v-slide-group',{class:[_vm.isMobileViewPort ? 'mx-0 mx-n2' : '', 'py-4'],attrs:{\"value\":_vm.selectedSliderMonth,\"center-active\":\"\",\"show-arrows\":\"\",\"mandatory\":\"\"},on:{\"change\":_vm.monthChanged}},_vm._l((_vm.returnMonthsArray),function(x,index){return _c('v-slide-item',{key:'bookingstrip_months_' + index,staticStyle:{\"flex-basis\":\"0\",\"flex-grow\":\"1\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar active = ref.active;\nvar toggle = ref.toggle;\nreturn [_c('v-btn',{class:[\n 'mb-2',\n _vm.isCurrentMonth(index) ? 'border border--blue' : '',\n active ? 'border--white custom-elevation' : '' ],attrs:{\"text\":!active,\"color\":\"blue\",\"dark\":\"\"},on:{\"click\":toggle}},[_vm._v(_vm._s(x.displayString))])]}}],null,true)})}),1)],1)]),_c('div',{staticClass:\"days\"},[_c('v-slide-group',{class:[_vm.isMobileViewPort ? 'mr-0 mx-n2' : 'mx-n3', 'py-4'],attrs:{\"center-active\":\"\",\"show-arrows\":\"\",\"mandatory\":\"\"},model:{value:(_vm.selectedSliderDay),callback:function ($$v) {_vm.selectedSliderDay=$$v},expression:\"selectedSliderDay\"}},_vm._l((_vm.returnDaysArray),function(day,index){return _c('v-slide-item',{key:'bookingstrip_' + _vm.year + '_' + index,staticClass:\"date-strip--group-item\"},[_c('DateStripDay',{attrs:{\"selected\":_vm.isSelected(day.dateObject),\"day\":day,\"counter\":_vm.numberOfBookings(day)},on:{\"handle-click\":_vm.handleDayClick}})],1)}),1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center\"},[_c('v-card',{class:[\n _vm.selected\n ? 'blue white--text custom-elevation'\n : 'elevation-0 overflow-hidden',\n _vm.isToday ? 'border border--blue' : '',\n 'text-center rounded-lg transparent mb-2 py-3 px-1' ],attrs:{\"title\":_vm.compTitle},on:{\"click\":_vm.clickedDay}},[_c('div',{class:[_vm.isWeekend ? 'opacity-5' : '', '']},[_c('div',{staticClass:\"day-name caption\"},[_vm._v(\" \"+_vm._s(_vm.day.displayStringDayName)+\" \")]),_c('div',{staticClass:\"day-number text-h6 font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.day.displayString)+\" \")])])]),(_vm.counter)?_c('div',{staticClass:\"day-nbookings\"},[_c('v-badge',{staticClass:\"font-weight-light\",attrs:{\"bottom\":\"\",\"content\":_vm.counter,\"inline\":\"\"}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./date-strip-day.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./date-strip-day.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./date-strip-day.vue?vue&type=template&id=4ba3524c&\"\nimport script from \"./date-strip-day.vue?vue&type=script&lang=js&\"\nexport * from \"./date-strip-day.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VCard } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VBadge,VCard})\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./date-strip.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./date-strip.vue?vue&type=script&lang=js&\"","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\nimport { VNode, ScopedSlotChildren } from 'vue/types/vnode'\n\n/* @vue/component */\nexport const BaseItem = Vue.extend({\n props: {\n activeClass: String,\n value: {\n required: false,\n },\n },\n\n data: () => ({\n isActive: false,\n }),\n\n methods: {\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (): VNode {\n if (!this.$scopedSlots.default) {\n consoleWarn('v-item is missing a default scopedSlot', this)\n\n return null as any\n }\n\n let element: VNode | ScopedSlotChildren\n\n /* istanbul ignore else */\n if (this.$scopedSlots.default) {\n element = this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle,\n })\n }\n\n if (Array.isArray(element) && element.length === 1) {\n element = element[0]\n }\n\n if (!element || Array.isArray(element) || !element.tag) {\n consoleWarn('v-item should only contain a single element', this)\n\n return element as any\n }\n\n element.data = this._b(element.data || {}, element.tag!, {\n class: { [this.activeClass]: this.isActive },\n })\n\n return element\n },\n})\n\nexport default mixins(\n BaseItem,\n GroupableFactory('itemGroup', 'v-item', 'v-item-group')\n).extend({\n name: 'v-item',\n})\n","// Extensions\nimport { BaseItem } from '../VItemGroup/VItem'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n BaseItem,\n GroupableFactory('slideGroup')\n /* @vue/component */\n).extend({\n name: 'v-slide-item',\n})\n","import { render, staticRenderFns } from \"./date-strip.vue?vue&type=template&id=8059c788&\"\nimport script from \"./date-strip.vue?vue&type=script&lang=js&\"\nexport * from \"./date-strip.vue?vue&type=script&lang=js&\"\nimport style0 from \"./date-strip.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VSlideGroup } from 'vuetify/lib/components/VSlideGroup';\nimport { VSlideItem } from 'vuetify/lib/components/VSlideGroup';\ninstallComponents(component, {VBtn,VSlideGroup,VSlideItem})\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-date-strip.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-date-strip.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-date-strip.vue?vue&type=template&id=6aa7f1d2&\"\nimport script from \"./booking-date-strip.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-date-strip.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"600\",\"persistent\":_vm.isLoadingCancelBooking},on:{\"input\":function($event){return _vm.$emit('closeModal')}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',{attrs:{\"id\":\"cancel-booking-dialog\"}},[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.compTitle)+\" \")]),(_vm.canCancelBooking)?_c('v-card-text',[_c('v-textarea',{ref:\"cancelBookingFormReason\",attrs:{\"id\":\"cancel-booking-form__reason\",\"name\":\"cancelReason\",\"label\":_vm.compInputLabel,\"required\":\"\"},model:{value:(_vm.payload.cancelReason),callback:function ($$v) {_vm.$set(_vm.payload, \"cancelReason\", $$v)},expression:\"payload.cancelReason\"}})],1):_c('v-card-text',{staticClass:\"cancel-booking-dialog__unable-to-cancel-section\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.unableToCancelDescription)+\" \")]),(_vm.compReasonForBeingUnableToCancel)?_c('div',[_c('span',{staticClass:\"caption\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.cancelBookingUnableReasonLabel'))+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.compReasonForBeingUnableToCancel)+\" \")])]):_vm._e(),(_vm.owner)?_c('div',[_c('span',{staticClass:\"caption\"},[_vm._v(\" \"+_vm._s(_vm.compConsultantLabel)+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.ownerName)+\" \"),_c('a',{attrs:{\"title\":(\"tel:\" + _vm.ownerPhone),\"href\":(\"tel:\" + _vm.ownerPhone)}},[_vm._v(\" \"+_vm._s(_vm.ownerPhone)+\" \")])])]):_vm._e()]),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"disabled\":_vm.isLoadingCancelBooking},on:{\"click\":function($event){return _vm.$emit('closeModal')}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.close'))+\" \")]),_c('v-btn',{attrs:{\"id\":\"cancel-booking-dialog__submit-btn\",\"disabled\":_vm.isSubmitButtonDisabled,\"color\":\"red\",\"text\":\"\",\"loading\":_vm.isLoadingCancelBooking},on:{\"click\":_vm.submit}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.cancelBookingBtn'))+\" \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cancel-booking-dialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cancel-booking-dialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cancel-booking-dialog.vue?vue&type=template&id=2c06ce1f&\"\nimport script from \"./cancel-booking-dialog.vue?vue&type=script&lang=js&\"\nexport * from \"./cancel-booking-dialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VSpacer,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isReplaceMeEnabled && _vm.statusCheckSuccess)?_c('article',[_c('v-alert',{staticClass:\"rounded-xl px-5 py-2\",attrs:{\"text\":\"\",\"color\":\"primary\",\"max-width\":\"fit-content\"}},[(!_vm.isLoadingReplaceMeStatusCheck)?_c('v-card',{staticClass:\"transparent blue--text pa-0 ma-0\",attrs:{\"elevation\":\"0\"}},[_c('header',{staticClass:\"align-center\"},[_c('v-card-text',{class:[\n !_vm.isMobileViewPort ? 'subtitle-1' : '',\n 'blue--text align-center mt-2 pt-0' ]},[_vm._v(\" \"+_vm._s(_vm.$t('replaceMe.bannerTitle'))+\", \"+_vm._s(_vm.$t('replaceMe.bannerSubtitle'))+\" \")])],1),_c('v-card-text',{class:[\n !_vm.isMobileViewPort\n ? 'd-flex flex-wrap align-center'\n : 'd-flex flex-wrap flex-column',\n 'pt-0 mt-0' ]},[_c('v-tooltip',{attrs:{\"disabled\":_vm.isTodayActive,\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({class:_vm.isTodayActive ? '' : 'cursor-not-allowed',attrs:{\"id\":\"replace-me-banner__today-btn-container\"}},'div',attrs,false),on),[_c('v-btn',{class:(_vm.isMobileViewPort ? 'mb-4' : '', 'custom-elevation'),attrs:{\"id\":\"replace-me-banner__today-btn\",\"large\":\"\",\"outlined\":\"\",\"color\":\"blue\",\"block\":\"\",\"disabled\":!_vm.isTodayActive},on:{\"click\":_vm.todaySelected}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.compTodayIcon)+\" \")]),_c('p',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.compTodayText)+\" \")])],1)],1)]}}],null,false,3636846)},[_c('span',[_vm._v(\" \"+_vm._s(_vm.compTodayTooltipText)+\" \")])]),(!_vm.isMobileViewPort)?_c('p',{staticClass:\"mb-0 mx-4 subtitle-2 blue--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('replaceMe.bannerBtnSeparatorText'))+\" \")]):_vm._e(),_c('v-tooltip',{attrs:{\"disabled\":_vm.isTomorrowActive,\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [(!_vm.isMobileViewPort)?_c('div',_vm._g(_vm._b({class:_vm.isTomorrowActive ? '' : 'cursor-not-allowed',attrs:{\"id\":\"replace-me-banner__tomorrow-btn-container\"}},'div',attrs,false),on),[_c('v-btn',{staticClass:\"d-flex flex-rows white--text custom-elevation\",attrs:{\"id\":\"replace-me-banner__tomorrow-btn\",\"color\":\"blue\",\"large\":\"\",\"block\":\"\",\"disabled\":!_vm.isTomorrowActive},on:{\"click\":_vm.tomorrowSelected}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.compTomorrowIcon)+\" \")]),_c('p',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.compTomorrowText)+\" \")])],1)],1):_vm._e()]}}],null,false,3781399173)},[_c('span',[_vm._v(\" \"+_vm._s(_vm.compTomorrowTooltipText)+\" \")])])],1)],1):_vm._e()],1),_c('v-dialog',{attrs:{\"persistent\":\"\",\"max-width\":\"600\"},model:{value:(_vm.showReplaceMeDialog),callback:function ($$v) {_vm.showReplaceMeDialog=$$v},expression:\"showReplaceMeDialog\"}},[_c('ReplaceMeForm',{attrs:{\"payload\":_vm.payload},on:{\"closeModal\":_vm.closeModal}})],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_vm._v(_vm._s(_vm.$t('replaceMe.formTitle')))]),_c('v-card-text',[_c('v-form',{ref:\"replaceMeForm\",attrs:{\"lazy-validation\":\"\",\"autocomplete\":\"off\"},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('p',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('replaceMe.formLocationSelectQuestionText', { selectedDay: _vm.compSelectedDay, }))+\" \")]),(_vm.locations.length > 1)?_c('v-select',{ref:\"replace-me-form__location-select\",attrs:{\"id\":\"replace-me-form__location-select\",\"label\":_vm.$t('bookingCreate.formLocationTitle'),\"items\":_vm.locations,\"item-text\":\"locationName\",\"item-value\":\"locationId\",\"hint\":_vm.$t('replaceMe.formLocationSelectInputHint'),\"persistent-hint\":\"\",\"rules\":[_vm.rules.required]},model:{value:(_vm.payload.locationId),callback:function ($$v) {_vm.$set(_vm.payload, \"locationId\", $$v)},expression:\"payload.locationId\"}}):_c('v-text-field',{ref:\"replace-me-form__location-select\",attrs:{\"id\":\"replace-me-form__location-select\",\"label\":_vm.$t('bookingCreate.formLocationTitle'),\"readonly\":\"\",\"value\":_vm.selectedLocationsName}}),_c('p',{staticClass:\"mb-0 mt-6-\"},[_vm._v(\" \"+_vm._s(_vm.$t('replaceMe.formReasonSelectQuestionText', { selectedDay: _vm.compSelectedDay, }))+\" \")]),_c('v-select',{ref:\"replace-me-form__reason-select\",attrs:{\"id\":\"replace-me-form__reason-select\",\"label\":((_vm.$t('bookingCreate.formReasonInputLabel')) + \" *\"),\"items\":_vm.reasons,\"item-text\":\"name\",\"item-value\":\"id\",\"rules\":[_vm.rules.required]},model:{value:(_vm.payload.reasonForAbsence),callback:function ($$v) {_vm.$set(_vm.payload, \"reasonForAbsence\", $$v)},expression:\"payload.reasonForAbsence\"}}),_c('p',{staticClass:\"mb-0 mt-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('replaceMe.formDutiesQuestionText'))+\" \")]),_c('v-autocomplete',{ref:\"replace-me-form__grade-select\",attrs:{\"id\":\"replace-me-form__grade-select\",\"label\":((_vm.$t('replaceMe.formSelectGradesInputLabel')) + \" *\"),\"items\":_vm.gradesList,\"item-text\":\"title\",\"item-value\":\"id\",\"multiple\":\"\",\"loading\":_vm.isLoadingGrades,\"chips\":\"\",\"small-chips\":\"\",\"rules\":[_vm.rules.requiredWithAtleastOneItemSelected]},model:{value:(_vm.payload.subjectList),callback:function ($$v) {_vm.$set(_vm.payload, \"subjectList\", $$v)},expression:\"payload.subjectList\"}}),_c('v-text-field',{attrs:{\"id\":\"replace-me-form__room-input\",\"label\":((_vm.$t('bookingCreate.formRoomInputLabel')) + \" *\"),\"rules\":[_vm.rules.required]},model:{value:(_vm.payload.room),callback:function ($$v) {_vm.$set(_vm.payload, \"room\", $$v)},expression:\"payload.room\"}}),_c('p',{staticClass:\"mb-0 mt-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('replaceMe.formNotesQuestionText'))+\" \")]),_c('v-textarea',{ref:\"replace-me-form__notes-input\",attrs:{\"id\":\"replace-me-form__notes-input\",\"name\":\"notes\",\"label\":_vm.$t('bookingCreate.formNotesInputLabel'),\"auto-grow\":\"\",\"rows\":\"1\"},model:{value:(_vm.payload.additionalNotes),callback:function ($$v) {_vm.$set(_vm.payload, \"additionalNotes\", $$v)},expression:\"payload.additionalNotes\"}})],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"id\":\"replace-me-form__cancel-btn\",\"large\":\"\",\"text\":\"\",\"disabled\":_vm.isLoading},on:{\"click\":function($event){return _vm.close(false)}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.cancel'))+\" \")]),_c('v-btn',{attrs:{\"id\":\"replace-me-form__submit-btn\",\"disabled\":!_vm.isValid,\"loading\":_vm.isLoading,\"large\":\"\",\"color\":\"blue\",\"text\":\"\"},on:{\"click\":_vm.submit}},[_vm._v(\" \"+_vm._s(_vm.$t('general.submit'))+\" \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./replace-me-form.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./replace-me-form.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./replace-me-form.vue?vue&type=template&id=09eeb1af&\"\nimport script from \"./replace-me-form.vue?vue&type=script&lang=js&\"\nexport * from \"./replace-me-form.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAutocomplete } from 'vuetify/lib/components/VAutocomplete';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VAutocomplete,VBtn,VCard,VCardActions,VCardText,VCardTitle,VDivider,VForm,VSelect,VSpacer,VTextField,VTextarea})\n","import { ReasonsForAbsence } from '@/shared/constants/booking/ReasonsForAbsence'\n\nexport default function(\n payload,\n selectedDay,\n isNextMonday,\n firstAccessibleLocation\n) {\n return {\n selectedDay,\n isNextMonday,\n reasonForAbsence: payload?.reasonForAbsence\n ? payload?.reasonForAbsence\n : ReasonsForAbsence[0].id, // Default: Not Provided\n room: payload?.room ? payload?.room : '',\n additionalNotes: payload?.additionalNotes ? payload?.additionalNotes : '',\n locationId: firstAccessibleLocation?.locationId,\n classification: payload?.classification ? payload?.classification : null,\n subjectList: payload?.subjectList ? payload?.subjectList : [],\n }\n}\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./replace-me-banner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./replace-me-banner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./replace-me-banner.vue?vue&type=template&id=b17bcc7a&\"\nimport script from \"./replace-me-banner.vue?vue&type=script&lang=js&\"\nexport * from \"./replace-me-banner.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardText,VDialog,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"transparent ma-0 pa-0\",attrs:{\"elevation\":\"0\"}},[_c('v-card-text',{staticClass:\"ma-0 pa-0\"},[_c('v-row',_vm._l((_vm.filteredNavItems),function(item){return _c('v-col',{key:((item.key) + \"-dashboard\"),attrs:{\"cols\":\"12\",\"xs\":\"6\",\"sm\":\"6\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('theDashboardNavigationItem',{attrs:{\"payload\":item,\"is-active\":_vm.isActiveNavItem(item.to)}})],1)}),1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"custom-elevation rounded-xl d-flex flex-column justify-center align-center pa-4 overflow-hidden text-center\",attrs:{\"height\":\"100%\",\"to\":_vm.payload.to}},[_c('v-card-title',{staticClass:\"mb-1\"},[_c('v-icon',{attrs:{\"color\":_vm.isActive ? 'blue' : '',\"x-large\":\"\"}},[_vm._v(_vm._s(_vm.payload.icon))])],1),_c('v-card-actions',[_c('header',{staticClass:\"grow\"},[_c('p',{class:[\n 'subtitle-1 font-weight-medium',\n _vm.isActive ? 'blue--text' : '' ]},[_vm._v(\" \"+_vm._s(_vm.payload.title)+\" \")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./the-dashboard-navigation-item.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./the-dashboard-navigation-item.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./the-dashboard-navigation-item.vue?vue&type=template&id=b837a158&\"\nimport script from \"./the-dashboard-navigation-item.vue?vue&type=script&lang=js&\"\nexport * from \"./the-dashboard-navigation-item.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VCard,VCardActions,VCardTitle,VIcon})\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./the-dashboard-navigation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./the-dashboard-navigation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./the-dashboard-navigation.vue?vue&type=template&id=7aa85b94&\"\nimport script from \"./the-dashboard-navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./the-dashboard-navigation.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardText,VCol,VRow})\n","/**\n * Breakdown of booking status values to populate the stats UI\n */\nexport default class OverviewStatsDto {\n constructor({ openBookings = 0, totalBookings = 0 } = {}) {\n /**\n * Number of bookings filled\n * @type {Number}\n */\n this.filled = totalBookings - openBookings\n\n /**\n * Number of total bookings\n * @type {Number}\n */\n this.totalBookings = totalBookings\n\n /**\n * Number of unfilled bookings\n * @type {Number}\n */\n this.unfilled = openBookings\n\n const displayNA = openBookings === 0 && totalBookings === 0\n\n const percentage = (this.filled / totalBookings) * 100\n const skipRounding = percentage <= 0 || isNaN(percentage)\n\n let fillRate = skipRounding ? 0 : Math.round(percentage)\n\n if (displayNA) {\n fillRate = -1\n }\n\n /**\n * Percentage of bookings filled\n * @type {Number}\n */\n this.fillRate = fillRate\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex justify-end align-center\"},[_c('div',{staticClass:\"text-center\"},[_c('header',{staticClass:\"caption\"},[_vm._v(\" \"+_vm._s(_vm.$t('clientGroupOverview.stats.totalFilledLabel'))+\" \")]),_c('p',{staticClass:\"text-h4 mb-0 text-center\"},[_vm._v(_vm._s(_vm.compFilledBookings))])]),_c('div',{staticClass:\"text-center ml-8\"},[_c('header',{staticClass:\"caption\"},[_vm._v(\" \"+_vm._s(_vm.$t('clientGroupOverview.stats.totalOpenLabel'))+\" \")]),_c('p',{staticClass:\"text-h4 mb-0 text-center\"},[_vm._v(_vm._s(_vm.compUnfilledBookings))])]),_c('div',{staticClass:\"text-center ml-8\"},[_c('header',{staticClass:\"caption\"},[_vm._v(\" \"+_vm._s(_vm.$t('clientGroupOverview.stats.totalBookingsLabel'))+\" \")]),_c('h4',{staticClass:\"text-h4 mb-0\"},[_vm._v(_vm._s(_vm.compTotalBookings))])]),_c('ClientGroupOverviewFillRateChart',{staticClass:\"ml-6 mt-4\",attrs:{\"overview-stats\":_vm.stats,\"width\":90,\"height\":90,\"cut-out\":35}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"d-flex align-center flex-column\"},[(_vm.hasStatsObject && _vm.chartData)?_c('Doughnut',{attrs:{\"width\":_vm.width,\"height\":_vm.height,\"chart-data\":_vm.chartData,\"chart-options\":_vm.options,\"plugins\":_vm.plugins}}):_c('div',{staticClass:\"d-flex flex-column justify-center text-center\",staticStyle:{\"width\":\"150px\",\"height\":\"150px\"}},[_c('p',{staticClass:\"text-h6\"},[_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"primary\"}},[_vm._v(\"mdi-alert-circle\")]),_vm._v(\" \"+_vm._s(_vm.$t('clientGroupOverview.stats.donut.noDataText'))+\" \")],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * Chart.js v3.8.0\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n while (obj && idx > pos) {\n obj = obj[key.slice(pos, idx)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n return obj;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { toFont as $, _rlookupByKey as A, _isPointInArea as B, getAngleFromPoint as C, toPadding as D, each as E, getMaximumSize as F, _getParentNode as G, HALF_PI as H, readUsedSize as I, throttled as J, supportsEventListenerOptions as K, _isDomSupported as L, log10 as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, toDegrees as S, TAU as T, _measureText as U, _int16Range as V, _alignPixel as W, clipArea as X, renderText as Y, unclipArea as Z, _arrayUnique as _, resolve as a, QUARTER_PI as a$, _toLeftRightCenter as a0, _alignStartEnd as a1, overrides as a2, merge as a3, _capitalize as a4, descriptors as a5, isFunction as a6, _attachContext as a7, _createResolver as a8, _descriptors as a9, _textX as aA, restoreTextDirection as aB, noop as aC, distanceBetweenPoints as aD, _setMinAndMaxByKey as aE, niceNum as aF, almostWhole as aG, almostEquals as aH, _decimalPlaces as aI, _longestText as aJ, _filterBetween as aK, _lookup as aL, isPatternOrGradient as aM, getHoverColor as aN, clone$1 as aO, _merger as aP, _mergerIf as aQ, _deprecated as aR, toFontString as aS, splineCurve as aT, splineCurveMonotone as aU, getStyle as aV, fontString as aW, toLineHeight as aX, PITAU as aY, INFINITY as aZ, RAD_PER_DEG as a_, mergeIf as aa, uid as ab, debounce as ac, retinaScale as ad, clearCanvas as ae, setsEqual as af, _elementsEqual as ag, _isClickEvent as ah, _isBetween as ai, _readValueToProps as aj, _updateBezierControlPoints as ak, _computeSegments as al, _boundSegments as am, _steppedInterpolation as an, _bezierInterpolation as ao, _pointInLine as ap, _steppedLineTo as aq, _bezierCurveTo as ar, drawPoint as as, addRoundedRectPath as at, toTRBL as au, toTRBLCorners as av, _boundSegment as aw, _normalizeAngle as ax, getRtlAdapter as ay, overrideTextDirection as az, isArray as b, TWO_THIRDS_PI as b0, _angleDiff as b1, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n","/*!\n * Chart.js v3.8.0\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as isNumber, w as _limitValue, x as _lookupByKey, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _isPointInArea, C as getAngleFromPoint, D as toPadding, E as each, F as getMaximumSize, G as _getParentNode, I as readUsedSize, J as throttled, K as supportsEventListenerOptions, L as _isDomSupported, M as log10, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as toDegrees, U as _measureText, V as _int16Range, W as _alignPixel, X as clipArea, Y as renderText, Z as unclipArea, $ as toFont, a0 as _toLeftRightCenter, a1 as _alignStartEnd, a2 as overrides, a3 as merge, a4 as _capitalize, a5 as descriptors, a6 as isFunction, a7 as _attachContext, a8 as _createResolver, a9 as _descriptors, aa as mergeIf, ab as uid, ac as debounce, ad as retinaScale, ae as clearCanvas, af as setsEqual, ag as _elementsEqual, ah as _isClickEvent, ai as _isBetween, aj as _readValueToProps, ak as _updateBezierControlPoints, al as _computeSegments, am as _boundSegments, an as _steppedInterpolation, ao as _bezierInterpolation, ap as _pointInLine, aq as _steppedLineTo, ar as _bezierCurveTo, as as drawPoint, at as addRoundedRectPath, au as toTRBL, av as toTRBLCorners, aw as _boundSegment, ax as _normalizeAngle, ay as getRtlAdapter, az as overrideTextDirection, aA as _textX, aB as restoreTextDirection, aC as noop, aD as distanceBetweenPoints, aE as _setMinAndMaxByKey, aF as niceNum, aG as almostWhole, aH as almostEquals, aI as _decimalPlaces, aJ as _longestText, aK as _filterBetween, aL as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type);\n const stacked = iScale.options.stacked;\n const ilen = metasets.length;\n const stacks = [];\n let i, item;\n for (i = 0; i < ilen; ++i) {\n item = metasets[i];\n if (!item.controller.options.grouped) {\n continue;\n }\n if (typeof dataIndex !== 'undefined') {\n const val = item.controller.getParsed(dataIndex)[\n item.controller._cachedMeta.vScale.axis\n ];\n if (isNullOrUndef(val) || isNaN(val)) {\n continue;\n }\n }\n if (stacked === false || stacks.indexOf(item.stack) === -1 ||\n\t\t\t\t(stacked === undefined && item.stack === undefined)) {\n stacks.push(item.stack);\n }\n if (item.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass ScatterController extends LineController {\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n }\n }\n return plugins;\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, plugins, options, all) {\n const result = [];\n const context = chart.getContext();\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, plugin, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, plugin, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n return config.createResolver(scopes, context, [''], {scriptable: false, indexable: false, allKeys: true});\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.8.0\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (source) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxWidth * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","import { Chart, BarController, DoughnutController, LineController, PieController, PolarAreaController, RadarController, BubbleController, ScatterController } from 'chart.js';\n\nvar ChartEmits;\n(function(ChartEmits) {\n ChartEmits[\"ChartRendered\"] = \"chart:rendered\";\n ChartEmits[\"ChartUpdated\"] = \"chart:updated\";\n ChartEmits[\"ChartDestroyed\"] = \"chart:destroyed\";\n ChartEmits[\"LabelsUpdated\"] = \"labels:updated\";\n})(ChartEmits || (ChartEmits = {}));\nfunction chartCreate(createChartFunction, chartData, chartOptions, context) {\n createChartFunction(chartData, chartOptions);\n if (context !== undefined) {\n context.emit(ChartEmits.ChartRendered);\n }\n}\nfunction chartUpdate(chart, context) {\n chart.update();\n if (context !== undefined) {\n context.emit(ChartEmits.ChartUpdated);\n }\n}\nfunction chartDestroy(chart, context) {\n chart.destroy();\n if (context !== undefined) {\n context.emit(ChartEmits.ChartDestroyed);\n }\n}\nfunction getChartData(data, datasetIdKey) {\n const nextData = {\n labels: typeof data.labels === \"undefined\" ? [] : [\n ...data.labels\n ],\n datasets: []\n };\n setChartDatasets(nextData, {\n ...data\n }, datasetIdKey);\n return nextData;\n}\nfunction setChartDatasets(oldData, newData, datasetIdKey) {\n const addedDatasets = [];\n oldData.datasets = newData.datasets.map((nextDataset)=>{\n // given the new set, find it's current match\n const currentDataset = oldData.datasets.find((dataset)=>dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n // There is no original to update, so simply add new one\n if (!currentDataset || !nextDataset.data || addedDatasets.includes(currentDataset)) {\n return {\n ...nextDataset\n };\n }\n addedDatasets.push(currentDataset);\n Object.assign(currentDataset, nextDataset);\n return currentDataset;\n });\n}\nfunction setChartLabels(chart, labels, context) {\n chart.data.labels = labels;\n if (context !== undefined) {\n context.emit(ChartEmits.LabelsUpdated);\n }\n}\nfunction setChartOptions(chart, options) {\n chart.options = {\n ...options\n };\n}\nfunction compareData(newData, oldData) {\n // Get new and old DataSet Labels\n const newDatasetLabels = newData.datasets.map((dataset)=>{\n return dataset.label;\n });\n const oldDatasetLabels = oldData.datasets.map((dataset)=>{\n return dataset.label;\n });\n // Check if Labels are equal and if dataset length is equal\n return oldData.datasets.length === newData.datasets.length && newDatasetLabels.every((value, index)=>value === oldDatasetLabels[index]\n );\n}\nconst templateError = \"Please remove the tags from your chart component. See https://vue-chartjs.org/guide/#vue-single-file-components\";\n\nconst ANNOTATION_PLUGIN_KEY = \"annotation\";\nfunction generateChart(chartId, chartType, chartController) {\n let _chartRef = null;\n return {\n props: {\n chartData: {\n type: Object,\n required: true\n },\n chartOptions: {\n type: Object,\n default: ()=>{}\n },\n datasetIdKey: {\n type: String,\n default: \"label\"\n },\n chartId: {\n type: String,\n default: chartId\n },\n width: {\n type: Number,\n default: 400\n },\n height: {\n type: Number,\n default: 400\n },\n cssClasses: {\n type: String,\n default: \"\"\n },\n styles: {\n type: Object,\n default: ()=>{}\n },\n plugins: {\n type: Array,\n default: ()=>[]\n }\n },\n data () {\n return {\n _chart: null\n };\n },\n computed: {\n hasAnnotationPlugin () {\n var ref, ref1;\n const pluginSettings = (ref = this.chartOptions) === null || ref === void 0 ? void 0 : (ref1 = ref.plugins) === null || ref1 === void 0 ? void 0 : ref1[ANNOTATION_PLUGIN_KEY];\n return typeof pluginSettings !== \"undefined\";\n }\n },\n created () {\n Chart.register(chartController);\n },\n mounted () {\n _chartRef = {\n current: null\n };\n if (\"datasets\" in this.chartData && this.chartData.datasets.length > 0) {\n chartCreate(this.renderChart, this.chartData, this.chartOptions);\n this.$emit(ChartEmits.ChartRendered);\n }\n },\n watch: {\n chartData: {\n handler: function(newValue, oldValue) {\n this.chartDataHandler(newValue, oldValue);\n },\n deep: true\n },\n chartOptions: {\n handler: function(newValue) {\n this.chartOptionsHandler(newValue);\n },\n deep: true\n }\n },\n methods: {\n renderChart (data, options) {\n const currentChart = this.getCurrentChart();\n if (currentChart !== null) {\n chartDestroy(currentChart);\n this.$emit(ChartEmits.ChartDestroyed);\n }\n if (!this.$refs.canvas) {\n throw new Error(templateError);\n } else {\n const chartData = getChartData(data, this.datasetIdKey);\n const canvasEl2DContext = this.$refs.canvas.getContext(\"2d\");\n if (canvasEl2DContext !== null) {\n this.setCurrentChart(new Chart(canvasEl2DContext, {\n type: chartType,\n data: chartData,\n options,\n plugins: this.plugins\n }));\n }\n }\n },\n chartDataHandler (newValue, oldValue) {\n const newData = {\n ...newValue\n };\n const oldData = {\n ...oldValue\n };\n const currentChart = this.getCurrentChart();\n if (Object.keys(oldData).length > 0) {\n const isEqualLabelsAndDatasetsLength = compareData(newData, oldData);\n if (isEqualLabelsAndDatasetsLength && currentChart !== null) {\n setChartDatasets(currentChart.data, newData, this.datasetIdKey);\n if (newData.labels !== undefined) {\n setChartLabels(currentChart, newData.labels);\n this.$emit(ChartEmits.LabelsUpdated);\n }\n this.updateChart();\n this.$emit(ChartEmits.ChartUpdated);\n } else {\n if (currentChart !== null) {\n chartDestroy(currentChart);\n this.$emit(ChartEmits.ChartDestroyed);\n }\n chartCreate(this.renderChart, this.chartData, this.chartOptions);\n this.$emit(ChartEmits.ChartRendered);\n }\n } else {\n if (currentChart !== null) {\n chartDestroy(currentChart);\n this.$emit(ChartEmits.ChartDestroyed);\n }\n chartCreate(this.renderChart, this.chartData, this.chartOptions);\n this.$emit(ChartEmits.ChartRendered);\n }\n },\n chartOptionsHandler (options) {\n const currentChart = this.getCurrentChart();\n if (currentChart !== null) {\n setChartOptions(currentChart, options);\n this.updateChart();\n } else {\n chartCreate(this.renderChart, this.chartData, this.chartOptions);\n }\n },\n updateChart () {\n const currentChart = this.getCurrentChart();\n chartUpdate(currentChart);\n },\n getCurrentChart () {\n return this.hasAnnotationPlugin ? _chartRef.current : this.$data._chart;\n },\n setCurrentChart (chart) {\n this.hasAnnotationPlugin ? _chartRef.current = chart : this.$data._chart = chart;\n }\n },\n beforeDestroy () {\n const currentChart = this.getCurrentChart();\n if (currentChart !== null) {\n chartDestroy(currentChart);\n this.$emit(ChartEmits.ChartDestroyed);\n }\n },\n render: function(createElement) {\n return createElement(\"div\", {\n style: this.styles,\n class: this.cssClasses\n }, [\n createElement(\"canvas\", {\n attrs: {\n id: this.chartId,\n width: this.width,\n height: this.height\n },\n ref: \"canvas\"\n })\n ]);\n }\n };\n}\n/** @type Object */ const Bar = /* #__PURE__ */ generateChart(\"bar-chart\", \"bar\", BarController);\n/** @type Object */ const Doughnut = /* #__PURE__ */ generateChart(\"doughnut-chart\", \"doughnut\", DoughnutController);\n/** @type Object */ const Line = /* #__PURE__ */ generateChart(\"line-chart\", \"line\", LineController);\n/** @type Object */ const Pie = /* #__PURE__ */ generateChart(\"pie-chart\", \"pie\", PieController);\n/** @type Object */ const PolarArea = /* #__PURE__ */ generateChart(\"polar-chart\", \"polarArea\", PolarAreaController);\n/** @type Object */ const Radar = /* #__PURE__ */ generateChart(\"radar-chart\", \"radar\", RadarController);\n/** @type Object */ const Bubble = /* #__PURE__ */ generateChart(\"bubble-chart\", \"bubble\", BubbleController);\n/** @type Object */ const Scatter = /* #__PURE__ */ generateChart(\"scatter-chart\", \"scatter\", ScatterController);\n\nexport { Bar, Bubble, Doughnut, Line, Pie, PolarArea, Radar, Scatter, generateChart };\n//# sourceMappingURL=index.js.map\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./client-group-overview-fill-rate-chart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./client-group-overview-fill-rate-chart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./client-group-overview-fill-rate-chart.vue?vue&type=template&id=c14281f4&\"\nimport script from \"./client-group-overview-fill-rate-chart.vue?vue&type=script&lang=js&\"\nexport * from \"./client-group-overview-fill-rate-chart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard-fill-rate-stats.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard-fill-rate-stats.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./dashboard-fill-rate-stats.vue?vue&type=template&id=17e846c2&\"\nimport script from \"./dashboard-fill-rate-stats.vue?vue&type=script&lang=js&\"\nexport * from \"./dashboard-fill-rate-stats.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-btn-toggle',{attrs:{\"value\":_vm.filter,\"group\":\"\",\"dense\":\"\",\"color\":\"primary\",\"mandatory\":\"\"},on:{\"change\":_vm.filterChanged}},_vm._l((!_vm.options ? _vm.defaultLayoutOptions : _vm.options),function(option){return _c('v-tooltip',{key:option.id,attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"rounded\",attrs:{\"id\":option.id,\"small\":\"\"}},'v-btn',attrs,false),on),[(_vm.hasIcon)?_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(option.icon))]):_vm._e(),(_vm.hasText)?_c('span',[_vm._v(_vm._s(option.text))]):_vm._e()],1)]}}],null,true)},[_c('span',{domProps:{\"textContent\":_vm._s(option.tooltip)}})])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./client-fill-rate-filter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./client-fill-rate-filter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./client-fill-rate-filter.vue?vue&type=template&id=015ac1a2&\"\nimport script from \"./client-fill-rate-filter.vue?vue&type=script&lang=js&\"\nexport * from \"./client-fill-rate-filter.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VBtnToggle } from 'vuetify/lib/components/VBtnToggle';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VBtnToggle,VIcon,VTooltip})\n","export default Object.freeze({\n /**\n * Will filter the fill rate stats by the selected month on the date strip\n */\n selectedMonth: 0,\n /**\n * Will filter the fill rate stats by the selected day on the date strip\n */\n selectedDate: 1,\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showEmptyDayBlock)?_c('BookingSummaryEmptyDayBlock',{attrs:{\"selected-date\":_vm.selectedDay},on:{\"viewTodaysBookings\":_vm.viewTodaysBookings}}):_c('div',[_c('div',{staticClass:\"my-4 d-flex justify-space-between align-center\"},[_c('BookingSummaryLayoutToggle'),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\",\"outlined\":\"\"},on:{\"click\":_vm.toggleAllExpansionPanels}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(_vm.expandAll ? 'mdi-collapse-all' : 'mdi-expand-all'))]),_vm._v(\" \"+_vm._s(_vm.compExpandBtnText))],1)],1),(!_vm.loading)?_c('v-expansion-panels',{attrs:{\"accordion\":\"\",\"flat\":\"\",\"multiple\":\"\",\"hover\":\"\"},model:{value:(_vm.accordion),callback:function ($$v) {_vm.accordion=$$v},expression:\"accordion\"}},_vm._l((_vm.bookings),function(client){return _c('v-expansion-panel',{key:client.clientId,staticClass:\"transparent\",on:{\"click\":function($event){return _vm.updateExpansionPanelState(client.clientId)}}},[_c('v-expansion-panel-header',[_vm._v(_vm._s(client.clientName))]),_c('v-expansion-panel-content',[(_vm.isTileLayout)?_c('BookingSummaryCardList',{attrs:{\"bookings\":client.locations},on:{\"viewCandidate\":_vm.viewCandidate,\"cancelBooking\":_vm.cancelBooking}}):_c('BookingSummaryList',{attrs:{\"bookings\":client.locations},on:{\"viewCandidate\":_vm.viewCandidate,\"cancelBooking\":_vm.cancelBooking}})],1)],1)}),1):_c('BookingSummarySkeletonLoader',{attrs:{\"count\":_vm.compBookingSummarySkeletonLoaderCount}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.day)?_c('v-card',{class:[\n 'transparent d-flex flex-column justify-center align-center text-center',\n _vm.isMobileViewPort ? '' : 'pa-8 mb-6' ],attrs:{\"elevation\":\"0\"}},[_c('v-card-title',[_c('v-icon',{staticClass:\"mb-5\",staticStyle:{\"font-size\":\"80px\"}},[_vm._v(\" \"+_vm._s(_vm.icon)+\" \")])],1),_c('v-card-title',[_c('h4',{class:[_vm.description ? 'mb-2' : '', 'font-weight-medium']},[_vm._v(_vm._s(_vm.title))])]),_c('v-card-text',[_c('p',{staticClass:\"ws-pre-wrap subtitle-1\"},[_vm._v(_vm._s(_vm.description))])]),_c('v-card-actions',[(\n !_vm.isPast || (_vm.isToday && _vm.hasAtLeastOneLocationNotPassedSameDayCutOff)\n )?_c('v-btn',{staticClass:\"custom-elevation white--text px-4\",attrs:{\"id\":\"booking-summary-empty-day-block_create-booking-btn\",\"color\":\"blue\",\"large\":\"\",\"to\":{\n name: 'bookings-create',\n query: { date: _vm.compDateForCreateBooking },\n }}},[_vm._v(\" \"+_vm._s(this.$t('booking.createBtn'))+\" \")]):(!_vm.isToday)?_c('v-btn',{staticClass:\"custom-elevation white--text px-4\",attrs:{\"id\":\"booking-summary-empty-day-block_jump-btn\",\"color\":\"blue\",\"outlined\":\"\",\"large\":\"\"},on:{\"click\":_vm.jumpToToday}},[_vm._v(\" \"+_vm._s(this.$t('booking.emptDayBlockJumpToTodayBtn'))+\" \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-arrow-right\")])],1):_vm._e()],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * ISO day of the week with 1 being Monday and 7 being Sunday https://day.js.org/docs/en/get-set/iso-weekday\n */\nexport const DayOfWeekIso = Object.freeze({\n MONDAY: 1,\n TUESDAY: 2,\n WEDNESDAY: 3,\n THURSDAY: 4,\n FRIDAY: 5,\n SATURDAY: 6,\n SUNDAY: 7,\n})\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-empty-day-block.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-empty-day-block.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-summary-empty-day-block.vue?vue&type=template&id=575d5c1e&\"\nimport script from \"./booking-summary-empty-day-block.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-summary-empty-day-block.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.bookings),function(location){return _c('div',{key:(\"booking-summary-card__location-\" + (location.locationId))},[_c('p',{staticClass:\"subtitle-2 font-weight-medium mt-4 mb-8\"},[_vm._v(\" \"+_vm._s(location.locationName)+\" \")]),_c('BookingList',{attrs:{\"bookings\":_vm.orderedBookings(location.bookings)},on:{\"viewCandidate\":_vm.viewCandidate,\"cancelBooking\":_vm.cancelBooking}})],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// eslint-disable-next-line no-unused-vars\nimport { BookingStatus } from './BookingStatus'\n\n/**\n * A booking status enum that simplifies the categorisation of bookings into more\n * meaningful and useful groups.\n */\nexport default Object.freeze({\n /**\n * A booking that requires approval from a privileged user.\n * Bookings created by a user that has the pending approval permission.\n * Translates to status: {@link BookingStatus.BOOKING_PENDING_REQUIRES_CLIENT_APPROVAL}\n */\n pendingApproval: 'pendingApproval',\n /**\n * A booking filled with a candidate and has been confirmed with the client and\n * is not tentative (status: {@link BookingStatus.TENTATIVE_FILLED}).\n */\n filled: 'filled',\n /**\n * A booking that is tentatively filled.\n * Translates to status: {@link BookingStatus.TENTATIVE_FILLED}\n */\n tentative: 'tentative',\n /**\n * Any booking that is not filled with a candidate and doesn't fit into any other\n * category\n */\n unfilled: 'unfilled',\n /**\n * The booking was pending approval by client and was rejected.\n * Translates to status: {@link BookingStatus.CLIENT_REJECTED_BOOKING_REQUEST}\n */\n rejected: 'rejected',\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-data-table',{staticClass:\"custom-elevation rounded-xl mb-8 booking-list-table\",attrs:{\"headers\":_vm.columns,\"items\":_vm.bookings,\"custom-sort\":_vm.customSort},scopedSlots:_vm._u([{key:\"item.id\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('p',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s((\"#\" + (item.id))))]),(_vm.determineIfBookingHasGroup(item))?_c('p',{class:['cursor-help mb-0', _vm.textClass.caption, _vm.colorClass.text.grey]},[_c('v-tooltip',{attrs:{\"right\":!_vm.isMobileViewPort,\"top\":_vm.isMobileViewPort},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('span',_vm._g(_vm._b({},'span',attrs,false),on),[_vm._v(\" \"+_vm._s(item.blockText)+\" \")])]}}],null,true)},[_c('span',[_vm._v(\" \"+_vm._s(item.blockTooltipText)+\" \")])])],1):_vm._e()]}},{key:\"item.name\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"d-flex align-top\"},[(_vm.bookingHasCandidate(item))?_c('CandidateImage',{attrs:{\"id\":_vm.filledCandidateId(item),\"first-name\":_vm.filledCandidateFirstName(item),\"last-name\":_vm.filledCandidateLastName(item),\"size\":\"sm\"}}):_c('div',[_c('v-avatar',{staticClass:\"mr-3\",attrs:{\"color\":_vm.colorClass.grey300,\"size\":\"32\"}},[_c('v-icon',{attrs:{\"color\":_vm.colorClass.grey}},[_vm._v(\" mdi-account \")])],1)],1),_c('div',{class:[_vm.bookingHasCandidate(item) ? 'ml-n2' : '']},[_c('p',{class:['mb-n1']},[_vm._v(_vm._s(_vm.generateBookingNameString(item)))]),(_vm.bookingHasCandidate(item))?_c('a',{class:_vm.textClass.caption,on:{\"click\":function($event){return _vm.viewCandidate(item)}}},[_vm._v(_vm._s(_vm.$t('booking.list.viewCandidateProfileLink')))]):_vm._e()])],1)]}},{key:\"item.status\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('BookingStatusLabel',{attrs:{\"status\":_vm.bookingStatus(item)}})]}},{key:\"item.time\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(_vm.generateBookingTimeRangeString(item))+\" \")]}},{key:\"item.type\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('p',{class:['mb-0', _vm.textClass.smallBody],attrs:{\"title\":item.type}},[_vm._v(_vm._s(_vm._f(\"truncateText\")(item.type,32)))]),_c('TruncatedList',{attrs:{\"title\":\"Grades\",\"items\":_vm.gradesList(item.grades),\"text-style\":((_vm.textClass.caption) + \" \" + (_vm.colorClass.text.grey500)),\"limit\":2}})]}},{key:\"item.certifications\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('TruncatedList',{attrs:{\"items\":_vm.certList(item.certChecks),\"text-style\":((_vm.textClass.caption) + \" \" + (_vm.colorClass.text.grey500)),\"chips\":\"\",\"x-small\":\"\",\"label\":\"\",\"outlined\":\"\",\"limit\":1}})]}},{key:\"item.policies\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('BookingListPolicies',{attrs:{\"policies\":item.agreements}})]}},{key:\"item.replacing\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',{staticClass:\"booking-list__replacing\"},[_vm._v(\" \"+_vm._s(_vm.generateReplacingString(item))+\" \")])]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('BaseDropdownMenu',{attrs:{\"menu-items\":_vm.generateContextMenuOptions(item),\"tertiary\":\"\",\"disabled\":_vm.isUnapproved(item),\"disable-list-item\":_vm.disableMenuItem},on:{\"cancelBooking\":function($event){return _vm.cancelBooking(item.id)},\"provideFeedback\":function($event){return _vm.toggleProvideFeedbackModal(item.id)},\"extendBooking\":function($event){return _vm.toggleExtendBookingModal(item.id)}}})]}}],null,true)}),_c('BookingFeedbackModal',{attrs:{\"booking\":_vm.booking},on:{\"feedbackProvided\":_vm.handleFeedbackProvided},model:{value:(_vm.showFeedbackModal),callback:function ($$v) {_vm.showFeedbackModal=$$v},expression:\"showFeedbackModal\"}}),_c('ExtendBookingModal',{attrs:{\"booking\":_vm.booking},model:{value:(_vm.showExtendBookingModal),callback:function ($$v) {_vm.showExtendBookingModal=$$v},expression:\"showExtendBookingModal\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nexport default {\n computed: {\n ...mapGetters({\n getSelectedClients: 'client/getSelectedClients',\n hasCreateBookingPermissionForAtleastOneClientLocationByClientIds:\n 'auth/hasCreateBookingPermissionForAtleastOneClientLocationByClientIds',\n featureFlags: 'features/featureFlags',\n }),\n canCreateBookings() {\n return this.hasCreateBookingPermissionForAtleastOneClientLocationByClientIds(\n this.getSelectedClients\n )\n },\n columns() {\n const headers = [\n {\n id: 'booking-list-table__id',\n value: 'id',\n text: this.$t('booking.idLabel'),\n align: 'left',\n width: '10%',\n display: true,\n sortable: true,\n },\n {\n id: 'booking-list-table__name',\n value: 'name',\n text: this.$t('booking.nameLabel'),\n align: 'left',\n width: '18%',\n display: true,\n sortable: true,\n },\n {\n id: 'booking-list-table__time',\n value: 'time',\n text: this.$t('booking.timeLabel'),\n align: 'left',\n width: '8%',\n display: true,\n sortable: true,\n },\n {\n id: 'booking-list-table__status',\n value: 'status',\n text: this.$t('booking.statusLabel'),\n align: 'left',\n width: '8%',\n display: this.featureFlags.selfService.showBookingStatus,\n sortable: true,\n },\n {\n id: 'booking-list-table__type',\n value: 'type',\n text: this.$t('booking.typeLabel'),\n align: 'left',\n width: '18%',\n display: true,\n sortable: true,\n },\n {\n id: 'booking-list-table__certifications',\n value: 'certifications',\n text: this.$t('booking.certificationsLabel'),\n align: 'left',\n width: '18%',\n display: true,\n sortable: false,\n },\n {\n id: 'booking-list-table__policies',\n value: 'policies',\n text: this.$t('booking.policiesLabel'),\n align: 'left',\n width: '10%',\n display: true,\n sortable: true,\n },\n {\n id: 'booking-list-table__replacing',\n value: 'replacing',\n text: this.$t('booking.replacingLabel'),\n align: 'left',\n width: '16%',\n display: true,\n sortable: true,\n },\n {\n id: 'booking-list-table__actions',\n value: 'actions',\n text: null,\n align: 'right',\n width: '2%',\n display: this.canCreateBookings,\n sortable: false,\n },\n ]\n\n return headers.filter((header) => header.display)\n },\n },\n}\n","export default Object.freeze({\n /**\n * Status label for 'In Progress' booking\n * A booking is 'In Progress' when -\n * a) First created (by Client with manager privileges)\n * b) Accepted booking has Candidate removed from it\n * c) Tentative booking has been declined/rejected by Candidate\n * d) Pending booking has been approved (by Client with manager privileges)\n * e) Existing empty booking is extended\n */\n InProgress: 'In Progress',\n /**\n * Status label for confirmed booking\n */\n Confirmed: 'Confirmed',\n /**\n * Status label for bookings that needs confirmation from the client\n */\n Pending: 'Pending',\n /**\n * Status label for when a booking is first created by client without manager privileges\n */\n Unapproved: 'Unapproved',\n})\n","import BookingStatusLabelType from '@/shared/constants/booking/BookingStatusLabelType'\n\nconst { InProgress, Confirmed, Pending, Unapproved } = BookingStatusLabelType\n\nexport default Object.freeze({\n mobileDimensions: { minWidth: 358, height: 140 },\n dimensions: { minWidth: 452, minHeight: 124 },\n bookingStatusMap: {\n pendingApproval: Unapproved,\n filled: Confirmed,\n unfilled: InProgress,\n tentative: Pending,\n rejected: InProgress,\n },\n\n labelStatus: { ...BookingStatusLabelType },\n})\n","/**\n * Class representing a text model with CSS classes for styling.\n */\n\nexport default class TextModel {\n /**\n * Create a TextModel.\n * @param {string} text - The text content.\n * @param {string[]} [cssClasses=[]] - An array of CSS classes.\n */\n constructor(text, cssClasses = []) {\n /**\n * The text content.\n * @type {string}\n */\n this.text = text\n\n /**\n * An array of CSS classes.\n * @type {string[]}\n */\n this.cssClasses = cssClasses\n }\n\n /**\n * Add a CSS class to the list if it isn't already present.\n * @param {string} cssClass - The CSS class to add.\n */\n addClass(cssClass) {\n if (!this.cssClasses.includes(cssClass)) {\n this.cssClasses.push(cssClass)\n }\n }\n\n /**\n * Remove a CSS class from the list.\n * @param {string} cssClass - The CSS class to remove.\n */\n removeClass(cssClass) {\n this.cssClasses = this.cssClasses.filter((cls) => cls !== cssClass)\n }\n\n /**\n * Get the list of CSS classes as a space-separated string.\n * @returns {string} The space-separated CSS classes.\n */\n getClasses() {\n return this.cssClasses.join(' ')\n }\n}\n","import { nanoid } from 'nanoid'\nimport Interaction from './interaction'\nimport TextModel from './textModel'\n\n/**\n * Items to be displayed within an action menu component\n */\nexport default class MenuItem {\n constructor({\n id = nanoid(),\n text = '',\n subtitle = '',\n type = '',\n icon = '',\n interaction = new Interaction(),\n rules = [],\n attributes = {},\n data = {},\n } = {}) {\n /**\n * @type {String}\n */\n this.id = id\n\n /**\n * Text to be displayed on the menu item\n * @type {String}\n */\n this.text = text\n\n /**\n * Text to be displayed under the menu item text\n * @type {String|TextModel}\n */\n this.subtitle = subtitle\n\n /**\n * Type of the menu item to define its purpose. E.g. divider (non-actionable)\n * @type {String}\n */\n this.type = type\n\n /**\n * Material design icon. E.g. mdi-account\n * @type {String?}\n */\n this.icon = icon\n\n /**\n * Describes what will happen when the menu item is clicked\n * @type {Interaction}\n */\n this.interaction = interaction\n\n /**\n * An array of boolean values, all must be true to show menu item\n * @type {Array}\n */\n this.rules = rules\n\n /**\n * Object containing attributes to style the menu item\n * @type {Object}\n * @see https://v2.vuetifyjs.com/en/api/v-btn/ for full list of attributes\n * @example\n *\n * ```\n * {\n * id: 'confirm-btn',\n * color: VuetifyColourClass.primary,\n * text: true,\n * title: 'Click here to accept the terms',\n * 'data-testid': 'promise-dialog--confirm-btn'\n * }\n * ```\n */\n this.attributes = attributes\n\n /**\n * Contains any miscellaneous relevant data to the menuItem.\n * Helpful for the disable comparison function in the base dropdown component.\n * @type {Object}\n * @example\n *\n * ```\n * {\n * disabled: true,\n * bookingId: 123456\n * }\n * ```\n */\n this.data = data\n }\n\n /**\n * Check if the subtitle is an instance of TextModel.\n * @returns {boolean} True if subtitle is an instance of TextModel, otherwise false.\n */\n isSubtitleTextModel() {\n return this.subtitle instanceof TextModel\n }\n\n getSubtitleText() {\n return this.isSubtitleTextModel() ? this.subtitle?.text : this.subtitle\n }\n\n getSubtitleCSSClasses() {\n return this.isSubtitleTextModel() ? this.subtitle.getClasses() : ''\n }\n}\n","import { mapGetters } from 'vuex'\n\nexport default {\n computed: {\n ...mapGetters({\n featureFlags: 'features/featureFlags',\n }),\n selfServiceFeatureFlags() {\n return this.featureFlags.selfService\n },\n },\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[_vm.inline ? 'd-inline' : '', 'truncated-list']},[_vm._l((_vm.itemsToShow),function(item,index){return _c('span',{key:index,staticClass:\"truncated-list_visible-list\"},[(_vm.chips)?_c('span',[(_vm.hasOneOrMoreItems)?_c('v-chip',_vm._g(_vm._b({class:['mr-1 mb-1', _vm.chipClass],attrs:{\"label\":_vm.label}},'v-chip',_vm.$attrs,false),_vm.$listeners),[_vm._v(\" \"+_vm._s(item)+\" \")]):_vm._e()],1):_c('span',{class:_vm.textStyle},[_vm._v(_vm._s(((_vm.notFirstIndex(index) ? ', ' : '') + \" \" + item)))])])}),(_vm.hasMoreItemsThanLimit)?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g(_vm._b({class:[\n 'cursor-pointer d-inline-block ml-2 truncated-list_truncate-text',\n _vm.colorClass.text.blue,\n _vm.textStyle ]},'div',_vm.$attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.hiddenItemsText)+\" \")])]}}],null,false,1730309325)},[_c('div',{staticStyle:{\"max-width\":\"250px !important\"}},_vm._l((_vm.hiddenItems),function(item,index){return _c('span',{key:index},[_c('span',[_vm._v(_vm._s((\"\" + (_vm.notFirstIndex(index) ? ', ' : '') + item)))])])}),0)]):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\n computed: {\n hasOneOrMoreItems() {\n try {\n return this.items.length >= 1\n } catch {\n return false\n }\n },\n hasMoreItemsThanLimit() {\n try {\n if (this.noLimit) return false\n return this.items.length > this.limit\n } catch {\n return false\n }\n },\n hiddenCount() {\n try {\n return this.items.length - this.limit\n } catch {\n return 0\n }\n },\n hiddenItemsText() {\n try {\n return `+ ${this.hiddenCount} more`\n } catch {\n return ''\n }\n },\n itemsToShow() {\n const show = []\n\n for (let i = 0; i < this.items.length; ++i) {\n if (i < this.limit || this.noLimit) {\n show.push(this.items[i])\n }\n }\n\n return show\n },\n hiddenItems() {\n const hidden = []\n\n for (let i = this.limit; i < this.items.length; ++i) {\n hidden.push(this.items[i])\n }\n\n return hidden\n },\n noLimit() {\n return this.limit === 0\n },\n },\n methods: {\n notFirstIndex(index) {\n return index !== 0\n },\n },\n}\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./truncated-list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./truncated-list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./truncated-list.vue?vue&type=template&id=6a62b25a&\"\nimport script from \"./truncated-list.vue?vue&type=script&lang=js&\"\nexport * from \"./truncated-list.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VChip,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseModal',{attrs:{\"hide-header-divider\":\"\",\"hide-cancel\":\"\",\"width\":600},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('p',{staticClass:\"mb-0 feedback-dialog-content\",class:_vm.textClass.h6},[_vm._v(_vm._s(_vm.$t('feedback.quickFeedbackTitle')))])]},proxy:true},{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('BaseButton',{staticClass:\"cancel-btn\",attrs:{\"sm\":\"\",\"secondary\":\"\",\"disabled\":_vm.isSubmittingQuickFeedback},on:{\"click\":_vm.handleClose}},[_vm._v(\" \"+_vm._s(_vm.$t('feedback.cancelQuickFeedbackBtn'))+\" \")]),_c('BaseButton',{staticClass:\"save-btn\",attrs:{\"sm\":\"\",\"loading\":_vm.isSubmittingQuickFeedback,\"disabled\":!_vm.formValid},on:{\"click\":_vm.saveFeedback}},[_vm._v(\" \"+_vm._s(_vm.$t('feedback.saveQuickFeedbackBtn'))+\" \")])]},proxy:true}]),model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}},[[(_vm.feedbackProvided)?_c('EmptyStateBlock',{attrs:{\"icon\":\"mdi-check-circle-outline\",\"title\":_vm.$t('feedback.modal.providedTitle'),\"description\":_vm.$t('feedback.modal.providedDescription')},scopedSlots:_vm._u([{key:\"button\",fn:function(){return [_c('div',{staticClass:\"mt-4\"},[_c('BaseButton',{attrs:{\"lg\":\"\"},on:{\"click\":_vm.handleClose}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-close \")]),_vm._v(\" \"+_vm._s(_vm.$t('general.close'))+\" \")],1)],1)]},proxy:true}],null,false,2120174582)}):_c('div',{staticClass:\"feedback-dialog-content\"},[_c('div',[_c('div',{staticClass:\"text-center mb-2\"},[_c('v-rating',{staticClass:\"quick-feedback-rating\",attrs:{\"background-color\":\"purple lighten-3\",\"color\":\"purple\",\"hover\":\"\",\"length\":\"5\"},model:{value:(_vm.rating),callback:function ($$v) {_vm.rating=$$v},expression:\"rating\"}}),_c('BaseButton',{attrs:{\"secondary\":\"\",\"loading\":_vm.loadingUrl,\"disabled\":_vm.isSubmittingQuickFeedback},on:{\"click\":_vm.requestExtendedFeedback}},[_vm._v(_vm._s(_vm.$t('feedback.extendedFeedbackBtn')))])],1),_c('v-radio-group',{staticClass:\"preferred-radio-group\",attrs:{\"mandatory\":\"\",\"column\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('feedback.haveBackQuestionText', Object.assign({}, _vm.candidate)))+\" \")])]},proxy:true}]),model:{value:(_vm.haveBack),callback:function ($$v) {_vm.haveBack=$$v},expression:\"haveBack\"}},[_c('v-radio',{class:(\"preferred-radio-\" + (_vm.CandidateHaveBack.PREFERRED)),attrs:{\"label\":_vm.$t('feedback.haveBackPreferredOption'),\"value\":_vm.CandidateHaveBack.PREFERRED}}),_c('v-radio',{class:(\"preferred-radio-\" + (_vm.CandidateHaveBack.YES)),attrs:{\"label\":_vm.$t('feedback.haveBackYesOption'),\"value\":_vm.CandidateHaveBack.YES}}),_c('v-radio',{class:(\"preferred-radio-\" + (_vm.CandidateHaveBack.NO)),attrs:{\"label\":_vm.$t('feedback.haveBackNoOption'),\"value\":_vm.CandidateHaveBack.NO}})],1),_c('v-expand-transition',[(_vm.haveBack === _vm.CandidateHaveBack.NO)?_c('v-textarea',{staticClass:\"comment-textarea\",attrs:{\"outlined\":\"\",\"label\":_vm.$t('feedback.haveBackCommentText'),\"rules\":_vm.commentRules,\"counter\":\"\"},on:{\"update:error\":_vm.commentTextErrorUpdate},model:{value:(_vm.commentText),callback:function ($$v) {_vm.commentText=$$v},expression:\"commentText\"}}):_vm._e()],1)],1),(_vm.hasErrors)?_c('ErrorAlert',{staticClass:\"ma-0\",attrs:{\"type\":\"error\",\"error\":_vm.error}}):_vm._e()],1)]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const CandidateHaveBack = Object.freeze({\n /**\n * Yes, have the candidate back.\n */\n YES: 1,\n /**\n * No, don't have the candidate back. (Set candidate as non-preferred)\n */\n NO: 2,\n /**\n * Yes, also set the candidate as preferred.\n */\n PREFERRED: 3,\n})\n","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-feedback-modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-feedback-modal.vue?vue&type=script&lang=js&\"","// Styles\nimport './VRadio.sass'\n\n// Components\nimport VRadioGroup from './VRadioGroup'\nimport VLabel from '../VLabel'\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Rippleable from '../../mixins/rippleable'\nimport Themeable from '../../mixins/themeable'\nimport Selectable, { prevent } from '../../mixins/selectable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { mergeListeners } from '../../util/mergeData'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Colorable,\n Rippleable,\n GroupableFactory('radioGroup'),\n Themeable\n)\n\ninterface options extends InstanceType {\n radioGroup: InstanceType\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-radio',\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n id: String,\n label: String,\n name: String,\n offIcon: {\n type: String,\n default: '$radioOff',\n },\n onIcon: {\n type: String,\n default: '$radioOn',\n },\n readonly: Boolean,\n value: {\n default: null,\n },\n },\n\n data: () => ({\n isFocused: false,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-radio--is-disabled': this.isDisabled,\n 'v-radio--is-focused': this.isFocused,\n ...this.themeClasses,\n ...this.groupClasses,\n }\n },\n computedColor (): string | undefined {\n return Selectable.options.computed.computedColor.call(this)\n },\n computedIcon (): string {\n return this.isActive\n ? this.onIcon\n : this.offIcon\n },\n computedId (): string {\n return VInput.options.computed.computedId.call(this)\n },\n hasLabel: VInput.options.computed.hasLabel,\n hasState (): boolean {\n return (this.radioGroup || {}).hasState\n },\n isDisabled (): boolean {\n return this.disabled || (\n !!this.radioGroup &&\n this.radioGroup.isDisabled\n )\n },\n isReadonly (): boolean {\n return this.readonly || (\n !!this.radioGroup &&\n this.radioGroup.isReadonly\n )\n },\n computedName (): string {\n if (this.name || !this.radioGroup) {\n return this.name\n }\n\n return this.radioGroup.name || `radio-${this.radioGroup._uid}`\n },\n rippleState (): string | undefined {\n return Selectable.options.computed.rippleState.call(this)\n },\n validationState (): string | undefined {\n return (this.radioGroup || {}).validationState || this.computedColor\n },\n },\n\n methods: {\n genInput (args: any) {\n // We can't actually use the mixin directly because\n // it's made for standalone components, but its\n // genInput method is exactly what we need\n return Selectable.options.methods.genInput.call(this, 'radio', args)\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n on: {\n // Label shouldn't cause the input to focus\n click: prevent,\n },\n attrs: {\n for: this.computedId,\n },\n props: {\n color: this.validationState,\n focused: this.hasState,\n },\n }, getSlot(this, 'label') || this.label)\n },\n genRadio () {\n const { title, ...radioAttrs } = this.attrs$\n\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.radioGroup && this.radioGroup.dense,\n },\n }), this.computedIcon),\n this.genInput({\n name: this.computedName,\n value: this.value,\n ...radioAttrs,\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n onFocus (e: Event) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: Event) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n onChange () {\n if (this.isDisabled || this.isReadonly || this.isActive) return\n\n this.toggle()\n },\n onKeydown: () => {}, // Override default with noop\n },\n\n render (h): VNode {\n const data: VNodeData = {\n staticClass: 'v-radio',\n class: this.classes,\n on: mergeListeners({\n click: this.onChange,\n }, this.listeners$),\n attrs: { title: this.attrs$.title },\n }\n\n return h('div', data, [\n this.genRadio(),\n this.genLabel(),\n ])\n },\n})\n","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VRadioGroup.sass'\n\n// Extensions\nimport VInput from '../VInput'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { PropType } from 'vue'\n\nconst baseMixins = mixins(\n BaseItemGroup,\n VInput\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-radio-group',\n\n provide () {\n return {\n radioGroup: this,\n }\n },\n\n props: {\n column: {\n type: Boolean,\n default: true,\n },\n height: {\n type: [Number, String],\n default: 'auto',\n },\n name: String,\n row: Boolean,\n // If no value set on VRadio\n // will match valueComparator\n // force default to null\n value: null as unknown as PropType,\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--radio-group': true,\n 'v-input--radio-group--column': this.column && !this.row,\n 'v-input--radio-group--row': this.row,\n }\n },\n },\n\n methods: {\n genDefaultSlot () {\n return this.$createElement('div', {\n staticClass: 'v-input--radio-group__input',\n attrs: {\n id: this.id,\n role: 'radiogroup',\n 'aria-labelledby': this.computedId,\n },\n }, VInput.options.methods.genDefaultSlot.call(this))\n },\n genInputSlot () {\n const render = VInput.options.methods.genInputSlot.call(this)\n\n delete render.data!.on!.click\n\n return render\n },\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return null\n\n label.data!.attrs!.id = this.computedId\n // WAI considers this an orphaned label\n delete label.data!.attrs!.for\n label.tag = 'legend'\n\n return label\n },\n onClick: BaseItemGroup.options.methods.onClick,\n },\n\n render (h) {\n const vnode = VInput.options.render.call(this, h)\n\n this._b(vnode.data!, 'div', this.attrs$)\n\n return vnode\n },\n})\n","// Styles\nimport './VRating.sass'\n\n// Components\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Delayable from '../../mixins/delayable'\nimport Sizeable from '../../mixins/sizeable'\nimport Rippleable from '../../mixins/rippleable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { createRange } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeDirective, VNodeChildren } from 'vue'\n\ntype ItemSlotProps = {\n index: number\n value: number\n isFilled: boolean\n isHalfFilled?: boolean | undefined\n isHovered: boolean\n isHalfHovered?: boolean | undefined\n click: Function\n}\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Delayable,\n Rippleable,\n Sizeable,\n Themeable\n).extend({\n name: 'v-rating',\n\n props: {\n backgroundColor: {\n type: String,\n default: 'accent',\n },\n color: {\n type: String,\n default: 'primary',\n },\n clearable: Boolean,\n dense: Boolean,\n emptyIcon: {\n type: String,\n default: '$ratingEmpty',\n },\n fullIcon: {\n type: String,\n default: '$ratingFull',\n },\n halfIcon: {\n type: String,\n default: '$ratingHalf',\n },\n halfIncrements: Boolean,\n hover: Boolean,\n length: {\n type: [Number, String],\n default: 5,\n },\n readonly: Boolean,\n size: [Number, String],\n value: {\n type: Number,\n default: 0,\n },\n iconLabel: {\n type: String,\n default: '$vuetify.rating.ariaLabel.icon',\n },\n },\n\n data () {\n return {\n hoverIndex: -1,\n internalValue: this.value,\n }\n },\n\n computed: {\n directives (): VNodeDirective[] {\n if (this.readonly || !this.ripple) return []\n\n return [{\n name: 'ripple',\n value: { circle: true },\n } as VNodeDirective]\n },\n iconProps (): object {\n const {\n dark,\n large,\n light,\n medium,\n small,\n size,\n xLarge,\n xSmall,\n } = this.$props\n\n return {\n dark,\n large,\n light,\n medium,\n size,\n small,\n xLarge,\n xSmall,\n }\n },\n isHovering (): boolean {\n return this.hover && this.hoverIndex >= 0\n },\n },\n\n watch: {\n internalValue (val) {\n val !== this.value && this.$emit('input', val)\n },\n value (val) {\n this.internalValue = val\n },\n },\n\n methods: {\n createClickFn (i: number): Function {\n return (e: MouseEvent) => {\n if (this.readonly) return\n\n const newValue = this.genHoverIndex(e, i)\n if (this.clearable && this.internalValue === newValue) {\n this.internalValue = 0\n } else {\n this.internalValue = newValue\n }\n }\n },\n createProps (i: number): ItemSlotProps {\n const props: ItemSlotProps = {\n index: i,\n value: this.internalValue,\n click: this.createClickFn(i),\n isFilled: Math.floor(this.internalValue) > i,\n isHovered: Math.floor(this.hoverIndex) > i,\n }\n\n if (this.halfIncrements) {\n props.isHalfHovered = !props.isHovered && (this.hoverIndex - i) % 1 > 0\n props.isHalfFilled = !props.isFilled && (this.internalValue - i) % 1 > 0\n }\n\n return props\n },\n genHoverIndex (e: MouseEvent, i: number) {\n let isHalf = this.isHalfEvent(e)\n\n if (\n this.halfIncrements &&\n this.$vuetify.rtl\n ) {\n isHalf = !isHalf\n }\n\n return i + (isHalf ? 0.5 : 1)\n },\n getIconName (props: ItemSlotProps): string {\n const isFull = this.isHovering ? props.isHovered : props.isFilled\n const isHalf = this.isHovering ? props.isHalfHovered : props.isHalfFilled\n\n return isFull ? this.fullIcon : isHalf ? this.halfIcon : this.emptyIcon\n },\n getColor (props: ItemSlotProps): string {\n if (this.isHovering) {\n if (props.isHovered || props.isHalfHovered) return this.color\n } else {\n if (props.isFilled || props.isHalfFilled) return this.color\n }\n\n return this.backgroundColor\n },\n isHalfEvent (e: MouseEvent): boolean {\n if (this.halfIncrements) {\n const rect = e.target && (e.target as HTMLElement).getBoundingClientRect()\n if (rect && (e.pageX - rect.left) < rect.width / 2) return true\n }\n\n return false\n },\n onMouseEnter (e: MouseEvent, i: number): void {\n this.runDelay('open', () => {\n this.hoverIndex = this.genHoverIndex(e, i)\n })\n },\n onMouseLeave (): void {\n this.runDelay('close', () => (this.hoverIndex = -1))\n },\n genItem (i: number): VNode | VNodeChildren | string {\n const props = this.createProps(i)\n\n if (this.$scopedSlots.item) return this.$scopedSlots.item(props)\n\n const listeners: Record = {\n click: props.click,\n }\n\n if (this.hover) {\n listeners.mouseenter = (e: MouseEvent) => this.onMouseEnter(e, i)\n listeners.mouseleave = this.onMouseLeave\n\n if (this.halfIncrements) {\n listeners.mousemove = (e: MouseEvent) => this.onMouseEnter(e, i)\n }\n }\n\n return this.$createElement(VIcon, this.setTextColor(this.getColor(props), {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.iconLabel, i + 1, Number(this.length)),\n },\n directives: this.directives,\n props: this.iconProps,\n on: listeners,\n }), [this.getIconName(props)])\n },\n },\n\n render (h): VNode {\n const children = createRange(Number(this.length)).map(i => this.genItem(i))\n\n return h('div', {\n staticClass: 'v-rating',\n class: {\n 'v-rating--readonly': this.readonly,\n 'v-rating--dense': this.dense,\n },\n }, children)\n },\n})\n","import { render, staticRenderFns } from \"./booking-feedback-modal.vue?vue&type=template&id=787a38cc&\"\nimport script from \"./booking-feedback-modal.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-feedback-modal.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VExpandTransition } from 'vuetify/lib/components/transitions';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VRating } from 'vuetify/lib/components/VRating';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VExpandTransition,VIcon,VRadio,VRadioGroup,VRating,VSpacer,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BaseModal',{attrs:{\"loading\":_vm.isLoading,\"hide-header-divider\":\"\",\"width\":_vm.modalWidth,\"max-height\":_vm.modalMaxHeight,\"hide-cancel\":\"\",\"persistent\":true},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('p',{staticClass:\"mb-0\",class:_vm.h6},[_vm._v(_vm._s(_vm.$t('booking.extend.extendBooking')))])]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.isSummaryScreen)?_c('BaseButton',{class:_vm.smallBody,attrs:{\"xs\":\"\",\"text\":\"\"},on:{\"click\":_vm.goBack}},[_vm._v(\" \"+_vm._s(_vm.$t('general.back'))+\" \")]):_vm._e(),_c('v-spacer'),(!_vm.isConfirmationScreen)?_c('BaseButton',{attrs:{\"sm\":\"\",\"secondary\":\"\",\"width\":\"83\",\"height\":\"41\",\"border-radius\":\"8px\"},on:{\"click\":function($event){_vm.isCancelOpen = true}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.cancel'))+\" \")]):_vm._e(),_c('BaseButton',{attrs:{\"disabled\":_vm.disableNext,\"sm\":\"\",\"width\":_vm.isSummaryScreen ? 80 : 64,\"height\":\"41\",\"border-radius\":\"8px\",\"loading\":_vm.isLoading},on:{\"click\":_vm.handleNext}},[_vm._v(\" \"+_vm._s(_vm.primaryButtonText)+\" \")])]},proxy:true}]),model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}},[[_c('transition',{attrs:{\"name\":_vm.transitionName,\"mode\":_vm.transitionMode}},[(_vm.isDatePickerScreen)?_c('ExtendBookingDatePicker',{attrs:{\"booking\":_vm.booking,\"min-allowed-date\":_vm.minAllowedDate},on:{\"update\":_vm.handleDateChange},model:{value:(_vm.extendedEndDate),callback:function ($$v) {_vm.extendedEndDate=$$v},expression:\"extendedEndDate\"}}):(_vm.isSummaryScreen)?_c('ExtendBookingSummary',{attrs:{\"bookings-with-weekends\":_vm.bookingsWithWeekends,\"booking\":_vm.booking,\"candidate-options\":_vm.candidateOptions,\"extended-end-date\":_vm.extendedEndDate,\"confirmed-bookings\":_vm.confirmedBookings,\"unavailable-warning\":_vm.summaryWarning},on:{\"setEducator\":_vm.setEducatorForBooking},model:{value:(_vm.summaryBookings),callback:function ($$v) {_vm.summaryBookings=$$v},expression:\"summaryBookings\"}}):_c('ExtendBookingConfirmation',{attrs:{\"booking\":_vm.booking,\"extended-bookings\":_vm.extendedBookings,\"confirmed-bookings\":_vm.confirmedBookings}})],1)]],2),_c('BaseModal',{attrs:{\"hide-header\":\"\",\"hide-header-divider\":\"\",\"hide-cancel\":\"\",\"hide-actions-divider\":\"\",\"hide-actions\":\"\",\"width\":\"430\"},model:{value:(_vm.isCancelOpen),callback:function ($$v) {_vm.isCancelOpen=$$v},expression:\"isCancelOpen\"}},[[_c('p',{staticClass:\"mt-4 mb-2 text-center\",class:_vm.h6},[_vm._v(_vm._s(_vm.$t('booking.extend.cancelModalHeader')))]),_c('p',{staticClass:\"text-center mb-8\",class:[_vm.smallBody, _vm.text.grey600]},[_vm._v(_vm._s(_vm.$t('booking.extend.cancelModalBody')))]),_c('div',{staticClass:\"w-100 d-flex justify-space-around\"},[_c('BaseButton',{class:_vm.smallBody,attrs:{\"secondary\":\"\",\"border-radius\":\"8px\",\"width\":\"180\"},on:{\"click\":function($event){_vm.isCancelOpen = false}}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.extend.cancelModalCancel'))+\" \")]),_c('BaseButton',{attrs:{\"border-radius\":\"8px\",\"width\":\"180\"},on:{\"click\":_vm.handleClose}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.extend.cancelModalConfirm'))+\" \")])],1)]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @property {String} dateLocal - date of the booking being created\n * @property {Integer} candidateId - educator Id\n */\n\nexport default class ExtendBookingDTO {\n constructor(dateLocal, candidateId = null) {\n this.dateLocal = dateLocal.toLocaleDateString('en-CA')\n this.candidateId = candidateId\n }\n}\n","import SimpleTableItem from '@/models/general/simpleTableItem.js'\n\n/**\n * @property {String} date - date of the booking being created\n * @property {String} duration - start and end times of the booking being extended\n * @property {string} educator - educator name (default is 'Unfilled')\n */\nexport default class ExtendBookingSummaryItem extends SimpleTableItem {\n constructor(\n date,\n bookingDate,\n duration,\n candidateId = null,\n educator = 'Unfilled'\n ) {\n super()\n this.candidateId = candidateId\n this.dateMeta = date\n this.date = bookingDate\n this.duration = duration\n this.educator = educator\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{class:_vm.smallBody},[_vm._v(_vm._s(_vm.$t('booking.extend.summarySubtitle')))]),(_vm.unavailableWarning.length)?_c('div',{class:[\n _vm.warning100,\n 'd-flex align-center pa-4 mt-2 mb-8 rounded-lg error-fade-down' ]},[_c('v-icon',{staticClass:\"mb-1 mr-4 align-self-start\",attrs:{\"color\":_vm.warning400}},[_vm._v(\"mdi-information\")]),_c('p',{class:[_vm.smallBody, _vm.text.warning500, 'mb-0 ']},[_vm._v(_vm._s(_vm.unavailableWarning))])],1):_vm._e(),_c('BaseSimpleTable',{attrs:{\"headers\":_vm.headers,\"excluded-keys\":['dateMeta'],\"allowed-keys\":['date', 'educator', 'duration'],\"fixed-header\":\"\",\"removable\":\"\",\"disable-remove\":_vm.disableRemove,\"height\":\"300px\"},scopedSlots:_vm._u([{key:\"educator-cell\",fn:function(ref){\n var item = ref.item;\nreturn [_c('CandidateDropdown',{attrs:{\"table-item\":item,\"booking\":_vm.booking,\"bookings-with-weekends\":_vm.bookingsWithWeekends,\"candidate-options\":_vm.candidateOptions,\"disable-dropdown\":_vm.disableDropdown(item)},on:{\"setEducator\":function (payload) { return _vm.setEducator(item.id, payload); }}})]}}]),model:{value:(_vm.summaryBookings),callback:function ($$v) {_vm.summaryBookings=$$v},expression:\"summaryBookings\"}}),(_vm.showRequiredDaysWarning)?_c('div',{staticClass:\"d-flex mt-4\"},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"size\":\"22\",\"color\":_vm.grey600}},[_vm._v(\"mdi-information-outline\")]),_c('p',{staticClass:\"mb-0\",class:_vm.text.grey600},[_vm._v(_vm._s(_vm.$t('booking.extend.oneDayRequired')))])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseDropdown',{ref:\"baseDropdown\",attrs:{\"disabled\":_vm.isLoading || _vm.disableDropdown,\"menu-items\":_vm.dropdownMenuItems,\"icon-color\":_vm.grey600,\"disable-list-item\":_vm.disableCandidateOption,\"selected-id\":_vm.selectedMenuId,\"width\":\"288\",\"border-radius\":\"8px\",\"icon-size\":\"35\",\"secondary\":\"\",\"candidate-list\":\"\",\"compact-icons\":\"\",\"subtitles\":\"\"},on:{\"setEducator\":_vm.setEducator},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nvar isActive = ref.isActive;\nreturn [_c('BaseButton',_vm._g(_vm._b({staticClass:\"d-flex align-center mx-1\",attrs:{\"secondary\":\"\",\"width\":\"288\",\"color\":isActive ? _vm.blue100 : ''}},'BaseButton',Object.assign({}, attrs),false),on),[_c('div',{staticClass:\"d-flex justify-space-between align-center w-100\"},[_c('div',{staticClass:\"d-flex align-center\"},[(_vm.isUnfilled)?_c('v-icon',{staticClass:\"mr-4 align-unfilled-icon\",attrs:{\"size\":\"35\",\"color\":_vm.grey600}},[_vm._v(\"mdi-account-circle\")]):_c('CandidateImage',{attrs:{\"id\":_vm.tableItem.candidateId,\"size\":\"sm\",\"full-name\":_vm.tableItem.educator}}),_c('p',{staticClass:\"mb-0\",class:_vm.text.grey500},[_vm._v(_vm._s(_vm.isUnfilled ? _vm.$t('booking.extend.unfilled') : _vm.tableItem.educator))])],1),_c('v-spacer'),(!_vm.isLoading)?_c('v-icon',{staticClass:\"icon--transition\",class:{\n 'icon--rotate': isActive,\n },attrs:{\"color\":isActive ? _vm.blue400 : _vm.grey600}},[_vm._v(\"mdi-menu-down\")]):_c('div',[_c('Spinner',{attrs:{\"size\":\"15\",\"color\":_vm.grey600,\"width\":1}})],1)],1)])]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import MenuItem from '@/models/general/menuItem'\n\nexport default class CandidateMenuItem extends MenuItem {\n constructor(props) {\n super(props)\n\n this.candidateId = props.candidateId ?? null\n this.fullName = props.fullName ?? null\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-100 d-flex justify-center items-center\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":_vm.color,\"size\":_vm.size,\"width\":_vm.width}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./spinner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./spinner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./spinner.vue?vue&type=template&id=a62a4404&\"\nimport script from \"./spinner.vue?vue&type=script&lang=js&\"\nexport * from \"./spinner.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VProgressCircular})\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-candidate-dropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-candidate-dropdown.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./extend-booking-candidate-dropdown.vue?vue&type=template&id=2b4e43b2&scoped=true&\"\nimport script from \"./extend-booking-candidate-dropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./extend-booking-candidate-dropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./extend-booking-candidate-dropdown.vue?vue&type=style&index=0&id=2b4e43b2&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2b4e43b2\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VIcon,VSpacer})\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-summary.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-summary.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./extend-booking-summary.vue?vue&type=template&id=deb6e05a&scoped=true&\"\nimport script from \"./extend-booking-summary.vue?vue&type=script&lang=js&\"\nexport * from \"./extend-booking-summary.vue?vue&type=script&lang=js&\"\nimport style0 from \"./extend-booking-summary.vue?vue&type=style&index=0&id=deb6e05a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"deb6e05a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{class:_vm.smallBody},[_vm._v(_vm._s(_vm.bookingDescription))]),_c('div',{class:[_vm.isMediumOrHigher ? 'd-flex align-center' : '']},[_c('p',{class:[_vm.isMediumOrHigher ? 'mr-4 mb-6' : '', _vm.smallBody]},[_vm._v(_vm._s(_vm.$t('booking.extend.inputLabel')))]),_c('v-form',{ref:\"form\",model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-menu',{ref:\"menu\",attrs:{\"close-on-content-click\":false,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"rounded\":\"lg\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar attrs = ref.attrs;\nreturn [_c('v-text-field',_vm._b({staticClass:\"end-date-field\",class:[_vm.smallBody, { 'end-date-field--lg': _vm.isMediumOrHigher }],attrs:{\"value\":_vm.extendedEndDate,\"label\":_vm.$t('booking.extend.endDate'),\"type\":\"date\",\"append-icon\":\"mdi-calendar\",\"outlined\":\"\",\"dense\":\"\",\"rules\":[\n _vm.validDateRule,\n _vm.futureDatesOnlyRule,\n _vm.minDateRule,\n _vm.maxDateRule,\n _vm.weekDaysOnly ]},on:{\"input\":_vm.setDate,\"click:append\":_vm.openDatePicker}},'v-text-field',attrs,false))]}}]),model:{value:(_vm.showDatePicker),callback:function ($$v) {_vm.showDatePicker=$$v},expression:\"showDatePicker\"}},[_c('v-date-picker',{attrs:{\"color\":_vm.colorClass.blue,\"no-title\":\"\",\"first-day-of-week\":_vm.firstDayOfWeek,\"allowed-dates\":_vm.disableWeekends,\"min\":_vm.minAllowedDate,\"max\":_vm.maxAllowedDate},on:{\"input\":_vm.setDatePickerDate},model:{value:(_vm.internalDate),callback:function ($$v) {_vm.internalDate=$$v},expression:\"internalDate\"}})],1)],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-date-picker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-date-picker.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./extend-booking-date-picker.vue?vue&type=template&id=65a9f3f5&scoped=true&\"\nimport script from \"./extend-booking-date-picker.vue?vue&type=script&lang=js&\"\nexport * from \"./extend-booking-date-picker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./extend-booking-date-picker.vue?vue&type=style&index=0&id=65a9f3f5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"65a9f3f5\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VDatePicker,VForm,VMenu,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{class:_vm.smallBody},[_vm._v(_vm._s(_vm.$t('booking.extend.confirmationSubtitle')))]),_c('BaseSimpleTable',{attrs:{\"headers\":_vm.headers,\"items\":_vm.tableData,\"excluded-keys\":['candidateId', 'firstName', 'lastName'],\"fixed-header\":\"\",\"height\":\"300px\"},scopedSlots:_vm._u([{key:\"educator-cell\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"d-flex justify-space-between align-center w-100\"},[_c('div',{staticClass:\"d-flex align-center\"},[(!item.candidateId)?_c('v-icon',{staticClass:\"mr-4 align-unfilled-icon\",attrs:{\"size\":\"35\",\"color\":_vm.grey600}},[_vm._v(\"mdi-account-circle\")]):_c('CandidateImage',{attrs:{\"id\":item.candidateId,\"size\":\"sm\",\"full-name\":item.educator}}),_c('p',{staticClass:\"mb-0\",class:_vm.text.grey500},[_vm._v(_vm._s(!item.candidateId ? _vm.$t('booking.extend.unfilled') : item.educator))])],1)])]}},{key:\"bookingId-cell\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{class:[_vm.text.blue500, _vm.smallBodyBold]},[_vm._v(\" \"+_vm._s(item.bookingId)+\" \")])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import SimpleTableItem from '@/models/general/simpleTableItem'\nimport i18n from '@plugins/vue-i18n'\n\nexport default class ExtendBookingConfirmationItem extends SimpleTableItem {\n constructor(\n id = null,\n { name = '', id: candidateId = null },\n friendlyDateString = null,\n time = null\n ) {\n super()\n this.date = friendlyDateString\n this.bookingId = id\n this.educator = name\n this.candidateId = candidateId\n this.time = time\n this.action = candidateId\n ? i18n.t('booking.extend.filledActionText')\n : i18n.t('booking.extend.unfilledActionText')\n }\n}\n","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-confirmation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-confirmation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./extend-booking-confirmation.vue?vue&type=template&id=2fbf7a6a&\"\nimport script from \"./extend-booking-confirmation.vue?vue&type=script&lang=js&\"\nexport * from \"./extend-booking-confirmation.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-modal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./extend-booking-modal.vue?vue&type=template&id=65c07c88&\"\nimport script from \"./extend-booking-modal.vue?vue&type=script&lang=js&\"\nexport * from \"./extend-booking-modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./extend-booking-modal.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseLabel',{attrs:{\"text\":_vm.statusLabel,\"color\":_vm.labelColor,\"shade\":_vm.BaseLabelShade.light}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-status-label.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-status-label.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-status-label.vue?vue&type=template&id=0ef44299&\"\nimport script from \"./booking-status-label.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-status-label.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"policies d-flex flex-column align-top\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('p',_vm._g({staticClass:\"mb-0\"},on),[_vm._v(\" \"+_vm._s(_vm.compPoliciesText)+\" \")])]}}])},[_c('div',[_c('p',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.compPoliciesTooltip)+\" \")]),_c('div',{staticClass:\"d-flex flex-column ml-n2 mt-2\"},_vm._l((_vm.policies),function(p,index){return _c('v-chip',{key:'policy' + index,class:['caption transparent', _vm.colorClass.text.white],attrs:{\"title\":p.agreedUTC,\"x-small\":\"\"}},[(p.agreedUTC)?_c('v-icon',{attrs:{\"left\":\"\",\"x-small\":\"\",\"color\":\"green\"}},[_vm._v(\" mdi-check \")]):_c('v-icon',{attrs:{\"x-small\":\"\",\"left\":\"\",\"color\":\"red\"}},[_vm._v(\" mdi-close \")]),_vm._v(\" \"+_vm._s(p.typeName)+\" \")],1)}),1)])]),_c('p',{staticClass:\"cursor-help mb-0\"},[_c('TruncatedList',{attrs:{\"items\":_vm.mappedRemainingPolicies,\"text-style\":((_vm.textClass.caption) + \" \" + (_vm.colorClass.text.grey)),\"title\":_vm.$t('booking.policies.list.outstanding'),\"limit\":1}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list-policies.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list-policies.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-list-policies.vue?vue&type=template&id=58419bd4&\"\nimport script from \"./booking-list-policies.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-list-policies.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VChip,VIcon,VTooltip})\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-list.vue?vue&type=template&id=2e380c90&scoped=true&\"\nimport script from \"./booking-list.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-list.vue?vue&type=script&lang=js&\"\nimport style0 from \"./booking-list.vue?vue&type=style&index=0&id=2e380c90&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e380c90\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VAvatar,VDataTable,VIcon,VTooltip})\n","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-summary-list.vue?vue&type=template&id=3951be83&\"\nimport script from \"./booking-summary-list.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-summary-list.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.bookings),function(location){return _c('div',{key:(\"booking-summary-card__location-\" + (location.locationId))},[_c('p',{staticClass:\"subtitle-2 font-weight-medium mt-4 mb-8\"},[_vm._v(\" \"+_vm._s(location.locationName)+\" \")]),_c('v-row',_vm._l((_vm.orderedBookings(location.bookings)),function(booking){return _c('v-col',_vm._b({key:(\"bookingcard_\" + (booking.id))},'v-col',_vm.calcBookingCardColumnBreakpoints,false),[(_vm.selfServiceFeatureFlags.showBookingCardV2)?_c('BookingCard',{attrs:{\"booking\":booking},on:{\"viewCandidate\":_vm.viewCandidate,\"cancelBooking\":_vm.cancelBooking}}):_c('BookingCardOld',{attrs:{\"booking\":booking},on:{\"viewCandidate\":_vm.viewCandidate,\"cancelBooking\":_vm.cancelBooking}})],1)}),1)],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"mb-5 booking-card custom-elevation rounded-xl\",attrs:{\"elevation\":\"0\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"6\",\"lg\":\"5\",\"xl\":\"4\"}},[_c('div',[_c('v-lazy',[_c('CandidateImage',{attrs:{\"id\":_vm.compFilledCandidateId,\"first-name\":_vm.compFilledCandidateFirstName,\"last-name\":_vm.compFilledCandidateLastName,\"rounded\":\"\",\"size\":\"xxxl\",\"clickable\":\"\"},on:{\"profileImgSrc\":_vm.updateProfileImage,\"click\":_vm.viewCandidate}})],1)],1),_c('div',{staticClass:\"flex-grow-1\"},[_c('BookingCardIdLabel',{attrs:{\"booking\":_vm.booking}}),_c('h5',{staticClass:\"font-weight-medium subtitle-1\"},[(_vm.hasCandidate)?_c('a',{attrs:{\"title\":\"View Profile\"},on:{\"click\":_vm.viewCandidate}},[_vm._v(\" \"+_vm._s(_vm.compCandidateFullName)+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(this.$t('booking.unfilledBookingText'))+\" \")])]),_c('p',{class:[\n 'subtitle-1 font-weight-medium mb-0',\n _vm.compRunningLateClass ]},[_vm._v(\" \"+_vm._s(_vm.compDuration)+\" \"),(_vm.booking.runningLate)?_c('span',{staticClass:\"booking-card__running-late\"},[_vm._v(\" +\"+_vm._s(_vm.$t('booking.minsLateText', { count: _vm.howLate }))+\" \")]):_vm._e(),_c('span',{staticClass:\"booking-card__classification caption my-0\",attrs:{\"title\":\"Classification\"}},[_vm._v(\" \"+_vm._s(_vm.booking.type)+\" \")])]),(_vm.booking.replacing)?_c('div',{staticClass:\"booking-card__replacing\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.replacingLabel'))+\": \"),_c('span',{staticClass:\"d-inline-block font-weight-medium\"},[_vm._v(\" \"+_vm._s(((_vm.booking.replacing.firstName) + \" \" + (_vm.booking.replacing.lastName)))+\" \")])]):_vm._e(),(_vm.hasGrades)?_c('GradeList',{attrs:{\"small\":\"\",\"grades\":_vm.booking.grades}}):_vm._e(),(_vm.hasCandidate)?_c('div',{staticClass:\"badges mb-2\"},[_c('CertPills',{attrs:{\"certifications\":_vm.booking.certChecks}}),_c('BookingCardPolicies',{attrs:{\"policies\":_vm.booking.agreements}})],1):_vm._e(),(_vm.selfServiceFeatureFlags.showBookingStatus)?_c('div',[_c('BookingStatusLabel',{attrs:{\"status\":_vm.bookingStatus}})],1):_vm._e()],1)]),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\",\"lg\":\"5\",\"xl\":\"6\"}},[_c('div',{staticClass:\"booking-card__details\"},[(_vm.booking.roomNumber)?_c('div',{staticClass:\"booking-card__room\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.roomLabel'))+\": \"),_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.booking.roomNumber)+\" \")])]):_vm._e(),(_vm.booking.notes)?_c('div',{staticClass:\"booking-card__notes\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.notesLabel'))+\": \"),_c('span',[_vm._v(\" \"+_vm._s(_vm.booking.notes)+\" \")])]):_vm._e()])]),_c('v-col',{staticClass:\"d-flex align-center justify-end\",attrs:{\"cols\":\"12\",\"md\":\"12\",\"lg\":\"2\"}},[(_vm.canCreateBookings && !_vm.isUnapproved)?_c('div',{staticClass:\"text-right d-flex flex-row-reverse align-center\"},[_c('BookingCardMenu',{on:{\"showCancelBookingDialog\":_vm.showCancelBookingDialog}}),(_vm.hasCandidate)?_c('BookingListFeedback',{attrs:{\"booking\":_vm.booking}}):_vm._e()],1):_vm._e()])],1),_c('div',{staticClass:\"clearfix\"})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[(_vm.certifications && _vm.certifications.length > 0)?_c('span',{staticClass:\"caption\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.certificationsLabel'))+\": \")]):_vm._e(),_vm._l((_vm.certifications),function(cert){return _c('v-chip',{key:cert.id,class:['transparent'],attrs:{\"small\":\"\",\"label\":\"\",\"outlined\":\"\"}},[_vm._v(\" \"+_vm._s(((cert.title) + \" #\" + (cert.reference)))+\" \")])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cert-pills.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cert-pills.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cert-pills.vue?vue&type=template&id=5fe10ad0&\"\nimport script from \"./cert-pills.vue?vue&type=script&lang=js&\"\nexport * from \"./cert-pills.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\ninstallComponents(component, {VChip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"policies\"},[_c('span',{class:['caption', _vm.isMobileViewPort ? 'd-block' : '']},[_vm._v(\" \"+_vm._s(_vm.compPoliciesText)+\" \")]),_vm._l((_vm.policies),function(p,index){return _c('v-chip',{key:'policy' + index,staticClass:\"caption transparent\",attrs:{\"title\":p.agreedUTC,\"x-small\":\"\"}},[(p.agreedUTC)?_c('v-icon',{attrs:{\"left\":\"\",\"x-small\":\"\",\"color\":\"green\"}},[_vm._v(\" mdi-check \")]):_c('v-icon',{attrs:{\"x-small\":\"\",\"left\":\"\",\"color\":\"red\"}},[_vm._v(\" mdi-close \")]),_vm._v(\" \"+_vm._s(p.typeName)+\" \")],1)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-policies.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-policies.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-card-policies.vue?vue&type=template&id=7e01fcc4&\"\nimport script from \"./booking-card-policies.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-card-policies.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VChip,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.selfServiceFeatureFlags.showBookingCardV2)?_c('div',[_c('v-tooltip',{attrs:{\"bottom\":\"\",\"disabled\":!_vm.feedbackProvided},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({staticClass:\"d-inline-block\"},on),[_c('BaseButton',_vm._b({staticClass:\"provide-feedback-btn\",attrs:{\"tertiary\":\"\",\"disabled\":_vm.feedbackProvided,\"sm\":\"\",\"fab\":\"\",\"icon\":_vm.feedbackProvided\n ? 'mdi-message-check-outline'\n : 'mdi-message-alert-outline'},on:{\"click\":_vm.openFeedback}},'BaseButton',_vm.buttonConfig,false))],1)]}}],null,false,3153999003)},[_c('span',[_vm._v(_vm._s(_vm.feedbackProvided ? _vm.$t('feedback.feedbackProvidedText') : _vm.$t('feedback.provideFeedbackBtn')))])])],1):_c('div',[(_vm.feedbackProvided)?_c('div',[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\",\"color\":\"green\"}},[_vm._v(\"mdi-check\")]),_vm._v(\" \"+_vm._s(_vm.$t('feedback.feedbackProvidedText'))+\" \")],1):_c('v-btn',{staticClass:\"ml-n4 provide-feedback-btn\",attrs:{\"small\":\"\",\"text\":\"\"},on:{\"click\":_vm.openFeedback}},[_vm._v(_vm._s(_vm.$t('feedback.provideFeedbackBtn')))])],1),_c('BookingFeedbackModal',{attrs:{\"booking\":_vm.booking},on:{\"feedbackProvided\":_vm.handleFeedbackProvided},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list-feedback.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list-feedback.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-list-feedback.vue?vue&type=template&id=723d0e44&\"\nimport script from \"./booking-list-feedback.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-list-feedback.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"booking-card__id-label caption mb-0 mr-4 d-flex align-center\"},[_vm._v(\" \"+_vm._s((\"#\" + (_vm.booking.id)))+\" \"),(_vm.isABlockBooking)?_c('span',{staticClass:\"cursor-help\"},[_c('v-tooltip',{attrs:{\"right\":!_vm.isMobileViewPort,\"top\":_vm.isMobileViewPort},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('span',_vm._g(_vm._b({},'span',attrs,false),on),[_c('span',{staticClass:\"ml-1\"},[_vm._v(\" \"+_vm._s((\" - \" + (_vm.booking.blockText)))+\" \")])])]}}],null,false,2495702478)},[_c('span',[_vm._v(\" \"+_vm._s(_vm.booking.blockTooltipText)+\" \")])])],1):_vm._e(),(_vm.bookingIsPendingApproval)?_c('v-chip',{staticClass:\"ml-2\",attrs:{\"text\":\"\",\"color\":\"warning\",\"x-small\":\"\"}},[_vm._v(_vm._s(_vm.$t('booking.pendingApproval.label')))]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-id-label.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-id-label.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-card-id-label.vue?vue&type=template&id=53fe0aef&\"\nimport script from \"./booking-card-id-label.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-card-id-label.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VChip,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-menu',{attrs:{\"disabled\":_vm.disabled,\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"booking-card-menu__activation-btn\",attrs:{\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}])},[_c('v-list',[_c('v-list-item',{staticClass:\"booking-card-menu__cancel-action-btn\",on:{\"click\":function($event){return _vm.$emit('showCancelBookingDialog')}}},[_c('v-list-item-icon',[_c('v-icon',{attrs:{\"color\":\"red\",\"left\":\"\"}},[_vm._v(\"mdi-close\")])],1),_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"red--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.cancelBookingBtn'))+\" \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-menu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-menu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-card-menu.vue?vue&type=template&id=95c8c480&\"\nimport script from \"./booking-card-menu.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-card-menu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\ninstallComponents(component, {VBtn,VIcon,VList,VListItem,VListItemContent,VListItemIcon,VListItemTitle,VMenu})\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-card.vue?vue&type=template&id=3f2c9c59&\"\nimport script from \"./booking-card.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-card.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VLazy } from 'vuetify/lib/components/VLazy';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardText,VCol,VLazy,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-sheet',_vm._b({class:['booking-card', _vm.cardClass],attrs:{\"outlined\":\"\"}},'v-sheet',_vm.dimensions,false),[_c('v-row',[_c('v-col',{staticClass:\"d-flex flex-column justify-space-between\",class:[_vm.isUnapproved ? 'unapproved-text' : '', _vm.textGrey700],attrs:{\"cols\":\"8\"}},[_c('p',{staticClass:\"muted-text\",class:_vm.smallBody},[_vm._v(_vm._s(_vm.headerMetaData))]),_c('p',{class:_vm.mediumButton},[_vm._v(_vm._s(_vm.title))]),_c('p',[_c('span',{class:_vm.smallBodyBold},[_vm._v(\" \"+_vm._s((_vm.formattedStartTime + \" - \" + _vm.formattedEndTime))+\" \")]),_c('span',{staticClass:\"ml-1 muted-text\",class:_vm.smallBody},[_vm._v(\" \"+_vm._s(_vm.booking.type)+\" \")])]),(_vm.isUnapproved)?_c('p',{class:[_vm.textGrey700, _vm.captionBold, 'unaproved-caption']},[_c('v-icon',{staticClass:\"mr-1 unapproved-caption\",attrs:{\"size\":\"20\"}},[_vm._v(\" mdi-information-outline \")]),_vm._v(\" \"+_vm._s(_vm.$t('booking.pendingSubtitle'))+\" \")],1):_c('p',[_c('span',{staticClass:\"muted-text\",class:_vm.smallBody},[_vm._v(\" \"+_vm._s(((_vm.$t('booking.replacingLabel')) + \":\"))+\" \")]),_c('span',{staticClass:\"ml-1\",class:_vm.smallBodyBold},[_vm._v(\" \"+_vm._s(_vm.replacingStaffName)+\" \")])])]),_c('v-col',{staticClass:\"d-flex flex-column justify-space-between align-end\",attrs:{\"cols\":\"4\"}},[(_vm.canCreateBookings)?_c('div',{staticClass:\"d-flex\"},[(_vm.hasCandidate && !_vm.isUnapproved)?_c('BookingListFeedback',{attrs:{\"booking\":_vm.booking,\"button-config\":_vm.buttonConfig}}):_vm._e(),_c('BaseDropdownMenu',_vm._b({attrs:{\"menu-items\":_vm.cardOptions,\"tertiary\":\"\",\"disabled\":_vm.isUnapproved},on:{\"cancelBooking\":_vm.cancelBooking,\"extendBooking\":_vm.toggleExtendBookingModal}},'BaseDropdownMenu',_vm.buttonConfig,false))],1):_c('v-spacer'),_c('BookingStatusLabel',{attrs:{\"status\":_vm.bookingStatus}})],1)],1),_c('ExtendBookingModal',{attrs:{\"booking\":_vm.booking},model:{value:(_vm.showExtendBookingModal),callback:function ($$v) {_vm.showExtendBookingModal=$$v},expression:\"showExtendBookingModal\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-v2.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-v2.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-card-v2.vue?vue&type=template&id=794f3782&scoped=true&\"\nimport script from \"./booking-card-v2.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-card-v2.vue?vue&type=script&lang=js&\"\nimport style0 from \"./booking-card-v2.vue?vue&type=style&index=0&id=794f3782&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"794f3782\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSheet } from 'vuetify/lib/components/VSheet';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VIcon,VRow,VSheet,VSpacer})\n","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-card-list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-card-list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-summary-card-list.vue?vue&type=template&id=d5458f58&\"\nimport script from \"./booking-summary-card-list.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-summary-card-list.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('LayoutFilter',{attrs:{\"pre-select\":_vm.dashboardLayout},on:{\"layoutChanged\":_vm.handleLayoutChange}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-btn-toggle',{attrs:{\"group\":\"\",\"dense\":\"\",\"color\":\"primary\",\"mandatory\":\"\"},model:{value:(_vm.layoutToggle),callback:function ($$v) {_vm.layoutToggle=$$v},expression:\"layoutToggle\"}},_vm._l((!_vm.options ? _vm.defaultLayoutOptions : _vm.options),function(option){return _c('v-tooltip',{key:option.id,attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"rounded\",attrs:{\"id\":option.id},on:{\"click\":function($event){return _vm.layoutChanged(option.emit)}}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(option.icon))])],1)]}}],null,true)},[_c('span',{domProps:{\"textContent\":_vm._s(option.tooltip)}})])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./layout-filter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./layout-filter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./layout-filter.vue?vue&type=template&id=72a5dec0&\"\nimport script from \"./layout-filter.vue?vue&type=script&lang=js&\"\nexport * from \"./layout-filter.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VBtnToggle } from 'vuetify/lib/components/VBtnToggle';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VBtnToggle,VIcon,VTooltip})\n","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-layout-toggle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-layout-toggle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-summary-layout-toggle.vue?vue&type=template&id=501ad910&\"\nimport script from \"./booking-summary-layout-toggle.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-summary-layout-toggle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isTileLayout)?_c('BookingListGroupSkeleton',{attrs:{\"rows\":_vm.count}}):_c('BookingCardListSkeletonLoader',{attrs:{\"count\":_vm.count}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',_vm._l((_vm.count),function(n){return _c('BookingCardSkeletonLoader',{key:(\"booking-card-list-item__skeleton-loader-\" + n)})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"mb-5 booking-card custom-elevation rounded-xl\",attrs:{\"elevation\":\"0\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('div',[_c('v-lazy',[_c('CandidateImage',{attrs:{\"id\":-1,\"first-name\":\"skeleton\",\"last-name\":\"loader\",\"rounded\":\"\",\"size\":\"xxxl\"}})],1)],1),_c('div',[_c('v-skeleton-loader',{staticClass:\"mb-2\",attrs:{\"type\":\"heading\",\"width\":\"350\"}}),_c('v-skeleton-loader',{attrs:{\"type\":\"sentences\",\"width\":\"250\"}}),_c('v-skeleton-loader',{attrs:{\"type\":\"sentences\",\"width\":\"350\"}})],1)]),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\",\"lg\":\"6\"}},[_c('div',[_c('v-skeleton-loader',{attrs:{\"type\":\"sentences\",\"width\":\"200\"}})],1)])],1),_c('div',{staticClass:\"clearfix\"})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-skeleton-loader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-skeleton-loader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-card-skeleton-loader.vue?vue&type=template&id=0f4dd5df&\"\nimport script from \"./booking-card-skeleton-loader.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-card-skeleton-loader.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VLazy } from 'vuetify/lib/components/VLazy';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VCard,VCardText,VCol,VLazy,VRow,VSkeletonLoader})\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-list-skeleton-loader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-list-skeleton-loader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-card-list-skeleton-loader.vue?vue&type=template&id=8b396476&\"\nimport script from \"./booking-card-list-skeleton-loader.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-card-list-skeleton-loader.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',_vm._l((_vm.groups),function(group,index){return _c('div',{key:index},[_c('v-skeleton-loader',{staticClass:\"mb-6 ml-2\",attrs:{\"type\":\"heading\",\"width\":\"500px\"}}),_c('BookingListSkeleton',{attrs:{\"rows\":_vm.rows}})],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('v-data-table',{staticClass:\"custom-elevation rounded-xl mb-8\",attrs:{\"headers\":_vm.columns,\"items\":_vm.compMockBookingData,\"hide-default-footer\":\"\",\"disable-sort\":\"\"},scopedSlots:_vm._u([{key:\"item.id\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"text\"}})]},proxy:true},{key:\"item.name\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"text\"}})]},proxy:true},{key:\"item.status\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"text\"}})]},proxy:true},{key:\"item.time\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"text\"}})]},proxy:true},{key:\"item.type\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"text\"}}),_c('div',{staticClass:\"d-flex flex-rows\"},[_c('v-skeleton-loader',{staticClass:\"mr-4\",attrs:{\"type\":\"chip\"}}),_c('v-skeleton-loader',{attrs:{\"type\":\"chip\"}})],1)]},proxy:true},{key:\"item.certifications\",fn:function(){return [_c('div',{staticClass:\"d-flex flex-rows\"},[_c('v-skeleton-loader',{staticClass:\"mr-4\",attrs:{\"type\":\"chip\"}}),_c('v-skeleton-loader',{attrs:{\"type\":\"chip\"}})],1)]},proxy:true},{key:\"item.policies\",fn:function(){return [_c('div',{staticClass:\"d-flex flex-rows\"},[_c('v-skeleton-loader',{staticClass:\"mr-4\",attrs:{\"type\":\"chip\"}}),_c('v-skeleton-loader',{attrs:{\"type\":\"chip\"}})],1)]},proxy:true},{key:\"item.replacing\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"text\"}})]},proxy:true},{key:\"item.actions\",fn:function(){return [_c('v-btn',{attrs:{\"disabled\":\"\",\"icon\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]},proxy:true}],null,true)})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list-skeleton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list-skeleton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-list-skeleton.vue?vue&type=template&id=d3943bfe&scoped=true&\"\nimport script from \"./booking-list-skeleton.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-list-skeleton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./booking-list-skeleton.vue?vue&type=style&index=0&id=d3943bfe&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d3943bfe\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VBtn,VDataTable,VIcon,VSkeletonLoader})\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list-group-skeleton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list-group-skeleton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-list-group-skeleton.vue?vue&type=template&id=1a2bee92&\"\nimport script from \"./booking-list-group-skeleton.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-list-group-skeleton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VSkeletonLoader})\n","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-skeleton-loader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-skeleton-loader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-summary-skeleton-loader.vue?vue&type=template&id=56a9f4e2&\"\nimport script from \"./booking-summary-skeleton-loader.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-summary-skeleton-loader.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-container.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-summary-container.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-summary-container.vue?vue&type=template&id=1d6a0540&\"\nimport script from \"./booking-summary-container.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-summary-container.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon})\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=03e7f9e7&\"\nimport script from \"./home.vue?vue&type=script&lang=js&\"\nexport * from \"./home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSheet } from 'vuetify/lib/components/VSheet';\ninstallComponents(component, {VCol,VDialog,VRow,VSheet})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-alert',_vm._g(_vm._b({},'v-alert',_vm.$attrs,false),_vm.$listeners),[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error-alert.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error-alert.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./error-alert.vue?vue&type=template&id=a7d5bce4&\"\nimport script from \"./error-alert.vue?vue&type=script&lang=js&\"\nexport * from \"./error-alert.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\ninstallComponents(component, {VAlert})\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-modal.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"mb-1\",attrs:{\"title\":_vm.$t('booking.gradesLabel')}},_vm._l((_vm.grades),function(p,index){return _c('v-chip',{key:'grade' + index + p.id,staticClass:\"mr-1 mt-1 blue--text\",attrs:{\"small\":_vm.small,\"x-small\":_vm.xSmall,\"color\":\"light-blue lighten-5\"}},[_vm._v(\" \"+_vm._s(p.title)+\" \")])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./grade-list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./grade-list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./grade-list.vue?vue&type=template&id=350ad5b3&\"\nimport script from \"./grade-list.vue?vue&type=script&lang=js&\"\nexport * from \"./grade-list.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\ninstallComponents(component, {VChip})\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./extend-booking-date-picker.vue?vue&type=style&index=0&id=65a9f3f5&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./date-strip.vue?vue&type=style&index=0&lang=scss&\"","export const BookingStatus = Object.freeze({\n /**\n * Client Concern – Agency Took too long\n */\n AGENCY_TOOK_TOO_LONG: -11,\n /**\n * Unable to Fill\n */\n UNABLE_TO_FILL: -12,\n /**\n * anzuk Error\n */\n ANZUK_ERROR: -13,\n /**\n * Candidate – Illness\n */\n CANDIDATE_ILLNESS: -14,\n /**\n * Lapsed\n */\n LAPSED: -100,\n /**\n * Deleted from Group Booking\n */\n DELETED_FROM_GROUP_BOOKING: -100,\n /**\n * Cancelled\n */\n CANCELLED: -1,\n /**\n * Finance Cancelled\n */\n FINANCE_CANCELLED: -101,\n /**\n * Refunded\n */\n REFUNDED: -1000,\n /**\n * Friday Invoice (?)\n */\n FRIDAY_INVOICE: 99,\n /**\n * ECH Invoicing Ready\n */\n ECH_INVOICING_READY: 95,\n /**\n * ECH Booking – Not Approved\n */\n ECH_NOT_APPROVED: 80,\n /**\n * School Booking – Not Approved\n */\n SCHOOL_NOT_APPROVED: 70,\n /**\n * The client has submitted their timesheet and made no changes to the times\n */\n CLIENT_SUBMITTED_TIMESHEET_NO_CHANGES: 111,\n /**\n * The client has submitted their timesheet and made changes\n */\n CLIENT_SUBMITTED_TIMESHEET_MODIFIED: 112,\n /**\n * The client has submitted their timesheet and stated the booking didn't happen\n */\n CLIENT_SUBMITTED_TIMESHEET_DID_NOT_HAPPEN: 113,\n /**\n * The candidate has submitted their timesheet and made no changes to the times\n */\n CANDIDATE_SUBMITTED_TIMESHEET_NO_CHANGES: 114,\n /**\n * The candidate has submitted their timesheet and made changes\n */\n CANDIDATE_SUBMITTED_TIMESHEET_MODIFIED: 115,\n /**\n * The candidate has submitted their timesheet and stated the booking didn't happen\n */\n CANDIDATE_SUBMITTED_TIMESHEET_DID_NOT_HAPPEN: 116,\n /**\n * Both the candidate and client have stated conflicting times for their timesheets.\n * This raises a dispute that is to be resolved by the consultant.\n */\n TIMESHEET_DISPUTE_OR_MISMATCH: 117,\n /**\n * Active, Withhold Pay\n */\n ACTIVE_WITHOLD_PAY: 14,\n /**\n * Active, Lapsed\n */\n ACTIVE_LAPSED: 13,\n /**\n * Tentative Filled\n */\n TENTATIVE_FILLED: 105,\n /**\n * Agency - Moved Client\n */\n AGENCY_MOVED_CLIENT: -15,\n /**\n * Exported to BullHorn NZ\n */\n EXPORTED_TO_BULLHORN_NZ: 175,\n /**\n * Partial Export - Review in BullHorn\n */\n PARTIAL_BULLHORN_EXPORT: -41,\n /**\n * Training\n */\n TRAINING: -16,\n /**\n * Other\n */\n OTHER: -17,\n /**\n * Cancelled by Client\n */\n CANCELLED_BY_CLIENT: -18,\n /**\n * The booking is pending approval from the client before it can be filled.\n * This occurs when the booking is submitted by a client contact however it\n * requires another contact to review and approve it.\n */\n BOOKING_PENDING_REQUIRES_CLIENT_APPROVAL: -200,\n /**\n * The booking was pending approval by client and was rejected.\n */\n CLIENT_REJECTED_BOOKING_REQUEST: -201,\n})\n\nexport const candidateModifiedOrDidNotHappenBookingsStatuses = () => {\n return [\n BookingStatus.CANDIDATE_SUBMITTED_TIMESHEET_MODIFIED,\n BookingStatus.CANDIDATE_SUBMITTED_TIMESHEET_DID_NOT_HAPPEN,\n ]\n}\n\nexport const hasCandidateModifiedBookingOrStatedDidNotHappen = (\n bookingStatus\n) => {\n return candidateModifiedOrDidNotHappenBookingsStatuses().includes(\n bookingStatus\n )\n}\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","// Styles\nimport './VAutocomplete.sass'\n\n// Extensions\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect'\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport {\n getObjectValueByPath,\n getPropertyFromItem,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { PropType, VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nconst defaultMenuProps = {\n ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false,\n}\n\n/* @vue/component */\nexport default VSelect.extend({\n name: 'v-autocomplete',\n\n props: {\n allowOverflow: {\n type: Boolean,\n default: true,\n },\n autoSelectFirst: {\n type: Boolean,\n default: false,\n },\n filter: {\n type: Function,\n default: (item: any, queryText: string, itemText: string) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1\n },\n } as PropValidator<(item: any, queryText: string, itemText: string) => boolean>,\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps,\n },\n noFilter: Boolean,\n searchInput: {\n type: String as PropType,\n },\n },\n\n data () {\n return {\n lazySearch: this.searchInput,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1,\n }\n },\n computedItems (): object[] {\n return this.filteredItems\n },\n selectedValues (): object[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n hasDisplayedItems (): boolean {\n return this.hideSelected\n ? this.filteredItems.some(item => !this.hasItem(item))\n : this.filteredItems.length > 0\n },\n currentRange (): number {\n if (this.selectedItem == null) return 0\n\n return String(this.getText(this.selectedItem)).length\n },\n filteredItems (): object[] {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems\n\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText)\n const text = value != null ? String(value) : ''\n\n return this.filter(item, String(this.internalSearch), text)\n })\n },\n internalSearch: {\n get (): string | null {\n return this.lazySearch\n },\n set (val: any) { // TODO: this should be `string | null` but it breaks lots of other types\n // emit update event only when the new\n // search value is different from previous\n if (this.lazySearch !== val) {\n this.lazySearch = val\n this.$emit('update:search-input', val)\n }\n },\n },\n isAnyValueAllowed (): boolean {\n return false\n },\n isDirty (): boolean {\n return this.searchIsDirty || this.selectedItems.length > 0\n },\n isSearching (): boolean {\n return (\n this.multiple &&\n this.searchIsDirty\n ) || (\n this.searchIsDirty &&\n this.internalSearch !== this.getText(this.selectedItem)\n )\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems || !this.hideNoData\n },\n $_menuProps (): object {\n const props = VSelect.options.computed.$_menuProps.call(this);\n (props as any).contentClass = `v-autocomplete__content ${(props as any).contentClass || ''}`.trim()\n return {\n ...defaultMenuProps,\n ...props,\n }\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null &&\n this.internalSearch !== ''\n },\n selectedItem (): any {\n if (this.multiple) return null\n\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue))\n })\n },\n listData () {\n const data = VSelect.options.computed.listData.call(this) as any\n\n data.props = {\n ...data.props,\n items: this.virtualizedItems,\n noFilter: (\n this.noFilter ||\n !this.isSearching ||\n !this.filteredItems.length\n ),\n searchInput: this.internalSearch,\n }\n\n return data\n },\n },\n\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n isFocused (val) {\n if (val) {\n document.addEventListener('copy', this.onCopy)\n this.$refs.input && this.$refs.input.select()\n } else {\n document.removeEventListener('copy', this.onCopy)\n this.blur()\n this.updateSelf()\n }\n },\n isMenuActive (val) {\n if (val || !this.hasSlot) return\n\n this.lazySearch = null\n },\n items (val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (\n !(oldVal && oldVal.length) &&\n this.hideNoData &&\n this.isFocused &&\n !this.isMenuActive &&\n val.length\n ) this.activateMenu()\n },\n searchInput (val: string) {\n this.lazySearch = val\n },\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf',\n },\n\n created () {\n this.setSearch()\n },\n\n destroyed () {\n document.removeEventListener('copy', this.onCopy)\n },\n\n methods: {\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return\n\n if (!this.autoSelectFirst) {\n const preSelectedItem = oldVal[this.$refs.menu.listIndex]\n\n if (preSelectedItem) {\n this.setMenuIndex(val.findIndex(i => i === preSelectedItem))\n } else {\n this.setMenuIndex(-1)\n }\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n\n this.$nextTick(() => {\n if (\n !this.internalSearch ||\n (val.length !== 1 &&\n !this.autoSelectFirst)\n ) return\n\n this.$refs.menu.getTiles()\n\n if (this.autoSelectFirst && val.length) {\n this.setMenuIndex(0)\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n })\n },\n onInternalSearchChanged () {\n this.updateMenuDimensions()\n },\n updateMenuDimensions () {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions()\n },\n changeSelectedIndex (keyCode: number) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1\n } else {\n this.selectedIndex--\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1\n } else {\n this.selectedIndex++\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem()\n }\n },\n deleteCurrentItem () {\n const curIndex = this.selectedIndex\n const curItem = this.selectedItems[curIndex]\n\n // Do nothing if input or item is disabled\n if (\n !this.isInteractive ||\n this.getDisabled(curItem)\n ) return\n\n const lastIndex = this.selectedItems.length - 1\n\n // Select the last item if\n // there is no selection\n if (\n this.selectedIndex === -1 &&\n lastIndex !== 0\n ) {\n this.selectedIndex = lastIndex\n\n return\n }\n\n const length = this.selectedItems.length\n const nextIndex = curIndex !== length - 1\n ? curIndex\n : curIndex - 1\n const nextItem = this.selectedItems[nextIndex]\n\n if (!nextItem) {\n this.setValue(this.multiple ? [] : null)\n } else {\n this.selectItem(curItem)\n }\n\n this.selectedIndex = nextIndex\n },\n clearableCallback () {\n this.internalSearch = null\n\n VSelect.options.methods.clearableCallback.call(this)\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data = mergeData(input.data!, {\n attrs: {\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n },\n domProps: { value: this.internalSearch },\n })\n\n return input\n },\n genInputSlot () {\n const slot = VSelect.options.methods.genInputSlot.call(this)\n\n slot.data!.attrs!.role = 'combobox'\n\n return slot\n },\n genSelections (): VNode | never[] {\n return this.hasSlot || this.multiple\n ? VSelect.options.methods.genSelections.call(this)\n : []\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n this.selectedIndex > -1\n ? (this.selectedIndex = -1)\n : this.onFocus()\n\n if (!this.isAppendInner(e.target)) this.activateMenu()\n },\n onInput (e: Event) {\n if (\n this.selectedIndex > -1 ||\n !e.target\n ) return\n\n const target = e.target as HTMLInputElement\n const value = target.value\n\n // If typing and menu is not currently active\n if (target.value) this.activateMenu()\n\n if (!this.multiple && value === '') this.deleteCurrentItem()\n\n this.internalSearch = value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onSpaceDown (e: KeyboardEvent) { /* noop */ },\n onTabDown (e: KeyboardEvent) {\n VSelect.options.methods.onTabDown.call(this, e)\n this.updateSelf()\n },\n onUpDown (e: Event) {\n // Prevent screen from scrolling\n e.preventDefault()\n\n // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n this.activateMenu()\n },\n selectItem (item: object) {\n VSelect.options.methods.selectItem.call(this, item)\n this.setSearch()\n },\n setSelectedItems () {\n VSelect.options.methods.setSelectedItems.call(this)\n\n // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n if (!this.isFocused) this.setSearch()\n },\n setSearch () {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (\n !this.multiple ||\n !this.internalSearch ||\n !this.isMenuActive\n ) {\n this.internalSearch = (\n !this.selectedItems.length ||\n this.multiple ||\n this.hasSlot\n )\n ? null\n : this.getText(this.selectedItem)\n }\n })\n },\n updateSelf () {\n if (\n !this.searchIsDirty &&\n !this.internalValue\n ) return\n\n if (\n !this.multiple &&\n !this.valueComparator(\n this.internalSearch,\n this.getValue(this.internalValue)\n )\n ) {\n this.setSearch()\n }\n },\n hasItem (item: any): boolean {\n return this.selectedValues.indexOf(this.getValue(item)) > -1\n },\n onCopy (event: ClipboardEvent) {\n if (this.selectedIndex === -1) return\n\n const currentItem = this.selectedItems[this.selectedIndex]\n const currentItemText = this.getText(currentItem)\n event.clipboardData?.setData('text/plain', currentItemText)\n event.clipboardData?.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText)\n event.preventDefault()\n },\n },\n})\n","// Components\nimport { VFadeTransition } from '../transitions'\nimport VExpansionPanel from './VExpansionPanel'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-header', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n expansionPanel: InstanceType\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-header',\n\n directives: { ripple },\n\n props: {\n disableIconRotate: Boolean,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n },\n\n data: () => ({\n hasMousedown: false,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel-header--active': this.isActive,\n 'v-expansion-panel-header--mousedown': this.hasMousedown,\n }\n },\n isActive (): boolean {\n return this.expansionPanel.isActive\n },\n isDisabled (): boolean {\n return this.expansionPanel.isDisabled\n },\n isReadonly (): boolean {\n return this.expansionPanel.isReadonly\n },\n },\n\n created () {\n this.expansionPanel.registerHeader(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterHeader()\n },\n\n methods: {\n onClick (e: MouseEvent) {\n this.$emit('click', e)\n },\n genIcon () {\n const icon = getSlot(this, 'actions') ||\n [this.$createElement(VIcon, this.expandIcon)]\n\n return this.$createElement(VFadeTransition, [\n this.$createElement('div', {\n staticClass: 'v-expansion-panel-header__icon',\n class: {\n 'v-expansion-panel-header__icon--disable-rotate': this.disableIconRotate,\n },\n directives: [{\n name: 'show',\n value: !this.isDisabled,\n }],\n }, icon),\n ])\n },\n },\n\n render (h): VNode {\n return h('button', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-header',\n class: this.classes,\n attrs: {\n tabindex: this.isDisabled ? -1 : null,\n type: 'button',\n 'aria-expanded': this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.$listeners,\n click: this.onClick,\n mousedown: () => (this.hasMousedown = true),\n mouseup: () => (this.hasMousedown = false),\n },\n }), [\n getSlot(this, 'default', { open: this.isActive }, true),\n this.hideActions || this.genIcon(),\n ])\n },\n})\n","// Components\nimport VExpansionPanels from './VExpansionPanels'\nimport VExpansionPanelHeader from './VExpansionPanelHeader'\nimport VExpansionPanelContent from './VExpansionPanelContent'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VExpansionPanelHeaderInstance = InstanceType\ntype VExpansionPanelContentInstance = InstanceType\n\nexport default mixins(\n GroupableFactory<'expansionPanels', typeof VExpansionPanels>('expansionPanels', 'v-expansion-panel', 'v-expansion-panels'),\n RegistrableProvide('expansionPanel', true)\n /* @vue/component */\n).extend({\n name: 'v-expansion-panel',\n\n props: {\n disabled: Boolean,\n readonly: Boolean,\n },\n\n data () {\n return {\n content: null as VExpansionPanelContentInstance | null,\n header: null as VExpansionPanelHeaderInstance | null,\n nextIsActive: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel--active': this.isActive,\n 'v-expansion-panel--next-active': this.nextIsActive,\n 'v-expansion-panel--disabled': this.isDisabled,\n ...this.groupClasses,\n }\n },\n isDisabled (): boolean {\n return this.expansionPanels.disabled || this.disabled\n },\n isReadonly (): boolean {\n return this.expansionPanels.readonly || this.readonly\n },\n },\n\n methods: {\n registerContent (vm: VExpansionPanelContentInstance) {\n this.content = vm\n },\n unregisterContent () {\n this.content = null\n },\n registerHeader (vm: VExpansionPanelHeaderInstance) {\n this.header = vm\n vm.$on('click', this.onClick)\n },\n unregisterHeader () {\n this.header = null\n },\n onClick (e: MouseEvent) {\n if (e.detail) this.header!.$el.blur()\n\n this.$emit('click', e)\n\n this.isReadonly || this.isDisabled || this.toggle()\n },\n toggle () {\n this.$nextTick(() => this.$emit('change'))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-expansion-panel',\n class: this.classes,\n attrs: {\n 'aria-expanded': String(this.isActive),\n },\n }, getSlot(this))\n },\n})\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-card-v2.vue?vue&type=style&index=0&id=794f3782&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-list-skeleton.vue?vue&type=style&index=0&id=d3943bfe&lang=scss&scoped=true&\""],"sourceRoot":""}